Авто-поиск жалобы и ответ на Lua

Zoory

Новичок
Автор темы
2
0
Доброго времени суток, возникла некая необходимость в скрипте, что будет искать текст жалобы в чате и при его нахождении сразу же вводить команду.
Постарался я сделать что-то подобное, но, к сожалению, данный скрипт не хочет выполнять данную функцию.


Пример
Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do
    wait(0)
        if isKeyDown(0x67) then
            keypress()
        end
    end
end

function keypress()
    act = not act
end
-- не спрашивайте, почему я act = not act не вставил в бесконечный цикл
-- уже было с этим дело, поставил сюда чисто для эксперимента, по факту разницы нет

function sampev.onServerMessage(color, text)
    if act then
        if text:find('[Жалоба] от') then -- начало этой строки в чате мы и ищем
            sampSendChat("/ot")  -- команда для ответа на репорт
        end
    end
end

Прошу у вас помощи, где косяк и как его исправить.
 
Решение
Lua:
local sampev = require 'lib.samp.events'
local act = false
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('changeme', function() act = not act; printStringNow((act and '~g~ON' or '~r~OFF'), 2000) end)
        while true do wait(0)
            if isKeyJustPressed(0x67) then
                act = not act
                printStringNow((act and '~g~ON' or '~r~OFF'), 2000)
            end
        end
end
function sampev.onServerMessage(color, text)
    if act then
        if text:find('%[Жалоба%] от') then -- начало этой строки в чате мы и ищем
            sampSendChat("/ot")  -- команда для ответа на репорт
        end...

deddosouru

Смотрю аниме, служу Сатане
Друг
2,036
1,323
1) не совсем понимаю зачем выносить переключение работы скрипта в отдельную функцию если можно сделать это в основном потоке
2) абсолютно не понимаю почему используется isKeyDown а не isKeyJustPressed, ведь использование этой проверки будет вызывать смену режима дохрена раз в секунду
3) перед использованием библиотеки sampev её нужно сначала подключить
 

Zoory

Новичок
Автор темы
2
0
1) не совсем понимаю зачем выносить переключение работы скрипта в отдельную функцию если можно сделать это в основном потоке
2) абсолютно не понимаю почему используется isKeyDown а не isKeyJustPressed, ведь использование этой проверки будет вызывать смену режима дохрена раз в секунду
3) перед использованием библиотеки sampev её нужно сначала подключить
1) Как я указал выше, я уже пробовал с тем вариантом и чисто на шару выделил в отдельную функцию, разницы нету вообще.
2) Задача в том, чтобы репорт ловил только в тот момент, когда кнопка зажата, а не просто нажата
3) Я подключил библиотеку, просто тут не указал
 

BIG BOG

Известный
653
142
1) Как я указал выше, я уже пробовал с тем вариантом и чисто на шару выделил в отдельную функцию, разницы нету вообще.
2) Задача в том, чтобы репорт ловил только в тот момент, когда кнопка зажата, а не просто нажата
3) Я подключил библиотеку, просто тут не указал
У тебя из-за isKeyDown по КД вызывается keypress(), и соответственно значения переменной тоже меняются по кд
 

deddosouru

Смотрю аниме, служу Сатане
Друг
2,036
1,323
Lua:
local sampev = require 'lib.samp.events'
local act = false
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('changeme', function() act = not act; printStringNow((act and '~g~ON' or '~r~OFF'), 2000) end)
        while true do wait(0)
            if isKeyJustPressed(0x67) then
                act = not act
                printStringNow((act and '~g~ON' or '~r~OFF'), 2000)
            end
        end
end
function sampev.onServerMessage(color, text)
    if act then
        if text:find('%[Жалоба%] от') then -- начало этой строки в чате мы и ищем
            sampSendChat("/ot")  -- команда для ответа на репорт
        end
    end
end
 

sanders

Потрачен
253
126
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
local sampev = require 'lib.samp.events'
local act = false
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('changeme', function() act = not act; printStringNow((act and '~g~ON' or '~r~OFF'), 2000) end)
        while true do wait(0)
            if isKeyJustPressed(0x67) then
                act = not act
                printStringNow((act and '~g~ON' or '~r~OFF'), 2000)
            end
        end
end
function sampev.onServerMessage(color, text)
    if act then
        if text:find('%[Жалоба%] от') then -- начало этой строки в чате мы и ищем
            sampSendChat("/ot")  -- команда для ответа на репорт
        end
    end
end
ему нужен iskeydown
а это

Lua:
local sampev = require('lib.samp.events')
local act = 0

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do
    wait(0)
        if isKeyDown(0x67) then
            act = 1
        else
            act = 0
        end
    end
end

function sampev.onServerMessage(color, text)
    if act == 1 then
        if text:find('[Жалоба] от') then
            sampSendChat("/ot")
        end
    end
end
 
  • Нравится
Реакции: querta и Zoory