Рендер текста

Lostvape

Новичок
Автор темы
1
0
Версия MoonLoader
.027.0-preview
Когда рендерится текст без проверки все гуд, а когда с проверкой фпс проседает и как исправить хз я в lua начинающий.
Lua:
local font = renderCreateFont('Tahoma', 10, 4)
local active = false
local y = 500
local phoenix = {'Yuki_Lane', 'Takeda_Kanzaki', 'Tarumi_Onishi', 'Salvatore_Garcia', 'Franklin_Mitchell', 'Salvadore_Alvarez', 'Robert_Rochester', 'Aaron_Corrida', 'Alessandra_Flor', 'Isshin_Hayashi', 'Logan_Lemonte', 'Sergo_Bel', 'Quinn_Storch', 'Miko_Onishi', 'Evgeniy_Carrera', 'Rosalie_Kerrinorr', 'Francesco_Vivaldi', 'Sergio_Querti', 'Feya_Fllower', 'Salvador_Tryp', 'Camilo_Dias', 'Nail_Shtempel', 'Blake_Mason', 'Karolina_Mizuki', 'Paul_Greyrat', 'Amane_Hotaru', 'Carmen_Freeman', 'Kane_Blather', 'Carlos_Mellory', 'Hayden_Moris', 'Deuss_Vult', 'Ryuki_Morsing', 'Wand_Walker', 'Wish_Angers', 'Arif_Young', 'Ayane_Hayashi', 'Yuki_Deep', 'Doctor_Blather', 'Mikky_Crips', 'Claude_Cardoso', 'Turan_Fresko', 'Yuto_Akatsuki', 'Angel_Lannister', 'Luke_Kovalev', 'Miron_Alvarez', 'Emmanuel_DeRossi', 'Paradiso_Luciano', 'Aleks_Morsing', 'Sky_Soliarity', 'Blake_Loonklage', 'Ethan_Delnar', 'Ilya_Evreii', 'Reemuro_Tempest'}

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('rtab', function ()
        active = not active
    end)
    while true do
        if active then
            y = 500
            for i, v in pairs(phoenix) do
                --if sampGetPlayerIdByNickname(v) ~= nil then
                    y = y + 15
                    renderFontDrawText(font, v, 300, y, 0xFFFFFFFF)
                --end
            end
        end
        wait(0)
    end
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick == sampGetPlayerNickname(myid) then return myid end
    for i = 0, 1003 do
      if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
        return i
      end
    end
end
 
Решение
У тебя с этой проверкой для каждого ника вызывается 1004 итерации цикла (учитывая сколько ников в таблице - это несколько десятков тысяч итераций каждый кадр)

Lua:
local phoenix = {
    ["Yuki_Lane"] = true,
    ["Takeda_Kanzaki"] = true
    -- дальше по аналогии
}

-- вместо цикла for i, v in pairs(phoenix) do ... end
for id = 0, 1000 do
    if sampIsPlayerConnected(id) then
        local name = sampGetPlayerNickname(id)
        if phoenix[name] then
            y = y + 15
            renderFontDrawText(font, name, 300, y, 0xFFFFFFFF)
        end
    end
end

wojciech?

Известный
Проверенный
378
271
У тебя с этой проверкой для каждого ника вызывается 1004 итерации цикла (учитывая сколько ников в таблице - это несколько десятков тысяч итераций каждый кадр)

Lua:
local phoenix = {
    ["Yuki_Lane"] = true,
    ["Takeda_Kanzaki"] = true
    -- дальше по аналогии
}

-- вместо цикла for i, v in pairs(phoenix) do ... end
for id = 0, 1000 do
    if sampIsPlayerConnected(id) then
        local name = sampGetPlayerNickname(id)
        if phoenix[name] then
            y = y + 15
            renderFontDrawText(font, name, 300, y, 0xFFFFFFFF)
        end
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: Vespan