Показать сообщение отдельно
Старый 23.09.2022, 03:31   #22
grandshot вне форума grandshot
Аватар для grandshot
#667e34
Сообщений: 1,234
Репутация: 964
grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold
Hitman
Информация о репутации (grandshot)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
Enforcer
260
Priest
396
Snitch
780
grandshot / 964
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Я разобрал как хранится информация о камерах в 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 файла. Ну, может разберусь когда нибудь
Миниатюры
Нажмите на изображение для увеличения
Название: mafia_cameras_find_offset.png
Просмотров: 594
Размер:	176.3 Кб
ID:	2188   Нажмите на изображение для увеличения
Название: mafia_cameras_first_occur.png
Просмотров: 518
Размер:	173.0 Кб
ID:	2189   Нажмите на изображение для увеличения
Название: mafia_cameras_parse_struct.png
Просмотров: 586
Размер:	161.8 Кб
ID:	2190  

Последний раз редактировалось 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)