DanComment írta: Sziasztok feltettem azt a plugint ami az afk t egy idő után kiteszi spectate ba. Nem működik és konzolba ezt írja: Unknown command: spectator #include <amxmodx> #include <amxmisc> #define MIN_AFK_TIME 60		// I use this incase stupid admins accidentally set mp_afktime to something silly. #define WARNING_TIME 15		// 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.   new g_oldangles[33][3] new g_afktime[33] new bool:g_spawned[33] = {false, ...}   public plugin_init() { 	register_plugin("AFK spectate","1.2","pizzahut")  	register_cvar("afk_version", "1.2", FCVAR_SERVER) 	register_cvar("mp_afktime", "300")	// Kick people AFK longer than this time. 	register_cvar("mp_afkminplayers", "1")	// Only kick AFKs when there is at least this many players on the server. 	set_task(float(CHECK_FREQ),"checkPlayers",0,"",0,"b",0) 	register_logevent("playerSpawned",3,"1=changed role to") 	register_logevent("playerSpecs",3,"1=joined team","2=SPECTATOR") }   public checkPlayers() { 	new name[64] 	for (new i = 1; i <= get_maxplayers(); i++) 	{ 		if (is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && (get_user_team(i)>0)) 		{ 			new newangle[3] 			get_user_origin(i, newangle) 			get_user_name(i,name,64) 			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 			} 		} 		else	afk_reset(i) 	} 	return PLUGIN_CONTINUE }   check_afktime(id) { 	new numplayers = get_playersnum() 	new minplayers = get_cvar_num("mp_afkminplayers") 	if (numplayers >= minplayers) 	{ 		if(g_spawned[id]) 		{ 			new maxafktime = get_cvar_num("mp_afktime") 			if(maxafktime < MIN_AFK_TIME) 			{ 				log_amx("cvar mp_afktime %i is too low. Minimum value is %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] 				client_print(id, print_chat, "You have %i seconds to move or you will be put into spectator mode for being AFK.", timeleft) 			} 			else if(g_afktime[id] > maxafktime) 			{ 				client_print(id, print_chat, "You are put into spectator mode for being AFK longer than %i seconds.", maxafktime)         	                client_cmd(id,"spectate") 			} 		} 		else if(g_afktime[id] > 30) client_cmd(id,"spectate") 	} }   public playerSpawned() { 	new id = get_id() 	g_spawned[id] = true 	return PLUGIN_CONTINUE }   public playerSpecs() { 	new id = get_id() 	afk_reset(id) 	return PLUGIN_CONTINUE }   afk_reset(id) { 	g_afktime[id] = 0 	new newangle[3] 	get_user_origin(id,newangle) 	g_oldangles[id][0] = newangle[0] 	g_oldangles[id][1] = newangle[1] 	g_oldangles[id][2] = newangle[2] 	g_spawned[id] = false }   get_id() { 	new Arg1[64] 	read_logargv(0,Arg1,64) 	new p_name[64] 	parse_loguser(Arg1,p_name,64) 	new name[64],id=0 	for (new i=1;i<=get_maxplayers();i++) 	{ 		if(is_user_connected(i)) 		{ 			get_user_name(i,name,64) 			if(equal(p_name,name)) id = i 		} 	} 	return id }   public server_changelevel(map[]) { 	for (new i = 1; i <= get_maxplayers(); i++) afk_reset(i) 	return PLUGIN_CONTINUE }   
 
 
  Azért nem megy a plugin, mert nincs "befejezve" return PLUGIN_CONTINUE => HANDLED 
 
 
  Tesztelve, működik:
 
 #include <amxmodx> #include <cstrike> // AFK Task offset const afk_task = 4000 // pcvars new cvar_afktime new cvar_afkimmunity // player origins new last_origins[33] public plugin_init() {        register_plugin("AFK to Spectator", "0.1", "MeRcyLeZZ")         // AFK time in seconds, before player is transferred     cvar_afktime = register_cvar("amx_afktime", "40")     // Admin immunity?     cvar_afkimmunity = register_cvar("amx_afkimmunity", "1") } public client_putinserver(id) {     remove_task(id+afk_task)     set_task(get_pcvar_float(cvar_afktime), "check_afk", id+afk_task) } public client_disconnect(id) {     remove_task(id+afk_task) } public check_afk(taskid) {        new id = taskid - afk_task;         if (!is_user_alive(id))     {         set_task(get_pcvar_float(cvar_afktime), "check_afk", taskid)         return;     }         new origin[3] // get origin     get_user_origin(id, origin)         if (origin[0] == last_origins[id][0] && origin[1] == last_origins[id][1] && origin[2] == last_origins[id][2])     {         if (get_user_flags(id) & ADMIN_IMMUNITY && get_pcvar_num(cvar_afkimmunity))         {             client_print(id, print_chat, "[AMXX AFK] You have immunity. You won't be transferred.")         }         else         {             new name[32]             get_user_name( id , name , sizeof name - 1)             client_print(0, print_chat, "[AMXX AFK] %s has been transferred to the Spectator Team.",name)             user_kill(id, 1)             cs_set_user_team(id, CS_TEAM_SPECTATOR)         }     }         // save new origin     last_origins[id][0] = origin[0]     last_origins[id][1] = origin[1]     last_origins[id][2] = origin[2]         set_task(get_pcvar_float(cvar_afktime), "check_afk", taskid) // keep checking } 
 
 
  A kód elég hülyén van, de sajnos nem tudtam vele mit kezdeni, de itt a forrás ha te tudod hogy kell normálisan megjeleníteni a kódot  
  LINK: http://forums.alliedmods.net/showthread.php?t=69219
		 |