
/* AMX Mod script. 
* 
* (c) 2002-2003, OLO 
* This file is provided as is (no warranties). 
*
*	+----------------------------------------------------+
*	|       AMX Plugins und ins Deutsche uebersetzt      |
*	|             unter www.ksk-amx.de.vu                |
*	|  German AMX Plugins by KSK|Osiris and KSK|EPROK    |
*	|          Clan URL: http://www.real-ksk.de          |
*	|      Im Qnet IRC Channel: #headquarter-bremen      |
*	|          Das Offizielle AMX zuhause:               |
*	|           http://amxmod.net/amx.php                |
*	+----------------------------------------------------+
* 
* Spieler mit Immunität wird nicht gecheckt 
*/ 

#include <amxmod> 

new HIGHPING_MAX = 150 // Setzt den Max. Erlaubten Ping 
new HIGHPING_TIME = 12  // Ping check im Sekunden abstand
new HIGHPING_TESTS = 5  // minimale Anzahl der Ping checks bevor etwas unternommen wird

new g_Ping[33]
new g_Samples[33] 

public plugin_init()
{
  register_plugin("High Ping Kicker","0.9.4","default") 
  
  if ( HIGHPING_TIME < 5 ) HIGHPING_TIME = 5
  if ( HIGHPING_TESTS < 3 ) HIGHPING_TESTS = 3  
}

public client_disconnect(id) 
  remove_task( id )

public client_putinserver(id) 
{    
  g_Ping[id] = 0 
  g_Samples[id] = 0

  if ( !is_user_bot(id) ) 
  {
    new param[1]
    param[0] = id 
    set_task( float(HIGHPING_TIME) , "checkPing" , id , param , 1 , "b" )
    set_task( 10.0 , "showWarn" , id , param , 1 )    

  }
} 

kickPlayer( id ) 
{ 
  new name[32]
  get_user_name( id , name , 31 ) 
  client_print(0,print_chat,"*** Spieler %s wurde gekickt er hat leider einen zu hohen Ping",name)
  client_cmd(id,"echo ^"*** Sorry du hast leider einen zu hohen Ping versuche es Spaeter wieder...^";disconnect")
} 

public checkPing(param[]) 
{ 
  new id = param[ 0 ] 

  if ( get_user_flags(id) & ADMIN_IMMUNITY ) return // has immunity

  new p, l 

  get_user_ping( id , p , l ) 

  g_Ping[ id ] += p
  ++g_Samples[ id ]

  if ( (g_Samples[ id ] > HIGHPING_TESTS) &&
    (g_Ping[id] / g_Samples[id] > HIGHPING_MAX)  )    
    kickPlayer(id) 
}

public showWarn(param[])
  client_print( param[0] ,print_chat,"*** Spieler mit einem Ping ueber %d werden gekickt!!!", HIGHPING_MAX )
