RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

webstatus.cs display vendor and what vendor is selling- Error.

AlphaDragon

Sorceror
Ok was having issues trying to get the WebStatus.cs to do what I wanted it to do. At the moment I got it somewhat up and running with the info I was trying to put on there. Even thoe its not in A B C order it will do for what I would like to have displayed for the moment. :confused:

Here is a screen shot of what I got done so far. If your courious

P.S. No external Sql or DB. All pulling from the GameServer itself, well not the graphics.:rolleyes:
 

Attachments

  • Capture.PNG
    Capture.PNG
    89.1 KB · Views: 91

AlphaDragon

Sorceror
The original problem I was having is how to pull the information from the player vendor.
Since I didnt know how to word it I looked around for a script close to what I was trying to do.
I came across this:
http://www.runuo.com/community/thre...search-command-available.481292/#post-3782245
And used some of the code to get the info of the playervendor -What items it has to sell ect.

Not my choice of doing it but for the most part it works.:confused: If you would like I can post what I have so far for you to look at it. I know the way I did it is not the best of ways of doing it. But as of right now I guess its ok.

Just in case here is the MESS I have so far.


Code:
/*
* Moded by AlphaDragon
* To display Player Vendors and Items that they are selling.
* Date: 5/30/2012
* Time: 7:32 AM
* Aditional code pulled from http://www.runuo.com/community/threads/is-there-a-complete-playervendor-search-command-available.481292/#post-3782245
*/
using System;
using System.IO;
using System.Text;
using Server;
using Server.Network;
using Server.Guilds;
 
//
using Server.Items;
using Server.Mobiles;
using Server.Accounting;
//
 
namespace Server.Misc
{
    public class StatusPage : Timer
    {
        public static bool Enabled = true;
 
        public static void Initialize()
        {
            if ( Enabled )
                new StatusPage().Start();
        }
 
        public StatusPage() : base( TimeSpan.FromSeconds( 5.0 ), TimeSpan.FromSeconds( 60.0 ) )
        {
            Priority = TimerPriority.FiveSeconds;
        }
 
        private static string Encode( string input )
        {
            StringBuilder sb = new StringBuilder( input );
 
            sb.Replace( "&", "&" );
            sb.Replace( "<", "&lt;" );
            sb.Replace( ">", "&gt;" );
            sb.Replace( "\"", "&quot;" );
            sb.Replace( "'", "&apos;" );
 
            return sb.ToString();
        }
 
        protected override void OnTick()
        {
            if ( !Directory.Exists( "web" ) )
                Directory.CreateDirectory( "web" );
 
            using ( StreamWriter op = new StreamWriter( "web/status.html" ) )
            {
                op.WriteLine( "<html>" );
 
 
 
                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\">Current Server Version # :</font></b><font color=\"green\"> 7.0.12.0</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>" );
//                op.WriteLine( "<br>" );
//                op.WriteLine( "<b><font color =\"gold\">END OF TOP  - START OF ONLINE CLIENT TABLE</font></b><br>" );
               
               
               
#region online client table
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> ONLINE PLAYERS:</b></font></td>" );
                op.WriteLine( "        </tr>" );
                op.WriteLine( "      </table>" );
 
               
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td><td bgcolor=\"white\"><font color=\"black\">Kills</font></td><td bgcolor=\"white\"><font color=\"black\">Karma / Fame</font></td>" );
                op.WriteLine( "        </tr>" );
               
                if (NetState.Instances.Count > 0)
                {
                #region 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/OLB.png 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>" );
                        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>" );
                        op.Write( m.Kills );
                        op.Write( "</td><td><font color = 800080>" );
                        op.Write( m.Karma );
                        op.Write( " / " );
                        op.Write( m.Fame );
                        op.WriteLine( "</td></tr>" );
                    }
 
                   
                   
                }
                #endregion list online players
                }
               
                else
                {
                    op.WriteLine( "<td><b><font color =\"red\">Nobody but us chickens! =P</font></b></td></tr>" );
                }
               
//                op.WriteLine( "        <tr></tr>" );//added /tr
                op.WriteLine( "      </table>" );
#endregion online client table
               
               
#region player vendors table
                op.WriteLine( "<br>" );
                op.WriteLine( "<br>" );
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> PLAYER VENDOR SHOPS:</b></font></td>" );
                op.WriteLine( "        </tr>" );
                op.WriteLine( "      </table>" );
 
 
               
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> Owners Name</font></td><td bgcolor=\"white\"><font color=\"black\">Shops Name</font></td><td bgcolor=\"white\"><font color=\"black\">Vendors Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td>" );
                op.WriteLine( "        </tr>" );
 
 
                foreach ( Mobile mob in World.Mobiles.Values )
                {
                    if ( mob is PlayerVendor )
                    {
                        PlayerVendor pv = mob as PlayerVendor;
//                        list.Add( pv );
//                        op.WriteLine( pv );
                        op.Write( "        <tr><td bgcolor=\"red\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COER.png align=\"absmiddle\"> " );
                       
                        op.WriteLine( pv.Owner.Name );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
                       
                        op.WriteLine( pv.ShopName );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
                       
                        op.WriteLine( pv.Name );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
//                        op.WriteLine( pv.Map );
//                        op.WriteLine( pv.Backpack );
//                        op.WriteLine( pv.AccessLevel );
                        op.WriteLine( pv.Map + " - " + pv.Location );
                        op.Write( "</td></tr>" );
//                        op.WriteLine( pv.X );
//                        op.WriteLine( pv.Y );
//                        op.WriteLine( pv.Z );
//                        op.WriteLine( pv.RawName );
//                        op.WriteLine( "---------------");
//                        op.WriteLine( "</td></tr>" );
                       
                       
                       
                       
                       
                op.WriteLine( "<tr><td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEY.png align=\"absmiddle\">Amount</td><td bgcolor=\"yellow\"><font color=\"black\">Item</td><td bgcolor=\"yellow\"><font color=\"black\">Price for the Amount<t/d><td bgcolor=\"yellow\"><font color=\"black\">Description</td></tr>" );
 
                foreach( Item item in World.Items.Values )
                {
                    Type type = item.GetType();
                    string typ = type.ToString();
                    string des = null;
                    //string name = null; // vi name
                   
                    try
                    {
                        string[] words = typ.Split('.');
                       
                        if ( item.RootParent is PlayerVendor )
                        {
                            PlayerVendor vendor = (PlayerVendor)item.RootParent;                           
                            VendorItem vi = vendor.GetVendorItem( item );
                            if (pv.Map + " - " + pv.Location == vendor.Map + " - " + vendor.Location){
                            if ( vi != null && vi.IsForSale )
                            {
                                if ( vendor.Owner.Name != "1k5g6se84f895s854f884s6a" )//If name same as this it will not show items in list.
                                {
                                    string ownername = " ";
                                    string name = null; //item.Name.ToString();
                                    //    string lname = " ";
                                    string nam = words[words.Length - 1];
                                    if ( item.Name == null )
                                    {
                                        name = nam;
                                    }
                                    else
                                    {
                                        name = item.Name.ToString();
                                    }
                                   
                                    if ( vi.Description != null && vi.Description != "" )
                                        des = vi.Description;
                                    else
                                        des = " ";
                                   
                                    if ( name.Length > 25 )
                                    {
                                        //    lname = name;
                                        name = name.Substring( 0, 25 );
                                    }
                                    if ( vendor.Name != vendor.Owner.Name )
                                        ownername = vendor.Owner.Name;
                                   
                                    op.WriteLine( "<tr><td bgcolor=\"green\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COEG.png align=\"absmiddle\"> {0} </td> <td bgcolor=\"green\"><font color = \"black\"> {1,-25} </td> <td bgcolor=\"green\"><font color = \"black\"> {2,7} </td> <td bgcolor=\"green\"><font color = \"black\"> {3} </td></tr>", item.Amount, name, vi.Price.ToString(), des );//Added </tr
                                   
                                   
                                   
                                   
                                   
                                   
//this works but no color and wrong place                                    op.WriteLine( "<tr>{0,-25} {1,7} {2}", name, vi.Price.ToString(), des );
                                }
                            }
                        }}
                    }
                   
                   
                   
                       
                       
                       
                       
                       
                       
                       
//                    {
//                        string[] words = typ.Split('.');
//                       
//                        if ( item.RootParent is PlayerVendor )
//                        {
//                            PlayerVendor vendor = (PlayerVendor)item.RootParent;
//                            VendorItem vi = vendor.GetVendorItem( item );
//                           
//                            if ( vi != null && vi.IsForSale )
//                            {
//                                if (pv.Map + " - " + pv.Location == vendor.Map + " - " + vendor.Location)
//                                {
//                                    if ( vendor.Owner.Name != "Bob" )
//                                    {
//                                        string ownername = " ";
//                                        string name = null; //item.Name.ToString();
//                                        //    string lname = " ";
//                                        string nam = words[words.Length - 1];
//                                        //                                    if ( item.Name == null )
//                                        //                                    {
//                                        //                                        name = nam;
//                                        //                                    }
//                                        //                                    else
//                                        //                                    {
//                                        //                                        name = item.Name.ToString();
//                                        //                                    }
////
//                                        //                                    if ( vi.Description != null && vi.Description != "" )
//                                        //                                        des = vi.Description;
//                                        //                                    else
//                                        //                                        des = " ";
//                                        //                                    if ( name.Length > 25 )
//                                        //                                    {
//                                        //                                        //    lname = name;
//                                        //                                        name = name.Substring( 0, 25 );
//                                        //                                    }
//                                        if ( vendor.Name != vendor.Owner.Name )
//                                        {
//                                            ownername = vendor.Owner.Name;
//                                        //                                    op.WriteLine( "{0,-16} {1,-16} {2,-25} {3,7} {4}", vendor.Name, ownername, name, vi.Price.ToString(), des );
//                                        op.Write( "        <tr><td bgcolor=\"green\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COEB.png align=\"absmiddle\"> " );
//                                       
//                                        op.WriteLine( "{0,-16}", item.Name.ToString() );
//                                        op.Write( "</td><td bgcolor=\"green\"><font color = \"black\">" );
//
//                                        op.WriteLine( vi.Price );
//                                        op.Write( "</td><td bgcolor=\"green\"><font color = \"black\">" );
//
//                                        op.WriteLine( vi.Description );
//                                        op.Write( "</td><td bgcolor=\"green\"><font color = \"black\">" );
//                                       
//                                       
//                                        op.Write( "</td></tr>" );
//                                        }
//
//
////                                        op.WriteLine( "<td>{0}</td><td>{1}</td><td>{2}</td>", item.Name.ToString(), vi.Price.ToString(), vi.Description.ToString() );
//                                    }
//                                }
//                            }
//                        }
//                    }
                    catch
                    {
//                        op.WriteLine("error {0}", typ);
                    }
                }
               
//                args.Mobile.SendMessage( "Report done <runuo root>/PVI.log" );
//                    }
 
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                           
 
    }
}
 
//I ADDED END
//                op.WriteLine( "        <tr></tr>" );
                op.WriteLine( "      </table>" );
               
               
               
 
 
#endregion player vendors table
               
               
//                op.WriteLine( "<b><font color =\"gold\">END OF LINE</font></b><br>" );
 
               
               
               
                op.WriteLine( "  </body>" );
                op.WriteLine( "</html>" );
//                Console.WriteLine( "WEBSTATUS UPDATE COMPLEATE");
            }
        }
    }
}
 

daat99

Moderator
Staff member
This should work A LOT faster.

Study the changes and ask questions!
Code:
/*
* Moded by AlphaDragon
* To display Player Vendors and Items that they are selling.
* Date: 5/30/2012
* Time: 7:32 AM
* Aditional code pulled from http://www.runuo.com/community/threads/is-there-a-complete-playervendor-search-command-available.481292/#post-3782245
*/
using System;
using System.IO;
using System.Text;
using Server;
using Server.Network;
using Server.Guilds;
using Server.Items;
using Server.Mobiles;
using Server.Accounting;
 
namespace Server.Misc
{
    public class StatusPage : Timer
    {
        public static bool Enabled = true;
 
        public static void Initialize()
        {
            if (Enabled)
                new StatusPage().Start();
        }
 
        public StatusPage()
            : base(TimeSpan.FromSeconds(5.0), TimeSpan.FromSeconds(60.0))
        {
            Priority = TimerPriority.FiveSeconds;
        }
 
        private static string Encode(string input)
        {
            StringBuilder sb = new StringBuilder(input);
 
            sb.Replace("&", "&amp;");
            sb.Replace("<", "&lt;");
            sb.Replace(">", "&gt;");
            sb.Replace("\"", "&quot;");
            sb.Replace("'", "&apos;");
 
            return sb.ToString();
        }
 
        protected override void OnTick()
        {
            if (!Directory.Exists("web"))
                Directory.CreateDirectory("web");
 
            using (StreamWriter op = new StreamWriter("web/status.html"))
            {
                op.WriteLine("<html>");
                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(getTextString("Current Server Version #: ", "gold", true) + getTextString("7.0.12.0", "green", true));
                op.WriteLine(getTextString("Status Page Last Updated: ", "gold", true) + getTextString(DateTime.Now.ToString(), "green", true));
                op.WriteLine(getTextString("Total World Items: ", "gold", true) + getTextString(World.Items.Count.ToString(), "green", true));
                op.WriteLine(getTextString("Total World Mobiles: ", "gold", true) + getTextString(World.Mobiles.Count.ToString(), "green", true));
                op.WriteLine(getTextString("Total Online: ", "gold", true) + getTextString(NetState.Instances.Count.ToString(), "green", true));
                op.WriteLine("<br>");
 
                #region online client table
                op.WriteLine("<font color=\"green\"> <table width=\"100%\">");
                op.WriteLine(" <tr></font>");
                op.WriteLine(" <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> ONLINE PLAYERS:</b></font></td>");
                op.WriteLine(" </tr>");
                op.WriteLine(" </table>");
 
                op.WriteLine("<font color=\"green\"> <table width=\"100%\">");
                op.WriteLine(" <tr></font>");
                op.WriteLine(" <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td><td bgcolor=\"white\"><font color=\"black\">Kills</font></td><td bgcolor=\"white\"><font color=\"black\">Karma / Fame</font></td>");
                op.WriteLine(" </tr>");
 
                if (NetState.Instances.Count > 0)
                {
                    #region list online players
                    foreach (NetState state in NetState.Instances)
                    {
                        Mobile m = state.Mobile;
 
                        if (m != null)
                        {
                            op.Write(" <tr><td><img src= http://aaaservices.homeip.net/UO/OLB.png align=\"absmiddle\"> ");
                            switch (m.AccessLevel)
                            {
                                case AccessLevel.Player:
                                    op.Write(getTextString("Player", "FFFFFF", true));
                                    break;
                                case AccessLevel.Counselor:
                                    op.Write(getTextString("Counselor", "008000", true));
                                    break;
                                case AccessLevel.GameMaster:
                                    op.Write(getTextString("GameMaster", "FF0000", true));
                                    break;
                                case AccessLevel.Seer:
                                    op.Write(getTextString("Seer", "FF0000", true));
                                    break;
                                case AccessLevel.Administrator:
                                    op.Write(getTextString("Administrator", "FF0000", true));
                                    break;
                                case AccessLevel.Developer:
                                    op.Write(getTextString("Developer", "FF0000", true));
                                    break;
                                case AccessLevel.Owner:
                                    op.Write(getTextString("Owner", "0000FF", true));
                                    break;
                            }
 
                            Guild g = m.Guild as Guild;
                            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>");
                            op.Write(getTextString(string.Format("{0}, {1}, {2} ({3})", m.X, m.Y, m.Z, m.Map), "008000", false, true));
                            op.Write(getTextString(string.Format("{0}", m.Kills), "FF0000", false, true));
                            op.Write(getTextString(string.Format("{0}/{1}", m.Karma, m.Fame), "800080", false, true));
                            op.WriteLine("</tr>");
                        }
                    }
                    #endregion list online players
                }
                else
                {
                    op.Write(getTextString("Nobody but us chickens! =P", "red", true, true));
                    op.WriteLine("</tr>");
                }
 
                op.WriteLine(" </table>");
                #endregion online client table
 
                #region player vendors table
                op.WriteLine("<br><br>");
                op.WriteLine("<font color=\"green\"> <table width=\"100%\">");
                op.WriteLine(" <tr></font>");
                op.WriteLine(" <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> PLAYER VENDOR SHOPS:</b></font></td>");
                op.WriteLine(" </tr>");
                op.WriteLine(" </table>");
 
 
 
                op.WriteLine("<font color=\"green\"> <table width=\"100%\">");
                op.WriteLine(" <tr></font>");
                op.WriteLine(" <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> Owners Name</font></td><td bgcolor=\"white\"><font color=\"black\">Shops Name</font></td><td bgcolor=\"white\"><font color=\"black\">Vendors Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td>");
                op.WriteLine(" </tr>");
 
 
                foreach (Mobile mob in World.Mobiles.Values)
                {
                    if (mob is PlayerVendor)
                    {
                        PlayerVendor pv = mob as PlayerVendor;
                        op.Write(" <tr><td bgcolor=\"red\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COER.png align=\"absmiddle\"> ");
 
                        op.WriteLine(pv.Owner.Name);
                        op.Write("</td>");
                        op.WriteLine(getTextString("<td bgcolor=\"red\">" + pv.ShopName + "</td>", "black"));
                        op.WriteLine(getTextString("<td bgcolor=\"red\">" + pv.Name + "</td>", "black"));
                        op.WriteLine(getTextString(string.Format("<td bgcolor=\"red\">{0} - {1}</td>", pv.Map, pv.Location), "black"));
                        op.Write("</tr>");
 
                        op.WriteLine("<tr><td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEY.png align=\"absmiddle\">Amount</td><td bgcolor=\"yellow\"><font color=\"black\">Item</td><td bgcolor=\"yellow\"><font color=\"black\">Price for the Amount<t/d><td bgcolor=\"yellow\"><font color=\"black\">Description</td></tr>");
 
                        foreach (Item item in pv.GetItems())
                        {
                            VendorItem vi = pv.GetVendorItem(item);
                            if (vi != null && vi.IsForSale)
                            {
                                if (pv.Owner == null || pv.Owner.Name == "1k5g6se84f895s854f884s6a") //If name same as this it will not show items in list.
                                    continue;
                                string ownername = (pv.Name != pv.Owner.Name ? pv.Owner.Name : " ");
                                string name = item.Name;
                                string nam = words[words.Length - 1];
                                if (string.IsNullOrEmpty(name))
                                {
                                    name = item.GetType().ToString();
                                    if (name.LastIndexOf('.') >= 0)
                                        name = temp.Substring(temp.LastIndexOf('.') + 1);
                                }
                                if (name.Length > 25)
                                    name = name.Substring(0, 25);
 
                                des = (string.IsNullOrEmpty(vi.Description) ? " " : vi.Description);
 
 
                                op.WriteLine("<tr><td bgcolor=\"green\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COEG.png align=\"absmiddle\"> {0} </td> <td bgcolor=\"green\"><font color = \"black\"> {1,-25} </td> <td bgcolor=\"green\"><font color = \"black\"> {2,7} </td> <td bgcolor=\"green\"><font color = \"black\"> {3} </td></tr>", item.Amount, name, vi.Price.ToString(), des);//Added </tr
                            }
                        }
                    }
                }
 
                //I ADDED END
                // op.WriteLine( " <tr></tr>" );
                op.WriteLine(" </table>");
 
                #endregion player vendors table
 
                op.WriteLine(" </body>");
                op.WriteLine("</html>");
            }
        }
        private static string getTextString(string text)
        {
            getTextString(text, "", false);
        }
        private static string getTextString(string text, string color)
        {
            getTextString(text, color, false);
        }
        private static string getTextString(string text, string color, bool bold)
        {
            getTextString(text, color, bold, "");
        }
        private static string getTextString(string text, string color, bool bold, bool td)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(text);
            if (bold)
            {
                sb.Insert(0, "<b>");
                sb.Append("</b>");
            }
            if (!string.IsNullOrEmpty(color))
            {
                sb.Insert(0, "<font color=\"" + color + "\">");
                sb.Append("</font>");
            }
            if (!string.IsNullOrEmpty(td))
            {
                sb.Insert(0, "<td>");
                sb.Append("</td>");
            }
            return sb.ToString();
        }
    }
}
 

AlphaDragon

Sorceror
:confused:
Code:
Errors:
+ Misc/DATT webstatus.CS:
    CS0122: Line 195: 'Server.Mobiles.PlayerVendor.GetItems()' is inaccessible d
ue to its protection level
    CS0103: Line 204: The name 'words' does not exist in the current context
    CS0103: Line 204: The name 'words' does not exist in the current context
    CS0103: Line 209: The name 'temp' does not exist in the current context
    CS0103: Line 209: The name 'temp' does not exist in the current context
    CS0103: Line 214: The name 'des' does not exist in the current context
    CS0103: Line 217: The name 'des' does not exist in the current context
    CS0161: Line 233: 'Server.Misc.StatusPage.getTextString(string)': not all co
de paths return a value
    CS0161: Line 237: 'Server.Misc.StatusPage.getTextString(string, string)': no
t all code paths return a value
    CS1502: Line 243: The best overloaded method match for 'Server.Misc.StatusPa
ge.getTextString(string, string, bool, bool)' has some invalid arguments
    CS1503: Line 243: Argument '4': cannot convert from 'string' to 'bool'
    CS1502: Line 259: The best overloaded method match for 'string.IsNullOrEmpty
(string)' has some invalid arguments
    CS1503: Line 259: Argument '1': cannot convert from 'bool' to 'string'
 

daat99

Moderator
Staff member
Delete line 204.
replace "temp" with "name" in 209 (both places).
Add the word "string" before the word "des" in line 217.

Add the word "return" before "getTextString" in lines 233, 237 and 241.

Replace the "" (quotes) at the end of line 241 with the word "false".

Replace line 259 with:
Code:
if ( td )
 

daat99

Moderator
Staff member
I need to make something that works around the other error when I'm more awake (ignore it for now).
 

daat99

Moderator
Staff member
This is the code with the modifications I stated above.
Code:
/*
* Moded by AlphaDragon
* To display Player Vendors and Items that they are selling.
* Date: 5/30/2012
* Time: 7:32 AM
* Aditional code pulled from http://www.runuo.com/community/threads/is-there-a-complete-playervendor-search-command-available.481292/#post-3782245
*/
using System;
using System.IO;
using System.Text;
using Server;
using Server.Network;
using Server.Guilds;
using Server.Items;
using Server.Mobiles;
using Server.Accounting;
 
namespace Server.Misc
{
    public class StatusPage : Timer
    {
        public static bool Enabled = true;
 
        public static void Initialize()
        {
            if (Enabled)
                new StatusPage().Start();
        }
 
        public StatusPage()
            : base(TimeSpan.FromSeconds(5.0), TimeSpan.FromSeconds(60.0))
        {
            Priority = TimerPriority.FiveSeconds;
        }
 
        private static string Encode(string input)
        {
            StringBuilder sb = new StringBuilder(input);
 
            sb.Replace("&", "&amp;");
            sb.Replace("<", "&lt;");
            sb.Replace(">", "&gt;");
            sb.Replace("\"", "&quot;");
            sb.Replace("'", "&apos;");
 
            return sb.ToString();
        }
 
        protected override void OnTick()
        {
            if (!Directory.Exists("web"))
                Directory.CreateDirectory("web");
 
            using (StreamWriter op = new StreamWriter("web/status.html"))
            {
                op.WriteLine("<html>");
                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(getTextString("Current Server Version #: ", "gold", true) + getTextString("7.0.12.0", "green", true));
                op.WriteLine(getTextString("Status Page Last Updated: ", "gold", true) + getTextString(DateTime.Now.ToString(), "green", true));
                op.WriteLine(getTextString("Total World Items: ", "gold", true) + getTextString(World.Items.Count.ToString(), "green", true));
                op.WriteLine(getTextString("Total World Mobiles: ", "gold", true) + getTextString(World.Mobiles.Count.ToString(), "green", true));
                op.WriteLine(getTextString("Total Online: ", "gold", true) + getTextString(NetState.Instances.Count.ToString(), "green", true));
                op.WriteLine("<br>");
 
                #region online client table
                op.WriteLine("<font color=\"green\"> <table width=\"100%\">");
                op.WriteLine(" <tr></font>");
                op.WriteLine(" <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> ONLINE PLAYERS:</b></font></td>");
                op.WriteLine(" </tr>");
                op.WriteLine(" </table>");
 
                op.WriteLine("<font color=\"green\"> <table width=\"100%\">");
                op.WriteLine(" <tr></font>");
                op.WriteLine(" <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td><td bgcolor=\"white\"><font color=\"black\">Kills</font></td><td bgcolor=\"white\"><font color=\"black\">Karma / Fame</font></td>");
                op.WriteLine(" </tr>");
 
                if (NetState.Instances.Count > 0)
                {
                    #region list online players
                    foreach (NetState state in NetState.Instances)
                    {
                        Mobile m = state.Mobile;
 
                        if (m != null)
                        {
                            op.Write(" <tr><td><img src= http://aaaservices.homeip.net/UO/OLB.png align=\"absmiddle\"> ");
                            switch (m.AccessLevel)
                            {
                                case AccessLevel.Player:
                                    op.Write(getTextString("Player", "FFFFFF", true));
                                    break;
                                case AccessLevel.Counselor:
                                    op.Write(getTextString("Counselor", "008000", true));
                                    break;
                                case AccessLevel.GameMaster:
                                    op.Write(getTextString("GameMaster", "FF0000", true));
                                    break;
                                case AccessLevel.Seer:
                                    op.Write(getTextString("Seer", "FF0000", true));
                                    break;
                                case AccessLevel.Administrator:
                                    op.Write(getTextString("Administrator", "FF0000", true));
                                    break;
                                case AccessLevel.Developer:
                                    op.Write(getTextString("Developer", "FF0000", true));
                                    break;
                                case AccessLevel.Owner:
                                    op.Write(getTextString("Owner", "0000FF", true));
                                    break;
                            }
 
                            Guild g = m.Guild as Guild;
                            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>");
                            op.Write(getTextString(string.Format("{0}, {1}, {2} ({3})", m.X, m.Y, m.Z, m.Map), "008000", false, true));
                            op.Write(getTextString(string.Format("{0}", m.Kills), "FF0000", false, true));
                            op.Write(getTextString(string.Format("{0}/{1}", m.Karma, m.Fame), "800080", false, true));
                            op.WriteLine("</tr>");
                        }
                    }
                    #endregion list online players
                }
                else
                {
                    op.Write(getTextString("Nobody but us chickens! =P", "red", true, true));
                    op.WriteLine("</tr>");
                }
 
                op.WriteLine(" </table>");
                #endregion online client table
 
                #region player vendors table
                op.WriteLine("<br><br>");
                op.WriteLine("<font color=\"green\"> <table width=\"100%\">");
                op.WriteLine(" <tr></font>");
                op.WriteLine(" <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> PLAYER VENDOR SHOPS:</b></font></td>");
                op.WriteLine(" </tr>");
                op.WriteLine(" </table>");
 
 
 
                op.WriteLine("<font color=\"green\"> <table width=\"100%\">");
                op.WriteLine(" <tr></font>");
                op.WriteLine(" <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> Owners Name</font></td><td bgcolor=\"white\"><font color=\"black\">Shops Name</font></td><td bgcolor=\"white\"><font color=\"black\">Vendors Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td>");
                op.WriteLine(" </tr>");
 
 
                foreach (Mobile mob in World.Mobiles.Values)
                {
                    if (mob is PlayerVendor)
                    {
                        PlayerVendor pv = mob as PlayerVendor;
                        op.Write(" <tr><td bgcolor=\"red\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COER.png align=\"absmiddle\"> ");
 
                        op.WriteLine(pv.Owner.Name);
                        op.Write("</td>");
                        op.WriteLine(getTextString("<td bgcolor=\"red\">" + pv.ShopName + "</td>", "black"));
                        op.WriteLine(getTextString("<td bgcolor=\"red\">" + pv.Name + "</td>", "black"));
                        op.WriteLine(getTextString(string.Format("<td bgcolor=\"red\">{0} - {1}</td>", pv.Map, pv.Location), "black"));
                        op.Write("</tr>");
 
                        op.WriteLine("<tr><td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEY.png align=\"absmiddle\">Amount</td><td bgcolor=\"yellow\"><font color=\"black\">Item</td><td bgcolor=\"yellow\"><font color=\"black\">Price for the Amount<t/d><td bgcolor=\"yellow\"><font color=\"black\">Description</td></tr>");
 
                        foreach (Item item in pv.GetItems())
                        {
                            VendorItem vi = pv.GetVendorItem(item);
                            if (vi != null && vi.IsForSale)
                            {
                                if (pv.Owner == null || pv.Owner.Name == "1k5g6se84f895s854f884s6a") //If name same as this it will not show items in list.
                                    continue;
                                string ownername = (pv.Name != pv.Owner.Name ? pv.Owner.Name : " ");
                                string name = item.Name;
                                if (string.IsNullOrEmpty(name))
                                {
                                    name = item.GetType().ToString();
                                    if (name.LastIndexOf('.') >= 0)
                                        name = name.Substring(name.LastIndexOf('.') + 1);
                                }
                                if (name.Length > 25)
                                    name = name.Substring(0, 25);
 
                                string des = (string.IsNullOrEmpty(vi.Description) ? " " : vi.Description);
 
 
                                op.WriteLine("<tr><td bgcolor=\"green\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COEG.png align=\"absmiddle\"> {0} </td> <td bgcolor=\"green\"><font color = \"black\"> {1,-25} </td> <td bgcolor=\"green\"><font color = \"black\"> {2,7} </td> <td bgcolor=\"green\"><font color = \"black\"> {3} </td></tr>", item.Amount, name, vi.Price.ToString(), des);//Added </tr
                            }
                        }
                    }
                }
 
                //I ADDED END
                // op.WriteLine( " <tr></tr>" );
                op.WriteLine(" </table>");
 
                #endregion player vendors table
 
                op.WriteLine(" </body>");
                op.WriteLine("</html>");
            }
        }
        private static string getTextString(string text)
        {
            return getTextString(text, "", false);
        }
        private static string getTextString(string text, string color)
        {
            return getTextString(text, color, false);
        }
        private static string getTextString(string text, string color, bool bold)
        {
            return getTextString(text, color, bold, false);
        }
        private static string getTextString(string text, string color, bool bold, bool td)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(text);
            if (bold)
            {
                sb.Insert(0, "<b>");
                sb.Append("</b>");
            }
            if (!string.IsNullOrEmpty(color))
            {
                sb.Insert(0, "<font color=\"" + color + "\">");
                sb.Append("</font>");
            }
            if ( td )
            {
                sb.Insert(0, "<td>");
                sb.Append("</td>");
            }
            return sb.ToString();
        }
    }
}
In order to solve the first problem you need to change "PlayerVendor.cs"
replace line:
Code:
protected List<Item> GetItems()
with:
Code:
public List<Item> GetItems()

That change means that you look through all the items on the vendors once instead of all the items in the world for every per player vendor .
 

HellRazor

Knight
Hey just wanted to thank you guys for posting the work and the modifications, it is always helpful to see ways of improving code, and the finished script will be useful too. Thanks for sharing! :)
 

AlphaDragon

Sorceror
Ok, I tried it and come across some issues:
#1) aparently the <br> is not working

#2)Shops are not showing what items they have if it is in a container.
Example: in the Vendor shop they put a bag(the bag is not for sale) but the player puts items inside that container for sale. It will not show the items for sale that are in the container.

3)Some colored items IE names of person on line not showing up either.
But if you go to the web and higlight the area you can see the text is there but not in the color format.
 

Attachments

  • Capture.PNG
    Capture.PNG
    73.2 KB · Views: 59

AlphaDragon

Sorceror
The only problem now is that it wont display items that are for sale if it is in a container. Any Ideas?

Code:
using System;
using System.IO;
using System.Text;
using Server;
using Server.Network;
using Server.Guilds;
 
//
using Server.Items;
using Server.Mobiles;
using Server.Accounting;
//
 
namespace Server.Misc
{
    public class StatusPage : Timer
    {
        public static bool Enabled = true;
 
        public static void Initialize()
        {
            if ( Enabled )
                new StatusPage().Start();
        }
 
        public StatusPage() : base( TimeSpan.FromSeconds( 5.0 ), TimeSpan.FromSeconds( 60.0 ) )
        {
            Priority = TimerPriority.FiveSeconds;
        }
 
        private static string Encode( string input )
        {
            StringBuilder sb = new StringBuilder( input );
 
            sb.Replace( "&", "&amp;" );
            sb.Replace( "<", "&lt;" );
            sb.Replace( ">", "&gt;" );
            sb.Replace( "\"", "&quot;" );
            sb.Replace( "'", "&apos;" );
 
            return sb.ToString();
        }
 
        protected override void OnTick()
        {
//            World.Broadcast( 0x35, true, "STARTING STATUS" );
            if ( !Directory.Exists( "web" ) )
                Directory.CreateDirectory( "web" );
 
            using ( StreamWriter op = new StreamWriter( "web/status.html" ) )
            {
                op.WriteLine( "<html>" );
 
 
 
                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\">Current Server Version # :</font></b><font color=\"green\"> 7.0.12.0</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>" );
//                op.WriteLine( "<br>" );
//                op.WriteLine( "<b><font color =\"gold\">END OF TOP  - START OF ONLINE CLIENT TABLE</font></b><br>" );
               
               
               
#region online client table
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> ONLINE PLAYERS:</b></font></td>" );
                op.WriteLine( "        </tr>" );
                op.WriteLine( "      </table>" );
 
               
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td><td bgcolor=\"white\"><font color=\"black\">Kills</font></td><td bgcolor=\"white\"><font color=\"black\">Karma / Fame</font></td>" );
                op.WriteLine( "        </tr>" );
               
                if (NetState.Instances.Count > 0)
                {
                #region 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/OLB.png 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>" );
                        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>" );
                        op.Write( m.Kills );
                        op.Write( "</td><td><font color = 800080>" );
                        op.Write( m.Karma );
                        op.Write( " / " );
                        op.Write( m.Fame );
                        op.WriteLine( "</td></tr>" );
                    }
 
                   
                   
                }
                #endregion list online players
                }
               
                else
                {
                    op.WriteLine( "<td><b><font color =\"red\">Nobody but us chickens! =P</font></b></td></tr>" );
                }
               
//                op.WriteLine( "        <tr></tr>" );//added /tr
                op.WriteLine( "      </table>" );
#endregion online client table
               
               
#region player vendors table
//                op.WriteLine( "<br>" );
                op.WriteLine( "<br>" );
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> PLAYER VENDOR SHOPS:</b></font></td>" );
                op.WriteLine( "        </tr>" );
                op.WriteLine( "      </table>" );
 
 
               
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> Owners Name</font></td><td bgcolor=\"white\"><font color=\"black\">Shops Name</font></td><td bgcolor=\"white\"><font color=\"black\">Vendors Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td>" );
                op.WriteLine( "        </tr>" );
 
 
                foreach ( Mobile mob in World.Mobiles.Values )
                {
                    if ( mob is PlayerVendor )
                    {
                        PlayerVendor pv = mob as PlayerVendor;
                        op.Write( "        <tr><td bgcolor=\"red\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COER.png align=\"absmiddle\"> " );
                       
                        op.WriteLine( pv.Owner.Name );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
                       
                        op.WriteLine( pv.ShopName );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
                       
                        op.WriteLine( pv.Name );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
//                        op.WriteLine( pv.Map );
//                        op.WriteLine( pv.Backpack );
//                        op.WriteLine( pv.AccessLevel );
                        op.WriteLine( pv.Map + " - " + pv.Location );
                        op.Write( "</td></tr>" );
//                        op.WriteLine( pv.X );
//                        op.WriteLine( pv.Y );
//                        op.WriteLine( pv.Z );
//                        op.WriteLine( pv.RawName );
//                        op.WriteLine( "---------------");
//                        op.WriteLine( "</td></tr>" );
                       
                       
                       
                       
                       
                op.WriteLine( "<tr><td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEY.png align=\"absmiddle\">Amount</td><td bgcolor=\"yellow\"><font color=\"black\">Item</td><td bgcolor=\"yellow\"><font color=\"black\">Price for the Amount<t/d><td bgcolor=\"yellow\"><font color=\"black\">Description</td></tr>" );
 
                        foreach (Item item in pv.GetItems())
                {
                            VendorItem vi = pv.GetVendorItem(item);
                            if ( vi != null && vi.IsForSale )
                            {
                                if (pv.Owner == null || pv.Owner.Name == "1k5g6se84f895s854f884s6a") //If name same as this it will not show items in list.
                                    continue;
                                string ownername = (pv.Name != pv.Owner.Name ? pv.Owner.Name : " ");
                                string name = item.Name;
                                if (string.IsNullOrEmpty(name))
                                {
                                    name = item.GetType().ToString();
                                    if (name.LastIndexOf('.') >= 0)
                                        name = name.Substring(name.LastIndexOf('.') + 1);
                                }
                                    if ( name.Length > 25 )
                                    name = name.Substring(0, 25);
 
                                string des = (string.IsNullOrEmpty(vi.Description) ? " " : vi.Description);
 
 
                                    op.WriteLine( "<tr><td bgcolor=\"green\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COEG.png align=\"absmiddle\"> {0} </td> <td bgcolor=\"green\"><font color = \"black\"> {1,-25} </td> <td bgcolor=\"green\"><font color = \"black\"> {2,7} </td> <td bgcolor=\"green\"><font color = \"black\"> {3} </td></tr>", item.Amount, name, vi.Price.ToString(), des );//Added </tr
                                }
                            }
                    }
                    }
 
 
//I ADDED END
//                op.WriteLine( "        <tr></tr>" );
                op.WriteLine( "      </table>" );
               
               
               
 
 
#endregion player vendors table
               
               
//                op.WriteLine( "<b><font color =\"gold\">END OF LINE</font></b><br>" );
 
               
               
               
                op.WriteLine( "  </body>" );
                op.WriteLine( "</html>" );
//                Console.WriteLine( "WEBSTATUS UPDATE COMPLETE");
            }
        }
    }
}
 

AlphaDragon

Sorceror
Was trying to add something like this but didnt know how to make it work to check and list items in the container. I dont think this will work. but I was trying.

Code:
                            // Calculate all the ItemInfo
                            if ( m_Item is Container && m_Item.Items.Count > 0 )
                            {
                                // Container with items
                                m_Items = new ItemInfo[ m_Item.Items.Count ];
                             
                                for ( int i = 0; i < m_Items.Length; i++ )
                                {
                                    m_Items[ i ] = new ItemInfo( m_Item.Items[ i ] as Item );
                                }
                            }
                            else
                            {
                                m_Items = new ItemInfo[ 1 ];
                                m_Items[ 0 ] = new ItemInfo( m_Item );
                            }
 

AlphaDragon

Sorceror
lol, I got nothing but problems. Was trying to figure out how it would be implamented but I could not figure it out. I tried doing a lot of other things but didnt work either.
 

AlphaDragon

Sorceror
This is what I was working on last night, trying to figure out how to do for every container.

if container For each container, if have item, if item for sale,

write item.Amount, write item.Name, write item.Price, write item.description



Code:
using System;
using System.IO;
using System.Text;
using Server;
using Server.Network;
using Server.Guilds;
 
//
using Server.Items;
using Server.Mobiles;
using Server.Accounting;
//
 
namespace Server.Misc
{
    public class StatusPage : Timer
    {
        public static bool Enabled = true;
 
        public static void Initialize()
        {
            if ( Enabled )
                new StatusPage().Start();
        }
 
        public StatusPage() : base( TimeSpan.FromSeconds( 5.0 ), TimeSpan.FromSeconds( 60.0 ) )
        {
            Priority = TimerPriority.FiveSeconds;
        }
 
        private static string Encode( string input )
        {
            StringBuilder sb = new StringBuilder( input );
 
            sb.Replace( "&", "&amp;" );
            sb.Replace( "<", "&lt;" );
            sb.Replace( ">", "&gt;" );
            sb.Replace( "\"", "&quot;" );
            sb.Replace( "'", "&apos;" );
 
            return sb.ToString();
        }
 
        protected override void OnTick()
        {
//            World.Broadcast( 0x35, true, "STARTING STATUS" );
            if ( !Directory.Exists( "web" ) )
                Directory.CreateDirectory( "web" );
 
            using ( StreamWriter op = new StreamWriter( "web/status.html" ) )
            {
                op.WriteLine( "<html>" );
 
 
 
                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\">Current Server Version # :</font></b><font color=\"green\"> 7.0.12.0</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>" );
//                op.WriteLine( "<br>" );
//                op.WriteLine( "<b><font color =\"gold\">END OF TOP  - START OF ONLINE CLIENT TABLE</font></b><br>" );
           
           
           
#region online client table
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> ONLINE PLAYERS:</b></font></td>" );
                op.WriteLine( "        </tr>" );
                op.WriteLine( "      </table>" );
 
           
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/OLW.png align=\"absmiddle\"> Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td><td bgcolor=\"white\"><font color=\"black\">Kills</font></td><td bgcolor=\"white\"><font color=\"black\">Karma / Fame</font></td>" );
                op.WriteLine( "        </tr>" );
           
                if (NetState.Instances.Count > 0)
                {
                #region 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/OLB.png 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>" );
                        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>" );
                        op.Write( m.Kills );
                        op.Write( "</td><td><font color = 800080>" );
                        op.Write( m.Karma );
                        op.Write( " / " );
                        op.Write( m.Fame );
                        op.WriteLine( "</td></tr>" );
                    }
 
               
               
                }
                #endregion list online players
                }
           
                else
                {
                    op.WriteLine( "<td><b><font color =\"red\">Nobody but us chickens! =P</font></b></td></tr>" );
                }
           
//                op.WriteLine( "        <tr></tr>" );//added /tr
                op.WriteLine( "      </table>" );
#endregion online client table
           
           
#region player vendors table
//                op.WriteLine( "<br>" );
                op.WriteLine( "<br>" );
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color =\"black\"><b><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> PLAYER VENDOR SHOPS:</b></font></td>" );
                op.WriteLine( "        </tr>" );
                op.WriteLine( "      </table>" );
 
 
           
                op.WriteLine( "<font color=\"green\">      <table width=\"100%\">" );
                op.WriteLine( "        <tr></font>" );
                op.WriteLine( "            <td bgcolor=\"white\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEW.png align=\"absmiddle\"> Owners Name</font></td><td bgcolor=\"white\"><font color=\"black\">Shops Name</font></td><td bgcolor=\"white\"><font color=\"black\">Vendors Name</font></td><td bgcolor=\"white\"><font color=\"black\">Location</font></td>" );
                op.WriteLine( "        </tr>" );
 
 
                foreach ( Mobile mob in World.Mobiles.Values )
                {
                    if ( mob is PlayerVendor )
                    {
                        PlayerVendor pv = mob as PlayerVendor;
                        op.Write( "        <tr><td bgcolor=\"red\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COER.png align=\"absmiddle\"> " );
                   
                        op.WriteLine( pv.Owner.Name );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
                   
                        op.WriteLine( pv.ShopName );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
                   
                        op.WriteLine( pv.Name );
                        op.Write( "</td><td bgcolor=\"red\"><font color = \"black\">" );
//                        op.WriteLine( pv.Map );
//                        op.WriteLine( pv.Backpack );
//                        op.WriteLine( pv.AccessLevel );
                        op.WriteLine( pv.Map + " - " + pv.Location );
                        op.Write( "</td></tr>" );
//                        op.WriteLine( pv.X );
//                        op.WriteLine( pv.Y );
//                        op.WriteLine( pv.Z );
//                        op.WriteLine( pv.RawName );
//                        op.WriteLine( "---------------");
//                        op.WriteLine( "</td></tr>" );
                   
                   
                   
                   
                   
                op.WriteLine( "<tr><td bgcolor=\"yellow\"><font color=\"black\"><img src= http://aaaservices.homeip.net/UO/COEY.png align=\"absmiddle\">Amount</td><td bgcolor=\"yellow\"><font color=\"black\">Item</td><td bgcolor=\"yellow\"><font color=\"black\">Price for the Amount<t/d><td bgcolor=\"yellow\"><font color=\"black\">Description</td></tr>" );
 
                        foreach (Item item in pv.GetItems())
                {
                            VendorItem vi = pv.GetVendorItem(item);
                       
//                            // Calculate all the ItemInfo
//                            if ( m_Item is Container && m_Item.Items.Count > 0 )
//                            {
//                                // Container with items
//                                m_Items = new ItemInfo[ m_Item.Items.Count ];
//                           
//                                for ( int i = 0; i < m_Items.Length; i++ )
//                                {
//                                    m_Items[ i ] = new ItemInfo( m_Item.Items[ i ] as Item );
//                                }
//                            }
//                            else
//                            {
//                                m_Items = new ItemInfo[ 1 ];
//                                m_Items[ 0 ] = new ItemInfo( m_Item );
//                            }
 
                            if ( item is Container && ( (Container)item ).Items.Count != 0 )
                            {
                                if ( ( (Container)item ).Items != null && ( (Container)item ).Items.IsForSale )
                                {
                                    string ownername = (pv.Name != pv.Owner.Name ? pv.Owner.Name : " ");
                                    string name = ( (Container)item ).Items.Name;
                               
                                    if (string.IsNullOrEmpty(name))
                                    {
                                        name = item.GetType().ToString();
                                        if (name.LastIndexOf('.') >= 0)
                                            name = name.Substring(name.LastIndexOf('.') + 1);
                                    }
                               
                                    if ( name.Length > 25 )
                                    name = name.Substring(0, 25);
                               
                                    string des = (string.IsNullOrEmpty(vi.Description) ? " " : vi.Description);
                               
                                    op.WriteLine( "<tr><td bgcolor=\"green\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COEG.png align=\"absmiddle\"> {0} </td> <td bgcolor=\"green\"><font color = \"black\"> {1,-25} </td> <td bgcolor=\"green\"><font color = \"black\"> {2,7} </td> <td bgcolor=\"green\"><font color = \"black\"> {3} </td></tr>", item.Amount, name, vi.Price.ToString(), des );//Added </tr
                               
 
                                }
                            }
                           
 
 
                       
                       
                            if ( vi != null && vi.IsForSale )
                            {
                                if (pv.Owner == null || pv.Owner.Name == "1k5g6se84f895s854f884s6a") //If name same as this it will not show items in list.
                                    continue;
                                string ownername = (pv.Name != pv.Owner.Name ? pv.Owner.Name : " ");
                                string name = item.Name;
                                if (string.IsNullOrEmpty(name))
                                {
                                    name = item.GetType().ToString();
                                    if (name.LastIndexOf('.') >= 0)
                                        name = name.Substring(name.LastIndexOf('.') + 1);
                                }
                                    if ( name.Length > 25 )
                                    name = name.Substring(0, 25);
 
                                string des = (string.IsNullOrEmpty(vi.Description) ? " " : vi.Description);
 
 
                                    op.WriteLine( "<tr><td bgcolor=\"green\"><font color = \"black\"><img src= http://aaaservices.homeip.net/UO/COEG.png align=\"absmiddle\"> {0} </td> <td bgcolor=\"green\"><font color = \"black\"> {1,-25} </td> <td bgcolor=\"green\"><font color = \"black\"> {2,7} </td> <td bgcolor=\"green\"><font color = \"black\"> {3} </td></tr>", item.Amount, name, vi.Price.ToString(), des );//Added </tr
                                }
                            }
                    }
                    }
 
 
//I ADDED END
//                op.WriteLine( "        <tr></tr>" );
                op.WriteLine( "      </table>" );
           
           
           
 
 
#endregion player vendors table
           
           
//                op.WriteLine( "<b><font color =\"gold\">END OF LINE</font></b><br>" );
 
           
           
           
                op.WriteLine( "  </body>" );
                op.WriteLine( "</html>" );
//                Console.WriteLine( "WEBSTATUS UPDATE COMPLETE");
            }
        }
    }
}
 

daat99

Moderator
Staff member
Can you post an HTML row for an item as you want it to be?
(Everything between the <tr> and the </tr> that describes the vendor item.)
 

AlphaDragon

Sorceror
Errors:
+ Misc/WebStatus.cs:
CS0117: Line 264: 'System.Collections.Generic.List<Server.Item>' does not co
ntain a definition for 'IsForSale'
CS0117: Line 267: 'System.Collections.Generic.List<Server.Item>' does not co
ntain a definition for 'Name'
 
Top