Anzo Posted October 3, 2016 Share Posted October 3, 2016 (edited) ¿Cómo podría hacer un anti-flood? quiero hacer algo como, si el jugador escribe 4 lineas o más, escriba un mensaje diferente o no, lo mutee por 2 minutos. Me refiero a algo así: Aquí NO le daría mute al jugador que escribe JECE: HOLA JECE:HOLA JECE:HOLA Aquí SI le daría mute al jugador que escribe JECE:HOLA JECE:HOLA JECE:HOLA JECE:HOLA Pues eso, que puedo usar para saber si el jugador mando más de 3 mensajes Edited October 3, 2016 by Anzo Link to comment
Tomas Posted October 4, 2016 Share Posted October 4, 2016 local rep = { message = {}, count = {} } local mutes = { } addEventHandler("onPlayerChat", root, function (message, type) if not rep.message[source] then -- first time rep.message[source] = message rep.count[source] = 1 else if ( rep.message[source] == message ) then rep.count[source] = rep.count[source] + 1 else rep.message[source] = message rep.count[source] = 1 end end if rep.count[source] == 4 then outputChatBox("Don't repeat yourself!", source, 255, 0, 0) setPlayerMuted(source, true) mutes[source] = getTickCount() + 120000 end end ) setTimer( function () for player, time in pairs (mutes) do if ( isElement(player) ) then if ( getTickCount() > time ) then setPlayerMuted(source, false) mutes[player] = nil end else mutes[player] = nil if ( rep.count[player] ) then rep.count[player] = nil rep.message[player] = nil end end end, 5000, 0 ) Esto debería funcionar, no lo he probado. Link to comment
Anzo Posted October 5, 2016 Author Share Posted October 5, 2016 Si funciona, muchas gracias. Pero una pregunta más, eso da mute solo si escribes 4 lineas con el mismo texto si escribo 4 veces "hola" me da mute, pero si escribo "hola" y despues "como estas", luego "bien" y despues "chao" no me da mute. ¿Cómo puedo hacer que de mute si el jugador escribe 4 lineas seguidas? Link to comment
Tomas Posted October 5, 2016 Share Posted October 5, 2016 1 hour ago, Anzo said: Si funciona, muchas gracias. Pero una pregunta más, eso da mute solo si escribes 4 lineas con el mismo texto si escribo 4 veces "hola" me da mute, pero si escribo "hola" y despues "como estas", luego "bien" y despues "chao" no me da mute. ¿Cómo puedo hacer que de mute si el jugador escribe 4 lineas seguidas? Pensé que querías que mutease solo si repetía el mismo mensaje cuatro veces ._. Si quitas lo de rep.message debería funcionar. Link to comment
Recommended Posts