Цикл с задержкой

kyrtion

Известный
Автор темы
657
241
Версия MoonLoader
.026-beta
Lua:
sampRegisterChatCommand('fsu', function(arg)
    if arg:find('(%d+) (%d+) (.+)') then
        arg1, arg2, arg3 = arg:match('(%d+) (%d+) (.+)')
        for i=1,arg2 do
            sampAddChatMessage('/su '..arg1..' '..arg3, -1)
            wait(1000)
        end
    else
        sampAddChatMessage(prefix..' Используйте: /fsu [id] [1-6] [причина]', -1)
    end
end)
Покурил и не нашёл точный код который задерживает каждый кмд в цикле по кд 1 сек...
На сервере имеется ограничение - по кмд - 1 сек
Я писал этот говнокод, потом ввел /fsu 1 2 3 и скрипт слетело с ошибкой...
Lua:
[ML] (error) dear: C:\samp\moonloader\dear.lua:55: attempt to yield across C-call boundary
stack traceback:
    [C]: in function 'wait'
    C:\samp\moonloader\dear.lua:55: in function <C:\samp\moonloader\dear.lua:50>
[ML] (error) dear: Script died due to an error. (0C8829F4)
 
Решение

zer0byt3.

Активный
155
46
Lua:
sampRegisterChatCommand('fsu', function(arg)
    if arg:find('(%d+) (%d+) (.+)') then
        arg1, arg2, arg3 = arg:match('(%d+) (%d+) (.+)')
        for i=1,arg2 do
            lua_thread.create(function()
                    sampAddChatMessage('/su '..arg1..' '..arg3, -1)
                    wait(1000)
            end)
        end
    else
        sampAddChatMessage(prefix..' Используйте: /fsu [id] [1-6] [причина]', -1)
    end
end)

Пользуйся.
 
Последнее редактирование:

SomaGnoma

Известный
442
152
Lua:
sampRegisterChatCommand('fsu', function(arg)
    if arg:find('(%d+) (%d+) (.+)') then
        arg1, arg2, arg3 = arg:match('(%d+) (%d+) (.+)')
        for i=1,arg2 do
            sampAddChatMessage('/su '..arg1..' '..arg3, -1)
            wait(1000)
        end
    else
        sampAddChatMessage(prefix..' Используйте: /fsu [id] [1-6] [причина]', -1)
    end
end)
Покурил и не нашёл точный код который задерживает каждый кмд в цикле по кд 1 сек...
На сервере имеется ограничение - по кмд - 1 сек
Я писал этот говнокод, потом ввел /fsu 1 2 3 и скрипт слетело с ошибкой...
Lua:
[ML] (error) dear: C:\samp\moonloader\dear.lua:55: attempt to yield across C-call boundary
stack traceback:
    [C]: in function 'wait'
    C:\samp\moonloader\dear.lua:55: in function <C:\samp\moonloader\dear.lua:50>
[ML] (error) dear: Script died due to an error. (0C8829F4)
Нужно сделать поток и в нем юзать wait
Lua:
lua_thread.create(function()
-- код
end)
 
  • Нравится
Реакции: kyrtion

kyrtion

Известный
Автор темы
657
241
Lua:
sampRegisterChatCommand('fsu', function(arg)
    if arg:find('(%d+) (%d+) (.+)') then
        arg1, arg2, arg3 = arg:match('(%d+) (%d+) (.+)')
        for i=1,arg2 do
            lua_thread.create(function()
                    sampAddChatMessage('/su '..arg1..' '..arg3, -1)
                    wait(1000)
            end)
        end
    else
        sampAddChatMessage(prefix..' Используйте: /fsu [id] [1-6] [причина]', -1)
    end
end)

Пользуйся.
1640178069097.png


Нужно сделать поток и в нем юзать wait
Lua:
lua_thread.create(function()
-- код
end)
сейчас попробую
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,773
11,217
  • Нравится
Реакции: kyrtion