Page 1 of 1
-->IMPORTANT FEATURE REQ <--
Posted: Fri Jan 03, 2003 7:16 pm
by SingleServing
Latency Variables
maybe even Global Latency Variables (ie #turbo)
You got everything mapped out in your head and it works perfectly on paper but then you try it out and it screws up! Why? You had a lag spike arg!
If you can determine the in game latency you might be able to account for this by decreasing the turbo or even adding delays (/delay v03). This is important for almost ALL macros. If your trying to combine something for trade skills and the Kiln is not combining as fast as your macro thinks it should your dead in water. If you cast a spell on something and it doesn't hit for 5 seconds because of lag your macro might even think the spell was never cast when infact it did.
Soo many things would this fix!
Their are some ways to account for lag but not all are fool proof, and most are pretty flawed...this might be a very reasonable fix.
Posted: Fri Jan 03, 2003 8:15 pm
by Imperfect
This is already done. Event triggered macros. Try it you'll love it.
Posted: Fri Jan 03, 2003 8:50 pm
by rizwank
Posted: Sat Jan 04, 2003 12:13 am
by SingleServing
Imperfect wrote:This is already done. Event triggered macros. Try it you'll love it.
Not everything gives you a message. If I'm at max casting range and nuke something I don't get a message unless it is resisted.
IE, I have a macro that at max range (with improved range 3) will slow a mob, usually you get something like "A giant rat yawns." However, at ~230 distance away you don't receive this message.
So to make sure that nothing went Fubar after casting this spell I assist my target and make sure I am the one #1 baddie on his list.
Code: Select all
/target baddie
/varset tID $target(id)
/call cast SlowingInsects
/assist
/if n $target(id)==$tID /goto :TryAgain
The problem with the above psuedo code (or one of them) is the assist does not change targets instantly esp with lag. You must add a second or two of delay, to make this work correctly. Sometimes a second is plenty sometimes its too much if the mob moves closer to you while casting and gets a head start... and thus the ability to dynamically change delays based on lag.
I know what events are and use them frequently

This is retrieving the in game latency, and packet loss. Then applying them to an equation to set delays and possibly alter the turbo of the macro.
workaround
Posted: Tue Jan 07, 2003 1:18 am
by Phantal
Maybe if I get bored sometime I'll try to find the offset for this for you ... i've been intending to find it for stuff I've wanted to do anyway.
In the meantime you could set it up to check the distance to make sure nothing goes awry.
For example, let's say the range on the spell you intend to cast is 200 feet, and you have a focus effect that raises your effective casting range by 15%, making your new effective casting range for 200 range spells 230 feet.
Code: Select all
:TryCast
/delay 0
/cast $CurrentSpell
/if n "$target(distance)"<"230.01" /if n "$char(gem,1)"=="-2" /goto :TryCast
Now, that won't work right now because there's a bug with $char(gem,xxx). When a spell is unuseable either due to recast time, or because another spell is being cast, it should return -2. However, right now under all circumstances, $char(gem,xxx) is returning 0 if the slot is empty, and the name of the spell in that slot if it is not empty.
Also note that you will always receive a message if you were too far away when the spell was supposed to land ... it might come late if your lagged, but it'll come.
-Phantal
Re: workaround
Posted: Tue Jan 07, 2003 4:05 am
by SingleServing
Phantal wrote:Maybe if I get bored sometime I'll try to find the offset for this for you ... i've been intending to find it for stuff I've wanted to do anyway.
In the meantime you could set it up to check the distance to make sure nothing goes awry.
For example, let's say the range on the spell you intend to cast is 200 feet, and you have a focus effect that raises your effective casting range by 15%, making your new effective casting range for 200 range spells 230 feet.
Code: Select all
:TryCast
/delay 0
/cast $CurrentSpell
/if n "$target(distance)"&"230.01" /if n "$char(gem,1)"=="-2" /goto :TryCast
Now, that won't work right now because there's a bug with $char(gem,xxx). When a spell is unuseable either due to recast time, or because another spell is being cast, it should return -2. However, right now under all circumstances, $char(gem,xxx) is returning 0 if the slot is empty, and the name of the spell in that slot if it is not empty.
Also note that you will always receive a message if you were too far away when the spell was supposed to land ... it might come late if your lagged, but it'll come.
-Phantal
I sat and watched my macro for about a half hour and I think I found one of my problems. The person (or persons) that made several of the zones Kunark placed a spawn point for mobs that were below the surface, so my macro is trying to target these mobs and cast of them. Then runs back expecting something to come but it never does, then it cancels out and restarts the loop... it then selects the same mob and goes in circle like this until something else spawns.
I also have been /assisting mobs I cast on to make sure they are targeting me or my pet to prevent this however casting range being 230, assist range is approx 150 or less so this also creates a problem. I added a pause to wait for them to come closer but that doesn't help if they can't move at all in the first place.
My crap fix has been to black ball specific ID's in zones. Just an FYI for you hunter macro people.
Posted: Tue Jan 07, 2003 10:26 am
by S_B_R
If you cast on a Mob that is at max range, and you do not get a success message, that means the spell landed successfully. Only failures like: Resist, fizzle, or out-of-range are sent at max range. There really isn't a reason to check if the spell landed, you need only check to make sure it did not fail.
...I think... ... ...works for me at least...

Posted: Tue Jan 07, 2003 10:49 am
by lifewolf
S_B_R wrote:If you cast on a Mob that is at max range, and you do not get a success message, that means the spell landed successfully. Only failures like: Resist, fizzle, or out-of-range are sent at max range. There really isn't a reason to check if the spell landed, you need only check to make sure it did not fail.
...I think... ... ...works for me at least...

You dont get any message whatsoever if you cast on non-attackable NPCs (like invis triggers) either, so you cant tell if the NPC your casting on is secepable.. sp.. to being attacked.
Your average hunting macro would stand there and try to hit / cast on this non-killable NPC and hang so thats no good. However if you know you have no lag, after 5 seconds you can find a new target and go on your way heh.
Posted: Tue Jan 07, 2003 11:43 am
by S_B_R
I see, I misunderstood the actual problem. :)
Good
Posted: Fri Jan 10, 2003 8:33 pm
by SingleServing
Well said wolfy, also look out for the invisible man "Pain And Suffering" he's a real bitch =)