sampev.onServerMessage

qwerty2044

Новичок
Автор темы
5
2
Версия MoonLoader
.026-beta
Доброго времени суток, господа. Занимаюсь изучением языка аж третий час и столкнулся с проблемой, которую пока не могу решить.
Мне нужно выдернуть из чата циферку, которую мне пишет сервер. И если этот сервер мне успеет написать её следующей же строкой, то все ок. Если он опоздает и кто то успеет что то профлудить, скрипт не сработает. Что делаю не так?
Lua:
function sampev.onServerMessage(color, text)
    if act then

          message = string.match(text,'депозита')
            if message~= nil then
                if text:match("$2%d+") then
                 num = text:match('2%d+')
                num1 = num - 200000000
                sampAddChatMessage(num1, 0x0000FF)

                end

            end
    act = false
    end
 
Решение
Lua:
if text:find("депозита") and act then -- если  в тексте найдено слово депозита  и act = true
    num = tonumber(text:match("%$(%d+)")) -- парсим число из текста и приводим результат в числовые данные и передаём переменной num
    --тут твои действия с переменной
end

Desmonder

Новичок
20
0
Доброго времени суток, господа. Занимаюсь изучением языка аж третий час и столкнулся с проблемой, которую пока не могу решить.
Мне нужно выдернуть из чата циферку, которую мне пишет сервер. И если этот сервер мне успеет написать её следующей же строкой, то все ок. Если он опоздает и кто то успеет что то профлудить, скрипт не сработает. Что делаю не так?
Lua:
function sampev.onServerMessage(color, text)
    if act then

          message = string.match(text,'депозита')
            if message~= nil then
                if text:match("$2%d+") then
                 num = text:match('2%d+')
                num1 = num - 200000000
                sampAddChatMessage(num1, 0x0000FF)

                end

            end
    act = false
    end

if message ~= nil then
у тебя там message~= nil
 

qwerty2044

Новичок
Автор темы
5
2
Пока не помогло. Еще раз уточню, что если сервер успевает написать цифру следующей строкой после включения скрипта, то всё работает. Если не успевает, то нет. Ниже скрин
45362
 

Quasper

Известный
835
354
Lua:
if text:find("депозита") and act then -- если  в тексте найдено слово депозита  и act = true
    num = tonumber(text:match("%$(%d+)")) -- парсим число из текста и приводим результат в числовые данные и передаём переменной num
    --тут твои действия с переменной
end
 
Последнее редактирование:
  • Нравится
Реакции: qwerty2044
Lua:
if text:find("депозита") and act then -- если  в тексте найдено слово депозита  и act = true
    num = tonumber(text:match("$(%d+)")) -- парсим число из текста и приводим результат в числовые данные и передаём переменной num
    --тут твои действия с переменной
end
Зачем якорь $ (означает конец строки) находится в начале?
 
  • Нравится
Реакции: AnWu
это не якорь, это составляющая часть исходной строки
Но она никак не экранизируется.
Не знаю, как у вас в луа, есть ли этот якорь.
Но мне кажется, что регулярка все таки кривая.
 

qwerty2044

Новичок
Автор темы
5
2
Lua:
if text:find("депозита") and act then -- если  в тексте найдено слово депозита  и act = true
    num = tonumber(text:match("%$(%d+)")) -- парсим число из текста и приводим результат в числовые данные и передаём переменной num
    --тут твои действия с переменной
end
Помог совет этого господина. Премного благодарен 💪