UserToDelete Posted March 18, 2015 Share Posted March 18, 2015 (edited) 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 March 18, 2015 by Guest Link to comment
Tomas Posted March 18, 2015 Share Posted March 18, 2015 Para qué colocas 'return else' ? Link to comment
UserToDelete Posted March 18, 2015 Author Share Posted March 18, 2015 Para qué colocas 'return else' ? Por si if no se cumple, que de else? Seria mas correcto asi? return; else por cierto, me uní al foro 22 dias despues de Tomas :OOOO Link to comment
UserToDelete Posted March 18, 2015 Author Share Posted March 18, 2015 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
Sasu Posted March 19, 2015 Share Posted March 19, 2015 · Hidden 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
Recommended Posts