Работа с памятью игры, exe
|
|
walk | Дата: Пятница, 07.01.2011, 05:58 | Сообщение # 121 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| Quote (walk) DK22Pac, Мне не огонь, а клавиша G нужна, чтоб сделать метание гранат, как в шутерах, а то так не удобно sad Точно, чё я мудрю, мне же нужно клавишу огня надо имитировать, что-то совсем потерялся спасибо, за напоминаниеДобавлено (07.01.2011, 05:58) --------------------------------------------- Ещё вопрос, как выбрать нужный слот оружия?
|
|
| |
Den_spb | Дата: Пятница, 07.01.2011, 06:12 | Сообщение # 122 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (walk) щё вопрос, как выбрать нужный слот оружия? Если не ошибаюсь, то методом CPed__setActiveWeaponSlot (0x005E61F0). Параметр один (очевидно номер слота).
|
|
| |
walk | Дата: Пятница, 07.01.2011, 06:19 | Сообщение # 123 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| Den_spb, в том то и дело, что через него не выходит: Code :Noname_2 while true wait 0 if Player.Defined($PLAYER_CHAR) then if 0AB0: 71 then if 0491: actor $PLAYER_ACTOR has_weapon 16 then 0A96: 2@ = actor $PLAYER_ACTOR struct 0AA6: call_method 0x5E61F0 struct 2@ params 1 pop 1 16
0AB1: call_scm_func @imitate_keypad 1 No 17 wait 500 continue
:imitate_keypad 0@ *= 2 0@ += 0xB73458 0A8C: write_memory 0@ size 2 value 0x80 virtual_protect 0 0AB2: ret 0 end end end end Получаю только ошибку Добавлено (07.01.2011, 06:19) --------------------------------------------- Den_spb, и ещё одно, методом тестов заметил, что в имитации нажатия клавишь есть один минус, допустим в броске гранат ГГ будет кидать гранату только перед собой, в даль не кинет, также при рукопашном бое, будет только прямой удар, видимо что-то ещё должно передаваться в 0xB73458 ?
Сообщение отредактировал walk - Пятница, 07.01.2011, 06:17 |
|
| |
Den_spb | Дата: Пятница, 07.01.2011, 06:25 | Сообщение # 124 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (walk) Получаю только ошибку Попробуй модель гранаты сначала загрузить. Quote (walk) видимо что-то ещё должно передаваться в 0xB73458 Наверно должна учитываться и длительность нажатия клавиши.
|
|
| |
walk | Дата: Воскресенье, 09.01.2011, 13:51 | Сообщение # 125 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| Quote 0AA6: call_method 0x5E6280 struct 2@ params 1 pop 0 16 Получилось, просто видимо метод сам за собой всё чистит, поставил 0 вместо него и всё заработало, но вопрос из 123 поста всё ещё в силе Добавлено (07.01.2011, 08:13) --------------------------------------------- Всё, сделал, спасибо большое Den_spb и DK22Pac, за сообщение на форуме gtascriptd88
Сообщение отредактировал walk - Вторник, 11.01.2011, 01:28 |
|
| |
DK22Pac | Дата: Четверг, 13.01.2011, 01:04 | Сообщение # 126 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Den_spb, если будет время, посмотри, пожалуйста к фунции 0x7037C0. Она должна делать эффект "шума" (noise effect) на экране. 2 параметра (не знаю точно каких), вызываю через 0AA5, игру не крешит, но и изменений не видно. Ф-ция эта вызывается из функции включения Night Vision. Code .text:00704EE8 call sub_7037C0 ^^ Заnopивание этого участка памяти (5 байт) убирает шум в режиме "Night Vision".
Сообщение отредактировал DK22Pac - Четверг, 13.01.2011, 01:08 |
|
| |
Den_spb | Дата: Четверг, 13.01.2011, 01:37 | Сообщение # 127 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (DK22Pac) 2 параметра (не знаю точно каких) Не знаешь значений параметров или смысла параметров? Quote (DK22Pac) изменений не видно. Может надо в цикле её вызывать?
|
|
| |
DK22Pac | Дата: Четверг, 13.01.2011, 01:45 | Сообщение # 128 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Quote (Den_spb) Не знаешь значений параметров или смысла параметров? Да. Не знаю их назначения. Quote (Den_spb) Может надо в цикле её вызывать? Только что попробовал. Нет.
|
|
| |
Den_spb | Дата: Четверг, 13.01.2011, 02:26 | Сообщение # 129 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Со стандартными значениями параметров тоже не работает? Если да, то видимо одной этой процедуры не достаточно для создания нужного эффекта.
|
|
| |
DK22Pac | Дата: Суббота, 22.01.2011, 13:02 | Сообщение # 130 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Code +0 = [float] X-axis Rotation (Grad) +4 = [float] Y-axis Rotation (Grad) +8 = [float] Z-axis Rotation (Grad) +16 = [float] X-axis Rotation (Looking) +20 = [float] Y-axis Rotation (Looking) +24 = [float] Z-axis Rotation (Looking) +48 = [float] X-axis Position +52 = [float] Y-axis Position +56 = [float] Z-axis Position Что означает "Looking"? PS как я понял, матрица позиции/вращения одинакова (сама структура) для всех игровых обьектов?
Сообщение отредактировал DK22Pac - Суббота, 22.01.2011, 13:05 |
|
| |
Den_spb | Дата: Суббота, 22.01.2011, 16:28 | Сообщение # 131 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Устройство матрицы listener объяснял тут: http://sannybuilder.com/forums/viewtopic.php?pid=6385#p6385
|
|
| |
DK22Pac | Дата: Понедельник, 24.01.2011, 02:54 | Сообщение # 132 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Спасибо. Интересно... А ведь в эксе есть класс CMatrix? Значит, должны быть и функции наподобии translate, rotate, scale, transform. PS значит, описание на гтамоддинге неверное? Как понял я, матрица вращения состоит из трёх векторов (+3 статистических нуля в конце каждого ряда). PSS Это единичные векторы?
Сообщение отредактировал DK22Pac - Понедельник, 24.01.2011, 02:59 |
|
| |
Den_spb | Дата: Понедельник, 24.01.2011, 03:14 | Сообщение # 133 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (DK22Pac) Спасибо. Интересно... Пожалуйста. Quote (DK22Pac) А ведь в эксе есть класс CMatrix? Значит, должны быть и функции наподобии translate, rotate, scale, transform. Да, есть такой класс. Насчёт функций сказать не могу, но по идее должны быть. Quote (DK22Pac) PS значит, описание на гтамоддинге неверное? Да. На гтамоддинге написано, что компоненты матрицы - это углы, а на самом деле это координаты базисных векторов. Quote (DK22Pac) Как понял я, матрица вращения состоит из трёх векторов (+3 статистических нуля в конце каждого ряда). Матрица имеет размер 4х4 - координаты 3 базисных векторов, координаты радиус-вектора из начала глобальной системы координат в начало локальной и заглушка из нулей. Quote (DK22Pac) PSS Это единичные векторы? Да.
|
|
| |
DK22Pac | Дата: Среда, 26.01.2011, 00:36 | Сообщение # 134 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Денис, а ты не знаешь, как исследовать опкод через IDA? Какие функции вызывает, и т.д.
|
|
| |
Den_spb | Дата: Среда, 26.01.2011, 11:57 | Сообщение # 135 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Знаю. В SA опкоды объединены в группы, которые находятся в отдельных процедурах, так называемых "opcode handler". Чтобы перейти к нужному опкоду, надо при активной вкладке IDA View-A нажать G (переход по указанному адресу) и ввести @@opcode_XXXX , где XXXX - номер опкода.
|
|
| |