Работа с памятью игры, exe
|
|
walk | Дата: Вторник, 04.01.2011, 16:12 | Сообщение # 91 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| Quote (Den_spb) А есть ли там такой указатель? Ведь треугольник над целью в VC не создаётся. Я об этом думал, просто если прицелиться в педа, он реагирует, вот мне и хотелось узнать, может это просто ped event?
|
|
| |
DK22Pac | Дата: Среда, 05.01.2011, 00:44 | Сообщение # 92 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| После заNOPивания ф-ции, надо как-то её восстановить... ЗаNOPивается она так Code 0A8C: write_memory 0x58FBBF size 0x5 value 0x90 virtual_protect 1 Я поставил в начале кода Code 0A8D: 7@ = read_memory 0x58FBBF size 4 virtual_protect 1 0A8D: 8@ = read_memory 0x58FBC3 size 1 virtual_protect 1 И когда надо было восстановить ф-цию, делал так Code 0A8C: write_memory 0x58FBBF size 4 value 7@ virtual_protect 1 0A8C: write_memory 0x58FBC3 size 1 value 8@ virtual_protect 1 Всё работает, но бывает, когда начинаешь новую игру (не закрывая gta_sa.exe), всё сбивалось, ведь в 7@ и 8@ уже записывалось 0x90... Попытался узнать значения по этим адрессам, вывести на экран (как целые числа), вышло так Code 0A8C: write_memory 0x58FBBF size 4 value -1869574000 virtual_protect 1 0A8C: write_memory 0x58FBC3 size 1 value 144 virtual_protect 1 Но всё равно не работает... Как быть?
|
|
| |
Den_spb | Дата: Среда, 05.01.2011, 01:27 | Сообщение # 93 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (DK22Pac) Всё работает, но бывает, когда начинаешь новую игру (не закрывая gta_sa.exe), всё сбивалось Ты учёл, что при перезапуске сохранения, exe в оперативную память не перезагружается (т.е. изменения, сделанные скриптом, остаются)?
|
|
| |
walk | Дата: Среда, 05.01.2011, 06:28 | Сообщение # 94 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| Не особо уловил один важный момент, как в такие вещи передавать параметры: http://savepic.org/1124102.jpg ?
|
|
| |
DK22Pac | Дата: Среда, 05.01.2011, 11:14 | Сообщение # 95 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Тут два параметра - указатели на матрицу позиции и вращения. Code 04C4: store_coords_to 0@ 1@ 2@ from_actor $Player_Actor with_offset 0.0 -1.0 2.0 3@ = 0.0 4@ = 0.0 5@ = 0.1 0AC7: 6@ = var 0@ offset // указатель на матрицу позиции 0AC7:7@ = var 3@ offset // указатель на матрицу вращения PS Вызывать данную ф-цию надо как метод.
|
|
| |
walk | Дата: Среда, 05.01.2011, 14:52 | Сообщение # 96 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| DK22Pac, не совсем понял, допустим туда надо былоб передать параметры, как это сделать? Добавлено (05.01.2011, 14:52) --------------------------------------------- Или даже допустим считывать, приведи мне полный пример
|
|
| |
DK22Pac | Дата: Среда, 05.01.2011, 15:26 | Сообщение # 97 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Quote приведи мне полный пример Я же уже его привёл. Code 04C4: store_coords_to 0@ 1@ 2@ from_actor $Player_Actor with_offset 0.0 -1.0 2.0 3@ = 0.0 4@ = 0.0 5@ = 0.1 0AC7: 6@ = var 0@ offset // указатель на матрицу позиции 0AC7:7@ = var 3@ offset // указатель на матрицу вращения 0AA6: call_method setPositionAndRotation struct CCamera params 2 pop 0 7@ 6@
|
|
| |
walk | Дата: Среда, 05.01.2011, 15:34 | Сообщение # 98 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| DK22Pac, я не о том подумал
|
|
| |
DK22Pac | Дата: Среда, 05.01.2011, 16:01 | Сообщение # 99 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Quote Ты учёл, что при перезапуске сохранения, exe в оперативную память не перезагружается (т.е. изменения, сделанные скриптом, остаются)? В этом и проблема.
|
|
| |
Den_spb | Дата: Среда, 05.01.2011, 16:17 | Сообщение # 100 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (DK22Pac) В этом и проблема. Проблемы здесь быть не должно - надо сделать так, чтобы скрипт в начале работы записывал по адресам стандартные значения.
|
|
| |
DK22Pac | Дата: Среда, 05.01.2011, 17:05 | Сообщение # 101 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Я уже говорил... Я не знаю как стоит относиться к этим значениям... Я вывел изх на экран как целые числа, потом записывал, но это не дало результата.
|
|
| |
Den_spb | Дата: Среда, 05.01.2011, 17:21 | Сообщение # 102 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Code 0A8C: write_memory 0x58FBBF size 4 value -1869574000 virtual_protect 1 0A8C: write_memory 0x58FBC3 size 1 value 144 virtual_protect 1 Числа получились странные потому, что надо сначала читать 1 байт (опкод), а затем 4 байта (адрес).
|
|
| |
DK22Pac | Дата: Среда, 05.01.2011, 17:59 | Сообщение # 103 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Code 0A8C: write_memory 0x58FBBF size 1 value 0xE8 virtual_protect 1 0A8C: write_memory 0x58FBC0 size 4 value -0x1BA4 virtual_protect 1 Всё работает=))) Спасибо. Кстати что значит опКод E8? ну а -0x1BA4, это, как я понял, смещение...
|
|
| |
Den_spb | Дата: Среда, 05.01.2011, 18:19 | Сообщение # 104 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| call. Для перевода hex в asm удобно иметь под рукой hex-редактор.
|
|
| |
DK22Pac | Дата: Среда, 05.01.2011, 21:48 | Сообщение # 105 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Den_spb, а реально ли найти ф-цию, которая отрисовывает три треугольника на экране (в режиме джойпад)?
|
|
| |