Gość Diegtiariow Opublikowano 30 Kwietnia 2023 Zgłoś Udostępnij Opublikowano 30 Kwietnia 2023 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/ Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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.