sampev.onServerMessage(color, text) + text:match

WOUB1E

Известный
Автор темы
101
24
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('[Оповещение] Ваш автомобиль') then
        carid = text:match('[Оповещение] Ваш автомобиль .+ (%d+) был уничтожен.')
        sampSendChat('/fixmycar'..carid, -1)
    end
end
Почему переменная carid не принимает своих значений?
Пример сообщения в чате
[Оповещение] Ваш автомобиль Sabre(1337) был уничтожен.
 

WOUB1E

Известный
Автор темы
101
24
Потому что экранизация
Lua:
if text:find('%[Оповещение%] Ваш автомобиль') then
    carid = text:match('%[Оповещение%] Ваш автомобиль .+%((%d+)%) был уничтожен%.')
    sampSendChat('/fixmycar '..carid)
end
Всё равно, не находит

Lua:
local work = true
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Оповещение%] Ваш автомобиль .*') then
        carid = text:match('%[Оповещение%] Ваш автомобиль .+%((%d+)%) был уничтожен%.')
        sampSendChat('/fixmycar ' .. carid)
    end
end

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    wait(1000)
    sampAddChatMessage("{7B68EE}[Neddie] {ffffff}AutoSpawnCar load", -1)
    sampRegisterChatCommand('228', function()
    work = not work
        if work then
            sampAddChatMessage('{7B68EE}[Neddie] {ffffff}AutoSpawnCar [{33EA0D} ON {ffffff}]', -1)
        else
            sampAddChatMessage('{7B68EE}[Neddie] {ffffff}AutoSpawnCar [{F51111} OFF {ffffff}]', -1)
        end
    end)
    
    sampRegisterChatCommand('229', function()
    sampAddChatMessage(carid, -1)
    end)
end
 

The Spark

frontend
Проверенный
720
738
Всё равно, не находит

Lua:
local work = true
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Оповещение%] Ваш автомобиль .*') then
        carid = text:match('%[Оповещение%] Ваш автомобиль .+%((%d+)%) был уничтожен%.')
        sampSendChat('/fixmycar ' .. carid)
    end
end

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    wait(1000)
    sampAddChatMessage("{7B68EE}[Neddie] {ffffff}AutoSpawnCar load", -1)
    sampRegisterChatCommand('228', function()
    work = not work
        if work then
            sampAddChatMessage('{7B68EE}[Neddie] {ffffff}AutoSpawnCar [{33EA0D} ON {ffffff}]', -1)
        else
            sampAddChatMessage('{7B68EE}[Neddie] {ffffff}AutoSpawnCar [{F51111} OFF {ffffff}]', -1)
        end
    end)
   
    sampRegisterChatCommand('229', function()
    sampAddChatMessage(carid, -1)
    end)
end
Значит у тебя не верная исходная строка, возьми её из чатлога, ведь регулярка полностью рабочая
https://rextester.com/LCNS10630
 

WOUB1E

Известный
Автор темы
101
24

The Spark

frontend
Проверенный
720
738
Lua:
"%[Оповещение%] %{ffffff%}Ваш автомобиль .+%((%d+)%) был уничтожен%."
Первый раз за регулярные выражения взялся :D
Было легко понять, что нужно поменять регулярку на эту.
Поддерживаемые опции регулярных выражений