static void SpectateHandler( Player player, CommandReader 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, false, true ); if( target == null ) 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 ); } }
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 ) { if (spec.World.Name != player.World.Name) { player.JoinWorld(spec.World, WorldChangeReason.SpectateTargetJoined); player.Message("Joined " + spec.World.Name + " to continue spectating " + spec.ClassyName); } 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 ); } }
static void SpecPatrolHandler( Player player, CommandReader cmd ) { World playerWorld = player.World; if( playerWorld == null ) PlayerOpException.ThrowNoWorld( player ); Player target = playerWorld.GetNextPatrolTarget( player, p => player.Can( Permission.Spectate, p.Info.Rank ), true ); if( target == null ) { player.Message( "Patrol: No one to spec-patrol in this world." ); return; } target.LastPatrolTime = DateTime.UtcNow; player.Spectate( target ); }
static void SpecPatrolHandler( Player player, Command cmd ) { World playerWorld = player.World; if( playerWorld == null ) PlayerOpException.ThrowNoWorld( player ); Player target = playerWorld.GetNextPatrolTarget( player ); if( target == null ) { player.Message( "Patrol: No one to patrol in this world." ); return; } target.LastPatrolTime = DateTime.UtcNow; player.Spectate( target ); }