Это популярное сообщение. Kirgudu 1 204 Опубликовано 10 Февраля Это популярное сообщение. Поделиться Опубликовано 10 Февраля (изменено) ИНСТРУМЕНТ Авторы: @Kirgudu, @monk Краткое описание: реинкарнация Повелителя зоны Платформа: Тени Чернобыля (1.0006 и 1.0004), OGSR x64 v2.1.416 (+), Чистое небо (1.5.10), Зов Припяти (1.6.02) Ссылка на общее хранилище: https://disk.yandex.ru/d/iK_zA5HmIreu-g Дата сборки: 2024-10-31 Скрытый текст 1. В подпапке Ready - готовые комплекты для: оригинальных версий Теней Чернобыля (1.0006 и 1.0004) и Чистого Неба (1.5.10) и Зова Припяти (1.6.02); OGSR x64 v2.1.416; Объединённого Пака v2.2 patch 2023-03-15; Фотографа оригинального и Фотографа selfmade. 2. The.Tool.SoC.Constructor.rar, The.Tool.CS.Constructor.rar и The.Tool.CoP.Constructor.rar - архивы с конструктором Инструмента для модов на платформах ТЧ/OGSR, ЧН и ЗП соответственно. 3. readme.SoC.txt, readme.CS.txt и readme.CoP.txt - описание и инструкция для ТЧ, ЧН и ЗП соответственно. Скрытый текст Да, этот инструмент во многом вдохновлён именно Повелителем зоны, но и не только. В каждом моде, в работе над которым мне довелось принять участие, авторами всегда добавлялись те или иные средства управления героем, объектами, временем, событиями и прочими игровыми составляющими. Это удобно, поскольку позволяет разработчику быстро проверить ту или иную правку для мода без необходимости проходить всю игру вплоть до того момента, когда правка должна проявиться. Вот и в моде STALKER CS Final Stroke (новое название бывшего OGSM CS 1.8 CE Fixes) от @monk такие средства тоже есть, они появились там ещё во времена первого OGSM, и с тех пор постоянно использовались. Примерно тогда же, может раньше, вышел Повелитель. Спустя ещё какое-то время в OGSM добавился механизм выбора произвольной точки и телепортации на неё с помощью облёта. Был реализован показ на худе отладочной информации об игроке, затем добавлен вывод вместо подсказки информации об НПС, на которого смотрит прицел. Всё это было интегрировано в Final Stroke и с разной частотой и успехом использовалось при работе над дальнейшим улучшением мода. В какой-то момент возникла мысль весь этот зоопарк отладочных средств от разных авторов объединить в одном новом моде, привести его в современный вид, добавить удобства и, возможно, каких-то новых возможностей, ранее никем не реализованных. Результат перед вами, причём теперь не только для Чистого Неба, но и для Теней Чернобыля и Зова Припяти. А поскольку с его помощью можно многое сделать, подкрутить или починить, мод получает соответствующее рабочее название: Инструмент. Скрытый текст Мод имеет модульную структуру, при которой каждый раздел Инструмента реализован в своём, отдельном, скриптовом файле, подключаемом к общему файлу-менеджеру. Настройка производится в конфигурационном файле configs\misc\tool.ltx, а именно: В секции [settings] можно настроить раздел по умолчанию, включить или выключить сохранение состояния диалога, а также настроить расположение кнопок разделов. В секции [tabs] можно каждый из модулей включить или выключить, поменять их порядок, расположение кнопки в диалоге (см. скриншоты ниже). В секции [key_bindings] можно настроить клавиши, которые будут автоматически назначены для внутриигрового вызова диалога Инструмента, а также показа отладочной информации. Ниже идёт описание каждого модуля в отдельности. Скрытый текст Раздел предназначен для быстрого перемещения в разные точки Зоны. Дополнительная настройка модуля: configs\misc\tool\teleport.ltx Можно выбрать целевую локацию (список слева), в пределах каждой локации доступен как список стандартных смартов, так и список произвольных точек, заранее перечисленных в конфигурационном файле модуля. Перемещение происходит по нажатию кнопки Перейти или при двойном клике мышью на выбранную точку в списке. Телепорт - особый подраздел в списке локаций слева, предназначенный для быстрого телепорта по произвольным координатам. Их можно вписать в соответствующие поля вручную, взять из текущего положения игрока а также воспользоваться режимом облёта камеры (кроме ЗП), нажав на "глаз", найти нужную целевую точку, выйти из режима облёта путём нажатия на клавишу Esc и автоматически получить конечные координаты облёта после чего произвести перемещение по указанным координатам, нажав кнопку Перейти. Произвольные точки можно сохранять и удалять, а также восстанавливать из них сохранённые координаты. Точки сохраняются в отдельном конфиге: configs\misc\tool\teleport_custom.ltx (вариант для Чистого Неба, Зова Припяти или Теней Чернобыля с поддержкой пространства имён IO) или очищаются после загрузки (вариант для оригинальных Теней Чернобыля без поддержки IO). Список произвольных точек поддерживает двойной клик мышью на элементе списка, при этом координаты выбранной точки будут подставлены в соотв. поля аналогично нажатию кнопки Загрузить. Также доступен автоматический прыжок героя на указанное в специальном поле расстояние в направлении вперёд, назад, влево или вправо от текущего положения. Таким образом можно, например, выйти за забор базы Чистого Неба на Болотах, не прибегая к услугам проводника и не используя другие способы перемещения. В варианте Инструмента для Чистого Неба особенный смысл имеет поле "Симулировать историю при смене локации". В некоторых случаях при переходе на другую локацию разработчику мода бывает необходимо воспроизвести также все события, которые должны были предшествовать этому переходу в том случае, если бы игра шла штатным образом. Также бывает, что при быстром телепорте в точку, находящуюся рядом с враждебными игроку НПС, из-за того, что симуляция войны группировок ещё не была запущена, происходит сбой логики этих НПС, конфликт, вызванный враждебным к игроку отношением с одной стороны, и отсутствием симуляционных инструкций с другой. Во многих случаях это приводит к вылету. Чтобы избежать симуляционного вылета, или чтобы воспроизвести плавное течение истории при быстром переходе, для этого и следует ставить отметку в поле "симулировать историю". Поиск объекта - ещё один специальный подраздел, позволяющий осуществить поиск объектов по их серверному или человекопонятному имени, а также переместиться к выбранному объекту. Поиск можно осуществить по всем локациям или только по текущей, а также с учётом или без учёта содержимого любых контейнеров. Для поиска доступны: НПС (сталкеры и торговцы), монстры, оружие, броня, патроны, медикаменты, еда, детекторы и артефакты. Скрытый текст Раздел предназначен для создания разных игровых объектов в разных состояниях в инвентаре героя или в окружающем мире. Дополнительная настройка модуля: configs\misc\tool\spawn.ltx Предустановленный список типов и секций спавна содержится в конфигурационном файле модуля. В диалоге доступен поиск нужного предмета по секции или его наименованию. НПС (персонажей и монстров) можно создавать как живыми, так и виде трупов. Предметы (броню, оружие, боеприпасы, артефакты и т. д.) можно создавать в окружающем мире или складывать в инвентарь, также можно указывать их кол-во. Аномалиям при их создании можно задать радиус. По умолчанию для спавна объектов в окружающем мире берётся точка в нескольких метрах впереди текущего положения героя, автоматически проставленные в соотв. полях координаты можно изменить вручную или воспользоваться стрелками автоматического сдвига координат на указанное расстояние в одном из четырёх направлений относительно направления взгляда. В варианте Инструмента для Чистого Неба добавлена возможность создавать отряды, список секций которых автоматически читается из распакованных конфигурационных файлов \configs\misc\squad_descr*.ltx. Создание отряда будет происходить в пределах выбранной территории (смарта) из списка всех зарегистрированных игровых территорий. При желании можно автоматически выбрать ближайшую к игроку территорию, нажав на кнопку "Найти рядом". Во избежание вылетов из игры принят ряд условий, соблюдающихся при создании отряда, а именно: одна территория (смарт) не может быть заселена отрядами, принадлежащими к разным группировкам, даже дружественным друг к другу; на одной территории не может быть создано отрядов больше, чем максимальное количество отрядов, которые территория может вместить; отряд с определённым идентификатором секции не может быть создан, если в игре уже существует отряд с аналогичным идентификатором. При возникновении одного из этих условий игроку будет выведено соответствующее предупреждение, а в случае с дублем секции отряда - диалог с выбором дальнейших действий. Скрытый текст Раздел предназначен для просмотра полного списка предметов, находящихся в настоящий момент в инвентаре героя (включая слоты), а также их состояния (цветовая дифференциация). Каждый предмет можно удалить (произойдёт полное удаление объекта из игры), для оружия и брони можно просмотреть текущее состояние и установить новое. Для любого предмета, состояние которого изменяется, можно поставить отметку в поле Фиксировать - тогда выбранное значение будет заморожено и не изменится в процессе игры вплоть до ближайшей загрузки или до момента, когда флажок Фиксировать будет снят и снова нажата кнопка Установить, либо когда предмет станет недоступен онлайн в результате продажи, удаления или перемещения за пределы Alife-радиуса. Скрытый текст Раздел предназначен для управления взаимоотношениями героя со всеми группировками, присутствующими в игре. В группировку можно вступить (только ЧН), отношение группировки к герою при этом автоматически изменится на дружеское. Из группировки можно выйти, отношение при этом изменится на нейтральное (если не произошло одновременного вхождения во враждебную группировку, в этом случае и отношение сменится на враждебное). Кроме того, можно изменить числовое отношение любой группировки к игроку. Скрытый текст Раздел предназначен для управления личными параметрами героя. Дополнительная настройка модуля: configs\misc\tool\actor.ltx Доступны для изменения: деньги, ранг, репутация, здоровье, пси-здоровье, энергия, уровень облучения (радиация). При установке значений здоровья, пси-здоровья, энергии и радиации можно поставить отметку в соотв. поле Фиксировать - тогда выбранное значение будет заморожено и не изменится в процессе игры вплоть до ближайшей загрузки или до момента, когда флажок Фиксировать будет снят и снова нажата кнопка Установить. Кнопка "ЧИТБОКС" служит для автоматического создания в инвентаре игрока заранее составленного списка предметов. Скрытый текст Раздел предназначен для управления игровыми инфопорциями. В варианте Инструмента для оригинальных Теней Чернобыля список доступных инфопорций представлен в конфигурационном файле config\misc\tool\info.ltx и взят из файлов оригинальной игры config\gameplay\info_*.xml. В случае Инструмента для Чистого Неба или Теней Чернобыля с модифицированным движком, поддерживающим пространство имён IO, необходимо иметь в виду один важный момент. Для чтения списка инфопорций применяется скриптовый xml парсер, который умеет работать только с распакованными физическими копиями xml, подробнее см. тут: Попытка прочесть файлы, находящиеся в игровых архивах, на ванильном движке приводит к немедленному вылету. Поэтому для того, чтобы иметь возможность прочесть инфопорции, необходимо все xml файлы, их содержащие, распаковать из игровых архивов и положить в папку \configs\gameplay\. При этом полный список инфопорций, который можно прочитать из этих файлов, очень большой. Если читать их в UI список полностью, это приводит к неоправданным задержкам в отрисовке диалога, доходящим до десятка секунд и более. Чтобы этого избежать, был добавлен фильтр, требующий ввода трёх и более символов для показа отфильтрованного списка инфопорций. Можно вводить любую часть наименования, поиск будет произведён по вхождению в любой части строки. Статус инфопорций в списке будет показан цветом (выданные - зелёные). Любую инфопорцию можно выбрать и затем выдать или отменить, воздействуя таким образом на течение сюжетной линии. Список инфопорций поддерживает двойной клик мышью на элементе списка, при этом состояние выбранной инфопорции будет переключено на противоположное: выданная отменится, а невыданная будет активирована. Скрытый текст Раздел предназначен для быстрой установки любого типа погоды, включая характерные для выброса. Предустановленный список погодных типов содержится в конфигурационном файле модуля: configs\misc\tool\weather.ltx Список погоды поддерживает двойной клик мышью на элементе списка, при этом выбранная погода будет активирована аналогично действию кнопки Установить. Нажатие кнопки Выброс приведёт к немедленному запуску катаклизма вместе со всеми сопровождающими его событиями (изменение заданий, поиск укрытия и т. д.). Скрытый текст Раздел предназначен для второстепенных или чисто информационных вещей и в настоящее время содержит в себе три подраздела. Дополнительная настройка модуля: configs\misc\tool\misc.ltx Время: можно установить любой таймфактор (но имеются предельные границы), ускорить или замедлить с учётом выбранного коэффициента, а также сбросить на игровое значение по умолчанию. Музыка: можно принудительно запустить на проигрывание любой музыкальный фрагмент из списка, предустановленный список содержится в конфигурационном файле модуля. Доступен двойной клик мышью на элементе списка, при котором выбранный музыкальный фрагмент будет запущен или остановлен в зависимости от его текущего состояния. Видео: можно принудительно запустить на проигрывание любой видео фрагмент из списка, предустановленный список содержится в конфигурационном файле модуля. Доступен двойной клик мышью на элементе списка, при котором выбранный видео фрагмент будет запущен аналогично нажатию кнопки Запустить. Скрытый текст Порядок установки готового комплекта Содержимое соответствующего архива записать в папку игры с заменой имеющихся файлов (если есть).Порядок работы с конструктором для модов 1. Содержимое папки gamedata_REPLACE из архива скопировать как есть в папку gamedata игры. Если Инструмент устанавливается поверх другого мода, в который уже интегрированы модули от @Artos (модуль нет-пакетов m_netpk, вспомогательные модули lua_extension и lua_helper) и/или кейлоггер от @Charsi (модуль keylogger) - перезаписать их поверх или, если имеющиеся файлы изменены после авторов, совместить правки. 1.1. Если Инструмент устанавливается для Теней Чернобыля, но при этом не на движке OGSR, содержимое папки gamedata_EXCEPT_OGSR из архива скопировать как есть в папку gamedata игры. Напротив, в OGSR модуль m_netpk не только интегрирован, но и модифицирован, поэтому его замена модулем из Инструмента в OGSR запрещена. 2. Вытащить из игровых архивов и записать в папку gamedata\configs\gameplay файлы инфопорций info_*.xml, а в папку gamedata\configs\misc (кроме STALKER Тени Чернобыля) - конфигурационные файлы отрядов squad_descr*.ltx. В архиве Инструмента в папках gamedata_OPTIONAL\configs\gameplay и gamedata_OPTIONAL\configs\misc (кроме STALKER Тени Чернобыля) лежат файлы из оригинальной игры - можно взять их, но соответствие списка инфопорций и секций отрядов вашему моду в таком случае не гарантируется. 3. В отдельные файлы оригинальной игры или вашего мода внести изменения согласно примерам, перечисленным в папке архива gamedata_ADD. А именно: Скрытый текст 3.1. В файле gamedata\scripts\_g.script в конце функции start_game_callback() перед закрывающим end добавить: -- for The Tool xr_s.init() -- портирование фреймворка событий из STALKER CS lua_helper.attach() -- если вспомогательный модуль Артоса ещё не подключён m_netpk.attach() -- не требуется (но и не мешает при повторном подключении) для OGSR (m_netpk уже есть в составе) if keylogger then keylogger.init() end -- если кейлоггер Чарси ещё не подключён if tool then tool.init() end -- обязательно Если вспомогательные модули Артоса ещё не подключены, в файле gamedata\scripts\_g.script в самом конце добавить: -- for The Tool --/------------------------------------------------------------------- --/#+# initialize modules [lua_helper/lua_extensions] --/------------------------------------------------------------------- prefetch("lua_extension") --/#+# подключение модуля расширений Lua prefetch("lua_helper") --/#+# подключение модуля 'общих' хелп-функций --/ ------------------------------------------------------------------ --/ print-log (вывод отладочной информации) --/------------------------------------------------------------------- local console --/ функция вывода сообщения в игровую консоль to_log = function(fmt,...) if not console then console = get_console() end console:execute("load ~:"..string.exformat(fmt,...)) end --/------------------------------------------------------------------- --/ Принудительное прерывание игры при фатальных ошибках --/------------------------------------------------------------------- abort = function(fmt,...) to_log(string.rep("~",86)) to_log("[error]ABORT CALLED:\n" .. string.exformat(fmt, ...)) to_log("ATTENTION! Game is interrupted! The information in lines above.") to_log(string.rep("~",86)) get_console():execute('flush') exit() --/#!# interrupt game in case of fatal errors end --/ ------------------------------------------------------------------ 3.2. В файле gamedata\scripts\bind_stalker.script в конце функции actor_binder:net_spawn(data) перед конечным return true добавить: -- for The Tool xr_s.on_game_load() В конце функции actor_binder:net_destroy() перед закрывающим end добавить: -- for The Tool xr_s.on_actor_destroy() В конце функции actor_binder:update(delta) перед закрывающим end добавить: -- for The Tool xr_s.on_actor_update(delta) В самом начале функции actor_binder:save(packet) добавить: -- for The Tool xr_s.on_event("actor_save") Если вспомогательные модули Артоса ещё не подключены, в конце функции actor_binder:reinit() перед закрывающим end добавить: -- for The Tool --/#+# [lua_helper] ------------------------------------------------ if lua_helper.Init_ActorPStor then lua_helper.Init_ActorPStor() end --/< --------------------------------------------------------------- 3.3. В файле gamedata\scripts\smart_terrain.script в самом конце добавить: -- for The Tool function get_smart_terrains() return smart_terrains --/> end function get_smart_terrains_by_name() return smart_terrains_by_name --/> end 3.4. В файле gamedata\scripts\xr_motivator.script в конце функции motivator_binder:update(delta) перед закрывающим end добавить: -- for The Tool xr_s.on_event("npc_update", {obj = self.object}) 3.5. В файле gamedata\config\ui\game_tutorials.xml в конце файла перед закрывающим тегом </window> добавить: <!-- for The Tool --> #include "ui\tool\game_movies.xml" 3.6. В файле gamedata\config\ui\ui_custom_msgs.xml в конце файла перед закрывающим тегом </header> добавить: <!-- for The Tool --> <cs_debug x="200" y="10" width="600" height="100" complex_mode="1"> <text font="graffiti22" r="240" g="217" b="182" a="255" align="l"/> </cs_debug> 3.7. В файле gamedata\config\localization.ltx в опции files в начале или конце добавить новое значение st_tool: ;список xml файлов, содержащих таблицы символов files = st_tool, ; + все остальные элементы списка 3.8. В файле gamedata\config\system.ltx в секции [texture_desc] в опции files в начале или конце добавить новые значения ui_common_2 и ui_pda2_noice: [texture_desc] files = ui_common_2, ui_pda2_noice, ; + все остальные элементы списка 3.9. В корневой папке игры в файле fsgame.ltx добавить синонимы для прямого нерекурсивного доступа к папкам gamedata\configs\gameplay и gamedata\configs\misc: $tool_gameplay$ = false| false| $game_config$| gameplay\ $tool_misc$ = false| false| $game_config$| misc\ Пример добавки приведён в архиве в файле fsgame_ADD.ltx Скрытый текст 3.1. В файле gamedata\scripts\_g.script в конце функции start_game_callback() перед закрывающим end добавить: -- for The Tool lua_helper.attach() -- если вспомогательный модуль Артоса ещё не подключён m_netpk.attach() -- если модуль нет-пакетов Артоса ещё не подключён if keylogger then keylogger.init() end -- если кейлоггер Чарси ещё не подключён if tool then tool.init() end -- обязательно Если вспомогательные модули Артоса ещё не подключены, в файле gamedata\scripts\_g.script в самом конце добавить: -- for The Tool --/------------------------------------------------------------------- --/#+# initialize modules [lua_helper/lua_extensions] --/------------------------------------------------------------------- prefetch("lua_extension") --/#+# подключение модуля расширений Lua prefetch("lua_helper") --/#+# подключение модуля 'общих' хелп-функций --/ ------------------------------------------------------------------ --/ print-log (вывод отладочной информации) --/------------------------------------------------------------------- local console --/ функция вывода сообщения в игровую консоль to_log = function(fmt,...) if not console then console = get_console() end console:execute("load ~:"..string.exformat(fmt,...)) end --/------------------------------------------------------------------- --/ Принудительное прерывание игры при фатальных ошибках --/------------------------------------------------------------------- abort = function(fmt,...) to_log(string.rep("~",86)) to_log("[error]ABORT CALLED:\n" .. string.exformat(fmt, ...)) to_log("ATTENTION! Game is interrupted! The information in lines above.") to_log(string.rep("~",86)) get_console():execute('flush') exit() --/#!# interrupt game in case of fatal errors end --/ ------------------------------------------------------------------ 3.2. В файле gamedata\scripts\actor_menu.script в самом конце добавить: -- for The Tool function get_menu_mode() return last_mode end 3.3. В файле gamedata\scripts\bind_stalker.script в самом начале функции actor_binder:save(packet) добавить: -- for The Tool xr_s.on_event("actor_save") Если вспомогательные модули Артоса ещё не подключены, в конце функции actor_binder:reinit() перед закрывающим end добавить: --/#+# [lua_helper] ------------------------------------------------ if lua_helper.Init_ActorPStor then lua_helper.Init_ActorPStor() end --/< --------------------------------------------------------------- 3.4. В файле gamedata\scripts\xr_motivator.script в конце функции motivator_binder:update(delta) перед закрывающим end добавить: -- for The Tool xr_s.on_event("npc_update", {obj = object}) --/#+# >событие: 'npc_update' 3.5. В файле gamedata\scripts\xr_s.script содержимое функции register_callback(name,func,userobj) заменить на это: function register_callback(name,func,userobj) -- + поддержка произвольных событий (замена оригинальной функции) if callbacks[name]==nil then -- abort("register_callback: callback name '%s' is unknown.", name) callbacks[name] = {} -- создаём новый массив для произвольного события с указанным именем end callbacks[name][func]={userobj=userobj} -- Чтобы можно было регистрировать каллбэки с userobj==nil end Там же в конце файла добавить новую функцию: function on_event(name, data) -- произвольное событие if not name or not callbacks[name] then return end --/> нет зарегистрированных коллбэков for func,o in pairs(callbacks[name]) do func(o.userobj, data) end end 3.6. В файле gamedata\configs\ui\game_tutorials.xml в конце файла перед закрывающим тегом </window> добавить: <!-- for The Tool --> #include "ui\tool\game_movies.xml" 3.7. В файле gamedata\configs\ui\ui_custom_msgs.xml в конце файла перед закрывающим тегом </header> добавить: <!-- for The Tool --> <cs_debug x="200" y="10" width="600" height="100" complex_mode="1"> <text font="graffiti22" r="240" g="217" b="182" a="255" align="l"/> </cs_debug> 3.8. В корневой папке игры в файле fsgame.ltx добавить синонимы для прямого нерекурсивного доступа к папкам gamedata\configs\gameplay и gamedata\configs\misc: $tool_gameplay$ = false| false| $game_config$| gameplay\ $tool_misc$ = false| false| $game_config$| misc\ Пример добавки приведён в архиве в файле fsgame_ADD.ltx Скрытый текст 3.1. В файле gamedata\scripts\_g.script в конце функции start_game_callback() перед закрывающим end добавить: -- for The Tool lua_helper.attach() -- если вспомогательный модуль Артоса ещё не подключён m_netpk.attach() -- если модуль нет-пакетов Артоса ещё не подключён if keylogger then keylogger.init() end -- если кейлоггер Чарси ещё не подключён if tool then tool.init() end -- обязательно Если вспомогательные модули Артоса ещё не подключены, в файле gamedata\scripts\_g.script в самом конце добавить: -- for The Tool --/------------------------------------------------------------------- --/#+# initialize modules [lua_helper/lua_extensions] --/------------------------------------------------------------------- prefetch("lua_extension") --/#+# подключение модуля расширений Lua prefetch("lua_helper") --/#+# подключение модуля 'общих' хелп-функций --/ ------------------------------------------------------------------ --/ print-log (вывод отладочной информации) --/------------------------------------------------------------------- local console --/ функция вывода сообщения в игровую консоль to_log = function(fmt,...) if not console then console = get_console() end console:execute("load ~:"..string.exformat(fmt,...)) end --/------------------------------------------------------------------- --/ Принудительное прерывание игры при фатальных ошибках --/------------------------------------------------------------------- abort = function(fmt,...) to_log(string.rep("~",86)) to_log("[error]ABORT CALLED:\n" .. string.exformat(fmt, ...)) to_log("ATTENTION! Game is interrupted! The information in lines above.") to_log(string.rep("~",86)) get_console():execute('flush') exit() --/#!# interrupt game in case of fatal errors end --/ ------------------------------------------------------------------ 3.2. В файле gamedata\scripts\actor_menu.script в самом конце добавить: -- for The Tool function get_menu_mode() return last_mode end 3.3. В файле gamedata\scripts\bind_stalker.script в самом начале функции actor_binder:save(packet) добавить: -- for The Tool xr_s.on_event("actor_save") Если вспомогательные модули Артоса ещё не подключены, в конце функции actor_binder:reinit() перед закрывающим end добавить: --/#+# [lua_helper] ------------------------------------------------ if lua_helper.Init_ActorPStor then lua_helper.Init_ActorPStor() end --/< --------------------------------------------------------------- 3.4. В файле gamedata\scripts\xr_meet.script в конце функции Cmeet_manager:update() перед закрывающим end добавить: -- for The Tool xr_s.on_event("on_meet", {obj = self.npc}) --/#+# >событие: 'on_meet' 3.5. В файле gamedata\scripts\xr_s.script содержимое функции register_callback(name,func,userobj) заменить на это: function register_callback(name,func,userobj) -- + поддержка произвольных событий (замена оригинальной функции) if callbacks[name]==nil then -- abort("register_callback: callback name '%s' is unknown.", name) callbacks[name] = {} -- создаём новый массив для произвольного события с указанным именем end callbacks[name][func]={userobj=userobj} -- Чтобы можно было регистрировать каллбэки с userobj==nil end Там же в конце файла добавить новую функцию: function on_event(name, data) -- произвольное событие if not name or not callbacks[name] then return end --/> нет зарегистрированных коллбэков for func,o in pairs(callbacks[name]) do func(o.userobj, data) end end 3.6. В файле gamedata\configs\ui\game_tutorials.xml в конце файла перед закрывающим тегом </window> добавить: <!-- for The Tool --> #include "ui\tool\game_movies.xml" 3.7. В файле gamedata\configs\ui\ui_custom_msgs.xml в конце файла перед закрывающим тегом </header> добавить: <!-- for The Tool --> <cs_debug x="200" y="10" width="600" height="100" complex_mode="1"> <text font="graffiti22" r="240" g="217" b="182" a="255" align="l"/> </cs_debug> 3.8. В корневой папке игры в файле fsgame.ltx добавить синонимы для прямого нерекурсивного доступа к папкам gamedata\configs\gameplay и gamedata\configs\misc: $tool_gameplay$ = false| false| $game_config$| gameplay\ $tool_misc$ = false| false| $game_config$| misc\ Пример добавки приведён в архиве в файле fsgame_ADD.ltx Скрытый текст При настройках горячих клавиш по умолчанию (менять в misc\tool.ltx): "J" - показ диалога Инструмента "K" - показ/скрытие отладочной информации на худе "T" (Тени Чернобыля) или "H" (Чистое Небо, Зов Припяти) - показ/скрытие отладочной информации об НПС вместо подсказки Скрытый текст @monk - за возможность разрабатывать Инструмент на площадке сборника и за бесконечное терпение при тестировании внедрённых в Инструмент и отбракованных механизмов. @*Shoker* - за Повелителя зоны, давшего львиную долю идей и примеров. @Artos - за модуль работы с нет-пакетами и вспомогательные модули. @Charsi - за кейлоггер, русификацию ввода в ТЧ и альтернативный метод записи редактируемых точек в файл. VENOM - за метод показа информации об НПС. OGSM Team - за некоторые другие использованные в Инструменте хитрости. А также всем остальным, чьи работы полностью или частично могли быть использованы в Инструменте, но кого по незнанию или забывчивости не упомянул. Изменено 31 Октября пользователем Kirgudu Версия от 2024-10-31 6 11 21 Инструмент Ссылка на комментарий
av661194 50 Опубликовано 5 Апреля Поделиться Опубликовано 5 Апреля @Kirgudu На Зов Припяти нет планов сделать подобное? Ссылка на комментарий
Kirgudu 1 204 Опубликовано 5 Апреля Автор Поделиться Опубликовано 5 Апреля @av661194, есть, но пока не могу сказать когда это получится. Скорее всего, на горизонте месяца, а то и двух - всё будет зависеть от наличия свободного времени. Если возможности ванильных движков ЧН и ТЧ мне более-менее известны, то во внутренности ЗП я вообще ни разу не заглядывал, потребуется адаптировать свои знания, а вслед за ними и Инструмент. Но сделаю. Для информации: в общем хранилище по ссылке из шапки лежит файл todo.txt - я периодически заношу в него то, что планирую реализовать (относительно крупные или важные вещи), а также помечаю то, что уже сделано и что не вышло. Своего рода дорожная карта. Вероятно, завтра будет обновление по пункту 8 из этого файла. 3 Инструмент Ссылка на комментарий
Это популярное сообщение. Kirgudu 1 204 Опубликовано 6 Апреля Автор Это популярное сообщение. Поделиться Опубликовано 6 Апреля Новая сборка Инструмента для всех платформ от 2024-04-06 Скрытый текст 1. В разделе "Объекты" добавлена фильтрация списка объектов по секции или наименованию. По некоторым причинам поиск регистрозависимый: введя "Пистолет", вы найдёте все строки, содержащие именно "Пистолет", но не "пистолет". Везде, кроме оригинала Теней Чернобыля, поддерживается русскоязычный поиск. 2. Там же добавлены органы управления для изменения координат наружного спавна не вручную, а с помощью автоматического сдвига на указанное расстояние в одном из четырёх направлений относительно направления взгляда игрока. Также добавлена кнопка для взятия текущих координат игрока. 3. ОП-2.2: исправлено создание аномалий. 4. ОП-2.2: списки объектов почищены от секций, вызывающих вылет при спавне. За помощь с последними двумя пунктами спасибо @tihik Описание в шапке обновлено, ссылка на хранилище прежняя. 2 3 Инструмент Ссылка на комментарий
Это популярное сообщение. Kirgudu 1 204 Опубликовано 18 Апреля Автор Это популярное сообщение. Поделиться Опубликовано 18 Апреля Обновление Инструмента от 2024-04-18 + конструктор для Зова Припяти и готовый комплект для оригинала ЗП (1.6.02); + кнопка Выброс в разделе Погода (ЧН и ЗП), при нажатии которой соотв. явление будет запущено немедленно вместе со всеми сопутствующими событиями (задания, укрытия и т. д.); + кнопка Читбокс в разделе Игрок (все платформы), при нажатии которой в инвентарь игрока будет добавлен заранее прописанный в конфиге набор предметов. Подробнее см. описание в архивах и шапке темы. Ссылка на общее хранилище прежняя. На этом активная разработка Инструмента завершена. Дальнейшие улучшения и исправления замеченных ошибок будут происходить спонтанно, и я вряд ли стану их анонсировать, если только не попадётся что-либо крупное. Смотрите на дату сборки в шапке темы и на даты обновления файлов в хранилище. Приятного использования! 2 3 6 Инструмент Ссылка на комментарий
Recluse 18 Опубликовано 22 Апреля Поделиться Опубликовано 22 Апреля (изменено) 31.03.2024 в 20:00, Kirgudu сказал: комплект Инструмента для ОП 2.2 А для ОП 2.1 подойдёт? Просто я не играю в эту версию, т.к. разницы между ними особой для меня нет. Вот если бы было можно из 2.1 сохранения использовать - то, может быть, и скачал 2.2 себе Бросать пройденное ради пару новых фишек - как-то не хочется... Уверен, что некоторые и в 2.0 до сих пор играют Изменено 22 Апреля пользователем Recluse Ссылка на комментарий
Kirgudu 1 204 Опубликовано 22 Апреля Автор Поделиться Опубликовано 22 Апреля @Recluse сложно сказать, в ОП не играю от слова совсем, сделал комплект для версии 2.2 только по просьбе игрока. Могу сделать то же самое и для 2.1 (2.0) но нужны прямые работающие ссылки на скачивание дистрибутива (+ патча, если есть) и предельно понятная инструкция по установке (если отличается от 2.2). Тогда смогу осуществить полную адаптацию. В теории уже сейчас вполне достаточно конструктора для ТЧ - его можно попробовать применить самостоятельно, инструкция внутри описывает все необходимые для этого действия. 1 1 Инструмент Ссылка на комментарий
Recluse 18 Опубликовано 23 Апреля Поделиться Опубликовано 23 Апреля Привет всем сталкерам! Есть вопрос по инструменту: не сохраняются координаты телепорта! Пока нахожусь на локации - всё нормально пашет, запоминает и телепортируется. При переходе на другую локацию - все данные пропадают! Оказывается, данные не записываются в файл teleport_custom.ltx. Все файлы info_*.xml были вытащены из дебешки и закинуты в GameData, как было рекомендовано в описании. Может, это связано с тем, что некоторые файлы находятся в нестандартных местах? Играю в ФОТОГРАФ - SELFMADE [ОБТ] Ссылка на комментарий
Kirgudu 1 204 Опубликовано 23 Апреля Автор Поделиться Опубликовано 23 Апреля 2 часа назад, Recluse сказал: При переходе на другую локацию - все данные пропадают! Оказывается, данные не записываются в файл teleport_custom.ltx. Для успешной записи точек в teleport_custom.ltx есть только два требования: движок должен поддерживать пространство имён IO для оперирования файлами, а псевдоним папки "config\misc" должен быть добавлен в fsgame.ltx, как указано в описании. Скорее всего, одно из этих требований не выполнено. Расположение других файлов на teleport_custom.ltx никак не влияет. Если получится по времени, вечером посмотрю сам, что там в Фотографе могло не сработать. Но есть также чуть менее удобный, зато более надёжный способ: misc\tool\teleport.ltx. Если возможные точки телепорта известны заранее, можно внести их в этот конфиг по имеющемуся шаблону. 2 1 Инструмент Ссылка на комментарий
Recluse 18 Опубликовано 23 Апреля Поделиться Опубликовано 23 Апреля (изменено) 1 час назад, Kirgudu сказал: должен быть добавлен в fsgame.ltx Само собой, что добавил. Но там false, false прописано. Может надо там сменить на true, true? 1 час назад, Kirgudu сказал: можно внести их в этот конфиг Принцип записи, как у ММ? Изменено 23 Апреля пользователем Recluse Ссылка на комментарий
Kirgudu 1 204 Опубликовано 23 Апреля Автор Поделиться Опубликовано 23 Апреля (изменено) 6 часов назад, Recluse сказал: Принцип записи, как у ММ? Принцип записи так же, как сейчас в teleport.ltx, стоит в него заглянуть - там для примера оставлены по одной абстрактной точке на каждую локацию. Емнип, числа идут в таком порядке: x, y, z, level_vertex_id, game_vertex_id Для большего удобства шестым параметром можно указать в кавычках наименование точки, тогда оно будет показано в диалоге Инструмента вместо безликого "Точка xxx": -246.888, -24.794, -134.443, 11366, 4, "Кордон - Бункер Сидоровича" 6 часов назад, Recluse сказал: Может надо там сменить на true, true? Нет, не надо. Проверю инструмент в Фотографе сам, когда доберусь до дома. @Recluse в общем хранилище (ссылка в шапке темы) в папку Ready положил архив с готовым комплектом Инструмента для Фотографа (selfmade): The.Tool.Photographer.Selfmade.rar. Есть недочёты - что-то не то с текстурой мини диалога при сохранении точки, но в целом всё работает. В том числе и сохранение точек в файле teleport_custom.ltx. Наполнение конфигов спавна и остального приводить к актуальному состоянию не буду, это можно сделать самостоятельно. Изменено 23 Апреля пользователем Kirgudu 1 1 Инструмент Ссылка на комментарий
Recluse 18 Опубликовано 23 Апреля Поделиться Опубликовано 23 Апреля 5 часов назад, Kirgudu сказал: Наполнение конфигов спавна и остального приводить к актуальному состоянию не буду Эта игра везде раздаётся со встроенным спавнером! F1 в главном меню, если что. Чего там только нет! У меня комп слабоватый. Видеоролики вместо статичной картины сильно грузят игру. Аж подвисает иногда. Но сама игра, на удивление, идёт стабильно и шустро даже на высоких настройках! Ссылка на комментарий
Kirgudu 1 204 Опубликовано 23 Апреля Автор Поделиться Опубликовано 23 Апреля 4 минуты назад, Recluse сказал: Эта игра везде раздаётся со встроенным спавнером! F1 в главном меню, если что. Чего там только нет! Без проблем, я же не заставляю пользоваться для спавна именно своим инструментом. Просто предупреждаю о том, что в случае необходимости именно комплект для Фотографа требует дополнительного конфигурирования. 1 Инструмент Ссылка на комментарий
Kirgudu 1 204 Опубликовано 25 Апреля Автор Поделиться Опубликовано 25 Апреля (изменено) В папку Ready хранилища добавил архив с Инструментом для классического Фотографа (The.Tool.Photographer.rar). Делал вслепую, без установки Фотографа себе, поэтому работоспособность не гарантируется. Однако если используемые в Инструменте методы в принципе поддерживаются патчем ТЧ 1.0004, особых проблем быть не должно. Буду рад отзывам попробовавших Инструмент для Фотографа игроков. Нюансы: - поскольку это немодифицированный старый ТЧ, пространство имён IO недоступно, запись кастомных точек в файл осуществить прямо из игры будет невозможно; пользуйтесь конфигом teleport.ltx для формирования фиксированного списка точек телепорта. - конфиг спавна (spawn.ltx) не содержит характерных для Фотографа секций и требует актуализации. Изменено 25 Апреля пользователем Kirgudu 1 1 Инструмент Ссылка на комментарий
tihik 1 208 Опубликовано 25 Апреля Поделиться Опубликовано 25 Апреля 5 часов назад, Kirgudu сказал: поскольку это немодифицированный старый ТЧ, пространство имён IO недоступно, запись кастомных точек в файл осуществить прямо из игры будет невозможно На ОП 2.2 тоже не пишет в файл, только вручную в teleport.ltx получается добавлять точки. 5 часов назад, Kirgudu сказал: пользуйтесь конфигом teleport.ltx для формирования фиксированного списка точек телепорта. А уже содержащиеся точки как-то редактировать можно, или убрать? Найди покой в своей душе, всё остальное само найдёт тебя. Ссылка на комментарий
Kirgudu 1 204 Опубликовано 25 Апреля Автор Поделиться Опубликовано 25 Апреля (изменено) 51 минуту назад, tihik сказал: На ОП 2.2 тоже не пишет в файл, только вручную в teleport.ltx получается добавлять точки. Что очень странно, ибо у меня таких проблем не было, проверял версию для ОП-2.2 перед публикацией. Лень моя протестует; я уже успел грохнуть мод у себя на компе, приходится снова его ставить - а это, ни много ни мало, 15 ГБ в дистрибутиве... Основной дистрибутив и патч 23 года брал здесь: https://vk.com/@mod_op22-patchi-dlya-op-22-opisanie-i-ssylki О результатах отпишу чуть позже. 51 минуту назад, tihik сказал: А уже содержащиеся точки как-то редактировать можно, или убрать? С ними (уже содержащимися в teleport.ltx точками) можно делать что угодно: переделать в свои или вообще удалить. Они вообще не из этой игры; помнится, я скопировал и размножил одну из точек Инструмента для оригинала ЧН, а сделал это просто для того, чтобы был пример как оформлять новые записи. Update: а ведь действительно, IO в ОП любых версий отсутствует. Зря обнадёжил. Я почему-то был уверен в обратном, видать, перепутал с каким-то из модов на основе OGSR. Столько их пришлось перепробовать за последнее время, что немудрено. Увы, запись в файл и чтение оттуда произвольных точек телепортации в Инструменте для ОП невозможны. Только редактирование teleport.ltx вручную. Изменено 25 Апреля пользователем Kirgudu 1 1 Инструмент Ссылка на комментарий
tihik 1 208 Опубликовано 25 Апреля Поделиться Опубликовано 25 Апреля 5 часов назад, Kirgudu сказал: Только редактирование teleport.ltx вручную. Ок. По точкам: в teleport.ltx их немного, но в "Инструменте", в списке на каждую локацию их не мало, а на некоторые - простыня из этих точек. Вот их как убрать, если их в списке в teleport.ltx, нет? Найди покой в своей душе, всё остальное само найдёт тебя. Ссылка на комментарий
Kirgudu 1 204 Опубликовано 25 Апреля Автор Поделиться Опубликовано 25 Апреля 19 минут назад, tihik сказал: Вот их как убрать, если их в списке в teleport.ltx, нет? Никак. Пока никак. Я понял, о чём речь. Это так называемые смарты (smart_terrain), расставлены разработчиками на каждой локации. Читаются Инструментом при загрузке игры автоматически, автоматически же добавляются в список точек для телепортации. Нужен способ не читать их вовсе? Завтра добавлю опцию в конфиге. 1 Инструмент Ссылка на комментарий
tihik 1 208 Опубликовано 25 Апреля Поделиться Опубликовано 25 Апреля 4 часа назад, Kirgudu сказал: Нужен способ не читать их вовсе? Завтра добавлю опцию в конфиге. Да, для игры их лучше скрыть и свои добавлять. А для разработки-тестов оставить опцией, пока свой список точек на все локации не сформирован. 1 Найди покой в своей душе, всё остальное само найдёт тебя. Ссылка на комментарий
Kirgudu 1 204 Опубликовано 26 Апреля Автор Поделиться Опубликовано 26 Апреля Во все готовые комплекты и в конструкторы для всех версий игры добавлены настройки загрузки рукописных точек и точек-смартов (обновлены файлы teleport.script и teleport.ltx). Скрытый текст ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; Настройки модуля [teleport_settings] ; загрузка смартов load_smarts = true ; загрузка точек из конфига load_static_points = true 1 2 Инструмент Ссылка на комментарий
av661194 50 Опубликовано 26 Апреля Поделиться Опубликовано 26 Апреля @Kirgudu 22 часа назад, Kirgudu сказал: поскольку это немодифицированный старый ТЧ, пространство имён IO недоступно Чтобы добавить для лицензионных движков ТЧ пространство имён IO можно использовать расширитель Lua от RvP - http://code.google.com/p/xrluafix/ Или подобную версию от Artos - https://modsfire.com/DZ87vPi78892CkC Скрытый текст xrLuaFix - расширитель Lua для S.T.A.L.K.E.R SHoC|CS|CoP (ТЧ/ЧН/ЗП) xrLuaFix базируются на исходниках: http://code.google.com/p/xrluafix/ (by RvP) и совместима со всеми официальными версиями S.T.A.L.K.E.R : ТЧ, ЧН и ЗП (соответственно). Краткое описание: ----------------- Добавляемые в игру функции: глобальное пространство имен: void logf(string1 [, string2, string3, ...]) -- вывод в лог аргументов, каждый аргумент в новой строке. void LuaFix([arg]) -- открывает доп. пространства имен io, os, package и debug. void LuaExt() -- расширяет пространства имен math, string, table и добавляет функции куйлоггера. set_vKeyCB() -- запуск обработчика нажатия клавиш get_vKeyCB() -- запрос из обработчика о нажатых клавишах. out: table[vk] = true vKeyPressed(vk1[,vk2]) -- запрос о нажатой клавише (двух славишах) Дополнительные/возвращенные пространства имен: os -- для ТЧ io -- для ТЧ package -- для ТЧ (добавляет и глобальную функцию require) debug -- опционально Расширители пространств: math.random([a[, b]]) -- замена стандартной функции, более быстрая. Использование прежнее math.randomseed(x) -- замена стандартной функции генератора псевдослучайных чисел string.trim(str) -- обрезка строки string.trim_l(str) -- обрезка строки слева string.trim_r(str) -- обрезка строки справа string.trim_w(str) -- обрезка строки по первому слову table.keys(t) -- возвращает таблицу ключей таблицы table.values(t) -- возвращает таблицу значений таблицы table.size(t) -- возвращает реальный размер таблицы table.random(t) -- возвращает случайный елемент таблицы lfs -- Оригинальная Lua библиотека. Подробное описание и использование: http://keplerproject.github.com/luafilesystem/ Установка: ---------- Для ТЧ (SHoC) (path 1.0004 и выше): В папке "bin" переименовать файл "xrLua.dll" в "xrLua_GSC.dll" и на его место скопировать xrLuaFix.dll, переименовав его в "xrLua.dll". Т.е. исходный файл переименовывается (не удалять!), а вместо него копируется модифицированный. Наличие "xrLua_GSC.dll" - обязательно! Вышеуказанное можно выполнить ввтоматически, скопировав файлы в папку 'bin' и запустив xrLuaFix_install.bat. Для ЧН/ЗП (CS/CoP): Скопировать в папку 'bin' соответствующую версию файла 'xrLuaFix.dll' из папок архива 'bin_CS' или 'bin_CoP'. Внимание: Все исходные библиотеки игры НЕ заменяются. Использование: -------------- Для ЧН/ЗП (CS/CoP): Для подключения библиотеки расширителя (DLL) требуется после запуска игры из скриптов вызвать функцию: require("xrLuaFix") Для активизации дополнительных расширений требуется после запуска игры (и подключения DLL в ЧН/ЗП) из скриптов вызвать функцию: "LuaFix()" -- аргументы опциональны Для расширения пространств math, string, table и добавления функций кейлоггера требуется из скриптов вызвать функцию: LuaExt() Варианты вызова функции LuaFix: ---------------------------- Вариант 1: Только восстановление namespace: io|os|package (for SHoC) LuaFix() --/ or local build_version = LuaFix() - вернет версию библиотеки которая должжна соответствовать xrGame.dll Вариант 2: Дополнительно к вар.1 добавляется namespace debug LuaFix("debug") --/ or LuaFix(true) Вариант 3: Дополнительно к вар.1/2 создается дебаговый лог-файл local fname = getFS():update_path("$logs$", "xray_debug.log") --/ путь и имя дебаг-файла лога LuaFix(fname) --/ or LuaFix(fname, '[%x %X]\t') Практические примеры использования см. в файле: lua_fix.script ------------------------------------------------------------------ 12.10.2012 Artos Добавление в игру очень простое (справятся даже новички), На ранних патчах не проверял, но на 1.0004-1.0006 работает 100%. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти