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<Mobile> mobs = new List<Mobile>( 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<Item> copy = new List<Item>( m.Items ); for (int i=0;i<copy.Count;i++) pm.AddItem( copy[i] ); CopyProps( pm, m ); for (int i=0;i<m.Skills.Length;i++) { pm.Skills[i].Base = m.Skills[i].Base; pm.Skills[i].SetLockNoRelay( m.Skills[i].Lock ); } World.Mobiles[m.Serial] = pm; } } if ( count > 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." ); } }
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." ); ArrayList mobs = new ArrayList( 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(); ArrayList copy = new ArrayList( m.Items ); for (int i=0;i<copy.Count;i++) pm.AddItem( (Item)copy[i] ); CopyProps( pm, m ); for (int i=0;i<m.Skills.Length;i++) { pm.Skills[i].Base = m.Skills[i].Base; pm.Skills[i].SetLockNoRelay( m.Skills[i].Lock ); } World.Mobiles[m.Serial] = pm; } } if ( count > 0 ) { NetState.ProcessDisposedQueue(); World.Save(); log.InfoFormat("{0} players have been converted to PlayerMobile. Restarting the server.", count); Core.Shutdown(true); } else { log.Info( "Couldn't find any Players to convert." ); } }