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

SoC. Однотипные квесты — различия между версиями

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

Перейти к: навигация, поиск
(Структура однотипных квестов)
 
(не показаны 2 промежуточных версий 1 участника)
Строка 2: Строка 2:
  
 
Как известно, при разговоре с некоторыми NPC (Сахаров, Бармен, Сидорович, Лукаш, Волк, Шустрый, Бром, Лысый, Охотник и Осведомитель) появляется ветка «есть ли для меня работа?». В целях упрощения создания однотипных квестов, выдаваемых через эту ветку, разработчики создали следующую схему...
 
Как известно, при разговоре с некоторыми NPC (Сахаров, Бармен, Сидорович, Лукаш, Волк, Шустрый, Бром, Лысый, Охотник и Осведомитель) появляется ветка «есть ли для меня работа?». В целях упрощения создания однотипных квестов, выдаваемых через эту ветку, разработчики создали следующую схему...
 +
  
 
==Структура однотипных квестов==
 
==Структура однотипных квестов==
  
Сами задания находятся в конфиге:
+
Сами задания находятся в конфиге '''gamedata\config\misc\task_manager.ltx'''.
 
+
<pre>gamedata\config\misc\task_manager.ltx</pre>
+
 
+
Цели квестов и условия их выполнения фиксируются в скрипте:
+
  
<pre>gamedata\scripts\task_manager.script</pre>
+
Цели квестов и условия их выполнения фиксируются в скрипте '''gamedata\scripts\task_manager.script'''.
  
 
Ветки диалогов, отвечающие за эти задания (например, у Сидоровича) выглядит так:
 
Ветки диалогов, отвечающие за эти задания (например, у Сидоровича) выглядит так:
  
<pre><actor_dialog>tm_trader_dialog</actor_dialog>
+
<xml>
<actor_dialog>tm_trader_reward</actor_dialog></pre>
+
<actor_dialog>tm_trader_dialog</actor_dialog>
 +
<actor_dialog>tm_trader_reward</actor_dialog>
 +
</xml>
  
Где первый actor_dialog – диалог с выдачей задания, а второй - диалог по заданию и получению награды, либо отказа от выполнения оного. Никто нас насильно его выполнять не заставляет.
+
Где первый '''actor_dialog''' – диалог с выдачей задания, а второй - диалог по заданию и получению награды, либо отказа от выполнения оного. Никто нас насильно его выполнять не заставляет.
  
При получении задания информация об этом прописывается и в PDA, не забываем об этом. Информация добавляется с помощью файла:
+
При получении задания информация об этом прописывается и в PDA, не забываем об этом. Информация добавляется с помощью файла '''gamedata\config\gameplay\storyline_info_taskmanager.xml'''.
  
<pre>gamedata\config\gameplay\storyline_info_taskmanager.xml</pre>
+
Описание задания хранится в файле '''gamedata\config\text\rus\stable_task_manager.xml'''.
 
+
Описание задания хранится в файле
+
 
+
<pre>gamedata\config\text\rus\stable_task_manager.xml</pre>
+
  
 
Всего существует шесть видов подобных заданий:
 
Всего существует шесть видов подобных заданий:
  
* eliminate_lager = уничтожить лагерь
+
* '''eliminate_lager''' = уничтожить лагерь
* defend_lager = защитить лагерь
+
* '''defend_lager''' = защитить лагерь
* kill_stalker = убить сталкер
+
* '''kill_stalker''' = убить сталкера
* artefact = найти артефакт
+
* '''artefact''' = найти артефакт
* monster_part = найти часть монстра
+
* '''monster_part''' = найти часть монстра
* find_item = найти предмет
+
* '''find_item''' = найти предмет
  
 
==Создаем квест==
 
==Создаем квест==
Строка 41: Строка 36:
 
Для создания дополнительного квеста у Сидоровича нам понадобятся всего три файла:
 
Для создания дополнительного квеста у Сидоровича нам понадобятся всего три файла:
  
<pre>gamedata\config\gameplay\storyline_info_taskmanager.xml
+
*'''gamedata\config\gameplay\storyline_info_taskmanager.xml'''
gamedata\config\misc\task_manager.ltx
+
*'''gamedata\config\misc\task_manager.ltx'''
gamedata\config\text\rus\stable_task_manager.xml</pre>
+
*'''gamedata\config\text\rus\stable_task_manager.xml'''
  
Открываем task_manager.ltx, в начале видим длинный список заданий, а уж потом сами задания и условия выполнения к ним. Т.е. cначала идет:
+
Открываем '''task_manager.ltx''', в начале видим длинный список заданий, а уж потом сами задания и условия выполнения к ним. Т.е. cначала идет:
  
<pre>
+
<ini>
 
[...]
 
[...]
 
tm_kill_stalker_5
 
tm_kill_stalker_5
Строка 53: Строка 48:
 
tm_kill_stalker_7
 
tm_kill_stalker_7
 
[...]
 
[...]
</pre>
+
</ini>
  
 
А затем то, что нам нужно:
 
А затем то, что нам нужно:
  
<pre>
+
<ini>
 
[...]
 
[...]
 
[tm_kill_stalker_6]
 
[tm_kill_stalker_6]
Строка 87: Строка 82:
 
prior = 1
 
prior = 1
 
[...]
 
[...]
</pre>
+
</ini>
  
 
Рассмотрим структуру этих записей, заодно создав новую:
 
Рассмотрим структуру этих записей, заодно создав новую:
  
* [tm_kill_stalker_7] – наше задание
+
* '''[tm_kill_stalker_7]''' – наше задание
* type = kill_stalker – тип задания, в данном случае – убийство сталкера
+
* '''type = kill_stalker''' – тип задания, в данном случае – убийство сталкера
* community = actor – комьюнити, к которому принадлежит выполняющий задание (странный параметр, в игре используется - везде выставлен равным actor'у)  
+
* '''community = actor''' – комьюнити, к которому принадлежит выполняющий задание (странный параметр, в игре используется - везде выставлен равным actor'у)  
* text = tm_kill_stalker_7_text – описание нашего задания в диалоге
+
* '''text = tm_kill_stalker_7_text''' – описание нашего задания в диалоге
* description = tm_kill_stalker_7_descr – описание нашего задания в PDA
+
* '''description = tm_kill_stalker_7_descr''' – описание нашего задания в PDA
* parent = trader - заказчик
+
* '''parent = trader''' - заказчик
* target = esc_wolf – цель, в данном случае мы собираемся грохнуть Волка
+
* '''target = esc_wolf''' – цель, в данном случае мы собираемся грохнуть Волка
* reward_money = 10000 – сколько денег нам дадут за выполнение
+
* '''reward_money = 10000''' – сколько денег нам дадут за выполнение
* reward_reputation = +3 – повышение/понижение репутации после выполнения задания
+
* '''reward_reputation = +3''' – повышение/понижение репутации после выполнения задания
* reward_rank = 2 – кличество очков ранга, выдаваемых за выполнение
+
* '''reward_rank = 2''' количество очков ранга, выдаваемых за выполнение
* reward_item = vodka, conserva – предметы, выдаваемые в награду за квест
+
* '''reward_item = vodka, conserva''' – предметы, выдаваемые в награду за квест
* time = 86400 – время выполнения квеста
+
* '''time = 86400''' – время выполнения квеста
* prior = 1 – приоритет задания
+
* '''prior = 1''' – приоритет задания
  
Не забываем про PDA. В файл:
+
Не забываем про PDA. В файл '''gamedata\config\gameplay\storyline_info_taskmanager.xml''' добавляем следующие строки:
  
<pre>gamedata\config\gameplay\storyline_info_taskmanager.xml</pre>
+
<xml>
 
+
<article id="tm_kill_stalker_7_descr" name="kill_stalker" article_type="task">
Добавляем следующие строки:
+
 
+
<pre><article id="tm_kill_stalker_7_descr" name="kill_stalker" article_type="task">
+
 
         <text>tm_kill_stalker_7_descr</text>
 
         <text>tm_kill_stalker_7_descr</text>
</article></pre>
+
</article>
 
+
</xml>
Текст на русском для задания нужен? Тогда открываем
+
 
+
<pre>gamedata\config\text\rus\stable_task_manager.xml</pre>
+
  
И туда вгоняем следующие строки:
+
Текст на русском для задания нужен? Тогда открываем '''gamedata\config\text\rus\stable_task_manager.xml''' и туда вгоняем следующие строки:
  
<pre> <string id="tm_kill_stalker_7">
+
<xml>
 +
<string id="tm_kill_stalker_7">
 
<text>Убить Волка</text>
 
<text>Убить Волка</text>
 
</string>
 
</string>
Строка 131: Строка 121:
 
<string id="tm_kill_stalker_7_descr">
 
<string id="tm_kill_stalker_7_descr">
 
<text>Сидрыч заказал убийство Волка</text>
 
<text>Сидрыч заказал убийство Волка</text>
</string></pre>
+
</string>
 +
</xml>
  
'''Важно!''' Эти строки не должны выходить за пределы тегов <string_table> и </string_table>.
+
'''Важно!''' Эти строки не должны выходить за пределы тегов '''<string_table>''' и '''</string_table>'''.
  
 
Вот и все, теперь у Сидоровича появился новый квест - "Убить Волка".
 
Вот и все, теперь у Сидоровича появился новый квест - "Убить Волка".
 +
  
 
==Авторы==
 
==Авторы==

Текущая версия на 14:42, 2 ноября 2011

Описание

Как известно, при разговоре с некоторыми NPC (Сахаров, Бармен, Сидорович, Лукаш, Волк, Шустрый, Бром, Лысый, Охотник и Осведомитель) появляется ветка «есть ли для меня работа?». В целях упрощения создания однотипных квестов, выдаваемых через эту ветку, разработчики создали следующую схему...


Структура однотипных квестов

Сами задания находятся в конфиге gamedata\config\misc\task_manager.ltx.

Цели квестов и условия их выполнения фиксируются в скрипте gamedata\scripts\task_manager.script.

Ветки диалогов, отвечающие за эти задания (например, у Сидоровича) выглядит так:

 
<actor_dialog>tm_trader_dialog</actor_dialog>
<actor_dialog>tm_trader_reward</actor_dialog>
 

Где первый actor_dialog – диалог с выдачей задания, а второй - диалог по заданию и получению награды, либо отказа от выполнения оного. Никто нас насильно его выполнять не заставляет.

При получении задания информация об этом прописывается и в PDA, не забываем об этом. Информация добавляется с помощью файла gamedata\config\gameplay\storyline_info_taskmanager.xml.

Описание задания хранится в файле gamedata\config\text\rus\stable_task_manager.xml.

Всего существует шесть видов подобных заданий:

  • eliminate_lager = уничтожить лагерь
  • defend_lager = защитить лагерь
  • kill_stalker = убить сталкера
  • artefact = найти артефакт
  • monster_part = найти часть монстра
  • find_item = найти предмет

Создаем квест

Для создания дополнительного квеста у Сидоровича нам понадобятся всего три файла:

  • gamedata\config\gameplay\storyline_info_taskmanager.xml
  • gamedata\config\misc\task_manager.ltx
  • gamedata\config\text\rus\stable_task_manager.xml

Открываем task_manager.ltx, в начале видим длинный список заданий, а уж потом сами задания и условия выполнения к ним. Т.е. cначала идет:

 
[...]
tm_kill_stalker_5
tm_kill_stalker_6
tm_kill_stalker_7
[...]
 

А затем то, что нам нужно:

 
[...]
[tm_kill_stalker_6]
type = kill_stalker
community = actor
text = tm_kill_stalker_6_text
description = tm_kill_stalker_6_descr
parent = trader
target = sim_stalker_novice
;reward_money = 1000
reward_reputation = +3
reward_rank = 2
reward_item = af_vyvert, conserva
time = 86400
prior = 1
 
[tm_kill_stalker_7]
type = kill_stalker
community = actor
text = tm_kill_stalker_7_text
description = tm_kill_stalker_7_descr
parent = trader
target = esc_wolf
reward_money = 10000
reward_reputation = +3
reward_rank = 2
reward_item = vodka, conserva
time = 86400
prior = 1
[...]
 

Рассмотрим структуру этих записей, заодно создав новую:

  • [tm_kill_stalker_7] – наше задание
  • type = kill_stalker – тип задания, в данном случае – убийство сталкера
  • community = actor – комьюнити, к которому принадлежит выполняющий задание (странный параметр, в игре используется - везде выставлен равным actor'у)
  • text = tm_kill_stalker_7_text – описание нашего задания в диалоге
  • description = tm_kill_stalker_7_descr – описание нашего задания в PDA
  • parent = trader - заказчик
  • target = esc_wolf – цель, в данном случае мы собираемся грохнуть Волка
  • reward_money = 10000 – сколько денег нам дадут за выполнение
  • reward_reputation = +3 – повышение/понижение репутации после выполнения задания
  • reward_rank = 2 – количество очков ранга, выдаваемых за выполнение
  • reward_item = vodka, conserva – предметы, выдаваемые в награду за квест
  • time = 86400 – время выполнения квеста
  • prior = 1 – приоритет задания

Не забываем про PDA. В файл gamedata\config\gameplay\storyline_info_taskmanager.xml добавляем следующие строки:

 
<article id="tm_kill_stalker_7_descr" name="kill_stalker" article_type="task">
        <text>tm_kill_stalker_7_descr</text>
</article>
 

Текст на русском для задания нужен? Тогда открываем gamedata\config\text\rus\stable_task_manager.xml и туда вгоняем следующие строки:

 
	<string id="tm_kill_stalker_7">
		<text>Убить Волка</text>
	</string>
	<string id="tm_kill_stalker_7_text">
		<text>Достал меня Волк! Понимаешь, достал! Ворует у меня водку, понимаешь, потом идет и клянчит деньги на 
тушенку, потому что новички его не слушают и есть ничего не дают, а вот сойти со своего места и пойти охотится на кабанов, он, 
видите ли, не хочет, ибо ЛЕНЬ! Грохни его, Меченый, я в долгу не останусь.</text>
	</string>
	<string id="tm_kill_stalker_7_descr">
		<text>Сидрыч заказал убийство Волка</text>
	</string>
 

Важно! Эти строки не должны выходить за пределы тегов <string_table> и </string_table>.

Вот и все, теперь у Сидоровича появился новый квест - "Убить Волка".


Авторы

Статья создана: Arhet

Другие места
LANGUAGE