Skocz do zawartości

Tworzenie zadania na zabójstwo NPC [SoC]


Gość Diegtiariow

Rekomendowane odpowiedzi

Gość Diegtiariow

NPC.jpg

NAZWA: Tworzenie zadania na zabójstwo NPC [SoC]
TWÓRCA: LaRento

 

WYMAGANE NASTĘPUJĄCE PLIKI:

Spoiler

- character_desc_escape.xml
- npc_profile.xml
- all.spawn
- tasks_escape.xml
- game_story_ids.ltx
- dialogs_escape.xml
- stable_dialogs_escape.xml
- info_l01escape.xml
- stable_bio_name.xml

 

1. TWORZENIE POSTACI:

Spoiler

Korzystając z przykładu, postanowiono stworzyć postać, którą musimy zabić na lokacji Kordon. Otwieramy plik character_desc_escape.xml z folderu config/gameplay.

Tworzymy tam naszą sekcję postaci, pisząc to:

<visual>actors\novice\green_stalker_1</visual>
<supplies>
[spawn] \n
wpn_mp5 \n
ammo_9x19_fmj = 1 \n
#include "gameplay\character_food.xml"
</supplies>

#include "gameplay\character_criticals_5.xml"
#include "gameplay\character_dialogs.xml"
<start_dialog>hello_dialog</start_dialog>
</specific_character>

Chyba wszystko jest tutaj jasne.

Poza tym po wierszu <actor_dialog>tm_wolf_reward</actor_dialog> w sekcji profilu Wilka poniżej wpisz <actor_dialog>esc_kill_danila_dialog</actor_dialog>. W ten sposób dodaliśmy dialog Wilkowi, po którym zostanie wydane zadanie.

Otwieramy npc_profile.xml z tego samego folderu i piszemy na końcu:

<character id="esc_danila">
<class>esc_danila</class> ; nazwa profilu
<specific_character>esc_danila</specific_character> ;nazwa profilu
</character>

 

 

2. SPAWNUJEMY POSTAĆ NA LOKACJI:

Spoiler

Rozpakuj all.spawn z folderu spawns. Pobieramy ACDC dla Shadow of Chernobyl, wrzucamy pliki, które pobraliśmy do folderu spawns. Dekompilujemy all.spawn. Po tym będzie wiele plików. W naszym przypadku otwieramy plik alife_l01_escape.ltx i wklejamy następujące elementy:

[20000] ; unikalny numer sekcji
; cse_abstract properties
section_name = stalker
name = esc_danila ; nazwa naszej postaci
position = -81.8000030517578,-4.98000001907349,-72.7399978637695 ; координаты спавна нашего персонажа
direction = 0.00115116173401475,-5.07207296323031e-005,0.0440320037305355

; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_danila ; profil naszej postaci, stworzonej w character_desc_escape

; cse_alife_object properties
game_vertex_id = 76
distance = 9.09999942779541
level_vertex_id = 186578
object_flags = 0xffffffbb
custom_data = <<END
[spawner]
cond = {+esc_kill_danila_quest_started} ; warunek spawnu NPC. Powinien zostać wydany ten infoportion.

[logic]
active = walker
on_death = death ; pozwala na instalację schematu ustawienia śmierci NPC.

[death]
on_info = %+esc_danila_dead% ; wskazuje infoportion, który zostanie wydany po śmierci NPC i zakończy zadanie.
[walker]
path_walk = esc_danila_walk ; nazwa punktu ścieżki naszej postaci
path_look = esc_danila_look ; nazwa punktu , gdzie nasza postać będzie patrzeć
END
story_id = 20000 ; story id, przyda sie dla zadania

; cse_visual properties
visual_name = actors\soldier\soldier_beret_1

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 1
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =

upd:health = 1
upd:timestamp = 0x75646f6d
upd:creature_flags = 0x6c
upd:position = -81.8000030517578,-4.98000001907349,-72.7399978637695 ; koordynaty, obowiązkowo pisać je tutaj
upd:o_model = 0
upd:o_torso = -5.07207296323031e-005,0.00115116173401475,0
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 1

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 0,1,1,1,2
predicate4 = 2,0,1,0

; cse_ph_skeleton properties

upd:start_dialog =

; se_stalker properties

Pozostaje przypisać ścieżkę do naszej postaci. Damy mu jeden punkt, aby nie odszedł daleko i abyśmy nie szukał go po lokacji. Aby to zrobić, otwieramy plik way_l01_escape.ltx w tym samym folderze.

Piszemy tam na końcu:

[esc_danila_walk]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = -81.8000030517578,-4.98000001907349,-72.7399978637695
p0:game_vertex_id = 76
p0:level_vertex_id = 186578

[esc_danila_look]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = -79.6699981689453,-5.05999994277954,-72.8099975585938
p0:game_vertex_id = 76
p0:level_vertex_id = 188614

Gotowe, tylko pamiętaj o skompilowaniu nowego all.spawn. Teraz nasza postać stanie w samochodzie, w którym leżał ranny Tolik.

 

 

3. TWORZYMY SAMO ZADANIE:

Spoiler

Otwieramy plik task_escape.xml z config/gameplay i dodajemy naszą sekcję zadania:

<game_task id="esc_kill_danila_quest"> ; ID-nazwa zadania
<title>Zabić stalkera</title>
<objective>
<text>Zabić stalkera</text>
<icon>ui_iconsTotal_esc_dinamit_to_volk</icon>
<infoportion_complete>esc_danila_dead</infoportion_complete> ; wskazujemy infoportion, przy którym zadanie jest zaliczane jako wykonane.
</objective>
<objective>
<text>Zabić Daniłę</text>
<map_location_type hint="esc_danila">blue_location</map_location_type> ; nazwa znacznika naszego NPC na mapie
<object_story_id>esc_danila</object_story_id> ; znacznik naszego NPC na mapie
<infoportion_complete>esc_danila_dead</infoportion_complete> ; wskazujemy infoportion, przy którym zadanie jest zaliczane jako wykonane.
</objective>
</game_task>

 

 

 

4. TWORZENIE DIALOGU:

Spoiler

Tworzymy dialog z Wilkiem, po którym zostanie wydane zadanie. Otwieramy dialogs_escape.xml z tego samego folderu i piszemy poniżej:

<dialog id="esc_kill_danila_dialog"> ; ID-nazwa dialogu
<dont_has_info>esc_kill_danila_quest_started</dont_has_info> ; wskazujemy infoportion, przy którego wydaniu dialog więcej się nie pojawi.
<phrase_list>
<phrase id="0">
<text>esc_danila_dialog_1</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_danila_dialog_2</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>esc_danila_dialog_3</text>
<give_info>esc_kill_danila_quest_started</give_info> ; wydanie infoportion, zawierającego zadanie; również gra rolę, aby dialog więcej się nie powtórzył.
</phrase>
</phrase_list>
</dialog>

 

 

5. REJESTRACJA TEKSTU DIALOGU:

Spoiler

Otwieramy plik stable_dialogs_escape.xml i piszemy:

<string id="esc_danila_dialog_1">
<text>Jest dodatkowa praca?</text>
</string>
<string id="esc_danila_dialog_2">
<text>Tak, pojawił się zdrajca, nazywa się Daniła. Zabij go, miejsce pobytu prześlę.</text>
</string>
<string id="esc_danila_dialog_3">
<text>Dobrze.</text>
</string>

Gotowe, teraz dialog jest zakończony.

 

6. TWORZYMY INFOPORTION:

Spoiler

Otwieramy plik info_l01_escape.xml w tym samym folderze i dodajemy następujące elementy:

<info_portion id="esc_kill_danila_quest_started"> ; infoportion, odpowiadający za wydanie zadania.
                <task>esc_kill_danila_quest</task> ; wskazujemy ID-nazwę zadania.
</info_portion>            

<info_portion id="esc_danila_dead"></info_portion> ; infoportion o śmierci naszego NPC.
<info_portion id="esc_kill_danila_quest_complete"></info_portion> ; infoportion o wykonaniu zadania.

 

 

7. TWORZYMY ZNACZEK NASZEGO NPC NA MAPIE:

Spoiler

Otwieramy plik stable_bio_name.xml z folderu config/text/rus i piszemy tam na końcu:

<string id="esc_danila">
<text>Daniła</text>
</string>

Utwórzmy Game Story ID. W tym celu otwieramy plik game_story_ids.ltx z folderu config i piszemy na końcu:

20000 = "esc_danila"

Idziemy więc do Wilka, rozmawiamy, dostajemy zadanie, zabijamy postać i git.

 

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/1034-soc-sozdanie-kvesta-na-ubiystvo-npc/

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.