Lemke

Member
Hello guys,using a trophy script on a publish 56,it loads correctly and it working when added,but when the player doing single click the trophy didnt show the owner name and date,here the code of full script:

C#:
using System;
using System.Text;
using Server;
using Server.Items;

namespace Server.Items
{
    public enum TrophyRank
    {
        Bronze,
        Silver,
        Gold
    }

    [Flipable( 5020, 4647 )]
    public class Trophy : Item
    {
        private string m_Title;
        private TrophyRank m_Rank;
        private Mobile m_Owner;
        private DateTime m_Date;

        [CommandProperty( AccessLevel.GameMaster )]
        public string Title{ get{ return m_Title; } set{ m_Title = value; } }

        [CommandProperty( AccessLevel.GameMaster )]
        public TrophyRank Rank{ get{ return m_Rank; } set{ m_Rank = value; UpdateStyle(); } }

        [CommandProperty( AccessLevel.GameMaster )]
        public Mobile Owner{ get{ return m_Owner; } set{ m_Owner = value; } }

        [CommandProperty( AccessLevel.GameMaster )]
        public DateTime Date{ get{ return m_Date; } }

        [Constructable]
        public Trophy( string title, TrophyRank rank ) : base( 5020 )
        {
            m_Title = title;
            m_Rank = rank;
            m_Date = DateTime.UtcNow;

            LootType = LootType.Blessed;

            UpdateStyle();
        }

        public Trophy( Serial serial ) : base( serial )
        {
        }

        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );

            writer.Write( (int) 1 ); // version

            writer.Write( (string) m_Title );
            writer.Write( (int) m_Rank );
            writer.Write( (Mobile) m_Owner );
            writer.Write( (DateTime) m_Date );
        }

        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            m_Title = reader.ReadString();
            m_Rank = (TrophyRank) reader.ReadInt();
            m_Owner = reader.ReadMobile();
            m_Date = reader.ReadDateTime();

            if ( version == 0 )
                LootType = LootType.Blessed;
        }

        public override void OnAdded(object parent)
        {
            base.OnAdded( parent );

            if ( m_Owner == null )
                m_Owner = this.RootParent as Mobile;
        }

        public override void OnSingleClick( Mobile from )
        {
            base.OnSingleClick( from );

            if ( m_Owner != null )
                LabelTo( from, "{0} -- {1}", m_Title, m_Owner.RawName );
            else if ( m_Title != null )
                LabelTo( from, m_Title );

            if ( m_Date != DateTime.MinValue )
                LabelTo( from, m_Date.ToString( "d" ) );
        }

        public void UpdateStyle()
        {
            Name = String.Format( "{0} trophy", m_Rank.ToString().ToLower() );

            switch ( m_Rank )
            {
                case TrophyRank.Gold: Hue = 2213; break;
                case TrophyRank.Silver: Hue = 0; break;
                case TrophyRank.Bronze: Hue = 2206; break;
            }
        }
    }
}
Any advice?Thanks in advance!
 
Np mate,i fixed it now,just using:
C#:
public override void GetProperties(ObjectPropertyList list)
method,thank you!
 

Active Shards

Donations

Total amount
$50.00
Goal
$1,000.00
Back