sampSendChat onSendCommand

KyRDa

Участник
Автор темы
88
46
Версия MoonLoader
.026-beta
О великие всезнающие по вопросам Lua, объясните почему onSendCommand флудит и почему вызывается у меня ошибка с опкодом 0AF9
checkboxChat и WinState это bool mimgui
Lua:
function sampev.onSendCommand(text)
    local Channels = {
    'Всем',
    "-"
    }
    if checkboxChat[0] == false and WinState[0] == true and text:find('/r (.*)') then
        dtext = text:match('/r (.*)')
        sampAddChatMessage(dtext, 0xFFFFFF)
        if checkboxScob[0] then
            sampSendChat('/r ['..tostring(Channels[1])..'] '..Channels[2]..' ['..tostring(Channels[1])..']: '..tostring(dtext))
        end
    end
end
При вызове спамит, а в консоле появляется ошибка с опкодом 0AF9
sa-mp-004.png
 
Решение
Нужно создать новая переменная, которая отвечает за паузу.
Почему? Когда ты отправляешь команду, скрипт снова и снова детектит команду и повторяет одной до конца пока не остановится.

ИЛИ
Корректировать на match, если будет тэг и т.д., то не нужно выполнять работу.

1693745434173.png


Lua:
local latest_str = ''

function sampev.onSendCommand(text)
    if text:find('^/r%s+.+%s*') and latest_str ~= text then
        local Channels = { 'Всем', '-' }
        local dtext = text:match('^/r%s+(.+)%s*')
        sampAddChatMessage(dtext, -1)
        latest_str = string.format('/r [%s] %s [%s]: %s', Channels[1], Channels[2], Channels[1], dtext)
        sampSendChat(latest_str)
        return false
    end
end

kyrtion

Известный
975
355
Нужно создать новая переменная, которая отвечает за паузу.
Почему? Когда ты отправляешь команду, скрипт снова и снова детектит команду и повторяет одной до конца пока не остановится.

ИЛИ
Корректировать на match, если будет тэг и т.д., то не нужно выполнять работу.
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,798
2,659
О великие всезнающие по вопросам Lua, объясните почему onSendCommand флудит и почему вызывается у меня ошибка с опкодом 0AF9
checkboxChat и WinState это bool mimgui
Lua:
function sampev.onSendCommand(text)
    local Channels = {
    'Всем',
    "-"
    }
    if checkboxChat[0] == false and WinState[0] == true and text:find('/r (.*)') then
        dtext = text:match('/r (.*)')
        sampAddChatMessage(dtext, 0xFFFFFF)
        if checkboxScob[0] then
            sampSendChat('/r ['..tostring(Channels[1])..'] '..Channels[2]..' ['..tostring(Channels[1])..']: '..tostring(dtext))
        end
    end
end
При вызове спамит, а в консоле появляется ошибка с опкодом 0AF9
Посмотреть вложение 214148
я не уверен, но возможно из sampSendChat сообщения тоже идут как рпц и таким образом получается рекурсия, если ты хочешь изменить отправляемую команду, то изменяй ее сразу в хуке
 

kyrtion

Известный
975
355
Нужно создать новая переменная, которая отвечает за паузу.
Почему? Когда ты отправляешь команду, скрипт снова и снова детектит команду и повторяет одной до конца пока не остановится.

ИЛИ
Корректировать на match, если будет тэг и т.д., то не нужно выполнять работу.

1693745434173.png


Lua:
local latest_str = ''

function sampev.onSendCommand(text)
    if text:find('^/r%s+.+%s*') and latest_str ~= text then
        local Channels = { 'Всем', '-' }
        local dtext = text:match('^/r%s+(.+)%s*')
        sampAddChatMessage(dtext, -1)
        latest_str = string.format('/r [%s] %s [%s]: %s', Channels[1], Channels[2], Channels[1], dtext)
        sampSendChat(latest_str)
        return false
    end
end