Работа с памятью игры, exe - Страница 23 - Форум
Вторник, 06.12.2016, 11:13
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 23 из 23«12212223
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с памятью игры, exe
Работа с памятью игры, exe
VitalДата: Вторник, 23.07.2013, 19:18 | Сообщение # 331
Группа: Проверенные
Сообщений: 206
Статус: Offline
Кому-нибудь известно, что отвечает за лимит оружия в игре? Я знаю лишь то, что это статичный адрес, который изначально равен 47. Я некоторые свои находки об оружии писал в теме "Ваши открытия", но так и не нашёл пока адреса лимита оружия. CheatEngine находит свыше 50 тысяч результатов, и то в лучшем случае. Мне нужно лишь несущественно расширить лимит, что позволит вернуть (именно вернуть) в игру скейтборд как отдельное оружие. Все его ресурсы уже есть в игре (модель, текстура, значок, сведения в weapon.dat и default.ide), так что остаётся лишь увеличить лимит оружия, чтобы игра смогла правильно использовать скейт. У меня получилось вернуть его в работоспособном виде путём удаления значка комментария в упомянутых мной файлах, но работает это "неадекватно", так как идёт замена кулаков на скейт, его самого не видно (только в тех случаях видно, когда игрок зайдёт и выйдет из машины, также у водителей, вышедших из транспорта), иконка оружия проскакивает лишь на миг во время создания пикапа скейта. К тому же при отсутствии кастета игра не использует оружие 0 (кулаки), его даже нельзя выбрать, если ввести чит на набор оружия или подобрать несколько его единиц самому. Результаты такие:

Будет очень здорово сделать это и восстановить хотя бы скейт, я бы мог ещё попробовать вытащить UZI и M60 из VC, так как они, по некоторым данным, были в бета-версии SA.
Прикрепления: 6343494.jpg(75Kb) · 4562136.jpg(153Kb)


SCRIPTER
 
wmysterioДата: Четверг, 01.08.2013, 21:45 | Сообщение # 332
Группа: Пользователи
Сообщений: 3
Статус: Offline
У меня есть модель #Admiral. Подскажите, как мне вытянуть данные о характеристиках машины по этой модели?
Код
0@ = 0xC2B9DC // Начало блока Handling'а
0A8E: 1@ = 0@ + 0x4 // Mass
0A8E: 2@ = 0@ + 0xC // tMass
0A8E: 3@ = 0@ + 0x7C // EngineAcceleration
0A8E: 4@ = 0@ + 0x84 // TransmissionData.fMaxVelocity
0A8E: 4@ = 0@ + 0xA0 // fSteeringLock


Сообщение отредактировал wmysterio - Четверг, 01.08.2013, 21:47
 
Den_spbДата: Пятница, 02.08.2013, 02:35 | Сообщение # 333
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Адрес handling-блока, соответствующего определённой модели, вычисляется так:
Код
0@ = 445 // 445 - ID модели ADMIRAL
0@ *= 4
0@ += 0xA9B0C8
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 // получили адрес структуры CModel
0@ += 0x4A
0A8D: 0@ = read_memory 0@ size 2 virtual_protect 0 // получили номер handling-блока (handlingIndex)
0@ *= 224 // умножаем на размер блока
0@ += 0xC2B9DC // прибавляем адрес начала массива handling-блоков

Далее прибавляем к адресу нужные смещения и читаем значения с помощью опкода 0A8D. При этом размер чтения будет составлять: float - 4 байта, dword - 4 байта, word - 2 байта, byte - 1 байт.
Код
0A8E: 1@ = 0@ + 0x4 // Mass  
0A8E: 2@ = 0@ + 0xC // tMass  
0A8E: 3@ = 0@ + 0x7C // EngineAcceleration  
0A8E: 4@ = 0@ + 0x84 // TransmissionData.fMaxVelocity  
0A8E: 5@ = 0@ + 0xA0 // fSteeringLock

0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
0A8D: 3@ = read_memory 3@ size 4 virtual_protect 0
0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
0A8D: 5@ = read_memory 5@ size 4 virtual_protect 0
 
wmysterioДата: Суббота, 03.08.2013, 12:33 | Сообщение # 334
Группа: Пользователи
Сообщений: 3
Статус: Offline
Den_spb, Спасибо большое! А как получить максимальную скорость автомобиля с ID? TransmissionData.fMaxVelocity почему-то показывает ~1.3, хотя в Handling указано 200.0 ?
 
Den_spbДата: Суббота, 03.08.2013, 14:59 | Сообщение # 335
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Читаем комментарий к адресу на gtamodding.ru:
Код
+0x84 = TransmissionData.fMaxVelocity (Multiplied by 5.5555599e-3)

Multiplied by 5.5555599e-3 - значит "умножено на 5.5555599e-3"
200 * = 0,0055555599 = 1,11111198
 
андрей1981Дата: Воскресенье, 10.11.2013, 08:04 | Сообщение # 336
Группа: Пользователи
Сообщений: 12
Статус: Offline
объясните, пожалуйста, вот есть такая функция _isModelFPlane, 

что она делает и как ее в скриптах можно использовать
Прикрепления: 9559822.jpg(304Kb)
 
DK22PacДата: Воскресенье, 10.11.2013, 18:26 | Сообщение # 337
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Проверяет, что модель имеет тип FPlane (этот тип не используется в конечном варианте игры).

Сообщение отредактировал DK22Pac - Воскресенье, 10.11.2013, 18:28
 
андрей1981Дата: Вторник, 10.12.2013, 20:13 | Сообщение # 338
Группа: Пользователи
Сообщений: 12
Статус: Offline

Добавлено (10.12.2013, 20:13)
---------------------------------------------
почему этот код ничего не дает, можно так заменить id?

Код
if  
    Actor.DrivingVehicleType($PLAYER_ACTOR, #beagle)
else_jump @NONAME_4  
wait 0  
1@ = 511 // ID  
1@ *= 4  
1@ += 0xA9B0C8  
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 //CModel  
1@ += 0x4A  
0A8D: 1@ = read_memory 1@ size 2 virtual_protect 0 //handlingIndex  
1@ *= 224  
1@ += 0xC2B9DC  

1@ += 0x0
   

03F0: enable_text_draw 1  
045A: draw_text_1number 5.0 335.0 GXT 'NUMBER' number 1@  // ~1~

0A8C: write_memory 1@ size 4 value 520 virtual_protect 0
 

вот этот работает


Код
if  
    Actor.DrivingVehicleType($PLAYER_ACTOR, #INFERNUS)
else_jump @NONAME_4  
wait 0  
1@ = 411  
1@ *= 4  
1@ += 11120840  
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0  
1@ += 74  
0A8D: 1@ = read_memory 1@ size 2 virtual_protect 0  
1@ *= 224  
1@ += 12761564  
1@ += 40  
wait 0  
03C0: 0@ = actor $PLAYER_ACTOR car  
02E3: 2@ = car 0@ speed  
0092: 2@ = float 2@ to_integer  
03F0: enable_text_draw 1  
045A: draw_text_1number 5.0 335.0 GXT 'NUMBER' number 2@  // ~1~
0A8C: write_memory 1@ size 4 value 0.5 virtual_protect 0  
wait 0  
if  
   2@ > 25.0  
else_jump @NONAME_280  
0A8C: write_memory 1@ size 4 value 1.6 virtual_protect 0


Сообщение отредактировал андрей1981 - Вторник, 12.11.2013, 08:51
 
Den_spbДата: Среда, 11.12.2013, 20:46 | Сообщение # 339
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Цитата андрей1981 ()
почему этот код ничего не дает, можно так заменить id?
вот этот работает

Не понял вопроса
 
андрей1981Дата: Четверг, 12.12.2013, 21:47 | Сообщение # 340
Группа: Пользователи
Сообщений: 12
Статус: Offline
второй код меняет коэф.сцепления на разной скорости и нормально работает, а когда я получаю id транспорта (1@ += 0xC2B9DC  
1@ += 0x0), и прописываю новый (0A8C: write_memory 1@ size 4 value 520), ничего не происходит.

вообще мне нужно, чтобы на обычном самолете добавить все функции hydrы, рабочее шасси, верт. взлет и т.д., уже понятно, что так просто не получится.
есть .asi который добавляет верт. взлет на один из самолетов, но исходник автор не дает, хотя бы посмотреть какие там он функции использует.
в IDA по запросу plane есть такие:
_isModelPlane, CPlane__constructor, ну и т.д., с чего начать?

 
DK22PacДата: Пятница, 13.12.2013, 05:13 | Сообщение # 341
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
андрей1981, CPlane__constructor - функция, которая вызывается, когда создаётся новый самолёт. Она инициализирует поля, которые принадлежат CPlane.
Я бы с неё и начал - там бы и структура начала бы вырисовываться.
Потом разбираешь виртуальные методы CPlane:
Код
0x871948     ; _CPlane::`vtbl'

Есть за что зацепиться.
Цитата
вообще мне нужно, чтобы на обычном самолете добавить все функции hydrы, рабочее шасси, верт. взлет и т.д., уже понятно, что так просто не получится.

Тут наверное идёт привязка к ИД модели, возможно к ещё каким-то параметрам - поэтому надо исследовать функции, связанные с CPlane.
Вот что у меня есть по самолётам:
Код
CPlane__constructor         .text 006C8E20
CPlane__mAC                 .text 006C9140
CPlane__deflateTire         .text 006C9150
CPlane__destructor          .text 006C9160
CPlane__processControl      .text 006C9260
CPlane__preRender           .text 006C94A0
CPlane__render              .text 006CAB70
dummy_6CAB90                .text 006CAB90
CPlane__Fix                 .text 006CABB0
CPlane__mCC                 .text 006CAC10
CPlane__SetGearUp           .text 006CAC20
CPlane__SetGearDown         .text 006CAC70
CPlane__m6C                 .text 006CACB0
sub_6CAD90                  .text 006CAD90
CPlane__scalar_destructor   .text 006CADB0
CPlane__processControlInput .text 006CADD0
CPlane__m110                .text 006CB7C0
CPlane__mE0                 .text 006CC4B0
sub_6CCA50                  .text 006CCA50
sub_6CCAA0                  .text 006CCAA0
sub_6CCBB0                  .text 006CCBB0
sub_6CCC50                  .text 006CCC50
CPlane__blowUp              .text 006CCCF0
 
Ivan_BlackДата: Вторник, 17.12.2013, 04:35 | Сообщение # 342
Группа: Пользователи
Сообщений: 1
Статус: Offline

Цитата
Кому-нибудь известно, что отвечает за лимит оружия в игре? Я знаю лишь то, что это
статичный адрес, который изначально равен 47. Я некоторые свои находки
об оружии писал в теме "Ваши открытия", но так и не нашёл пока адреса
лимита оружия. CheatEngine находит свыше 50 тысяч результатов, и то в
лучшем случае. Мне нужно лишь несущественно расширить лимит, что
позволит вернуть (именно вернуть) в игру скейтборд как отдельное оружие.
Все его ресурсы уже есть в игре (модель, текстура, значок, сведения в
weapon.dat и default.ide), так что остаётся лишь увеличить лимит оружия,
чтобы игра смогла правильно использовать скейт. У меня получилось
вернуть его в работоспособном виде путём удаления значка комментария в
упомянутых мной файлах, но работает это "неадекватно", так как идёт
замена кулаков на скейт, его самого не видно (только в тех случаях
видно, когда игрок зайдёт и выйдет из машины, также у водителей,
вышедших из транспорта), иконка оружия проскакивает лишь на миг во время
создания пикапа скейта. К тому же при отсутствии кастета игра не
использует оружие 0 (кулаки), его даже нельзя выбрать, если ввести чит
на набор оружия или подобрать несколько его единиц самому. Результаты
такие:



0xC8AAB8

Код
#define     ARRAY_WeaponInfo                0xC8AAB8    // ##SA##
нашел в mta, надеюсь правильный

Добавлено (17.12.2013, 04:35)
---------------------------------------------
Отбой тревога, это начала блока

Сообщение отредактировал Ivan_Black - Вторник, 17.12.2013, 04:30
 
GolDДата: Среда, 15.01.2014, 13:27 | Сообщение # 343
Группа: Пользователи
Сообщений: 1
Статус: Offline
smile Как починить авто через память?
Разобрался


Сообщение отредактировал GolD - Среда, 15.01.2014, 15:03
 
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с памятью игры, exe
Страница 23 из 23«12212223
Поиск: