Tworzenie typowych zadań w Zewie Prypeci [CoP]

NAZWA:  Tworzenie typowych zadań w Zewie Prypeci [CoP]
TWÓRCA: Xmk

 

Analiza systemu zadań w S.T.A.L.K.E.R. Zew Prypeci.

 

ANALIZA PARAMETRÓW:

Spoiler

icon - ikonka zadania
Przykład: icon = ui_inGame2_Put_v_pripyat

prior - priorytet zadania
Przykład: prior = 112

storyline - flaga zadania (true - fabularne, false - poboczne)
Przykład: storyline = true

title - nazwa zadania (id z xml) - jeśli bierzemy nazwę nie z xml, to w grze zostanie wyświetlone bez spacji
Przykład: title = zat_a9_way_gates_check_transport_workshop_name

descr - opis zadania (id из xml) - jeśli bierzemy nazwę nie z xml, to w grze zostanie wyświetlone bez spacji
Przykład: descr = zat_a9_way_gates_check_transport_workshop_text

target - cel na mapie (znaczek)

Przykłady:
target =zat_a2_stalker_barmen (ID NPC, na którego został postawiony znaczek)
target = {+ nazwa_infoportion }zat_a2_stalker_barmen – sprawdzanie infoportion, po którym znaczek będzie postawiona na NPC

on_init - infoportion, który “uruchamia” zadanie
Przykład: on_init = %+_ nazwa_infoportion _%

condlist_x – blok warunków. Możliwe wartości to complete, reversed, fail

Przykłady:
condlist_0 = {+_ nazwa_infoportion } complete - jeśli infoportion jest, to zadanie zostało wykonane
condlist_1 = {+
nazwa_infoportion } reversed - jeśli infoportion jest, to zadanie można powtórzyć
condlist_2 = {+
nazwa_infoportion _} fail - jeśli infoportion jest, to zadanie nie powiodło się/zostało zawalone

on_complete - działania, które są wykonywane, jeśli zadanie zostało wykonane
on_reversed - działania, które są wykonywane, jeśli zadanie nie powiodło się/zostało zawalone

Przykłady:
on_complete = %=inc_faction_goodwill_to_actor(stalker:200)% – zwiększamy reputację u stalkerów (funkcja jest używana z xr_effect)
on_reversed = {+_ nazwa_infoportion } %=inc_faction_goodwill_to_actor(stalker:200)% – zwiększamy reputację u stalkerów, tylko, jeśli jest okr. infoportion
on_complete = %+
nazwa_infoportion _% – wydajemy infoportion

reward_money - nagroda pieniężna

Przykład: reward_money = 5000

 

TWORZYMY PRYMITYWNE ZADANIE:

Spoiler

Wykorzystywane pliki:

  • configs\gameplay\dialogs_zaton.xml
  • configs\gameplay\info_zaton.xml
  • configs\gameplay\character_desc_zaton.xml
  • configs\text\rus\st_ quests_zaton.xml
  • configs\misc\tm_zaton.ltx
  • scripts\dialogs_zaton.script

Tworzenie dialogu:

Otwieramy plik dialogs_zaton.xml i dodajemy przed </game_dialogs>:

\<dialog id="vodka\_quest\_dialog"\>\<dont\_has\_info\>quest\_vodka\_done\</dont\_has\_info\>\<dont\_has\_info\>quest\_vodka\_give\</dont\_has\_info\>\<phrase\_list\>\<phrase id="1"\>\<text\>Przynieś butelkę\</text\>\<give\_info\>quest\_vodka\_give\</give\_info\>\<action\>dialogs\_zaton.give\_vodka\_quest\</action\>\</phrase\>\<phrase id="0"\>\<text\>Cześć, nie potrzeba ci wódki?\</text\>\<next\>1\</next\>\</phrase\>\</phrase\_list\>\</dialog\>\<dialog id="vodka\_quest\_prines"\>\<has\_info\>quest\_vodka\_give\</has\_info\>\<precondition\>dialogs\_zaton.is\_has\_vodka\_borode\</precondition\>\<phrase\_list\>\<phrase id="1"\>\<text\>Dzięki, stary.\</text\>\<give\_info\>quest\_vodka\_done\</give\_info\>\</phrase\>\<phrase id="0"\>\<has\_info\>quest\_has\_vodka\</has\_info\>\<text\>Trzymaj.\</text\>\<action\>dialogs\_zaton.transfer\_vodka\_to\_boroda\</action\>\<next\>1\</next\>\</phrase\>\</phrase\_list\>\</dialog\>

 

Następnie dodajemy nasze dialogi Brodaczowi:

Otwieramy plik character_desc_zaton.xml i szukamy linijki <actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog>. Pod nią piszemy:

\<actor\_dialog\>vodka\_quest\_dialog\</actor\_dialog\>\<actor\_dialog\>vodka\_quest\_prines\</actor\_dialog\>

Zapisujemy.

Infoportion’y i skryptowe funkcje:

Otwieramy plik info_zaton.xml i dodajemy przed </game_information_portions>:

\<info\_portion id="quest\_vodka\_give"\>\</info\_portion\>\<info\_portion id="quest\_has\_vodka"\>\</info\_portion\>\<info\_portion id="quest\_vodka\_done"\>\</info\_portion\>

Otwieramy plik dialogs_zaton.script i na początku dopisujemy:

function give\_vodka\_quest()task\_manager.get\_task\_manager():give\_task("quest\_vodka\_give")end function is\_has\_vodka\_borode()if db.actor:object("vodka") thenreturn trueendreturn falseend function transfer\_vodka\_to\_boroda(first\_speaker, second\_speaker)dialogs.relocate\_item\_section\_from\_actor(first\_speaker, second\_speaker, "vodka")end

Zapisujemy.

Samo zadanie:

Otwieramy plik tm_zaton.ltx i na końcu piszemy:

[quest\_vodka\_give]icon = ui\_inGame2\_Put\_v\_pripyat prior = 2storyline = falsetitle = {=actor\_has\_item(vodka)}vodka\_barmen\_prinesti\_name, vodka\_barmen\_naiti\_name descr = vodka\_barmen\_descr target = {=actor\_has\_item(vodka)}zat\_a2\_stalker\_barmen condlist\_0 = {+quest\_vodka\_done} complete

Otwieramy plik st_quests_zaton.xml i dodajemy po <string_table>

\<string id="vodka\_barmen\_naiti\_name"\>\<text\>Znajdź wódkę dla barmana\</text\>\</string\>\<string id="vodka\_barmen\_prinesti\_name"\>\<text\>Przynieś wódkę barmanowi\</text\>\</string\>\<string id="vodka\_barmen\_descr"\>\<text\>Barman w celach testowych poprosił o znalezienie i przyniesienie mu 2 butelek wódki\</text\>\</string\>

Zapisujemy.

 

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/1024-cop-sozdanie-tipovyh-kvestov-v-zove-pripyati/