AdvancedTargeting: eh does this work?

This commit is contained in:
dogan 2020-05-09 15:08:17 +02:00
parent fac0494c0c
commit b8d877132a

View File

@ -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_