string

Kaspersss

Участник
Автор темы
32
1
Версия MoonLoader
.026-beta
Здрасте, у меня проблема, мне нужно что бы когда в чате прописался определённый текст, а именно: "Добро пожаловать на Diamond Role Play!" - все функции и т.д. начинали работать, я придумал такой код(ниже), но он не работает почему то, кто может - помогите плз.
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    text_1 = text
end
if string.find(text_1, "Добро пожаловать ", 1, true) then
        -- тут мой код, где будут функции и т.д.
end
 

Kaspersss

Участник
Автор темы
32
1
Lua:
if string.find(text_1, "Добро пожаловать на Diamond Role Play") then
        -- тут мой код, где будут функции и т.д.
end

ошибка :
Код:
[ML] (error) Government Tools: D:\sborka by ACORTES\moonloader\GovernmentTools.lua:10: bad argument #1 to 'find' (string expected, got nil)
stack traceback:
    [C]: in function 'find'
    D:\sborka by ACORTES\moonloader\GovernmentTools.lua:10: in main chunk
[ML] (error) Government Tools: Script died due to an error. (01C37A7C)

вот код, весь кидать не буду,там 2000 строк:


Lua:
script_name('Government Tools')
script_author('ABulkin')

local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
text_1 = text
end

if string.find(text_1, "Добро пожаловать на Diamond Role Play") then
sampAddChatMessage('qq',-1)

-- тут весь мой код, тут есть и функции и бинды и команды..

end
 

Kaspersss

Участник
Автор темы
32
1
Замени это
Lua:
string.find(text_1, "Добро пожаловать на Diamond Role Play")
на это
Lua:
text_1:find("Добро пожаловать на Diamond Role Play")
Код:
[ML] (error) Government Tools: D:\sborka by ACORTES\moonloader\GovernmentTools.lua:10: attempt to index global 'text_1' (a nil value)
stack traceback:
    D:\sborka by ACORTES\moonloader\GovernmentTools.lua:10: in main chunk
[ML] (error) Government Tools: Script died due to an error. (01C37F14)
 

Albertio

Attention! Thanks for your attention.
887
717
Код:
[ML] (error) Government Tools: D:\sborka by ACORTES\moonloader\GovernmentTools.lua:10: attempt to index global 'text_1' (a nil value)
stack traceback:
    D:\sborka by ACORTES\moonloader\GovernmentTools.lua:10: in main chunk
[ML] (error) Government Tools: Script died due to an error. (01C37F14)
Так ты объяви эту переменную, либу сделай на неё проверку
 

Albertio

Attention! Thanks for your attention.
887
717
Lua:
local sampev = require 'lib.samp.events'

local textOne = ""

function sampev.onServerMessage(color, text)
  textOne = text
end
if textOne:find("Добро пожаловать на Diamond Role Play") then
sampAddChatMessage('qq',-1)
-- тут весь мой код, тут есть и функции и бинды и команды..
end
 

Kaspersss

Участник
Автор темы
32
1
Lua:
local sampev = require 'lib.samp.events'

local textOne = ""

function sampev.onServerMessage(color, text)
  textOne = text
end
if textOne:find("Добро пожаловать на Diamond Role Play") then
sampAddChatMessage('qq',-1)
-- тут весь мой код, тут есть и функции и бинды и команды..
end
Сделал так, но почему оно не выводит qq когда я хочу?


Lua:
script_name('Government Tools')
script_author('ABulkin')

local sampev = require 'lib.samp.events'
local textOne = ""
local textTwo = ''

function sampev.onServerMessage(color, text)
if textOne:find("  Объявление проверил ") then
textTwo = 2
end
end

if textTwo == 2 then
sampAddChatMessage('qq',-1)
end
 

Izvinisb

Известный
Проверенный
963
600
Сделал так, но почему оно не выводит qq когда я хочу?


Lua:
script_name('Government Tools')
script_author('ABulkin')

local sampev = require 'lib.samp.events'
local textOne = ""
local textTwo = ''

function sampev.onServerMessage(color, text)
if textOne:find("  Объявление проверил ") then
textTwo = 2
end
end

if textTwo == 2 then
sampAddChatMessage('qq',-1)
end
бро, ты пытаешься что-то найти в пустой переменной, ну мы тебя поддержим.
мы с тобой.png
 
  • Ха-ха
Реакции: G W и DarkP1xel

Kaspersss

Участник
Автор темы
32
1
бро, ты пытаешься что-то найти в пустой переменной, ну мы тебя поддержим.Посмотреть вложение 57335
Ошибочка, вот код нормальный, текст оно выводит, но qq нет, как исправить?:

Lua:
script_name('Government Tools')
script_author('ABulkin')

local sampev = require 'lib.samp.events'
local textTwo = ''

function sampev.onServerMessage(color, text)
if text:find("  Объявление проверил ") then
sampAddChatMessage(text, -1)
textTwo = 2
end
end

if textTwo == 2 then
sampAddChatMessage('qq',-1)
end
 

Albertio

Attention! Thanks for your attention.
887
717
Ошибочка, вот код нормальный, текст оно выводит, но qq нет, как исправить?:

Lua:
script_name('Government Tools')
script_author('ABulkin')

local sampev = require 'lib.samp.events'
local textTwo = ''

function sampev.onServerMessage(color, text)
if text:find("  Объявление проверил ") then
sampAddChatMessage(text, -1)
textTwo = 2
end
end

if textTwo == 2 then
sampAddChatMessage('qq',-1)
end
Потому что может быть изначально ты переменную textTwo задаешь как строку...
local textTwo = 0
 

asdzxcjqwe

¯\_(ツ)_/¯
Друг
621
711
Замени это
Lua:
string.find(text_1, "Добро пожаловать на Diamond Role Play")
на это
Lua:
text_1:find("Добро пожаловать на Diamond Role Play")
два полностью идентичных варианта

Потому что может быть изначально ты переменную textTwo задаешь как строку...
local textTwo = 0
роли не играет здесь

Ошибочка, вот код нормальный, текст оно выводит, но qq нет, как исправить?:
табулируй код для своего же удобства, ты сам же не видишь, что последние три строки вышли за пределы onServerMessage, что работать и не должно

твой код:
Lua:
script_name('Government Tools')
script_author('ABulkin')

local sampev = require 'lib.samp.events'
local textTwo = ''

function sampev.onServerMessage(color, text)
    if text:find("  Объявление проверил ") then -- ты уверен, что здесь два пробела перед текстом? проверяй чатлог
        sampAddChatMessage(text, -1) -- зачем ты это выводишь? ты продублируешь в чат то же сообщение, что и так уже в чате
        textTwo = 2 -- зачем? не проще вывести qq прямо здесь?
    end
end

-- ну и зачем это здесь? эта секция при загрузке скрипта выполнится один раз и больше никогда сюда не вернемся
if textTwo == 2 then
    sampAddChatMessage('qq',-1)
end


я не знаю что именно ты хочешь сделать:
если только вывести qq в чат, то сойдет и такой код:
Lua:
script_name("Government Tools")
script_author("ABulkin")

local sampev = require("lib.samp.events")

function sampev.onServerMessage(color, text)
    if text:find("  Объявление проверил ") then
        sampAddChatMessage("qq", -1)
    end
end


если тебе нужно именно заставить тригернуть код в другом месте за пределами onServerMessage, то пробуй это:
Lua:
-- это просто пример, не призываю писать таким образом
script_name("Government Tools")
script_author("ABulkin")

local sampev = require("lib.samp.events")
local trigger

function sampev.onServerMessage(color, text)
    if text:find("  Объявление проверил ") then
        trigger = true
    end
end

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    repeat wait(0) until isSampAvailable()

    while true do
        wait(0)

        if trigger then
            trigger = false
            sampAddChatMessage("qq", -1)
        end
    end
end


то же самое, но без main:
Lua:
script_name("Government Tools")
script_author("ABulkin")

local sampev = require("lib.samp.events")
local trigger

function sampev.onServerMessage(color, text)
    if text:find("  Объявление проверил ") then
        trigger = true
    end
end

lua_thread.create(function()
    repeat wait(0) until isSampAvailable()

    while true do
        wait(0)

        if trigger then
            trigger = false
            sampAddChatMessage("qq", -1)
        end
    end
end)
 
  • Нравится
Реакции: Albertio

Похожие темы

    • Закреплено
    • Статья
    Ответы
    200
    Просмотры
    741K
  1. Ответы
    2K
    Просмотры
    1M