protected override void OnTick() { if (!Directory.Exists("web")) { Directory.CreateDirectory("web"); } using (StreamWriter op = new StreamWriter("web/status.html")) { op.WriteLine("<html>"); #region Header / Title op.WriteLine("<head>"); op.WriteLine("<title>DragonKnights UO Server Status</title>"); op.WriteLine("</head>"); op.WriteLine("<body bgcolor=\"black\">"); op.WriteLine("<img src= http://aaaservices.homeip.net/UO/DragonKnights%20-%20logo.jpg <br>"); op.WriteLine("<h3><font color =\"gold\">UltimaOnline Server Status</font></h3>"); op.WriteLine("<b><font color =\"gold\">Server Core Version #: </font></b><font color=\"green\">" + Server.Core.Version.Major.ToString() + "." + Server.Core.Version.Minor.ToString() + "</font><br>"); op.WriteLine("<b><font color =\"gold\">Current Server Client Support Version #: </font></b><font color=\"green\">" + ClientVerification.Required + "</font><br>"); op.WriteLine("<b><font color =\"gold\">Status Page Last Updated: </font></b><font color=\"green\">" + DateTime.Now.ToString() + "</font><br>"); op.WriteLine("<b><font color =\"gold\">Total World Items: </font></b><font color=\"green\">" + World.Items.Count.ToString() + "</font><br>"); op.WriteLine("<b><font color =\"gold\">Total World Mobiles: </font></b><font color=\"green\">" + World.Mobiles.Count.ToString() + "</font><br>"); op.WriteLine("<b><font color =\"gold\">Total Online: </font></b><font color=\"green\">" + NetState.Instances.Count.ToString() + "</font><br>"); op.WriteLine("<br>"); #endregion Header / Title #region online client table //NOTE: want to change for a world graphic op.WriteLine("<table width=\"100%\">"); op.WriteLine("<tr>"); op.WriteLine("<td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/uopics/uologoworld.bmp align=\"absmiddle\"> ONLINE PLAYERS:</b></font></td>"); op.WriteLine("</tr>"); op.WriteLine("</table>"); op.WriteLine("<table width=\"100%\">"); op.WriteLine("<tr>"); op.WriteLine("<td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/PlayerInsignia.bmp align=\"absmiddle\"> Name</font></td><td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/MapLogoNorth.bmp align=\"absmiddle\">Location</font></td><td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/ChaosLogo.bmp align=\"absmiddle\"> Kills</font></td><td bgcolor=\"white\"><font color=\"black\">Karma <img src= http://aaaservices.homeip.net/UO/uopics/VirtueLogo.bmp align=\"absmiddle\"> Fame</font></td>"); op.WriteLine("</tr>"); if (NetState.Instances.Count > 0) { #region online client table\list online players foreach (NetState state in NetState.Instances) { Mobile m = state.Mobile; if (m != null) { Guild g = m.Guild as Guild; op.Write("<tr><td><img src= http://aaaservices.homeip.net/UO/uopics/SelectionCircle.bmp align=\"absmiddle\"> "); switch (m.AccessLevel) { case AccessLevel.Player: op.Write("<font color = FFFFFF><b>Player</b> - "); break; case AccessLevel.Counselor: op.Write("<font color = 008000><b>Counselor</b> - "); break; case AccessLevel.GameMaster: op.Write("<font color = FF0000><b>GameMaster</b> - "); break; case AccessLevel.Seer: op.Write("<font color = FF0000><b>Seer</b> - "); break; case AccessLevel.Administrator: op.Write("<font color = FF0000><b>Administrator</b> - "); break; case AccessLevel.Developer: op.Write("<font color = FF0000><b>Developer</b> - "); break; case AccessLevel.Owner: op.Write("<font color = 0000FF><b>Owner</b> - "); break; } if (g != null) { op.Write(Encode(m.Name)); op.Write(" [ "); string title = m.GuildTitle; if (title != null) { title = title.Trim(); } else { title = ""; } if (title.Length > 0) { op.Write(Encode(title)); op.Write(", "); } op.Write(Encode(g.Abbreviation)); op.Write(" ] "); } else { op.Write(Encode(m.Name)); } op.Write("</td><td><font color = 008000><img src= http://aaaservices.homeip.net/UO/uopics/Mapb.bmp align=\"absmiddle\"> "); op.Write(m.X); op.Write(", "); op.Write(m.Y); op.Write(", "); op.Write(m.Z); op.Write(" ("); op.Write(m.Map); op.Write(")</td><td><font color = FF0000><img src= http://aaaservices.homeip.net/UO/uopics/ChaosLogob.bmp align=\"absmiddle\"> "); op.Write(m.Kills); op.Write("</td><td><font color = 800080>"); op.Write(m.Karma); op.Write(" <img src= http://aaaservices.homeip.net/UO/uopics/VirtueLogob.bmp align=\"absmiddle\"> "); op.Write(m.Fame); op.WriteLine("</font></td></tr>"); } } #endregion online client table\list online players } else { op.WriteLine("<td><b><tr><td><img src= http://aaaservices.homeip.net/UO/uopics/SelectionCircle.bmp align=\"absmiddle\"> <font color =\"red\">Nobody but us chickens! =P</font></b></td><td><img src= http://aaaservices.homeip.net/UO/uopics/Mapb.bmp align=\"absmiddle\"> <font color =\"green\">xxx, yyy, zzz (Trammel)</font></td><td><font color = FF0000><img src= http://aaaservices.homeip.net/UO/uopics/ChaosLogob.bmp align=\"absmiddle\"> 100000</font></td><td><font color = 800080>100000 <img src= http://aaaservices.homeip.net/UO/uopics/VirtueLogob.bmp align=\"absmiddle\"> 100000</font></td></tr>"); } op.WriteLine("</table>"); op.WriteLine("<br>"); #endregion online client table #region player vendors table //Note want to add a shop sign here op.WriteLine("<table width=\"100%\">"); op.WriteLine("<tr>"); op.WriteLine("<td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/uopics/signuo.bmp align=\"absmiddle\"> PLAYER VENDOR SHOPS:</td></b></font>"); op.WriteLine("</tr>"); op.WriteLine("</table>"); op.WriteLine("<table width=\"100%\">"); foreach (Mobile mob in World.Mobiles.Values) { if (mob is PlayerVendor) { PlayerVendor pv = mob as PlayerVendor; op.WriteLine("<tr>"); op.WriteLine("<td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/signswordandshield.bmp align=\"absmiddle\"> Owner's Name</font></td><td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/signwritten.bmp align=\"absmiddle\"> Shop's Name</font></td><td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/signwritten.bmp align=\"absmiddle\"> Vendor's Name</font></td><td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/MapLogoNorth.bmp align=\"absmiddle\"> Location</font></td>"); op.WriteLine("</tr>"); op.WriteLine("<tr>"); op.Write("<td bgcolor=\"red\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/SelectionCircleWithPoint.bmp align=\"absmiddle\"> "); op.Write(pv.Owner.Name); op.Write("</td><td bgcolor=\"red\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/uopics/signwritten1.bmp align=\"absmiddle\"> "); op.Write(pv.ShopName); op.Write("</td><td bgcolor=\"red\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/uopics/signwritten1.bmp align=\"absmiddle\"> "); op.Write(pv.Name); op.Write("</td><td bgcolor=\"red\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/uopics/mapr.bmp align=\"absmiddle\"> "); op.Write(pv.Map); op.Write(" - "); op.Write(pv.Location); op.WriteLine("</td>"); op.WriteLine("</tr>"); // op.WriteLine( pv.Owner.Name + "," + pv.ShopName + "," + pv.Name + "," + pv.Map + " - " + pv.Location + "<br>" ); op.WriteLine("<tr>"); op.WriteLine("<td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/pouch0.bmp align=\"absmiddle\"> Amount</td><td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/bodbook.bmp align=\"absmiddle\"> Item</td><td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/scales.bmp align=\"absmiddle\"> Price for the Amount<t/d><td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/uopics/pen.bmp align=\"absmiddle\"> Description</td>"); op.WriteLine("</tr>"); foreach (Item item in pv.GetItems()) { GetVendorItemsDisplay(op, pv, item); } } } op.WriteLine("</table>"); #endregion player vendors table op.WriteLine("</body>"); op.WriteLine("</html>"); } }