コード例 #1
0
        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.NoConsole ? "The server is now restarting" : "Press any key to restart the server");

                if (!Core.NoConsole && !Core.Service)
                {
                    Console.ReadKey(true);
                }

                Core.Kill(true);
            }
            else
            {
                e.Mobile.SendMessage("Couldn't find any Players to convert.");
            }
        }
コード例 #2
0
        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.");
            }
        }