Jump to content

[Solucionado] Deteccion de gsub incorrecta o nula :(


Recommended Posts

Estuve creando un sistema de deteccion de IP, en todo esto, me base en una tabla creada por mi (Y con un orden "Que te cagas") y usando string.gsub y string.find, El problema es, Cuando hablo, no censura la IP, quitando el break, veo un mensaje que si se ha silenciado, y el resto no (ovbio), bien pues asi.

EDITO: No detecta la IP, (Con el return, sin el return funciopna pero salta supermega spam (ovbio por el loop)) y lo pasa como un mensaje normal

local _antispam = {} --antispam array 
local playerName 
local msg 
local tipo 
local seg 
local t = 5 
ip = { 
"%d%d%d.%d%d%d.%d%d%d.%d%d%d", 
"%d%d%d.%d%d%d.%d%d%d.%d%d", 
"%d%d%d.%d%d%d.%d%d%d.%d", 
"%d%d%d.%d%d%d.%d%d.%d%d%d", 
"%d%d%d.%d%d%d.%d%d.%d%d", 
"%d%d%d.%d%d%d.%d%d.%d", 
"%d%d%d.%d%d%d.%d.%d%d%d", 
"%d%d%d.%d%d%d.%d.%d%d", 
"%d%d%d.%d%d%d.%d.%d", 
"%d%d%d.%d%d.%d%d%d.%d%d%d", 
"%d%d%d.%d%d.%d%d%d.%d%d", 
"%d%d%d.%d%d.%d%d%d.%d", 
"%d%d%d.%d%d.%d%d.%d%d%d", 
"%d%d%d.%d%d.%d%d.%d%d", 
"%d%d%d.%d%d.%d%d.%d", 
"%d%d%d.%d%d.%d.%d%d%d", 
"%d%d%d.%d%d.%d.%d%d", 
"%d%d%d.%d%d.%d.%d", 
"%d%d%d.%d.%d%d.%d%d%d", 
"%d%d%d.%d.%d%d.%d%d", 
"%d%d%d.%d.%d%d.%d", 
"%d%d%d.%d.%d.%d%d%d", 
"%d%d%d.%d.%d.%d%d", 
"%d%d%d.%d.%d.%d", 
"%d%d.%d%d%d.%d%d%d.%d%d%d", 
"%d%d.%d%d%d.%d%d%d.%d%d", 
"%d%d.%d%d%d.%d%d%d.%d", 
"%d%d.%d%d%d.%d%d.%d%d%d", 
"%d%d.%d%d%d.%d%d.%d%d", 
"%d%d.%d%d%d.%d%d.%d", 
"%d%d.%d%d%d.%d.%d%d%d", 
"%d%d.%d%d%d.%d.%d%d", 
"%d%d.%d%d%d.%d.%d", 
"%d%d.%d%d.%d%d%d.%d%d%d", 
"%d%d.%d%d.%d%d%d.%d%d", 
"%d%d.%d%d.%d%d%d.%d", 
"%d%d.%d%d.%d%d.%d%d%d", 
"%d%d.%d%d.%d%d.%d%d", 
"%d%d.%d%d.%d%d.%d", 
"%d%d.%d%d.%d.%d%d%d", 
"%d%d.%d%d.%d.%d%d", 
"%d%d.%d%d.%d.%d", 
"%d%d.%d.%d%d%d.%d%d%d", 
"%d%d.%d.%d%d%d.%d%d", 
"%d%d.%d.%d%d%d.%d", 
"%d%d.%d.%d%d.%d%d%d", 
"%d%d.%d.%d%d.%d%d", 
"%d%d.%d.%d%d.%d", 
"%d%d.%d.%d.%d%d%d", 
"%d%d.%d.%d.%d%d", 
"%d%d.%d.%d.%d", 
"%d.%d%d%d.%d%d%d.%d%d%d", 
"%d.%d%d%d.%d%d%d.%d%d", 
"%d.%d%d%d.%d%d%d.%d", 
"%d.%d%d%d.%d%d.%d%d%d", 
"%d.%d%d%d.%d%d.%d%d", 
"%d.%d%d%d.%d%d.%d", 
"%d.%d%d%d.%d.%d%d%d", 
"%d.%d%d%d.%d.%d%d", 
"%d.%d%d%d.%d.%d", 
"%d.%d%d.%d%d%d.%d%d%d", 
"%d.%d%d.%d%d%d.%d%d", 
"%d.%d%d.%d%d%d.%d", 
"%d.%d%d.%d%d.%d%d%d", 
"%d.%d%d.%d%d.%d%d", 
"%d.%d%d.%d%d.%d", 
"%d.%d%d.%d.%d%d%d", 
"%d.%d%d.%d.%d%d", 
"%d.%d%d.%d.%d", 
"%d.%d.%d%d%d.%d%d%d", 
"%d.%d.%d%d%d.%d%d", 
"%d.%d.%d%d%d.%d", 
"%d.%d.%d%d.%d%d%d", 
"%d.%d.%d%d.%d%d", 
"%d.%d.%d%d.%d", 
"%d.%d.%d.%d%d%d", 
"%d.%d.%d.%d%d", 
"%d.%d.%d.%d", 
} 
function chatEvent (msg, tipo) 
cancelEvent() 
    if _antispam[source] then 
    seg = _antispam[source] + (t * 1000) 
        if seg > getTickCount() then 
        outputChatBox("Debes esperar weon: "..math.floor((seg - getTickCount())/1000).." segundos", source, 255,0,0,true) 
        return 
        else 
        _antispam[source] = getTickCount() 
        end 
    else 
    _antispam[source] = getTickCount() 
    end 
    if tipo == 0 then 
    playerName = getPlayerName(source) 
        for id, ips in ipairs(ip) do 
            if string.find(msg, ips) then 
            --__msgSub = string.gsub(msg, ips, "*") 
            --outputChatBox("#FFFFFF"..playerName.."#FFFFFF: "..__msgSub, root, 255, 255, 255, true) 
            outputChatBox("No publiques servidores!", root, 255, 255, 255, true) 
            _antispam[source] = getTickCount() + (t*20*1000) 
            return 
            else 
            outputChatBox("NOIP", root, 0,255,0,true) 
            return 
            end 
        end 
    end 
end 
addEventHandler("onPlayerChat", root, chatEvent) 

Edited by Guest
Link to comment

Dios, vale, que retraso mas grande tengo; El mensaje de Tomas me abrió los ojos

function chatEvent (msg, tipo) 
cancelEvent() 
    if _antispam[source] then 
    seg = _antispam[source] + (t * 1000) 
        if seg > getTickCount() then 
        outputChatBox("Debes esperar weon: "..math.floor((seg - getTickCount())/1000).." segundos", source, 255,0,0,true) 
        return 
        else 
        _antispam[source] = getTickCount() 
        end 
    else 
    _antispam[source] = getTickCount() 
    end 
    if tipo == 0 then 
    playerName = getPlayerName(source) 
        for id, ips in ipairs(ip) do 
            if string.find(msg, ips) then 
            --__msgSub = string.gsub(msg, ips, "*") 
            --outputChatBox("#FFFFFF"..playerName.."#FFFFFF: "..__msgSub, root, 255, 255, 255, true) 
            outputChatBox("No publiques servidores!", root, 255, 255, 255, true) 
            _antispam[source] = getTickCount() + (t*20*1000) 
            return 
            end 
        end 
    outputChatBox("NOIP", root, 0,255,0,true) 
    end 
end 
addEventHandler("onPlayerChat", root, chatEvent) 

Thank u

Link to comment
Hidden

El 'return' hace que devuelva el valor que especificas a continuación del return finalizando completamente la funcion, por lo que todo lo que este luego no se ejecutara, con esto me refiero a que si lo que intentas es finalizar el for-loop, deberias usar break:

function chatEvent (msg, tipo) 
cancelEvent() 
    if _antispam[source] then 
    seg = _antispam[source] + (t * 1000) 
        if seg > getTickCount() then 
        outputChatBox("Debes esperar weon: "..math.floor((seg - getTickCount())/1000).." segundos", source, 255,0,0,true) 
        return 
        else 
        _antispam[source] = getTickCount() 
        end 
    else 
    _antispam[source] = getTickCount() 
    end 
    if tipo == 0 then 
    playerName = getPlayerName(source) 
        for id, ips in ipairs(ip) do 
            if string.find(msg, ips) then 
            --__msgSub = string.gsub(msg, ips, "*") 
            --outputChatBox("#FFFFFF"..playerName.."#FFFFFF: "..__msgSub, root, 255, 255, 255, true) 
            outputChatBox("No publiques servidores!", root, 255, 255, 255, true) 
            _antispam[source] = getTickCount() + (t*20*1000) 
            break 
            end 
        end 
    outputChatBox("NOIP", root, 0,255,0,true) 
    end 
end 
addEventHandler("onPlayerChat", root, chatEvent) 

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...