private static void ImportRanks( Player player, Command cmd )
{
string serverName = cmd.Next();
string fileName = cmd.Next();
string rankName = cmd.Next();
bool silent = ( cmd.Next() != null );
// Make sure all parameters are specified
if ( serverName == null || fileName == null || rankName == null ) {
CdImport.PrintUsage( player );
return;
}
// Check if file exists
if ( !File.Exists( fileName ) ) {
player.Message( "File not found: {0}", fileName );
return;
}
Rank targetRank = RankManager.FindRank( rankName );
if ( targetRank == null ) {
player.MessageNoRank( rankName );
return;
}
string[] names;
switch ( serverName.ToLower() ) {
case "mcsharp":
case "mczall":
case "mclawl":
case "mcforge":
try {
names = File.ReadAllLines( fileName );
} catch ( Exception ex ) {
Logger.Log( LogType.Error,
"Could not open \"{0}\" to import ranks: {1}",
fileName, ex );
return;
}
break;
default:
player.Message( "800Craft does not support importing from {0}", serverName );
return;
}
if ( !cmd.IsConfirmed ) {
player.Confirm( cmd, "Import {0} player ranks?", names.Length );
return;
}
string reason = "(Import from " + serverName + ")";
foreach ( string name in names ) {
try {
PlayerInfo info = PlayerDB.FindPlayerInfoExact( name ) ??
PlayerDB.AddFakeEntry( name, RankChangeType.Promoted );
try {
info.ChangeRank( player, targetRank, reason, !silent, true, false );
} catch ( PlayerOpException ex ) {
player.Message( ex.MessageColored );
}
} catch ( PlayerOpException ex ) {
Logger.Log( LogType.Warning, "ImportRanks: " + ex.Message );
player.Message( ex.MessageColored );
}
}
PlayerDB.Save();
}