SoC. Создание квеста на убийство NPC — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

SoC. Создание квеста на убийство NPC — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Создадим инфопоршни)
(Регистрация текста)
 
(не показаны 48 промежуточные версии 12 участников)
Строка 1: Строка 1:
[[Категория:Скрипты]]Здравствуйте. В этой статье я хочу написать о том, как создать сложный квест на убийство сталкера. <b>ВО ВСЕХ СЕКЦИЯХ, КОТОРЫЕ ВЫ ВСТАВЛЯЛИ В ФАЙЛЫ, УДАЛЯЙТЕ ПОЯСНЕНИЯ С ТОЧКОЙ-ЗАПЯТОЙ.</b> Итак, начнём.
+
[[Категория:Скрипты]]Здравствуйте. В этом уроке я напишу о том, как создать несложный квест на убийство сталкера. <b>ВО ВСЕХ СЕКЦИЯХ, КОТОРЫЕ ВЫ ВСТАВЛЯЛИ В ФАЙЛЫ, УДАЛЯЙТЕ ПОЯСНЕНИЯ С ТОЧКОЙ-ЗАПЯТОЙ.</b> Итак, начнём.
 
<br><br>Потребуются следующие файлы:
 
<br><br>Потребуются следующие файлы:
 
<br>
 
<br>
Строка 9: Строка 9:
 
<li><b>dialogs_escape.xml</b>
 
<li><b>dialogs_escape.xml</b>
 
<li><b>info_l01escape.xml</b>
 
<li><b>info_l01escape.xml</b>
<li><b>escape_tasks.script</b>
 
 
<li><b>stable_bio_name.xml</b>
 
<li><b>stable_bio_name.xml</b>
 +
<li><b>stable_dialogs_escape.xml</b>
 +
  
 
<br><br><br>
 
<br><br><br>
Строка 16: Строка 17:
 
<br>На примере я решил создать персонажа, которого нам надо убить на локации Кордон. Открываем файл <b>character_desc_escape.xml</b> из папки <i>config/gameplay</i>.
 
<br>На примере я решил создать персонажа, которого нам надо убить на локации Кордон. Открываем файл <b>character_desc_escape.xml</b> из папки <i>config/gameplay</i>.
 
<br>Создаём там секцию нашего персонажа, написав это:
 
<br>Создаём там секцию нашего персонажа, написав это:
<br><pre><specific_character id="esc_danila" team_default = "1"> ; имя профиля нашего НПС
+
<br><xml><specific_character id="esc_danila" team_default = "1"> ; имя профиля нашего НПС
 
<name>Данила</name> ; само имя персонажа
 
<name>Данила</name> ; само имя персонажа
 
<icon>ui_npc_u_green_stalker_2</icon>
 
<icon>ui_npc_u_green_stalker_2</icon>
Строка 41: Строка 42:
 
#include "gameplay\character_dialogs.xml"
 
#include "gameplay\character_dialogs.xml"
 
<start_dialog>hello_dialog</start_dialog>
 
<start_dialog>hello_dialog</start_dialog>
</specific_character></pre>
+
</specific_character></xml>
 
<br>Думаю тут всё ясно.
 
<br>Думаю тут всё ясно.
<br>Так же после строчки <i><actor_dialog>tm_wolf_reward</actor_dialog></i> в секции профиля Волка снизу пишем <i><actor>esc_kill_danila_dialog</actor></i>. Этим мы добавили Волку диалог, после которого выдастся квест.
+
<br>Так же после строчки <i><actor_dialog>tm_wolf_reward</actor_dialog></i> в секции профиля Волка снизу пишем <i><actor_dialog>esc_kill_danila_dialog</actor_dialog></i>. Этим мы добавили Волку диалог, после которого выдастся квест.
 
<br><br>Открываем <b>npc_profile</b> из той же папки пишем в конце:
 
<br><br>Открываем <b>npc_profile</b> из той же папки пишем в конце:
<br><pre><character id="esc_danila">
+
<br><xml><character id="esc_danila">
 
       <class>esc_danila</class> ; имя профиля
 
       <class>esc_danila</class> ; имя профиля
 
       <specific_character>esc_danila</specific_character> ;имя профиля
 
       <specific_character>esc_danila</specific_character> ;имя профиля
   </character></pre>
+
   </character></xml>
  
 
== Спавним персонажа на локации ==
 
== Спавним персонажа на локации ==
<br><br>Распаковываем <b>all.spawn</b> из папки <i>spawns</i>. Думаю, вы знаете как, если что, качаем ACDC для Тень Чернобыля, кидаем файлы, которые скачали в папку <i>spawns</i>. Декомпилируем <b>all.spawn</b>. Надеюсь, вы поймёте. После этого у вас появятся множество файлов. В нашем случае открываем файл <b>alife_l01_escape.ltx</b> и вставляем следующее:
+
<br><br>Распаковываем <b>all.spawn</b> из папки <i>spawns</i>. Думаю, вы знаете как, если что, качаем ACDC для Тень Чернобыля. Кидаем файлы, которые скачали в папку <i>spawns</i>. Декомпилируем <b>all.spawn</b>. Надеюсь, вы поймёте. После этого у вас появятся множество файлов. В нашем случае открываем файл <b>alife_l01_escape.ltx</b> и вставляем следующее:
<br><pre>[20000] ; уникальный номер секции
+
<br><ini>[20000] ; уникальный номер секции.
 
; cse_abstract properties
 
; cse_abstract properties
 
section_name = stalker
 
section_name = stalker
Строка 69: Строка 70:
 
object_flags = 0xffffffbb
 
object_flags = 0xffffffbb
 
custom_data = <<END
 
custom_data = <<END
 +
[spawner]
 +
cond = {+esc_kill_danila_quest_started} ; условие спавна НПС. Должна выдастся эта инфопорция.
 +
 
[logic]  
 
[logic]  
 
active = walker
 
active = walker
on_death = death
+
on_death = death ; позволяет установить схему настройки смерти НПС.
  
 
[death]
 
[death]
on_info = %+esc_danila_dead% ; здесь эта строчка отвечает за то, что при смерти этого персонажа выдастся инфопоршень, который завершит квест
+
on_info = %+esc_danila_dead% ; при смерти НПС выдаём инфопорцию.
 
[walker]
 
[walker]
 
path_walk = esc_danila_walk ; имя точки пути нашего персонажа  
 
path_walk = esc_danila_walk ; имя точки пути нашего персонажа  
Строка 117: Строка 121:
 
upd:start_dialog =  
 
upd:start_dialog =  
  
; se_stalker properties</pre>
+
; se_stalker properties</ini>
  
<br>Осталось прописать путь нашему персонажу. Дадим ему одну точку, чтобы он не уходил далеко и вы не искали его на локации. Для этого в этой же папке открываем файл <b>way_l01_escape.ltx</b>. Пишем туда в конец:
+
<br>Осталось прописать путь нашему персонажу. Дадим ему одну точку, чтобы он не уходил далеко, и вы не искали его на локации. Для этого в этой же папке открываем файл <b>way_l01_escape.ltx</b>. Пишем туда в конец:
<br><pre>[esc_dio_walk]
+
<br><ini>[esc_danila_walk]
 
points = p0
 
points = p0
 
p0:name = wp00
 
p0:name = wp00
Строка 128: Строка 132:
 
p0:level_vertex_id = 186578
 
p0:level_vertex_id = 186578
  
[esc_dio_look]
+
[esc_danila_look]
 
points = p0
 
points = p0
 
p0:name = wp00
 
p0:name = wp00
Строка 134: Строка 138:
 
p0:position = -79.6699981689453,-5.05999994277954,-72.8099975585938
 
p0:position = -79.6699981689453,-5.05999994277954,-72.8099975585938
 
p0:game_vertex_id = 76
 
p0:game_vertex_id = 76
p0:level_vertex_id = 188614</pre>
+
p0:level_vertex_id = 188614</ini>
 
<br>Готово, только обязательно компилируем новый <b>all.spawn</b>. Теперь наш персонаж будет стоять в вагоне, где лежал раненый Толик.
 
<br>Готово, только обязательно компилируем новый <b>all.spawn</b>. Теперь наш персонаж будет стоять в вагоне, где лежал раненый Толик.
  
 
== Создание квеста ==
 
== Создание квеста ==
 
<br>Открываем файл <b>tasks_escape.xml</b> из <i>config/gameplay</i> и добавляем секцию нашего квеста:
 
<br>Открываем файл <b>tasks_escape.xml</b> из <i>config/gameplay</i> и добавляем секцию нашего квеста:
<br><pre> <game_task id="esc_kill_danila_quest"> ; имя квеста
+
<br><xml> <game_task id="esc_kill_danila_quest"> ; имя квеста
 
         <title>Убить предателя</title>
 
         <title>Убить предателя</title>
 
         <objective>
 
         <objective>
 
             <text>Убить предателя</text>
 
             <text>Убить предателя</text>
 
             <icon>ui_iconsTotal_esc_dinamit_to_volk</icon>
 
             <icon>ui_iconsTotal_esc_dinamit_to_volk</icon>
             <infoportion_complete>esc_kill_danila_quest_complete</infoportion_complete> ; выполнение квеста       
+
             <infoportion_complete>esc_danila_dead</infoportion_complete> ; указываем инфопорцию, при которой выполнится квест.
 
</objective>
 
</objective>
 
                 <objective>
 
                 <objective>
Строка 150: Строка 154:
 
             <map_location_type hint="esc_danila">blue_location</map_location_type> ; имя отметки нашего НПС на карте
 
             <map_location_type hint="esc_danila">blue_location</map_location_type> ; имя отметки нашего НПС на карте
 
             <object_story_id>esc_danila</object_story_id> ; отметка нашего НПС на карте
 
             <object_story_id>esc_danila</object_story_id> ; отметка нашего НПС на карте
                         <function_complete>escape_tasks.esc_kill_danila</function_complete> ; строчка, отвечающая за условие выполнения квеста
+
                         <infoportion_complete>esc_danila_dead</infoportion_complete> ; указываем инфопорцию, при которой выполнится квест.
            <infoportion_complete>esc_kill_danila_quest_complete</infoportion_complete> ; выполнение квеста
+
 
         </objective>
 
         </objective>
         </game_task></pre>
+
         </game_task></xml>
  
 
== Создание диалога ==
 
== Создание диалога ==
<br>Создадим диалог с Волком, после которого выдастся квест. Открываем <b>dialogs_escape.xml</b> из той же папки пишем снизу:
+
<br>Создадим диалог с Волком, после которого выдастся квест. Открываем <b>dialogs_escape.xml</b> из той же папки, пишем снизу:
<br><pre><dialog id="esc_kill_danila_dialog"> ; имя диалога
+
<br><xml><dialog id="esc_kill_danila_dialog"> ; имя диалога
<dont_has_info>esc_kill_danila_dialog_finished</dont_has_info> ; конец диалога, больше он не повторится
+
<dont_has_info>esc_kill_danila_quest_started</dont_has_info> ; прописываем инфопорцию, при выдачи которой, диалог больше не появится.
 
         <phrase_list>
 
         <phrase_list>
 
    <phrase id="0">
 
    <phrase id="0">
<text>Есть дополнительная работа?</text>
+
<text>esc_danila_dialog_1</text>
 
<next>1</next>
 
<next>1</next>
 
</phrase>
 
</phrase>
 
         <phrase id="1">
 
         <phrase id="1">
<text>Да, предал нас один сталкер, Данилой кличут, убей его. Координаты его я тебе скину.</text>
+
<text>esc_danila_dialog_2</text>
 
<next>2</next>
 
<next>2</next>
 
</phrase>
 
</phrase>
 
<phrase id="2">
 
<phrase id="2">
<text>Хорошо.</text>
+
<text>esc_danila_dialog_3</text>
<give_info>esc_kill_danila_quest_started</give_info> ; выдача квеста после диалога
+
<give_info>esc_kill_danila_quest_started</give_info> ; выдача квеста после диалога, а так же играет роль, что диалог больше не появится.
<give_info>esc_kill_danila_dialog_finished</give_info> ; конец диалога, больше он не повторится
+
 
</phrase>
 
</phrase>
 
    </phrase_list>
 
    </phrase_list>
</dialog></pre>
+
</dialog></xml>
  
== Создадим инфопоршни ==
+
== Регистрация текста ==
<br>Открываем файл <b>info_l01_escape.xml</b> и всё той же папки добавляем следующее:
+
<br><pre> <info_portion id="esc_kill_danila_quest_started"> ; строчка, которая даёт начало квеста
+
            <task>esc_kill_danila_quest</task> ; название квеста, чтобы было понятно, к какому квесту давай инфопоршень о его начале
+
        </info_portion>
+
<info_portion id="esc_danila_dead"></info_portion> ; инфопоршень, который позволяет завершить квеста. Ранее мы его добавили в логику, в раздел смерти нашего персонажа.
+
<info_portion id="esc_kill_danila_quest_complete"></info_portion> ; выполнение квеста
+
<info_portion id="esc_kill_danila_dialog_finished"></info_portion> ; конец диалога, больше он не появится</pre>
+
  
== Создадим функцию, которая совершит выполнение квеста после убийства нашего NPC ==
+
Открываем файл <b>stable_dialogs_escape.xml</b> и пишем следующее:  
<br>Открываем <b>escape_tasks.script</b> и вписываем нашу функцию:
+
<br><pre>function esc_kill_danila(actor,npc)
+
local actor = db.actor
+
if has_alife_info("esc_danila_dead") and not has_alife_info("esc_kill_danila_quest_started") ; если имеется информация, что наш НПС убит, то выдаётся инфопоршень на выполнение квеста
+
        then
+
return db.actor:give_info_portion("esc_kill_danila_quest_complete")
+
end
+
return false
+
end</pre>
+
  
 +
<br><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></xml>
 +
 +
Затем необходимо прописать этот диалог Волку.
 +
Открываем <b>character_desc_escape.xml</b>, находим там профиль Волка, <b>esc_wolf</b> и вставляем диалог, например сюда:
 +
<br><xml><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_cool_info_dialog</actor_dialog>
 +
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog>
 +
<actor_dialog>tm_wolf_dialog</actor_dialog>
 +
<actor_dialog>tm_wolf_reward</actor_dialog></br></xml>
 +
 +
Готово, теперь диалог полностью готов. Квест станет доступным после разговора Волка по рации с Петрухой.
 +
 +
== Создадим инфопоршни ==
 +
<br>Открываем файл <b>info_l01_escape.xml</b> из всё той же папки добавляем следующее:
 +
<br><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> ; инфопорция смерти нашего НПС, который позволяет завершить квеста. Ранее мы его добавили в логику, в раздел смерти нашего персонажа.</xml>
  
== Создаём имя отметки нашего NPC на карте ==
+
== Создаём отметку нашего NPC на карте==
<br>Открываем файл <b>stable_bio_name.xml</b> и пишем там в конце:
+
<br>Открываем файл <b>stable_bio_name.xml</b> из папки <i>config/text/rus</i>, пишем там в конце:
<br><pre><string id="esc_danila">
+
<br><xml><string id="esc_danila">
 
<text>Данила</text>
 
<text>Данила</text>
</string></pre>
+
</string></xml>
  
== Создаём Game Story Id ==
+
<br>Создадим Game Story Id, чтобы НПС наш отображался на карте. Для этого открываем файл <b>game_story_ids</b> из папки <i>config</i> и пишем в конце:
<br>Создадим его, чтобы НПС наш отображался на карте. Для этого открываем файл <b>game_story_ids</b> и пишем в конце:
+
 
<br><pre>20000 = "esc_danila"</pre>
 
<br><pre>20000 = "esc_danila"</pre>
  
 
<br>Ну вот собственно и всё. Вроде написал всё, что надо. Автор <b>LaRento</b>. Буду постепенно заливать туторы по созданию разных типов квестов. Всем пока, удачи)
 
<br>Ну вот собственно и всё. Вроде написал всё, что надо. Автор <b>LaRento</b>. Буду постепенно заливать туторы по созданию разных типов квестов. Всем пока, удачи)

Текущая версия на 13:52, 15 июля 2016

Здравствуйте. В этом уроке я напишу о том, как создать несложный квест на убийство сталкера. ВО ВСЕХ СЕКЦИЯХ, КОТОРЫЕ ВЫ ВСТАВЛЯЛИ В ФАЙЛЫ, УДАЛЯЙТЕ ПОЯСНЕНИЯ С ТОЧКОЙ-ЗАПЯТОЙ. Итак, начнём.

Потребуются следующие файлы:

  • 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 ; имя нашего персонажа
    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 ; профиль нашего персонажа, созданного в 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} ; условие спавна НПС. Должна выдастся эта инфопорция.
     
    [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,-72.7399978637695 ; тоже координаты, обязательно писать и тут их
    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


    Осталось прописать путь нашему персонажу. Дадим ему одну точку, чтобы он не уходил далеко, и вы не искали его на локации. Для этого в этой же папке открываем файл way_l01_escape.ltx. Пишем туда в конец:


    [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


    Готово, только обязательно компилируем новый 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_cool_info_dialog</actor_dialog>
    <actor_dialog>dm_help_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. Буду постепенно заливать туторы по созданию разных типов квестов. Всем пока, удачи)
  • Другие места
    LANGUAGE