for с renderFontDrawText

Fellespe.

Участник
Автор темы
42
8
Версия MoonLoader
Другое
В обычном while цикле текст рендерится нормально.
Пытаюсь засунуть в for, перестает. For надо, чтобы данные с массива рендерить.
Lua:
while true do
    wait(0)
    for k,v in ipairs(members) do
        renderFontDrawText(my_font, "test", 50, 500, 0xFFFFFFFF)
    end
    parsMembers = true
    wait(500)
    sampSendChat("/members")
    wait(10000)
end
 
Решение
Без этих задержек работает, но тогда начинается жесткий спам командой
Ну ещё бы. Вынеси в отдельную функцию и там создай ещё 1 цикл.
Lua:
-- В main() (Не в while true do, а до него)
lua_thread.create(flooder)

-- Отдельно от всего. Можешь в самый низ.
function flooder()
    while true do wait(10000) -- Такой себе вариант, конечно. Можешь через os.clock() задержку сделать..
        -- Проверки всякие тут. На спавн, переменную активации и т.д.
        sampSendChat("/members")
    end
end
Вот тут смотри:

MrDorlik

Известный
977
391
переменная members пустая значит, все работает

1696523294418.png


Lua:
local font_flag = require('moonloader').font_flag
local my_font = renderCreateFont('Verdana', 33, font_flag.BOLD + font_flag.SHADOW)

local members = {'Вася', 'Петя'}
function main()
    while not isSampAvailable() do wait(0) end
    while true do
        wait(0)
        for k, v in ipairs(members) do
            renderFontDrawText(my_font, string.format('[%s] %s', k, v), 100, 400+50*k, 0xFFFFFFFF)
        end
    end
end
 
  • Bug
Реакции: Fellespe.

Fellespe.

Участник
Автор темы
42
8
Сделал вот таким образом, появляется на 1мс, как исправить это

Lua:
while true do
    wait(0)
    for k,v in ipairs(members) do
    if members == {} then
    return
    else
    renderFontDrawText(my_font, v[1], 50, 500, 0xFFFFFFFF)
    end
    end
    parsMembers = true
    wait(500)
    sampSendChat("/members")
    wait(10000)
end
 
  • Эм
Реакции: MLycoris

MrDorlik

Известный
977
391
Сделал вот таким образом, появляется на 1мс, как исправить это

Lua:
while true do
    wait(0)
    for k,v in ipairs(members) do
    if members == {} then
    return
    else
    renderFontDrawText(my_font, v[1], 50, 500, 0xFFFFFFFF)
    end
    end
    parsMembers = true
    wait(500)
    sampSendChat("/members")
    wait(10000)
end
ну для начала табуляцию сделать, а потом прочитать мое предыдущее сообщение
 

Fellespe.

Участник
Автор темы
42
8
Ты рендеришь все в одну строку и воит полностью останавливает работу главного цыкла -_-
Вот таким образом сделал, оно работает, но появляется всего на 1мс.

Lua:
for k,v in ipairs(members) do
    renderFontDrawText(my_font, string.format('%s', v[1]), 50, 400+50*k, 0xFFFFFFFF)
    print(v[1])
end
 

Dmitriy Makarov

25.05.2021
Проверенный
2,478
1,113
Вот таким образом сделал, оно работает, но появляется всего на 1мс.

Lua:
for k,v in ipairs(members) do
    renderFontDrawText(my_font, string.format('%s', v[1]), 50, 400+50*k, 0xFFFFFFFF)
    print(v[1])
end
Может из-за этого?
1696524051544.png

Убери и попробуй.
 

Dark_Knight

Me, me and me.
Друг
4,062
2,078

Dmitriy Makarov

25.05.2021
Проверенный
2,478
1,113
Без этих задержек работает, но тогда начинается жесткий спам командой
Ну ещё бы. Вынеси в отдельную функцию и там создай ещё 1 цикл.
Lua:
-- В main() (Не в while true do, а до него)
lua_thread.create(flooder)

-- Отдельно от всего. Можешь в самый низ.
function flooder()
    while true do wait(10000) -- Такой себе вариант, конечно. Можешь через os.clock() задержку сделать..
        -- Проверки всякие тут. На спавн, переменную активации и т.д.
        sampSendChat("/members")
    end
end
Вот тут смотри:
 
  • Нравится
Реакции: Fellespe.
463
825
Сделал вот таким образом, появляется на 1мс, как исправить это

lua:
local font_flag = require('moonloader').font_flag
local my_font = renderCreateFont('Verdana', 33, font_flag.BOLD + font_flag.SHADOW)

local members = {'vasek', 'petya'}
function main()
    while not isSampAvailable() do wait(0) end
    
    lua_thread.create(function()
        while true do
            parsMembers = true
            wait(500)
            sampSendChat("/members")
            wait(10000)
        end
    end)
    
    while true do
        wait(0)
        for k, v in ipairs(members) do
            renderFontDrawText(my_font, string.format('[%s] %s', k, v), 100, 400+50*k, 0xFFFFFFFF)
        end
    end
end