Перейти к содержанию
Авторизация  
Hardtmuth

Уроки и полезные функции от Panzyuza

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

 

Уроки и полезные функции от Panzyuza

Автор: Panzyuza

Есть простые функции, которые помогут в моддинге. Для начала вот кое-что.

Многие сталкивались с необходимостью получения поршня при обыске трупа нпс или мутанта с уникальным именем. Те, кто работает со all.spawn просто используют стандарт игры, добавляя в логическую схему в спавне:

[know_info]
инфопоршень

Но почему только инфопоршень? Зачем писать ещё коды для отлова инфопоршней при обыске? Есть простой и надёжный способ.

Нужно открыть блокнотом скрипт xr_motivator.script, найти там следующий код:

function motivator_binder:use_callback(obj, who)
     if self.object:alive() then
      xr_use.notify_on_use(obj, who)
      if self.st.active_section then
       xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who)
      end
     else
      --//выдача дефолтных тайников
                    treasure_manager.get_treasure_manager():use(self.object)
     end
end

И после строки treasure_manager.get_treasure_manager():use(self.object) вставляем название_скрипта.dead_use(victim, who).

Должно получиться примерно так:

function motivator_binder:use_callback(obj, who)
     if self.object:alive() then
      xr_use.notify_on_use(obj, who)
      if self.st.active_section then
       xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who)
      end
     else
      --//выдача дефолтных тайников
                    treasure_manager.get_treasure_manager():use(self.object)
                    mod.dead_use(victim, who)
     end
end

Таким образом в случае юзания игроком нпс после смерти помимо выдачи тайника будет вызываться свой скрипт.

Создаём скрипт и вставляем следующее:

----------------------------------------------------------------------------------------------------
-- Функция юзания трупов нпс
-- В мотиватор, use коллбек вставить название_скрипта.dead_use(obj, who)
----------------------------------------------------------------------------------------------------
function dead_use(victim, who)
if not (victim and who) then return end --/>фикс
local name = victim:name()
if victim and who and who:id() == db.actor:id() then
if string.find(name, "bandit_resp_veteran_dead_bor") then --имя нпс
db.actor:give_info_portion("ПОРШЕНЬ") --или вызов скриптовых функций
elseif string.find(name, "esc_lager_volk") then --перебор
db.actor:give_info_portion("ПОРШЕНЬ")
return false --повторной выдачи не будет
else
return true
end
end
end

Нужно только знать имя нпс, которое задаёться ему при спавне. Пример. Если вы создали нпс, прописали ему секцию в spawn_sections, значит его имя будет название секции, которое задаёте при спавне.

С мутантами можно также. Но сложнее. Нужно в биндере мутантов добавить use_callback и аналогично с биндером нпс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу