Вітаю. У цьому уроці я напишу, як створити нескладний квест на вбивство сталкера. У ВСІХ СЕКЦІЯХ, ЯКІ ВИ ВСТАВЛЯЛИ У ФАЙЛИ, ВИДАЛЯЙТЕ ПОЯСНЕННЯ З ТОЧКОЮ-КОМою. Тож почнемо.
Потрібні такі файли:
- character_desc_escape.xml
- npc_profile.xml
- all.spawn
- tasks_escape.xml
- game_story_ids.ltx
- dialogs_escape.xml
- info_l01escape.xml
- stable_bio_name.xml
- stable_dialogs_escape.xml
Створення персонажа
На прикладі я вирішив створити персонажа, якого нам треба вбити на локації Кордон. Відкриваємо файл character_desc_escape.xml із папки config/gameplay .
Створюємо там секцію нашого персонажа, написавши це:<specific_character id = "esc_danila" team_default = "1" > ; ім'я профілю нашогоНПС <name> Данило </name> ; саме ім'я персонажа <icon > ui_npc_u_green_stalker_2 </icon > <bio > esc_captain_bio </bio > < class > esc_danila </class> ; клас повинен бути завжди той самий, як і ім'я профілю <community > stalker </community > <terrain_sect > stalker_terrain </terrain_sect > <rank > 906 </rank > <reputation > 20 </reputation > <snd_config > characters_voice\human_01\stalker\ </snd_config > <crouch_type > 0 </crouch_type > <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 >
Думаю, тут все ясно.
Також після рядка <actor_dialog>tm_wolf_reward</actor_dialog> у секції профілю Вовка знизу пишемо <actor_dialog>esc_kill_danila_dialog</actor_dialog> . Цим ми додали Вовку діалог, після якого видасться квест.Відкриваємо npc_profile з тієї ж папки, пишемо в кінці:
<character id = "esc_danila" > <class > esc_danila </class > ; ім'я профілю <specific_character > esc_danila </specific_character > ;ім'я профілю </character >
Спалим персонажа на локації
Розпаковуємо all.spawn з папки spawns . Думаю, ви знаєте, як, якщо що, качаємо ACDC для Тінь Чорнобиля. Кидаємо файли, які завантажили в папку spawns . Декомпілюємо all.spawn . Сподіваюся, ви зрозумієте. Після цього у вас з'явиться багато файлів. У нашому випадку відкриваємо файл alife_l01_escape.ltx та вставляємо наступне:
[ 20000 ] ; Унікальний номер секції. ; cse_abstract properties section_name = stalker name = esc_danila ; ім'я нашого персонажа _ _ _ _ _ _ координати спавна нашого персонажа direction = 0.00115116173401475 , -5 . ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_danila ; профіль нашого персонажа, створеного в 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_dan умова спавна НПС. Має видатися ця інфопорція. [ logic ] active = walker on_death = death ; дозволяє встановити схему налаштування смерті НПС. [ death ] on_info = % + esc_danila_dead % ; при смерті НПС видаємо інфопорцію [ walker ] path_walk = esc_danila_walk ; ім'я точки шляху нашого персонажа path_look = esc_danila_look ; ім'я точки , куди наш персонаж дивитися END story_id = 20000 ; сторі ід, знадобиться для квесту ; 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 , -795839 ; теж координати , обов'язково писати і тут їх upd : o_model = 0 upd : o_torso = -5.07207296323031e -005 _ _ _ _ _ _ _ _ ; 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
Залишилось прописати шлях нашому персонажу. Дамо йому одну точку, щоб він не йшов далеко, і ви не шукали його на локації. Для цього в цій папці відкриваємо файл way_l01_escape.ltx . Пишемо туди до кінця:
[ esc_danila_walk ] points = p0 p0 : name = wp00 p0: flags = 0x1 p0 : position = -81.8000030517578 , -4.98000001907349 , -72.73999786 vertex_id = 186578_ _ [ esc_danila_look ] points = p0 p0 : name = wp00 p0: flags = 0x1 p0 : position = -79.6699981689453 , -5.059999994277954 , -72.809997550 ex_id = 188614_ _
Готово, тільки обов'язково компілюємо новий all.spawn . Тепер наш персонаж стоятиме у вагоні, де лежав поранений Толик.
Створення квесту
Відкриваємо файл tasks_escape.xml із config/gameplay і додаємо секцію нашого квесту:
<game_task id = "esc_kill_danila_quest" > ; ім'я квесту <title > Вбити зрадника </title > <objective > <text > Вбити зрадника </text > <icon > ui_iconsTotal_esc_dinamit_to_volk </icon > <infoportion_complete > esc_danila_dead </infoportion_complete > ; вказуємо інфопорцію, коли виконається квест. </objective > <objective > <text > Вбити Данила </text > <map_location_type hint = "esc_danila" > blue_location </map_location_type > ; ім'я позначки нашого НПС на карті <object_story_id> esc_danila </object_story_id> ; відмітка нашого НПС на карті <infoportion_complete > esc_danila_dead </infoportion_complete > ; вказуємо інфопорцію, коли виконається квест. </objective > </game_task >
Створення діалогу
Створимо діалог із Вовком, після якого видасться квест. Відкриваємо dialogs_escape.xml з тієї ж папки, пишемо знизу:
<dialog id = "esc_kill_danila_dialog" > ; ім'я діалогу <dont_has_info> esc_kill_danila_quest_started </dont_has_info> ; _ прописуємо інфопорцію, при видачі якої діалог більше не з'явиться. <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 > ; видача квесту після діалогу, а також грає роль, що діалог більше не з'явиться. </phrase > </phrase_list > </dialog >
Реєстрація тексту
Відкриваємо файл stable_dialogs_escape.xml та пишемо наступне:
<string id = "esc_danila_dialog_1" > <text > Чи є додаткова робота? </text > </string > <string id = "esc_danila_dialog_2" > <text > Так, зрадник з'явився у нас, Данило кличуть. Вбий його, координати на нього я тобі скину. </text > </string > <string id = "esc_danila_dialog_3" > <text > Добре </text > </string > </br >
Потім потрібно прописати цей діалог Вовку. Відкриваємо character_desc_escape.xml , знаходимо там профіль Вовка, esc_wolf і вставляємо діалог, наприклад сюди:
<start_dialog > escape_lager_volk_talk </start_dialog > <start_dialog > dm_hello_dialog < /start_dialog > <actor_dialog > esc_kill_danila_dialog </actor_dialog > < !--діалог на вбивство Даніли---> < actor_dialog > dm _wounded_medkit_dialog < / actor_dialog > <actor_dialog > tm_wolf_dialog </actor_dialog > <actor_dialog > tm_wolf_reward </actor_dialog > </br >
Готово тепер діалог повністю готовий. Квест стане доступним після розмови Вовка щодо рації з Петрухою.
Створимо інфопоршні
Відкриваємо файл info_l01_escape.xml з тієї ж папки додаємо наступне:
<info_portion id = "esc_kill_danila_quest_started" > ; інфопорція, що дає початок квесту <task> esc_kill_danila_quest </task> ; назва квесту </info_portion > <info_portion id = "esc_danila_dead" > </info_portion > ; інфопорція смерті нашого НПС, що дозволяє завершити квест. Раніше ми його додали в логіку, розділ смерті нашого персонажа.
Створюємо позначку нашого NPC на карті.
Відкриваємо файл stable_bio_name.xml з папки config/text/rus , пишемо там наприкінці:
<string id = "esc_danila" > <text > Данило </text > </string >
Створимо Game Story Id, щоб НПС наш відображався на карті. Для цього відкриваємо файл game_story_ids з папки config і пишемо наприкінці:
20000 = "esc_danila"
Ну ось що і все. Начебто написав усе, що треба. Автор LaRento . Поступово заливатиму тутори зі створення різних типів квестів. Всім поки що, удачі)