проблема с регуляркой скорее всего, хелп

boy next door

Участник
Автор темы
258
23
Версия MoonLoader
.026-beta
здарова всем. вроде всё делаю правильно, но выводит мне первый r-ip вместо ip. что не так?
Lua:
        if text:find("R%-IP %[%d+.%d+.%d+.%d+%]  IP %[%d+.%d+.%d+.%d+%]") then
            local rip = text:match("R%-IP %[(%d+%.%d+%.%d+%.%d+)%]")
            local ip = text:match("IP %[(%d+%.%d+%.%d+%.%d+)%]")
            if ip then
                lua_thread.create(function()
                    wait(700)
                    sampAddChatMessage(rip, -1)
                    sampAddChatMessage(ip, -1)
                end)
            end
        end
 
Решение
Проблема в вашем коде связана с тем, что оба шаблона для match могут находить одно и то же значение, и Lua находит первое совпадение.
Вот исправленный вариант:

Lua:
if text:find("R%-IP %[%d+.%d+.%d+.%d+%]  IP %[%d+.%d+.%d+.%d+%]") then
    local rip, ip = text:match("R%-IP %[(%d+%.%d+%.%d+%.%d+)%].-IP %[(%d+%.%d+%.%d+%.%d+)%]")
    if ip then
        lua_thread.create(function()
            wait(700)
            sampAddChatMessage(rip, -1)
            sampAddChatMessage(ip, -1)
        end)
    end
end

verdis

Участник
13
2
Проблема в вашем коде связана с тем, что оба шаблона для match могут находить одно и то же значение, и Lua находит первое совпадение.
Вот исправленный вариант:

Lua:
if text:find("R%-IP %[%d+.%d+.%d+.%d+%]  IP %[%d+.%d+.%d+.%d+%]") then
    local rip, ip = text:match("R%-IP %[(%d+%.%d+%.%d+%.%d+)%].-IP %[(%d+%.%d+%.%d+%.%d+)%]")
    if ip then
        lua_thread.create(function()
            wait(700)
            sampAddChatMessage(rip, -1)
            sampAddChatMessage(ip, -1)
        end)
    end
end