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!

[Sstat command failure for RunUO 1.0

Asmodaeus

Wanderer
[Sstat command failure for RunUO 1.0

Such a wonderful script this is! Only problem is that I get this error now when compiling:

Code:
 - Error: Scripts\CUSTOM SCRIPTS\StatusPage.cs: CS0029: (line 179, column 29) Ca
nnot implicitly convert type 'Server.Guilds.BaseGuild' to 'Server.Guilds.Guild'
Scripts: One or more scripts failed to compile or no script files were found.
 - Press return to exit, or R to try again.


Here is the script:
Code:
// created by BondD
using System;
using System.Diagnostics;
using System.Collections;
using System.Net;

using Server.Network;
using Server.Mobiles;
using Server.Accounting;
using Server.Guilds;
using Server.Items;
using Server.Misc;

namespace Server.Gumps
{
   public class StatusGump : Gump
   {
      public static void Initialize()
      {
         Commands.Register( "SStat", AccessLevel.Player, new CommandEventHandler( Status_OnCommand ) );
         Commands.Register( "ServerStatus", AccessLevel.Player, new CommandEventHandler( Status_OnCommand ) );
      }

      [Usage( "ServerStatus" )]
      [Description( "Show server status page." )]
      private static void Status_OnCommand( CommandEventArgs e )
      {
         e.Mobile.CloseGump( typeof(StatusGump) );
         e.Mobile.SendGump( new StatusGump( e.Mobile, 0, null, null ) );
      }

      public void AddBlackAlpha( int x, int y, int width, int height )
      {
         AddImageTiled( x, y, width, height, 2624 );
         AddAlphaRegion( x, y, width, height );
      }

      public static string FormatTimeSpan( TimeSpan ts )
      {
         return String.Format( "{0:D2}:{1:D2}:{2:D2}:{3:D2}", ts.Days, ts.Hours % 24, ts.Minutes % 60, ts.Seconds % 60 );
      }

      public static string FormatByteAmount( long totalBytes )
      {
         if ( totalBytes > 1000000000 )
            return String.Format( "{0:F1} GB", (double)totalBytes / 1073741824 );

         if ( totalBytes > 1000000 )
            return String.Format( "{0:F1} MB", (double)totalBytes / 1048576 );

         if ( totalBytes > 1000 )
            return String.Format( "{0:F1} KB", (double)totalBytes / 1024 );

         return String.Format( "{0} Bytes", totalBytes );
      }

      private ArrayList m_List;
      private int m_ListPage;
      private ArrayList m_CountList;

      public StatusGump( Mobile from, int listPage, ArrayList list, ArrayList count ) : base( 140, 80 )
      {
         from.CloseGump( typeof( StatusGump ) );
         
         m_List = list;
         m_ListPage = listPage;   
         m_CountList = count;
         AddPage( 0 );

         AddBackground( 0, 0, 800, 600, 0x53 );

         AddImageTiled( 15, 15, 770, 17, 5154 );
         AddHtml( 15, 15, 770, 17, "<div align=\"center\" color=\"2100\">"+ ServerList.ServerName +"</div>", false, false );

	int t = NetState.Instances.Count;
	if (t != 0)
	{
		ArrayList KList = new ArrayList( NetState.Instances );
		for( int s = 0; s < t; ++s)
		{
			NetState nsk = KList[s] as NetState;
			if ( nsk == null )
				continue;
			Mobile m = nsk.Mobile;
			if ( m == null )
			{
				continue;
			}
			else
			{
				if ((from.AccessLevel == AccessLevel.Player && (( m.AccessLevel == AccessLevel.Counselor && m.Hidden ) || m.AccessLevel >= AccessLevel.GameMaster )) || (from.AccessLevel >= AccessLevel.Player && m.AccessLevel > from.AccessLevel))
				{
					--t;
				}
			}
		}
	}

         AddImageTiled( 15, 37, 190, 17, 5154 );
         AddLabel( 17, 36, 0x25, "Online :" );
         AddHtml( 160, 37, 30, 17, "<div align=\"right\" color=\"2100\">"+ t.ToString() +"</div>", false, false );

         AddImageTiled( 210, 37, 190, 17, 5154 );
         AddLabel( 212, 36, 0x68, "Accounts :" );
         AddHtml( 357, 37, 30, 17, "<div align=\"right\" color=\"2100\">"+ Accounts.Table.Count.ToString() +"</div>", false, false );

         AddImageTiled( 405, 37, 190, 17, 5154 );
         AddLabel( 407, 36, 2100, "Uptime :" );
         AddHtml( 485, 37, 109, 17, "<div align=\"right\" color=\"2100\">"+ FormatTimeSpan( DateTime.Now - Clock.ServerStart) +"</div>", false, false );

         AddImageTiled( 600, 37, 185, 17, 5154 );
         AddLabel( 602, 36, 2100, "RAM in use :" );
         AddHtml( 700, 37, 75, 17, "<div align=\"right\" color=\"2100\">"+ FormatByteAmount( GC.GetTotalMemory( false ) ) +"</div>", false, false );
            // A3C BB8 DAC E10 13BE 13EC 1400 1432 23F0 238C 23BE 2422 242C 2436 2454 2486 24A4 24AE 24B8 24EA 251C 254E 2557 2560 ?2776?
         AddBackground( 15, 59, 770, 526, 0x2454);
         AddBlackAlpha( 18, 62, 763, 520);
         AddLabelCropped(  20, 60, 220, 20, 2100, "Name" );
         AddLabelCropped( 222, 60, 209, 20, 2100, "Guild" );
         AddLabelCropped( 453, 60, 60, 20, 2100, "SumStats" );
         AddLabelCropped( 515, 60, 60, 20, 2100, "Skills" );
         AddLabelCropped( 577, 60, 60, 20, 2100, "Karma" );
         AddLabelCropped( 639, 60, 60, 20, 2100, "Fame" );
         AddLabelCropped( 701, 60, 60, 20, 2100, "Kills" );

         if ( m_List == null )
            m_List = new ArrayList( NetState.Instances );

         if ( listPage > 0 )
            AddButton( 744, 62, 0x15E3, 0x15E7, 1, GumpButtonType.Reply, 0 );
         else
            AddImage( 744, 62, 0x25EA );

         if ( (listPage + 1) * 25 < m_List.Count )
            AddButton( 761, 62, 0x15E1, 0x15E5, 2, GumpButtonType.Reply, 0 );
         else
            AddImage( 761, 62, 0x25E6 );

         if ( m_List.Count == 0 )
            AddLabel( 20, 80, 0x25, "There are no clients to display." );
         
         int k = 0;
         
         if ( listPage > 0 )
         {
            for ( int z = 0; z < ( listPage - 1 ); ++z )
            {
               k = k + Convert.ToInt32(m_CountList[z]);
            }
         }
         
         for ( int i = 0, j = 0, index=((listPage*25)+k) ; i < 25 && index >= 0 && index < m_List.Count && j >= 0; ++i, ++j, ++index )
         {
            NetState ns = m_List[index] as NetState;

            if ( ns == null )
               continue;

            Mobile m = ns.Mobile;

            int offset = 80 + (i * 20);

            if ( m == null )
            {
               if ( Admin.AdminNetwork.IsAuth( ns ) )
                  AddLabelCropped( 20, offset, 220, 20, 2100, "(remote admin)" );
               else
                  AddLabelCropped( 20, offset, 220, 20, 2100, "(logging in)" );
            }
            else
            {
               if ((from.AccessLevel == AccessLevel.Player && (( m.AccessLevel == AccessLevel.Counselor && m.Hidden ) || m.AccessLevel >= AccessLevel.GameMaster )) || (from.AccessLevel >= AccessLevel.Player && m.AccessLevel > from.AccessLevel))
               {
                  --i;
               }
               else
               {
                  AddLabelCropped(  20, offset, 220, 20, 2100, m.Name );

                  Guild g = m.Guild;

                  if ( g != null )
                  {
                     string title = m.GuildTitle;
                     string Ftitle;
                     Ftitle = "[";
                     if ( title != null )
                        title = title.Trim();
                     else
                        title = "";
                     if ( title.Length > 0 )
                     {
                        Ftitle = Ftitle + title + ",";
                     }
                     Ftitle = Ftitle + g.Abbreviation + "]";
                  
                     AddLabelCropped( 222, offset, 209, 20, 2100, Ftitle );
                  }

                  AddLabelCropped( 453, offset,  60, 20, 2100, m.RawStatTotal.ToString() );
                  AddLabelCropped( 515, offset,  60, 20, 2100, m.SkillsTotal.ToString() );
                  AddLabelCropped( 577, offset,  60, 20, 2100, m.Karma.ToString() );
                  AddLabelCropped( 639, offset,  60, 20, 2100, m.Fame.ToString() );
                  AddLabelCropped( 701, offset,  60, 20, 2100, m.Kills.ToString() );
               }
            }
            if ( i == 25 )
            {
               m_CountList[listPage] = (j - 25);
            }

         }
      }
      public override void OnResponse( NetState sender, RelayInfo info )
      {
         Mobile from = sender.Mobile;

         switch ( info.ButtonID )
         {
            case 1:
            {
               if ( m_List != null && m_ListPage > 0 )
                  from.SendGump( new StatusGump( from, m_ListPage - 1, m_List, m_CountList));

               break;
            }
            case 2:
            {
               if ( m_List != null )
                  from.SendGump( new StatusGump( from, m_ListPage + 1, m_List, m_CountList));

               break;
            }
         }
      }
   }
}

I have tried taking out the guild parts altogether, but I would really like to have that shown, seeing as though it was working before.
I have also tried looking for what has changed as far as what the server has to say about guilds, with no success! :confused:

Could someone please tell me:
•What has changed to make this happen and
•How to go about making this script compatible with 1.0?

Thanks alot peeps :D
 

Almassey

Sorceror
I think I saw this posted in another topic. Try changing this:
Code:
Guild g = m.Guild;

to this:
Code:
Guild g = m.Guild as Guild;

I think that was the fix that I saw. Hope it was anyhow or I will look like a total idiot. Now that I think about it...I prolly am.
 
sstat

Yes, that is correct, and it will display the guild properly in V 1.0 (it took me awhile to find that one myself, hehe)
 
Top