+ Reply to Thread
Results 1 to 5 of 5

Thread: Misc queries about addon development...

  1. #1
    Telaran
    Join Date
    Mar 2012
    Posts
    72

    Default Misc queries about addon development...

    Hi,

    I've started work on an addon to act as healing frames, as I've a number of frustrations with what seems to be available right now. (I'm far too used to VuhDo, although VuhDo has configurabilty far beyond what I need)

    Before I started the work, I did look around at what's out there, and the closest to what I wanted was Rift Healer, but the dev for that has stopped playing, someone else has said they're going to take it over though, but I don't think they've had much time yet.

    I did try to workout if I could put the functionality I want into Rift Healer, but concluded it's be quite hard to understand someone elses code and thought processes. I also though it'd be interesting to learn by writing the code from the ground up, so that's what I've done. I think I've made a reasonable job of being object based, so that I'm building things up as objects, eg I've layouts, which contain panels (a panel is a player/pet), the panels then contain the bars, buff/debuffs icons, role icon, name etc etc.

    This means eventually I can have multiple layouts on screen, eg a standard group 1-20, a tank layout, a pet layout, etc. The panels all hook back into some tables which are accessed by unitId, and so events for unitIds are routed to the panels quickly.

    So far it's come far enough that click healing works (5 buttons + scroll wheel) and modifiers, it shows health and mana/energy bars, along with current/max/percentage for the bars, which doesn't feel too bad for a days worth of coding. (I did use Safe's Raid Manager to handle the wierd mess of am I in a group or not...)

    I'm hoping that event driven will work, I maybe being naive to think that'll actually work in a raid, but hopefully people will try it out and tell me. So far it appears to be lightweight, bCPU shows it idles around 0.1-0.2% CPU, while Rift Healer is 7-8% idle with just me and 1 other person in the group, and I'm just stood in Meridian...

    I'm hoping to have some kind of alpha version this week. I suspect I may spend longer writing UI code to allow things to be configured, rather than the core engine code, however, right now I've a hard coded config that builds one layout of panels, and pre-defined spells list for (for my leveling purifier/sentinal).

    So onto my queries:

    Query 1:
    Next on my list to tackle is tracking multiple Hots/debuffs, eg as a purifier, I want to show in a clear way my "Ward of the Ancestors" and "Latent Blaze", and the debuffs that block them being recast on a target, so I know I can't cast it again.

    My current feeling is to have the buff icon, with a coloured border indicating if the buff is up or blocked, and hopefully the count-down on it (showing the count-down worries me as I end up with a timer then, and I'd prefer not to have a timed event, but needs must etc). Eg Green means the buff/hot is up, and can be recast, yellow means it's up, but can't be recast, red is it's down and can't be recast.

    I'm wondering if anyone has suggestions about efficient ways to track the buffs, eg is there a spellid or equiv that I can look up, or do I have to process the event.buff.* events, and filter out what I want to know?

    I'm assuming in a 20 man raid, there's a lot of buff events around, so efficiency is going to be important. The current interface doesn't look that efficient, as it sends add/change/remove events, with a buffid, but then it looks like you have to get the buffdetails for a player, so you end up calling back to native for that info (but I might be mis-reading the event api)

    Query 2:
    Is there a quick way to know someone is poisoned etc, or do I have to count the debuffs from the events, and watch them as they inc/decrement.

    Query 3:
    While creating the script to run on clicks I can mark a /cast as ctrl, alt or shift, however, I can't see how to make something only be run when there's no modifier, eg:
    /cast [ctrl] @player Healing Breath
    /cast @player Healing Spray

    if you hold ctrl while clicking, and Healing Breath is on cooldown it cast Healing Spray, which makes it harder to line up for Healing Breath coming off cd.

    Query 4:
    Is there a way to display text/font similar to that on bits of the native UI, where the font has a black border around the text, it provides a nice contrast no matter what background colours the text is on-top of.

    Query 5:
    Is there a way to find out some of the built-in icon names? eg I'd like to show a role icon, and reuse the in-game icons, as anything I draw will be rubbish, and it'd seem a shame to look inconsistent with the rest of the UI.

    Query 6:
    How do I package the addon up when I'm ready for some people to try it out? Currently I'm using a local SVN repository, so I can at least have some change tracking (and ability to revert changes when I break stuff). Ideally I'd like to move the repository somewhere else, and have something that can build releases. Or do I go with a short term method of zipping and uploading?

    Thanks for reading this wall of text
    Mere

  2. #2
    RIFT Community Ambassador the_real_seebs's Avatar
    Join Date
    Jan 2011
    Posts
    16,859

    Default

    RiftUI has svn hosting, I believe Curse does too.
    You can play WoW in any MMO. You don't have to play WoW in RIFT. Oh, and no, RIFT is not a WoW clone. Not having fun any more? Learn to play, noob! I don't speak for Riftui, but I moderate stuff there. Just came back? Welcome back! Here's what's changed. (Updated for 2.5!)

  3. #3
    Plane Walker Kreiri's Avatar
    Join Date
    Feb 2011
    Posts
    402

    Default

    Query 2:
    Is there a quick way to know someone is poisoned etc, or do I have to count the debuffs from the events, and watch them as they inc/decrement.
    in your Event.Buff.Add check for curse/disease/poison fields in table returned by Inspect.Buff.Detail.
    --Edit
    If not in Buff.* handler, get buff list of unit and call Inspect.Buff.Detail on that list. check result for buffs with curse/disease/poison fields.

    Query 4:
    Is there a way to display text/font similar to that on bits of the native UI, where the font has a black border around the text, it provides a nice contrast no matter what background colours the text is on-top of
    Make another text frame with same text, set it to darker font color, move it behind your text and a couple of pixels to the side. You can see this effect in Kreiri's Buff Bars settings UI. If you plan to change your text (i.e. it's not a static label), you'll have to store reference to this "shadow" text frame and update its text accordingly.

    Query 5:
    Is there a way to find out some of the built-in icon names? eg I'd like to show a role icon, and reuse the in-game icons, as anything I draw will be rubbish, and it'd seem a shame to look inconsistent with the rest of the UI.
    ftp://ftp.trionworlds.com/rift/assets/ has ability icons, items icons, maybe there are soul icons somewhere.
    Last edited by Kreiri; 03-13-2012 at 04:23 AM.
    Feminism is the radical notion that women are people.

  4. #4
    Telaran
    Join Date
    Mar 2012
    Posts
    72

    Default

    Well I've got far enough now that I actually healled an instance . Screenshot of it in action:
    Misc queries about addon development...-frames_in_action.jpg

    It's at the top left, rift healer was available just in case mine went wrong (which it didn't)

    The UI is showing Healing Spray as the top right buff, then Ward of the Ancestors/Ancestral Slumber as a buff/debuff pair (hard to tell but there's a yellow border showing that the buff and debuff are both present.

    Having run an instance a few things are missing:
    * no aggro indicator - useful if dps pull something...
    * no poison/curse/disease indicator (I've got the counters, just not hooked them up to a UI piece yet)
    * role letter needs to be more more visible (probably background it with the role colour)
    * energy bars should be a different colour (or even hidden), and the text hidden, as they change so fast, the changing text is a little distracting.
    * player names need adding
    * no LoS indicator

    Two annoying issues:
    * Inspect.Unit.Lookup doesn't always work/return everything when the player has just joined the party
    ----Edit: Of course I meant doesn't always work. I need to look at this more closely and see if I've just got things a bit mixed up, or I'm not using event.unit.available properly.
    * handling group join/leaves while in combat breaks in fun ways at the moment (from what I can see there isn't a sane API around party/group members (unless I've missed something))
    Last edited by Mere; 03-13-2012 at 06:06 PM. Reason: re-reading I spotted a missing word :)

  5. #5
    RIFT Community Ambassador the_real_seebs's Avatar
    Join Date
    Jan 2011
    Posts
    16,859

    Default

    There has been talk of giving us a frame or two of semi-secure state where we can update frames during combat when things like that happen.
    You can play WoW in any MMO. You don't have to play WoW in RIFT. Oh, and no, RIFT is not a WoW clone. Not having fun any more? Learn to play, noob! I don't speak for Riftui, but I moderate stuff there. Just came back? Welcome back! Here's what's changed. (Updated for 2.5!)

+ Reply to Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts