Exemplo n.º 1
0
        public static string BuildStatus()
        {
            StringBuilder   resultsBuilder = new StringBuilder("<status>");
            List <NetState> userList       = new List <NetState>(NetState.Instances);

            userList.Sort(NetStateComparer.Instance);

            Mobile m;
            int    serial;
            string name, guild, accessLevel, mapName, fullName, profile;

            for (int i = 0; i < userList.Count; i++)
            {
                m    = userList[i].Mobile;
                name = guild = accessLevel = mapName = fullName = profile = "";

                if (m == null)
                {
                    continue;
                }

                serial = m.Serial;
                name   = Encode(m.RawName);

                if (((Guild)m.Guild) != null)
                {
                    guild = Encode(((Guild)m.Guild).Abbreviation);
                }

                if (m.AccessLevel > AccessLevel.Player)
                {
                    accessLevel = Encode(m.AccessLevel.ToString());
                }

                if (IsHidden(m))
                {
                    mapName = "unknown";
                }
                else
                {
                    Region reg = Region.Find(m.Location, m.Map);

                    if (reg != null)
                    {
                        if (reg.Name != null && reg.Name != "world")
                        {
                            mapName = Encode(Util.SplitString(reg.Name));
                        }
                        else if (reg is HouseRegion && Server.Multis.BaseHouse.FindHouseAt(m) != null)
                        {
                            mapName = "inside a house";
                        }
                    }
                }

                if (String.IsNullOrEmpty(mapName))
                {
                    mapName = Encode(String.Format("somewhere in {0}", m.Map.Name));
                }

                fullName = Encode(String.Format("{0}\n{1}", Titles.GetNameTitle(m, m), Titles.GetSkillTitle(m)));
                profile  = Encode(m.Profile);

                resultsBuilder.AppendFormat("<mobile name='{0}' guild='{1}' access='{2}' map='{3}' fullName='{4}' profile='{5}' serial='{6}'/>",
                                            name, guild, accessLevel, mapName, fullName, profile, serial);
            }

            userList.Clear();

            Dictionary <string, uint>  colorList       = LoadRegionColors();
            List <RegionWatcherObject> regionWatchList = RegionPopularityWatcher.Load(false);
            RegionWatcherObject        obj;

            regionWatchList.Sort(
                delegate(RegionWatcherObject x, RegionWatcherObject y)
            {
                return(GetRegionColor(x, colorList).CompareTo(GetRegionColor(y, colorList)));
            });

            for (int i = 0; i < regionWatchList.Count; i++)
            {
                obj = regionWatchList[i];

                resultsBuilder.AppendFormat("<region name='{0}' map='{1}' popularity='{2}' color='{3}'/>",
                                            Encode(Util.SplitString(obj.Name)), obj.Map == Map.Ilshenar ? Encode(Map.Backtrol.Name) : Encode(obj.Map.Name), obj.PopularityPercent, GetRegionColor(obj, colorList));
            }

            string uptime   = Util.FormatLongTimeSpan(DateTime.Now - Server.Items.Clock.ServerStart);
            string ramUsage = Util.FormatByteAmount(System.Diagnostics.Process.GetCurrentProcess().WorkingSet64);
            string cycles   = Core.AverageCPS.ToString("N2");

            resultsBuilder.AppendFormat("<stats uptime='{0}' ram='{1}' cycles='{2}'/>", uptime, ramUsage, cycles);
            resultsBuilder.Append("</status>");

            return(resultsBuilder.ToString());
        }
Exemplo n.º 2
0
        public CharacterProfileGump(Mobile beholder, Mobile beheld, int numEntries, bool editMode)
            : base(0, 0)
        {
            if (beheld.Profile == null)
            {
                beheld.Profile = "";
            }

            if (numEntries < MinTextEntries)
            {
                _numEntries = MinTextEntries;
            }
            else if (numEntries > MaxTextEntries)
            {
                _numEntries = MaxTextEntries;
            }
            else
            {
                _numEntries = numEntries;
            }

            _beheld   = beheld;
            _canEdit  = (beholder == beheld);
            _editMode = (editMode && _canEdit);

            int height = DefaultBackgroundHeight + ((DefaultTextEntryHeight + 10) * _numEntries);

            string[] profileSlices = SliceString(beheld.Profile, MaxTextLength);

            AddPage(1);
            AddBackground(10, 10, 300, height, 9380);
            AddImage(35, 55, 52);

            AddLabelCropped(85, 40, 195, 20, 0, Titles.GetNameTitle(beholder, beheld));
            AddLabelCropped(85, 55, 195, 20, 0, Titles.GetSkillTitle(beheld));

            if (_canEdit)
            {
                AddLabel(40, 10, 0, (_editMode ? "Editing Mode" : "Reading Mode"));
                AddButton(270, 95, 5411, 5411, 5, GumpButtonType.Reply, 0);
            }

            if (_canEdit && _editMode)
            {
                for (int i = 0, x = 40, y = 120; i < _numEntries; i++, y += (DefaultTextEntryHeight + 10))
                {
                    int slices = profileSlices.Length - 1;
                    AddTextEntry(x, y, 235, DefaultTextEntryHeight, 0, (i + 100), (slices >= i ? profileSlices[i] : ""), MaxTextLength);

                    if (i != (_numEntries - 1))
                    {
                        AddImage(28, (y + DefaultTextEntryHeight - 3), 57);
                    }
                }
            }
            else
            {
                AddHtml(40, 120, 235, (DefaultTextEntryHeight * _numEntries), String.Format("<BASEFONT COLOR=#111111>{0}</BASEFONT>", beheld.Profile), false, true);
            }

            AddButton(255, (height - 10), 55, 55, 10, GumpButtonType.Reply, 0);
            AddButton(275, (height - 10), 56, 56, 20, GumpButtonType.Reply, 0);
        }