It appears LibNameplate_MouseoverNameplate existed in pre v23 but was removed in v24 when I changed my event handling. I never used the callback myself so I didn't notice it went missing. I readded it back to v35, see if that one works for you.
local invoiceType, playerName, sender, subject, money
for i=1, GetInboxNumItems() do
invoiceType, itemName, playerName = GetInboxInvoiceInfo(i);
if invoiceType and invoiceType == "seller" then
_, _, sender, subject, money = GetInboxHeaderInfo(i);
print(("%d: %s just bought %s for %s!"):format(i, playerName, itemName, GetCoinTextureString(money)))
end
end
You can checkout MySales to see how it tracks auction sales.
edit: I guess I could temporarily disable cVar showNewbieTips, do my scan then reenable it. I'll try that now.
Then again a list of stackable spells might be better for locale reasons. Right now I need translators to translate "stack" and "applied" which can be problematic if they mistranslate it. =/
I just returned to WoW after a 6 month break. I'm updating Dimmed Actions which turns action buttons transparent if they don't need to be hit. One of the options is to dim actions if they already exist on the target.
Before Cataclysm I would read the tooltip spell description to check for "applied" or "stack" but now some spells no longer say if they stack.
Sunder Armor still stacks to 3 but the tooltip doesn't say it. Is there any API that will tell me if a spell can stack on a target? Or should I just create a list by hand of all stackable spells?
it's not like the data is really secure. if somebody writes a mod that ignores rank, you're not going to be able to stop them.
That's why I'd choose to use whispers. If the sender first checks if the receiver has rank, then having a modded addon isn't going to help the receiver. The sender's still going to see they don't have rank and will ignore their request.
Maybe I'm just being paranoid. I do see the benefit of sending 1 broadcast to guild chat for everyone to receive it at once. Then use the honor system to prevent people from seeing tabs they're aren't ranked to see.
inthedrops: So you're suggesting having the lib communicate with group members when it detects players/mobs aura changes?
If a enemy is beyond the 100 yard combatlog radius, it's probably unnecessary to track their auras. With the amount and speed of auras changing in combatlog, there would result in way too much comm traffic to keep everyone in a raid updated.
does just announcing you've changed things really help?
The previous example was to whisper everyone online regardless if they were running the lib or not. Announcing that you have changes would interest only those running the lib to request the changes.
it seems to me you should trust your system to be functional and then just broadcast changes (slot#1 is now empty, slot#5 now contains 6x[item], slot #15 now has 15 in the stack, etc)
Wouldn't that have the same issue has my example except with a much shorter message?
Keep in mind we can't broadcast the slot item/count over guild comm because people without rank could see it.
I agree a slot has changed method is better then a whole tab has changed. If I were writing this lib, I'd want to keep comm traffic as small as possible. With full syncs at login of course.
You can't broadcast only changes. I've tried this method and it does not work. People never have the same base, which means you can't apply a change set uniformly. In order to ensure valid data the entire tab needs to be serialized and sent to users.
If the user does a full sync at login. Shouldn't everyone have the same base when a slot change is broadcast?
myrroddin: You should load the lib in game. Make sure there's no errors on login before uploading the lib.
Anyway. I don't think it's a good idea to whisper everyone in the guild the entire contents of your table when you close the guild bank.
A small bank with 1 page and 20 items would look like this. http://paste.wowace.com/2872/
Serializing that table would be 707 characters long and be split into 3 messages.
A bank with 6 tabs and 480 items would be near 2676 characters long split into 11 messages.
I would instead send 1 message to guild comm saying I've updated my data and for others to whisper me for updates.
I would also look into making a hash string of each tab and sending that first before sending the whole table. If their hash matches yours then there's no need for them to request updates. Allara's CRC-32 example
So serialize table > hash function.
So once you close your bank you'd send to guild comm
"HASHUPDATE 11111111,22222222,33333333,44444444,55555555,66666666"
and others would request just the pages that don't match their own. Then when they whisper you, you confirm their rank matches the tab rank and reply with the tab's contents.
If you add a true at the end. It'll set the default profile to 'Default' instead of 'Character - Server'. That way your settings are shared across characters by default. If the user wants a per character/server/class profile, they can select one from the profiles screen.
1) How do I add nested configuration UI to my addon under interface|addons menu?
Groups within groups?
myOptionsTable = {
name = "Hello World",
type = "group",
childGroups = "tab", --Make sub groups showup as tabs.
args = {
core={ --A sub menu called "Core".
name = "Core",
type = "group",
order = 1,
args={
-- blaw blaw blaw
},
},
sounds={ --A sub menu called "Sounds".
name = "Sounds",
type = "group",
order = 2,
args={
-- blaw blaw blaw
},
},
}
}
Or do you mean a submenu in the addon names list.
local submenuOpts
function SomeLoadingFunction()
local submenuName = "Hello World-Sounds"
LibStub("AceConfig-3.0"):RegisterOptionsTable(submenuName, mySubmenusOptionTable)
submenuOpts = LibStub("AceConfigDialog-3.0"):AddToBlizOptions(submenuName, "Sounds", "Hello World addon")
--submenuName is the ID name not shown to user
--"Sounds" is the name of the submenu shown to user
--"Hello world addon" is the text shown at the top of the panel.
end
2) How do I create a the always seen "Profiles" node in the interface|addons menu
in your OnInitialize function
local MyAddon.db = LibStub("AceDB-3.0"):New("MyDB", myDefaultSettingTable, true) --true sets the default profile to be 'Default' instead of 'Char-Server'.
myOptionsTable.args.profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(MyAddon.db) --Adds a Profiles UI screen as a submenu to myOptionsTable.
3) Whenever the user change any value with a profile selected, those value is going to be stored under self.db.profile?
If you setup the set and get functions that way, sure. eg
someOption = {
type = "toggle", order = 1,
name = "This is a checkbox",
desc = "Some mouseover text",
[B]get = function(info)
local key = info[#info] --key will be 'someOption'.
return MyAddon.db.profile[key] --grab the option matching that key in the db.profile
end,
set = function(info, v)
local key = info[#info] --key will be 'someOption'.
MyAddon.db.profile[key] = v --save it in the db.profile
end,[/B]
}
Try this. Create 10 frames and place them in a grid pattern. Have each frame target a enemy. Set them all to 0% transparency. Once a enemy gets the flag, give their frame a flag texture and set transparency to 100%.
0
It appears LibNameplate_MouseoverNameplate existed in pre v23 but was removed in v24 when I changed my event handling. I never used the callback myself so I didn't notice it went missing. I readded it back to v35, see if that one works for you.
0
You can checkout MySales to see how it tracks auction sales.
0
0
edit: I guess I could temporarily disable cVar showNewbieTips, do my scan then reenable it. I'll try that now.
Then again a list of stackable spells might be better for locale reasons. Right now I need translators to translate "stack" and "applied" which can be problematic if they mistranslate it. =/
0
Before Cataclysm I would read the tooltip spell description to check for "applied" or "stack" but now some spells no longer say if they stack.
Sunder Armor still stacks to 3 but the tooltip doesn't say it. Is there any API that will tell me if a spell can stack on a target? Or should I just create a list by hand of all stackable spells?
0
That's why I'd choose to use whispers. If the sender first checks if the receiver has rank, then having a modded addon isn't going to help the receiver. The sender's still going to see they don't have rank and will ignore their request.
Maybe I'm just being paranoid. I do see the benefit of sending 1 broadcast to guild chat for everyone to receive it at once. Then use the honor system to prevent people from seeing tabs they're aren't ranked to see.
0
If a enemy is beyond the 100 yard combatlog radius, it's probably unnecessary to track their auras. With the amount and speed of auras changing in combatlog, there would result in way too much comm traffic to keep everyone in a raid updated.
0
The previous example was to whisper everyone online regardless if they were running the lib or not. Announcing that you have changes would interest only those running the lib to request the changes.
Wouldn't that have the same issue has my example except with a much shorter message?
Keep in mind we can't broadcast the slot item/count over guild comm because people without rank could see it.
I agree a slot has changed method is better then a whole tab has changed. If I were writing this lib, I'd want to keep comm traffic as small as possible. With full syncs at login of course.
If the user does a full sync at login. Shouldn't everyone have the same base when a slot change is broadcast?
0
Anyway. I don't think it's a good idea to whisper everyone in the guild the entire contents of your table when you close the guild bank.
A small bank with 1 page and 20 items would look like this.
http://paste.wowace.com/2872/
Serializing that table would be 707 characters long and be split into 3 messages.
A bank with 6 tabs and 480 items would be near 2676 characters long split into 11 messages.
I would instead send 1 message to guild comm saying I've updated my data and for others to whisper me for updates.
I would also look into making a hash string of each tab and sending that first before sending the whole table. If their hash matches yours then there's no need for them to request updates.
Allara's CRC-32 example
So serialize table > hash function.
So once you close your bank you'd send to guild comm
"HASHUPDATE 11111111,22222222,33333333,44444444,55555555,66666666"
and others would request just the pages that don't match their own. Then when they whisper you, you confirm their rank matches the tab rank and reply with the tab's contents.
0
http://forums.worldofwarcraft.com/thread.html?topicId=26723614545&postId=267208819134&sid=1#15
0
0
If you add a true at the end. It'll set the default profile to 'Default' instead of 'Character - Server'. That way your settings are shared across characters by default. If the user wants a per character/server/class profile, they can select one from the profiles screen.
0
Groups within groups?
Or do you mean a submenu in the addon names list.
2) How do I create a the always seen "Profiles" node in the interface|addons menu
in your OnInitialize function
3) Whenever the user change any value with a profile selected, those value is going to be stored under self.db.profile?
If you setup the set and get functions that way, sure. eg
Hope this helps.
0
0