Hi, long-time listener, first-time caller, so to speak. I finally got fed up with all the shiny reputation addons that took up way too much screen space so I'm doing my best to hack together my own that only uses one line of text (eventually) right below the existing bits about +100 here, -20 there, etc... With various factions. You know, you kill an enemy, there really isn't a need for a popup, just a bit of handy text that says hey, you just gained this much reputation, if you can keep that up it'll take this many of that reputation to pop the next standing, etc...
Seems though there's every kind of tutorial but the one that explains what a default chat window is and how to find one and well, I tried Self:print but got Self:owned, so I thought I'd wander in and ask.
I'm working with two functions at the moment.
The first is a function that is called when the addon's enabled that generates a table of all the factions and only the useful statistics, current standing, reputation gained within the constraints of the standing, reputation remaining until the next standing
The second is a hook for the UPDATE_FACTION event that generates a new table and checks it against the old one to see which factions have been updated and then in the end hopefully, and this hasn't happened so far, tells you how at your current rate of reputation gain how many are left until you pop a new standing.
Does all of that make sense?
Code:
function AlbyRep:UPDATE_FACTION()
-- Hook in for when an add is made to a reputation
-- First check amongst the existing factions, ignoring any new ones, for reputation change
-- Generate a new table and compare it with the old one
-- Store any changes to reputation for factions in a separate table
AlbyRep.repChanges={};
AlbyRep.changedReps=0;
for facIndex=1, AlbyRep.curFacCount do
facName, _, facSID, facBVal, facTVal, facEVal, _, _, facIsHdr, _, _ = GetFactionInfo(facIndex);
facRepGained=facEVal-facBVal;
if facIsHdr == nil then
-- First check whether the standing has changed
if AlbyRep.facList[facName][2]~=facSID then
self:Print("Increase in standing with %q!", facName);
end
-- Then do the standard reputation check
if AlbyRep.facList[facName][3]<facRepGained then
AlbyRep.changedReps=AlbyRep.changedReps+1;
AlbyRep.repChanges[AlbyRep.changedReps]={facName,facRepGained-AlbyRep.facList[facName][3]};
self:Print("Increase in reputation of %q with %q!", AlbyRep.repChanges[facIndex][2], facName);
else if AlbyRep.facList[facName][3]>facRepGained then
AlbyRep.changedReps=AlbyRep.changedReps+1;
AlbyRep.repChanges[AlbyRep.changedReps]={facName,AlbyRep.facList[facName][3]-facRepGained};
self:Print("Decrease in reputation of %q with %q!", AlbyRep.repChanges[facIndex][2], facName);
end
end
end
-- Now deal with any new factions NOT YET IMPLEMENTED
-- Now fix the base table to reflect new values NOT YET IMPLEMENTED
end
function AlbyRep:ParseFactions()
-- Parses the faction list into several useful tables
-- A more useful faction table: Will contain the following structure
-- Faction name, faction index, faction standing ID, reputation gained so far inside of current standing (earned value minus bottom value), reputation left (top value minus earned value), last reputation gain
AlbyRep.curFacCount=GetNumFactions();
AlbyRep.facList={};
for facIndex=1, AlbyRep.curFacCount do
facName, _, facSID, facBVal, facTVal, facEVal, _, _, facIsHdr, _, _ = GetFactionInfo(facIndex);
-- Only interested in individual factions, not faction groupings
if facIsHdr == nil then
AlbyRep.facList[facName]={facIndex, facSID, facEVal-facBVal, facTVal-facEVal, nil};
end
end
end
That's what I have so far for the two factions. I have lots of motivation but very little practical experience with LUA and I'm really not having much luck. I kinda suspect it may in fact be my TOC that's the problem, I think the LUA code itself is solid so far, although obviously it's not quite setup to print what it should, I just threw some prints in to test whether it was actually printing anything at all!
Code:
## Title: AlbyRep
## Notes: Displays information relevant to any changes in reputation during gameplay
## Version: 0.1
## Author: Albatross
## Interface: 20400
## OptionalDeps: Ace2
AlbyRep.lua
Libs\AceAddon-2.0\AceAddon-2.0.lua
Libs\AceConsole-2.0\AceConsole-2.0.lua
Libs\AceEvent-2.0\AceEvent-2.0.lua
Libs\AceLibrary\AceLibrary.lua
Libs\AceOO-2.0\AceOO-2.0.lua
That's the code for my TOC... I don't even think WoW is loading my addon. I know it sees it, I can enable it and disable it, but it's not... I don't think it is anyway... Loading it.
Can anybody shed some light?
Much obliged,
Jonjon