Полезные сниппеты и функции

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Описание: Изменяет размер колес по хендлу машины
Lua:
function setVehicleWheelScale(vehicleHandle, fWheelScale)
    local vehiclePtr = getCarPointer(vehicleHandle)
    if vehiclePtr then 
        memory.setfloat(vehiclePtr + 0x458, fWheelScale, true)
    end
end
Пример использования:
Lua:
function main()
    while true do
        wait(0)
        if isCharInAnyCar(playerPed) then
            setVehicleWheelScale(storeCarCharIsInNoSave(playerPed), 0.0)
        end
    end
end
1599751701791.png
 

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Описание: Устанавливает прозрачность текстуре игрока по его хендлу (Без MoonAdditions) (нужен FFI)
Lua:
function SetRwObjectAlpha(handle, alpha)
    local pedEn = getCharPointer(handle)
    if pedEn ~= 0 then
        ffi.cast("void (__thiscall *)(int, int)", 0x5332C0)(pedEn, alpha)
    end
end
Пример использования:
Lua:
SetRwObjectAlpha(playerPed, 150)
1599933650050.png
 
Последнее редактирование:

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Описание: Заменяет клиентскую команду на другую по ее названию (требуется FFI)
Lua:
local ffi = require "ffi"

ffi.cdef[[
    typedef void(__cdecl *CMDPROC)(char *);
    struct stInputInfo
    {
        void                *pD3DDevice;
        void                *pDXUTDialog;
        void                *pDXUTEditBox;
        CMDPROC                pCMDs[144];
        char                szCMDNames[144][33];
        int                    iCMDCount;
        int                    iInputEnabled;
        char                szInputBuffer[129];
        char                szRecallBufffer[10][129];
        char                szCurrentBuffer[129];
        int                    iCurrentRecall;
        int                    iTotalRecalls;
        CMDPROC                pszDefaultCMD;
    }__attribute__ ((packed));
]]


function sampEditCommandName(oldName, newName)
    local input = ffi.cast("struct stInputInfo *", sampGetInputInfoPtr())
    for i = 0, 144 do
        if (oldName == ffi.string(input.szCMDNames[i])) then
            input.szCMDNames[i] = newName
            break
        end
    end
end
Пример использования:
Lua:
function main()
    sampEditCommandName("q", "exitgame")
end
(команда /q больше не будет использоваться для выхода из игры, будет /exitgame)
 

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
Описание: Меняет цвет информации о транспорте(/dl)
Lua:
function setDLcolorA(color)
    --R1
    memory.setuint32(getModuleHandle("samp.dll") + 0x712E1, color, true)
    -- R3 memory.setuint32(getModuleHandle("samp.dll") + 0x751D1, color, true)
    -- R4 memory.setuint32(getModuleHandle("samp.dll") +  0x75911, color, true)
end

function setDLcolor(color)
    --R1
    memory.setuint32(getModuleHandle("samp.dll") + 0x712E1, 0xFF000000 + color, true)
    -- R3 memory.setuint32(getModuleHandle("samp.dll") + 0x751D1, 0xFF000000 + color, true)
    -- R4 memory.setuint32(getModuleHandle("samp.dll") +  0x75911, 0xFF000000 + color, true)
end

Пример:
Lua:
setDLColor(0x55BB22)

Примечание: Функция setDLcolorA также меняет прозначность(первые 2 бита)
1600782872041.png
 

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Описание: Устанавливает MoveSpeed транспорту по его хендлу (в мунлоадере вроде как нету этого)
Lua:
function setVehicleMoveSpeed(handle, x, y, z)
    local ptr = getCarPointer(handle)
    if ptr ~= 0 then
        ffi.cast("void (__thiscall *)(uint32_t, float, float, float)", 0x441130)(ptr, x, y, z)
    end
end
Пример использования:
Lua:
setVehicleMoveSpeed(storeCarCharIsInNoSave(PLAYER_PED), 0.0, 0.0, 0.0)
Описание: Получает текущий MoveSpeed транспорта
Lua:
function getVehicleMoveSpeed(handle)
    local ptr = getCarPointer(handle)
    if ptr ~= 0 then
        local X = memory.getfloat(ptr + 0x44, true)
        local Y = memory.getfloat(ptr + 0x44 + 0x4, true)
        local Z = memory.getfloat(ptr + 0x44 + 0x8, true)
        return X, Y, Z
    end
end
Пример использования:
Lua:
local x, y, z = getVehicleMoveSpeed(storeCarCharIsInNoSave(PLAYER_PED))
 

CaJlaT

Овощ
Модератор
2,806
2,606
Описание: Простенькая кнопка, которая красится в зависимости от переменной.
Lua:
function imgui.SelectButton(name, bool, size)
    if bool.v then
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.0, 0.6, 0.0, 0.40))
        imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.0, 0.8, 0.0, 1.0))
        imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.0, 1.0, 0.0, 1.0))
    else
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.6, 0.0, 0.0, 0.40))
        imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.8, 0.0, 0.0, 1.0))
        imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(1.0, 0.0, 0.0, 1.0))
    end
    if not size then size = imgui.ImVec2(0, 0) end
    local result = imgui.Button(name, size)
    imgui.PopStyleColor(3)
    if result then bool.v = not bool.v end
    return result
end
Пример:
Lua:
local health = imgui.ImBool(false)

--OnDrawFrame
--Вариант 1: просто кнопка, переключающая переменную health.v
imgui.SelectButton('Health', health, imgui.ImVec2(100, 30))

--Вариант 2: кнопка, переключающая переменную health.v и выполняющая код
if imgui.SelectButton('Health', health, imgui.ImVec2(100, 30)) then
    SampAddChatMessage('Вы нажали на кнопку, переменная сейчас'..heath.v, -1)
end
ezgif-4-2a0d4d9bf5b2.gif
 

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Описание: Устанавливает статус открытия/закрытия окон у автомобиля
Lua:
function setCarWindowState(handle, windowId, state)
    local vehiclePtr = getCarPointer(handle)
    if vehiclePtr ~= 0 then
        ffi.cast("void (__thiscall *)(unsigned int, unsigned char)", state and 0x6D3080 or 0x6D30B0)(vehiclePtr, windowId)
    end
end
Пример использования:
Lua:
setCarWindowState(storeCarCharIsInNoSave(PLAYER_PED), 10, true) -- откроет водительское окно у машины, если сменить на false, то закроет
--[[
"FRONT_LEFT", 10,
"FRONT_RIGHT", 8,
"REAR_LEFT", 11,
"REAR_RIGHT", 9
]]
1601056342538.png
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,131
Описание: рисуем в окне ImGUI трехмерный куб с возможностью вращения
Lua:
function imgui.DrawCuboid(size, angle_x, angle_y)
  angle_x = math.rad(angle_x)
  angle_y = math.rad(angle_y)

  local cuboid_data = {
    points = {
      {-100, -100, -100}, {-100, -100, 100}, {-100, 100, -100},
      {-100, 100, 100}, {100, -100, -100}, {100, -100, 100},
      {100, 100, -100}, {100, 100, 100}
    },
    edges = {
      {0, 1}, {1, 3}, {3, 2}, {2, 0}, {4, 5}, {5, 7},
      {7, 6}, {6, 4}, {0, 4}, {1, 5}, {2, 6}, {3, 7}
    }
  }

  local pos = imgui.GetCursorScreenPos()
  local offset = size / 2

  local sin_x = math.sin(angle_x)
  local cos_x = math.cos(angle_x)
  local sin_y = math.sin(angle_y)
  local cos_y = math.cos(angle_y)

  for i, v in ipairs(cuboid_data['points']) do
    cuboid_data['points'][i][1] = v[1] * size
    cuboid_data['points'][i][2] = v[2] * size
    cuboid_data['points'][i][3] = v[3] * size
  end

  for i, v in ipairs(cuboid_data['points']) do
    local x = v[1]
    local y = v[2]
    local z = v[3]
    cuboid_data['points'][i][1] = x * cos_x - z * sin_x
    cuboid_data['points'][i][3] = z * cos_x + x * sin_x
    z = cuboid_data['points'][i][3]
    cuboid_data['points'][i][2] = y * cos_y - z * sin_y
    cuboid_data['points'][i][3] = z * cos_y + y * sin_y
  end

  for i, v in ipairs(cuboid_data['edges']) do
    local xy_1 = cuboid_data['points'][v[1]+1]
    local xy_2 = cuboid_data['points'][v[2]+1]
    imgui.GetWindowDrawList():AddLine(ImVec2(pos.x + xy_1[1] + offset, pos.y + xy_1[2] + offset),
    ImVec2(pos.x + xy_2[1] + offset, pos.y + xy_2[2] + offset), conv_col(ImVec4(1, 1, 1, 1)))
  end
end
Пример использования:
Lua:
imgui.OnFrame(function() return not isGamePaused() end,
function(self)

  imgui.SetNextWindowPos(ImVec2(500, 500), imgui.Cond.FirstUseEver, ImVec2(0.5, 0.5))
  imgui.SetNextWindowSize(ImVec2(500, 500), imgui.Cond.FirstUseEver)

  imgui.Begin('ImGUI 3D Rendering', nil)

  imgui.SetCursorPos(ImVec2(350, 350))
  imgui.DrawCuboid(1, 150.0, 150.0)

  imgui.End()

end)
 

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Описание: Изменяет цвет карты на радаре
Lua:
function editRadarMapColor(R, G, B)
    memory.setuint8(0x5864CC, R, true)
    memory.setuint8(0x5864C7, G, true)
    memory.setuint8(0x5864C2, B, true)
    -- еще есть Alpha канал, но эффекта нету после изменения
end
Пример использования:
Lua:
editRadarMapColor(255, 0, 0)
1601230138256.png
 
Последнее редактирование:

Akionka

akionka.lua
Проверенный
742
500
Описание: Изменяет цвет воды вне границ карты
Lua:
function setOutboundWaterColor(R, G, B)
  memory.setuint8(0x586442, R, true)
  memory.setuint8(0x575491, R, true)
  memory.setuint8(0x5758FF, R, true)
  memory.setuint32(0x58643D, G, true)
  memory.setuint32(0x57548C, G, true)
  memory.setuint32(0x5758FA, G, true)
  memory.setuint32(0x586438, B, true)
  memory.setuint32(0x575487, B, true)
  memory.setuint32(0x5758F1, B, true)
end
Пример использования:
Lua:
setOutboundWaterColor(255, 255, 255)
1601298893091.png

Описание: Устанавливает цвета ячейкам карты на карте (тавтология) в главном меню
Lua:
function setMenuMapColors(R_TL, G_TL, B_TL, R_TR, G_TR, B_TR, R_BL, G_BL, B_BL, R_BR, G_BR, B_BR)
-- первая буква в названии переменной - цвет, вторая - положение t = top = верхний, b = bottom = нижний
-- третья - положение r = right = правый, l = left = левый
  memory.setuint32(0x5865DB, R_TL, true)
  memory.setuint32(0x5865BD, R_TR, true)
  memory.setuint32(0x586617, R_BL, true)
  memory.setuint32(0x5865F9, R_BR, true)
  memory.setuint32(0x5865D6, G_TL, true)
  memory.setuint32(0x5865B8, G_TR, true)
  memory.setuint32(0x586612, G_BL, true)
  memory.setuint32(0x5865F4, G_BR, true)
  memory.setuint32(0x5865D1, B_TL, true)
  memory.setuint32(0x5865B3, B_TR, true)
  memory.setuint32(0x58660D, B_BL, true)
  memory.setuint32(0x5865EF, B_BR, true)
end
Пример использования:
Lua:
setMenuMapColors(0, 255, 255, 255, 0, 255, 255, 255, 0, 128, 128, 128)
1601299812525.png
 
Последнее редактирование:

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
Все началось с того, что мы просто хотели поменять цвет воде...
Спасибо @4el0ve4ik за поиск некоторых адресов
Аккуратно, в посте много ВОДЫ (прямо как в моем реферате) (хе-хе)

Во время тестирования ни один сидоджи не пострадал

Описание: устанавливает цвет воды.
Lua:
function changeWaterColorRGB(r, g, b, bState)
    if bState then
        memory.fill(0x56178D, 0x90, 5, false)
        memory.setfloat(0xB7C508, r, false)
        memory.setfloat(0xB7C50C, g, false)
        memory.setfloat(0xB7C510, b, false)
    else
        memory.setuint32(0x56178D, 0xFFEC3EE8, false)
        memory.setuint8(0x56178D + 0x4, 0xFF, false)
    end
end

function changeWaterColorRGBA(r, g, b, a, bState)
    if bState then
        memory.fill(0x56178D, 0x90, 5, false)
        memory.setfloat(0xB7C508, r, false)
        memory.setfloat(0xB7C50C, g, false)
        memory.setfloat(0xB7C510, b, false)
        memory.setfloat(0xB7C514, a, false)
    else
        memory.setuint32(0x56178D, 0xFFEC3EE8, false)
        memory.setuint8(0x56178D + 0x4, 0xFF, false)
    end
end
Пример:
Lua:
changeWaterColorRGBA(255, 255, 0, 255, true)
-- Для отключения - changeWaterColorRGBA(255, 255, 0, 255, false)
1601312151102.png

Описание: отключает воду. Спасибо @4el0ve4ik за адреса.
Lua:
function DisableWater(bState) -- By 4elove4ik
    if bState then
        memory.fill(0x53DD31, 0x90, 5, false)
        memory.fill(0x53E004, 0x90, 5, false)
        memory.fill(0x53E142, 0x90, 5, false)
    else
        memory.setuint32(0x53DD31,  0x1B191AE8, false)
        memory.setuint8(0x53DD31 + 0x4, 0x00, false)

        memory.setuint32(0x53E004, 0x1B1647E8, false)
        memory.setuint8(0x53E004 + 0x4, 0x00, false)
 
        memory.setuint32(0x53E142, 0x1B1509E8, false)
        memory.setuint8(0x53E142 + 0x4, 0x00, false)
    end
end
Пример:
Lua:
DisableWater(true)
1601312294870.png
Описание: отключает смену цвета экрана под водой.
Lua:
function DisableChangeColorUnderWater(bState)
    if bState then
        memory.setuint32(0x561014, 0x00010BE9, false)
        memory.setuint16(0x561014 + 0x4, 0x9000, false)
    else
        memory.setuint32(0x561014, 0x010A850F, false)
        memory.setuint16(0x561014 + 0x4, 0x0000, false)
    end
end
Пример:
Lua:
DisableChangeColorUnderWater(true)
1601313653545.png
Описание: отключает "плавающий" экран под водой, а также убирает потемнение экрана с глубиной
Lua:
function DisableBlurUnderWater(bState)
    memory.setuint16(0x705138, bState and 0x9090 or 0x0F74, false)
end
Пример:
Lua:
DisableBlurUnderWater(true)
1601313690645.png
Описание: отключает все эффекты накладываемые игрой под водой
Lua:
function DisableUnderWaterEffects(bState)
    memory.setuint8(0x52CCF9, bState and 0xEB or 0x74, false)
end
Пример:
Lua:
DisableUnderWaterEffects(true)
1601313141324.png
Описание: включает возможность ходить/ездить под водой
Lua:
function EnableDriveOrWalkUnderWater(bState)
    memory.setuint8(0x6C2759, bState and 1 or 0, false)
end
Пример:
Lua:
EnableDriveOrWalkUnderWater(true)
1601313019493.png
Описание: не дает вам падать с байка под водой (Спасибо @4el0ve4ik за адрес функции
Lua:
function DisableBikeFallInWater(bState) -- By 4elove4ik
    if bState then
        memory.fill(0x6B9DEA, 0x90, 5, false)
    else
        memory.setuint32(0x6B9DEA, 0xFFC1C1E8, false)
        memory.setuint8(0x6B9DEA + 0x4, 0xFF, false)
    end
end
Пример:
Lua:
DisableBikeFallInWater(true)
1601313058047.png
 
Последнее редактирование:

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
Описание: Меняет цвет капель дождя
Lua:
function changeWeatherRainStreaksColorARGB(color, bState)
    if bState then
        memory.setuint8(0x72B400, 0xBE, false)
        memory.setuint32(0x72B400 + 0x1, color, false)
        memory.setuint8(0x72B400 + 0x5, 0x90, false)

        memory.setuint8(0x72B464, 0xBA, false)
        memory.setuint32(0x72B464 + 0x1, color, false)
        memory.setuint8(0x72B464 + 0x5, 0x90, false)
    else
        memory.setuint16(0x72B400, 0xCE81, false)
        memory.setuint32(0x72B400 + 0x2, 0x00D2D2E6, false)

        memory.setuint16(0x72B464, 0xCA81, false)
        memory.setuint32(0x72B464 + 0x2, 0x00D2D2E6, false)
    end
end

function changeWeatherRainStreaksColorRGB(color, bState)
    if bState then
        memory.setuint8(0x72B400, 0xBE, false)
        memory.setuint32(0x72B400 + 0x1, 0x1E000000 + color, false)
        memory.setuint8(0x72B400 + 0x5, 0x90, false)

        memory.setuint8(0x72B464, 0xBA, false)
        memory.setuint32(0x72B464 + 0x1, 0x1E000000 + color, false)
        memory.setuint8(0x72B464 + 0x5, 0x90, false)
    else
        memory.setuint16(0x72B400, 0xCE81, false)
        memory.setuint32(0x72B400 + 0x2, 0x00D2D2E6, false)

        memory.setuint16(0x72B464, 0xCA81, false)
        memory.setuint32(0x72B464 + 0x2, 0x00D2D2E6, false)
    end
end
Пример:
Lua:
changeWeatherRainStreaksColorARGB(0xFFFFD700, true)
1601502352095.png
Описание: Меняет путь (папка должна существовать) сохранения файлов скриншота сампом(F8) включая само название файла (перезапишет файл если такой уже есть)
Lua:
function changeSAMPScreenName(filename, bState) --if bState == false путь меняется обратно на стандартный
    if bState then
        --для R3 заменить 0x710A4 на 0x74F94
        memory.setuint8(getModuleHandle("samp.dll") + 0x710A4, 0xB8, true)
        memory.setuint32(getModuleHandle("samp.dll") + 0x710A4 + 0x1, tonumber(ffi.cast("unsigned int", ffi.cast("char*", filename))), true)
        memory.fill(getModuleHandle("samp.dll") + 0x710A4 + 0x5, 0x90, 3, true)
    else
        memory.setuint32(getModuleHandle("samp.dll") + 0x710A4, 0x44247439, true)
        memory.setuint32(getModuleHandle("samp.dll") + 0x710A4 + 0x4, 0x3024448B, true)
    end
end
Пример:
Lua:
changeSAMPScreenName("C:\\Users\\User\\Test\\test.png", true)
Описание: Меняет путь сохранения файлов скриншота сампа, не включая папку screens и название скриншота (папка screens должна существовать)
Lua:
function changeSAMPScreenPath(path, bState) --if bState == false путь меняется обратно на стандартный
    --для R3 заменить 0x5E76F на 0x61B0F
    local funcaddr = getModuleHandle("samp.dll") + 0x5E76F
    if bState then
        memory.setuint8(funcaddr, 0xB8, true)
        patchPathBackCall = memory.getuint32(funcaddr + 0x1)
        memory.setuint32(funcaddr + 0x1, tonumber(ffi.cast("unsigned int", ffi.cast("char*", path))), true)
    else
        memory.setuint8(funcaddr, 0xE8, true)
        memory.setuint32(funcaddr + 0x1, patchPathBackCall, true)
    end
end
Пример:
Код:
changeSAMPScreenPath("C:\\Users\\User\\Test", true)
--Создаст скриншот C:\\Users\\User\\Test\\screens\\samp-000.png
Описание: Меняет оригинальное форматирование для папки скриншотов(Ограничение 0x22 (34) символа) (Оригинал - \screens\samp-%03i.png)
Lua:
function changeOriginalSAMPScreenFormat(format)
    --для R3 заменить 0xD75B8 на 0xE9898
    local address = getModuleHandle("samp.dll") + 0xD75B8
    local protect = memory.unprotect(address, 0x23)
    ffi.copy(ffi.cast("void*", address), format, 0x23)
    memory.protect(address, 0x23, protect)
end
Пример:
Lua:
changeOriginalSAMPScreenFormat("\\screens\\%03i.png")
--Скриншот сохранился с именем 000.png
Описание: Меняет форматирование для папки скриншотов на свое, ограничений по длине нет (Оригинал - \screens\samp-%03i.png)
Полезно для использования вместе с изменением пути сохранения скриншотов
Lua:
function changeSAMPScreenFormat(format, bState)
    --для R3 заменить 0x5E7B2 на 0x61B52
    local address = getModuleHandle("samp.dll") + 0x5E7B2
    if bState then
        patchPathBackPushFormat = memory.getuint32(address + 0x1)
        memory.setuint32(address + 0x1, tonumber(ffi.cast("unsigned int", ffi.cast("char*", format))), true)
    else
        memory.setuint32(address + 0x1, patchPathBackPushFormat, true)
    end
end
Пример:
Lua:
changeSAMPScreenFormat("\\screens\\ThisIsTheTestOfLongFormatting.NumberOfScreenIs %03i.png", true)
--Скриншот сохранился с именем ThisIsTheTestOfLongFormatting.NumberOfScreenIs 000.png
Описание: Убирает вывод строки в чат, о том что сделался скриншот (Screenshot Taken - sa-mp-000.png)
Lua:
function DisableSAMPScreenChatMessage(bState)
    --для R3 заменить 0x710D1 на 0x74FC1
    local address = getModuleHandle("samp.dll") + 0x710D1
    if bState then
        patchChatPointerBack = memory.getuint32(address + 0x1)
        patchScreenShotTakeBack = memory.getuint32(address + 0x7)
        patchAddToChatWindowBack = memory.getuint32(address + 0xD)
        memory.fill(address, 0x90, 20, true)
    else
        memory.setuint8(address, 0xA1, true)
        memory.setuint32(address + 0x1, patchChatPointerBack, true)
        memory.setuint16(address + 0x5, 0x6857, true)
        memory.setuint32(address + 0x7, patchScreenShotTakeBack, true)
        memory.setuint16(address + 0xB, 0xE850, true)
        memory.setuint32(address + 0xD, patchAddToChatWindowBack, true)
        memory.setuint16(address + 0x11, 0xC483, true)
        memory.setuint8(address + 0x13, 0x0C, true)
    end
end
Пример:
Lua:
DisableSAMPScreenChatMessage(true)
Описание: Меняет дистанцию прорисовки /dl, при этом не возникает баг с длинными полосками health bar'ов
Lua:
function ChangeDLLimitRange(fDistance, bState)
    -- для R3 заменить 0x7120F на 0x750FF
    local changeaddress = getModuleHandle("samp.dll") + 0x7120F + 0x2
    if bState then
        if PointerToDlFloat == nil then
            PointerToDlFloat = allocateMemory(4)
            memory.setuint32(changeaddress, PointerToDlFloat, true)
        end
        memory.setfloat(PointerToDlFloat, fDistance, false)
    else
        if PointerToDlFloat ~= nil then
            freeMemory(PointerToDlFloat)
            PointerToDlFloat = nil
        end
        --для R3 заменить 0xD3804 на 0xE5804
        memory.setuint32(changeaddress, getModuleHandle("samp.dll") + 0xD3804, true)
    end
end
Пример:
Lua:
ChangeDLLimitRange(1000, true) -- false для отключения
1601546095878.png
1601546160346.png
 
Последнее редактирование:

Cosmo

Известный
Друг
646
2,597
Описание:
Получает все оружие и его количество патронов которое есть в инвентаре у персонажа в виде массива
Table table = getAllWeapons():
function getAllWeapons()
    local tWeapons = {}
    for i = 0, 12 do
        local weapon, ammo, _ = getCharWeaponInSlot(PLAYER_PED, i)
        if weapon >= 1 and weapon <= 46 then
            tWeapons[weapon] = ammo
        end
    end
    return tWeapons
end

Пример использования:
Lua:
local myWeapons = getAllWeapons()
for k, v in pairs(myWeapons) do
    local weapon = (require "game.weapons").get_name(k)
    sampAddChatMessage(weapon..'('..k..') | Ammo: '..v, -1)
end

guns.png
 

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
Описание: Меняет цвет обводки HP Bar
Lua:
function changeHudBorderColorRGB(r, g, b)
    --Bottom Line
    memory.setuint8(0x7288C6, r, false)
    memory.setuint8(0x7288BC, g, false)
    memory.setuint8(0x7288BA, b, false)
    -- Top Line
    memory.setuint8(0x728876, r, false)
    memory.setuint8(0x72886D + 1, g, false)
    memory.setuint8(0x72886C, b, false)
    -- Left line
    memory.setuint8(0x728912, r, false)
    memory.setuint8(0x728908, g, false)
    memory.setuint8(0x728906, b, false)
    -- Right Line
    memory.setuint8(0x728962, r, false)
    memory.setuint8(0x728960, g, false)
    memory.setuint8(0x72895A, b, false)
end
Пример:
Lua:
changeHudBorderColorRGB(0x1E, 0xAA, 0x33)
1602270952367.png
 

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Описание: Рисует параллелограмм на экране
Lua:
function renderParallelogram(x, y, w, h, color) 
    renderBegin(4)
    renderColor(color)
    renderVertex(x, y)
    renderVertex(x + w, y)
    renderVertex(x - h, y + h)
    renderVertex(x - h, y + h)
    renderVertex(x + w, y)
    renderVertex(x + w - h, y + h)
    renderEnd()
end
Пример использования:
Lua:
renderParallelogram(300, 300, 150, 50, -1)
1602871823164.png