Jump to content

Hacer un anti flood


Anzo

Recommended Posts

¿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 by Anzo
Link to comment
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

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
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
  • Recently Browsing   0 members

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