HTML5 Do/Dofree/Dorepeat Queue

And he said, BEHOLD, I have given unto thee the do queue, that thou mayst go forth and own in the comfort of the client of thine own choosing, even if it be HTML5.

The serverside queue is great. It significantly reduces the impact of lag and, if you use CONFIG USEQUEUEING ON, you can kinda sorta use it like a do queue.

A lot of people seem confused about how the serverside queue works. Every time you get balance and equilibrium, every command in your EQBAL queue fires. If you use CONFIG USEQUEING ON, any commands that take balance after the first will run and fail and automatically get added to the queue (just like when you try to do something off-balance). This gets you behaviour kinda sorta like a do queue.

But only kinda-sorta.

Try to queue up "jab rat" three times and it'll work just fine. Try to queue up "envenom rapier delphinium", "jab Tael", "envenom rapier voyria", "jab Tael", "envenom rapier curare", "jab Tael", and it'll jab me with delphinium, then immediately slap on a coat of voyria then a coat of curare, then jab me on the next balance (curare), then jab me on the third balance (voyria). This is probably not what you wanted to do! And heaven help you if you are, for instance, a jester trying to use the queue to envenom and throw a series of knives.

What you need is a do queue!

Executive summary:
This script is a do/dofree/dorepeat queue. It works like the SVO do queue in pretty much every way. Every time you get balance and equilibrium back, everything in the dofree queue will go off, then the next thing in the do queue will go off. You can use dorepeat to toggle repeating something forever (usually used for bashing). It uses serverside queueing intelligently so lag shouldn't be an issue (unless your ping is longer than the balance times of the actions you have queued up).

Installation:
Import by unzipping the .js file, clicking the gear in the lower right corner of the client, changing to the Reflex Packages tab, and dragging the .js file into the indicated space.

Instructions:
Instructions, an alias reference, and an API can be found in a gigantic comment at the top of the onLoad function (go to the Reflexes tab, change the drop-down menu to Queue, and click "onLoad").

Notes:
  • I tested this a fair amount and everything seems to be working, but let me know if any bugs pop up.
  • I prefer not to have echos for things like this (since none of the commands can "fail", if I press a bind or use an alias, I already know what happened), but they should be easy to add if you want them (just add them to the aliases).
  • It does not expand client aliases like SVO. I might add this feature later, once I can figure out how, but don't count on it.
  • It doesn't know about web/broken arms/etc. If you try to do something, but it fails and you don't end up using balance, you need to DONEXT to get it going again. I'll probably add a timer like in SVO at some point, but for now you need to DONEXT or do something else that will consume balance.

Comments

  • UtianimaUtianima Norway and Austria
    edited April 2017
    I am having trouble installing this. Gives me the following error:

    Error in Function [onGMCP]:
    ReferenceError: queue is not defined

    The IIFE in onLoad() seems right to me, but I have no experience with scripting for nexus (just know JavaScript, not how nexus handles reflex packages). I have messaged Tael, but since I do not know if he's active, I am also posting here in case anyone knows the answer to this, or have an up to date version of this script. Thanks in advance for any help :)

  • UtianimaUtianima Norway and Austria
    I got it fixed. You need to change the 'var queue' to 'client.queue' (do NOT change to 'var client.queue' - the var is not needed anymore).

    This seems to be due to client being a recent global variable implementation in Nexus.

Sign In or Register to comment.