Проверка чата на текст

Статус
В этой теме нельзя размещать новые ответы.

EndoHokage

Активный
Автор темы
136
55
Версия MoonLoader
.026-beta
Здравствуйте, хочу сделать авто /ot для админов.
Вот такая строка
49004

Как сделать реагирование на это сообщение?
Я написал вот такой скрипт, но он не до конца проверяет, то есть если я или какой либо другой игрок пишет в чат "[Жалоба]", то он работает, а если вот такое сообщение от сервера, то нет
Lua:
require "lib.moonloader"
local sampev = require "lib.samp.events"

local startwork = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    -------------------------Command-------------------------
    sampRegisterChatCommand("ott", cmd_ott)

    -------------------------Main While-------------------------
    while true do
        wait(0)

    end
end

function sampev.onServerMessage(color, text)
    if string.find(text, '%[Жалоба%]') and startwork then
        sampSendChat("/ot")
        print("Жалоба была словлена")
        startwork = false
        return false
    end
end

function cmd_ott()
    print("Начиная поиск /ot")
    startwork = true
end
Заранее спасибо
 
  • Нравится
Реакции: Mamory

Mamory

Участник
34
1
1. Проверь кодировку скрипта. Должна быть Windows 1251.
2. Поставь задержку между string.find и sampSendChat:
Lua:
if string.find(text, '%[Жалоба%]') and startwork then
    lua_thread.create(function()
    wait(10)
    sampSendChat("/ot")
    statwork = false
    return false
    end)
end
Кодировка нормальная, задержка не помогла. Тут суть в том что если сообщение пишет игрок оно реагирует, а когда от сервера то нет
 

sanders

Потрачен
253
126
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здравствуйте, хочу сделать авто /ot для админов.
Вот такая строка
49004

Как сделать реагирование на это сообщение?
Я написал вот такой скрипт, но он не до конца проверяет, то есть если я или какой либо другой игрок пишет в чат "[Жалоба]", то он работает, а если вот такое сообщение от сервера, то нет
Lua:
require "lib.moonloader"
local sampev = require "lib.samp.events"

local startwork = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    -------------------------Command-------------------------
    sampRegisterChatCommand("ott", cmd_ott)

    -------------------------Main While-------------------------
    while true do
        wait(0)

    end
end

function sampev.onServerMessage(color, text)
    if string.find(text, '%[Жалоба%]') and startwork then
        sampSendChat("/ot")
        print("Жалоба была словлена")
        startwork = false
        return false
    end
end

function cmd_ott()
    print("Начиная поиск /ot")
    startwork = true
end
Заранее спасибо
что это такое блин...
вот держи
Lua:
require "lib.moonloader"
local sampev = require "lib.samp.events"

local startwork = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    -------------------------Command-------------------------
    sampRegisterChatCommand("ott", cmd_ott)

    -------------------------Main While-------------------------
    while true do
        wait(0)

    end
end

function sampev.onServerMessage(color, text)
    if startwork then
         printStringNow('Let`s go!', 1000)
            if text:find('[Жалоба]') then
                sampSendChat("/ot")
                print("Жалоба была словлена")
                startwork = false
                return false
            end
        end
    end
end

function cmd_ott()
    print("Начиная поиск /ot")
    startwork = true
end

-- тут уже чисто моя идея
function sampev.onShowDialog(id, style, title, button1, button2, text)
    if startwork then
        if text:find('Жалоба/Вопрос') then 
            startwork = false
            printStringNow('Took ~g~Report!', 1000) -- взял репорт
        end
    end
end
 

Mamory

Участник
34
1
что это такое блин...
вот держи
Lua:
require "lib.moonloader"
local sampev = require "lib.samp.events"

local startwork = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    -------------------------Command-------------------------
    sampRegisterChatCommand("ott", cmd_ott)

    -------------------------Main While-------------------------
    while true do
        wait(0)

    end
end

function sampev.onServerMessage(color, text)
    if startwork then
         printStringNow('Let`s go!', 1000)
            if text:find('[Жалоба]') then
                sampSendChat("/ot")
                print("Жалоба была словлена")
                startwork = false
                return false
            end
        end
    end
end

function cmd_ott()
    print("Начиная поиск /ot")
    startwork = true
end

-- тут уже чисто моя идея
function sampev.onShowDialog(id, style, title, button1, button2, text)
    if startwork then
        if text:find('Жалоба/Вопрос') then
            startwork = false
            printStringNow('Took ~g~Report!', 1000) -- взял репорт
        end
    end
end
Спасибо. Проверю чуть позже, всм "что это такое блин..."?) У каждого админа на Аризоне есть скрипт и это скрипт вместо диалога открывает имгуи окно, проверка на диалог думаю не будет работать
 

sanders

Потрачен
253
126
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Спасибо. Проверю чуть позже, всм "что это такое блин..."?) У каждого админа на Аризоне есть скрипт и вместо диалога открывается имгуи окно, проверка на диалог думаю не будет работать
будет, это скрипт ее меняет. На сервере все остается в штатном режиме работать и диалоги не меняются, а скрипт будет принимать инфу от сервера, а не от ваших скриптов с заменами)
 

EndoHokage

Активный
Автор темы
136
55
что это такое блин...
вот держи
Lua:
require "lib.moonloader"
local sampev = require "lib.samp.events"

local startwork = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    -------------------------Command-------------------------
    sampRegisterChatCommand("ott", cmd_ott)

    -------------------------Main While-------------------------
    while true do
        wait(0)

    end
end

function sampev.onServerMessage(color, text)
    if startwork then
         printStringNow('Let`s go!', 1000)
            if text:find('[Жалоба]') then
                sampSendChat("/ot")
                print("Жалоба была словлена")
                startwork = false
                return false
            end
        end
    end
end

function cmd_ott()
    print("Начиная поиск /ot")
    startwork = true
end

-- тут уже чисто моя идея
function sampev.onShowDialog(id, style, title, button1, button2, text)
    if startwork then
        if text:find('Жалоба/Вопрос') then
            startwork = false
            printStringNow('Took ~g~Report!', 1000) -- взял репорт
        end
    end
end
Привет, сегодня проверил, не работает, на сообщение [Жалоба] в /n чат работает, на сообщение от сервера нет
 
Последнее редактирование:

sanders

Потрачен
253
126
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Hidetaka

Новичок
14
1
Привет, сегодня проверил, не работает, на сообщение [Жалоба] в /n чат работает, на сообщение от сервера нет
Попробуй в "if text:find('[Жалоба]') then" перед '[Жалоба]' HEX-код поставить, который вылетает от сервера, возможно - {800000}, но сильно сомневаюсь, ибо не знаю точного HEX-кода цвета в этом админском оповещении.
 
  • Грустно
  • Bug
Реакции: kyrtion и qdIbp

Hidetaka

Новичок
14
1
Попробуй в "if text:find('[Жалоба]') then" перед '[Жалоба]' HEX-код поставить, который вылетает от сервера, возможно - {800000}, но сильно сомневаюсь, ибо не знаю точного HEX-кода цвета в этом админском оповещении.
HEX-код вроде в чат-лог идёт, проверьте, я не чекал.
 
  • Клоун
Реакции: qdIbp

kyrtion

Известный
978
355
Попробуй в "if text:find('[Жалоба]') then" перед '[Жалоба]' HEX-код поставить, который вылетает от сервера, возможно - {800000}, но сильно сомневаюсь, ибо не знаю точного HEX-кода цвета в этом админском оповещении.
сначала желательно убрать hex-цвет, как local textNoHex = text:gsub('{%x%x%x%x%x%x}', '') и вернется чистая строка без хексов
 
Статус
В этой теме нельзя размещать новые ответы.