Перейти к содержанию

Overf1rst

Модераторы
  • Публикаций

    242
  • Зарегистрирован

  • Посещение

  • Победитель дней

    14

Весь контент Overf1rst

  1. Да этому коду уже тоже сто лет. Его, вроде бы, писал ещё Charsi в 2016-2017. А так подобные правки с функторами - очень простая и одновременно полезная штука - можно хоть куда прикрутить, любые штуки обрабатывать. ?
  2. Отловить нажатие на вкладки в ПДА без правок движка никак нельзя. Нужно делать соответствующую движковую правку, создав в нужном месте функтор, куда будет передаваться идентификатор выбранной вкладки. В файле UIPdaWnd.cpp находишь метод: void CUIPdaWnd::SetActiveSubdialog(const shared_str& section) После блока: else if (section == "eptLogs" && pUILogsWnd) { m_pActiveDialog = pUILogsWnd; } Вставляешь такой блок: else { luabind::functor<CUIDialogWndEx*> funct; if (GEnv.ScriptEngine->functor("engine_callbacks.set_active_subdialog", funct)) { CUIDialogWndEx* ret = funct((LPCSTR)section.c_str()); CUIWindow* pScriptWnd = ret ? smart_cast<CUIWindow*>(ret) : 0; if (pScriptWnd) m_pActiveDialog = pScriptWnd; } } Создаёшь скрипт engine_callbacks.script, в него закидываешь функцию: function set_active_subdialog(tab_id) if tab_id == "eptEncyclopedia" then return -- тут нужно вернуть экземпляр скриптового GUI окна энциклопедии end return nil end Если что, эта правка сделана на OpenXRay, там могут немного отличаться версии кода, поэтому ты сам там гляди и прикидывай, если поиском не найдёшь нужный блок.
  3. Сама по себе мистика - явление необъяснимое, неправдоподобное. Такие моменты у нас и будут. Как и что - игрок сможет кое-где спросить, узнать предположения или додумывать сам.
  4. Мистика будет. Один из членов нашей команды, играя в один из билдов, очень высоко оценил один необычный квест на Свалке, а сейчас этот квест мы ещё и допилим! Уже скоро, ещё чуть-чуть подождать. ?
  5. Есть куча онлайн сервисов для просмотра таких документов. Один из самый простых вариантов - залить документ себе в личку ВК и кликнуть по нему.
  6. А мод делается для кого, по-вашему? Для меньшинств? Он делается, в первую очередь, для тех, кому изначально нравится то, что мы делаем. Да мододелы, оказывается, много чего должны кому-то. Может, хватит мусолить одно и то же про эту оружейку? Всем никогда не угодить. Когда до людей дойдёт сей факт?
  7. Варианты сквадов с одинаковым именем, но с разным номером в конце. Допустим, написал я 4. Это значит будет заспавнен случайный из следующих четырёх: squad_1 squad_2 squad_3 squad_4 Если у сквадов абсолютно разное имя, можно переделать функцию на такой лад: function create_random_squad(actor, npc, p) create_squad(actor, npc, {p[math.random(#p - 1)], p[#p]}) end Пример использования: %=create_random_squad(esc_stalkers_squad:esc_bandits_squad:esc_army_squad:smart_name)% Принцип понятен, думаю. Последний параметр после списка сквадов - имя смарта, где спавнить. Вообще, затея довольно странная, не знаю, нужно ли это, но принцип я показал, дальше разбираться уже не мне.
  8. Нужно добавить аналогичный элемент в такой же файл с префиксом _16.xml с правками числовых значений под широкоформат.
  9. Это функционал для генерации динамических диалогов. К примеру, динамический диалог - hello_dialog.
  10. Это ТЧ файл, там это работает чутка по-другому. Ты же компилировал спавн, делал Make Game. В SDK папке с уровнем должен быть подходящий level.ltx под ЗП. В крайнем случае воткни содержимое этого же файла от ЧН локи: [map_usage] ver=1.0 [level_map] bound_rect = -335.000000,-630.000000,415.000000,870.000000 texture = map\map_escape
  11. Проверь наличие level.ltx в папке с уровнем, в нём должна быть указанная секция и параметр.
  12. На это никогда можно не обращать внимание. Основной лог, если он есть, всегда выше. На десятке обычно nodefault reached ещё конкретно спамится... ?
  13. Перепроверил. Беру свои слова обратно. Странно, что я жил с этой мыслью очень долгое время, не с потолка же я это брал...
  14. На полном драфте не собирается build.cform, нужно чуть-чуть выше драфта взять. ?
  15. Ну, ложь пишут, что сказать. ? Вот список файлов, которые можно обновить при помощи Make Game: level.env_mod level.fog_vol level.game level.ps_static level.snd_static level.spawn level.ltx
  16. Не делайте вы никогда этот Build, кроме случаев, когда нужно компилировать геометрию! Build вообще всё собирает, при этом очищая папку с уровнем, о чём я написал выше. Нужно собрать что-то кроме геометрии - есть частичная компиляция - кнопки ниже Build. Файл level.ps_static и множество других создаются при Compile → Make Game! Советую сделать этот пункт, открыть папку с уровнем и отсортировать файлы по дате - будет видно, что было создано при выполнении пункта выше.
  17. Делать Compile → Build следует только в том случае, если нужно скомпилировать геометрию уровня! Если это сделать ещё раз, папка с уровнем будет очищена, и тогда всё придётся компилировать заново. Отсюда и все вытекающие последствия с сеткой и спавном, которые не компилируются. Для начала надо будет снова собрать геометрию, чтобы, в свою очередь, собрать АИ-сетку! Ещё раз по порядку: если у вас скомпилирована геометрия и нужно вносить правки только в спавн и в АИ - делать нужно исключительно Compile → Make Game и Compile → Make AI-map (тут порядок не важен). Далее, если собрана геометрия (в папке с уровнем есть build.cform), нужно скомпилировать АИ-сетку - tool_compile_xrAI.cmd. После этого уже можно начать компилировать спавн - tool_create_spawn.cmd. Локация должна быть зарегистрирована в конфигах. Если есть скомпилированный уровень, который надо декомпилировать, то для дальнейшей компиляции АИ-сетки на нём в любом случае придётся компилировать геометрию, поскольку в релизные версии уровней не кладут файл build.cform!
  18. @Gerbys, для выбора из большего количества сквадов можно воспользоваться функцией (добавить в xr_effects.script) function create_random_squad(actor, npc, p) create_squad(actor, npc, {p[1] .. "_" .. math.random(tonumber(p[2])), p[3]}) end Из логики вызывать так: %=create_random_squad(squad:4:smart_terrain)%
  19. @svi_042, используйте камерные таблицы из cam_effector_sets.script. Имя таблицы будет служить значением cam_effector в логике. В этом скрипте и функционал склейки есть, и возможность производить всякие действия при старте нужной камеры. Примеры, опять же, в этом самом скрипте. Там же есть и условия включения камер. В своё время пробовал делать перескок - затея не из приятных (если делать средствами Level Editor). ? В ванильном сталкере, кажется, FOV актора и FOV камер в сценах не совпадают. В любом случае, так лучше не делать, поскольку идеальных переходов точно не получить при таком варианте реализации.
  20. @AziatkaVictor да какая разница, какая функция. Первые два аргумента смотри. Таблица идет третьим... ?

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек. Оставаясь на сайте, вы подтверждаете свое согласие на их использование. Политика конфиденциальности | Условия использования