Skocz do zawartości

Lekcje i przydatne funkcje od Panzyuza


Rekomendowane odpowiedzi

NAZWA: Lekcje i przydatne funkcje od Panzyuza
AUTOR: Panzyuza

 

Istnieją proste funkcje, które pomogą w moddingu. Coś na początek.

 

OPIS:

Spoiler

Wielu napotkało potrzebę zdobycia portion podczas przeszukiwania zwłok NPC lub mutanta o unikalnej nazwie. Ci, którzy coś robią z all.spawn, po prostu korzystają ze standardu gry, dodając do logicznego schematu w spawnie:

[know_info]
infoportion

Ale dlaczego tylko infoportion? Po co pisać jeszcze kody dla wyłowienia infoportions podczas przeszukiwania? Jest na to prosty i niezawodny sposób.

Musisz otworzyć skrypt xr_motivator.script za pomocą notatnika i znaleźć tam następujący kod:

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

Po linii treasure_manager.get_treasure_manager():use(self.object) wstawiamy nazwa_skryptu.dead_use(victim, who).

Powinno to wyglądać mniej więcej tak:

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

Tak więc, jeśli gracz po śmierci NPC go przeszuka, to oprócz wydania schowka, zostanie wywołany jego własny skrypt.

Tworzymy skrypt i wklejamy następujący kod:

----------------------------------------------------------------------------------------------------
-- Funkcja przeszukiwania trupów NPC
-- W motivatorze, use callback wstawić nazwa_skryptu.dead_use(obj, who)
----------------------------------------------------------------------------------------------------
function dead_use(victim, who)
if not (victim and who) then return end --/>fix
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 --nazwa NPC
db.actor:give_info_portion("PORTION") --lub wywołanie skryptowych funkcji
elseif string.find(name, "esc_lager_volk") then --przeszukanie
db.actor:give_info_portion("PORTION")
return false --powtórnego wydania nie będzie
else
return true
end
end
end

Musisz jedynie znać nazwę NPC, która jest mu nadawana podczas spawnowania. Przykład. Jeśli stworzyłeś NPC i przypisałeś mu sekcję w spawn_sections, to jego nazwa będzie nazwą sekcji, którą ustawiłeś podczas spawnowania.

To samo możesz zrobić z mutantami. Ale jest trudniej. Musisz w binderze mutantów dodać use_callback i podobnie z binderem NPC.

 

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/1184-uroki-i-poleznye-funkcii-ot-panzyuza/

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.