Page 1 of 1

HOWTO: Ability Tracker

PostPosted: 26 May 2022, 23:09
by Kannkor
What is it?

It is to track the cool down on abilities, to be used on outside sources, such as MCP or side scripts. For this example, we'll be looking primarily at MCP.


What is it used for?
MCP -> For tracking the reuse of abilities
Sidescripts -> For knowing the details of abilities, generally NOT from yourself (IE: Group mates)


Quick example of it in action
So... here is a small picture of my MCP
Tower (for Tower of Stone, a defensive), Perfect (Perfect Counter), etc etc. Down that row, we have "CoB" for dirges Cocaphony of blades.. BoO for Bulwark of Order... You get the point....
Image

You can now have it tell you, on your MCP button, the reuse of abilities. Including for abilities of other people! Such as this.
Image

How to use it
On the settings tab, you need to enable it. This will allow the sending of your ability data to OgreConsole (invisible).
Image

Fill out the Ability Tracker tab with which abilities you want to tell everyone about. I'd recommend only adding in the abilities you actually care about, because this will check every ability in this list twice a second to provide updates. If you go crazy, you could hurt your performance. but how much.. no idea.
Image

That's it.
On your MCP, any button that has a Command that has been established to work with this system, will automatically work.
The following are the ones (at the time of writing this) that work.
Code: Select all
Cast..
CastAbilityOnNPC
Cancel_Cast..
Cancel_CastOn..



How to use this information in a side script.
This uses an OgreEvent to pass the data. Simply attach to the event OgreEvent_OnAbilityReadyTimersUpdate, and you can do anything you want with the data.
Here's a quick example. I always use objects, but you aren't required too, you can use atoms also.

Attach to the event.
Code: Select all
Event[OgreEvent_OnAbilityReadyTimersUpdate]:AttachAtom[This:OgreEvent_OnAbilityReadyTimersUpdate]


Then do something. In this example, we just echo out the data.
Code: Select all
method OgreEvent_OnAbilityReadyTimersUpdate(string _Toon, int64 _AbilityID=0, string _AbilityName="", float _TimeUntilReady=0)
{
        echo ${Time}: OgreEvent_OnAbilityReadyTimersUpdate: ${_Toon} ability ${_AbilityName} with ID ${_AbilityID} is ready in: ${_TimeUntilReady}
}

One thing to note: _AbilityName will always be the BASE name of the ability. IE: Kick, NOT Kick IV.