автоответчик

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

WarGko

Известный
Автор темы
274
96
16940

Помогите сделать автоответ на эту шнягу с чатлога или еще откуда-то
c чат лога [00:58:02] Администратор Admin ответил вам:{FFFFFF} Вы тут? ответ в /b
 

Bogach

Активный
558
27
Подключаешь библиотеку:
Lua:
local res,sampev = pcall(require,'lib.samp.events')
assert(res,'Библиотека SAMP Events не найдена')
С помощью данного хука ловишь нужный текст:
Lua:
function sampev.onServerMessage(color, text)
message = string.match(text,'Администратор %g+ ответил вам: {FFFFFF} (.*)') -- Примерный паттерн, может и не сработать.
end
Далее, делаешь условие:
Lua:
function sampev.onServerMessage(color, text)
message = string.match(text,'Администратор %g+ ответил вам: {FFFFFF} (.*)') -- Примерный паттерн, может и не сработать.
if message~= nil then
  if message == "Вы тут ?" then
     lua_thread.create(function()
     wait(500)
     sampSendChat('/b Да. Я тут.')
  end
end
end
Примерно как - то так.
 

Bogach

Активный
558
27
А варианты ответа можно сделать? что бы не одно и тоже всегда
Lua:
function sampev.onServerMessage(color, text)
message = string.match(text,'Администратор %g+ ответил вам: {FFFFFF} (.*)') -- Примерный паттерн, может и не сработать.
if message~= nil then
  if message == "Вы тут ?" then
     lua_thread.create(function()
     wait(500)
     local ran = math.random(1,3)
     if ran == 1 then
        sampSendChat('/b Да. Я тут.')
     elseif ran == 2 then
         sampSendChat('/b Да.')
     elseif ran == 3 then
         sampSendChat('/b Я тут.')
  end
end
end
Как - то примерно так.
 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141
Lua:
function sampev.onServerMessage(color, text)
message = string.match(text,'Администратор %g+ ответил вам: {FFFFFF} (.*)') -- Примерный паттерн, может и не сработать.
if message~= nil then
  if message == "Вы тут ?" then
     lua_thread.create(function()
     wait(500)
     local ran = math.random(1,3)
     if ran == 1 then
        sampSendChat('/b Да. Я тут.')
     elseif ran == 2 then
         sampSendChat('/b Да.')
     elseif ran == 3 then
         sampSendChat('/b Я тут.')
  end
end
end
Как - то примерно так.
Должна быть задержка.
 

Bogach

Активный
558
27
Не заметил. В любом случае в коде ошибка, он не запустится.
Дружище, что ты хочешь от меня ? Я же приписал, что это примерный код, естественно он может и не работать, я не проверял.
Любишь критиковать ? Окей, в таком случае предложи что - то лучше. Я по крайней мере хоть попытался помочь человеку, от тебя я увидел только критику моего кода, ничего более. Терпеть таких людей не могу.
 

trefa

3d print
Всефорумный модератор
2,107
1,264
Дружище, что ты хочешь от меня ? Я же приписал, что это примерный код, естественно он может и не работать, я не проверял.
Любишь критиковать ? Окей, в таком случае предложи что - то лучше. Я по крайней мере хоть попытался помочь человеку, от тебя я увидел только критику моего кода, ничего более. Терпеть таких людей не могу.
Вот этот говно код можно упростить в несколько раз. (Через таблицу)
Lua:
local ran = math.random(1,3)
     if ran == 1 then
        sampSendChat('/b Да. Я тут.')
     elseif ran == 2 then
         sampSendChat('/b Да.')
     elseif ran == 3 then
         sampSendChat('/b Я тут.')
 
  • Нравится
Реакции: ImPasha

Bogach

Активный
558
27
Вот этот говно код можно упростить в несколько раз. (Через таблицу)
Lua:
local ran = math.random(1,3)
     if ran == 1 then
        sampSendChat('/b Да. Я тут.')
     elseif ran == 2 then
         sampSendChat('/b Да.')
     elseif ran == 3 then
         sampSendChat('/b Я тут.')
Ну так бро, помоги человеку, дело - то легкое на самом - то деле.
Я просто привел простой пример, который пришел в голову, я этот код даже не в редакторе писал, а прямо тут, так что уж не критикуйте так - то за желание помочь, пожалуйста.
К тому же, я бы тоже не прочь посмотреть как такое упростить через таблицу на будущее, а то обычно, я в скриптах так и делаю :scratch:
 

trefa

3d print
Всефорумный модератор
2,107
1,264
Ну так бро, помоги человеку, дело - то легкое на самом - то деле.
Я просто привел простой пример, который пришел в голову, я этот код даже не в редакторе писал, а прямо тут, так что уж не критикуйте так - то за желание помочь, пожалуйста.
К тому же, я бы тоже не прочь посмотреть как такое упростить через таблицу на будущее, а то обычно, я в скриптах так и делаю :scratch:
Lua:
otv = {"да я тут", "да"}

sampSendChat(otv[math.random(1,#otv)])
2 строки и 7 строк. Существенное упрощение.
 
Последнее редактирование:
  • Нравится
Реакции: ImPasha

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141
Lua:
require 'lib.moonloader'
require 'lib.sampfuncs'
local samp = require 'lib.samp.events'

local answers = {'Да, я здесь', 'Я тут', 'На месте', 'А где же ещё?', 'Что?', 'да', 'Да, а что?'}

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

function samp.onServerMessage(clr, text)
    local pattern = text:match('Администратор%s.+%sответил%sвам:%s(.+)')
    if pattern ~= nil and pattern:find("тут?") then
        lua_thread.create(function()
            wait(1000)
            sampSendChat('/b ' .. answers[math.random(1, #answers)])
        end)
    end
end
Pattern проверен и работает исправно - можно использовать.
 
Последнее редактирование:

ШPEK

Известный
1,474
525
Lua:
require 'lib.moonloader'
require 'lib.sampfuncs'
local samp = require 'lib.samp.events'

local answers = {'Да, я здесь', 'Я тут', 'На месте', 'А где же ещё?', 'Что?', 'да', 'Да, а что?'}

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

function samp.onServerMessage(clr, text)
    local pattern = text:match('Администратор%s.+%sответил%sвам:%s(.+)')
    if pattern ~= nil and pattern:find("тут?") then
        lua_thread.create(function()
            wait(1000)
            sampSendChat('/b ' .. answers[math.random(1, #answers)])
        end)
    end
end
Pattern проверен и работает исправно - можно использовать.
Юзай string.gsub(text, "{......}", "") чтобы не париться с цвет. кодами. И зачем проверка на загрузку сампа если там бесконечная задержка?
 
  • Нравится
Реакции: ImPasha

WarGko

Известный
Автор темы
274
96
Lua:
require 'lib.moonloader'
require 'lib.sampfuncs'
local samp = require 'lib.samp.events'

local answers = {'Да, я здесь', 'Я тут', 'На месте', 'А где же ещё?', 'Что?', 'да', 'Да, а что?'}

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

function samp.onServerMessage(clr, text)
    local pattern = text:match('Администратор%s.+%sответил%sвам:%s(.+)')
    if pattern ~= nil and pattern:find("тут?") then
        lua_thread.create(function()
            wait(1000)
            sampSendChat('/b ' .. answers[math.random(1, #answers)])
        end)
    end
end
Pattern проверен и работает исправно - можно использовать.
активация автоматическая?
 
Статус
В этой теме нельзя размещать новые ответы.