- #include <amxmodx> 
- #include <cstrike> 
- #include <colorchat> 
-   
- #define MIN_AFK_TIME 90		// I use this incase stupid admins accidentally set mp_afktime to something silly. 
- #define WARNING_TIME 45		// Start warning the user this many seconds before they are about to be kicked. 
- #define CHECK_FREQ 5		// This is also the warning message frequency. 
-   
- #define PREFIX "ViBekK" 
-   
- new g_oldangles[33][3] 
- new g_afktime[33] 
- new bool:g_spawned[33] = {true, ...} 
-   
- public plugin_init() { 
- 	register_plugin("AFK spectator","2.0","Cheesy")  
-   
- 	register_cvar("mp_afktime", "90")	// Kick people AFK longer than this time 
- 	register_cvar("mp_afkminplayers", "1")	// Only kick AFKs when there is atleast this many players on the server 
- 	set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b") 
- 	register_event("ResetHUD", "playerSpawned", "be") 
- } 
-   
- public checkPlayers() { 
- 	for (new i = 1; i <= get_maxplayers(); i++) { 
- 		if (is_user_alive(i) && is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i]) { 
- 			new newangle[3] 
- 			get_user_origin(i, newangle) 
-   
- 			if ( newangle[0] == g_oldangles[i][0] && newangle[1] == g_oldangles[i][1] && newangle[2] == g_oldangles[i][2] ) { 
- 				g_afktime[i] += CHECK_FREQ 
- 				check_afktime(i) 
- 			} else { 
- 				g_oldangles[i][0] = newangle[0] 
- 				g_oldangles[i][1] = newangle[1] 
- 				g_oldangles[i][2] = newangle[2] 
- 				g_afktime[i] = 0 
- 			} 
- 		} 
- 	} 
- 	return PLUGIN_HANDLED 
- } 
-   
- check_afktime(id) { 
- 	new numplayers = get_playersnum() 
- 	new minplayers = get_cvar_num("mp_afkminplayers") 
-   
- 	if (numplayers >= minplayers) { 
- 		new maxafktime = get_cvar_num("mp_afktime") 
- 		if (maxafktime < MIN_AFK_TIME) { 
- 			log_amx("cvar mp_afktime %i túl kicsi. Minimum érték: %i.", maxafktime, MIN_AFK_TIME) 
- 			maxafktime = MIN_AFK_TIME 
- 			set_cvar_num("mp_afktime", MIN_AFK_TIME) 
- 		} 
-   
- 		if ( maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime) { 
- 			new timeleft = maxafktime - g_afktime[id] 
- 			ColorChat(id, GREEN, "[%s]^x01 Van^x03 %i ^x01másodperced megmozdulni, vagy át leszel helyezve Spectatorba.", PREFIX, timeleft) 
- 		} else if (g_afktime[id] > maxafktime) { 
- 			new name[32] 
- 			get_user_name(id, name, 31) 
- 			ColorChat(0, GREEN, "[%s] ^x03%s ^x01áthelyezve Spectatorba, mert AFK volt.", PREFIX, name) 
- 			log_amx("%s atrakva specibe %i mp afk miatt.", name, maxafktime) 
- 			user_silentkill(id); 
- 			engclient_cmd(id, "jointeam", "6") 
- 			g_afktime[id] = 0 
- 		} 
- 	} 
- } 
-   
- public client_connect(id) { 
- 	g_afktime[id] = 0 
- 	return PLUGIN_HANDLED 
- } 
-   
- public client_putinserver(id) { 
- 	g_afktime[id] = 0 
- 	return PLUGIN_HANDLED 
- } 
-   
- public playerSpawned(id) { 
- 	g_spawned[id] = false 
- 	new sid[1] 
- 	sid[0] = id 
- 	set_task(0.75, "delayedSpawn",_, sid, 1)	// Give the player time to drop to the floor when spawning 
- 	return PLUGIN_HANDLED 
- } 
-   
- public delayedSpawn(sid[]) { 
- 	get_user_origin(sid[0], g_oldangles[sid[0]]) 
- 	g_spawned[sid[0]] = true 
- 	return PLUGIN_HANDLED 
- }