From d1a3add3aae46951cf7d74e5bc7cec74c9f0a423 Mon Sep 17 00:00:00 2001 From: dogan Date: Sat, 9 May 2020 15:08:17 +0200 Subject: [PATCH] AdvancedTargeting: eh does this work? --- .../scripting/AdvancedTargeting.sp | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/AdvancedTargeting/scripting/AdvancedTargeting.sp b/AdvancedTargeting/scripting/AdvancedTargeting.sp index 35815027..cf13173e 100644 --- a/AdvancedTargeting/scripting/AdvancedTargeting.sp +++ b/AdvancedTargeting/scripting/AdvancedTargeting.sp @@ -29,9 +29,9 @@ bool g_bLateLoad = false; public Plugin myinfo = { name = "Advanced Targeting", - author = "BotoX + Obus", + author = "BotoX + Obus + Dogan", description = "Adds extra targeting methods", - version = "1.3", + version = "1.4", url = "https://github.com/CSSZombieEscape/sm-plugins/tree/master/AdvancedTargeting/" } @@ -44,6 +44,7 @@ public void OnPluginStart() AddMultiTargetFilter("@random", Filter_Random, "a Random Player", false); AddMultiTargetFilter("@randomct", Filter_RandomCT, "a Random CT", false); AddMultiTargetFilter("@randomt", Filter_RandomT, "a Random T", false); + AddMultiTargetFilter("@randomspec", Filter_RandomSpec, "a Random Spec", false); AddMultiTargetFilter("@alivect", Filter_AliveCT, "Alive Humans", false); AddMultiTargetFilter("@alivet", Filter_AliveT, "Alive Zombies", false); AddMultiTargetFilter("@talking", Filter_Talking, "Talking", false); @@ -77,6 +78,7 @@ public void OnPluginEnd() RemoveMultiTargetFilter("@random", Filter_Random); RemoveMultiTargetFilter("@randomct", Filter_RandomCT); RemoveMultiTargetFilter("@randomt", Filter_RandomT); + RemoveMultiTargetFilter("@randomspec", Filter_RandomSpec); RemoveMultiTargetFilter("@alivect", Filter_AliveCT); RemoveMultiTargetFilter("@alivet", Filter_AliveT); RemoveMultiTargetFilter("@talking", Filter_Talking); @@ -355,6 +357,37 @@ public bool Filter_RandomT(const char[] sPattern, Handle hClients, int client) return true; } +public bool Filter_RandomSpec(const char[] sPattern, Handle hClients, int client) +{ + int iSpecCount = GetTeamClientCount(CS_TEAM_SPECTATOR); + + if(!iSpecCount) + return false; + + int[] iSpecs = new int[iSpecCount]; + + int iCurIndex; + + for(int i = 1; i <= MaxClients; i++) + { + if(!IsClientInGame(i) || GetClientTeam(i) != CS_TEAM_SPECTATOR) + continue; + + if(IsClientSourceTV(i)) + { + iSpecCount--; + continue; + } + + iSpecs[iCurIndex] = i; + iCurIndex++; + } + + PushArrayCell(hClients, iSpecs[GetRandomInt(0, iSpecCount-1)]); + + return true; +} + stock bool _IsClientSpeaking(int client) { #if defined _voiceannounceex_included_