#include <sourcemod>
#include <cstrike>
#include <zombiereloaded>

new bool:G_bIsHuman[66];
new bool:G_bIsZombie[66];

public Plugin myinfo =
{
	name			= "MVP_Stars",
	author			= "zaCade",
	description		= "",
	version			= "1.0",
	url				= ""
};

public void OnPluginStart()
{
	HookEvent("round_start", Event_RoundStart, EventHookMode:1);
	HookEvent("round_end", Event_RoundEnd, EventHookMode:1);
}

public void ZR_OnClientInfected(int client, int attacker, bool motherInfect, bool respawnOverride, bool respawn)
{
	G_bIsHuman[client] = 0;
	G_bIsZombie[client] = 1;
}

public ZR_OnClientHumanPost(client, bool:respawn, bool:protect)
{
	G_bIsHuman[client] = 1;
	G_bIsZombie[client] = 0;
}

public Action:Event_RoundStart(Handle:event, String:name[], bool:dontBroadcast)
{
	new client = 1;
	while (client <= MaxClients)
	{
		G_bIsHuman[client] = 1;
		G_bIsZombie[client] = 0;
		client++;
	}
	return Action:0;
}

public Action:Event_RoundEnd(Handle:event, String:name[], bool:dontBroadcast)
{
	switch (GetEventInt(event, "winner"))
	{
		case 2:
		{
			CreateTimer(0.2, OnZombiesWin, any:0, 2);
		}
		case 3:
		{
			CreateTimer(0.2, OnHumansWin, any:0, 2);
		}
		default:
		{
		}
	}
	return Action:0;
}

public Action:OnHumansWin(Handle:timer)
{
	new client = 1;
	while (client <= MaxClients)
	{
		new var1;
		if (IsClientInGame(client) && IsPlayerAlive(client) && !IsClientObserver(client) && !IsFakeClient(client))
		{
			new var2;
			if (G_bIsHuman[client] && !G_bIsZombie[client])
			{
				CS_SetMVPCount(client, CS_GetMVPCount(client) + 1);
				new String:sAuthID[64];
				if (!GetClientAuthString(client, sAuthID, 64, true))
				{
					Format(sAuthID, 64, "UNKNOWN");
				}
			}
		}
		client++;
	}
	return Action:0;
}

public Action:OnZombiesWin(Handle:timer)
{
	new client = 1;
	while (client <= MaxClients)
	{
		new var1;
		if (IsClientInGame(client) && IsPlayerAlive(client) && !IsClientObserver(client) && !IsFakeClient(client))
		{
			new var2;
			if (G_bIsZombie[client] && !G_bIsHuman[client])
			{
				new String:sAuthID[64];
				if (!GetClientAuthString(client, sAuthID, 64, true))
				{
					Format(sAuthID, 64, "UNKNOWN");
				}
			}
		}
		client++;
	}
	return Action:0;
}