Здраствуйте в этом уроке мы научимся делать квесты.
Для того чтобы приступить к созданию квеста лучше иметь все для них (диалоги, нпс и т.д)
Все квесты есть в gamedata/configs/misc/tm_***.ltx
tm - расшифровывается как task manager или же менеджер заданий
*** - название локации
В чн квесты однопунктовые
Создаем квест
откроем tm_marsh.ltx и добавляем в общий список [list_tm_marsh] добавм пункт:
mar_kill_dolg
в итоге будет так
[list_tm_marsh]
mar_kill_dolg
А в конце документа добавляем новую секции:
[mar_kill_dolg]
type = storyline
task_type = additional
prior = 10
icon = ui_mt_image_attack_tower
target_cond = true
name = mar_kill_dolg_name
text = mar_kill_dolg_text
condlist_0 = {+dolg_die} complete
target_story_ids = 314
auto_name = false
auto_faction = true
Ну что ж давайте разберем что тут обозначает
[mar_kill_dolg] ;наш квест т.е. пишим здесь название
type = storyline ; тип: сюжетная линия (тут можно указать "Принести предметы, уничтожить смарт" итд...)
task_type = additional ;еще один тип (дополнительный) если написать сюжетный будет отображаться как сюжетка (метка на карте)
prior = 10 ; приоритет чем выше тем важнее задание
icon = ui_mt_image_attack_tower ;иконка можно не менять как ни крути будет одна стандартная , иконка будет зависеть только от типа задания
target_cond = true ;Проверка на возможность выдать задание. . По умолчанию – true
name = mar_kill_dolg_name ; имя
text = mar_kill_dolg_text ; описание при наводке курсором на маркер в карте ПДА
condlist_0 = {+kill_dolg_pogovoril} complete ; условие выполнения т.е. если получим инфопоршень kill_dolg_pogovoril то задание выполниться
target_story_ids = 314 ;story_id т.е. на кого будет указывать метка, метки 314 не существует так что пишите то что вам надо
auto_name = false ;не разобрался с этим параметром
auto_faction = true ;и с этим тоже
Эффекты
on_complete = %=give_inited_task(storyline:mar_kill_dolg_revard:csky)%
После выполнения задания (on_complete) мы получим квест (give_inited_task) его тип storyline а названиеmar_kill_dolg_revard а также
группировка csky (можно брать функции из xr_effect.script что намного удобнее)
Можно вместо on_complete писать on_fail или on_reversed тут все понятно, действие при провале или отмены
Выдаем квест
есть 2 способа выдачи квеста которых я знаю
1-й через активации этой функции в диалоге
function give_task_csky()
xr_effects.give_inited_task(nil, nil, {"storyline", "mar_kill_dolg", "csky"})
end
storyline - тип
название квеста mar_kill_dolg
csky - группировка
2-й способ которым пользуются ПЫС . Делаем рестриктор в зоне получения инфопоршня
Логика рестриктора:
[logic]
active = sr_idle@line_0
[sr_idle@line_0]
on_info = {+инфопоршень} nil %=give_inited_task(storyline:mar_kill_dolg:csky)
это укороченный вариант (см. файлы configs\scripts\лока\лока_quest_line)
Однако в обоих случаях работает функция из xr_effects
Русифицируем текст
открываем любой файл в configs/text/rus/
и пишем туда
<string id="mar_kill_dolg_name">
<text>Убить долговца</text> --название квеста
</string>
<string id="mar_kill_dolg_text">
<text>Надо убить долговца он сразу же стал подозрительным</text> --описание
</string>
русификация текста закончена.
Добавляем возможность провалить отменить
после
condlist_0 = {+kill_dolg_pogovoril} complete
пишем
condlist_1 = {+mar_psih_died} fail
при получении инфопоршня провал
condlist_2 = {+mar_end_history} reversed
это означает отмену задания
Другие способы выполнения, провала, отмены
помимо инфопоршней в чн довели до ума некоторые возможности.
Для квестов найти
condlist_1 = {=actor_has_item(bread) completed
еще интересная вещь
condlist_1 = {=actor_on_level(agroprom) reversed
актор на агропроме например и отмена задания
Важно знать!
Кондлисты (condlist_*) должны отличаться числом например condlist_0, condlist_1, condlist_2
Кондлисты лучше использовать в алфовитном порядке
способ выполнения любой например провал задания если на агропроме {=actor_on_level(agroprom) fail
Автор:saintsergei
Благодарю за просмотр и удачи в моддинге.
Отредактировано saintsergei (2017-03-25 21:33:27)