Здраствуйте в этом уроке мы научимся делать квесты.

Для того чтобы приступить к созданию квеста лучше иметь все для них (диалоги, нпс и т.д)

Все квесты есть в 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)