AndreySol 215 Опубликовано 3 Ноября 2013 (изменено) Подскажите, где искать начало сюжетной линии игры ? Т.е. начали НИ - пошел ролик с грузовиком и т.д., в каком конфиге\скрипте это прописано. Хочу попробовать не убрать всю оригинальную линейку сюжетных квестов, а просто перевести ее в не сюжетную, оставив обычной квестовой линейкой. Поиском воспользуйся, это древняя задача, которую уже давным давно решили. ColR_iT Изменено 3 Ноября 2013 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 3 Ноября 2013 Стартовый ролик при начале НИ называется intro_game. Я не нахожу поиском это название ни в одном файле распакованой gamedata, кроме как в его описании в ui_movies.xml. Получается, что его запуск - движковый ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 3 Ноября 2013 Старлей Движок запускает не сам ролик, а так называемый tutorial Уж не так-ли этот самый туториал запускается - game.start_tutorial("intro_game") ?Если так, тогда хоть в каком-то файле папки gamedata поиском я бы нашел эту строчку. А ее нет. Что скажете ? во время которого игра ставится на "Паузу" чет я сильно сомневаюсь .... Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 14 Ноября 2013 Вопрос по добавлению задания(task). В файл tasks_escape.xml добавляю новое задание, текстовые описания подзаданий прописываю в text\rus\string_table_tasks_escape.xml. Но движок их не видит - после активации задания, в ПДА вместо текста отображаются идентификаторы этого текста. Т.е. пункты подзаданий выглядят примерно так: kill_bandits_atp_0 kill_bandits_atp_1 kill_bandits_atp_2 Синтаксис проверил несколько раз, ошибок нет. В чем может быть причина ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 8 Декабря 2013 (изменено) чтобы "через логику вызывать скрипты из сторонних файлов" требуется доработанный скрипт 'xr_logic', и он в Народной Солянке доработан под это. А можно ссылочку какую-нить на этот доработанный файл ? А то НС нету, а качать ее ради одного файла ... ====================================================== Лови - xr_logic.script из последней официальной допы Соли. BFG Изменено 8 Декабря 2013 пользователем BFG 1 Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 10 Декабря 2013 Вопрос по игровым заданиям (task). Знаю, что используя класс CGameTask можно выдать задание с ограничением по времени выполнения. А можно-ли сделать это-же, но только в xml-описании задания ? Из всех аттрибутов для тега game_task в исходниках используется только prio. Возможно есть тег time ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 16 Декабря 2013 v 1.0005 В диалоге Шустрого, при его спасении из бандитского плена, есть возможность взять у него наводку на схрон с артефактом. На карте в ПДА появляется отметка места "оставленного Шустрым тайника". В диалоге, в соответствующей фразе, выдается инфо-порция: <give_info>esc_shustryi_secret</give_info>. Сама инфо-порция прописана в info_l01escape.xml обычным образом: <info_portion id="esc_shustryi_secret"></info_portion>. Вопрос: а как метка на карте в ПДА появляется ? Был-бы в инфо-порции какой-нить action прописан, в котором метка ставится, а так нет ничего ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 17 Декабря 2013 (изменено) Comador Если я правильно разобрался, то связка ф-ций: info_callback в bind_stalker.scipt -> process_info_portion в level_tasks.scipt -> process_info_portion в скрипте локации из таблицы level_scripts в начале level_tasks.scipt предназначена для выполнения нужных действий на локациях при активации инфо-порций ? Если я правильно понял, то тогда сразу непонятка - в level_tasks.scipt в ф-ции process_info_portion присутствует следующее: for k, v in pairs(level_scripts) do if v.process_info_portion(info_id) then return end end т.е если process_info_portion из скрипта локации вернет true, то перебор таблицы прерывается. Просматривая имеющиеся в таблице скрипты, обнаружил в darkvalley_tasks.script: function process_info_portion(info_id) if info_id == "val_sos_give_tip" then level_tasks.add_location(422, "val_sos_location") elseif info_id == "val_sos_actor_near_wounded" then level_tasks.remove_location(422, "val_sos_location") elseif info_id == "val_show_zones" then level_tasks.add_location(427, "crlc_big", "val_zone_bandits_hint") level_tasks.add_location(428, "crlc_big", "val_zone_monolith_hint") level_tasks.add_location(429, "crlc_mdl", "val_zone_robbers_hint") level_tasks.add_location(430, "crlc_small", "val_zone_south_gate_hint") elseif info_id == "val_show_pipe_zone" then level_tasks.add_location(431, "crlc_mdl", "val_zone_pipe_hint") elseif info_id == "val_show_farm_zone" then level_tasks.add_location(435, "crlc_big", "val_zone_farm_hint") else return false end return true -- !!!! end Получается, что после обработки этого скрипта дальнейший перебор таблицы будет тупо прерван ? И нарушится обработка активации инфо-порций для других локаций ? Изменено 17 Декабря 2013 пользователем ColR_iT Не цитируй предыдущие посты целиком. 1 Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 17 Декабря 2013 (изменено) Там не только метки расставляются - для Военных складов есть и управление инфо-порциями... перебирать дальше таблицу не имеет смысла Видно не всегда - в escape_tasks function process_info_portion(info_id) --' пометки на карте if info_id == "esc_tutorial_secret_place" then level_tasks.add_location(025, "green_location", "tutorial_secret_place1") elseif info_id == "esc_tutorial_secret_place_found" then level_tasks.remove_location(025, "green_location") elseif info_id == "esc_kolyan_lost" then level_tasks.add_location(028, "crlc_big", "esc_mill") elseif info_id == "esc_kolyan_found" then level_tasks.remove_location(028, "crlc_big") elseif info_id == "esc_bridge_soldiers" then level_tasks.add_location(031, "crlc_big", "soldiers_bridge") elseif info_id == "esc_tutorial_secret" then level_tasks.add_location(026, "crlc_small", "tutorial_secret") elseif info_id == "esc_tutorial_secret_find" then level_tasks.remove_location(026, "crlc_small") elseif info_id == "esc_shustryi_secret" then level_tasks.add_location(027, "crlc_small", "tutorial_secret_shustryi") elseif info_id == "esc_shustryi_secret_find" then level_tasks.remove_location(027, "crlc_small") return false end end прерывания дальнейшего перебора таблицы похоже не будет Изменено 17 Декабря 2013 пользователем AndreySol 1 1 Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 17 Декабря 2013 object_flags = 0x==3e здесь ошибка Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 25 Мая 2014 (изменено) Есть такой фрагмент в работах гулага блок-поста на Кордоне, он для трех вояк, что патрулируют на дороге перед самим блок-постом: t = { section = "logic@esc_blockpost_patrol1", idle = 0, prior = 8, state = {0}, position_threshold = 100, online = true, in_rest = "", out_rest = "esc_blockpost_patrol_restrictor" } table.insert(sj, t) t = { section = "logic@esc_blockpost_follower1", idle = 0, prior = 7, state = {0}, position_threshold = 100, online = true, in_rest = "", out_rest = "esc_blockpost_patrol_restrictor" } table.insert(sj, t) t = { section = "logic@esc_blockpost_follower2", idle = 0, prior = 7, state = {0}, position_threshold = 100, online = true, in_rest = "", out_rest = "esc_blockpost_patrol_restrictor" } table.insert(sj, t) В load_states прописано следующее: if level.get_time_hours() >= 6 and level.get_time_hours() <= 22 then ............... return 0 -- день else return 1 -- ночь end Но наблюдая за этой группой НПСов в момент наступления 22:00 игрового времени увидел, что они как ходили патрулем, так и ходят. И только в 23:00 игрового времени они снимаются с патрулирования и уходят на территорию блок-поста на другие работы. Почему так происходит ? В чем может быть косяк ? <= 22 - это, в том числе, и 22:59:59 dc Изменено 25 Мая 2014 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 26 Мая 2014 Мины, на двух минных полях возле блок-поста вояк на Кордоне, отмечены некими вертикальными палочками, а так-же если попасть болтом в мину раздается щелчек. Как убрать щелчек я нашел - закомментил параметр entrance_sound в zone_minefield.ltx. А вот с палочками не могу разобраться, подскажите как их убрать, сделав мины полностью невидимыми ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 26 Мая 2014 Добавил для теста инфо-порцию в info_l01escape.xml <info_portion id="test_proceed"></info_portion> <info_portion id="test_complete"> <disable>test_proceed</disable> </info_portion> Далее сваял такой вот код: local flag = falsefunction test() local npc = db.actor if not flag then npc:give_info_portion("test_proceed") flag = true else npc:give_info_portion("test_complete") end local text = "" if npc:has_info("test_proceed") and npc:has_info("test_complete") then text = "test_proceed - вкл, test_complete - вкл" elseif npc:has_info("test_proceed") and npc:dont_has_info("test_complete") then text = "test_proceed - вкл, test_complete - выкл" elseif npc:dont_has_info("test_proceed") and npc:has_info("test_complete") then text = "test_proceed - выкл, test_complete - вкл" elseif npc:dont_has_info("test_proceed") and npc:dont_has_info("test_complete") then text = "test_proceed - выкл, test_complete - выкл" end news_manager.send_tip(db.actor, text, nil, nil, 30000) end запускаю код по нажатию кнопочки в инвентаре актора(ГГ). При первом вызове вижу: "test_proceed - вкл, test_complete - выкл" при втором: "test_proceed - вкл, test_complete - вкл" Получается, что тег <disable>test_proceed</disable> не срабатывает ? Или я чет не понял в этой системе ? Просветите... Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 26 Мая 2014 Ну, на вскидку, для начала - приоритеты у всех работ одинаковые. Попробуй с ними покрутить. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 26 Мая 2014 Как несколько нпс занимали одну и ту-же работу, так и занимают Ну так подсказали-ж, что у тебя несколоко раз загружаются одинаковые работы - logic@predbannik_citi_kamper_night, вот у тебя несколько НПСов и трутся по одному маршруту или на одной точке. Как игнорировались работы, так и игнорируются Если у тебя кол-во НПС соответствует кол-ву работ, то поробуй упростить логику в тех работах которые как ты думаешь не занимаются. К примеру сделай минимальную логику типа кампа, чтоб заняв ее, НПС просто уселся на точке. Сразу станет понятнее что занимается а что нет. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 26 Мая 2014 (изменено) Насчет ф-ции best_enemy() хочу спросить. Она возвращает так скажем "худшего врага", если таковой имеется для НПСа ? Если да, то предусмотренно ли какое-то "забывание" НПСом этого врага. Если такое возможно - что за ф-ции, или параметры или как это делается\настраивается ? in и out растрикторы, прописанные в работах гулага, будут действовать на НПСа при переходе последнего в комбат-состояние ? Изменено 26 Мая 2014 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 27 Мая 2014 @UPDAT3 Помог, все нормально - мин не видать и не слыхать.... Насчет best_enemy - я имел в виду под "забыванием" именно наличие некой памяти у НПСов на то что он видел, слышал, получил хит и т.д. Собственно в связи с чем вопрос возник: в гулаге блок-поста вояк на Кордоне в загрузке состояний есть такой фрагмент for k,v in pairs(gulag.Object) do if v ~= true and v:best_enemy() ~= nil then gulag.alarm_start = game.get_game_time() actor:give_info_portion("esc_blockpost_alarm") return 2 -- тревога end end В игре этот фрагмент отрабатывает так, что если актера(ГГ) увидел кто-то из жителей гулага, то гулаг переходит в состояние "тревога". Пробовал так - покажусь комуто из вояк, срабатывает переход в тревожное состояние. Я разворачивался и драпал подальше. И сидел ждал, когда тревога закончится. Так вот травога не выключается даже через несколько игровых часов. Способов возврата гулага в нормальное состояние оказалось всего два: 1 - это перевести его в офф-лайн, тогда отработает v ~= true и тревога вырубится через 5 игровых минут 2 - убить того\тех НПСов у которых актор "запомнился" как best_enemy. Конкретно к best_enemy - получается что у НПСа этот параметр сохраняется очень долго, судя по всему навсегда, пока НПС жив. Или нет ? В Справочнике.. нашел: <таблица объектов not_yet_visible_object> not_yet_visible_objects() -– объекты из памяти, которые видны или собираются стать видны.<таблица объектов CVisibleObject> memory_visible_objects()–- объекты из памяти, которые видны или были когда-то видны.<таблица объектов CSoundObject> memory_sound_objects() -– объекты из памяти, которые слышны или были когда-то слышны.<таблица объектов CHitObject> memory_hit_objects() -– объекты из памяти, которые наносят или наносили повреждения.void enable_memory_object(game_object*, bool enable) -- активизировать/деактивизировать объект из памяти похоже, это то что я искал ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 27 Мая 2014 Несколькими постами выше есть информация о том что НПСы соблюдают свои рестрикторы в состоянии "комбат". Тестируя все тот же гулаг блок-поста на Кордоне, получил такие результаты: для трех патрульных, что ходят туда-сюда по дороге к блок-посту в работах им прописано in_rest = "", out_rest = "esc_blockpost_patrol_restrictor" посмотрел в LE этот рестриктор, получается что ближняя к Деревне новичков его сторона расположена со стороны блок-поста перед бугром, который закрывает Дн от блок-поста. Изменил для пробы последнюю точку пути для этих патрульных, сделав ее заведомо за груницей рестриктора, понаблюдал - доходят до края рестриктора, и топчутся там, пытаясь идти дальше. Затем разворачиваются и идут обратно, продолжая отрабатывать логику. Т.е., похоже, на лицо действие рестриктора. Затем спровоцировал этот патруль - они начали шмалять по актеру(ГГ), а я начал отступать назад и левее. В результате эти три НПСа (а за ними и остальные потянулись), спокойно проигнорировав границу рестриктора дошли за мной, шмаляя в меня, аж до камней, что возле границы локи, напротив моста возле которого раненый валяется по квесту флешки Шустрого. Вывод - в состоянии "комбат" эти НПСы-военные плевать хотели на рестрикторы в работах, на которых они находятся в гулаге. В чем дело, как это понимать ? Может приоритет у этих рестрикторов ниже перехода в "комбат" ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 27 Мая 2014 (изменено) Вторая ошибка - в связке xr_combat* + xr_logic + xr_conditions - ее в соседней теме как-то Артос подробно расписывал: получается enemy_object, и сохраняется. Если это был актор - неписи "пожизненно" охотятся на актора (ну, классика жанра, когда стоит толпа, уткнувшись стволами в землю, или, наоборот, в небо. Если это был другой непись или монстр - когда он вдруг уйдет в офлайн или попадет в аномалию - виснем, и через некоторое время вылетаем по "stack overflow". А каково решение ? в соседней теме как-то Артос подробно расписывал можно точнее ? Попробую поискать. Вот когда именно попробую - не знаю. Решение - исправлять. dc Изменено 27 Мая 2014 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 2 Июня 2014 <snd_config>characters_voice\human_01\</snd_config> а это ты откуда взял ? Я с помощью TextPad поиском по содержимому файлов не нашел эту строку ни в config ни в scripts ни в распакованном спавне. Поделиться этим сообщением Ссылка на сообщение