/* Plugin generated by AMXX-Studio */
/* 
FAQ: 
When Setting The Value For -> amx_auto_restart <- 
Setting Value Like This amx_auto_restart "30.0" Is Correct
Setting Value Like This amx_auto_restart "30" Is Not Correct
Because The Cvar Value Is A Float
*/

#include <amxmodx>
#include <fun>

#define PLUGIN "Auto Restart vl"
#define VERSION "1.1"
#define AUTHOR "vato loco [GE-S]"

#define TIMER_TASK        123456
#define RESTART_TASK      789123

new g_counter  

new g_autorestart
new g_autoenabled

new g_SyncGameStart
new g_SyncRestartTimer

new bool:g_bRoundStart 

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_logevent("RoundStart", 2, "1=Round_Start")
	register_event("TextMsg","RestartTask","a","2&#Game_C")   
	
	register_dictionary("auto_restart_vl.txt")
	
	g_autoenabled = register_cvar("amx_autorr_enable","1")
	g_autorestart = register_cvar("amx_auto_restart","20.0")
	
	g_SyncGameStart = CreateHudSyncObj()
	g_SyncRestartTimer = CreateHudSyncObj()
	
	register_event("CurWeapon", "strip_weapon", "be")
	register_event("ResetHUD", "playerSpawned", "be")
	register_event("DeathMsg", "EventDeath", "a")
}

public RoundStart()
{
	if(!get_pcvar_num(g_autoenabled))
		return PLUGIN_HANDLED
	
	if(g_bRoundStart)
	{
		set_hudmessage( 0, 255, 0, -1.0, 0.40, 1, 5.0, 8.0, 0.0, 0.0, 2)
		ShowSyncHudMsg( 0, g_SyncGameStart, "%L",LANG_PLAYER, "GAME_STARTED")
	}
	g_bRoundStart = false
	
	set_user_godmode(0, 0)
	
	return PLUGIN_CONTINUE
}

public RestartTask() 
{
	if(!get_pcvar_num(g_autoenabled))
		return PLUGIN_HANDLED
	
	set_task(1.0,"TimeCounter",TIMER_TASK,_,_,"a",get_pcvar_num(g_autorestart))
	set_task(get_pcvar_float(g_autorestart),"RestartRound",RESTART_TASK)
	
	return PLUGIN_CONTINUE
}

public TimeCounter() 
{
	g_counter++
	
	new Float:iRestartTime = get_pcvar_float(g_autorestart) - g_counter
	new Float:fSec
	fSec = iRestartTime 
	
	set_hudmessage( 0, 255, 255, -1.0, 0.25, 0, 0.0, 1.0, 0.0, 0.0, -1)
	ShowSyncHudMsg( 0, g_SyncRestartTimer, "%L",LANG_PLAYER, "AUTO_RESTART", fSec)
	
	if(g_counter == get_pcvar_num(g_autorestart))
	{
		g_bRoundStart = true
	}
}

public RestartRound() 
{
	server_cmd("sv_restartround 1")
}

public strip_weapon(id)
	if(is_user_alive(id))
		if(g_bRoundStart == false)
			set_task(0.2, "strip", id)

public playerSpawned()
	for(new i=1; i<33; i++)
		if(is_user_alive(i))
			if(g_bRoundStart == false)
				{
					set_user_godmode(i, 1)
					set_task(0.2, "strip", i)
				}

public strip(id) strip_user_weapons(id)

public EventDeath() {
	set_user_godmode(read_data( 2 ), 0)
	
	return PLUGIN_CONTINUE
}