Редактирование движка |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Редактирование движка |
22.01.2016, 17:18
Сообщение
#4081
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Регистрация: 24.09.2010 |
Редактирование собранного движка Проект Cut X-Ray Цель проекта - создание отдельных изменений движка игры с их последующей комбинацией с другими правками. Авторы: SkyLoader, _призрак_ Для платформ: ТЧ 1.0004 и 1.0006, ЧН 1.5.10, ЗП 1.6.02 Адрес проекта на Google Code: Страница на Moddb: Пак 1 1. Исправление вылета "can't find rank" для оружий. 2. Смерть от первого лица. Видео: 3. Collide Возвращена коллизия мертвых тел с неписями и актором, как она сделана в старой физике билдов. Видео: 4. Круглый прицел. Возвращен круглый прицел вместо перекрестья, как билдах. 5. Исправление вида от 3-го лица. Изменено положение камеры от 3-го лица (1). Стрельба идет по перекрестью, а не по направлению актора. Если включить вид от 3-го лица (1) и удерживать Shift, то ГГ будет автоматически целиться в ближайшего непися или монстра. Проблемы: Стрельба по перекрестью идет также при виде от 3-го лица (2). Если при автоматическом нацеливании непись/монстр удалится или перейдет в оффлайн, будет движковый безлоговый вылет. Я думал вырезать это нацеливание, но решил оставить. Пак 2 1. Luminosity progress (только ТЧ) Возвращение шкалы освещения вместо шкалы "заметности" ГГ, как в билдах. 2. Запрет на доставание оружия в машине (только ТЧ и ЧН) и на лестнице (ТЧ, ЧН, ЗП). 3. Руки на руле в машине. (только ТЧ и ЧН) Видео: 4. Отсутствие распознавания неписей перекрестием: При наведении на непися перекрестье имеет дефолтный цвет. Также не показывает информацию о неписе, если смотреть на него. 5. Bind_object: Возможность использовать скрипты в мультиплеере. 6. Из оружия на классе бинокля можно стрелять (только ТЧ) Пак 3 1. Включение некоторых команд без использования ярлыка. Можно патчить по отдельности. Команды: -smap_4096 (максимально улучшенные карты теней), -mblur (включение блюра). 2. Измененная анимация безоружного гг. 3. Увеличение дистанции диалога с неписями (для создания сценок на расстоянии) 4. Исправление вылета при использовании предметов из трупов неписей. В отличии от версии Kolmogor'а, здесь отключено само меню использования. 5. Возможность поднимать болты как обычные инвентарные предметы (комбинировать с модом Charsi "Заканчивающиеся болты") Правки от RayTwitty aka Shadows Geometry LOD fix (CS 1.5.10) – расширение диапазона консольной команды r__geometry_lod Camblu crosshair for build 1865 – замена перекрестия прицела на кружок в билде 1865 Vertex buffer fix for NC Project – исправление вылета по переполнению буфера в NC Project NO 100 sovetov fix (COP 1.6.02) – убирает надписи "100 советов" с экрана загрузки Demo Record fix (SOC 1.0006) – убирает красные надписи в режиме demo_record Weapon Bobbing Beta (SOC 1.0006) – раскачка оружия при ходьбе (бета-версия) Build Loadscreen (SOC 1.0006) – билдовский экран загрузки со статичным изображением Detail Density fix (SOC 1.0006) – расширение диапазона консольной команды r__detail_density Mipbias fix (SOC 1.0006) – расширение диапазона консольных команд r1_tf_mipbias и r2_tf_mipbias No Quick Use fix (SOC 1.0006) – запрет на использование аптечек и бинтов по быстрым клавишам Sun Near fix (SOC 1.0006) – расширение диапазона консольной команды r2_sun_near Target Font (SOC 1.0006) – замена шрифта под перекрестием прицела на шрифт DI Unload Magazine fix (SOC 1.0006) – фикс скриптовой функции unload_magazine - теперь патроны разряжаются в инвентарь PNG Screenshots (SOC 1.0006) – игра теперь делает качественные скриншоты в формате png Правки от K.D. Правки от macron Исправленный экзешник для SoC 1.0006 Доработанный и исправленный экзешник для ТЧ 1.0006 (на основе Steam-версии без защиты) Включает в себя исправления вылетов, а также очистку лога игры от засоряющих сообщений. Более подробное описание внутри архива. Ссылка: X-Ray extensions portable Портативная версия расширений движка "X-Ray extensions" Платформы: ТЧ 1.0006, ЧН 1.5.10, ЗП 1.6.02 Эта версия имеет все нужные библиотеки и патчеры, а также настроенные bat-файлы для успешной компиляции. Более подробное описание внутри архива. Ссылка: Правки от Kolmogor Правленный xrGame для SoC 1.0004 Изменения: 1. Добавлена консольная команда fov [5.0, 180.0] - изменяет глобальный FOV камеры. 2. Добавлена консольная команда k_ammo_on_belt [on\off] - включает\выключает использование патронов с пояса. 3. Артефакты работают из рюкзака, а пояс служит контейнером. Ссылка: Правки от Kontro-zzz Изменение значения hud_fov Правки фиксированных значений параметра hud_fov - 0.37 либо 0.53, Должно работать на GOG версии и no DVD. Редактирование исходников Репозитории [SoC] () () () () () () () () () () () [CS] () () () () () () [CoP] () () () () () () () () () () () () () [2.0] () () NDA GSC Оригинальные версии движков Могут понадобиться для восстановления оригинальных библиотек. Официальный мультиплеерный (невышедший) патч для SoC Уроки Изменение плотности травы и создание патча через IDA Pro Автор: _призрак_ edited by: RayTwitty aka Shadows Для редактирования нам понадобится программа IDA Pro. 1. Запускаем IDA Pro. 2. Загружаем бинарник рендера xrRender_R1.dll или xrRender_R2.dll. 3. Теперь необходимо найти, где регистрируется консольная команда. Жмем Ctrl+T и вводим r__detail_density. 4. Находим функцию и тщательно ее разбираем (я ее полностью разбирать не буду, только укажу, где задаются параметры: Код регистрации консольной команды Код fld ds:flt_10064400 -- нижнее ограничение равное 0.6 or dword_1007CACC, 8 sub esp, 8 fstp [esp+30h+var_2C] mov ecx, offset unk_1007CA9C fld ds:flt_10064380 -- верхнее ограничение равное 0.2 fstp [esp+30h+var_30] push offset aSs; "ЪЩЩ>" push offset aR__detail_dens; "r__detail_density" call ds:??0CCC_Float@@QAE@PBDPAMMM@Z; CCC_Float::CCC_Float(char const *,float *,float,float) push offset sub_1005E080; void (__cdecl *)() call _atexit add esp, 4 5. Нам нужно увеличить плотность травы: следовательно нужно изменить верхнее ограничение. Как это сделать? Есть три варианта: Первый и самый логичный вариант: изменить переменную. Но тут есть небольшой подвох на котором я попался - этой переменной может пользоваться не одна функция, а несколько. И не ясно, что вы можете сломать, поменяв одну циферку на другую. Второй: взять другую, уже существующую переменную с подходящим значением. Хороший вариант которым я и воспользовался. Но и тут есть недостаток - переменных в бинарнике не так уж и много и можно просто не найти нужную. Третий: создать переменную. Отличный вариант. Единственный минус - я не знаю как это сделать Я пошел по второму пути. Два раза щелкнув на ds:flt_10064380, IDA отправила меня в дебри под названием .rdata. Там я нашел переменную, которая называлась - flt_1006452C и которая имела значение 0.0720999. Насколько я понял, flt_1006452C - не является названием переменной, это сборка из двух показателей - (тип числа)_(смещение). В нашем случае это число типа float, которое находится по адресу 1006452C. Ну что же, приступим к редактированию! 6. Отправляемся в самое начало файла. Как? Сверху есть что-то типа статус-бара - строка состоящая из синего, серого, черного цвета. Нажимаем там в любом месте мышкой и ведем влево до конца. 7. Опять ищем r__detail_density. Находим в этой функции строку fld ds:flt_10064338. Дальше самое интересное - жмем на вкладку Hex View и там у нас выделяются какие-то цифры. Это наша переменная 10064338, только написано наоборот. Сравните: Код 38 43 06 10 Похоже, не правда ли? 10 06 43 38 8. Начинаем редактировать. Нам нужно поменять 4338 на 452C (т.е. заменить ссылку с одной переменной на другую). Жмем правой кнопкой мыши на этих цифрах и выбираем пункт Edit. Меняем 38 43 на 2С 45. Дальше жмем где-нибудь в коде (это нужно сделать обязательно!). 9. После этого жмем правой кнопкой мыши и выбираем commit changes. Таким образом, мы поменяли ссылку на переменную и теперь верхнее ограничение будет равно значению из другой переменной. Но IDA не меняет исходный файл. В нашем случае мы можем только создать файл изменений. Делается это так: File -> Produce file -> Create DIF file. Назовем его test. Этот файл можно открыть при помощи блокнота и посмотреть, что получилось. 10. Теперь необходимо внести изменения из этого файла в движок. Это можно сделать при помощи патчера bpatch. Качаем, смотрим и запускаем bpatch.cmd. Я думаю, что батник вы сможете изменить самостоятельно (настроить пути файлов и т.п.) - там все элементарно. 11. Все! Изменения внесены в движок, можно тестировать Огромное спасибо Kolmogor'у и malandrinus'у. Если бы не они, я бы ничего не сделал. Спасибо вам еще раз. Спасибо и Rolan'у, с которым я очень много беседовал и тоже узнал много чего Полезные ссылки Сборка движка X-Ray Сообщение отредактировал RayTwitty - 27.08.2021, 00:15 |
 
|
|
|
|
23.09.2019, 16:37
Сообщение
#4082
|
|
Продвинутый геймер Репутация: 22 Группа: Участник Сообщений: 234 Награды: 3 Регистрация: 27.10.2010 |
|
 
|
|
23.09.2019, 18:38
Сообщение
#4083
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
-StalkMen-, тут ни мой, ни твой вариант не поможет.
При спавне предметов таким макаром, задействована камера. И от её взора зависит "высота" ( сила прилипания) спавна. Такую я ерунду замечал, что если опустить камеру в низ, то спавн уходил под землю, но если смотреть в небо то спавн появлялся на поверхности. Это мысль вслух. Может просто уменьшить скриптово дистанцию спавна от актора? До 0.1 например. Чем выше дистанция, тем меньше сила прилипания к грунту ( даже не сила, а больше градаций существует для преодоления силы) . Опять мысль вслух. Сообщение отредактировал Дизель - 23.09.2019, 19:36 |
 
|
|
23.09.2019, 19:47
Сообщение
#4084
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Winsor, чем отличается 32 и 64 физика? Там разные версии ode.
|
 
|
|
23.09.2019, 20:22
Сообщение
#4085
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Регистрация: 24.09.2010 |
Такую я ерунду замечал, что если опустить камеру в низ, то спавн уходил под землю, но если смотреть в небо то спавн появлялся на поверхности. Есть подобная фигня с воллмарками в СДК (да и в игре, но в ней скорее всего z-fight эффект). Если ты прав, тогда пусть залезет рядом на какую нибудь трубу и заспавнит. Если дело действительно только в высоте камеры над предметом, значит оно. -------------------- |
 
|
|
23.09.2019, 23:39
Сообщение
#4086
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
при спавне ему снимается флаг UsedAI_Location через нетпакет. А точно вовремя снимается? Координаты не успевают пересчитаться? Цитата если стоять сверху блоков - при спавне предмет проваливается на верх нижней плиты. если в момент спавна подпрыгнуть - предмет спавниться и падает на верхнюю плиту. На 0:30 не проваливаются и без прыжка. На 0:36 проваливается уже лежавшая. Возможно у тебя слишком тонкие шпильки, и чтобы они не проваливались, надо уменьшать шаг просчета физики. На х32 он может быть у тебя меньше(настройки или просто фпс выше), вот они и не проваливаются. Попробуй увеличить модель раз в 5, будут проваливаться или нет. Или аптечки под ноги поспавнить. Еще можно попробовать эти шпильки из урана сделать Сообщение отредактировал abramcumner - 23.09.2019, 23:47 |
 
|
|
24.09.2019, 08:40
Сообщение
#4087
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
при спавне ему снимается флаг UsedAI_Location через нетпакет. А точно вовремя снимается? Координаты не успевают пересчитаться? я переделал конструктор серверного объекта, флаг снимается уже не из скриптов, а прямо в момент CSE_ALifeObject::CSE_ALifeObject() - т.е. до корректировки позиции этот флаг уже снят. Цитата На 0:30 не проваливаются и без прыжка. На 0:36 проваливается уже лежавшая. ну там судя по всему спавн пришелся "сверху" модельки трубки, уже заспавнившейся. Цитата Возможно у тебя слишком тонкие шпильки, и чтобы они не проваливались, надо уменьшать шаг просчета физики. На х32 он может быть у тебя меньше(настройки или просто фпс выше), вот они и не проваливаются. можно немножко подробнее что это за щаг? objects_per_update? Цитата Еще можно попробовать эти шпильки из урана сделать сам топи урановые шпильки... По поводу спавна - проваливается, даже если спавнить по фиксированным координатам, не только по координатам актора. причем это происходит на большинстве поверхностей (материалов). сейчас попробую "поднять" спавн на толщину/высоту модели над поверхностью. а с SURFACE - у меня мозга не хватает понять что именно там происходит и почему. т.е. есть подозрение что указатели x32 и х64 разные по размеру и неправильно смещение по блоку памяти идет. Если тупо вставить код из Окси - то крашится игра дальше, когда пытается с полученным объектом surface что-то сделать. Велик тот человек который смог понять что к чему и как оно работает - я пока пас... Сообщение отредактировал Winsor - 24.09.2019, 08:41 |
 
|
|
24.09.2019, 11:17
Сообщение
#4088
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
можно немножко подробнее что это за щаг? objects_per_update? в консоли ph_frequency, который преобразуется в fixed_step и CPHWorld::SetStep Шпилька тоненькая, возможно за шаг просчета физики успевает упасть сквозь плиту настолько, что уже не пересекается с мешем, и благополучно падает дальше. Цитата сам топи урановые шпильки... Ну в смысле массу увеличить. Цитата а с SURFACE - у меня мозга не хватает понять что именно там происходит и почему. т.е. есть подозрение что указатели x32 и х64 разные по размеру и неправильно смещение по блоку памяти идет. Если тупо вставить код из Окси - то крашится игра дальше, когда пытается с полученным объектом surface что-то сделать. Велик тот человек который смог понять что к чему и как оно работает - я пока пас... Если аналогичной правки нет, надо добавлять. Смысл в том, что под х64 в структуре dContact компилятор укладывает члены не строго подряд, а выравнивает на 8 байт, в результате в памяти между членами появляются пропуски. ГСЦ для получения указателя на член использовало размер предыдущего члена. Под х32 без пропусков это работало, под х64 с пропусками - нет. Обнаруживается просто, запускаешь дебажную сборку и бегаешь, если будет срабатывать ассерт на неизвестные материалы - это оно. Там собственно все и будет видно: материал неизвестный, потому что указатель чуток промахивается, а правильные материалы рядом лежат. Напрямую эта правка из окси тебе не подойдет. В окси изменили структуру dContact, переставили в ней члены, поэтому и формулы другие. 3rd-party\ode\include\ode\contact.h Попробуй такой дефайн: #define SURFACE(Ptr, Stride) ((dSurfaceParameters*) (((byte*)Ptr) + (Stride-offsetof(dContact, geom) + offsetof(dContact, surface)))) |
 
|
|
25.09.2019, 14:33
Сообщение
#4089
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
Обнаруживается просто, запускаешь дебажную сборку и бегаешь, если будет срабатывать ассерт на неизвестные материалы - это оно. на моей сборке после замены dInfinity кроме проваливания - никаких подобных глюков не было. На текстуре "голой" земли так же проваливается вниз, уже с тем дефайном что Вы предлагали попробовать. причем если спавнить на плите на голой земле - она падает на землю и все хорошо. можно немножко подробнее что это за щаг? objects_per_update? в консоли ph_frequency, который преобразуется в fixed_step и CPHWorld::SetStep Шпилька тоненькая, возможно за шаг просчета физики успевает упасть сквозь плиту настолько, что уже не пересекается с мешем, и благополучно падает дальше. ph_frequency 50 ph_frequency 200 результат один и тот же. Даже не знаю. Ну пойду делать спавн выше, других идей нет. |
 
|
|
26.09.2019, 04:28
Сообщение
#4090
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Winsor, а что это у тебя за деталь на видео?
-------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
26.09.2019, 09:13
Сообщение
#4091
|
|
Мастер Игры Репутация: 248 Группа: Участник Сообщений: 1363 Награды: 4 Регистрация: 08.03.2010 |
Может просто уменьшить скриптово дистанцию спавна от актора? До 0.1 например. Мне кажется большой предмет вроде РПГ или пулемета, заспавнившись внутри актора нанесет ему нормальный такой урон -------------------- Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack -
------ Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha. |
 
|
|
26.09.2019, 16:46
Сообщение
#4092
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
Winsor, а что это у тебя за деталь на видео? трубка маленькая. изогнутая. Может просто уменьшить скриптово дистанцию спавна от актора? До 0.1 например. Мне кажется большой предмет вроде РПГ или пулемета, заспавнившись внутри актора нанесет ему нормальный такой урон к сожалению - проваливается даже если по координатам фиксированным спавнить. Сообщение отредактировал Winsor - 26.09.2019, 16:47 |
 
|
|
26.09.2019, 16:52
Сообщение
#4093
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Winsor, увеличь шейп модели. Это должно помочь.
Движок не оперирует шейпами в сечении меньше 1 сантиметра (точно), а от 1-10 см наблюдается околизия. Есть болты проваливающиеся под землю. Этот баг в ЧН был точно ( у меня в движке есть). Сообщение отредактировал Дизель - 26.09.2019, 17:30 |
 
|
|
26.09.2019, 22:32
Сообщение
#4094
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Регистрация: 24.09.2010 |
Вообще, предмет не должен никуда проваливаться без физ. пинка. В оригинале ТЧ, даже если предмет спавнится наполовину в стене, то там и остается, пока его кто-нибудь не тронет.
-------------------- |
 
|
|
26.09.2019, 22:46
Сообщение
#4095
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
RayTwitty, не всегда так.
В ЧН бывают баги, когда после загрузки сохранения, труп начинал биться в конвульсиях, и улетал в космос. А еще и вылетал движок пару раз от этого. Не знаю, как в оригинале ЧН, но у меня так. Сообщение отредактировал Дизель - 26.09.2019, 22:58 |
 
|
|
27.09.2019, 10:22
Сообщение
#4096
|
|
Мастер Игры Репутация: 248 Группа: Участник Сообщений: 1363 Награды: 4 Регистрация: 08.03.2010 |
Есть болты проваливающиеся под землю. Этот баг в ЧН был точно ( у меня в движке есть). Это не баг а фича, убирать сразу не нужно -------------------- Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack -
------ Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha. |
 
|
|
27.09.2019, 12:09
Сообщение
#4097
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
cjayho, я так же считаю. Типа болт утонул в жидком асфальте. Хавок.
|
 
|
|
27.09.2019, 19:47
Сообщение
#4098
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Кто знает формулу? Дано два вектора, текущий и нужный, надо вычислить угловую скорость чтобы объект развернулся на нужный вектор. Надо для ракет с стабилизацией, чтобы боком не летали.
-------------------- СТАЛКЕР только для ПК!
|
 
|
|
28.09.2019, 00:51
Сообщение
#4099
|
|
Игровой Эксперт Репутация: 328 Группа: Участник Сообщений: 2399 Награды: 5 Регистрация: 09.11.2009 |
Не знаю, видели ли вы или нет. Слежу за этим интересным проектом и ребята молодцы - прикрутили к ТЧ dx11 самописный как я понял, только не много трогая структуру из ЗП.
В теме проекта на предпоследней странице более подробно расписали. -------------------- Фотография - это единственный язык, который понятен в любой точке мира. (С)
|
 
|
|
29.09.2019, 16:22
Сообщение
#4100
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Кто знает формулу? Общем сам разобрался. Код --стабилизация корпуса в полёте. local stabilized_factor = 0.25 local torque = vector():set(0,0,0) local dir = rocket:direction() local alpha = math.acos(clamp(dir:dotproduct(new_dir), -1.0, 1.0)) if alpha > 0.0001 then torque:crossproduct(dir, new_dir):set_length(math.sin(alpha)*rock_vel*rock_vel*stabilized_factor) end ph_shell:set_torque(torque) Можно код добавить в движок, точней нужно. Нужно всем! Настоятельно рекомендую! Сообщение отредактировал NanoBot-AMK - 29.09.2019, 16:24 -------------------- СТАЛКЕР только для ПК!
|
 
|
|
30.09.2019, 12:53
Сообщение
#4101
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
увеличил модель, результат на видео... О_О
в начале запись из-под студии как то глюкнула, смотреть с 15-й секунды. нипонимай. |
 
|
|
Текстовая версия | Сейчас: 27.05.2024, 05:14 |