My apologies, I'll break down the onEvent function to make things clearer:
Code:
-- Each QueryGuildBank.... call will trigger this update but we only
-- want to display the final report which will contain everything
-- found. queryCount is used to keep track of which stage we are at
local function refreshLogInfo()
queryCount = 0;
for tab = 1,GetNumGuildBankTabs() do
QueryGuildBankLog(tab);
QueryGuildBankTab(tab);
end
QueryGuildBankLog(MAX_GUILDBANK_TABS+1);
end
-- Call this function after a queryGuildBankLog has been called.
local function getLogInfo()
queryCount = queryCount + 1;
if queryCount == GetNumGuildBankTabs() + 1 then
for tab = 1, GetNumGuildBankTabs() do
local maxTabTrans = GetNumGuildBankTransactions(tab);
-- For each transaction in the current tab extract the information required.
for trans = 1,maxTabTrans do
tType, tName, itemLink, count, tab1, tab2, year, month, day, hour = GetGuildBankTransaction(tab, trans);
-- If this is the last transaction then we want to display it in some form
if trans == maxTabTrans then
if ( tab1 ) then tab1 = GetGuildBankTabInfo(tab1); end
if ( tab2 ) then tab2 = GetGuildBankTabInfo(tab2); end
print("Last Item Transaction: ",tab,maxTabTrans,tType, tName, itemLink, count, tab1, tab2, year, month, day, hour, "Time Conversion = (", RecentTimeDate(year, month, day, hour),")");
end
end
end
-- Now repeat the same process for the money log
local maxMoneyTrans = GetNumGuildBankMoneyTransactions();
for trans = 1,maxMoneyTrans do
tType, tName, amount, years, months, days, hours = GetGuildBankMoneyTransaction(trans);
if ( trans == maxMoneyTrans ) then
print("Last Money Transaction: ",maxMoneyTrans,tType, tName, amount, year, month, day, hour, "Time Conversion = (", RecentTimeDate(year, month, day, hour),")");
end
end
end
end
-- For each event that is triggered by a bank change refresh the Log Info
-- which then triggers the UPDATE event to then get the Log Info.
local function onEvent(self,event,...)
-- Only work if the Guild Bank Frame is open
if ( not GuildBankFrame:IsVisible() ) then
return;
end
if ( event == "GUILDBANKFRAME_OPENED" ) then
refreshLogInfo();
elseif ( event == "GUILDBANKBAGSLOTS_CHANGED" ) then
refreshLogInfo();
elseif ( event == "GUILDBANK_ITEM_LOCK_CHANGED" ) then
refreshLogInfo();
elseif ( event == "GUILDBANK_UPDATE_MONEY" ) then
refreshLogInfo();
elseif ( event == "GUILDBANK_UPDATE_TABS" ) then
refreshLogInfo();
elseif ( event == "GUILDBANK_UPDATE_TEXT" ) then
refreshLogInfo();
elseif ( event == "GUILDBANK_UPDATE_WITHDRAWMONEY" ) then
refreshLogInfo();
elseif ( event == "GUILDBANKLOG_UPDATE" ) then
getLogInfo();
end
end
Hopefully this helps make a bit more sense to you. If you are still getting problems I will try and figure out why it isn't working the same for you.