Перейти к контенту

Создание квеста


Рекомендуемые сообщения

@Котошметик,  infoportion_set_complete использовать. С соответствующим поршнем, запускающим второе задание.

 

На примере почти оригинала. Унифицировать, откровенно говоря, лень:

gamedata\config\gameplay\tasks_escape.xml

Скрытый текст

Первое задание:

<game_task id="tutorial_find_artefact">
        <title>tutorial_find_artefact</title>
        <objective>
            ...
Поршень для закрытия первого задания:
            <infoportion_complete>tutorial_artefact_gain</infoportion_complete>
        </objective>
        <objective>
            <text>tutorial_find_artefact_1</text>
            ...
Поршень для закрытия первого задания:
             <infoportion_complete>tutorial_artefact_gain</infoportion_complete>


Вот здесь выдаём поршень, который запустит второе задание:
             <infoportion_set_complete>escape_dynamite_start</infoportion_set_complete>
        </objective>
    </game_task>

 

Второе задание:
<game_task id="esc_dinamit_to_volk">
...
</game_task>

 

gamedata\config\gameplay\info_l01escape.xml

Скрытый текст

 

Поршни первого задания
    <info_portion id="tutorial_artefact_start">
         <task>tutorial_find_artefact</task> -- первое задание взяли
    </info_portion>
    <info_portion id="tutorial_artefact_gain"></info_portion> --первое задание завершили

 

Поршень, запускающий второе задание:
    <info_portion id="escape_dynamite_start">
        <task>esc_dinamit_to_volk</task> -- запуск второго задания
    </info_portion>

 

 

gamedata\sripts\escape_tasks.script

Скрытый текст

Проверяем наличие квестового предмета для первого задания:
...
    if has_alife_info("tutorial_artefact_start") and -- первое задание взяли
          not has_alife_info("tutorial_artefact_gain") and -- но не закончили
        actor:object("af_blood_tutorial") ~= nil -- если предмет взяли, то
    then        
        actor:give_info_portion("tutorial_artefact_gain") -- выдаём поршень закрытия первого задания.
    end

 

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

@Stalkersof ,
dialogs.xml:

Скрытый текст
    <dialog id="tm_barman_dialog" priority="-1">
        <init_func>task_manager.init_barman_task_dialog</init_func>
    </dialog>
    <dialog id="tm_barman_reward" priority="0">
        <init_func>task_manager.init_barman_reward_dialog</init_func>
        <precondition>task_manager.has_active_vendor_task</precondition>
    </dialog>

 

 

game_tasks_by_vendor.xml - вот это первым делом проверить.

Скрытый текст
    <!-- barman -->
    <game_task id="eliminate_lager_barman">
        <title>title</title>
        <objective>
            <text>objective</text>
            <icon>ui_iconsTotal_eliminate_lager</icon>
            <function_complete>task_manager.task_complete</function_complete>
            <function_fail>task_manager.task_fail</function_fail>
        </objective>
    </game_task>

 

 

task_manager.script

Скрытый текст
local parent_by_story = {
    [003] = "trader",
    [500] = "barman",
    [902] = "ecolog",
    [507] = "dolg",
    [707] = "freedom",
    [006] = "wolf",
    [004] = "shustriy",
    [510] = "drunk_dolg",
    [504] = "hunter",
    [518] = "zastava_commander",
    [506] = "petrenko",
    [607] = "lisiy",
    [515] = "mercenary"
}

local story_by_parent = {
    trader                        = 003,
    barman                        = 500,
    ecolog                        = 902,
    dolg                        = 507,
    freedom                        = 707,
    wolf                        = 006,
    shustriy                    = 004,
    drunk_dolg                    = 510,
    hunter                        = 504,
    zastava_commander            = 518,
    petrenko                    = 506,
    lisiy                        = 607,
    mercenary                    = 515
}

 

?

  • Спасибо 1
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

@Stalkersof, параметр "приоритет" (prior = ) в task_manager.ltx у заданий какой? Вроде должно нормально отрабатывать этот момент даже  в оригинале.

Подводные камни:

1. Активным по умолчанию всё равно может быть только 1 квест данного типа (в task_manager.script у GSC даже комментарий есть по этому поводу). Без правки кода одновременно "найти" 2 предмета не получится (2 активных задания одного типа у вендора быть не может).

2. Если не ошибаюсь, это всё пишется в pstore actor-a, а он очень ограничен по размеру, т.е. следить за возможным переполнением. Что там по этому поводу в OGSR сделано - :unknw:.

  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...