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

Редактирование движка

Рекомендуемые сообщения

 

Автор темы: ForserX

Предложения по правкам движка

Сборки:

Правки:

Спойлер

Ссылка: ЯндексДиск

Изменения:

  • Отсутствие старфорсоов и сопутствующих проблем
  • В nodvd-вариантах из за сбоев в циклах движка могли происходить вылеты, которые здесь невозможны
  • Нормальная система отлова багов, в nodvd её по сути не было, движковые логи не писало
  • Если у НПЦ проблемы с логикой, nodvd-вариант сразу крешится без лога и бьются сейвы, тут это пофиксено
  • Фикс ошибки "(bytes_need<=mSize) && vl_Count" на r2, связанной с перегрузками видеобуфера
  • Оптимизация требований к памяти (GlobalMemoryStatus вместо GlobalMemoryStatusEx)
  • Возможность менять hud_fov (несколько предустановок, рассчитано исключительно на данный экзешник)
  • Возможность менять fov для xrgame.dll от 1.0006 (несколько предустановок)
  • Отключено загаживание консоли/лога сообщениями "CL setdestroy"
  • Расширено меню установки fov для xrgame.dll
  • Добавлены опциональные (необязательные к установке) фиксы. Запуск и выбор - через 10006_patcher.cmd:
  • Увеличение числа стеков памяти
  • Увеличение DVB (Vertices Buffer) до 6 mb
  • Увеличение DIB (Indices Buffer) до 1 mb
  • Отключение ругательств рендера на шейдеры
  • Отключение ругательств на неправильное положение солнца в погодном конфиге (by lvg_brest)
  • Отключение разных дебаг-сообщений в xrgame.dll
  • Основан на новом экзешнике от GSC с принудительным ограничением кадров (защита от перегрева видеокарт/БП)
  • Возможность опционально отключать ограничитель кадров (защиту от перегрева видеокарт/БП)
  • Теперь единый экзешник + внешние патчеры ru/ww
  • Теперь единый fov/hud_fov switcher
  • Новый xrGameSpy.dll (сетевая игра переключается на сервер GSC)

Спойлер

Спойлер

Ссылка: ЯндексДиск

Изменения:

  • Анимация ходьбы anim_walk для пистолетов
  • Новые скриптовые методы:
    • inv_weight - получить вес макс. вес
    • set_inv_weight - установить макс. вес
    • move_on_belt - переместить предмет на пояс
    • item_on_belt - получить предмет на поясе
    • set_ammo_type - установить тип патронов
  • Новые скриптовые кaллбэки:
    • on_item_belt - перемещение предмета на пояс
    • on_item_ruck - перемещение предмета в рюкзак
    • on_item_slot - перемещение предмета в слот
    • on_switch_nightvision - переключение ПНВ
  • Новые консольные команды:
    • fov [5.0, 180.0] - глобальный fov камеры
    • k_ammo_on_belt [on\off] - патроны на поясе
  • Артефакты работают только из рюкзака, на поясе не действуют на ГГ - пояс теперь по сути контейнер артефактов. Из инвентаря действуют абсолютно все свойства артефактов (радиоизлучение, пулестойкость, хим. защита и т.д.).

Спойлер

Вылечивает xrgame.dll ТЧ 1.0006 от засирания лога/консоли ненужными дебаг-сообщениями вида:

  • --NeedToDestroyObject
  • Destroying local grenade
  • sv destroy object
  • ge_destroy not found on server
  • sv ownership id_parent id_entity
  • sv !ownership (entity already has parent)
  • sv reject. id_parent id_entity
  • [16-9] get_xml_name for

Проверялся как на чистой dll, так и на пропатченной через x-ray extensions/cut x-ray.
С мультиплеером правка несовместима.

Ссылка: ЯндексДиск

Установка: Скопировать clear_xrGame.cmd и patch2.exe в папку с xrgame.dll и запустить clear_xrGame.cmd.

Также для полной чистоты лога рекомендуется использовать "Исправленный экзешник для S.T.A.L.K.E.R ТЧ 1.0006 (v2)" или в своем экзешнике хекс-редактором найти и обнулить байты фразы: cl setDestroy [%d][%d]


Спойлер

Основан на X-Ray extensions portable r230

Изменения:

  • Включены худовые анимации спринта для ножа,болта,гранат,бинокля
  • Исправлено положение при виде с внешней камеры для ножа,болта,гранат,бинокля
  • Болту увеличено время жизни, cокращено время набора силы броска по ПК, возвращена старая анимация
  • Исправлена модель худа SPAS-12
  • Альтернативная анимация стрельбы из SPAS-12
  • Для xrgame применены стандартные настройки из X-Ray extensions portable r230 (пропатченный xrgame.dll необходим для работы скрипта восстанавливающего спринт)
  • Работают команды cam_fov/hud_fov, включено солнце и т.п.
  • Пара правок bind_stalker для повышения стабильности (by makdm и Zander_driver)

Ссылка: ЯндексДиск


Спойлер






Спойлер

Советы:

Так же в теме можно задавать различные вопросы, связанные с редактированием движка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
5 часов назад, AsuraH сказал:

Я не силен в таких вещах, можешь исправить пожалуйста?

могу, но ближе к выходным - занят щас. Напиши пока в ЛС подробнее нужную платформу и всё такое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 часа назад, AsuraH сказал:

но в исходниках я не разбираюсь от слова совсем

Ну так учите! Надеяться всё время на других очень глупо...
Поучите немного С++, как работать с Visual Studio. За вас всё время работать не собираются. Увы. Вам всего-лишь нужно переписать блок, который предложил ggGhosTt выше. Всё ОЧЕНЬ просто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Для себя чуток поковырял тему анимки без оружия в ТЧ (она же используется и для бинокля). Называется norm_torso_0_aim_0. На крайняк на ТЧ можно прицепить билдовариант, чтобы не бегал враскоряку. Из проблем, с ней торс  немного поворачивает, хотя в сдк нормально. Видимо, как-то под билдомодели настроена.

527e7f6908dc7ec.jpgaec1a674b850396.jpgdf70ad655147f8f.jpgee0b4156624e1a6.jpg

  

Изменено пользователем macron

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

liner глупо говорить "учите с++", как правило, такие "изучения" приводят к примитивным инициализациям переменных и некоторым циклам и разветвлениям. По сути, это все что может понадобиться (очень утрированно). Но если знаешь основы, это не значит, что сможешь понять что там ПЫС в 2007 написали. Одно дело работать со своим кодом, где понятно, какая функция за что отвечает. И другое дело, когда среди куч функций чужого кода, промелькивают понятные тебе кусочки. Тут нужно не учит язык, а учить движок и понимать, как он устроен. Понимать, какой файл за что отвечает, а сделать это без сторонней помощи очень трудно, наверное даже труднее, чем разобраться в СДК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

AziatkaVictor но это не отменяет необходимости изучения самого языка. Да, структуру проекта тоже важно понимать, но, как правило, это приходит с практикой работы на том ЯП, на которым и был сделан проект. У ПЫСов не какая-то явно-отличная структура от других проектов на Cpp.

А насчёт качества "изучений" - тут уж никто не застрахован. Все равно с опытом прийдет осознание своих ошибок.

Тут скорее вопрос в цели - если хочется просто чужие правки тянуть из репозов а-ля OXR, то может, знание языка и не столько нужно, сколько понимание структуры проекта, в остальном - начинать стоит с самого ЯП.

Изменено пользователем ggGhosTt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ggGhosTt ну это понятно. Я имел ввиду то, что человеку явно нужна небольшая правка, в движке он не разбирается, а начинать его изучать, явно долгое и непростое занятие. Одно требует знание второго, второе третьего и так далее.

К чему я клоню, не стоит так давить на новичков словами "За вас всё время работать не собираются", так как смысл этой темы просто пропадает, если нельзя надеяться на чужую помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
17 часов назад, antosha сказал:

раскачка для ЗП

Нету на ЗП никакой раскачки. Да и не нужна: у вас же есть возможность назначать анимации ходьбы
 

 

17 часов назад, antosha сказал:

исходниках нету файлов weaponhud.cpp и weaponhud.h

Это нормально. В ЗП другая система оружия (насколько я помню)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Ребят, а возможно ли вытащить из движка некоторые конфиги? Типо что бы не компилировать каждый раз по часу, а сделать ссылки из движка на такой-то конфиг допустим или как...  Например сделать ссылку из XrGame на dllку с одним только файлом UiMainIngameWindow.cpp (ну, так, к слову), что бы весь движок не пересобирать а только эту дллку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
40 минут назад, ZV4X сказал:

Ребят, а возможно ли вытащить из движка некоторые конфиги? Типо что бы не компилировать каждый раз по часу, а сделать ссылки из движка на такой-то конфиг допустим или как...  Например сделать ссылку из XrGame на dllку с одним только файлом UiMainIngameWindow.cpp (ну, так, к слову), что бы весь движок не пересобирать а только эту дллку?

К сожалению, "конфигов" в движке как-то не водится, поэтому вытащить их возможным не представляется 🙂. А вот вытащить отдельные функции и классы для ускорения сборку в отдельную DLL вполне возможно, хотя и немного геморно. Впрочем, в сети хватает примеров - например, тут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Sin! Спасибо, поглядим. А возможно-ли как-нибудь декомпилировать dll-ки? Просто у меня другой xrGame(как я понял) и исходников с него у меня нету, да и нигде нету походу. А править мне нужно именно его, ибо я только что правил исходники, собрал xrGame и в логе игры получил ошибку "error 2" Не пашет короче... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
11 минут назад, ZV4X сказал:

Sin! Спасибо, поглядим. А возможно-ли как-нибудь декомпилировать dll-ки? Просто у меня другой xrGame(как я понял) и исходников с него у меня нету, да и нигде нету походу. А править мне нужно именно его, ибо я только что правил исходники, собрал xrGame и в логе игры получил ошибку "error 2" Не пашет короче... 

Декомпилировать dll и exe файлы движка, увы, не получится. И бесполезно искать, только вирусы и трояны найдете. Нужно просить исходники у разрабов данного движка.


i-love-kfc одобряет: STSOC Weapons Pack

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
22 минуты назад, ZV4X сказал:

А возможно-ли как-нибудь декомпилировать dll-ки?

Смотря что понимать под декомпиляцией. Если получение полностью готового к сборке набора исходников - то, естественно, нет. Компиляция - процесс однонаправленный, и её результат, подобно фаршу, в обратную сторону не провернёшь. Но если задача заключается в исправлении уже готового бинарного файла (не самое простое занятие, предупреждаю), то декомпилировать машинный код из него в Си-подобный псевдокод вполне можно. Да, собрать обратно результат такой декомпиляции не выйдет, но вот анализировать происходящее "под капотом" движка после этого может стать полегче. Выбор инструментария, который может подойти для этой цели, невелик - на ум приходят разве что Hex-Rays Decompiler (плагин для IDA Pro) и Ghidra.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Sin! Блиин. Короче у меня есть исходники не от моей версии так сказать, так вот, я знаю что мне нужно поменять и в каком файле, но после сборки оно всё не работает(не подходит видимо(там даже размеры файлов отличаются на 300кб)). Задача - изменить готовый dll не прибегая к использованию исходников. Ибо их нет. Сделать патч допустим через иду или как-то ещё.

Цитата

декомпилировать машинный код из него в Си-подобный псевдокод вполне можно. Да, собрать обратно результат такой декомпиляции не выйдет

Можно ли после подобных манипуляций типо "редактировать Си-подобный псевдокод" собрать патч с правками для готового длл, раз саму длл не получится собрать? Потому что больше даже идей нету как сделать можно что-то такое

Изменено пользователем ZV4X

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
28 минут назад, ZV4X сказал:

Можно ли после подобных манипуляций типо "редактировать Си-подобный псевдокод" собрать патч с правками для готового длл, раз саму длл не получится собрать? Потому что больше даже идей нету как сделать можно что-то такое

Нет, редактирование псевдокода ничего не даст - декомпиляторы созданы для облегчения анализа, а не для патчинга. Придется (так или иначе) править сам машинный код. Если при этом хочется иметь поменьше дел с ассемблером и побольше с языками уровнем повыше  (по-моему, нормальное желание вменяемого любого прогера), то могу посоветовать изучить, как устроены движковые правки в GUNSLINGER и FreeZone (из последнего, кстати, можно еще и мини-фреймворк утащить для удобного создания врезок по нужным адресам, чтобы совсем избавиться от асмы в коде). Да, там всё реализовано на Delphi, но суть не меняется, эту схему можно заюзать и на любом другом языке (лишь бы WinAPI дёргать позволял напрямую). Суть у неё такова: сначала на нашем любимом языке высокого уровня пишем DLL, которая реализует требуемый функционал и в нужных местах пропатчит нам движок врезками, а потом где-нибудь на старте движка инжектим эту ДЛЛ в процесс игры и наслаждаемся результатом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Sin! Спасибо за много инфы:) В общем я заставил работать собраный движок 🙂

Изменено пользователем ZV4X

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Может быть кто-нибудь подскажет - как подредачить версию игры? Сначала хочу попробовать оригинальной движок удалить это "ver. 1.0006", потом уже ОГСРку можно попробовать.


Узнай обо мне больше - нажми на картинку.

274655491_.png.94d731a192f4f5200325efdda95b74e5.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 23.03.2021 в 22:40, KERIXFIX337X сказал:

Может быть кто-нибудь подскажет - как подредачить версию игры? Сначала хочу попробовать оригинальной движок удалить это "ver. 1.0006", потом уже ОГСРку можно попробовать.

Если менять на уже собранном движке, то открываешь файл xrGameSpy.dll через HEX-редактор и ищешь в поисковике "1.0006"  и меняешь на любую другую.

Если через исходники, то менять в файле xrGameSpy_MainDefs.h стока #define GAME_VERSION


Дополнено 12 минуты спустя

 Здравствуйте. При компиляции движка выскакивает 8к ошибок, которые ссылаются на файлы, которых в исходниках нет вообще!

Переустановка студии не помогла. На других движках все тоже самое.

Заранее спасибо.

Спойлер

854174723_2.thumb.png.8fa257811fa4cf87d67dce706897eb18.png

 

Изменено пользователем antosha

i-love-kfc одобряет: STSOC Weapons Pack

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
16 минут назад, antosha сказал:

При компиляции движка выскакивает 8к ошибок, которые ссылаются на файлы, которых в исходниках нет вообще!

Мб тебе нужно перенастроить решение. 
Такое обычно бывает, когда двиг задан под, например, win8 sdk, а у тебя этого компонента нету

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

А нет исходников СДК случайно? Где-то видел, но потерял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Всем здравия желаю! У меня возник вопрос по поводу сборок файлов типа dll для сталкера ТЧ 1.0006. Я пытаюсь изменить название быстрого сохранения с "ИмяПользователя_quicksave" на "дата_quicksave". Меня сейчас интересует один момент. Какими программами нужно собирать dll файлы и с какими настройками, с каким компилятором (Я слышал, что используют VisualStudio, но можно ли использовать другие программы? К примеру, подойдёт ли codeblocks?)?

На данный момент мне уже не нужна помощь! Я уже решил свою задачу с сохранениями.

Изменено пользователем xorda
Решение своей задачи я выполнил через скрипты.)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 02.01.2021 в 09:20, kozzinaki сказал:

stack trace:

D:\Games\STALKER Call of Pripyat\bin\xrGame.dll at 00007FFFD1093833 CActor::cam_Set() + 211 byte(s) in D:\Projects\xray-16\src\xrGame\ActorCameras.cpp line 52 + 42 byte(s)
D:\Games\STALKER Call of Pripyat\bin\xrGame.dll at 00007FFFD1088F73 CActor::Load() + 3075 byte(s) in D:\Projects\xray-16\src\xrGame\Actor.cpp line 433 + 3 byte(s)
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDDE2D29 IGame_ObjectPool::create() + 185 byte(s) in D:\Projects\xray-16\src\xrEngine\IGame_ObjectPool.cpp line 49
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDE124AC CObjectList::Create() + 28 byte(s) in D:\Projects\xray-16\src\xrEngine\xr_object_list.cpp line 489
D:\Games\STALKER Call of Pripyat\bin\xrGame.dll at 00007FFFD132F905 CLevel::g_sv_Spawn() + 133 byte(s) in D:\Projects\xray-16\src\xrGame\Level_network_spawn.cpp line 101 + 34 byte(s)
D:\Games\STALKER Call of Pripyat\bin\xrGame.dll at 00007FFFD1320513 CLevel::ProcessGameEvents() + 659 byte(s) in D:\Projects\xray-16\src\xrGame\Level.cpp line 321 + 337 byte(s)
D:\Games\STALKER Call of Pripyat\bin\xrGame.dll at 00007FFFD1320A86 CLevel::OnFrame() + 454 byte(s) in D:\Projects\xray-16\src\xrGame\Level.cpp line 439
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDDC1C06 MessageRegistry<pureRender>::Process() + 94 byte(s) in D:\Projects\xray-16\src\xrEngine\pure.h line 97
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDDC1441 CRenderDevice::FrameMove() + 337 byte(s) in D:\Projects\xray-16\src\xrEngine\device.cpp line 546
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDDC0BEB CRenderDevice::ProcessFrame() + 75 byte(s) in D:\Projects\xray-16\src\xrEngine\device.cpp line 323
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDDC0EF4 CRenderDevice::message_loop() + 532 byte(s) in D:\Projects\xray-16\src\xrEngine\device.cpp line 448 + 8 byte(s)
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDDC11B9 CRenderDevice::Run() + 569 byte(s) in D:\Projects\xray-16\src\xrEngine\device.cpp line 485
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDE15B3C Startup() + 1660 byte(s) in D:\Projects\xray-16\src\xrEngine\main.cpp line 332
D:\Games\STALKER Call of Pripyat\bin\xrEngine.dll at 00007FFFDDE16149 RunApplication() + 905 byte(s) in D:\Projects\xray-16\src\xrEngine\main.cpp line 403
D:\Games\STALKER Call of Pripyat\bin\xrEngine.exe at 00007FF72F25132B entry_point() + 667 byte(s) in D:\Projects\xray-16\src\xr_3da\entry_point.cpp line 55 + 6 byte(s)
D:\Games\STALKER Call of Pripyat\bin\xrEngine.exe at 00007FF72F2513F4 WinMain() + 20 byte(s) in D:\Projects\xray-16\src\xr_3da\entry_point.cpp line 77 + 8 byte(s)
D:\Games\STALKER Call of Pripyat\bin\xrEngine.exe at 00007FF72F25169E __scrt_common_main_seh() + 262 byte(s) in d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl line 288 + 33 byte(s)
C:\Windows\System32\KERNEL32.DLL at 00007FF82B2B4034 BaseThreadInitThunk() + 20 byte(s)
C:\Windows\SYSTEM32\ntdll.dll at 00007FF82DE83691 RtlUserThreadStart() + 33 byte(s)
 
[error][       3]: Системе не удается найти указанный путь.
 

В общем сделал ноги на ЗП Движке. Закомпилил всё как надо, но в последний момент загрузочного экрана вылет с таким логом.

Если все еще нужно: попробуй взять код не из ЛА, а вот отсюда: https://github.com/morrey/X-Ray-Engine-1.6/commit/5fa3cdc8895ecf7fb4f549bef3c32afd5a7d4d50

(файлы с расширением vcxproj можно не трогать)


i-love-kfc одобряет: STSOC Weapons Pack

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 10.04.2021 в 18:28, !Samagon сказал:

А нет исходников СДК случайно? Где-то видел, но потерял.

Любые сорцы (ЧИСТЫЕ) выкачай, там и будут. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую.
 В исходнике движка Anomaly, создал секцию анимации оружия.
Собрал решение в Visual Studio, закинул билд в корень аномалии, прописал в конфиге анимацию.
В игре анимация не проигрывается. Возможна я не правильно закинул сборку.
Вопрос. Куда после компиляции решения, положить полученный билд?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
--[[ ---------------------------------------------
 File       : sk_actor_dead.script
 Description: Смерть ГГ от первого лица
 Copyright  : 2011 © Cut X-Ray mod
 Author     : SkyLoader
-------------------------------------------------]]

local flag = false

local flag_dead,flad_circle = false,false
local time,time_c = 0,time_global() + 500

function is_killed()
	if not db.actor:alive() then
		if not flag_dead and not flad_circle then
		local dir=device().cam_dir
		db.actor:set_actor_direction(dir.x,dir.y,0) --'выравниваем направление взгляда, чтобы было падение более реалистичным
 		level.add_cam_effector("camera_effects\\surge_03.anm", 2532, false, "")
		level.add_pp_effector("surge_fade.ppe", 2011, false)
		level.disable_input()
		time = time_global()
		flag_dead=true
		end
		if flag_dead then
			if time_global()-time>3000 then
			level.enable_input()
			level.add_pp_effector("deadcity_wake.ppe", 4467, false)
			flag_dead=false
			flad_circle=true
			end
		end
		if flad_circle then
			if time_c<=time_global() then
			level.remove_pp_effector(4467)
			level.add_pp_effector("deadcity_wake.ppe", 4467, false)
			time_c = time_global() + 500
			end
		end
	end
end

что дописать чтобы после выполнения сам выкидывал в меню

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Как правильно компилить движок CoC'а?

В исходниках вроде как в каждой папке есть свой компилятор библиотеки, мне например нада скомпилировать только xrGame, там должен иметься сборщик библиотеки.


Нету проблем, пока про них не вспомню.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу