Skocz do zawartości

Tworzenie typowych zadań w Zewie Prypeci [CoP]


Gość Diegtiariow

Rekomendowane odpowiedzi

Gość Diegtiariow

Co-P.jpg

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") then
return true
end
return false
end
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 = 2
storyline = false
title = {=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/

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.