I have been working on this for some time now. Great timing.
Use cvar
spec_force_team X where X is the team ( 1 - T, 2 - CT )
Code:
#include <amxmodx>
#include <orpheu>
#include <fakemeta>
#include <engine>
#define PLUGIN "Force Spectate"
#define VERSION "1.1"
#define AUTHOR "SpeeDeeR"
#define get_team(%0) ( get_pdata_int( %0, m_iTeam ) )
#define MAXPLAYERS 32
const m_iTeam = 114;
new pcvar_force_team;
new OrpheuFunction: Observer_IsValidTarget;
public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR );
Observer_IsValidTarget = OrpheuGetFunction( "Observer_IsValidTarget", "CBasePlayer" );
OrpheuRegisterHook( Observer_IsValidTarget, "Observer_IsValidTarget_Pre", OrpheuHookPre );
pcvar_force_team = register_cvar("spec_force_team", "2");
}
public Observer_IsValidTarget_Pre( const this, const iTarget, const bool:bOnlyTeam )
{
if( is_user_alive( iTarget ) )
{
static ppcvar; ppcvar = get_pcvar_num( pcvar_force_team );
if( get_team( iTarget ) != ppcvar )
{
static id; id = iTarget;
while ( ( id = find_ent_by_class( id, "player" ) ) != iTarget )
{
if(get_team( id ) != ppcvar )
continue;
OrpheuSetParam( 2, id );
break;
}
}
}
}