|
||
|
|||||||
| Custom Script Release Archive This is a pre-script database archive of what our users had released. |
|
|
Thread Tools | Display Modes |
|
|
#1 (permalink) |
|
Join Date: Feb 2005
Location: Montreal, QC
Age: 26
Posts: 8
|
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)****************************
}
}
}
|
|
|
|
|
#3 (permalink) |
|
Forum Expert
Join Date: Feb 2005
Location: USA
Age: 30
Posts: 335
|
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 ![]() |
|
|
|
|
#4 (permalink) |
|
Join Date: Oct 2002
Age: 23
Posts: 4,689
|
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. |
|
|
|
|
#5 (permalink) |
|
Join Date: Aug 2004
Age: 31
Posts: 546
|
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.
|
|
|
|
|
#6 (permalink) | |||
|
Join Date: Feb 2005
Location: Montreal, QC
Age: 26
Posts: 8
|
Quote:
Quote:
Quote:
. 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. |
|||
|
|
|
|
#7 (permalink) |
|
Join Date: Feb 2005
Location: Montreal, QC
Age: 26
Posts: 8
|
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 ****************()****************. |
|
|
|
|
#9 (permalink) |
|
RunUO Developer/Demise Person
Join Date: Mar 2003
Location: California
Age: 20
Posts: 1,702
|
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. |
|
|
|
|
#10 (permalink) | |
|
Join Date: Feb 2005
Location: Montreal, QC
Age: 26
Posts: 8
|
Quote:
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.) |
|
|
|
|
|
#13 (permalink) | |
|
Forum Expert
Join Date: Sep 2004
Age: 37
Posts: 1,006
|
Quote:
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! ![]() |
|
|
|
|
|
#14 (permalink) |
|
Join Date: Oct 2002
Age: 23
Posts: 4,689
|
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. |
|
|
|
|
#15 (permalink) |
|
Join Date: Apr 2004
Age: 27
Posts: 4
|
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. ![]() |
|
|
|
|
#16 (permalink) |
|
Join Date: Oct 2002
Age: 23
Posts: 4,689
|
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
![]() |
|
|
|
|
#17 (permalink) |
|
Forum Expert
Join Date: Mar 2005
Location: Hopefully not near you
Posts: 2,233
|
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 |
|
|
|
|
#20 (permalink) |
|
Join Date: Sep 2005
Location: Germany (Dresden)
Age: 28
Posts: 10
|
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? |
|
|
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|