00074. Динамические адреса памяти. ( Часть 1 - структура актёра )
Динамические адреса памяти. ( Часть 1 - структура актёра )|Сегодня мы будем бегать по адресам памяти, связанных со структурой актёра.|wmysterio|wmysterio||||Всем привет! Наконец то вышел урок по динамичным адресам памяти. Он будет составляться с большим количеством частей и не один раз будут переписываться, так как я успел изучить немного, но этого уже достаточно, что бы внести свои коррективы в игровой процесс. Прежде всего создадим актёра "0@", который будет жертвой наших испытаний:
Создав актёра, нужно получить его структуру опкодом:
Здесь: 0@ - хендл актёра 1@ - в переменную будет записан адрес структуры. Именно от неё мы будем сдвигаться по памяти. По сути в переменную запишется огромное число
Основная часть сделана. Получив структуру, мы можем двигаться по памяти и читать нужные адреса. Для сдвига очень полезно использовать опкод:
В переменную "1@" будет записана сумма двух целых чисел. Используя этот опкод, давайте получим адрес брони актёра:
Теперь в переменной "2@" будет находится адрес брони.
Здесь: 1@ + 0x548 - смещение от структуры ( см. смещения в Структуре актёра ) 2@ - результат этого смещения. Именно результат можно читать и записывать
Адрес мы вычислили. Теперь нам нужно узнать размер результата в байтах. Как видим, тип у этого адреса - float, значит размер ( size ) записи будет составлять 4 байта и значение собственно будет дробным. Давайте запишем 25.0 по этому адресу. Затем считаем броню обычным опкодом и запишем результат в ini-файл, что бы проверить правильность адреса. В результате в нас должен выйти такой скрипт:
Запускаем игру. После того, как увидели актёра, сворачиваем её и проверим, что адрес действительно правильный и в актёра стало 25 брони. Открываем созданный ini-файл и смотрим результат:
Выводы:
адрес правильный, запись была без ошибок;
в этом адресе принимаются дробные значения, хотя в опкодах это обозначено как целое число;
Вот и первая удачная лазейка помогла изменить свойства актёра без использования опкода. Используя базу данных вы можете провести свои тесты :) Естественно пока творить особо не над чем, так как пока эта база не полная, но со временем она будет обновляться и дописываться а так же выходить новые уроки по этой хитроумной памяти.|1549|1|0|78488779png
336`130
Last updated