using System; using System.Collections.Generic; using System.Reflection; using Server; using Server.Items; using Server.Mobiles; using Server.Network; namespace Server.Commands { public class ConvertPlayers { public static void Initialize() { CommandSystem.Register( "ConvertPlayers", AccessLevel.Administrator, new CommandEventHandler( Convert_OnCommand ) ); } public static void Convert_OnCommand( CommandEventArgs e ) { e.Mobile.SendMessage( "Converting all players to PlayerMobile. You will be disconnected. Please Restart the server after the world has finished saving." ); List mobs = new List( World.Mobiles.Values ); int count = 0; foreach ( Mobile m in mobs ) { if ( m.Player && !(m is PlayerMobile ) ) { count++; if ( m.NetState != null ) m.NetState.Dispose(); PlayerMobile pm = new PlayerMobile( m.Serial ); pm.DefaultMobileInit(); List copy = new List( m.Items ); for (int i=0;i 0 ) { NetState.ProcessDisposedQueue(); World.Save(); Console.WriteLine( "{0} players have been converted to PlayerMobile. {1}.", count, Core.Service ? "The server is now restarting" : "Press any key to restart the server" ); if ( !Core.Service ) Console.ReadKey( true ); Core.Kill( true ); } else { e.Mobile.SendMessage( "Couldn't find any Players to convert." ); } } private static void CopyProps( Mobile to, Mobile from ) { Type type = typeof( Mobile ); PropertyInfo[] props = type.GetProperties( BindingFlags.Public | BindingFlags.Instance ); for (int p=0;p