SoC. Однотипные квесты — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Loxotron (обсуждение | вклад) |
(→Структура однотипных квестов) |
||
(не показаны 2 промежуточных версий 1 участника) | |||
Строка 2: | Строка 2: | ||
Как известно, при разговоре с некоторыми NPC (Сахаров, Бармен, Сидорович, Лукаш, Волк, Шустрый, Бром, Лысый, Охотник и Осведомитель) появляется ветка «есть ли для меня работа?». В целях упрощения создания однотипных квестов, выдаваемых через эту ветку, разработчики создали следующую схему... | Как известно, при разговоре с некоторыми NPC (Сахаров, Бармен, Сидорович, Лукаш, Волк, Шустрый, Бром, Лысый, Охотник и Осведомитель) появляется ветка «есть ли для меня работа?». В целях упрощения создания однотипных квестов, выдаваемых через эту ветку, разработчики создали следующую схему... | ||
+ | |||
==Структура однотипных квестов== | ==Структура однотипных квестов== | ||
− | Сами задания находятся в конфиге | + | Сами задания находятся в конфиге '''gamedata\config\misc\task_manager.ltx'''. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Цели квестов и условия их выполнения фиксируются в скрипте '''gamedata\scripts\task_manager.script'''. | |
Ветки диалогов, отвечающие за эти задания (например, у Сидоровича) выглядит так: | Ветки диалогов, отвечающие за эти задания (например, у Сидоровича) выглядит так: | ||
− | < | + | <xml> |
− | <actor_dialog>tm_trader_reward</actor_dialog></ | + | <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'''. |
− | + | Описание задания хранится в файле '''gamedata\config\text\rus\stable_task_manager.xml'''. | |
− | + | ||
− | Описание задания хранится в файле | + | |
− | + | ||
− | + | ||
Всего существует шесть видов подобных заданий: | Всего существует шесть видов подобных заданий: | ||
− | * eliminate_lager = уничтожить лагерь | + | * '''eliminate_lager''' = уничтожить лагерь |
− | * defend_lager = защитить лагерь | + | * '''defend_lager''' = защитить лагерь |
− | * kill_stalker = убить | + | * '''kill_stalker''' = убить сталкера |
− | * artefact = найти артефакт | + | * '''artefact''' = найти артефакт |
− | * monster_part = найти часть монстра | + | * '''monster_part''' = найти часть монстра |
− | * find_item = найти предмет | + | * '''find_item''' = найти предмет |
==Создаем квест== | ==Создаем квест== | ||
Строка 41: | Строка 36: | ||
Для создания дополнительного квеста у Сидоровича нам понадобятся всего три файла: | Для создания дополнительного квеста у Сидоровича нам понадобятся всего три файла: | ||
− | + | *'''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 | + | *'''gamedata\config\text\rus\stable_task_manager.xml''' |
− | Открываем task_manager.ltx, в начале видим длинный список заданий, а уж потом сами задания и условия выполнения к ним. Т.е. cначала идет: | + | Открываем '''task_manager.ltx''', в начале видим длинный список заданий, а уж потом сами задания и условия выполнения к ним. Т.е. cначала идет: |
− | < | + | <ini> |
[...] | [...] | ||
tm_kill_stalker_5 | tm_kill_stalker_5 | ||
Строка 53: | Строка 48: | ||
tm_kill_stalker_7 | tm_kill_stalker_7 | ||
[...] | [...] | ||
− | </ | + | </ini> |
А затем то, что нам нужно: | А затем то, что нам нужно: | ||
− | < | + | <ini> |
[...] | [...] | ||
[tm_kill_stalker_6] | [tm_kill_stalker_6] | ||
Строка 87: | Строка 82: | ||
prior = 1 | prior = 1 | ||
[...] | [...] | ||
− | </ | + | </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''' добавляем следующие строки: |
− | < | + | <xml> |
− | + | <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></ | + | </article> |
− | + | </xml> | |
− | + | ||
− | + | ||
− | + | ||
− | + | Текст на русском для задания нужен? Тогда открываем '''gamedata\config\text\rus\stable_task_manager.xml''' и туда вгоняем следующие строки: | |
− | < | + | <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></ | + | </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