Как написать бота который будет реагировать на сообщения сервера и вводить команду?

CharleyJones

Известный
Автор темы
167
11
Версия MoonLoader
.026-beta
Всем привет знатоки)
Как написать бота который будет реагировать на сообщения сервера и прописывать команду?
Вот пример. У нас есть северные сообщения;

"У вас не получилось поймать что-либо."
"Вы выловили сумку и нашли 10 коинов"
"Вы поймали радужную рыбу, он помещён в ваш инвентарь."
"Вы поймали сырого окуня, он помещён в ваш инвентарь."
"Вы поймали сырой тунец, он помещён в ваш инвентарь."

Нужно что бы бот при виде оного из этих сообщений вводил команду "/fish"
Так же сделать активацию/деактивацию скрипта по команде "/fishb"
 

YarikVL

Известный
Проверенный
4,798
1,814
Посмотри уроки The champ guess на ютубе.

И лучше записывать твои строчки которые нужно найти в таблицу, а потом перебирать их и проверять найден ли текст, но так как я написал - понятней новичку будет.
UPD: увидел что там можно регулярное выражение юзать, подправил файл.
 

Вложения

  • AutoFish.lua
    551 байт · Просмотры: 16
  • Нравится
Реакции: Lance_Sterling

why ega

РП игрок
Модератор
2,547
2,238
Посмотри уроки The champ guess на ютубе.

И лучше записывать твои строчки которые нужно найти в таблицу, а потом перебирать их и проверять найден ли текст, но так как я написал - понятней новичку будет.
UPD: увидел что там можно регулярное выражение юзать, подправил файл.
забыл экранировать запятую)
 

CharleyJones

Известный
Автор темы
167
11
Спасибо, но что то скрипт не реагирует на сообщения, сервер выдает сообщения но бот не прописывает /fish
Может кто скинуть рабочий вариант, не могу понять почему не работает.

Это может быть связанно что сообщения сервера идут с точкой на конец а в скрипте указанные сообщения без точек?

UPD: Щас он начал до появляения сообщения от сервера бесконечно вводить /fish

UPD: Видимо скрипт скрывает эти сообщения сервера, они по факту приходят но мне их не видно как фиксануть?

И можно ли сделать так что бы работал в свернутом режиме?
 
Последнее редактирование:

YarikVL

Известный
Проверенный
4,798
1,814
Спасибо, но что то скрипт не реагирует на сообщения, сервер выдает сообщения но бот не прописывает /fish
Может кто скинуть рабочий вариант, не могу понять почему не работает.
Если не работает - скинь твои строчки с чатлога и файл moonloader из папки moonloader. Только я надеюсь ты до этого команду активации вводишь и тебе появляется текст на экране?
Это может быть связанно что сообщения сервера идут с точкой на конец а в скрипте указанные сообщения без точек?
Оно должно искать часть сообщения, и в онлайн компиляторе - работает.
И можно ли сделать так что бы работал в свернутом режиме?
Поставь анти афк, если анти афк рабочий будет то этот скрипт тоже должен работать
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,777
11,225
Lua:
local triggers = {
    "У вас не получилось поймать что%-либо%.",
    "Вы выловили сумку и нашли %d+ коинов",
    "Вы поймали .+, он помещён в ваш инвентарь%.",
}

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('fishtoggle', function()
        active = not active
        sampAddChatMessage('O'..(active and 'n' or 'ff'), -1)
    end)
    wait(-1)
end

require('lib.samp.events').onServerMessage = function(color, text)
    if active then
        for _, trigger in ipairs(triggers) do
            if text:gsub('{......}', ''):find(trigger) then
                sampAddChatMessage('triggered, "/fish" sended', -1)
                sampSendChat('/fish')
            end
        end
    end
end
 
  • Нравится
Реакции: joumey, YarikVL и why ega

CharleyJones

Известный
Автор темы
167
11
Если не работает - скинь твои строчки с чатлога и файл moonloader из папки moonloader. Только я надеюсь ты до этого команду активации вводишь и тебе появляется текст на экране?

Оно должно искать часть сообщения, и в онлайн компиляторе - работает.

Поставь анти афк, если анти афк рабочий будет то этот скрипт тоже должен работать
{FF0000}У вас не получилось поймать что-либо.
{00FF00}Вы выловили сумку и нашли 10 коинов
{00FF00}Вы поймали радужную рыбу, он помещён в ваш инвентарь.
{00FF00}Вы поймали сырого окуня, он помещён в ваш инвентарь.
{00FF00}Вы поймали сырой тунец, он помещён в ваш инвентарь.

Lua:
local triggers = {
    "У вас не получилось поймать что%-либо%.",
    "Вы выловили сумку и нашли %d+ коинов",
    "Вы поймали .+, он помещён в ваш инвентарь%.",
}

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('fishtoggle', function()
        active = not active
        sampAddChatMessage('O'..(active and 'n' or 'ff'), -1)
    end)
    wait(-1)
end

require('lib.samp.events').onServerMessage = function(color, text)
    if active then
        for _, trigger in ipairs(triggers) do
            if text:gsub('{......}', ''):find(trigger) then
                sampAddChatMessage('triggered, "/fish" sended', -1)
                sampSendChat('/fish')
            end
        end
    end
end
Так же не виден текст сообщений от сервера но бот работает.

Оба скрипта работают но пропали сообщения от сервера о том что я что то поймал или не удалось поймать.

sa-mp-059.png
sa-mp-060.png


Первый скрин с включенным ботом, второй скрин с выключенным ботом.
 
Последнее редактирование: