Перейти к контенту

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

ns ogsr NS OGSR: Правки и модификации


D1mon

Рекомендуемые сообщения

Оно конечно..., но не мои это шахматы.:az1000106:

9 часов назад, ctajlkepkrot сказал:

От ссылок на правки нет толку, в последней солянке нет попки gamedata, может пора в другом виде делать, с setup например.

*папки

FX-8120, Gigabyte GA-970A-UD3P, 16Gb RAM, MSI GTX970 4Gb

Мне кажется, кто-то выкладывал правку на добавление телепортов в БАРе. Дескать чтобы не бегать от прехода на Свалку, у перехода один телепорт, а на пригорке у "запорожца" - второй. Или я путаю с другим модом? 

Generaator.gif

i9-13900HX 2.2GHz \ RAM 32GB \ RTX4070 Laptop GPU \ Windows 11(Home)x64 \ (SSD 1 TB)

Выкладываю свою первую и единственную правку. Строго не судите.

Скрытый текст

 

УРТ теперь работает от "Черной Энергии" и "Лунного Света". Возможность использования "Батарейки" для телепортации была убрана.

В угоду баланса значительно увеличил стоимость ЧЭ у Сахарова и Плотника.
Возможен конфликт с модами что изменяют цены у торговцев.

Работает с патчем 16.01.23

 

Ссылки для скачивания:

Гугл диск

Яндекс диск

 

 

  • Спасибо 1
  • Нравится 1

Подскажите пожалуйста - правил treasure_manager - пытался встроить отображение содержимого тайников на метке карты как в ОП 2.2.  в частности правил так 

--' Выдача тайника
function CTreasure:give_treasure(k, npc, friend)
    local v = self.treasure_info[k]
    local sim = alife()
    local sobj = sim:story_object(v.target)
    if sobj then
        news_manager.send_treasure(v.name)

                local txt_items = "%c[255,238,155,23] "
                
                if has_level.map_add_object_spot_ser(sobj.id, "treasure") then
                for i = 1, 65534 do
                local item = alife():object(i)
                if item and item.parent_id == sobj.id then
                txt_items = txt_items.."\\n • "..translate(system_ini():r_string(item:section_name(), "inv_name"))
                end


                                     
        --' Пометить на карте
        local text = "%c[255,238,155,23]" .. game.translate_string(v.name) .. "\\n" .. "%c[default]" .. game.translate_string(v.description)
        level.map_add_object_spot_ser(sobj.id, "treasure", text.."\\n"..txt_items)

не работат, что я накорявил нетак?

Ну не знаю. Ну выводил бы в лог просто... Всего несколько строк

Скрытый текст

            -- Вывести в лог содержимое
            local vv_section = system_ini():r_string(vv.section,"inv_name")
            vv_section = game.translate_string(tostring(vv_section))
            vv_section = vv_section:gsub('[%p%c]', '')
            log3(vv_section)

 

25 минут назад, Купер сказал:

Перебирать все игровые объекты

Скрытый текст

К чёрту. Для тестов же.

 

Изменено пользователем mole venomous

Здесь могла быть ваша реклама.

@Купер , спасибо это сдвинуло с места - сумел нормально загрузиться и даже играть до выдачи тайника, при выдаче вылет. Насколько понимаю по логу ругается на это

[17.06.23 09:28:22.119] [print_output([CScriptEngine::lua_pcall_failed])] SCRIPT RUNTIME ERROR:
...l.k.e.r.ns.ogsr\gamedata\scripts\treasure_manager.script:519: attempt to index global 'has_level' (a nil value)
stack traceback:
	[C]: in function '__index'
	...l.k.e.r.ns.ogsr\gamedata\scripts\treasure_manager.script:519: in function 'give_treasure'

А так, это часть кода из правок к файлу treasure из мода ОП 2.2., котороая позволяет смотреть содержимое тайника на карте - пытаюсь адаптировать под NS OGSR 2023

Compare выдает различия между оригинальным кодом treasure.script из мода ОП 2.2. и поправленным для отображения содержимого тайников на карте в 12 строчек:

Оригинал:

--' Выдача тайника
function CTreasure:give(treasure_id,npc)
	if treasure_id==nil then
		abort("! ERROR invalid treasure_id from queue!!!")
	end
	local treasure_info = self.treasure_info[treasure_id]
	local obj = story_object(treasure_info.target)
	if obj ~= nil then
		if obj:clsid() ~= clsid.inventory_box then
			abort("Story object [%s] is not an inventory box", treasure_info.target)
		end

		news_manager.send_treasure(treasure_info.name, object_level_name(obj))

		--' Пометить на карте
		local text = "%c[255,238,155,23]"..translate(treasure_info.name).."\\n".."%c[default]"..translate(utils.cfg_get_string(self.ini, treasure_id, "description", nil, true, ""))
		map_spot(obj.id, "treasure", text)

		-- если тайник не именной, то заменим содержимое
		if treasure_info.named == false then
		   treasure_info.items = self:give_item_list(npc)
		else
			if not self.treasure_info[treasure_id].active then
				treasure_info.items = parse_spawns(utils.cfg_get_string(self.ini, treasure_id, "items", nil, true, ""))
			else
				treasure_info.items={}
			end
		end

		--' Сгенерить вещи
		for __,item_info in pairs(treasure_info.items) do
			for i=1,item_info.prob do
				create(item_info.section, obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id, obj.id)
			end
		end

 

Поправленная версия:

--' Выдача тайника
function CTreasure:give(treasure_id,npc)
	if treasure_id==nil then
		abort("! ERROR invalid treasure_id from queue!!!")
	end
	local treasure_info = self.treasure_info[treasure_id]
	local obj = story_object(treasure_info.target)
	if obj ~= nil then
		if obj:clsid() ~= clsid.inventory_box then
			abort("Story object [%s] is not an inventory box", treasure_info.target)
		end

		news_manager.send_treasure(treasure_info.name, object_level_name(obj))

		-- если тайник не именной, то заменим содержимое
		if treasure_info.named == false then
		   treasure_info.items = self:give_item_list(npc)
		else
			if not self.treasure_info[treasure_id].active then
				treasure_info.items = parse_spawns(utils.cfg_get_string(self.ini, treasure_id, "items", nil, true, ""))
			else
				treasure_info.items={}
			end
		end

		local txt_items = "%c[255,238,155,23] "
		
		if has_map_spot(obj.id, "treasure") then
			for i = 1, 65534 do 
				local item = alife():object(i)
					if item and item.parent_id == obj.id then
						txt_items = txt_items.."\\n • "..translate(system_ini():r_string(item:section_name(), "inv_name"))
					end
			end
		end
		
		--' Сгенерить вещи
		for __,item_info in pairs(treasure_info.items) do
			for i=1,item_info.prob do
				create(item_info.section, obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id, obj.id)
				txt_items = txt_items.."\\n • "..translate(system_ini():r_string(item_info.section, "inv_name"))
			end
		end
		
		--' Пометить на карте
		local text = "%c[255,238,155,23]"..translate(treasure_info.name).."\\n".."%c[default]"..translate(utils.cfg_get_string(self.ini, treasure_id, "description", nil, true, ""))
		map_spot(obj.id, "treasure", text.."\\n"..txt_items)

 

вот как можно перенести эту фишку с отображением содержимого тайников на карте в NS OGSR? я попробовал но мне явно не хватает опыта - мой опыт скриптера  ограничен OFP, да и то чисто шаблонными вещами - помогите кто может

15 часов назад, MAD_LEX сказал:

не работат, что я накорявил нетак?

В оп 2.2 и солянке функции разные

солянка

level.map_add_object_spot_ser(obj.id, "treasure", "Тайник")
        news_manager.send_tip(db.actor, "Получена наводка на Тайник", nil, nil, 10000)

оп  2.2

 map_spot(obj.id, "treasure", "Тайник")
sms("%c[255,255,128,128]".."Получена наводка на Тайник", nil, nil, 20000)

Изменено пользователем Shurup

@Купер это не оригинал NS, это оригинал ОП 2.2. вот отсюда по заголовку "Содержимое тайника в метке на карте" . В оригинале ОП такого нет, но это было абсолютно работоспособно и удобно (по крайней мере мне) поскольку NS сейчас топ -было бы очень удобно иметь такую правку именно на NS а не на ОП. Спасибо попроюуб сегодня, отпишусь что как

Изменено пользователем MAD_LEX

Реализованная Купером правка на отображение содержимого тайника при снятии с трупа гугуол диск

  • Нравится 2

Приветствую всех! 

 Столкнулся с проблемой (для меня)... Стволы с устанавливаемыми коллиматорныеми прицелами,  при быстром перемещении вправо-влево, 
имеют как бы инерцию... Т.е. вы вроде как точно должны были попасть в цель, но прицельная точка "живёт своей жизнью" , её попросту заносит...
В результате теряются драгоценные 1-2 секунды...  На стволах (старых) с предустановленным коллиматором, такого эффекта нет!
Из-за этого эффекта , все хорошие стволы теряют смысл (для меня). Возможно кто то этим занимался, прошу помочь! Спасибо!

Здраствуйте, есть ли правка на отключение "Вороства" ?

Украинскими ученными было установлено что ничто так отрицательно не влияет на здоровье печени как неправильно отфильтрованный базар.

@taimag , такой правки нет, если говорить о всём, до чего могут дотянуться НПС. Но посмотри на первой странице правки от Опричника и tihik, есть похожее.

Кроме того, можешь вручную расширить список защищённых от подбирания и/или удаления айтемов.

Изменено пользователем mole venomous

Здесь могла быть ваша реклама.

5 часов назад, VORON4 сказал:

рвущиеся рюкзаки

Здесь рюкзаки не рвутся. Но это можно исправить :biggrin:

Скрытый текст

Повесил на коллбек on_item_take возможность разрыва рюкзака. Немного подредактировал готовый код. Теперь максимально возможный вес, при превышении которого возможен разрыв рюкзака, напрямую зависит от ранга ГГ, а точнее, от его числового значения. У новичка, только начавшего игру, рюкзак может порваться уже при перегрузе 100+ кг. У ГГ-мастера рюкзак может рваться от 200 кг. Чем больше опыт, тем крепче рюкзак, независимо от того, какой костюм надет (речь не о возможности двигаться с перегрузом, если кто не понял...).

Кол-во выпавших из рюкзака вещей и вероятность того, что рюкзак порвётся от попытки запихать в него очередной хлам, зависят от уровня сложности. Правда, в игре разница не особо заметна. Когда рюкзак лопается, вещи не разлетаются на километр, а вываливаются рядом. Добавлен соответствующий звук :biggrin:.

Конечно, стоило бы добавить костюмов и/или привязку костюмов и их кондиций к прочности рюкзака, но не думаю, что это так нужно кому-нибудь для геймплея...

https://disk.yandex.ru/d/U4By-ghuXkZX1g

 

Изменено пользователем mole venomous
  • Полезно 2

Здесь могла быть ваша реклама.

Здраствуйте, через какой файл конфиг можно отредактировать изменить цену на ремонт брони и оружия ?

Украинскими ученными было установлено что ничто так отрицательно не влияет на здоровье печени как неправильно отфильтрованный базар.

@taimag ,

скрипт ui_repair_menu.script

oTbl.price = math.floor((1.1 - aCond) * aItem1.cost * aPMrg * uPMgr)

Здесь могла быть ваша реклама.

Может кто-то поделиться файлом иконок из ЗБТ-версии в личку? Больно красивые они там

Intel Core i5-12400F, 32 GB RAM DDR4, NVIDIA 3060 8gb VRAM
Ахтунг - огонек в глазах может быть признаком тлеющих в голове опилок...

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
  • Куратор(ы) темы:

×
×
  • Создать...