• 0

    posted a message on Skillet - the lilsparky branch
    Aha! Thanks, I just didn't go back quite far enough by 1 page.

    Kind of annoying that the option is per-tradeskill (is it per-character too or global?). At least now that I know where to look I can change that to default to on.

    EDIT: Never mind, looks like you already changed the default ;)
    The tooltip should help, I do remember mousing over that button to see what it was, but at the time the tooltip only seemed to indicate that it would show / hide recipes themselves.
    Posted in: General AddOns
  • 0

    posted a message on Shepherd - Official Thread
    I'll look into adding this (this blizzard ones anyway, don't have much experience with oRA). In the meantime you can always use the 'except by specific players' option on your rules to exclude them by name. It's not quite as convenient since you have to change it for each raid, but it should do what you want.

    EDIT: On second though a better way might be to create a new rule at the top of your list. Call it 'Main Tanks'. Set the message to display on your local chat frame only, and make sure the 'Stop Here' is checked. Set the filter to alert you when Specific Player(s) break CC by anyone, and put the main tank or tanks' name in.

    That way you only have to change the name in 1 rule instead of however many other complex ones you have.
    Posted in: General AddOns
  • 0

    posted a message on Skillet - the lilsparky branch
    Quote from Eldavido »

    edit : can't seem to get it to diplay the number of craftables, despite having the li'l box ticked ..... what am i missing / not doing ??

    Man, I'm glad it's not just me. I thought I was going crazy because nobody else had mentioned anything about it.

    In the latest builds it seems that it's not showing the number you can craft (bags / bank / alts) in the main tradeskill window anymore. I've tried every option I can think of but no change. Even tried disabling lilsparkysworkshop in case the prices were covering up the numbers.
    Posted in: General AddOns
  • 0

    posted a message on SPELL_AURA_APPLIED: No source args?
    I suppose it could be filtered, though IMO SPELL_CAST_SUCCESS would be more useful anyway. Spells can be pushed back, interrupted, canceled, etc. The casting time is uncertain in any event due to factors like talents, spell haste, buffs like Heroism, and so on.

    You can already monitor cast progress for raid members with the UNIT_SPELLCAST_* events, but of course those aren't combat log events so they don't include GUIDs.
    Posted in: Lua Code Discussion
  • 0

    posted a message on SPELL_AURA_APPLIED: No source args?
    Does SPELL_CAST_SUCCESS fire for other people besides the player? If so, I wasn't aware of that.

    Yes, it does. It fires for everyone you're in range of the combat log for, even enemies. It typically only fires for instant abilities though, you get SPELL_CAST_START for anything that has a casting time. SPELL_CAST_START doesn't give target information, however, as that could be abused in pvp.

    Why can't Blizzard just make SPELL_AURA_APPLIED return source flags and save us all this trouble? =P

    I honestly think that the mechanics of how auras work internally are a bit messy and would make this tricky, if it's even possible. No proof of that, but just a feeling considering not all auras have a source (or a single source). Especially when you take into account stacking (de)buffs and refreshing auras.

    What I'd really like to see is SPELL_CAST_SUCCESS messages when a non-instant cast completes. I can't think of any good reason that information shouldn't be available.
    Posted in: Lua Code Discussion
  • 0

    posted a message on Standard options for profile management
    Quote from Snago »

    Imo "Default" should be the default profile and addons that have a good reason to use character specific profiles should have to specify this themselves. Most addons I can think of don't really need character specific profiles. Having to set up an addon once per character is only annoying. (This is something I know a lot of people have done with Omen, just because they don't know/understand how to change profiles.)

    I agree with you 100%. I like to keep my UI as consistent as possible between all my characters; there are very few addons I use that actually need to be configured differently per character. Hence I find it highly annoying that Ace3 addons default to per-character settings and I have to remember to switch it over to the 'Default' profile, which results in lots of extra profiles cluttering up the list that I then have to delete. Oh, and I have to do this for every Ace3 addon.

    Yes, an addon author can choose to override the default setting and use an account-wide profile. However this just confuses the issue because it means that addons won't be consistent about whether they're per-character or not. Some don't even give you access to the profile settings at all. IMO, I think RockConfig has the right idea about adding in the profile management options by default, so they're the same across the board.

    That said, the decision has already been made, so I've modified my local copy of AceDB-3.0 to use the profile "Default". Here's how to do it for those who don't like this behavior:

    --- a/Ace3/AceDB-3.0/AceDB-3.0.lua
    +++ b/Ace3/AceDB-3.0/AceDB-3.0.lua
    @@ -220,7 +220,7 @@ local function initdb(sv, defaults, defaultProfile, olddb, parent)
        if not sv.profileKeys then sv.profileKeys = {} end
        -- Try to get the profile selected from the char db
    -    local profileKey = sv.profileKeys[charKey] or defaultProfile or charKey
    +    local profileKey = sv.profileKeys[charKey] or defaultProfile or "Default"
        sv.profileKeys[charKey] = profileKey
        -- This table contains keys that enable the dynamic creation 

    of course this works best with libraries unembedded so you don't have to change it 20 places or hope the right one loads.

    -- Oh, and yes I'm aware that there's probably just as many people who like per-char by default. Just can't make everybody happy :)
    Posted in: Ace3
  • 0

    posted a message on Unstable Affliction (lack of CLEU: SPELL_CAST_SUCCESS)
    Quote from Xinhuan »

    Spellcasting intentionally has no target information provided. This is a design decision as allowing addons (and players) to know who the target of a spellcast during its casting will affect the balance of pvp and the arena system.

    IMO, the best solution for this would be for Blizzard to leave SPELL_CAST_START as having no target information, but add a SPELL_CAST_SUCCESS message with both the source and target when the cast actually finishes. Instant casts already do this, but anything with a cast time does not (this may be a bug or an oversight). Trying to shoehorn it into SPELL_AURA_APPLIED seems wrong to me because of the mechanics of how auras work.

    Note I mean the combat log messages, not the UNIT_* events that seem mostly intended for cast bar addons and provide little to no target information anyway.

    For Shepherd I watch for SPELL_CAST_START messages and build a table of who started casting each spell ID (and what order). When something gets hit with SPELL_AURA_APPLIED I check the table for the earliest person who began casting that spell ID, remove them from the table and deduce that it was their target. This isn't perfect as things like cast pushback and spell haste can screw with the timing, but it's accurate in all but the most hectic situations.
    Posted in: Lua Code Discussion
  • 0

    posted a message on Sanity 2.0
    Both of these fixes have been merged into Sanity2, anyone who's having problems please update to the latest wowace version and you shouldn't have to patch it locally anymore :)
    Posted in: General AddOns
  • 0

    posted a message on AceConfig3 question
    Quote from LastDefense »

    How would you manually pop the select if you had to manipulate info before displaying and did not want to create a tmp table or the like.

    This is actually a lot easier than you would think. In lua everything is a reference, so when you call RegisterOptionsTable("YourAddon", options), if you hold on to the options table you gave it, you can modify it later. Since AceConfig just saved a reference to options, you can use just options.choicename.values = X to set it to whatever you want. AceConfigDialog rescans the options table after it calls one of your set() functions, so if you change it inside there, it will automagically update in real time.

    If you need to change it from elsewhere while the dialog may be up, you can use
    but it's unnecessary 99% of the time.

    Here's a paraphrased example the builds a list of chat frames, complete with what the user has named them.

    options.args.channel.values = {}
    for i=1, NUM_CHAT_WINDOWS do
        local name, txt
        name = GetChatWindowInfo(i)
        txt = (L["Chat frame %d"]):format(i)
        if name and name ~= "" then
            txt = txt.." ("..name..")"
        options.args.channel.values["chatframe"..i] = txt

    Would you use an array? I am new to LUA and I have not checked to see if there is a key-value array syntax.

    You already are. :D

    In lua there's only one array type: tables. Tables are associative arrays (aka hashes). Numeric "arrays" as other languages have them are emulated in lua by using numbers as keys instead of strings, and there are some convenience functions that treat them like traditional arrays.

    key-value array syntax is very simple. You can do either:

    -- To initialize a new table
    table = { ["key"] = "value" }
    table = { key = "value" }
    -- To modify an existing table
    table["key"] = "value"
    table.key = "value"

    The main reason you'd want to use the [""] syntax is if you had special characters in the key that lua would choke on, if you need to construct the key name, or use the contents of another variable as the key.

    I highly recommend glancing through http://www.lua.org/manual/5.1/manual.html
    It's a surprisingly quick read for documenting an entire language, probably because lua is so simple and elegant. I love how easy it is to parse. The grammar is so completely unambiguous that you don't even need end-of-line markers.
    Posted in: Lua Code Discussion
  • 0

    posted a message on AceConfig3 question
    Yes, you have it right that 'values' is an ID to description mapping. You can use whatever you like for your internal IDs, either numbers or text keys. For example:

    values = {
     ["key1"] = "Some Test",
     ["something"] = "Another Test",
     ["test"] = "Not a test",

    You will have Some Test, Another Test, and Not a test listed in the dropdown. I think you will get an error if values is nil. I'm not sure what will happen if it's an empty table, but I know a way to find out :)

    get- What are we "getting"? If we use a location of a table to populate the dropdown, I would assume that that was the "get"

    Your get function should return the current key that is selected. Usually this is as simple as
    get = function(info)
     return db.profile.somevar

    set- Is this a function that is called whenever the selections changes?

    Yes, exactly. A simple set function looks like this:
    set = function(info, value)
     db.profile.somevar = value

    'value' will be set to the corresponding key for what the user selected. In the example above, you'd get either "key1", "something", or "test". For your sample table it would be 1, 2, or 3. Though most uses of select options do what I posted here and just save the value somewhere, it's a function so of course you can take whatever complex actions you wish. A couple things to keep in mind:

    • Don't forget that Ace3 sends an info table as the first parameter to the set function. It's easy to end up with a table full of stuff you didn't want in your SavedVariables because you forgot and only listed value.
    • Depending on where you define the options table, you may not have access to 'self'. Either refer to your addon's object by fully qualified name, or create the options table inside a method so that it inherits self from the method's scope.
    • Ace3 seems to sort the dropdown list by the keys rather than the visible values. This can be handy if you want them to appear in a certain order.

    Hope this helps.
    Posted in: Lua Code Discussion
  • 0

    posted a message on Altoholic - Official Thread
    Quote from Thaoky »

    The reason is simple, I scan the body of the mail, they don't :)

    The function that marks mails as read is : http://www.wowwiki.com/API_GetInboxText

    I use it to get the body of the mail, which other mail addons don't. What I can do is to turn this into an option though.

    Yes, they do scan the body using GetInboxText(). They then use tricks to recolor the items in your mailbox so they show up as unread.

    Auctioneer's BeanCounter is an example of doing this. It's complicated, ugly, and involves placing hooks into the mail frame to catch clicks and keep track of what is "really" read, but it works.
    Posted in: General AddOns
  • 0

    posted a message on Sanity 2.0
    Hi guys, I have an svn account now so I could potentially commit these fixes to Sanity2. I'm very wary of commiting to a project that's not mine however, so I'm posting again to see if anyone is maintaining Sanity2/SanityItemCache. Antiarc said on IRC that he won't be for a while due to other projects, but I'm not sure if anyone has been doing it in the meantime.

    If not, does anyone have any objections to me importing these simple fixes? I've been running with them for months with no problem and several others have reported that their problems were solved as well.
    Posted in: General AddOns
  • 0

    posted a message on Shepherd - Official Thread
    Shepherd: The last word on crowd control

    Shepherd started out as an extremely simple mod to fulfill a guildmate's request: Call our MT a moron whenever he broke a sheep. It has since evolved into one of the most advanced crowd control addons, at least of the ones that the author has been able to find :)

    Don't let the name fool you, Shepherd can also track shackle, hibernate, and sap. It allows you to define arbitrary filters on what to say to people who break your crowd control, and where to say it. Things it has over simple "aura dispelled" event watching:

    • Tracks who used which crowd control spells on what mobs. This means you can include that person's name if you wish, or automatically send them a whisper (great for raid leaders).
    • Detects if you or your party are actively being attacked by enemies. Once a configurable amount of time has passed, crowd-control breaks are assumed to be on purpose and are not reported to the group. This helps prevent people from getting annoyed with you for spamming chat unnecessarily when you move on to the next target. The default configuration still shows you the details on your local console.
    • Coordinates with other people in your group who are also running Shepherd. If multiple people are configured to send messages to the same channel, one will be selected to report it and the rest will be silent, preventing chat spam. Also avoids sending whispers to people who have Shepherd and presumably already know about it.

    Shepherd is extremely flexible and all of the points above can be changed or configured to your liking. It includes a set of default rules with sensible settings that can simply be enabled or disabled. If you want more control, a wide range of options are possible.


    Now that the marketing spiel's out of the way, here's the lowdown. There's a 1.6 version of Shepherd on curse that is considered the stable release. The one here on wowace is my development version and will become 2.0. It is completely revamped and much more configurable and flexible, but hasn't undergone as much real world bug testing. That said, it's what I'm using when I raid so it's at least in working order :)

    Things that I still need to do include rewriting the documentation for 2.0 and setting up a wiki page with screenshots and info and such. Unlike 1.6, this version should be possible to localize. I'm still tweaking the configuration options and will likely rearrange things, relabel things, and rewrite sections of text to clarify them. Translate if you wish but be warned that it may change out from under you at any moment :D

    There's no documentation on the new configuration screens yet, so if you're having trouble, post here and I'll try to answer any questions. That will also help me figure out what I need to document and what are possible problem areas that can be clarified in the UI.


    Q: How do I configure this thing?
    A: /shepherd or /tsb
    It also adds itself to the Blizzard UI panel under addons, but DON'T USE IT! The layout gets horribly cramped and it almost impossible to use.

    Q: Are hunter freezing traps supported?
    A: Unfortunately, no. The combat log doesn't currently provide enough information to get the level of quality I want in making reports. Basically it's not possible to tie a particular mob getting trapped to the hunter who placed the trap. Suggestions for a way to do this are of course welcome.

    Q: What are all these rules?
    A: Think of them like filters in your email client. When a crowd control spell gets broken, it starts at the top and works its way down looking for a rule that matches. There's a "Stop Here" checkbox that causes any rules after the one that matches to not get processed, if you uncheck it, it's quite possible to send multiple messages. There is also an "Always Run" checkbox that overrides a previous "Stop Here", but only for that one rule.

    Q: Aren't checking "Always Run" and unchecking "Stop Here" redundant?
    They don't quite do the same thing. Always Run also overrides the group synchronization, so a rule that has Always Run checked will send the message even if someone else in your group does also. It's a way to spam regardless if you really want to.

    Q: Does it work in PvP?
    Of course! What I refer to as 'mob' may actually be any target that is considered hostile (or neutral) to you. Most of the default rules are disabled in battlegrounds, but can be re-enabled if you wish.
    Posted in: General AddOns
  • 0

    posted a message on How long does it usually take?
    I sent mine in recently too (Friday), but given the weekend was just starting I didn't expect to hear anything for a bit.

    Not complaining -- I fully expect it to take a while to review the submissions and maybe do some checking and such. Can't just go handing out svn commit access to any bum on the street :D
    Posted in: General Chat
  • 0

    posted a message on Sanity 2.0
    Found it. Some overzealous table recycling is to blame. The :Scan() function recycles a static temporary table and returns a reference to that table, which is then stored in the item cache database. Upon zoning, WoW fires off BAG_UPDATE events for all the bags, including those in bank slots. :Scan() detects that the bank bags aren't accessible, but not before clearing the static temp table, which is still being referenced by the real database. So *poof* go any bags that aren't in your inventory.

    Attached is a patch that moves the check to see if a bag can be read to before clearing the table. It might be better to construct a new table every time and let the GC deal with it, but this way fixes the known problem and I didn't want to go making major architectural changes.

    Also attached is a .zip file with pre-patched .lua files that fix both this and the collapse bug I posted about earlier. It's possibly useful for someone who uses the updater to track the beta version, but doesn't have a patch program available.
    Posted in: General AddOns
  • To post a comment, please or register a new account.