SA:MP Arizona [LUA] Проблемы с производельностью ПК при использование скрипта

rgnrz.

Новичок
Автор темы
3
0
Приветствую знатаков LUA-скриптингу,
Написал на днях скрипт == задача которого отображать значение состояния обоимы на один вид оружия "Desert Eagle" с изминением расположения отображения этих данных по координатам X и Y.
Но сталкнулся с одной проблемой, производительность ПК падает при использование данного скрипта, лаги-фризы..
Все работает по команде /setammo <X> и <Y> координаты [обычно я использую 850 500]
 

Вложения

  • deagleAMMOHUD.lua
    3.2 KB · Просмотры: 1
Последнее редактирование:
Решение
Lua:
local memory = require 'memory' -- Подключаем библиотеку для работы с памятью
-- Настройки HUD
local settings = {
    pos_x = 50,          -- Позиция по X
    pos_y = 50,          -- Позиция по Y
    font_name = "Arial", -- Название шрифта
    font_size = 20       -- Размер шрифта
}

function main()
    local font = renderCreateFont(settings.font_name, settings.font_size, 0)
    sampRegisterChatCommand("setammo", function(params)
        local x, y = params:match("(%d+)%s+(%d+)")
        if x and y then
            settings.pos_x = tonumber(x)
            settings.pos_y = tonumber(y)
            sampAddChatMessage("Позиция HUD установлена: X=" .. x .. ", Y=" .. y, 0x00FF00)
        else
            sampAddChatMessage("Использование...

Winstаl

Известный
904
359
Lua:
local memory = require 'memory' -- Подключаем библиотеку для работы с памятью
-- Настройки HUD
local settings = {
    pos_x = 50,          -- Позиция по X
    pos_y = 50,          -- Позиция по Y
    font_name = "Arial", -- Название шрифта
    font_size = 20       -- Размер шрифта
}

function main()
    local font = renderCreateFont(settings.font_name, settings.font_size, 0)
    sampRegisterChatCommand("setammo", function(params)
        local x, y = params:match("(%d+)%s+(%d+)")
        if x and y then
            settings.pos_x = tonumber(x)
            settings.pos_y = tonumber(y)
            sampAddChatMessage("Позиция HUD установлена: X=" .. x .. ", Y=" .. y, 0x00FF00)
        else
            sampAddChatMessage("Использование: /setammo <x> <y>", 0xFF0000)
        end
    end)
    while true do
        wait(0)                                                                  -- Задержка цикла
        local weaponId = getCurrentCharWeapon(PLAYER_PED)                        -- Текущее оружие
        if weaponId == 24 then                                                   -- Если Desert Eagle
            local baseAddr = getCharPointer(PLAYER_PED) + 0x5A0 + (2 * 0x1C)     -- Адрес слота 2 (Pistols)
            local ammoInClip = memory.getint32(baseAddr + 0x8)                   -- Патроны в обойме
            if ammoInClip >= 0 then
                renderFontDrawText(font, tostring(ammoInClip), settings.pos_x, settings.pos_y, 0xFFFFFFFF)
            end
        end
    end
end
Чутка отрефакторил код, убрал кучу ненужных проверок и т.п. Просадки фпс не заметил.
 
Последнее редактирование:
  • Нравится
Реакции: rgnrz.