Купер 2 869 Опубликовано 17 Декабря 2020 @Котошметик, 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 Поделиться этим сообщением Ссылка на сообщение
Купер 2 869 Опубликовано 16 Ноября @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 Поделиться этим сообщением Ссылка на сообщение
Купер 2 869 Опубликовано 17 Ноября @Stalkersof, параметр "приоритет" (prior = ) в task_manager.ltx у заданий какой? Вроде должно нормально отрабатывать этот момент даже в оригинале. Подводные камни: 1. Активным по умолчанию всё равно может быть только 1 квест данного типа (в task_manager.script у GSC даже комментарий есть по этому поводу). Без правки кода одновременно "найти" 2 предмета не получится (2 активных задания одного типа у вендора быть не может). 2. Если не ошибаюсь, это всё пишется в pstore actor-a, а он очень ограничен по размеру, т.е. следить за возможным переполнением. Что там по этому поводу в OGSR сделано - . 1 Поделиться этим сообщением Ссылка на сообщение