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!

Support for 6.0.1.7 Client

what part exactly? I'm less lost than before, but still not able to fix it.

[irony]Also I love that comment from the guy who calls freeshards, who advice their players not to update their clients in order to be able to continue playing whiners...[/irony]

The problem is that container contents are not updated as the client expects it, but I do not know why. Seems to have the issue with the old client version too, what really irritates me. Must have been the changes in item.processdelta, that cause it for older versions.
 

Kamron

Knight
RunUO Support for 6.0.1.7 is FINISHED - THIS MODIFICATION IS WORKING PROPERLY

Download the compiled version if you have not edited your core. Download the other one, if you want to see the edited files. Use winmerge to find the changes.
 
Kamron;699721 said:
RunUO Support for 6.0.1.7 is FINISHED - THIS MODIFICATION IS WORKING PROPERLY

Download the compiled version if you have not edited your core. Download the other one, if you want to see the edited files. Use winmerge to find the changes.

Did you check written?
I have the same problems as before, plus stopped working KR client :)
 

Kamron

Knight
I do not support UOKR client... yes I checked it.. I am using it right now.

I will double-check to make sure what I uploaded is correct.
 

sailor

Wanderer
nice job, man!
but i couldn't see the information about serialization in Item.cs. Did you delete it? By the way, in the zip BaseVendor.cs is not included.

note: In the zip files Packets.cs "VendorBuyContent( ArrayList list, ClientVersion version )" isn't modified.
 

Lumberman

Wanderer
Yeah for 6.0.1.7 Client :),

but it doesn't work with clients <= 6.0.1.6 :-(

Code:
Exception:
System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
   bei Server.Misc.ClientVerification.EventSink_ClientVersionRecieved(ClientVersionRecievedArgs e)
   bei Server.ClientVersionRecievedHandler.Invoke(ClientVersionRecievedArgs e)
   bei Server.EventSink.InvokeClientVersionRecieved(ClientVersionRecievedArgs e) in c:\RunUO_MM\Server.KR\EventSink.cs:Zeile 840.
   bei Server.Network.PacketHandlers.ClientVersion(NetState state, PacketReader pvSrc) in c:\RunUO_MM\Server.KR\Network\PacketHandlers.cs:Zeile 1764.
   bei Server.Network.MessagePump.HandleReceive(NetState ns) in c:\RunUO_MM\Server.KR\Network\MessagePump.cs:Zeile 254.
   bei Server.Network.MessagePump.Slice() in c:\RunUO_MM\Server.KR\Network\MessagePump.cs:Zeile 109.
   bei Server.Core.Main(String[] args) in c:\RunUO_MM\Server.KR\Main.cs:Zeile 459.
after character selection...

Have anybody a hint or solution to me?
 
Lumberman;699753 said:
Yeah for 6.0.1.7 Client :),

but it doesn't work with clients <= 6.0.1.6 :-(

Code:
Exception:
System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
   bei Server.Misc.ClientVerification.EventSink_ClientVersionRecieved(ClientVersionRecievedArgs e)
   bei Server.ClientVersionRecievedHandler.Invoke(ClientVersionRecievedArgs e)
   bei Server.EventSink.InvokeClientVersionRecieved(ClientVersionRecievedArgs e) in c:\RunUO_MM\Server.KR\EventSink.cs:Zeile 840.
   bei Server.Network.PacketHandlers.ClientVersion(NetState state, PacketReader pvSrc) in c:\RunUO_MM\Server.KR\Network\PacketHandlers.cs:Zeile 1764.
   bei Server.Network.MessagePump.HandleReceive(NetState ns) in c:\RunUO_MM\Server.KR\Network\MessagePump.cs:Zeile 254.
   bei Server.Network.MessagePump.Slice() in c:\RunUO_MM\Server.KR\Network\MessagePump.cs:Zeile 109.
   bei Server.Core.Main(String[] args) in c:\RunUO_MM\Server.KR\Main.cs:Zeile 459.
after character selection...

Have anybody a hint or solution to me?

i think you need this to fix that:

ClientVerification.cs
Code:
		private static void EventSink_ClientVersionRecieved( ClientVersionRecievedArgs e )
		{
			// new 6017 support
			if ( e == null || e.State == null || e.State.Mobile == null )
				return;
 

pmouse

Wanderer
You are welcome, a credit would be appreciated too.

Just so you know, you don't need to block packets from the client, just hold off setting the netstate property of the mobile will do the trick - move the last portion of 0x5D handler into a timer loop, like so:

Code:
public static void DelayLoginProcess(NetState state, Mobile m, int flags)
{
   if ( state.ClientVersion != null /* If UOKR is supported, test here */ )
   {
       Timer.DelayCall( TimeSpan.FromSeconds(0.1), delegate()
       {
           DelayLoginProcess(state, m, flags);
       });
   }
   else
   {
       // do the login process here
   }
}
Then just send ClientVersionReq and then call this method to wait for the reply.

Also, people with BuffInfo support might have their 0xBD packet handler overwritten, you might want to remove that as well.

Regards,

PQ
 

Lumberman

Wanderer
Konstantin Andry;699765 said:
i think you need this to fix that:

ClientVerification.cs
Code:
		private static void EventSink_ClientVersionRecieved( ClientVersionRecievedArgs e )
		{
			// new 6017 support
			if ( e == null || e.State == null || e.State.Mobile == null )
				return;

Yes, that work for me and client <= 6.0.1.6!

Many thanks to Kamron and all others here!
 

Kamron

Knight
Hold on, I will make updates to the included files and the thread to reflect these changes.

EDIT: I don't see how the BuffIcon would affect things...

Code:
			if( Enabled )
			{
				EventSink.ClientVersionReceived += new ClientVersionReceivedHandler( delegate( ClientVersionReceivedArgs args )
				{
					PlayerMobile pm = args.State.Mobile as PlayerMobile;
					
					if( pm != null )
						Timer.DelayCall( TimeSpan.Zero, pm.ResendBuffs );
				} );
			}

This code would simply exit... since PlayerMobile would be null.
Is there a chance that args.State could be null?
 

Kamron

Knight
Okay, thank you guys for finding those problems. I just updated the included files.

Item.cs Serialization:

Code:
		public virtual void Serialize( GenericWriter writer )
		{
			writer.Write( 9 ); // version

			SaveFlag flags = SaveFlag.None;

			int x = m_Location.m_X, y = m_Location.m_Y, z = m_Location.m_Z;

			if ( x != 0 || y != 0 || z != 0 )
			{
				if ( x >= short.MinValue && x <= short.MaxValue && y >= short.MinValue && y <= short.MaxValue && z >= sbyte.MinValue && z <= sbyte.MaxValue )
				{
					if ( x != 0 || y != 0 )
					{
						if ( x >= byte.MinValue && x <= byte.MaxValue && y >= byte.MinValue && y <= byte.MaxValue )
							flags |= SaveFlag.LocationByteXY;
						else
							flags |= SaveFlag.LocationShortXY;
					}

					if ( z != 0 )
						flags |= SaveFlag.LocationSByteZ;
				}
				else
				{
					flags |= SaveFlag.LocationFull;
				}
			}

			CompactInfo info = LookupCompactInfo();
			List<Item> items = LookupItems();

			[COLOR=BLUE]if ( m_GridLocation > 0 )
				flags |= SaveFlag.GridLocation;[/COLOR]
			if ( m_Direction != Direction.North )
				flags |= SaveFlag.Direction;
			if ( info != null && info.m_Bounce != null )
				flags |= SaveFlag.Bounce;
			if ( m_LootType != LootType.Regular )
				flags |= SaveFlag.LootType;
			if ( m_ItemID != 0 )
				flags |= SaveFlag.ItemID;
			if ( m_Hue != 0 )
				flags |= SaveFlag.Hue;
			if ( m_Amount != 1 )
				flags |= SaveFlag.Amount;
			if ( m_Layer != Layer.Invalid )
				flags |= SaveFlag.Layer;
			if ( info != null && info.m_Name != null )
				flags |= SaveFlag.Name;
			if ( m_Parent != null )
				flags |= SaveFlag.Parent;
			if ( items != null && items.Count > 0 )
				flags |= SaveFlag.Items;
			if ( m_Map != Map.Internal )
				flags |= SaveFlag.Map;
			//if ( m_InsuredFor != null && !m_InsuredFor.Deleted )
				//flags |= SaveFlag.InsuredFor;
			if ( info != null && info.m_BlessedFor != null && !info.m_BlessedFor.Deleted )
				flags |= SaveFlag.BlessedFor;
			if ( info != null && info.m_HeldBy != null && !info.m_HeldBy.Deleted )
				flags |= SaveFlag.HeldBy;
			if ( info != null && info.m_SavedFlags != 0 )
				flags |= SaveFlag.SavedFlags;

			if ( info == null || info.m_Weight == -1 )
			{
				flags |= SaveFlag.NullWeight;
			}
			else
			{
				if ( info.m_Weight == 0.0 )
				{
					flags |= SaveFlag.WeightIs0;
				}
				else if ( info.m_Weight != 1.0 )
				{
					if ( info.m_Weight == (int) info.m_Weight )
						flags |= SaveFlag.IntWeight;
					else
						flags |= SaveFlag.WeightNot1or0;
				}
			}

			ImplFlag implFlags = ( m_Flags & ( ImplFlag.Visible | ImplFlag.Movable | ImplFlag.Stackable | ImplFlag.Insured | ImplFlag.PayedInsurance | ImplFlag.QuestItem ) );

			if ( implFlags != ( ImplFlag.Visible | ImplFlag.Movable ) )
				flags |= SaveFlag.ImplFlags;

			writer.Write( (int) flags );

			/* begin last moved time optimization */
			long ticks = m_LastMovedTime.Ticks;
			long now = DateTime.Now.Ticks;

			TimeSpan d;

			try { d = new TimeSpan( ticks - now ); }
			catch { if ( ticks < now ) d = TimeSpan.MaxValue; else d = TimeSpan.MaxValue; }

			double minutes = -d.TotalMinutes;

			if ( minutes < int.MinValue )
				minutes = int.MinValue;
			else if ( minutes > int.MaxValue )
				minutes = int.MaxValue;

			writer.WriteEncodedInt( (int) minutes );
			/* end */

			if ( GetSaveFlag( flags, SaveFlag.GridLocation ) )
				writer.Write( (byte) m_GridLocation );

			if ( GetSaveFlag( flags, SaveFlag.Direction ) )
				writer.Write( (byte) m_Direction );

			if ( GetSaveFlag( flags, SaveFlag.Bounce ) )
				BounceInfo.Serialize( info.m_Bounce, writer );

			if ( GetSaveFlag( flags, SaveFlag.LootType ) )
				writer.Write( (byte) m_LootType );

			if ( GetSaveFlag( flags, SaveFlag.LocationFull ) )
			{
				writer.WriteEncodedInt( x );
				writer.WriteEncodedInt( y );
				writer.WriteEncodedInt( z );
			}
			else
			{
				if ( GetSaveFlag( flags, SaveFlag.LocationByteXY ) )
				{
					writer.Write( (byte) x );
					writer.Write( (byte) y );
				}
				else if ( GetSaveFlag( flags, SaveFlag.LocationShortXY ) )
				{
					writer.Write( (short) x );
					writer.Write( (short) y );
				}

				if ( GetSaveFlag( flags, SaveFlag.LocationSByteZ ) )
					writer.Write( (sbyte) z );
			}

			if ( GetSaveFlag( flags, SaveFlag.ItemID ) )
				writer.WriteEncodedInt( (int) m_ItemID );

			if ( GetSaveFlag( flags, SaveFlag.Hue ) )
				writer.WriteEncodedInt( (int) m_Hue );

			if ( GetSaveFlag( flags, SaveFlag.Amount ) )
				writer.WriteEncodedInt( (int) m_Amount );

			if ( GetSaveFlag( flags, SaveFlag.Layer ) )
				writer.Write( (byte) m_Layer );

			if ( GetSaveFlag( flags, SaveFlag.Name ) )
				writer.Write( (string) info.m_Name );

			if ( GetSaveFlag( flags, SaveFlag.Parent ) )
			{
				if ( m_Parent is Mobile && !( (Mobile) m_Parent ).Deleted )
					writer.Write( ( (Mobile) m_Parent ).Serial );
				else if ( m_Parent is Item && !( (Item) m_Parent ).Deleted )
					writer.Write( ( (Item) m_Parent ).Serial );
				else
					writer.Write( (int) Serial.MinusOne );
			}

			if ( GetSaveFlag( flags, SaveFlag.Items ) )
				writer.Write( items, false );

			if ( GetSaveFlag( flags, SaveFlag.IntWeight ) )
				writer.WriteEncodedInt( (int) info.m_Weight );
			else if ( GetSaveFlag( flags, SaveFlag.WeightNot1or0 ) )
				writer.Write( (double) info.m_Weight );

			if ( GetSaveFlag( flags, SaveFlag.Map ) )
				writer.Write( (Map) m_Map );

			if ( GetSaveFlag( flags, SaveFlag.ImplFlags ) )
				writer.WriteEncodedInt( (int) implFlags );

			if ( GetSaveFlag( flags, SaveFlag.InsuredFor ) )
				writer.Write( (Mobile) null );

			if ( GetSaveFlag( flags, SaveFlag.BlessedFor ) )
				writer.Write( info.m_BlessedFor );

			if ( GetSaveFlag( flags, SaveFlag.HeldBy ) )
				writer.Write( info.m_HeldBy );

			if ( GetSaveFlag( flags, SaveFlag.SavedFlags ) )
				writer.WriteEncodedInt( info.m_SavedFlags );
		}

		public virtual void Deserialize( GenericReader reader )
		{
			int version = reader.ReadInt();

			SetLastMoved();

			switch ( version )
			{
				case 9:
				case 8:
				case 7:
				case 6:
				{
					SaveFlag flags = (SaveFlag)reader.ReadInt();

					if ( version < 7 )
					{
						LastMoved = reader.ReadDeltaTime();
					}
					else
					{
						int minutes = reader.ReadEncodedInt();

						try{ LastMoved = DateTime.Now - TimeSpan.FromMinutes( minutes ); }
						catch{ LastMoved = DateTime.Now; }
					}

					[COLOR=BLUE]if ( GetSaveFlag( flags, SaveFlag.GridLocation ) )
						m_GridLocation = reader.ReadByte();[/COLOR]

					if ( GetSaveFlag( flags, SaveFlag.Direction ) )
						m_Direction = (Direction)reader.ReadByte();

					if ( GetSaveFlag( flags, SaveFlag.Bounce ) )
						AcquireCompactInfo().m_Bounce = BounceInfo.Deserialize( reader );

					if ( GetSaveFlag( flags, SaveFlag.LootType ) )
						m_LootType = (LootType)reader.ReadByte();

					int x = 0, y = 0, z = 0;

					if ( GetSaveFlag( flags, SaveFlag.LocationFull ) )
					{
						x = reader.ReadEncodedInt();
						y = reader.ReadEncodedInt();
						z = reader.ReadEncodedInt();
					}
					else
					{
						if ( GetSaveFlag( flags, SaveFlag.LocationByteXY ) )
						{
							x = reader.ReadByte();
							y = reader.ReadByte();
						}
						else if ( GetSaveFlag( flags, SaveFlag.LocationShortXY ) )
						{
							x = reader.ReadShort();
							y = reader.ReadShort();
						}

						if ( GetSaveFlag( flags, SaveFlag.LocationSByteZ ) )
							z = reader.ReadSByte();
					}

					m_Location = new Point3D( x, y, z );

					if ( GetSaveFlag( flags, SaveFlag.ItemID ) )
						m_ItemID = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.Hue ) )
						m_Hue = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.Amount ) )
						m_Amount = reader.ReadEncodedInt();
					else
						m_Amount = 1;

					if ( GetSaveFlag( flags, SaveFlag.Layer ) )
						m_Layer = (Layer)reader.ReadByte();

					if ( GetSaveFlag( flags, SaveFlag.Name ) )
					{
						string name = reader.ReadString();

						if ( name != this.DefaultName )
							AcquireCompactInfo().m_Name = name;
					}

					if ( GetSaveFlag( flags, SaveFlag.Parent ) )
					{
						Serial parent = reader.ReadInt();

						if ( parent.IsMobile )
							m_Parent = World.FindMobile( parent );
						else if ( parent.IsItem )
							m_Parent = World.FindItem( parent );
						else
							m_Parent = null;

						if ( m_Parent == null && (parent.IsMobile || parent.IsItem) )
							Delete();
					}

					if ( GetSaveFlag( flags, SaveFlag.Items ) )
					{
						List<Item> items = reader.ReadStrongItemList();

						if ( this is Container )
							( this as Container ).m_Items = items;
						else
							AcquireCompactInfo().m_Items = items;
					}

					if ( version < 8 || !GetSaveFlag( flags, SaveFlag.NullWeight ) )
					{
						double weight;

						if ( GetSaveFlag( flags, SaveFlag.IntWeight ) )
							weight = reader.ReadEncodedInt();
						else if ( GetSaveFlag( flags, SaveFlag.WeightNot1or0 ) )
							weight = reader.ReadDouble();
						else if ( GetSaveFlag( flags, SaveFlag.WeightIs0 ) )
							weight = 0.0;
						else
							weight = 1.0;

						if ( weight != DefaultWeight )
							AcquireCompactInfo().m_Weight = weight;
					}

					if ( GetSaveFlag( flags, SaveFlag.Map ) )
						m_Map = reader.ReadMap();
					else
						m_Map = Map.Internal;

					if ( GetSaveFlag( flags, SaveFlag.Visible ) )
						SetFlag( ImplFlag.Visible, reader.ReadBool() );
					else
						SetFlag( ImplFlag.Visible, true );

					if ( GetSaveFlag( flags, SaveFlag.Movable ) )
						SetFlag( ImplFlag.Movable, reader.ReadBool() );
					else
						SetFlag( ImplFlag.Movable, true );

					if ( GetSaveFlag( flags, SaveFlag.Stackable ) )
						SetFlag( ImplFlag.Stackable, reader.ReadBool() );

					if ( GetSaveFlag( flags, SaveFlag.ImplFlags ) )
						m_Flags = (ImplFlag)reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.InsuredFor ) )
						/*m_InsuredFor = */reader.ReadMobile();

					if ( GetSaveFlag( flags, SaveFlag.BlessedFor ) )
						AcquireCompactInfo().m_BlessedFor = reader.ReadMobile();

					if ( GetSaveFlag( flags, SaveFlag.HeldBy ) )
						AcquireCompactInfo().m_HeldBy = reader.ReadMobile();

					if ( GetSaveFlag( flags, SaveFlag.SavedFlags ) )
						AcquireCompactInfo().m_SavedFlags = reader.ReadEncodedInt();

					if ( m_Map != null && m_Parent == null )
						m_Map.OnEnter( this );

					break;
				}
				case 5:
				{
					SaveFlag flags = (SaveFlag)reader.ReadInt();

					LastMoved = reader.ReadDeltaTime();

					if ( GetSaveFlag( flags, SaveFlag.Direction ) )
						m_Direction = (Direction)reader.ReadByte();

					if ( GetSaveFlag( flags, SaveFlag.Bounce ) )
						AcquireCompactInfo().m_Bounce = BounceInfo.Deserialize( reader );

					if ( GetSaveFlag( flags, SaveFlag.LootType ) )
						m_LootType = (LootType)reader.ReadByte();

					if ( GetSaveFlag( flags, SaveFlag.LocationFull ) )
						m_Location = reader.ReadPoint3D();

					if ( GetSaveFlag( flags, SaveFlag.ItemID ) )
						m_ItemID = reader.ReadInt();

					if ( GetSaveFlag( flags, SaveFlag.Hue ) )
						m_Hue = reader.ReadInt();

					if ( GetSaveFlag( flags, SaveFlag.Amount ) )
						m_Amount = reader.ReadInt();
					else
						m_Amount = 1;

					if ( GetSaveFlag( flags, SaveFlag.Layer ) )
						m_Layer = (Layer)reader.ReadByte();

					if ( GetSaveFlag( flags, SaveFlag.Name ) )
					{
						string name = reader.ReadString();

						if ( name != this.DefaultName )
							AcquireCompactInfo().m_Name = name;
					}

					if ( GetSaveFlag( flags, SaveFlag.Parent ) )
					{
						Serial parent = reader.ReadInt();

						if ( parent.IsMobile )
							m_Parent = World.FindMobile( parent );
						else if ( parent.IsItem )
							m_Parent = World.FindItem( parent );
						else
							m_Parent = null;

						if ( m_Parent == null && (parent.IsMobile || parent.IsItem) )
							Delete();
					}

					if ( GetSaveFlag( flags, SaveFlag.Items ) )
					{
						List<Item> items = reader.ReadStrongItemList();

						if ( this is Container )
							( this as Container ).m_Items = items;
						else
							AcquireCompactInfo().m_Items = items;
					}

					double weight;

					if ( GetSaveFlag( flags, SaveFlag.IntWeight ) )
						weight = reader.ReadEncodedInt();
					else if ( GetSaveFlag( flags, SaveFlag.WeightNot1or0 ) )
						weight = reader.ReadDouble();
					else if ( GetSaveFlag( flags, SaveFlag.WeightIs0 ) )
						weight = 0.0;
					else
						weight = 1.0;

					if ( weight != DefaultWeight )
						AcquireCompactInfo().m_Weight = weight;

					if ( GetSaveFlag( flags, SaveFlag.Map ) )
						m_Map = reader.ReadMap();
					else
						m_Map = Map.Internal;

					if ( GetSaveFlag( flags, SaveFlag.Visible ) )
						SetFlag( ImplFlag.Visible, reader.ReadBool() );
					else
						SetFlag( ImplFlag.Visible, true );

					if ( GetSaveFlag( flags, SaveFlag.Movable ) )
						SetFlag( ImplFlag.Movable, reader.ReadBool() );
					else
						SetFlag( ImplFlag.Movable, true );

					if ( GetSaveFlag( flags, SaveFlag.Stackable ) )
						SetFlag( ImplFlag.Stackable, reader.ReadBool() );

					if ( m_Map != null && m_Parent == null )
						m_Map.OnEnter( this );

					break;
				}
				case 4: // Just removed variables
				case 3:
				{
					m_Direction = (Direction)reader.ReadInt();

					goto case 2;
				}
				case 2:
				{
					AcquireCompactInfo().m_Bounce = BounceInfo.Deserialize( reader );
					LastMoved = reader.ReadDeltaTime();

					goto case 1;
				}
				case 1:
				{
					m_LootType = (LootType) reader.ReadByte();//m_Newbied = reader.ReadBool();

					goto case 0;
				}
				case 0:
				{
					m_Location = reader.ReadPoint3D();
					m_ItemID = reader.ReadInt();
					m_Hue = reader.ReadInt();
					m_Amount = reader.ReadInt();
					m_Layer = (Layer) reader.ReadByte();

					string name = reader.ReadString();

					if ( name != this.DefaultName )
						AcquireCompactInfo().m_Name = name;

					Serial parent = reader.ReadInt();

					if ( parent.IsMobile )
						m_Parent = World.FindMobile( parent );
					else if ( parent.IsItem )
						m_Parent = World.FindItem( parent );
					else
						m_Parent = null;

					if ( m_Parent == null && (parent.IsMobile || parent.IsItem) )
						Delete();

					int count = reader.ReadInt();

					if ( count > 0 )
					{
						List<Item> items = new List<Item>( count );

						for ( int i = 0; i < count; ++i )
						{
							Item item = reader.ReadItem();

							if ( item != null )
								items.Add( item );
						}

						if ( this is Container )
							( this as Container ).m_Items = items;
						else
							AcquireCompactInfo().m_Items = items;
					}

					double weight = reader.ReadDouble();

					if ( weight != DefaultWeight )
						AcquireCompactInfo().m_Weight = weight;

					if ( version <= 3 )
					{
						reader.ReadInt();
						reader.ReadInt();
						reader.ReadInt();
					}

					m_Map = reader.ReadMap();
					SetFlag( ImplFlag.Visible, reader.ReadBool() );
					SetFlag( ImplFlag.Movable, reader.ReadBool() );

					if ( version <= 3 )
						/*m_Deleted =*/ reader.ReadBool();

					Stackable = reader.ReadBool();

					if ( m_Map != null && m_Parent == null )
						m_Map.OnEnter( this );

					break;
				}
			}

			if ( this.HeldBy != null )
				Timer.DelayCall( TimeSpan.Zero, new TimerCallback( FixHolding_Sandbox ) );

			//if ( version < 9 )
				VerifyCompactInfo();
		}
 

sailor

Wanderer
In the zip, BaseVendor.cs modification is not included. And in EventSink.cs public delegate void ClientVersionRecievedHandler( ClientVersionRecievedArgs e ); is written wrong (in runuo svn 187). You use in you scripts ClientVersionReceived. So SVN187 users may have problems with this.

By the way, can you write here how we should modify BaseVendor.cs ?
 
anyone else had a crash with the annoygump? I got the feeling this is the reason why it crashed, sorry got the crashlog no more. Because m is null and m.State crashes <.<
Code:
		private static void SendAnnoyGump( Mobile m )
		{
			if( m != null && m.NetState != null && m.NetState.Version < Required )
			{
Didn't need the gump anyways.
 

RavonTUS

Sorceror
sailor;699906 said:
In the zip, BaseVendor.cs modification is not included. And in EventSink.cs public delegate void ClientVersionRecievedHandler( ClientVersionRecievedArgs e ); is written wrong (in runuo svn 187). You use in you scripts ClientVersionReceived. So SVN187 users may have problems with this.

By the way, can you write here how we should modify BaseVendor.cs ?

Renamed all "recieve" to "receive", in server & scripts, then recompiled core and I too get the BaseVendor.cs error when tring to compile. (SVN 187)

Error:
Code:
Errors:
 + Custom/Distro/Base/BaseVendor.cs:
    CS1501: Line 831: No overload for method 'VendorBuyContent' takes '1' arguments

Line 831 in red:
Code:
            if (list.Count > 0)
            {
                list.Sort(new BuyItemStateComparer());

                SendPacksTo(from);

[COLOR="Red"]                from.Send(new VendorBuyContent(list));[/COLOR]
                from.Send(new VendorBuyList(this, list));
                from.Send(new DisplayBuyList(this));
                from.Send(new MobileStatusExtended(from));//make sure their gold amount is sent

It looks like it does not like this change in Packets.cs...
Code:
    public sealed class VendorBuyContent : Packet
    {
        //23JUL2007 Support for 6.0.1.7 Client *** START ***
        //public VendorBuyContent(ArrayList list)
        //    : base(0x3c)
        //{
        //    this.EnsureCapacity(list.Count * 19 + 5);

        public VendorBuyContent(ArrayList list, ClientVersion version)
            : base(0x3c)
        {
            bool uokr = IsUOKRPacket(version);

            this.EnsureCapacity(list.Count * (uokr ? 20 : 19) + 5);
            //23JUL2007 Support for 6.0.1.7 Client *** END   ***

OK, I think this will fix it, however, I am not where I can test it...

In BaseVendor.cs change line 831 (in red):
Code:
            if (list.Count > 0)
            {
                list.Sort(new BuyItemStateComparer());

                SendPacksTo(from);

[COLOR="Red"]                from.Send(new VendorBuyContent(list, from.NetState.Version));[/COLOR]
                from.Send(new VendorBuyList(this, list));
                from.Send(new DisplayBuyList(this));
                from.Send(new MobileStatusExtended(from));//make sure their gold amount is sent

Will VendorBuyList and DisplayBuyList also need this change too?

-Ravon
 

Kamron

Knight
I dunno why I am missing some of the files in the archive.. sorry about that.
And I was not aware that I copied over some of my typo fixes..

I will fix this, thanks again :)
 
Top