From 0845d7a88a62e0951355a7a5de0e575e24dfcdd6 Mon Sep 17 00:00:00 2001
From: neon <xxx@yyy.de>
Date: Mon, 23 Jul 2018 10:59:45 +0200
Subject: [PATCH] initial commit

---
 .../scripting/hlstatsx_difficulty.sp          | 120 ++++++++++++++++++
 1 file changed, 120 insertions(+)
 create mode 100644 hlstatsx_difficulty/scripting/hlstatsx_difficulty.sp

diff --git a/hlstatsx_difficulty/scripting/hlstatsx_difficulty.sp b/hlstatsx_difficulty/scripting/hlstatsx_difficulty.sp
new file mode 100644
index 00000000..6938781f
--- /dev/null
+++ b/hlstatsx_difficulty/scripting/hlstatsx_difficulty.sp
@@ -0,0 +1,120 @@
+#include <sourcemod>
+#include <cstrike>
+#include <zombiereloaded>
+
+new bool:G_bIsHuman[66];
+new bool:G_bIsZombie[66];
+new Handle:G_hCvar_Difficulty_Humans;
+new Handle:G_hCvar_Difficulty_Zombies;
+
+public Plugin:myinfo =
+{
+	name = "HLstatsX CE Difficulty",
+	description = "Grant points to the winning team. (zombies/humans)",
+	author = "zaCade + Neon",
+	version = "1.1",
+	url = ""
+};
+
+public OnPluginStart()
+{
+	G_hCvar_Difficulty_Humans = CreateConVar("hlx_difficulty_humans", "0", "", 0, true, 0.0, true, 3.0);
+	G_hCvar_Difficulty_Zombies = CreateConVar("hlx_difficulty_zombies", "0", "", 0, true, 0.0, true, 3.0);
+	HookEvent("round_start", Event_RoundStart, EventHookMode:1);
+	HookEvent("round_end", Event_RoundEnd, EventHookMode:1);
+	
+	AutoExecConfig(true, "plugin.hlstatsx_difficulty");
+}
+
+public ZR_OnClientInfected(client, attacker, bool:motherinfect, bool:respawnoverride, bool:respawn)
+{
+	G_bIsHuman[client] = 0;
+	G_bIsZombie[client] = 1;
+}
+
+public void ZR_OnClientHumanPost(int 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");
+				}
+				LogToGame("\"%N<%d><%s><%s>\" triggered \"human_win_%i\"", client, GetClientUserId(client), sAuthID, "CT", GetConVarInt(G_hCvar_Difficulty_Humans));
+			}
+		}
+		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");
+				}
+				LogToGame("\"%N<%d><%s><%s>\" triggered \"zombie_win_%i\"", client, GetClientUserId(client), sAuthID, "TERRORIST", GetConVarInt(G_hCvar_Difficulty_Zombies));
+			}
+		}
+		client++;
+	}
+	return Action:0;
+}
+