Jump to content

Tworzenie zadania na zabójstwo NPC [SoC]


Guest Diegtiariow

Recommended Posts

Guest 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/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.