private static void SpectateHandler( Player player, Command cmd )
{
string targetName = cmd.Next();
if ( targetName == null ) {
PlayerInfo lastSpec = player.LastSpectatedPlayer;
if ( lastSpec != null ) {
Player spec = player.SpectatedPlayer;
if ( spec != null ) {
player.Message( "Now spectating {0}", spec.ClassyName );
} else {
player.Message( "Last spectated {0}", lastSpec.ClassyName );
}
} else {
CdSpectate.PrintUsage( player );
}
return;
}
Player target = Server.FindPlayerOrPrintMatches( player, targetName, false, true );
if ( target == null )
return;
if ( target == player ) {
player.Message( "You cannot spectate yourself." );
return;
}
if ( !player.Can( Permission.Spectate, target.Info.Rank ) ) {
player.Message( "You may only spectate players ranked {0}&S or lower.",
player.Info.Rank.GetLimit( Permission.Spectate ).ClassyName );
player.Message( "{0}&S is ranked {1}",
target.ClassyName, target.Info.Rank.ClassyName );
return;
}
if ( !player.Spectate( target ) ) {
player.Message( "Already spectating {0}", target.ClassyName );
}
}