Редактирование движка |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Редактирование движка |
22.01.2016, 17:18
Сообщение
#3001
|
|
Игровой Бог Репутация: 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 |
 
|
|
|
|
04.12.2017, 12:37
Сообщение
#3002
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
Тут такой забавно момент нашёл, когда МП чистил. В движке нет ассертов на клавиши в текстах. То есть: если вы хотите вывести, на какую клавишу забиндено то или иное действие и допустите ошибку в названии, словите исключение. хм... у меня работает, $$ACTION_USE$$. или о чем именно вопрос? хотя да, в названиях я не ошибался. надо потестировать. === Товарищи, болезненно встал вопрос с памятью. тут уже как то обсуждалось, но конечного ответа я не увидел. Каким образом можно увеличить количество доступной памяти для движка ТЧ 1.0007? 1) переход на x64 - у кого то получилось сделать это полноценно и без особых глюков? на что нужно обратить внимание? 2) Загрузка текстур сразу в видеопамять? кто-то пытался что-либо делать с этим процессом? 3) каким образом можно бороться с фрагментацией памяти? запускать параллельно какой либо процесс, который будет дефрагментировать ее? 4) еще какие пути? |
 
|
|
04.12.2017, 15:42
Сообщение
#3003
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
1) переход на x64 - у кого то получилось сделать это полноценно и без особых глюков? на что нужно обратить внимание? Я в этом шарю. © Тут лучше в ЛС или в каком-нибудь месседжере. Есть ряд весёлых моментов. о чем именно вопрос? Не вопрос, а утверждение. При ошибке будет чистое исключение с эррором на xr_level_controller.cppВ xrOxygen сделал вот так на коленке. Мб позже сделаю нормальный вывод. Цитата [error]Expression : fatal error
[error]Function : GetActionAllBinding [error]File : xr_level_controller.cpp [error]Line : 357 [error]Description : <no expression> [error]Arguments : can't action id: 59 Сообщение отредактировал ForserX - 04.12.2017, 15:39 -------------------- В армии по 01.07.2020. |
 
|
|
05.12.2017, 09:58
Сообщение
#3004
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
Уважаемые - всегда интересовал вопрос -НПС бьются прикладом без анимации удара прикладом на самом оружии. Как они это делают? движок ТЧ 1.0007.
Насколько возможно создание именно движковых анимаций с применением любого худа? Например, курение сигареты, в итеме которой нет худа вообще. Сообщение отредактировал Winsor - 05.12.2017, 09:58 |
 
|
|
05.12.2017, 17:11
Сообщение
#3005
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Насколько я понимаю, НПЦ отыгрывает скелетную анимацию удара рукой, а камера актора отыгрывает анимацию, как ни странно, камеры (anm)
В движке нет ассертов на клавиши в текстах. То есть: если вы хотите вывести, на какую клавишу забиндено то или иное действие и допустите ошибку в названии, словите исключение. А если ввести Код bind_console demo_record 1 kOLOLO ?
Сообщение отредактировал RedPython - 05.12.2017, 17:15 -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
05.12.2017, 17:30
Сообщение
#3006
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
-------------------- В армии по 01.07.2020. |
 
|
|
09.12.2017, 18:19
Сообщение
#3007
|
|
Опытный Геймер Репутация: 3 Группа: Участник Сообщений: 150 Награды: 3 Регистрация: 16.02.2014 |
В окне инвентаря, окно описания выделенного предмета, к примеру ствол - сначала идут индикаторы параметров ствола, затем его текстовое описание. Вопрос: отступ текстового описания, чтоб индикаторы поместились, где прописан в движке ? Ткните носом, кто знает куда...
P.S. на АМК спрашивал - подсказали, мол в конфигах все приписано. Но как конфиг может знать заранее - будут индикаторы перед текстом или нет ? Значит все-таки в движке, вот только не вижу где... |
 
|
|
10.12.2017, 14:28
Сообщение
#3008
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Кто-то может подсказать, примерно из-за чего может быть ошибка в CUIWindow в OnMouseAction при проверке на попадание мыши в окно? В игре - при действии клика мыши на окне.
Падает с исключением на Frect wndRect = w->GetWndRect(); с w-> было nullptr Что самое интересное, в окне все корректно определено и проинициализировано, никаких отклонений нет. Два дня копаюсь, никак не могу выявить косяк. Понятно, что так из написанного разобраться сложно, но может у кого была подобная непонятная трабла? Сообщение отредактировал Zagolski - 10.12.2017, 15:12 |
 
|
|
11.12.2017, 17:11
Сообщение
#3009
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
|
 
|
|
11.12.2017, 22:03
Сообщение
#3010
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
ЗП, VS2015, UIWindow.cpp 331.
WINDOW_LIST::reverse_iterator it = m_ChildWndList.rbegin(); for(; it!=m_ChildWndList.rend(); ++it) { CUIWindow* w = (*it); Frect wndRect = w->GetWndRect(); if (wndRect.in(cursor_pos) ) { if(w->IsEnabled()) { if( w->OnMouseAction(cursor_pos.x -w->GetWndRect().left, cursor_pos.y -w->GetWndRect().top, mouse_action))return true; } } else if (w->IsEnabled() && w->CursorOverWindow()) { if( w->OnMouseAction(cursor_pos.x -w->GetWndRect().left, cursor_pos.y -w->GetWndRect().top, mouse_action))return true; } } Корни растут из скрипта, оттуда происходит вызов. Статики, кнопки - там же создаются. Если кто может знает, это ui-шный скрипт разгрузки из НЛС 7. На ТЧ/ЧН движке функционирует корректно, проблема всплыла на ЗП движке (на ЗП-UI). Но со скриптом все в порядке, там ошибок точно нет. Все работает как надо, лишь эта ошибка в момент выделения одним щелчком кнопки перемещения патронов, а затем ошибка не проявляется до перезагрузки. В ЗП переделан rect по сравнению с ТЧ/ЧН, разделен на pos и size, скорее всего где-то здесь заковырка. Что-то с областью не так. Причем ошибка то мелочная, видимо где-то не проинициализировано что-то, но это что-то никак отловить не могу. Пока проблему не решил, вот застрял на ней... Сообщение отредактировал Zagolski - 11.12.2017, 22:36 |
 
|
|
12.12.2017, 09:57
Сообщение
#3011
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
Так как ЗП нет могу предположить что чилд удаляется, но не происходит удаление из списка чилдов парента. OnMouseAction из скриптов на прямую не вызывается. тем более что Вы портируете код из ТЧ. IMHO - движок тут абсолютно не при чем. В ТЧ и ЗП несколько отличаются классы UI и работа с ними. нужно разбираться с кодом скрипта.
|
 
|
|
12.12.2017, 14:30
Сообщение
#3012
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Нашел в чем причина. В ЗП ui_list переделан на класс xr_vector, а в ТЧ/ЧН он определен как
class ui_list : public std::list<T,uialloc<T> >{ public: u32 size() const {return (u32)__super::size(); } }; Если вернуть старое определение ui_list ошибка исчезает, все работает корректно. Но можно ли это безболезненно делать и нужно ли вообще - тут надо разбираться... Может лучше будет в скриптах что-то поправить. У меня там, кстати, не только разгрузка начала браковать, но и перемещение артефакта из контейнера выдавало эту же бяку (в контейнер-то нормально). Сообщение отредактировал Zagolski - 12.12.2017, 14:36 |
 
|
|
12.12.2017, 15:00
Сообщение
#3013
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
12.12.2017, 18:18
Сообщение
#3014
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Да, вектор глючит. Попробовал сделать вектор на ЧН движке - появился этот же глюк. Разрабы в ЗП даже пометили как //. старый лист, они обычно так комментируют, когда переходят на экспериментальные новшества, чтоб если что откатиться обратно.
Так что надо обратно лист возвращать. Ну хорошо хоть разобрались в чем дело. Сообщение отредактировал Zagolski - 12.12.2017, 18:25 |
 
|
|
16.12.2017, 15:39
Сообщение
#3015
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Ага умники, вот только иногда следует отключать движковое управления БТРом. Так что придётся сделать булеву и скриптовый метод, для включением выключением управлением стрельбой из БТРа.
-------------------- СТАЛКЕР только для ПК!
|
 
|
|
16.12.2017, 15:42
Сообщение
#3016
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Ага умники, вот только иногда следует отключать движковое управления БТРом. Так что придётся сделать булеву и скриптовый метод, для включением выключением управлением стрельбой из БТРа. Можно пойти сложным путём и создать дубль класса для ГГ(Это ужас - я создавал копию). Дубль класса Car - Сообщение отредактировал andreyholkin - 16.12.2017, 15:45 |
 
|
|
16.12.2017, 17:27
Сообщение
#3017
|
|
Опытный Игрок Репутация: 5 Группа: Участник Сообщений: 65 Награды: 2 Регистрация: 03.05.2012 |
|
 
|
|
16.12.2017, 17:45
Сообщение
#3018
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Вывод в скрипты это уже другая история. Вот именно, по этому по дефолту твоя правка должна быть отключена, что бы со скритовыми решениями не конфликтовала. Короче, стрельбу из БТРа проще сделать скриптом, надо лишь что бы были нужные скриптовые методы: level.get_target_dist() -- дистанция до цели. Сообщение отредактировал NanoBot-AMK - 16.12.2017, 17:45 -------------------- СТАЛКЕР только для ПК!
|
 
|
|
16.12.2017, 17:49
Сообщение
#3019
|
|
Опытный Игрок Репутация: 5 Группа: Участник Сообщений: 65 Награды: 2 Регистрация: 03.05.2012 |
Вывод в скрипты это уже другая история. Вот именно, по этому по дефолту твоя правка должна быть отключена, что бы со скритовыми решениями не конфликтовала. Короче, стрельбу из БТРа проще сделать скриптом, надо лишь что бы были нужные скриптовые методы: level.get_target_dist() -- дистанция до цели. Вот только не могу понять в каком случаи нужно запрещать актору стрельбу из БТР? |
 
|
|
16.12.2017, 20:01
Сообщение
#3020
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Ну вы и погромисты! Шобы не конфликтовала со скриптовыми реализациями стрельбы из БТР, из БТР стрелять научились давно, именно туда куда смотрит камера актора.
-------------------- СТАЛКЕР только для ПК!
|
 
|
|
16.12.2017, 20:02
Сообщение
#3021
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Для управления БТРом нужны еще и скрипты, которых нет в оригинале.
|
 
|
|
Текстовая версия | Сейчас: 20.04.2024, 10:51 |