Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

Masayuki

Участник
80
31
Как вывести текст на экран?
Знаю что есть штука для смены стиля.
И printStyledString(text, time, style)
Для вывода самого текста.
Знаю что есть Очень много тем
По этому поводу.
НО есть вопрос как поменять расположение текста в пикселях?
В начале кода
local myfont = renderCreateFont('Arial', 10, 5)
10 размер шрифта, 5 флаг шрифта

В беск цикле
renderFontDrawText(myfont, 'text', 500, 500, 0xFFFFFFFF)
500, 500 - положение по х, у
 
  • Нравится
Реакции: North Trees

North Trees

Участник
39
2
В начале кода
local myfont = renderCreateFont('Arial', 10, 5)
10 размер шрифта, 5 флаг шрифта

В беск цикле
renderFontDrawText(myfont, 'text', 500, 500, 0xFFFFFFFF)
500, 500 - положение по х, у
А как сделать чтобы на команду?
Тип через переменную зарегать команду и сюда вписать?
 

ARMOR

Мне кажется, я всё проебал
Модератор
5,018
7,060

как можно чтобы эта машина красился в 2 цвет? через балончик ток нижный цвет меняется
Это уже зависит от модели и того как её создавали 3д дизайнеры

Это не опкоды, а оффсеты в классе CPed. Получаешь структуру CPed и потом к ней прибавляешь нужный оффсет, и получаешь оттуда значение
 
Последнее редактирование:

Masayuki

Участник
80
31
А как сделать чтобы на команду?
Тип через переменную зарегать команду и сюда вписать?
В мейне
sampRegisterChatCommand('test', function()
active = not active
sampAddChatMessage(tostring(active), -1)
end)

в беск цикле
if active then
renderFontDrawText(myfont, 'text', 500, 500, 0xFFFFFFFF)
end
 

North Trees

Участник
39
2
В мейне
sampRegisterChatCommand('test', function()
active = not active
sampAddChatMessage(tostring(active), -1)
end)

в беск цикле
if active then
renderFontDrawText(myfont, 'text', 500, 500, 0xFFFFFFFF)
end
Во пасиба, так и думал что просто после регистрации комманды функцию вписать

А как сделать штуку для выгрузки скрипта? Типа есть перезагрузка Ctrl+R, а надо выгрузить.
 
Последнее редактирование:

fokichevskiy

Известный
471
244
Во пасиба, так и думал что просто после регистрации комманды функцию вписать

А как сделать штуку для выгрузки скрипта? Типа есть перезагрузка Ctrl+R, а надо выгрузить.
 

E E E E E E E

Активный
154
26
Это уже зависит от модели и того как её создавали 3д дизайнеры


Это не опкоды, а оффсеты в классе CPed. Получаешь структуру CPed и потом к ней прибавляешь нужный оффсет, и получаешь оттуда значение
Как получить структуру Cped?
 

Notepad++

Известный
286
164
есть функа бега для раксампа?
Lua:
function getHeadingFromVector2d(x, y)  
    local angle = math.deg(math.atan2(y, x))
    if angle < 0 then
        angle = angle + 360
    end
    angle = angle - 90
    if angle < 0 then
        angle = angle + 360
    end
    return angle
end
function getDistanceBetweenCoords2d(x1, y1, x2, y2)
    return math.sqrt((x2-x1)^2 + (y2-y1)^2)
end

function angleToQuaternion(angle)
    local a = (math.rad(angle) / 2) 
    local qz = -(math.sin(a))
    local qw = math.cos(a)    
    return qz, qw 
end
function samp_create_sync_data(sync_type, copy_from_player)
    copy_from_player = copy_from_player or true
    local sync_traits = {
        player = {"PlayerSyncData", raknet.PACKET.PLAYER_SYNC, sampStorePlayerOnfootData},
        vehicle = {"VehicleSyncData", raknet.PACKET.VEHICLE_SYNC, sampStorePlayerIncarData},
        passenger = {"PassengerSyncData", raknet.PACKET.PASSENGER_SYNC, sampStorePlayerPassengerData},
        aim = {"AimSyncData", raknet.PACKET.AIM_SYNC, sampStorePlayerAimData},
        trailer = {"TrailerSyncData", raknet.PACKET.TRAILER_SYNC, sampStorePlayerTrailerData},
        unoccupied = {"UnoccupiedSyncData", raknet.PACKET.UNOCCUPIED_SYNC, nil},
        bullet = {"BulletSyncData", raknet.PACKET.BULLET_SYNC, nil},
        spectator = {"SpectatorSyncData", raknet.PACKET.SPECTATOR_SYNC, nil}
    }
    local sync_info = sync_traits[sync_type]
    local data_type = "struct " .. sync_info[1]
    local data = ffi.new(data_type, {})
    local raw_data_ptr = tonumber(ffi.cast("uintptr_t", ffi.new(data_type .. "*", data)))
    if copy_from_player then
        local copy_func = sync_info[3]
        if copy_func then
            local _, player_id
            if copy_from_player == true then
                _, player_id = getBotId()
            else
                player_id = tonumber(copy_from_player)
            end
            copy_func(player_id, raw_data_ptr)
        end
    end
    local func_send = function()
        local bs = bitStream.new()
        bs:writeInt8(sync_info[2])
        bs:writeBuffer(raw_data_ptr, ffi.sizeof(data))
        bs:sendPacketEx(sampfuncs.HIGH_PRIORITY, sampfuncs.UNRELIABLE_SEQUENCED, 1)
    end
    local mt = {
        __index = function(t, index)
            return data[index]
        end,
        __newindex = function(t, index, value)
            data[index] = value
        end
    }
    return setmetatable({send = func_send}, mt)
end
function runToPosition(tox, toy, toz)
    local px, py, pz = getBotPosition()
    local bx, by = getBotPosition()
    local angle = getHeadingFromVector2d((tox - bx), (toy - by))
    local rad = -math.rad(angle)
    local sinX, cosY = math.sin(rad), math.cos(rad)
    local qz, qw = angleToQuaternion(angle)
    local kfPos = 0.09
    local kfSpeed = 30
    while getDistanceBetweenCoords2d(bx, by, tox, toy) > 0.8 do
        wait(0)
        bx = (bx + sinX*kfPos)
        by = (by + cosY*kfPos)
        angle = getHeadingFromVector2d((tox - bx), (toy - by))
        qz, qw = angleToQuaternion(angle)
        rad = -math.rad(angle)
        sinX, cosY = math.sin(rad), math.cos(rad)
        
        local data = samp_create_sync_data("player")
        data.upDownKeys = 65408   
        data.keysData = 8
        data.position.x, data.position.y, data.position.z = bx, by, toz
        data.moveSpeed.x, data.moveSpeed.y = (sinX/kfSpeed), (cosY/kfSpeed)
        data.quaternion[3], data.quaternion[0] = qz, qw      
        data.health = getBotHealth()
        data.armor = getBotArmor()
        data.animationId = 1224
        data.animationFlags = 32772        
        data.send()
        setBotPosition(bx, by, toz)
        setBotRotation(angle)                    
    end 
end
Вытащил из какого-то тгк
 

Cocolemunto.

Потрачен
110
27
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
function getHeadingFromVector2d(x, y) 
    local angle = math.deg(math.atan2(y, x))
    if angle < 0 then
        angle = angle + 360
    end
    angle = angle - 90
    if angle < 0 then
        angle = angle + 360
    end
    return angle
end
function getDistanceBetweenCoords2d(x1, y1, x2, y2)
    return math.sqrt((x2-x1)^2 + (y2-y1)^2)
end

function angleToQuaternion(angle)
    local a = (math.rad(angle) / 2)
    local qz = -(math.sin(a))
    local qw = math.cos(a)   
    return qz, qw
end
function samp_create_sync_data(sync_type, copy_from_player)
    copy_from_player = copy_from_player or true
    local sync_traits = {
        player = {"PlayerSyncData", raknet.PACKET.PLAYER_SYNC, sampStorePlayerOnfootData},
        vehicle = {"VehicleSyncData", raknet.PACKET.VEHICLE_SYNC, sampStorePlayerIncarData},
        passenger = {"PassengerSyncData", raknet.PACKET.PASSENGER_SYNC, sampStorePlayerPassengerData},
        aim = {"AimSyncData", raknet.PACKET.AIM_SYNC, sampStorePlayerAimData},
        trailer = {"TrailerSyncData", raknet.PACKET.TRAILER_SYNC, sampStorePlayerTrailerData},
        unoccupied = {"UnoccupiedSyncData", raknet.PACKET.UNOCCUPIED_SYNC, nil},
        bullet = {"BulletSyncData", raknet.PACKET.BULLET_SYNC, nil},
        spectator = {"SpectatorSyncData", raknet.PACKET.SPECTATOR_SYNC, nil}
    }
    local sync_info = sync_traits[sync_type]
    local data_type = "struct " .. sync_info[1]
    local data = ffi.new(data_type, {})
    local raw_data_ptr = tonumber(ffi.cast("uintptr_t", ffi.new(data_type .. "*", data)))
    if copy_from_player then
        local copy_func = sync_info[3]
        if copy_func then
            local _, player_id
            if copy_from_player == true then
                _, player_id = getBotId()
            else
                player_id = tonumber(copy_from_player)
            end
            copy_func(player_id, raw_data_ptr)
        end
    end
    local func_send = function()
        local bs = bitStream.new()
        bs:writeInt8(sync_info[2])
        bs:writeBuffer(raw_data_ptr, ffi.sizeof(data))
        bs:sendPacketEx(sampfuncs.HIGH_PRIORITY, sampfuncs.UNRELIABLE_SEQUENCED, 1)
    end
    local mt = {
        __index = function(t, index)
            return data[index]
        end,
        __newindex = function(t, index, value)
            data[index] = value
        end
    }
    return setmetatable({send = func_send}, mt)
end
function runToPosition(tox, toy, toz)
    local px, py, pz = getBotPosition()
    local bx, by = getBotPosition()
    local angle = getHeadingFromVector2d((tox - bx), (toy - by))
    local rad = -math.rad(angle)
    local sinX, cosY = math.sin(rad), math.cos(rad)
    local qz, qw = angleToQuaternion(angle)
    local kfPos = 0.09
    local kfSpeed = 30
    while getDistanceBetweenCoords2d(bx, by, tox, toy) > 0.8 do
        wait(0)
        bx = (bx + sinX*kfPos)
        by = (by + cosY*kfPos)
        angle = getHeadingFromVector2d((tox - bx), (toy - by))
        qz, qw = angleToQuaternion(angle)
        rad = -math.rad(angle)
        sinX, cosY = math.sin(rad), math.cos(rad)
       
        local data = samp_create_sync_data("player")
        data.upDownKeys = 65408  
        data.keysData = 8
        data.position.x, data.position.y, data.position.z = bx, by, toz
        data.moveSpeed.x, data.moveSpeed.y = (sinX/kfSpeed), (cosY/kfSpeed)
        data.quaternion[3], data.quaternion[0] = qz, qw     
        data.health = getBotHealth()
        data.armor = getBotArmor()
        data.animationId = 1224
        data.animationFlags = 32772       
        data.send()
        setBotPosition(bx, by, toz)
        setBotRotation(angle)                   
    end
end
Вытащил из какого-то тгк
норм, но по высоте бегать не будет. бегает ток по x и y
 

E E E E E E E

Активный
154
26
У меня не работает почему то, что не так?

Lua:
    local wp_tb = imgui.ImBuffer(4)
    imgui.InputText('Set weapon (id): ', wp_tb)
    
    if imgui.Button('Set weapon') then
        getWeapontypeModel(wp_tb)
        requestModel(wp_tb)
        loadAllModelsNow()
        setCurrentCharWeapon(PLAYER_PED, wp_tb)
    end
 

ressedich

Новичок
2
0
привет, помогите пофиксить краш скрипта визуал выдачи денег, сам в софтах 0, не срите )))
local moonloader = require 'moonloader'
local memory = require 'memory'
local sampev = require 'samp.events'

function main()
while not isSampAvailable() do wait(100) end


sampRegisterChatCommand("takem", takemCommand)
end

function takemCommand()
-- Адрес памяти, где хранятся деньги игрока
local moneyAddress = 0xb7ce50
local moneyToAdd = 1000000

-- Получаем текущее значение денег
local currentMoney = memory.read(moneyAddres, 4, false)

-- Устанавливаем новое значение денег
memory.write(moneyAddress, currentMoney + moneyToAdd, 4, false)

-- Сообщение в чате
sampAddChatMessage("Ты получил миллион денег, ыы", -1)
end
 

Masayuki

Участник
80
31
привет, помогите пофиксить краш скрипта визуал выдачи денег, сам в софтах 0, не срите )))
local moonloader = require 'moonloader'
local memory = require 'memory'
local sampev = require 'samp.events'

function main()
while not isSampAvailable() do wait(100) end


sampRegisterChatCommand("takem", takemCommand)
wait(-1)
end

function takemCommand()
-- Адрес памяти, где хранятся деньги игрока
local moneyAddress = 0xb7ce50
local moneyToAdd = 1000000

-- Получаем текущее значение денег
local currentMoney = memory.read(moneyAddres, 4, false)

-- Устанавливаем новое значение денег
memory.write(moneyAddress, currentMoney + moneyToAdd, 4, false)

-- Сообщение в чате
sampAddChatMessage("Ты получил миллион денег, ыы", -1)
end

Попробуй так
 

ressedich

Новичок
2
0
скинь строку краша
SA-MP 0.3.7
Exception At Address: 0x6F8C3DD7
Base: 0x03DA0000

Registers:
EAX: 0x00000004 EBX: 0x0D2501C0 ECX: 0x00000001 EDX: 0x00000004
ESI: 0x00000000 EDI: 0x0177F044 EBP: 0x0177F0B8 ESP: 0x0177EFE0
EFLAGS: 0x00010202

Stack:
+0000: 0x00000004 0x00000000 0x6F7C93D9 0x0177F044
+0010: 0x00000000 0x00000004 0x00000000 0x000000BF
+0020: 0x70521630 0x70521630 0x70521630 0x7051E6F0
+0030: 0x6E2C9E48 0x6F7CA0D7 0x0177F044 0x00000000
+0040: 0x00000004 0x0D29D100 0x00000000 0x0D29D138
+0050: 0x0D29D100 0x6F7C8D68 0x0177F050 0x0D2501C0
+0060: 0x00000000 0x00000000 0x00000001 0x0D29D138
+0070: 0x01FFFFFF 0x6F7C7EAA 0x6F7C7EE4 0x0177F084
+0080: 0x0177F098 0x0177F09C 0x0177F0A0 0x0177F0C4
+0090: 0x6F7BBF50 0x0D2501C0 0x0D250D58 0xD28C4BD8
+00A0: 0x00000002 0x00000002 0x00000002 0x00000104
+00B0: 0x0177F323 0x00000001 0x0D2501C0 0x00000000
+00C0: 0x00000004 0x00017EBC 0x0177F070 0x0177F104
+00D0: 0x6F8ED760 0x00000000 0x0D2501C0 0x6F7BBF88
+00E0: 0x0D2501C0 0x01770001 0x0D2501C0 0xFFFFD8EC
+00F0: 0x0D2502CC 0x0D29D138 0x0177F0E0 0x6F6D280D
+0100: 0x0D2501C0 0x00000001 0x00000000 0x00000000
+0110: 0x00000000 0x00000000 0x0D2501C0 0x2EBE8995
+0120: 0x0000001F 0x0177F1E8 0x6F6F4360 0x00000000
+0130: 0x0D298CD8 0x0D2501F0 0x18EFB3B0 0x6F6D73EB
+0140: 0x0D2501C0 0x00000000 0x00000000 0x00000008
+0150: 0x18EFB3AC 0x030A001F 0x00000001 0x6F7792B2
+0160: 0x0D2501C0 0x00000001 0xFFFFFFFF 0x00000001
+0170: 0x0D2501C0 0x030A001F 0x0177F1F4 0x73B33568
+0180: 0x6F895DC9 0x0177F1BC 0x18EFB3AC 0x18EFB3AC
+0190: 0x00000001 0x0177F1D0 0x6F895CF0 0x1C1471D9
+01A0: 0x656B6100 0x0000006D 0x0177F460 0x00000002
+01B0: 0x00000000 0x0000000F 0x656B6100 0x0000006D
+01C0: 0x0177F2B8 0x0177F2C0 0x00000000 0x0000000F
+01D0: 0x2359D0DC 0x2359D0DC 0x0177F198 0x0177F218
+01E0: 0x6F3068C4 0xFFFFFFFF 0x0177F1F0 0x6F25FC24
+01F0: 0x18EFB3B8 0x00000001 0x6F25FC4E 0x00000B35
+0200: 0x030A001F 0x0D2501C0 0x0177F47C 0x6F8F16E8
+0210: 0x00000001 0x0177F218 0x73AF2BDA 0x18EFB3AC
+0220: 0x01BBFB18 0x00000AA5 0x73AF26FA 0x1C1471D9
+0230: 0x00000008 0x00000000 0x00000AA5 0x73AF2705
+0240: 0x6F2D74E7 0x00000AA5 0x0177F418 0x0177F488
+0250: 0x1C1471D9 0x01BD2040 0x6F2D74FC 0x1C1471D9
+0260: 0x0177F338 0x6F260115 0x1C1471D9 0x0000000F
+0270: 0x01BBFB18 0x6B61742F 0x01980000 0x00000000

SCM Op: 0x77E, lDbg: 0 LastRendObj: 19367

Game Version: US 1.0

State Information: Ped Context: 0
P0 (0,0) P1 (0,0) P2 (32,0) P3 (32,0)
P4 (32,0) P5 (32,0) P6 (32,0) P7 (0,0)
P8 (0,0) P9 (32,0) P10 (32,0) P11 (0,0)
P12 (32,0) P13 (0,0) P14 (0,0) P15 (0,0)
P16 (0,0) P17 (0,0) P18 (0,0) P20 (0,0) P21 (32,0) P22 (0,0) P23 (0,0)
P24 (0,0) P25 (32,0) P26 (32,0) P27 (0,0)
P28 (0,0) P29 (32,0) P30 (0,0) P31 (0,0)
P32 (0,0) P33 (0,0) P34 (0,0) P35 (0,0)
P36 (0,0) P37 (0,0) P38 (0,0) P39 (32,0)
P40 (32,0) P41 (32,0) P42 (0,0) P43 (0,0)
P44 (0,0) P45 (0,0) P46 (0,0) P47 (32,0)
P48 (0,0) P49 (32,0) P50 (32,0) P51 (32,0)
P52 (0,0) P53 (32,0) P54 (0,0) P55 (32,0)
P56 (0,0) P57 (32,0) P58 (0,0) P59 (32,0)
P60 (0,0) P61 (0,0) P62 (0,0) P63 (32,0)
P64 (0,0) P65 (32,0) P66 (0,0) P67 (0,0)
P68 (0,0) P69 (0,0) P70 (32,0) P71 (32,0)
P72 (0,0) P73 (0,0) P74 (0,0) P75 (0,0)
P76 (0,0) P77 (0,0) P78 (0,0) P79 (0,0)
P80 (0,0) P81 (0,0) P82 (32,0) P83 (0,0)
P84 (32,0) P85 (32,0) P86 (0,0) P87 (0,0)
P88 (0,0) P89 (0,0) P90 (0,0) P91 (0,0)
P92 (0,0) P94 (0,0) P97 (32,0) P99 (0,0)
P100 (32,0) P101 (0,0) P102 (32,0) P103 (0,0)
P104 (32,0) P105 (0,0) P106 (0,0) P107 (0,0)
P108 (0,0) P109 (0,0) P110 (0,0) P111 (0,0)
P112 (0,0) P113 (32,0) P114 (32,0) P115 (32,0)
P116 (0,0) P117 (0,0) P118 (0,0) P119 (0,0)
P120 (32,0) P121 (0,0) P122 (32,0) P123 (0,0)
P124 (0,0) P125 (32,0) P126 (0,0) P127 (0,0)
P128 (32,0) P131 (32,0)
P132 (0,0) P134 (0,0) P135 (32,0)
P137 (0,0) P138 (32,0) P139 (0,0)
P140 (0,0) P141 (0,0) P143 (0,0)
P144 (32,0) P145 (0,0) P146 (0,0) P148 (0,0) P150 (0,0) P151 (0,0)
P152 (0,0) P155 (32,0)
P156 (0,0) P158 (0,0) P159 (32,0)
P160 (0,0) P161 (0,0) P162 (0,0) P164 (0,0) P168 (0,0) P169 (0,0) P178 (0,0) P182 (0,0) P300 (0,0) P301 (0,0) P302 (0,0) P303 (0,0)
P304 (0,0) P305 (0,0) P306 (0,0) P307 (0,0)
P308 (0,0) P309 (0,0) P310 (0,0) P311 (0,0)
P312 (0,0) P313 (0,0) P314 (0,0) P315 (0,0)
P316 (0,0) P317 (0,0) P318 (0,0) P319 (0,0)
P320 (0,0) P321 (0,0) P322 (0,0) P323 (0,0)
P324 (0,0) P325 (0,0) P326 (0,0) P327 (0,0)
P328 (0,0) P329 (0,0) P330 (0,0) P331 (0,0)
P332 (0,0) P333 (0,0) P334 (0,0) P335 (0,0)
P336 (0,0) P337 (0,0) P338 (0,0) P339 (0,0)
P340 (0,0) P341 (0,0) P342 (0,0) P343 (0,0)
P344 (0,0) P345 (0,0) P346 (0,0) P347 (0,0)
P348 (0,0) P349 (0,0) P350 (0,0) P351 (0,0)
P352 (0,0) P353 (0,0) P354 (0,0) P355 (0,0)
P356 (0,0) P357 (0,0) P358 (32,0) P359 (0,0)
P360 (32,0) P361 (0,0) P362 (0,0) P363 (0,0)
P364 (32,0) P365 (32,0) P366 (32,0) P367 (32,0)
P368 (32,0) P369 (0,0) P370 (0,0) P371 (0,0)
P372 (0,0) P373 (32,0) P374 (32,0) P375 (0,0)
P376 (32,0) P377 (32,0) P378 (32,0) P379 (32,0)
P380 (0,0) P381 (32,0) P382 (32,0) P383 (32,0)
P384 (0,0) P385 (0,0) P386 (32,0) P387 (32,0)
P388 (32,0) P389 (0,0)

local moonloader = require 'moonloader'
local memory = require 'memory'
local sampev = require 'samp.events'

function main()
while not isSampAvailable() do wait(100) end


sampRegisterChatCommand("takem", takemCommand)
wait(-1)
end

function takemCommand()
-- Адрес памяти, где хранятся деньги игрока
local moneyAddress = 0xb7ce50
local moneyToAdd = 1000000

-- Получаем текущее значение денег
local currentMoney = memory.read(moneyAddres, 4, false)

-- Устанавливаем новое значение денег
memory.write(moneyAddress, currentMoney + moneyToAdd, 4, false)

-- Сообщение в чате
sampAddChatMessage("Ты получил миллион денег, ыы", -1)
end

Попробуй так
не получилось(