Veteran Member
Join Date: May 2012
Location: California
02-07-2014
, 17:32
Re: [TF2] Class Target Filters
#7
You may also want to replace some strings in the StrContains functions:
Spoiler
Code:
else if(StrContains(strPattern, "py", false) != -1)
with
Code:
else if(StrContains(strPattern, "pyr", false) != -1)
as "py" is also found in "sPY"
Code:
else if(StrContains(strPattern, "de", false) != -1)
with
Code:
else if(StrContains(strPattern, "dem", false) != -1)
as "de" is also found in "reDEngie" and similar
Code:
else if(StrContains(strPattern, "en", false) != -1)
with
Code:
else if(StrContains(strPattern, "eng", false) != -1)
as "en" is also found in "demomEN" and similar
Code:
else if(StrContains(strPattern, "me", false) != -1)
with
Code:
else if(StrContains(strPattern, "med", false) != -1)
as "me" is also found in "demoMEn" and similar
also
Code:
new bool:bOpposite;
if(StrContains(strPattern, "!") == -1)
bOpposite = true;
As I'm sure you're already aware, StrContains returns -1 if the string was NOT found. So you're setting bOpposite to true if ! was NOT in the @filter.
I find it a little bit ridiculous that the plugin has been downloaded 70 times with NO ONE ELSE reporting these errors over the last 4 months until WildCard chimed in.
Also, you should add this to OnPluginEnd(). Unlike most other things, Sourcemod does NOT seem to automatically handle this when a plugin is unloaded.
Spoiler
PHP Code:
public OnPluginEnd () { RemoveMultiTargetFilter ( "@scout" , FilterClasses ); RemoveMultiTargetFilter ( "@scouts" , FilterClasses ); RemoveMultiTargetFilter ( "@!scout" , FilterClasses ); RemoveMultiTargetFilter ( "@!scouts" , FilterClasses ); RemoveMultiTargetFilter ( "@redscout" , FilterClasses ); RemoveMultiTargetFilter ( "@scouts" , FilterClasses ); RemoveMultiTargetFilter ( "@!redscout" , FilterClasses ); RemoveMultiTargetFilter ( "@!redscouts" , FilterClasses ); RemoveMultiTargetFilter ( "@bluscout" , FilterClasses ); RemoveMultiTargetFilter ( "@bluscouts" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluscout" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluscouts" , FilterClasses ); RemoveMultiTargetFilter ( "@bluescout" , FilterClasses ); RemoveMultiTargetFilter ( "@bluescouts" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluescout" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluescouts" , FilterClasses ); RemoveMultiTargetFilter ( "@soldier" , FilterClasses ); RemoveMultiTargetFilter ( "@soldiers" , FilterClasses ); RemoveMultiTargetFilter ( "@!soldier" , FilterClasses ); RemoveMultiTargetFilter ( "@!soldiers" , FilterClasses ); RemoveMultiTargetFilter ( "@redsoldier" , FilterClasses ); RemoveMultiTargetFilter ( "@redsoldiers" , FilterClasses ); RemoveMultiTargetFilter ( "@!redsoldier" , FilterClasses ); RemoveMultiTargetFilter ( "@!redsoldiers" , FilterClasses ); RemoveMultiTargetFilter ( "@blusoldier" , FilterClasses ); RemoveMultiTargetFilter ( "@blusoldiers" , FilterClasses ); RemoveMultiTargetFilter ( "@!blusoldier" , FilterClasses ); RemoveMultiTargetFilter ( "@!blusoldiers" , FilterClasses ); RemoveMultiTargetFilter ( "@bluesoldier" , FilterClasses ); RemoveMultiTargetFilter ( "@bluesoldiers" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluesoldier" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluesoldiers" , FilterClasses ); RemoveMultiTargetFilter ( "@pyro" , FilterClasses ); RemoveMultiTargetFilter ( "@pyros" , FilterClasses ); RemoveMultiTargetFilter ( "@!pyro" , FilterClasses ); RemoveMultiTargetFilter ( "@!pyros" , FilterClasses ); RemoveMultiTargetFilter ( "@redpyro" , FilterClasses ); RemoveMultiTargetFilter ( "@redpyros" , FilterClasses ); RemoveMultiTargetFilter ( "@!redpyro" , FilterClasses ); RemoveMultiTargetFilter ( "@!redpyros" , FilterClasses ); RemoveMultiTargetFilter ( "@blupyro" , FilterClasses ); RemoveMultiTargetFilter ( "@blupyros" , FilterClasses ); RemoveMultiTargetFilter ( "@!blupyro" , FilterClasses ); RemoveMultiTargetFilter ( "@!blupyros" , FilterClasses ); RemoveMultiTargetFilter ( "@bluepyro" , FilterClasses ); RemoveMultiTargetFilter ( "@bluepyros" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluepyro" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluepyros" , FilterClasses ); RemoveMultiTargetFilter ( "@demo" , FilterClasses ); RemoveMultiTargetFilter ( "@demos" , FilterClasses ); RemoveMultiTargetFilter ( "@demoman" , FilterClasses ); RemoveMultiTargetFilter ( "@demomans" , FilterClasses ); RemoveMultiTargetFilter ( "@demomen" , FilterClasses ); RemoveMultiTargetFilter ( "@!demo" , FilterClasses ); RemoveMultiTargetFilter ( "@!demos" , FilterClasses ); RemoveMultiTargetFilter ( "@!demoman" , FilterClasses ); RemoveMultiTargetFilter ( "@!demomans" , FilterClasses ); RemoveMultiTargetFilter ( "@!demomen" , FilterClasses ); RemoveMultiTargetFilter ( "@reddemo" , FilterClasses ); RemoveMultiTargetFilter ( "@reddemos" , FilterClasses ); RemoveMultiTargetFilter ( "@reddemoman" , FilterClasses ); RemoveMultiTargetFilter ( "@reddemomans" , FilterClasses ); RemoveMultiTargetFilter ( "@reddemomen" , FilterClasses ); RemoveMultiTargetFilter ( "@!reddemo" , FilterClasses ); RemoveMultiTargetFilter ( "@!reddemos" , FilterClasses ); RemoveMultiTargetFilter ( "@!reddemoman" , FilterClasses ); RemoveMultiTargetFilter ( "@!reddemomans" , FilterClasses ); RemoveMultiTargetFilter ( "@!reddemomen" , FilterClasses ); RemoveMultiTargetFilter ( "@bludemo" , FilterClasses ); RemoveMultiTargetFilter ( "@bludemos" , FilterClasses ); RemoveMultiTargetFilter ( "@bludemoman" , FilterClasses ); RemoveMultiTargetFilter ( "@bludemomans" , FilterClasses ); RemoveMultiTargetFilter ( "@bludemomen" , FilterClasses ); RemoveMultiTargetFilter ( "@!bludemo" , FilterClasses ); RemoveMultiTargetFilter ( "@!bludemos" , FilterClasses ); RemoveMultiTargetFilter ( "@!bludemoman" , FilterClasses ); RemoveMultiTargetFilter ( "@!bludemomans" , FilterClasses ); RemoveMultiTargetFilter ( "@!bludemomen" , FilterClasses ); RemoveMultiTargetFilter ( "@bluedemo" , FilterClasses ); RemoveMultiTargetFilter ( "@bluedemos" , FilterClasses ); RemoveMultiTargetFilter ( "@bluedemoman" , FilterClasses ); RemoveMultiTargetFilter ( "@bluedemomans" , FilterClasses ); RemoveMultiTargetFilter ( "@bluedemomen" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluedemo" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluedemos" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluedemoman" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluedemomans" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluedemomen" , FilterClasses ); RemoveMultiTargetFilter ( "@heavy" , FilterClasses ); RemoveMultiTargetFilter ( "@heavies" , FilterClasses ); RemoveMultiTargetFilter ( "@!heavy" , FilterClasses ); RemoveMultiTargetFilter ( "@!heavies" , FilterClasses ); RemoveMultiTargetFilter ( "@redheavy" , FilterClasses ); RemoveMultiTargetFilter ( "@redheavies" , FilterClasses ); RemoveMultiTargetFilter ( "@!redheavy" , FilterClasses ); RemoveMultiTargetFilter ( "@!redheavies" , FilterClasses ); RemoveMultiTargetFilter ( "@bluheavy" , FilterClasses ); RemoveMultiTargetFilter ( "@bluheavies" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluheavy" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluheavies" , FilterClasses ); RemoveMultiTargetFilter ( "@blueheavy" , FilterClasses ); RemoveMultiTargetFilter ( "@blueheavies" , FilterClasses ); RemoveMultiTargetFilter ( "@!blueheavy" , FilterClasses ); RemoveMultiTargetFilter ( "@!blueheavies" , FilterClasses ); RemoveMultiTargetFilter ( "@engy" , FilterClasses ); RemoveMultiTargetFilter ( "@engys" , FilterClasses ); RemoveMultiTargetFilter ( "@engineer" , FilterClasses ); RemoveMultiTargetFilter ( "@engineers" , FilterClasses ); RemoveMultiTargetFilter ( "@!engy" , FilterClasses ); RemoveMultiTargetFilter ( "@!engys" , FilterClasses ); RemoveMultiTargetFilter ( "@!engineer" , FilterClasses ); RemoveMultiTargetFilter ( "@!engineers" , FilterClasses ); RemoveMultiTargetFilter ( "@redengy" , FilterClasses ); RemoveMultiTargetFilter ( "@redengys" , FilterClasses ); RemoveMultiTargetFilter ( "@redengineer" , FilterClasses ); RemoveMultiTargetFilter ( "@redengineers" , FilterClasses ); RemoveMultiTargetFilter ( "@!redengy" , FilterClasses ); RemoveMultiTargetFilter ( "@!redengys" , FilterClasses ); RemoveMultiTargetFilter ( "@!redengineer" , FilterClasses ); RemoveMultiTargetFilter ( "@!redengineers" , FilterClasses ); RemoveMultiTargetFilter ( "@bluengy" , FilterClasses ); RemoveMultiTargetFilter ( "@bluengys" , FilterClasses ); RemoveMultiTargetFilter ( "@bluengineer" , FilterClasses ); RemoveMultiTargetFilter ( "@bluengineers" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluengy" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluengys" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluengineer" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluengineers" , FilterClasses ); RemoveMultiTargetFilter ( "@blueengy" , FilterClasses ); RemoveMultiTargetFilter ( "@blueengys" , FilterClasses ); RemoveMultiTargetFilter ( "@blueengineer" , FilterClasses ); RemoveMultiTargetFilter ( "@blueengineers" , FilterClasses ); RemoveMultiTargetFilter ( "@!blueengy" , FilterClasses ); RemoveMultiTargetFilter ( "@!blueengys" , FilterClasses ); RemoveMultiTargetFilter ( "@!blueengineer" , FilterClasses ); RemoveMultiTargetFilter ( "@!blueengineers" , FilterClasses ); RemoveMultiTargetFilter ( "@medic" , FilterClasses ); RemoveMultiTargetFilter ( "@medics" , FilterClasses ); RemoveMultiTargetFilter ( "@!medic" , FilterClasses ); RemoveMultiTargetFilter ( "@!medics" , FilterClasses ); RemoveMultiTargetFilter ( "@redmedic" , FilterClasses ); RemoveMultiTargetFilter ( "@redmedics" , FilterClasses ); RemoveMultiTargetFilter ( "@!redmedic" , FilterClasses ); RemoveMultiTargetFilter ( "@!redmedics" , FilterClasses ); RemoveMultiTargetFilter ( "@blumedic" , FilterClasses ); RemoveMultiTargetFilter ( "@blumedics" , FilterClasses ); RemoveMultiTargetFilter ( "@!blumedic" , FilterClasses ); RemoveMultiTargetFilter ( "@!blumedics" , FilterClasses ); RemoveMultiTargetFilter ( "@bluemedic" , FilterClasses ); RemoveMultiTargetFilter ( "@bluemedics" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluemedic" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluemedics" , FilterClasses ); RemoveMultiTargetFilter ( "@sniper" , FilterClasses ); RemoveMultiTargetFilter ( "@snipers" , FilterClasses ); RemoveMultiTargetFilter ( "@!sniper" , FilterClasses ); RemoveMultiTargetFilter ( "@!snipers" , FilterClasses ); RemoveMultiTargetFilter ( "@redsniper" , FilterClasses ); RemoveMultiTargetFilter ( "@redsnipers" , FilterClasses ); RemoveMultiTargetFilter ( "@!redsniper" , FilterClasses ); RemoveMultiTargetFilter ( "@!redsnipers" , FilterClasses ); RemoveMultiTargetFilter ( "@blusniper" , FilterClasses ); RemoveMultiTargetFilter ( "@blusnipers" , FilterClasses ); RemoveMultiTargetFilter ( "@!blusniper" , FilterClasses ); RemoveMultiTargetFilter ( "@!blusnipers" , FilterClasses ); RemoveMultiTargetFilter ( "@bluesniper" , FilterClasses ); RemoveMultiTargetFilter ( "@bluesnipers" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluesniper" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluesnipers" , FilterClasses ); RemoveMultiTargetFilter ( "@spy" , FilterClasses ); RemoveMultiTargetFilter ( "@spies" , FilterClasses ); RemoveMultiTargetFilter ( "@!spy" , FilterClasses ); RemoveMultiTargetFilter ( "@!spies" , FilterClasses ); RemoveMultiTargetFilter ( "@redspy" , FilterClasses ); RemoveMultiTargetFilter ( "@redspies" , FilterClasses ); RemoveMultiTargetFilter ( "@!redspy" , FilterClasses ); RemoveMultiTargetFilter ( "@!redspies" , FilterClasses ); RemoveMultiTargetFilter ( "@bluspy" , FilterClasses ); RemoveMultiTargetFilter ( "@bluspies" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluspy" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluspies" , FilterClasses ); RemoveMultiTargetFilter ( "@bluespy" , FilterClasses ); RemoveMultiTargetFilter ( "@bluespies" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluespy" , FilterClasses ); RemoveMultiTargetFilter ( "@!bluespies" , FilterClasses ); }
__________________
Last edited by ddhoward; 02-07-2014 at 17:44 .