-
Публикаций
2 222 -
Зарегистрирован
-
Посещение
-
Победитель дней
13
Сообщения, опубликованные Prostomod
-
-
Mawrak Глядел по IX-Ray, про ваниль не знаю:
- Получить клиентский объект - тот объект, который мы проверяем на нахождение в нашем контейнере.
- Используя метод "parent" (my_cobj:parent()), получаем объект, внутри которого он содержится. Если такого нет (просто валяется где-то) - метод вернёт nil.
- Проверяем, что родитель - это наш контейнер. Или через story_id, или просто ID (если знаем его), или ещё как-то.
Никаких iterate_inventory не требуется. И по идее, даже если повесить на тик, не особо сожрёт ресурсов, но лучше на событие какое-нибудь придумать.
-
1
-
14 минут назад, imcrazyhoudini сказал:только заканчиваю деревья с S2 ставить на локации
Сам вытащил, или где-то есть пак растительности оттуда?
-
Это что тут вообще происходит? Можно пж хронологию событий:)?
(Неужели это какой-то движ, о котором узнаю не постфактум:)?) -
12 часов назад, Пихта сказал:ох веселуха будет если рпг уронить рядом
А ты не роняй:)
-
40 минут назад, MoNoL1T сказал:в Гансе есть такое
Про полтеров не знаю, но бюреры в Гансе стрелять умеют. А как я понял, фичу такую перенести на другого мутанта не сложно.
-
Вампир Залутать все автоматы, которые разбросаны:). Если перевес - разрядить всех и выбросить:):). Полтеры не могут стрелять из разряженных пушек - мы ж не такие васяны, как те же новоПЫС...
-
6 часов назад, Policai сказал:ооочень много лишнего и ненужного мне, и перенос только ради проверки, это весь мод переделывать, вообще не вариант... так что буду искать тут проблему
Фичи в этом движке в основном делаются с уклоном на том, чтоб по умолчанию работать как в ванильном ЗП. "Ненужное" нужно явно включать, если этого хочешь. Да, потребуется адаптация, но если сам не можешь - в команде часто предлагают помощь по переезду.
Плюс, движок имеет достаточно много инструментов отладки. Там найти проблему поломки сейвов будет намного проще, чем в околооригинальном движке. Особенно потому что будут те, кто в случае крайней необходимости смогут запустить твой мод под отладчиком, изучить, и ткнуть пальцем в ошибку. -
4 минуты назад, Policai сказал:я им пользовался при вылетах с логом, чтоб понять, что именно косячит... но тут я не знаю как с ним работать
Немного не понял: у тебя сейчас стоит игровой _g.script, в котором отключён abort, или правленный _g.script, где аборт включён? Если первое, то переключись на правленный _g.script, поиграй пока не вылетет, а после скинь логи (вообще все файлы какие есть, я так понял их в результате несколько?). Мб что получится заметить.
-
11 минут назад, Policai сказал:в скриптах даже не ноль, у меня отрицательное значение в этом плане...
Ок, тогда вот что хочу, чтоб ты сейчас сделал:
- Нашёл скрипт _g.script
-
Открыл его и нашёл функцию abort, в ванили там такое находится
-- Крешнуть игру (после вывода сообщения об ошибке в лог) function abort(fmt, ...) local reason = string.format(fmt, ...) --error_log(reason) end
- Если у тебе скрипт точно такой же, как в этом посте (если не уверен - просто покажи эту функцию), значит у тебя abort отключён.
Если получилось так, что отключён (и с учётом того, что я без понятия, будет ли простое раскомментирование работать на движке Мортана), то можно его включить. Я так делал на конкурсе квестов для полностью ванильного ЗП (вроде как тоже от denis2000):
Спойлер- Скачай файл (custom_log.script) и закинь себе в геймдату.
-
Исправить функцию abort на это:
-- Крешнуть игру (после вывода сообщения об ошибке в лог) function abort(fmt, ...) local reason = string.format(fmt, ...) printf(fmt, ...) error_log(reason) end
-
В этом же файле найди функцию printf. Она должна выглядеть так:
function printf(fmt,...) local is_g = 0 local result = fmt if debug == nil then log(string.format(fmt,...)) return end local info_table = debug.getinfo(2) local script_name = string.gsub(info_table.short_src, "%.script", "") script_name = string.gsub(script_name, "gamedata\\scripts\\", "") if scripts_to_print[script_name] == false then return end script_name,is_g = string.gsub(script_name, "_g", "") if is_g == 0 then result = script_name..":("..info_table.currentline.."):"..fmt else result = fmt end log(string.format(result,...)) end
Тебе надо будет заменить последнюю строчку "log(string.format(result,...))" на "custom_log.print_log(string.format(result,...))". Получится что-то вроде:
function printf(fmt,...) local is_g = 0 local result = fmt if debug == nil then custom_log.print_log(string.format(fmt,...)) -- log(string.format(fmt,...)) return end local info_table = debug.getinfo(2) local script_name = string.gsub(info_table.short_src, "%.script", "") script_name = string.gsub(script_name, "gamedata\\scripts\\", "") -- if scripts_to_print[script_name] == false then return end script_name,is_g = string.gsub(script_name, "_g", "") if is_g == 0 then result = script_name..":("..info_table.currentline.."):"..fmt else result = fmt end custom_log.print_log(string.format(result,...)) --log(string.format(result,...)) end
-
Ну собственно, мы сделали так, что сообщения об ошибке будут выводиться в совсем другой текстовый файл "gamedata/log_file.log" т.к. в ванильном ЗП есть некоторые проблемы. Мб для движка Мортана это не требуется, но зато будет точно работать.
После запуска, если где-то в скриптах триггернулся abort, то инфа об ошибке будет занесена в этот файл. И можно будет после этого чинить не "симптомы", а причины вылетов.
-
12 минут назад, Policai сказал:вылеты по любому прописываются в сохранках после вылета...
Я тебя могу заверить на 100%, что это не так. Сейв сохраняет только часть информации, которая существует в мире игры на момент вызова функции сохранения. Чаще всего, это данные Alife объектов, в том числе данные ГГ, куда в модах в скриптах зачастую засовывают нужную им информацию, даже то что не относится к игроку.
У тебя функция abort() в скриптах работает? В ванильном ЗП она отключена, у тебя без понятия. Если её включить, ты сможешь отловить некоторые ошибки (причём с относительно понятными сообщениями), которые обычно игнорируются, а потом приводят к серьёзным поломкам (например, поломкам сейва).
-
В 04.03.2026 в 19:52, Policai сказал:По итогу в конце концов всё это приводит к вылету на рабочий стол без лога.
В 04.03.2026 в 19:52, Policai сказал:через 3-4 таких вылета, ломаются сохранки...
Я не профи в графике, но звучит это как нонсенс.
Сообщение "RENDER [Warning]: Too many occlusion queries were issued(>1536)!!" означает то, что сцена слишком сложная по освещению (слишком много проверок для света на видимость). И оно вообще никак не касается системы сохранения! Так что вылеты на стол и поломки сейвов - это что-то другое...В 04.03.2026 в 21:04, Policai сказал:Вообще концовка лога выглядит так:
(Движок Мортана)
RENDER [Warning]: Too many occlusion queries were issued(>1536)!!!
RENDER [Warning]: Too many occlusion queries were issued(>1536)!!!
RENDER [Warning]: Too many occlusion queries were issued(>1536)!!!
RENDER [Warning]: Too many occlusion queries were issued(>1536)!!!
RENDER [Warning]: Too many occlusion queries were issued(>1536)!!!
RENDER [Warning]: Too many occlusion queries were issued(>1536)!!!
RENDER [Warning]: Too many occlusion queries were issued(>1536)!!!
RENDER [Warning]: Too many occlusion queries were issued(>1536)!!!
xrEngine.exe caused an EXCEPTION_ACCESS_VIOLATION in module lua51.dll at 00000000025C6709
stack trace:
0x00000000025C6709 lua51.dll
0x00000000025C4B3F lua51.dll
0x00000000025C58C0 lua51.dll
0x00000000025C597A lua51.dll
0x00000000025EFEBD lua51.dll, lua_error + 23645 byte(s)
0x000000000260E951 lua51.dll, lua_close + 417 byte(s)
0x000000000260E509 lua51.dll, luaJIT_profile_stop + 32057 byte(s)
0x00000000004E112E luabind.dll, luabind::module_::module_ + 94 byte(s)
0x00000000BD81E819 xrGame.dll, CDialogHolder::operator= + 8642841 byte(s)
0x00000000BDA406CD xrGame.dll, CDialogHolder::operator= + 10878925 byte(s)
0x00000000BDA405C4 xrGame.dll, CDialogHolder::operator= + 10878660 byte(s)
0x00000000BD7C69EC xrGame.dll, CDialogHolder::operator= + 8282860 byte(s)
0x00000000BD65B0C4 xrGame.dll, CDialogHolder::operator= + 6793668 byte(s)
0x00000000400C86F5 xrEngine.exe, CObjectList::Update + 1413 byte(s)
0x00000000400647F4 xrEngine.exe, IGame_Level::OnFrame + 20 byte(s)
0x00000000BD9BDD5E xrGame.dll, CDialogHolder::operator= + 10344030 byte(s)
0x0000000040028498 xrEngine.exe, CSecondVPParams::IsSVPFrame + 808 byte(s)
0x0000000040027C2C xrEngine.exe, CRenderDevice::FrameMove + 332 byte(s)
0x0000000040027053 xrEngine.exe, CRenderDevice::on_idle + 275 byte(s)
0x00000000400278BF xrEngine.exe, CRenderDevice::message_loop + 111 byte(s)
0x00000000400279FF xrEngine.exe, CRenderDevice::Run + 303 byte(s)
0x00000000400CBE22 xrEngine.exe, InitSound2 + 850 byte(s)
0x00000000400CD41C xrEngine.exe, InitSound2 + 6476 byte(s)
0x00000000400CD5B9 xrEngine.exe, InitSound2 + 6889 byte(s)
0x00000000400E343E xrEngine.exe, CApplication::load_draw_internal + 81470 byte(s)
0x00000000225F7374 KERNEL32.DLL, BaseThreadInitThunk + 20 byte(s)
0x0000000022E3CC91 ntdll.dll, RtlUserThreadStart + 33 byte(s)
[error][ 487] : Попытка обращения к неверному адресу.Я не могу указать точное местоположение причины вылета, коллстек довольно затёртый (и мб отсутствием .pdb файлов - символов отладки), но по логу выглядит как будто какая-то луа ошибка. Мб логика какая... Не знаю, что у Мортана по инструментам отладки, поэтому хз что предложить для поиска причины вылета.
-
Во первых, на всякий: не я автор этой фичи. Я лишь заинтересован в ней.
10 минут назад, Stalk873 сказал:если боезапас закончится, они же оружие не перезарядят?
В отличии от С2, тут учитывается магазин. Если он закончился - всё, пушка не стреляет. Пулемётов из обрезов не будет. Про клины я без понятия, честно, не видел реализацию фичи.
26 минут назад, alinsky сказал:РПГ, Гаусс и прочие ваншотные стволы, надеюсь, можно будет добавить в исключения. Иначе это будет лютая имба.
С другой стороны, Гауссы и РПГ просто так не валяются: если уж так вышло, что мододел допустил наличие такой пухи рядом с полтером - ну... удачи:).
Хотя я думаю, возможность ограничить будет, фича ещё в разработке. Да и в принципе, фичи делаются отключаемыми (или явно, или просто "не мешает если не используешь").-
1
-
1
-
-
-
1 час назад, itsRepka сказал:Мне-бы простой движок на котором удобно работать да и всё...
ИМХО на ТЧ особо моддить смысла мало - ЗП более отточен в целом. Да, есть некоторые фичи в ТЧ, которых нет в ЗП, но фанатские форки это исправляют.
Из ЗП движков можно отметить OXR, AXR и IXR.- AXR (Advanced X-Ray) это считай просто основа для создания сюжетного мода: берёшь аддоны от разрабов, и занимаешься чисто сюжетом. Есть поддержка всей трилогии (в т.ч. ТЧ). Минусы: говорят про проблемы с производительностью.
- IXR (IX-Ray) - современный быстроразвивающийся форк X-Ray. Преимущество для обычного модедела над остальными тут, помимо классических "расширение функционала и новые фичи", это полный набор инструментов (в составе не только движок, но и компиляторы и SDK) и система аддонов (можно как легко делать аддоны к модам, которые будут очень легко совмещаться с другими, так и даже полноценный мод в них делать). Помимо ЗП, поддержка ЧН скоро появится, и в разработке ТЧ. Из минусов могу отметить возможные проблемы с совместимостью с обычным инструментарием, возможные баги, а также то, что движок очень чувствителен к косякам разработчика (те ошибки, что в оригинале проигнорируется, в IXR сразу всплывут на поверхность), хотя последнее не сказал бы, что минус...
- OXR (Open X-Ray) - тоже крупный форк ЗП движка. Тут мало что могу сказать т.к. не работал с ним. Вроде тоже есть поддержка всей трилогии, но насколько оно работает - не в курсе. Да и в принципе как-то мало новостей про него слышно.
Ещё можно упомянуть CoC и особенно Anomaly, но чаще всего там делают относительно мелкие аддоны, чем полноценные проекты. Хотя для своих целей могут быть хорошим выбором.
-
1
-
1
-
6 часов назад, itsRepka сказал:Почему практически все новые моды(за исключением всяких короткометражек), делаются на OGSR?
Ну, наверно по причине того, что пока что нет конкурентов. Так-то да, есть и другие форки движка ТЧ, и на подходе ещё движки, способные в моды на ТЧ, но пока что альтернатив на эту платформу нет.
-
1
-
-
2 часа назад, Cyrax сказал:я не шутил по поводу оригинальной игры и нового сюжета, который не будет сделан, а вы должны будете играть и представлять его сами себе!
Я понял, какую шутку можно на 1 апреля выдать:)
-
1
-
-
21 минуту назад, AleksandrR сказал:Артём планировал сделать постепенную прогрузку по мере передвижения,поделив всю карту на участки.
Обратите внимание ещё на коллизию - в движке это единый огромный меш, который стирает вообще любую информацию для повторяющихся объектов (даже MU). И загружается это разом.
В IX-Ray есть некоторые планы с исправлением этого, но это же не ваниль, и я не знаю какой у вас там движок.-
1
-
-
У меня вопрос: это стёб над Законом Шляпки, или "все совпадения случайны"?

-
1
-
-
Cyrax Вот тебе пояснительная бригада от меня: в сталкере есть постпроцессы (всякие там эффекты на экран типа "напился водки", "пнв" и подобных). В составе SDK уже есть редактор постпроцессов (ну у ванильного ЗП СДК точно видел как отдельная прога, в IX-Ray SDK он вроде тоже есть, но уже как редактор внутри редактора), но тут, как я понял, сделан:
а) Независимый от всего СДК редактор.
б) С некоторыми улучшениями (мб не помню просто, но в других редакторах постпроцессов я не припомню предпросмотр эффекта).В целом, почему нет? Может быть полезно, особенно если там есть ещё какие-нибудь киллер-фичи по сравнению с уже существующими редакторами постпроцессов (я не особо много с ними работал, а также мельком только глянул на описание инструмента тут).
-
1
-
-
Stalk873 про "солянки" я уже и забыл, а на аномали даже стандартный локационный пак далеко не каждый пытается поменять. Но в целом, вполне себе как вариант.
-
Теймуроглы Если найдутся - будет великолепно. Тем более про некоторые технические проблемы хрея, о которых я говорил: есть у меня и желание (эти проблемы отчасти и мой мод зацепили, хоть у меня локи далеко не такие большие, как эта Припять), и идеи, как их исправить. По крайней мере, в рамках ix-ray.
Так что пройдёт время, и возможно появится мод, способный задействовать эту локу как следует.
-
1
-
-
1 час назад, Теймуроглы сказал:Такую локу если и использовать то только делить на две а то и на три отдельные локи .
Как раз следствие того, что просто так хрей сейчас её не переварит в полноценном моде.
Ну или же ещё причиной может быть банальная избыточность (и дальнейшая оптимизация локи путём выкидывания лишнего): игру-то полноценную можно сделать, но вот когда дело движется к тому, чтобы реализовать, то надо хорошо подумать, как сделать всё так, чтоб беготни было минимум, и лока по максимуму была задействована. В апдейте 2.0 не думаю, что насколько перепилен сюжет ТЧ, что понадобилась бы Припять целиком. -
3 минуты назад, kapernaum сказал:без прикручивания к игре это просто путеводитель в гугле
Вроде сама цель - именно воссоздать локу, а ля виртуальный музей. С чем справляются на ура.
А про прикручивание к игре и сам думаю. Есть просто ряд технических особенностей хрея, из-за чего это проблематично сделать (молчу уже про проблему придумывания того, что вообще делать на такой локе), и которые интересно было б решить. Мб тогда и начнём видеть полноценные моды с сюжетом и заселением на этой локе...
-
2
-
-
nestandart_5443 Привет, ведётся ли какая-нибудь работа над адаптацией этого пака моделей куда-либо (тобой или кем-то ещё)? В особенности интересует IX-Ray.
Заинтересовался им, захотел у себя в моде использовать его, но текущее состояние мне не понравилось - к самим мешам претензий нет (разве что выявились проблемы с настройками костей некоторых...), а вот текстуры "какие-то не такие". Как я понял, бампов нет, и причиной тому является проблема их экспорта из С2? В целом, у меня имеется возможность у меня вытащить все нужные текстуры для моделей из С2 вместе с набором текстур, из которых можно будет собрать бампы под PBR в IX-Ray (хз насчёт бампов под ваниль, честно), но вот хочу узнать: кто-то уже подобным занимается или нет?

Сталкер Зов Припяти Увелечения прорисовки травы на движке X-Ray Engine x64
в Уроки, вопросы и советы по созданию модов
Опубликовано
Через HEX или дизассемблер только не пытайся редактировать эти файлы - проще самому внести правки в исходниках и собрать нормально.
Конкретно где задаётся это значение я не знаю, но можешь найти в движке саму ту консольную команду (поиск по движку строки с именем команды), и после проследить логику работы, и где лимиты назначены. Только учти: если сделать лимит слишком высоким, то у тебя движок тупо не вытянет траву.