Сделай гайд по memory, на примере хоть погоду сменить или что то легче,пожалуйста.
Адреса памяти чего-либо надо искать через специальную программу (например, Cheat Engine), это долгая история, но для GTA SA уже есть
готовые адреса, найденные другими энтузиастами.
Заходим на сайт, ссылку на который оставил выше, и видим строку:
0xC81320 - [word] Текущая погода.
Это означает, что по адресу памяти хранится значение типа
word (как я узнал, это 2 байта) – и это число означает текущую погоду. Теперь мы должны прочитать значение по адресу и узнать погоду.
Для работы с памятью можно использовать
встроенный модуль memory. Ищем функцию, которая читает 2 байта:
И, используя её, выводим в чат текущую погоду для примера:
memory = require 'memory'
function main()
addEventHandler('onWindowMessage', function(msg, wparam, lparam)
if msg == wm.WM_KEYDOWN or msg == wm.WM_SYSKEYDOWN then
if wparam == vkeys.VK_X then -- если нажата клавиша X
weather = memory.getint16(0xC81320) -- узнаем текущую погоду в памяти игры
sampAddChatMessage('Текущая погода: ' .. tostring(weather), -1) -- выводим в чат
end
end
end)
wait(-1)
end
А можем и изменить:
memory = require 'memory'
function main()
sampRegisterChatCommand('setweather', setweather)
wait(-1)
end
function setweather(arg) -- вызывается при написании команды /setweather
weather = tonumber(arg) -- преобразуем строку (аргумнет команды) в число
memory.setint16(0xC81320, weather) -- меняем текущую погоду в памяти игры
sampAddChatMessage('Текущая погода изменена на ' .. arg, -1) -- выводим в чат
end
Теперь погоду сможем изменить с помощью команды
/setweather [номер погоды]
.
P. S. Если я не отвечаю – значит занят, не надо писать много раз.