|
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||
| Ответ |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
|
#1 | ||
|
#667e34 Сообщений: 1,253
Репутация: 985
Hitman
|
Я разобрал как хранится информация о камерах в Game.exe. Ничего сложного на самом деле.
Для каждой из камер в исполняемом файле игры хранится структура размером 68 байтов. Всего таких структур 17, а из этого следует что все вместе они занимают 68 * 17 = 1156 байтов. В каждой версии игры смещение на эти структуры разное, именно поэтому MexeR работает только с Mafia 1.0. Найти смещение просто: В Hex редакторе производим поиск текста P Behind и переходим к самому первому совпадению. Затем выделяем 52 байта перед текстом. Начало выделения и будет являться смещением. В примере я разбираю 1.0 версию игры, поэтому смещение будет равно 2425944 (0x250458h). Это Crack от Fairlight, размер 2 486 272 байта. У английской Mafia 1.3 GOG (2 355 200 байта) смещение следующее: 2328316 (0x2386FCh). Для Steam версии, у первого EXE (2707456 байт) смещение будет то же самое 2328316 (0x2386FCh), и для второго (2 355 200 байт) что в копии игры в подпапке аналогично. Теперь переходим к разбору непосредственно структуры. Вначале идут три неизвестных значения типа integer, выделены оранжевым, по четыре байта каждые. Наверное какие то идентификаторы, нам они не важны. А вот дальше следуют десять значений типа float, тоже по четыре байта каждое. Они выделены зеленым. Проверяем первое: значение равно 0.5 , что соответствует параметру BakFront вкладки Person_ из MexerA. Дальше идут 0.31 что равно TopBot-m, 0.09 соответствующее Vertical viewing radius и т.д. Ну а в конце, желтым по серому, имя структуры ограниченное 16-тью байтами. Просто? Просто ![]() Имена структур иногда повторяются. Если имя начинается на P - это игрок, C - машина. Вкладке _Car1 соответствует четвертая по счету, которая вторая с именем C Beh. Hellboy. Вкладке _Car2 соответствует пятая по счету с именем C Behind Emeth. В MexeR она почему то инвертирована. Первое значение 0.15 равняется последнему пункту Position when turning, а последние значение 0.28 первому пункту AbovBelov соответственно. Не знаю почему так. Вкладка _Car3 это седьмая по счету C Behind3. Тут данные следуют последовательно. Вот и всё. Теперь можно распространять модифицированные exe вместо даунгрейдера. А в идеале конечно написать asi плагин, который бы работал со всеми версиями и брал изменения из txt файла. Ну, может разберусь когда нибудь
Последний раз редактировалось grandshot; 23.09.2022 в 03:46. |
||
| цитата |
| Поблагодарили: 5 |
Abradox (23.09.2022),
Firefox3860 (23.09.2022),
GOLOD55 (23.09.2022),
KlassenAS (26.09.2022),
User (30.09.2022)
|