diff --git a/hlstatsx/scripting/hlstatsx_difficulty.sp b/hlstatsx/scripting/hlstatsx_difficulty.sp new file mode 100644 index 00000000..aff76dea --- /dev/null +++ b/hlstatsx/scripting/hlstatsx_difficulty.sp @@ -0,0 +1,119 @@ +#include +#include +#include + +new bool:G_bIsHuman[MAXPLAYERS+1]; +new bool:G_bIsZombie[MAXPLAYERS+1]; + +new Handle:G_hCvar_Difficulty_Humans; +new Handle:G_hCvar_Difficulty_Zombies; + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Plugin:myinfo = +{ + name = "HLstatsX CE Difficulty", + author = "zaCade + Neon", + description = "Grant points to the winning team. (zombies/humans)", + version = "1.1", + url = "" +}; + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +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); + HookEvent("round_end", Event_RoundEnd); + + AutoExecConfig(true, "plugin.hlstatsx_difficulty"); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public ZR_OnClientInfected(client, attacker, bool:motherinfect, bool:respawnoverride, bool:respawn) +{ + G_bIsHuman[client] = false; + G_bIsZombie[client] = true; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public ZR_OnClientHumanPost(client, bool:respawn, bool:protect) +{ + G_bIsHuman[client] = true; + G_bIsZombie[client] = false; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action:Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast) +{ + for (new client = 1; client <= MaxClients; client++) + { + G_bIsHuman[client] = true; + G_bIsZombie[client] = false; + } +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action:Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast) +{ + switch(GetEventInt(event, "winner")) + { + case(CS_TEAM_CT): CreateTimer(0.2, OnHumansWin, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE); + case(CS_TEAM_T): CreateTimer(0.2, OnZombiesWin, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE); + } +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action:OnHumansWin(Handle:timer) +{ + for (new client = 1; client <= MaxClients; client++) + { + if (IsClientInGame(client) && IsPlayerAlive(client) && !IsClientObserver(client) && !IsFakeClient(client)) + { + if (G_bIsHuman[client] && !G_bIsZombie[client]) + { + new String:sAuthid[64]; + if (!GetClientAuthString(client, sAuthid, sizeof(sAuthid))) + Format(sAuthid, sizeof(sAuthid), "UNKNOWN"); + + LogToGame("\"%N<%d><%s><%s>\" triggered \"human_win_%i\"", client, GetClientUserId(client), sAuthid, "CT", GetConVarInt(G_hCvar_Difficulty_Humans)); + } + } + } +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action:OnZombiesWin(Handle:timer) +{ + for (new client = 1; client <= MaxClients; client++) + { + if (IsClientInGame(client) && IsPlayerAlive(client) && !IsClientObserver(client) && !IsFakeClient(client)) + { + if (G_bIsZombie[client] && !G_bIsHuman[client]) + { + new String:sAuthid[64]; + if (!GetClientAuthString(client, sAuthid, sizeof(sAuthid))) + Format(sAuthid, sizeof(sAuthid), "UNKNOWN"); + + LogToGame("\"%N<%d><%s><%s>\" triggered \"zombie_win_%i\"", client, GetClientUserId(client), sAuthid, "TERRORIST", GetConVarInt(G_hCvar_Difficulty_Zombies)); + } + } + } +} \ No newline at end of file