Example #1
0
File: admin.c Project: deurk/ktx
// assuming kicker is admin
qbool is_can_forcespec(gedict_t *victim, gedict_t *kicker)
{
	if ( VIP_IsFlags(victim, VIP_NOTKICKABLE) && !is_real_adm(kicker) ) {
		G_sprint(kicker, 2, "You can't force_spec VIP \x8D %s as elected admin\n", 
					(strnull( victim->netname ) ? "!noname!" : victim->netname));
		return false;
	}
	if ( is_real_adm(victim) && !is_real_adm(kicker) ) {
		G_sprint(kicker, 2, "You can't force_spec real admin \x8D %s as elected admin\n", 
					(strnull( victim->netname ) ? "!noname!" : victim->netname));
		return false;
	}

	return true;
}
Example #2
0
void vote_check_nospecs ()
{
	int veto;

	if ( match_in_progress || intermission_running || match_over )
		return;

	if ( !get_votes( OV_NOSPECS ) )
		return;

	veto = is_admins_vote( OV_NOSPECS );

	if( veto || !get_votes_req( OV_NOSPECS, true ) )
	{
		vote_clear( OV_NOSPECS );

		// set no specs mode
		cvar_fset("_k_nospecs", !cvar("_k_nospecs"));

		if ( veto )
			G_bprint(2, "%s\n", redtext(va("No spectators mode %s by admin veto", OnOff(cvar("_k_nospecs")))));
		else
			G_bprint(2, "%s\n", redtext(va("No spectators mode %s by majority vote", OnOff(cvar("_k_nospecs")))));

		// kick specs
		if ( cvar("_k_nospecs") )
		{
			gedict_t *spec;

			for ( spec = world; (spec = find_spc( spec )); )
			{
				if ( VIP( spec ) & ALLOWED_NOSPECS_VIPS )
					continue; // don't kick this VIP
    
				if ( is_real_adm(spec) )
					continue; // don't kick real admin
    
				stuffcmd(spec, "disconnect\n");  // FIXME: stupid way
			}
		}

		return;
	}
}
Example #3
0
File: admin.c Project: deurk/ktx
// is elected admin
qbool is_adm(gedict_t *p)
{
	return ( is_real_adm( p ) || (p->k_admin & AF_ADMIN) );
}