private static void BanXHandler( Player player, Command cmd )
{
string ban = cmd.Next();
if ( ban == null ) {
player.Message( "&WError: Enter a player name to BanX" );
return;
}
//parse
if ( ban == "-" ) {
if ( player.LastUsedPlayerName != null ) {
ban = player.LastUsedPlayerName;
} else {
player.Message( "Cannot repeat player name: you haven't used any names yet." );
return;
}
}
PlayerInfo target = PlayerDB.FindPlayerInfoOrPrintMatches( player, ban );
if ( target == null )
return;
if ( !Player.IsValidName( ban ) ) {
CdBanx.PrintUsage( player );
return;
} else {
string reason = cmd.NextAll();
if ( reason.Length < 1 || string.IsNullOrEmpty( reason ) )
reason = "Reason Undefined: BanX";
try {
target.Ban( player, reason, false, true );
} catch ( PlayerOpException ex ) {
player.Message( ex.MessageColored );
return;
}
if ( player.World.BlockDB.IsEnabled ) {
UndoPlayerHandler2( player, new PlayerInfo[] { target } );
}
if ( player.Can( Permission.Demote, target.Rank ) ) {
if ( target.Rank != RankManager.LowestRank ) {
player.LastUsedPlayerName = target.Name;
target.ChangeRank( player, RankManager.LowestRank, reason, false, true, false );
}
Server.Players.Message( "{0}&S was BanX'd by {1}&S (with auto-demote):&W {2}", target.ClassyName, player.ClassyName, reason );
IRC.PlayerSomethingMessage( player, "BanX'd (with auto-demote)", target, reason );
return;
} else {
player.Message( "&WAuto demote failed: You didn't have the permissions to demote the target player" );
Server.Players.Message( "{0}&S was BanX'd by {1}: &W{2}", target.ClassyName, player.ClassyName, reason );
IRC.PlayerSomethingMessage( player, "BanX'd", target, reason );
}
player.Message( "&SConfirm the undo with &A/ok" );
}
}