public Action Command_Time(int client, int args)
{
	if (!g_bActive)
		return Plugin_Handled;
	
	if (g_fMapTime[client] != 0.0)
	{
		char cTime[16];
		TimerFormat(g_fMapTime[client], cTime, sizeof(cTime), true, false);
		TimerPrintToChat(client, false, "%T", "PlayerTime", LANG_SERVER, cTime);
	}
	else
		TimerPrintToChat(client, false, "%T", "PlayerNoTime", LANG_SERVER);
	return Plugin_Handled;
}

public Action Command_Stop(int client, int args)
{
	if (!g_bActive)
			return Plugin_Handled;
			
	if (g_iActivity[client] == 0)
	{
		g_iActivity[client] = -1;
		TimerPrintToChat(client, false, "%T", "TimerStopped", LANG_SERVER);
	}
	else if (g_iActivity[client] == 1)
	{
		TimerPrintToChat(client, false, "%T", "TimerCantBeStopped", LANG_SERVER);
	}
	else if (g_iActivity[client] == -1)
	{
		TimerPrintToChat(client, false, "%T", "TimerNotRunning", LANG_SERVER);
	}
	return Plugin_Handled;
}

public Action Command_Zones(int client, int args)
{
	if (g_iEditor != -1)
	{
		TimerPrintToChat(client, false, "%T", "ZoneMenuUnavailable", LANG_SERVER);
		//PrintToChat(client, "Zone menu currently unavailable");
		return Plugin_Handled;
	}
	g_iEditor = client;
	g_iActivity[client] = -1;
	g_bEditorComesFromMenu = false;
	ZoneMenu(client, g_bEditorComesFromMenu);
	return Plugin_Handled;
}

public Action Command_Top(int client, int args)
{
	char sMapName[129];
	if (args > 0)
	{
		GetCmdArg(1, sMapName, sizeof(sMapName));
		if (strlen(sMapName) > 64)
		{
			TimerPrintToChat(client, false, "%T", "MapNameTooLong", LANG_SERVER);
			return Plugin_Handled;
		}
		g_hDatabase.Escape(sMapName, sMapName, sizeof(sMapName));
	}
	else
	{
		if (!g_bActive)
			return Plugin_Handled;
		strcopy(sMapName, sizeof(sMapName), g_sMapName);
	}
	int userid = GetClientUserId(client);
	RequestTop(userid, sMapName, 10);
	return Plugin_Handled;
}

public Action Command_TimerAdmin(int client, int args)
{
	TimerAdminMenu(client);
	return Plugin_Handled;
}

public Action Command_WR(int client, int args)
{
	if (args == 0)
	{
		if (!g_bActive)
			return Plugin_Handled;
			
		if (g_fWrTime == 0.0)
		{
			TimerPrintToChat(client, false, "%T", "TimesNotFound", LANG_SERVER, g_sMapName);
			return Plugin_Handled;
		}
		else
		{
			char cWRTime[16];
			TimerFormat(g_fWrTime, cWRTime, sizeof(cWRTime), true, false);
			TimerPrintToChat(client, false, "%T", "WR", LANG_SERVER, g_sWrHolder, g_sMapName, cWRTime);
			return Plugin_Handled;
		}
	}
	
	else
	{
		char sMapName[129];
		GetCmdArg(1, sMapName, sizeof(sMapName));
		if (strlen(sMapName) > 64)
		{
			TimerPrintToChat(client, false, "%T", "MapNameTooLong", LANG_SERVER);
			return Plugin_Handled;
		}
		g_hDatabase.Escape(sMapName, sMapName, sizeof(sMapName));
		
		int userid = GetClientUserId(client);
		RequestWR(userid, sMapName);
	}
	return Plugin_Handled;
}

public int Native_StopTime(Handle hPlugin, int numParams)
{
	int client = GetNativeCell(1);
	
	if (!isValidClient(client))
		return;
		
	if (g_iActivity[client] == -1)
		return;
	
	g_iActivity[client] = -1;
	TimerPrintToChat(client, false, "%T", "TimerCheatStopped", LANG_SERVER);
	return;
}