internal static void Warn( Player player, Command cmd )
{
string name = cmd.Next();
if ( name == null ) {
player.Message( "No player specified." );
return;
}
Player target = Server.FindPlayerOrPrintMatches( player, name, false, true );
if ( target == null )
return;
if ( player.Can( Permission.Warn, target.Info.Rank ) ) {
target.Info.IsHidden = false;
if ( target.Info.Warn( player.Name ) ) {
Server.Message( "{0}&S has been warned by {1}",
target.ClassyName, player.ClassyName );
Scheduler.NewTask( t => target.Info.UnWarn() ).RunOnce( TimeSpan.FromMinutes( 15 ) );
} else {
try {
target.Kick( player, "Auto Kick (2 warnings or more)", LeaveReason.Kick, true, true, true );
} catch ( PlayerOpException ex ) {
player.Message( ex.MessageColored );
if ( ex.ErrorCode == PlayerOpExceptionCode.ReasonRequired )
return;
}
}
} else {
player.Message( "You can only warn players ranked {0}&S or lower",
player.Info.Rank.GetLimit( Permission.Warn ).ClassyName );
player.Message( "{0}&S is ranked {1}", target.ClassyName, target.Info.Rank.ClassyName );
}
}