Go Back   RunUO - Ultima Online Emulation > RunUO > Custom Script Release Archive

Custom Script Release Archive This is a pre-script database archive of what our users had released.

 
 
Thread Tools Display Modes
Old 05-31-2005, 12:10 AM   #1 (permalink)
 
Join Date: Feb 2005
Location: Montreal, QC
Age: 26
Posts: 8
Default Better Ankh Code Helps Freeze on Death Issue

ok I fixed one of the causes of the freeze on death problem which was caused by two ressurection gumps being opened at the same time. The following code is specifically fixed to ankhs by making the ankh code work better.

The freeze on death problem is mainly caused by openning more than one instance of the Resurrect gump. When you either close the menu by canceling or resurrecting, from that point on you will not be able to move when you’re dead.

With an ankh this can happen in more than one way. Because an ankh is composed of two items (the two halves of an ankh) that each have separate events that act independently you can have two menus show up when you walk within a 1 square radius of both parts of an ankh. Also if you have a resurrect menu open already you can keep on opening others by dbl clicking the ankh.

To solve the issue with the ankh I just made it so only one Resurrect menu can be sent to the user by the ankh.

If your wondering why you've never seen two Resurrect menus pop up before its because they are on top of each other. Just drag the top one and you'll see the second one.

This only fixes the ankhs. You can also bring up more than one Resurrect menu if you click on an ankh and someone tries to rez you at the same time. There may be other instances that need to be fixed.


Code:
/*
Author		: Unknown
Last Modified	: One Eyed Jack
Created 	: Unknown
Modified	: 30/05/05
File Name	: \Items\Construction\Ankhs.cs

Classes Used	: 

Methods		: 

Description	: This code initializes and controls the events for the 
                  WestAnkh and EastAnkh. The freeze on death issue with
                  client 4.0.10b is fixed. It was caused when more than one
                  Ressurect menu was open at the same time.

Modifications?	: (1)
		  The code was:
		  	Resurrect( m_Mobile, m_Item );
		  	
		  The if statement was added to check if a resurrect menu
		  was already opened.
		  
		  (2)(4)(6)(8)
		  The code was:
		  	if ( Parent == null && Utility.InRange( Location, m.Location, 1 ) && !Utility.InRange( Location, oldLocation, 1 ))
				Ankhs.Resurrect( m, this );
				
		  The condition m.CantWalk == false was added to if statement
		  to make sure no other resurrect menu was opened.
		  
		  (3)(5)(7)(9)
		  The code was:
		  	Ankhs.Resurrect( m, this );
		  
		  The if statement was added to check if a resurrect menu
		  was already opened.		  	
*/

using System;
using System.Collections;
using Server;
using Server.Gumps;
using Server.Mobiles;
using Server.ContextMenus;

namespace Server.Items
{
	public class Ankhs
	{
		public const int ResurrectRange = 2;
		public const int TitheRange = 2;
		public const int LockRange = 2;

		public static void GetContextMenuEntries( Mobile from, Item item, ArrayList list )
		{
			if ( from is PlayerMobile )
				list.Add( new LockKarmaEntry( (PlayerMobile)from ) );

			list.Add( new ResurrectEntry( from, item ) );

			if ( Core.AOS )
				list.Add( new TitheEntry( from ) );
		}

		public static void Resurrect( Mobile m, Item item )
		{
			if ( m.Alive )
				return;

			if ( !m.InRange( item.GetWorldLocation(), ResurrectRange ) )
				m.SendLocalizedMessage( 500446 ); // That is too far away.
			else if ( m.Map != null && m.Map.CanFit( m.Location, 16, false, false ) )
				m.SendGump( new ResurrectGump( m, ResurrectMessage.VirtueShrine ) );
			else
				m.SendLocalizedMessage( 502391 ); // Thou can not be resurrected there!
		}

		private class ResurrectEntry : ContextMenuEntry
		{
			private Mobile m_Mobile;
			private Item m_Item;

			public ResurrectEntry( Mobile mobile, Item item ) : base( 6195, ResurrectRange )
			{
				m_Mobile = mobile;
				m_Item = item;

				Enabled = !m_Mobile.Alive;
			}

			public override void OnClick()
			{
				//************************start (1)***************************
				if(m_Mobile.CantWalk == false)
				{
					Resurrect( m_Mobile, m_Item );
				}
				//*************************end (1)****************************
			}
		}

		private class LockKarmaEntry : ContextMenuEntry
		{
			private PlayerMobile m_Mobile;

			public LockKarmaEntry( PlayerMobile mobile ) : base( mobile.KarmaLocked ? 6197 : 6196, LockRange )
			{
				m_Mobile = mobile;
			}

			public override void OnClick()
			{
				m_Mobile.KarmaLocked = !m_Mobile.KarmaLocked;

				if ( m_Mobile.KarmaLocked )
					m_Mobile.SendLocalizedMessage( 1060192 ); // Your karma has been locked. Your karma can no longer be raised.
				else
					m_Mobile.SendLocalizedMessage( 1060191 ); // Your karma has been unlocked. Your karma can be raised again.
			}
		}

		private class TitheEntry : ContextMenuEntry
		{
			private Mobile m_Mobile;

			public TitheEntry( Mobile mobile ) : base( 6198, TitheRange )
			{
				m_Mobile = mobile;

				Enabled = m_Mobile.Alive;
			}

			public override void OnClick()
			{
				if ( m_Mobile.CheckAlive() )
					m_Mobile.SendGump( new TithingGump( m_Mobile, 0 ) );
			}
		}
	}

	public class AnkhWest : Item
	{
		private InternalItem m_Item;

		[Constructable]
		public AnkhWest() : this( false )
		{
		}

		[Constructable]
		public AnkhWest( bool bloodied ) : base( bloodied ? 0x1D98 : 0x3 )
		{
			Movable = false;

			m_Item = new InternalItem( bloodied, this );
		}

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

		public override bool HandlesOnMovement{ get{ return true; } } // Tell the core that we implement OnMovement

		public override void OnMovement( Mobile m, Point3D oldLocation )
		{
			//************************start (2)***************************
			if ( Parent == null && Utility.InRange( Location, m.Location, 1 ) && !Utility.InRange( Location, oldLocation, 1 ) && m.CantWalk == false)
				Ankhs.Resurrect( m, this );
			//*************************end (2)****************************
		}

		public override void GetContextMenuEntries( Mobile from, ArrayList list )
		{
			base.GetContextMenuEntries( from, list );
			Ankhs.GetContextMenuEntries( from, this, list );
		}

		[Hue, CommandProperty( AccessLevel.GameMaster )]
		public override int Hue
		{
			get{ return base.Hue; }
			set{ base.Hue = value; if ( m_Item.Hue != value ) m_Item.Hue = value; }
		}

		public override void OnDoubleClickDead( Mobile m )
		{
			//************************start (3)***************************
			if(m.CantWalk == false)
			{
				Ankhs.Resurrect( m, this );
			}
			//*************************end (3)****************************
		}

		public override void OnLocationChange( Point3D oldLocation )
		{
			if ( m_Item != null )
				m_Item.Location = new Point3D( X, Y + 1, Z );
		}

		public override void OnMapChange()
		{
			if ( m_Item != null )
				m_Item.Map = Map;
		}

		public override void OnAfterDelete()
		{
			base.OnAfterDelete();

			if ( m_Item != null )
				m_Item.Delete();
		}

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

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

			writer.Write( m_Item );
		}

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

			int version = reader.ReadInt();

			m_Item = reader.ReadItem() as InternalItem;
		}

		private class InternalItem : Item
		{
			private AnkhWest m_Item;

			public InternalItem( bool bloodied, AnkhWest item ) : base( bloodied ? 0x1D97 : 0x2 )
			{
				Movable = false;

				m_Item = item;
			}

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

			public override void OnLocationChange( Point3D oldLocation )
			{
				if ( m_Item != null )
					m_Item.Location = new Point3D( X, Y - 1, Z );
			}

			public override void OnMapChange()
			{
				if ( m_Item != null )
					m_Item.Map = Map;
			}

			public override void OnAfterDelete()
			{
				base.OnAfterDelete();

				if ( m_Item != null )
					m_Item.Delete();
			}

			public override bool HandlesOnMovement{ get{ return true; } } // Tell the core that we implement OnMovement

			public override void OnMovement( Mobile m, Point3D oldLocation )
			{
				//************************start (4)***************************
				if ( Parent == null && Utility.InRange( Location, m.Location, 1 ) && !Utility.InRange( Location, oldLocation, 1 ) && m.CantWalk == false)
					Ankhs.Resurrect( m, this );
				//*************************end (4)****************************
			}

			public override void GetContextMenuEntries( Mobile from, ArrayList list )
			{
				base.GetContextMenuEntries( from, list );
				Ankhs.GetContextMenuEntries( from, this, list );
			}

			[Hue, CommandProperty( AccessLevel.GameMaster )]
			public override int Hue
			{
				get{ return base.Hue; }
				set{ base.Hue = value; if ( m_Item.Hue != value ) m_Item.Hue = value; }
			}

			public override void OnDoubleClickDead( Mobile m )
			{
				//************************start (5)***************************
				if(m.CantWalk == false)
				{
					Ankhs.Resurrect( m, this );
				}
				//*************************end (5)****************************
			}

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

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

				writer.Write( m_Item );
			}

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

				int version = reader.ReadInt();

				m_Item = reader.ReadItem() as AnkhWest;
			}
		}
	}

	public class AnkhEast : Item
	{
		private InternalItem m_Item;
		

		[Constructable]
		public AnkhEast() : this( false )
		{
		}

		[Constructable]
		public AnkhEast( bool bloodied ) : base( bloodied ? 0x1E5D : 0x4 )
		{
			Movable = false;

			m_Item = new InternalItem( bloodied, this );
		}

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

		public override bool HandlesOnMovement{ get{ return true; } } // Tell the core that we implement OnMovement

		public override void OnMovement( Mobile m, Point3D oldLocation )
		{
			//************************start (6)***************************
			if ( Parent == null && Utility.InRange( Location, m.Location, 1 ) && !Utility.InRange( Location, oldLocation, 1 ) && m.CantWalk == false)
				Ankhs.Resurrect( m, this );
			//*************************end (6)****************************
		}

		public override void GetContextMenuEntries( Mobile from, ArrayList list )
		{
			base.GetContextMenuEntries( from, list );
			Ankhs.GetContextMenuEntries( from, this, list );
		}

		[Hue, CommandProperty( AccessLevel.GameMaster )]
		public override int Hue
		{
			get{ return base.Hue; }
			set{ base.Hue = value; if ( m_Item.Hue != value ) m_Item.Hue = value; }
		}

		public override void OnDoubleClickDead( Mobile m )
		{
			//************************start (7)***************************
			if(m.CantWalk == false)
			{
				Ankhs.Resurrect( m, this );
			}
			//*************************end (7)****************************
		}

		public override void OnLocationChange( Point3D oldLocation )
		{
			if ( m_Item != null )
				m_Item.Location = new Point3D( X + 1, Y, Z );
		}

		public override void OnMapChange()
		{
			if ( m_Item != null )
				m_Item.Map = Map;
		}

		public override void OnAfterDelete()
		{
			base.OnAfterDelete();

			if ( m_Item != null )
				m_Item.Delete();
		}

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

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

			writer.Write( m_Item );
		}

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

			int version = reader.ReadInt();

			m_Item = reader.ReadItem() as InternalItem;
		}

		private class InternalItem : Item
		{
			private AnkhEast m_Item;

			public InternalItem( bool bloodied, AnkhEast item ) : base( bloodied ? 0x1E5C : 0x5 )
			{
				Movable = false;

				m_Item = item;
			}

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

			public override void OnLocationChange( Point3D oldLocation )
			{
				if ( m_Item != null )
					m_Item.Location = new Point3D( X - 1, Y, Z );
			}

			public override void OnMapChange()
			{
				if ( m_Item != null )
					m_Item.Map = Map;
			}

			public override void OnAfterDelete()
			{
				base.OnAfterDelete();

				if ( m_Item != null )
					m_Item.Delete();
			}

			public override bool HandlesOnMovement{ get{ return true; } } // Tell the core that we implement OnMovement

			public override void OnMovement( Mobile m, Point3D oldLocation )
			{
				//************************start (8)***************************
				if ( Parent == null && Utility.InRange( Location, m.Location, 1 ) && !Utility.InRange( Location, oldLocation, 1 ) && m.CantWalk == false)
					Ankhs.Resurrect( m, this );
				//*************************end (8)****************************
			}

			public override void GetContextMenuEntries( Mobile from, ArrayList list )
			{
				base.GetContextMenuEntries( from, list );
				Ankhs.GetContextMenuEntries( from, this, list );
			}

			[Hue, CommandProperty( AccessLevel.GameMaster )]
			public override int Hue
			{
				get{ return base.Hue; }
				set{ base.Hue = value; if ( m_Item.Hue != value ) m_Item.Hue = value; }
			}

			public override void OnDoubleClickDead( Mobile m )
			{
				//************************start (9)***************************
				if(m.CantWalk == false)
				{
					Ankhs.Resurrect( m, this );
				}
				//*************************end (9)****************************
			}

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

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

				writer.Write( m_Item );
			}

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

				int version = reader.ReadInt();

				m_Item = reader.ReadItem() as AnkhEast;
			}
		}
	}
}

Code:
/*
Author		: Unknown
Last Modified	: One Eyed Jack
Created 	: Unknown
Modified	: 30/05/05
File Name	: \Gumps\RessurectGump.cs

Classes Used	: 

Methods		: 

Description	: This code displays and handles the events of the resurrection
		  menus. 

Modifications?	: (1)
		  This code was added. This makes it so the person cannot walk 
		  once the res menu is called to be displayed. This is used to 
		  help fix the freeze on death issue with the 4.0.10b client.
		  
		  (2)
		  This code was added. This makes it so the person can walk 
		  once the res menu is closed. This is used to help fix the 
		  freeze on death issue with the 4.0.10b client.
*/

using System;
using Server;
using Server.Gumps;
using Server.Network;
using Server.Mobiles;

namespace Server.Gumps
{
	public enum ResurrectMessage
	{
		ChaosShrine = 0,
		VirtueShrine = 1,
		Healer = 2,
		Generic = 3,
	}

	public class ResurrectGump : Gump
	{
		private Mobile m_Healer;
		private int m_Price;

		public ResurrectGump( Mobile owner ) : this( owner, owner, ResurrectMessage.Generic )
		{
		}

		public ResurrectGump( Mobile owner, Mobile healer ) : this( owner, healer, ResurrectMessage.Generic )
		{
		}

		public ResurrectGump( Mobile owner, ResurrectMessage msg ) : this( owner, owner, msg )
		{
		}

		public ResurrectGump( Mobile owner, Mobile healer, ResurrectMessage msg ) : base( 100, 0 )
		{
			//************************start (1)***************************
			owner.CantWalk = true;
			//*************************end (1)****************************
		
			m_Healer = healer;

			AddPage( 0 );

			AddBackground( 0, 0, 400, 350, 2600 );

			AddHtmlLocalized( 0, 20, 400, 35, 1011022, false, false ); // <center>Resurrection</center>

			AddHtmlLocalized( 50, 55, 300, 140, 1011023 + (int)msg, true, true ); /* It is possible for you to be resurrected here by this healer. Do you wish to try?<br>
																				   * CONTINUE - You chose to try to come back to life now.<br>
																				   * CANCEL - You prefer to remain a ghost for now.
																				   */

			AddButton( 200, 227, 4005, 4007, 0, GumpButtonType.Reply, 0 );
			AddHtmlLocalized( 235, 230, 110, 35, 1011012, false, false ); // CANCEL

			AddButton( 65, 227, 4005, 4007, 1, GumpButtonType.Reply, 0 );
			AddHtmlLocalized( 100, 230, 110, 35, 1011011, false, false ); // CONTINUE
		}

		public ResurrectGump( Mobile owner, Mobile healer, int price ) : base( 150, 50 )
		{
			m_Healer = healer;
			m_Price = price;

			Closable = false;

			AddPage( 0 );

			AddImage( 0, 0, 3600 );

			AddImageTiled( 0, 14, 15, 200, 3603 );
			AddImageTiled( 380, 14, 14, 200, 3605 );

			AddImage( 0, 201, 3606 );

			AddImageTiled( 15, 201, 370, 16, 3607 );
			AddImageTiled( 15, 0, 370, 16, 3601 );

			AddImage( 380, 0, 3602 );

			AddImage( 380, 201, 3608 );

			AddImageTiled( 15, 15, 365, 190, 2624 );

			AddRadio( 30, 140, 9727, 9730, true, 1 );
			AddHtmlLocalized( 65, 145, 300, 25, 1060015, 0x7FFF, false, false ); // Grudgingly pay the money

			AddRadio( 30, 175, 9727, 9730, false, 0 );
			AddHtmlLocalized( 65, 178, 300, 25, 1060016, 0x7FFF, false, false ); // I'd rather stay dead, you scoundrel!!!

			AddHtmlLocalized( 30, 20, 360, 35, 1060017, 0x7FFF, false, false ); // Wishing to rejoin the living, are you?  I can restore your body... for a price of course...

			AddHtmlLocalized( 30, 105, 345, 40, 1060018, 0x5B2D, false, false ); // Do you accept the fee, which will be withdrawn from your bank?

			AddImage( 65, 72, 5605 );

			AddImageTiled( 80, 90, 200, 1, 9107 );
			AddImageTiled( 95, 92, 200, 1, 9157 );

			AddLabel( 90, 70, 1645, price.ToString() );
			AddHtmlLocalized( 140, 70, 100, 25, 1023823, 0x7FFF, false, false ); // gold coins

			AddButton( 290, 175, 247, 248, 2, GumpButtonType.Reply, 0 );

			AddImageTiled( 15, 14, 365, 1, 9107 );
			AddImageTiled( 380, 14, 1, 190, 9105 );
			AddImageTiled( 15, 205, 365, 1, 9107 );
			AddImageTiled( 15, 14, 1, 190, 9105 );
			AddImageTiled( 0, 0, 395, 1, 9157 );
			AddImageTiled( 394, 0, 1, 217, 9155 );
			AddImageTiled( 0, 216, 395, 1, 9157 );
			AddImageTiled( 0, 0, 1, 217, 9155 );
		}

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

			from.CloseGump( typeof( ResurrectGump ) );

			if ( info.ButtonID == 1 || info.ButtonID == 2 )
			{
				if ( from.Map == null || !from.Map.CanFit( from.Location, 16, false, false ) )
				{
					from.SendLocalizedMessage( 502391 ); // Thou can not be resurrected there!
					return;
				}

				if ( m_Price > 0 )
				{
					if ( info.IsSwitched( 1 ) )
					{
						if ( Banker.Withdraw( from, m_Price ) )
						{
							from.SendLocalizedMessage( 1060398, m_Price.ToString() ); // ~1_AMOUNT~ gold has been withdrawn from your bank box.
							from.SendLocalizedMessage( 1060022, Banker.GetBalance( from ).ToString() ); // You have ~1_AMOUNT~ gold in cash remaining in your bank box.
						}
						else
						{
							from.SendLocalizedMessage( 1060020 ); // Unfortunately, you do not have enough cash in your bank to cover the cost of the healing.
							return;
						}
					}
					else
					{
						from.SendLocalizedMessage( 1060019 ); // You decide against paying the healer, and thus remain dead.
						return;
					}
				}

				from.PlaySound( 0x214 );
				from.FixedEffect( 0x376A, 10, 16 );

				from.Resurrect();

				if ( m_Healer != null && from != m_Healer )
				{
					VirtueLevel level = VirtueHelper.GetLevel( m_Healer, VirtueName.Compassion );

					switch ( level )
					{
						case VirtueLevel.Seeker: from.Hits = AOS.Scale( from.HitsMax, 20 ); break;
						case VirtueLevel.Follower: from.Hits = AOS.Scale( from.HitsMax, 40 ); break;
						case VirtueLevel.Knight: from.Hits = AOS.Scale( from.HitsMax, 80 ); break;
					}
				}

				Mobile m = from;

				Misc.Titles.AwardFame( from, -100, true ); // TODO: Proper fame loss

				if ( !Core.AOS && from.ShortTermMurders >= 5 )
				{
					double loss = (100.0 - ( 4.0 + (from.ShortTermMurders/5.0))) / 100.0;//5 to 15% loss
					if ( loss < 0.85 )
						loss = 0.85;
					else if ( loss > 0.95 )
						loss = 0.95;

					if ( from.RawStr * loss > 10 )
						from.RawStr = (int)(from.RawStr * loss);
					if ( from.RawInt * loss > 10 )
						from.RawInt = (int)(from.RawInt * loss);
					if ( from.RawDex * loss > 10 )
						from.RawDex = (int)(from.RawDex * loss);

					for (int s=0;s<from.Skills.Length;s++)
					{
						if ( from.Skills[s].Base * loss > 35 )
							from.Skills[s].Base *= loss;
					}
				}
			}
			
			//************************start (2)***************************
			from.CantWalk = false;
			//*************************end (2)****************************
		}
	}
}
As you can see, the amount of code that was added is quite minimal. I will be fixing the resurrect spell shortly.
One Eyed Jack is offline  
Old 05-31-2005, 12:32 AM   #2 (permalink)
 
Join Date: Aug 2004
Age: 31
Posts: 546
Default

+1 rep, thx for the update.
Memnoch is offline  
Old 05-31-2005, 05:48 AM   #3 (permalink)
Forum Expert
 
Tintamar's Avatar
 
Join Date: Feb 2005
Location: USA
Age: 30
Posts: 335
Default

I see this is for the Ressurection part of the gumps but there is more then just ressurecting thats theres a problem with and was just curious if you have made a fix for that also.

ANY gump that is opened over and over will cause a player to lose connection because they exceed the gump limit.

For example drop a ton of bods on bod book over and over filling it and you will get disconnected due to exceeding the gump limit.
Playing Aryas chess will boot people off also.
There is runebook gump problems occasionaly when you take a rune out of a rook then try to drop rune on book to put it in it, it will say you can not do that by view the contents or something like that.

Nice fix on the freeze though Im sure people getting sick of logging off and back on to unfreeze sometimes
Tintamar is offline  
Old 05-31-2005, 10:31 AM   #4 (permalink)
 
Join Date: Oct 2002
Age: 23
Posts: 4,689
Default

The free bug is more than just that.... it has to do with the fact that when a gump is sent to be closed by the server to the client, the client then in turn presses the cancel button to close the gump. However in the new client version, it doesn't. This change means that the server will think that the gump is still open.

There are two assumptions here then. First off, its a core problem. Next, is that it probably will be in the next RunUO release, and you should be weary of any code you use from the boards.
XxSP1DERxX is offline  
Old 05-31-2005, 05:29 PM   #5 (permalink)
 
Join Date: Aug 2004
Age: 31
Posts: 546
Default

I guess the main reason its nice for people to use code here, is because a lot of people look at the scripts, and if the person is doing something with the intent of jacking up someones server they will get called on it. If this persons fix works short term, then i dont see why we shouldnt use it.
Memnoch is offline  
Old 05-31-2005, 10:52 PM   #6 (permalink)
 
Join Date: Feb 2005
Location: Montreal, QC
Age: 26
Posts: 8
Default

Quote:
Originally Posted by Tintamar
I see this is for the Ressurection part of the gumps but there is more then just ressurecting thats theres a problem with and was just curious if you have made a fix for that also.
Yeah the code I posted only makes it so more than only one ressurection gump can be opened at one time with an ankh and as a result makes it so you do not freeze with the ankg. I haven't really looked at the other problems yet.

Quote:
Originally Posted by Tintamar
ANY gump that is opened over and over will cause a player to lose connection because they exceed the gump limit.

For example drop a ton of bods on bod book over and over filling it and you will get disconnected due to exceeding the gump limit.
Playing Aryas chess will boot people off also.
There is runebook gump problems occasionaly when you take a rune out of a rook then try to drop rune on book to put it in it, it will say you can not do that by view the contents or something like that.
Actually I wasn't really aware of the disconnect problem since no one has complained about it yet lol. That bod one sounds cool and the rune one too. I'll try testing them out.

Quote:
Originally Posted by Tintamar
Nice fix on the freeze though Im sure people getting sick of logging off and back on to unfreeze sometimes
Yeah, the people on the server I'm working on were getting a bit gittery over the freeze thing . Right now I going over the other scripts (like BaseHealer.cs and Ressurection.cs) that use the ResurrectGump class so two res menus won't show up at the same time. Maybe I'll post those up also if people would like. It's really just an if statement added to the code and thats about it.

Thanks for your input btw. It's much appreciated.
One Eyed Jack is offline  
Old 05-31-2005, 11:08 PM   #7 (permalink)
 
Join Date: Feb 2005
Location: Montreal, QC
Age: 26
Posts: 8
Default

Yeah pretty much I just posted up this script because I figured someone might interested in it since the freeze death thing has been annoying quite a few people.

Even if there was no freeze problem I believe the fixes I've done are still useful since they make the ahnk behave properly. No more multiple res gumps opening when some walks to it from the front or back and if someone decides to double click on it like mad.

If anyone needs any explanation on how the these scripts work I will be glad to answer your questions. Any code that I post will be just like the stock scripts that come with RunUO except for the heading I added at the begining with explanations of the changes I made denoted by numbers (#) and the modified or added code in between the ****************()****************.
One Eyed Jack is offline  
Old 05-31-2005, 11:35 PM   #8 (permalink)
Forum Expert
 
Join Date: Oct 2002
Age: 45
Posts: 4,435
Default

This is the type of shard breaking problem that it would be cool to have a "hot fix" posted for so it doesn't get delayed for the next major release.
HellRazor is offline  
Old 06-01-2005, 12:54 AM   #9 (permalink)
RunUO Developer/Demise Person
 
ASayre's Avatar
 
Join Date: Mar 2003
Location: California
Age: 20
Posts: 1,702
Default

This thing, while it fixes the effect of the problem, doesn't fix the underlying bug because the way the client handled a packet changed.
__________________
Andre Sayre, Core Developer
The RunUO Software Team

The day we are born is the day Death inches ever closer...
E-mail: ASayre ( AT ) RunUO ( Dot ) c o m
I'm as graceful as a gazelle galloping over glistening green grass with it's head on fire.
ASayre is offline  
Old 06-01-2005, 02:03 AM   #10 (permalink)
 
Join Date: Feb 2005
Location: Montreal, QC
Age: 26
Posts: 8
Default

Quote:
Originally Posted by ASayre8
This thing, while it fixes the effect of the problem, doesn't fix the underlying bug because the way the client handled a packet changed.
Yes I agree totally and do not make any claims that it fixes the underlying problem. This will only treat one of the many symptoms of the new client,

Even without this packet stuff and the freezing I beleive this ankh code worth using since it improves on the current code which eliminates unwanted ressurect gumps from appearing (ex. moving toward the anhk from the back and front will cause to gump menus to open on top of each other.)
One Eyed Jack is offline  
Old 06-01-2005, 04:13 PM   #11 (permalink)
 
Join Date: Oct 2002
Age: 23
Posts: 4,689
Default

A quick analogy here...
Your putting a small bandaid on a person with multiple severe wounds. It helps that one particular gump, but not EVERY GUMP in RunUO.
XxSP1DERxX is offline  
Old 06-02-2005, 01:10 PM   #12 (permalink)
Forum Novice
 
Join Date: Sep 2004
Posts: 292
Default

I suddenly have a problem on my server today with players being froze after death- any one else having this problem? so this is just an anka problem ?
milva is offline  
Old 06-02-2005, 02:51 PM   #13 (permalink)
Forum Expert
 
Ohms_Law's Avatar
 
Join Date: Sep 2004
Age: 37
Posts: 1,006
Default

Quote:
Originally Posted by XxSP1DERxX
A quick analogy here...
Your putting a small bandaid on a person with multiple severe wounds. It helps that one particular gump, but not EVERY GUMP in RunUO.
comeon guy. That doesn't make writing/using this a bad thing. At least the guy put in some effort at fixing part of the problem, without changing the core. That makes it immediately accessable, and as long as end users put it into their custom folder, they just need to be sure to remove it when RunUO officially gets patched.

To extend your analogy, I would rather a guy standing over me puts the bandage in his hand on me, while he's waiting for his partner to come back with more first aid equipment. Better than just having him sit there and look at me bleed out!
Ohms_Law is offline  
Old 06-02-2005, 10:24 PM   #14 (permalink)
 
Join Date: Oct 2002
Age: 23
Posts: 4,689
Default

The problem is that this will not fix the whole problem.. Once you guys find out how many gumps this affects, you will have a great time trying to hotfix them all. The problem is in the core, and there is no way around it. Plus the code that this person posted isn't the best either.

I am not trying ot bash people... but on the same token, I do not want to see countless newbs complain when 1.0.1 comes out because their gumps are fubared and they dunno how to fix it, or not remembering that they applied this temporary hotfix. Since this is true for the common newbie.. I advise against not using it.

I received this as reptuation -
Freeze On Death Fix 06-01-2005 06:17 PM WHERES YOUR FIX THEN............. STFU moron LOVE DONTDROPTHESOAD

I hope things like that make you feel better, because if you had known the whole situation then you wouldn't have done that. Having a fix doesn't mean that anyone has to release it. And anyone who does have a full fix for this would be smart to not release it because it goes against the idea that the core is not supported, and that you have to deal with people who want to impliment it.
You would have to explain to people how to obtain the core, modify it, and compile it. You could eliminate that by releasing your own modified core, but thats against the license as well. Additionally when RunUO 1.0.1 comes out and they most likely will have the fix, it will be applied differently, and anyone with a modified core will have to undo the changes they did and then apply the RunUO 1.0.1 changes.
People like me who know what the problem is and how to fix it probably already have made the fix for their own personal usage but at the same time wouldn't put themselves in a position to take so much responsibility and headache with having to deal with other people. And I can say for myself, I would not want to deal with this community when I have my own real life to take care of. I also would not want countless private messages, ICQ messages, and AIM messages about this from random people who have no clue what they are doing.

Therefore I say you should just wait for RunUO 1.0.1, and leave it at that. If you want, you can put in this bandaid for now, but make sure to remove it. I WILL flame and bash people who complain and end up forgetting that they added this because they have been warned.
XxSP1DERxX is offline  
Old 06-24-2005, 03:16 PM   #15 (permalink)
 
Join Date: Apr 2004
Age: 27
Posts: 4
Default

Is it possible to determine (from within a script) the core version? If the answer is yes, then why don't you just key this and similar hotfixes to the broken core's version, in such a way that if the script is run under any other version the modified code is bypassed.

Of course, if the core version cannot be determined from within a script... oh well, I tried.
toolfan is offline  
Old 06-26-2005, 08:34 PM   #16 (permalink)
 
Join Date: Oct 2002
Age: 23
Posts: 4,689
Default

It has nothing to do with the core version, but with the client version. Yes you can determine the client version (as well as the core version if you wanted to). What you are saying (unless I am misinterpretting it) has nothing to do with the problem at hand :\ lol But cheers for trying
XxSP1DERxX is offline  
Old 07-22-2005, 03:53 AM   #17 (permalink)
Forum Expert
 
Sunshine's Avatar
 
Join Date: Mar 2005
Location: Hopefully not near you
Posts: 2,233
Default

well I am glad to know it is just not my shard, We suddenly have some players when they die the freeze.. I shall wait word from run ou or for the update to fix this.

I have noticed if they log out and back in it helps..not a great fix but a way to help if staff are not avaible
Sunshine is offline  
Old 08-20-2005, 03:43 AM   #18 (permalink)
Forum Expert
 
Join Date: May 2005
Age: 23
Posts: 274
Default

after modifieing these two it will fix the problem of the freezing on death? also should i keep backup of these to files that are being modified?
shadow17_97038 is offline  
Old 08-20-2005, 04:13 AM   #19 (permalink)
Forum Expert
 
Alis's Avatar
 
Join Date: Jun 2005
Location: Probably where people call it heaven
Posts: 1,452
Send a message via AIM to Alis Send a message via MSN to Alis
Default

allways backup ofcourse..
Alis is offline  
Old 09-21-2005, 04:23 AM   #20 (permalink)
 
Join Date: Sep 2005
Location: Germany (Dresden)
Age: 28
Posts: 10
Default

hmm, i think this modification work if the player get frozen after or by resurection.

but, we still using runuo 1.0 RC and our player have the problem, that they get frozen on death, they cann't walk to a healer or ankh until they relogging in.

i think, it could be the same proplem perhaps with a other gump too.
do somebody knows this bug and can help fix it?
Arthur Drakonis is offline  
 

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 RC5