-
Публикаций
242 -
Зарегистрирован
-
Посещение
-
Победитель дней
14
Тип контента
Профили
Форумы
Блоги
Календарь
Новости
Моды
Моды S.T.A.L.K.E.R. 2
Весь контент Overf1rst
-
Отловить нажатие на вкладки в ПДА без правок движка никак нельзя. Нужно делать соответствующую движковую правку, создав в нужном месте функтор, куда будет передаваться идентификатор выбранной вкладки. В файле 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, там могут немного отличаться версии кода, поэтому ты сам там гляди и прикидывай, если поиском не найдёшь нужный блок.
-
Сама по себе мистика - явление необъяснимое, неправдоподобное. Такие моменты у нас и будут. Как и что - игрок сможет кое-где спросить, узнать предположения или додумывать сам.
-
Мистика будет. Один из членов нашей команды, играя в один из билдов, очень высоко оценил один необычный квест на Свалке, а сейчас этот квест мы ещё и допилим! Уже скоро, ещё чуть-чуть подождать. ?
-
А мод делается для кого, по-вашему? Для меньшинств? Он делается, в первую очередь, для тех, кому изначально нравится то, что мы делаем. Да мододелы, оказывается, много чего должны кому-то. Может, хватит мусолить одно и то же про эту оружейку? Всем никогда не угодить. Когда до людей дойдёт сей факт?
-
Варианты сквадов с одинаковым именем, но с разным номером в конце. Допустим, написал я 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)% Принцип понятен, думаю. Последний параметр после списка сквадов - имя смарта, где спавнить. Вообще, затея довольно странная, не знаю, нужно ли это, но принцип я показал, дальше разбираться уже не мне.
-
Это ТЧ файл, там это работает чутка по-другому. Ты же компилировал спавн, делал 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
-
На это никогда можно не обращать внимание. Основной лог, если он есть, всегда выше. На десятке обычно nodefault reached ещё конкретно спамится... ?
-
Не делайте вы никогда этот Build, кроме случаев, когда нужно компилировать геометрию! Build вообще всё собирает, при этом очищая папку с уровнем, о чём я написал выше. Нужно собрать что-то кроме геометрии - есть частичная компиляция - кнопки ниже Build. Файл level.ps_static и множество других создаются при Compile → Make Game! Советую сделать этот пункт, открыть папку с уровнем и отсортировать файлы по дате - будет видно, что было создано при выполнении пункта выше.
-
Делать Compile → Build следует только в том случае, если нужно скомпилировать геометрию уровня! Если это сделать ещё раз, папка с уровнем будет очищена, и тогда всё придётся компилировать заново. Отсюда и все вытекающие последствия с сеткой и спавном, которые не компилируются. Для начала надо будет снова собрать геометрию, чтобы, в свою очередь, собрать АИ-сетку! Ещё раз по порядку: если у вас скомпилирована геометрия и нужно вносить правки только в спавн и в АИ - делать нужно исключительно Compile → Make Game и Compile → Make AI-map (тут порядок не важен). Далее, если собрана геометрия (в папке с уровнем есть build.cform), нужно скомпилировать АИ-сетку - tool_compile_xrAI.cmd. После этого уже можно начать компилировать спавн - tool_create_spawn.cmd. Локация должна быть зарегистрирована в конфигах. Если есть скомпилированный уровень, который надо декомпилировать, то для дальнейшей компиляции АИ-сетки на нём в любом случае придётся компилировать геометрию, поскольку в релизные версии уровней не кладут файл build.cform!
-
@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)%
-
@svi_042, используйте камерные таблицы из cam_effector_sets.script. Имя таблицы будет служить значением cam_effector в логике. В этом скрипте и функционал склейки есть, и возможность производить всякие действия при старте нужной камеры. Примеры, опять же, в этом самом скрипте. Там же есть и условия включения камер. В своё время пробовал делать перескок - затея не из приятных (если делать средствами Level Editor). ? В ванильном сталкере, кажется, FOV актора и FOV камер в сценах не совпадают. В любом случае, так лучше не делать, поскольку идеальных переходов точно не получить при таком варианте реализации.
