Не выводятся сообщения в чат

Magir

Участник
Автор темы
58
5
Приветствую! При написании луа скрипта столкнулся с проблемой того, что сообщения в чат не выводятся. Идея: Скрипт реагирует на серверные сообщения в чате, если есть ключевое слово "Привет", оно в чат пишет "Хай". Проблема же в том, что когда пишу в чат я сам (так я проверяю работу), что бы я не писал, в чат сообщение не выводится. При деактивации скрипта снова могу в чат писать. Код:

Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    sampAddChatMessage("{FF0000}[Chat Helper]: {FFFFFF}Script Loaded", -1 )
    sampRegisterChatCommand("ch", cmd_ch)
    wait(-1)
end

function cmd_ch()
    if not status then
        sampAddChatMessage("{FF0000}[Chat Helper]: {FFFFFF}Script Enabled", -1 )
        status = true
    else
        sampAddChatMessage("{FF0000}[Chat Helper]: {FFFFFF}Script Disabled", -1 )
        status = false
    end
end

function env.onServerMessage(text,color)
    if status then
        if string.find(text, "Привет")~= nil then
            sampSendChat("Хай")
        end
    end
end
Только начинаю писать скрипты, поэтому за код, пожалуйста, сильно не ругайте, однако буду только рад обоснованной критике). Заранее спасибо!
 

Gorskin

♥ Love Lua ♥
Проверенный
1,332
1,169
Попробуй лучше так. Писал с телефона, по моему работать будет
Lua:
local ev = require 'lib.samp.events'
local status = false

function main()
    repeat wait(500) until isSampAvailable()
    sampAddChatMessage("{FF0000}[Chat Helper]: {FFFFFF}Script Loaded", -1 )
    sampRegisterChatCommand('ch', function()
        status = not status
        sampAddChatMessage((status and '{FF0000}[Chat Helper]: {FFFFFF}Script Enabled' or '{FF0000}[Chat Helper]: {FFFFFF}Script Disabled'), -1)
    end)
    wait(-1)
end

function ev.onServerMessage(text,color)
    if status then
        if text:find("Привет") then
            sampSendChat("Хай")
        end
    end
end
Upd. Я походу дебик, я не так понял вопрос...
 
Последнее редактирование:

Hatiko

Известный
Проверенный
1,502
620
Для дебага используй лучше что-то на личной стороне print или sampAddChatMessage. Для твоего случая с использованием серверного сообщения в чат необходимо создавать поток. Также учти кодировку файла твоего, из-за которой русский текст может не приниматься, необходимая кодировка ANSI 1251

Lua:
function ev.onServerMessage(text,color)
    if status then
        if text:find("Привет") then
            lua_thread.create(function()
                wait(100)
                sampSendChat("Хай")
            end)
        end
    end
end
 
  • Нравится
Реакции: Gorskin

Magir

Участник
Автор темы
58
5
Для дебага используй лучше что-то на личной стороне print или sampAddChatMessage. Для твоего случая с использованием серверного сообщения в чат необходимо создавать поток. Также учти кодировку файла твоего, из-за которой русский текст может не приниматься, необходимая кодировка ANSI 1251

Lua:
function ev.onServerMessage(text,color)
    if status then
        if text:find("Привет") then
            lua_thread.create(function()
                wait(100)
                sampSendChat("Хай")
            end)
        end
    end
end
Спасибо, с кодировкой я столкнулся ранее, теперь все ок) А вот с кодом проблема... Консоль СФ: (error) AutoChat: D:\Games\Grand Theft Auto - San Andreas\moonloader\fs.lua:28: attempt to index upvalue 'text' (a number value)

Ссылается на строку
Lua:
if text:find("Привет") then
 

Hatiko

Известный
Проверенный
1,502
620
s.lua:28: attempt to index upvalue 'text' (a number value)
Покажи участок кода, ты пытаешься воздействовать на переменную методом/функцией, для которой требуется иной тип переменных, на что показывает тебе number value
 

Magir

Участник
Автор темы
58
5
Покажи участок кода, ты пытаешься воздействовать на переменную методом/функцией, для которой требуется иной тип переменных, на что показывает тебе number value
В тот раз немного неверно переписал то, что Вы написали) При точном переписывании похожая (возможно) ошибка:
Lua:
D:\Games\Grand Theft Auto - San Andreas\moonloader\fs.lua:26: attempt to index local 'text' (a number value)

полный код:
Lua:
script_name("AutoChat")
script_author("Magir")

require "lib.moonloader"
env = require "lib.samp.events"
status = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    sampAddChatMessage("{FF0000}[Chat Helper]: {FFFFFF}Script Loaded", -1 )
    sampRegisterChatCommand("ch", cmd_ch)
    wait(-1)
end

function cmd_ch()
    if not status then
        sampAddChatMessage("{FF0000}[Chat Helper]: {FFFFFF}Script Enabled", -1 )
    else
        sampAddChatMessage("{FF0000}[Chat Helper]: {FFFFFF}Script Disabled", -1 )
    end
    status = not status
end

function env.onServerMessage(text,color)
    if status then
        if text:find("Привет") then
            lua_thread.create(function()
                wait(1500)
                sampSendChat("Хай")
            end)
        end
    end
end
 

Magir

Участник
Автор темы
58
5
А понял. Ты перепутал местами переменные в функции событии. Сначала цвет нужно, потом текст. Смотри как в events.lua
О, действительно, спасибо) Так и думал, что в какой-то фигне ошибся)