From 6ff7f483fcc40aff0f41ef65341d2838892e691e Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 13 Jan 2021 16:18:59 +0100 Subject: [PATCH] Init --- .gitmodules | 3 + Common | 1 + core.lua | 505 ++++++++++++++++++++++++++++++++++++++++++++++++ icon2.tga | Bin 0 -> 2942 bytes in.tga | Bin 0 -> 3690 bytes license.txt | 6 + locale_deDE.lua | 46 +++++ locale_enUS.lua | 40 ++++ locale_koKR.lua | 40 ++++ locale_ruRU.lua | 40 ++++ out.tga | Bin 0 -> 1574 bytes pack.xml | 7 + zz_Money.toc | 16 ++ 13 files changed, 704 insertions(+) create mode 100644 .gitmodules create mode 160000 Common create mode 100644 core.lua create mode 100644 icon2.tga create mode 100644 in.tga create mode 100644 license.txt create mode 100644 locale_deDE.lua create mode 100644 locale_enUS.lua create mode 100644 locale_koKR.lua create mode 100644 locale_ruRU.lua create mode 100644 out.tga create mode 100644 pack.xml create mode 100644 zz_Money.toc diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..34950ac --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Common"] + path = Common + url = https://git.grml.de/rilgamon/Common.git diff --git a/Common b/Common new file mode 160000 index 0000000..762c59c --- /dev/null +++ b/Common @@ -0,0 +1 @@ +Subproject commit 762c59c6c6abc6ecaa71f3e36bb2c6dd16b8e0ed diff --git a/core.lua b/core.lua new file mode 100644 index 0000000..66b0e45 --- /dev/null +++ b/core.lua @@ -0,0 +1,505 @@ +local name, addon = ... +local parentName = addon['parentName'] or "BrokerPack" +local childName = "zz_Money" +local defaults = { + ['sortDir'] = true, +} +local options = { +} + +local ldbicon = LibStub:GetLibrary("LibDBIcon-1.0") +local L = LibStub("AceLocale-3.0"):GetLocale(childName, true) +local db + +local texturePath = name == "BrokerPack" and "Interface\\AddOns\\BrokerPack\\zz_Money\\in.tga" or "Interface\\AddOns\\zz_Money\\in.tga" +local texturePath2 = name == "BrokerPack" and "Interface\\AddOns\\BrokerPack\\zz_Money\\out.tga" or "Interface\\AddOns\\zz_Money\\out.tga" + +local goldicon,silvericon,coppericon +local sessionStart,sessionIn,sessionOut = 0,0,0 +local mailframes = {} +local lastframe +local mailRec,mailSum +local realm, faction, player +local checkDelay = GetTime() +local connectedRealms +local posFrame = CreateFrame("Frame") +posFrame:SetSize(32,1) +posFrame:SetPoint("TOPRIGHT",SendMailFrame,"TOPRIGHT",-10,-12) +posFrame:SetScript("OnEvent", function(self, event, ...) + self:UnregisterEvent('MAIL_FAILED') + self:UnregisterEvent('MAIL_SEND_SUCCESS') + if(event == "MAIL_SEND_SUCCESS") then + if(mailRec and mailSum) then + db[realm][mailRec]['incoming'] = (db[realm][mailRec]['incoming'] or 0) + mailSum + addon:Print(L['Success'](mailRec,mailSum)) + mailframes[mailRec]:Hide() + end + elseif(event == "MAIL_FAILED") then + addon:Print(L['Fail']) + end + mailRec = nil + mailSum = nil +end) +local Helper_Tooltip_tab +local function getHTT() + Helper_Tooltip_tab = Helper_Tooltip_tab or { ['iconSize'] = addon['db']['global']['iconSize'] or 12} + return Helper_Tooltip_tab +end + +local function Helper_Tooltip3(realm) + if(not addon['db']['global']['connectedRealms']) then return end + for k, v in pairs(connectedRealms) do + if(v == realm) then + return true + end + end +end +local function cdbCheck(n,realm) + db[realm] = db[realm] or {} + db[realm][n] = db[realm][n] or { currentGold = 0 } +end +local function OnText(message) + addon:OnText(childName, message) +end + +local function OnText2() + local m = 0 + if(addon['db']['global']['accountMoney']) then + local sum = 0 + if(addon['db']['sv']['profileKeys']) then + for k,v in pairs(addon['db']['sv']['profileKeys']) do + local n,_,m = strsplit(' ',k,3) + if(n) then + local cr = Helper_Tooltip3(m) + if(m == realm or cr) then + cdbCheck(n,cr and m or realm) + if( faction == db[cr and m or realm][n]['faction']) then + sum = sum + db[cr and m or realm][n]['currentGold'] + end + end + end + end + end + m = sum + else + m = GetMoney() + end + if(addon['db']['global']['shortMoney'] and m>10000)then + m = addon:round(m / 10000,0) * 10000 + end + OnText(addon:buildMoneyString(m,false,getHTT(),addon['db']['global']['abrevK'] and L['abrK'] or nil,addon['db']['global']['abrevM'] and L['abrM'] or nil)) +end + +local function GetFactionList() + local n,m,_ + local l = {} + if(addon['db']['sv']['profileKeys']) then + for k,v in pairs(addon['db']['sv']['profileKeys']) do + n,_,m = strsplit(' ',k,3) + if(n) then + if(m == realm) then + if(faction == db[realm][n]['faction']) then + l[n] = true + end + end + end + end + end + return l +end + +local function getDeliver(name) + local sendSum,offset + local lim, mon + if(db[realm][faction]['banker'] ~= player) then + lim = db[realm][faction]['maxLimit'] or 100 + mon = GetMoney() + sendSum = mon - lim*10000 - 30 + offset = 0 + else + lim = db[realm][faction]['minLimit'] or 100 + mon = db[realm][name]['currentGold'] + sendSum = lim*10000 - mon + offset = 30 + end + if(sendSum + offset > GetMoney()) then + sendSum = GetMoney() + end + return sendSum - (db[realm][faction]['banker'] ~= player and 0 or (db[realm][name]['incoming'] or 0)) +end + + +local function Click(self,button) + local sendSum = getDeliver(self['destName']) + if(addon:IsTwink(self['destName']) and self['destName']~=player) then + if(sendSum>0) then + if(SetSendMailMoney(sendSum)) then + posFrame:RegisterEvent('MAIL_SEND_SUCCESS') + posFrame:RegisterEvent('MAIL_FAILED') + mailRec = self['destName'] + mailSum = sendSum + SendMail(self['destName'],L['Subject'],nil) + end + end + end +end + +local function Mouse(self) + local tip = GameTooltip + tip:SetOwner(self, "ANCHOR_BOTTOM") + tip:ClearLines() + self['tooltip'] = tip + if(db[realm][faction]['banker'] ~= player) then + tip:AddLine(format("%s %s",L['Bankier'],db[realm][faction]['banker'])) + tip:AddLine(format("%s %s",L['Goldgrenze'],db[realm][faction]['maxLimit'])) + else + tip:AddLine(format("%s %s",L['Empfaenger'],self['destName'])) + tip:AddLine(format("%s %s",L['Goldgrenze'],db[realm][faction]['minLimit'])) + end + local sendSum = getDeliver(self['destName']) + tip:AddLine(format("%s %s",L['Sende'],addon:buildMoneyString(sendSum,false,getHTT()))) + tip:Show() +end +local function MouseOut(self) + self['tooltip']:Hide() +end +local function MainFrame(name) + if(getDeliver(name)<0) then return nil end + local mailframe = mailframes[name] and mailframes[name] or CreateFrame("Button",nil,SendMailFrame,"ActionButtonTemplate SecureActionButtonTemplate") + mailframe:SetSize(32,32) + mailframe:SetPoint("TOPRIGHT",lastframe,"BOTTOMRIGHT",0,-8) + mailframe:EnableMouse(true) + mailframe:RegisterForClicks("AnyUp") + mailframe['destName'] = name + mailframe:SetScript("OnClick", Click) + mailframe:SetScript("OnEnter", Mouse) + mailframe:SetScript("OnLeave", MouseOut) + if(not mailframe['texture']) then + mailframe['texture'] = mailframe:CreateTexture(nil,"BACKGROUND") + mailframe['texture']:SetTexture("Interface\\Icons\\INV_Misc_Bag_10_Blue") + mailframe['texture']:SetAllPoints(mailframe) + mailframe['texture']:SetPoint("CENTER",0,0) + mailframe['texture']:Show() + end + return mailframe +end +local function buildMailFrames() + local banker = db[realm][faction]['banker'] + if(mailframes) then + for k,v in pairs(mailframes) do + mailframes[k]:Hide() + mailframes[k] = nil + end + mailframes = {} + end + if(addon['db']['global']["disableBanker"]) then return end + posFrame:Show() + lastframe = posFrame + + if(player == banker) then + local fl = GetFactionList() + if(fl) then + for k,v in pairs(fl) do + if(k ~= banker) then + if(getDeliver(k) > 0 and getDeliver(k) < GetMoney() - 10000) then + mailframes[k] = MainFrame(k) + mailframes[k]:Show() + lastframe = mailframes[k] + end + end + end + end + else + if(getDeliver(banker) > 0 and getDeliver(banker) < GetMoney() - 10000) then + mailframes[banker] = MainFrame(banker) + mailframes[banker]:Show() + end + end +end + +local function getDateString() + return format("%s%s",tostring(date("%Y")),tostring(1000 + date("%j"))) +end +local function getSumToday(d) + if(faction=='Neutral') then return 0,0 end + local sumIn,sumOut = 0,0 + d = d or 0 + local day = getDateString() + d + for a,b in pairs(db[realm]['activity'][faction][tostring(day)] or {}) do + if(b < 0) then + sumOut = sumOut + b + else + sumIn = sumIn + b + end + end + return sumOut,sumIn +end + +local function getSumWeek() + local sumIn, sumOut = 0,0 + local sumWeekIn, sumWeekOut = 0,0 + for a=0,6 do + sumOut, sumIn = getSumToday(a * -1) + sumWeekIn = sumWeekIn + sumIn + sumWeekOut = sumWeekOut + sumOut + end + return sumWeekOut,sumWeekIn +end + +local ttlist = {} + +local function Helper_Tooltip(str,col,sum,bol) + return col and addon:colorize(str,col) or str,addon:buildMoneyString(sum,bol,getHTT()),1,1,1,1,1,1 +end +local function Helper_Tooltip2(tex,str,sum,bol) + return format("|T%s:0|t%s",tex,str),addon:buildMoneyString(sum,bol,getHTT()),1,1,1,1,1,1 +end +local function OnClick(self, button) + if(IsShiftKeyDown() and button == "LeftButton") then + addon['db']['global']['ldbicons'][childName]['hide'] = not addon['db']['global']['ldbicons'][childName]['hide'] + if(ldbicon) then + if(addon['db']['global']['ldbicons'][childName]['hide']) then + ldbicon:Hide(childName) + else + ldbicon:Show(childName) + end + end + else + if(InterfaceOptionsFrame:IsVisible() and not InCombatLockdown()) then + InterfaceOptionsFrame:Hide() + else + InterfaceOptionsFrame_OpenToCategory(childName) + InterfaceOptionsFrame_OpenToCategory(childName) -- Twice because of a bug in InterfaceOptionsFrame_OpenToCategory + end + end +end +local function OnTooltip(tip) + tip:AddLine(childName) + if(faction == 'Neutral') then + tip:AddLine(L['neutral']) + return + end + tip:AddDoubleLine(Helper_Tooltip(L['Sitzung'],'ffff00',db[realm][player]['currentGold'] - sessionStart,true)) + tip:AddDoubleLine(Helper_Tooltip2(texturePath,L['Einnahmen'],sessionIn,false)) + tip:AddDoubleLine(Helper_Tooltip2(texturePath2,L['Ausgaben'],sessionOut,false)) + tip:AddLine(' ') + local sumOut,sumIn = getSumToday() + tip:AddDoubleLine(Helper_Tooltip(L['Heute'],'ffff00',sumOut+sumIn,true)) + tip:AddDoubleLine(Helper_Tooltip2(texturePath,L['Einnahmen'],sumIn,false)) + tip:AddDoubleLine(Helper_Tooltip2(texturePath2,L['Ausgaben'],sumOut,false)) + tip:AddLine(' ') + sumOut,sumIn = getSumToday(-1) + tip:AddDoubleLine(Helper_Tooltip(L['Gestern'],'ffff00',sumOut+sumIn,true)) + tip:AddDoubleLine(Helper_Tooltip2(texturePath,L['Einnahmen'],sumIn,false)) + tip:AddDoubleLine(Helper_Tooltip2(texturePath2,L['Ausgaben'],sumOut,false)) + tip:AddLine(' ') + sumOut,sumIn = getSumWeek() + tip:AddDoubleLine(Helper_Tooltip(L['7-Tage'],'ffff00',sumIn+sumOut,true)) + tip:AddDoubleLine(Helper_Tooltip2(texturePath,L['Einnahmen'],sumIn,false)) + tip:AddDoubleLine(Helper_Tooltip2(texturePath2,L['Ausgaben'],sumOut,false)) + tip:AddLine(' ') + local sum = 0 + wipe(ttlist) + if(addon['db']['sv']['profileKeys']) then + for k,v in pairs(addon['db']['sv']['profileKeys']) do + local n,_,m = strsplit(' ',k,3) + if(n) then + local cr = Helper_Tooltip3(m) + if(m == realm or cr) then + cdbCheck(n,cr and m or realm) + if( faction == db[cr and m or realm][n]['faction']) then + sum = sum + db[cr and m or realm][n]['currentGold'] + ttlist[k] = db[cr and m or realm][n]['currentGold'] + end + end + end + end + end + for _,v in pairs(addon:sortArray(ttlist,addon['db']['global']['sortDir'])) do + local n,_,m = strsplit(' ',v,3) + local cr = Helper_Tooltip3(m) + tip:AddDoubleLine(Helper_Tooltip(addon:classcolor(n,db[cr and m or realm][n]['class']),nil,db[cr and m or realm][n]['currentGold']+(db[cr and m or realm][n]['incoming'] or 0) or 0,false)) + end + tip:AddLine(' ') + tip:AddDoubleLine(Helper_Tooltip(L['Gesamt'],'ffff00',sum,false)) +end + +local oldMoney = 0 + +local function OnDataUpdate() + if(faction == 'Neutral') then + faction = UnitFactionGroup('player') + if(faction == 'Neutral') then + OnText2() + C_Timer.After(2, OnDataUpdate) + return + end + end + local m = GetMoney() + if(m == oldMoney) then return end + local stamp = time() + local day = getDateString() + db[realm][player] = db[realm][player] or { ['currentGold'] = m,['faction'] = faction } + db[realm][player]['incoming'] = 0 + db[realm]['activity'] = db[realm]['activity'] or { Horde = {}, Alliance={}} + db[realm][faction] = db[realm][faction] or {} + db[realm][faction]['banker'] = db[realm][faction]['banker'] or player + db[realm][faction]['minLimit'] = db[realm][faction]['minLimit'] or 300 + db[realm][faction]['maxLimit'] = db[realm][faction]['maxLimit'] or 300 + if(db[realm][player]['currentGold'] ~= m) then + db[realm]['activity'][faction][day] = db[realm]['activity'][faction][day] or {} + while(db[realm]['activity'][faction][day][stamp]) do + stamp = stamp + 1 + end + local d = m-db[realm][player]['currentGold'] + if(d < 0) then + sessionOut = sessionOut + d + else + sessionIn = sessionIn + d + end + db[realm]['activity'][faction][day][stamp] = d + db[realm][player]['currentGold'] = m + end + OnText2() + C_Timer.After(2, OnDataUpdate) +end + +local function MAIL_SHOW() + OnDataUpdate() + buildMailFrames() +end + +local function resetSession() + player = UnitName('player') + realm = GetRealmName() + sessionStart = db[realm][player]['currentGold'] or 0 + sessionIn = 0 + sessionOut = 0 + OnDataUpdate() +end + +local function cleanUp() + local ci = 7 + local day = getDateString() + if(faction == 'Neutral') then return end + for k,v in pairs(db[realm]['activity'][faction]) do + if(tonumber(k) < tonumber(day)-ci) then + db[realm]['activity'][faction][tostring(k)] = nil + end + end +end + +local function buildSelect() + local sel = {} + local n,m,_ + if(addon['db']['sv']['profileKeys']) then + for k,v in pairs(addon['db']['sv']['profileKeys']) do + n,_,m = strsplit(' ',k,3) + if(addon:IsTwink(n)) then + if(faction == db[realm][n]['faction']) then + sel[n] = n + end + end + end + end + return sel +end +local function buildSelectAll() + local sel = {} + local n,m,_ + if(addon['db']['sv']['profileKeys']) then + for k,v in pairs(addon['db']['sv']['profileKeys']) do + n,_,m = strsplit(' ',k,3) + sel[format("%s-%s",n,m)] = format("%s-%s",n,m) + end + end + return sel +end + +local function getPref2(info) + return db[realm][faction][info[#info]] +end + +local function setPref2(info,value) + db[realm][faction][info[#info]] = value + buildMailFrames() + OnDataUpdate() +end + +local function getPref(info) + return addon['db']['global'][info[#info]] +end + +local function setPref(info,value) + oldMoney = 0 + addon['db']['global'][info[#info]] = value + Helper_Tooltip_tab = nil + buildMailFrames() + OnDataUpdate() +end +local function deleteChar() + if(addon['db']['global']['deleteCharOk']) then + local charName, charRealm = strsplit('-', addon['db']['global']['deleteChar'],2) + if(db[charRealm] and db[charRealm][charName]) then + db[charRealm][charName] = nil + addon['db']['sv']['profileKeys'][format("%s - %s", charName, charRealm)] = nil + end + end + setPref({'deleteCharOk'}, nil) +end +local function init() + player = UnitName('player') + realm = GetRealmName() + faction = UnitFactionGroup('player') + connectedRealms = GetAutoCompleteRealms() + options = addon:InitConfig(childName, true, { + ['name'] = childName, + ['type'] = "data source", + ['OnClick'] = OnClick, + ['OnTooltipShow'] = OnTooltip, + ['icon'] ="Interface\\Icons\\INV_Misc_Bag_10_Blue", + }, getPref, setPref) + db = addon['db']['profile'][childName] + db[realm] = db[realm] or { + ['activity'] = { Horde = {}, Alliance={}}, + [faction] = {}, + [player] = { currentGold = 0, ['faction'] = faction }, + ['banker'] = player, + } + db[realm][faction] = db[realm][faction] or {} + db[realm][player] = db[realm][player] or { currentGold = 0, ['faction'] = faction } + db[realm][player]['faction'] = faction + db[realm][player]['incoming'] = db[realm][player]['incoming'] or 0 + local _, class, _ = UnitClass('player') + db[realm][player]['class'] = class + local menu = addon:AddConfigMenu({ + ['name'] = L['Bankier'], + ['order'] = 2, + ['menuGet'] = getPref2, + ['menuSet'] = setPref2, + ['disabled'] = function() return addon['db']['global']["disableBanker"] end, + }, options) + addon:AddConfigEntry(childName, "range","minLimit",L['Minimum Limit'],L['Desc MinL'],1,10,150000,5,false,menu) + addon:AddConfigEntry(childName, "range","maxLimit",L['Maximum Limit'],L['Desc MaxL'],2,10,150000,5,false,menu) + addon:AddConfigEntry(childName, "select","banker",L['Bankier'],nil,3,buildSelect,nil,nil,nil,menu) + addon:AddConfigEntry(childName, "header","deleteCharHeader",L['DeleteChar'],nil,9,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "select","deleteChar",L['DeleteChar'],L['DeleteCharDesc'],10,buildSelectAll,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "toggle","deleteCharOk",L['DeleteCharOk'],nil,11,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "execute","deleteCharExec",L['DeleteChar'],L['DeleteCharDesc'],12,deleteChar,nil,nil,nil,options['args'][childName]) + + addon:AddConfigEntry(childName, "range","iconSize",L['iconSize'],nil,2,5,32,1,false,options['args'][childName]) + addon:AddConfigEntry(childName, "toggle","sortDir",L['sortDir'],nil,2,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "toggle","connectedRealms",L['connectedRealms'],nil,2,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "toggle","disableBanker",L['nobanker'],nil,3,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "toggle","accountMoney",L['accountMoney'],L['accountMoneyDesc'],4,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "toggle","shortMoney",L['shortMoney'],nil,5,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "toggle","abrevK",L['abrevK'],nil,6,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName, "toggle","abrevM",L['abrevM'],nil,6,nil,nil,nil,nil,options['args'][childName]) + C_Timer.After(2, OnDataUpdate) + addon:RegisterFunc({"PLAYER_MONEY"},"OnEvent", OnDataUpdate) + addon:RegisterFunc({"MAIL_SHOW"},"OnEvent", MAIL_SHOW) + resetSession() + cleanUp() +end + +addon:startup(name, childName, init, true, defaults) diff --git a/icon2.tga b/icon2.tga new file mode 100644 index 0000000000000000000000000000000000000000..5fee9b2ea60463864dd39659e950f55a6be8e79c GIT binary patch literal 2942 zcmX|D2~bp57HzkLiHi0AX%!Zh-Lq{rdr9a&mG4?`CCr@%zHq=1)LMN&IzTVWE`XCTefb+=FOY2h1Om)wtIWidms4j@TG74;On~+K09_G zK0Y3qcQa+Fsj1U=cmJn;L_ii#J$&>K!KZ>D>5za^tD#nN&~RF4^;&4O9JCq@v^p(R zN)1#h4obNa3b}%Y9J1~noWF1$Nl8gaPEJna)n8)X&t&OMOG|UQpOa&V2nz#C%ka=3 ztQHPtBZpxt2fbbgt4V`l8wZP-gKba+vsMi)nY9|!&}-BfvYJp=U5OJXP9h~GWh6E> z_FsGeyqQ@n^JJztAt8Z0NP^uqi0*zZqMi)mO1TZm&n%=?4uejKh(a5#R16`azzQ9w z#NeO;xs?W7C)xF5p>&%gkl@M3$kLT)s;eW$|IX^2Ao~^{3pDc(HS#UbTf|)*Q%l+#y5Y3B32#4iW01~|f&JvklL!qBtqlnY`9#Qq#q$|l+$-UI_!-GRqO0v4-25uww5l4eTb`p+(g>?n zjeTb;FlR#*mTs*?hNuo2RUbHxE-a@!|W8q1c0%Qgz+_$4?DwpM@I)RWI#xU0xtVG1g4r0 zkZ8nTJ(c)ftib2KO88$f;`A*OzB{79mJkgFq^}{${~aHiTG2p8V-w;a>+Hjm(o(#5 z@f;2H^{9OLk`WK&@&Tw-YC>H!m=i~j9u05|3JQA2pm^`zJyX0()^eg`VGinsB&;4yyrWj}WRwEL-}zrTOckt0VS6bd1gN})Fxpym1zol=YC zJF2j1S0%DVub?$)(M2d*zgvuX>nh=Y<~b3V9M(ZI&*+iSQG5xPS3HA_*ym%H4C%M; zAR!?hag>$Ub+4(QOz7?F!|BtfKz6Zlqeqz|arb$~<%bR(;xVAp>7XI9RV#ZjAZy0! z5A6tkU_;6);8>m=jqRN<8(Ls8O3^KCLwkD%f$Tl{`nsW3aD)RTfv+8{k`}ys|DKMu z9i1IgB5^ITs|6{h5v$K=G7c|8Eu6uj1 z@)(DM@j9$Np~mOleK6?dxSf%SrWPtgX%|Y0ijk3#Mc0!W>Dd`*YiTCrH{(u52BH56 zZ(KvTV5RTj;Q>ddIdGoqynJ|gc$9*^m_L7hl&h;Ne=rO&dcB@P;}ChP1=HP|F?Wju zQ&u(OXiO8anGrW{rr_4C+ep8cg^2J_6qS_HWvRi{8`p3zJBz>4qoZO_S64^rveA|D z2!4J)!pYGQ)22_4C6EXh35*ip?Afy&rcImHuw=;+95`?Q$>f5Y`&v+Q#)jMfQ_bIS<4JU5 z^5n_bLA?p}H!x7)g)puTQB(Udfur7Il)2T^Z>UJCiabz5s3vn03>0d0RW%MCJcy}N zr!xJSb~^-oM7;h9W5$e`MB>(Y^XBoeuB@!&IWUYBmw>f1mze%fm{Ofi4~Dp_SFd8> z!i7v-FYTYfYvS7srfwyPhgYmv0b)!@BobmYIWDoxj~N&kAeN^mwh$_a@5fQ&h)tU| z@!`{EPhJh*8I2=7@e?Ob1Oqz}AcRDP5C#SYLJ$xTFuDq5t8vGVA7?xXf(BFckl#P5 zgmg|JQ3uPRv$HdVEYQnrHEzLz1(-E!7Tckw&%WR{@GYf)9^J2!9Bk#s%lHPCJ?@R6 mDUz)Y^RinEp8P}`_}{iIUhBL!Y~A4bgR9T?8$8x668slwzWWFO literal 0 HcmV?d00001 diff --git a/in.tga b/in.tga new file mode 100644 index 0000000000000000000000000000000000000000..9acf926f3311cb828dad9bf9b5a505c5e3f241d9 GIT binary patch literal 3690 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 HV#Dx1T+Wp^ literal 0 HcmV?d00001 diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..6d2e364 --- /dev/null +++ b/license.txt @@ -0,0 +1,6 @@ +The following license excludes the libraries (Libs) included. See the libraries directory or website. + +This AddOn is public domain. That means you can change it, rename it or paint it yellow. +My name (Rilgamon) is valid only for WoWInterface.com and curse.com. +If you use/offer this addon on another website please remove my name. +If you want to give me credit you can replace it with a link to my profile on WoWInterface.com. \ No newline at end of file diff --git a/locale_deDE.lua b/locale_deDE.lua new file mode 100644 index 0000000..5a37beb --- /dev/null +++ b/locale_deDE.lua @@ -0,0 +1,46 @@ +local addonname, addon = ... +local name = "zz_Money" +local L = LibStub("AceLocale-3.0"):NewLocale(name, "deDE", false) +if L then + L[name] = name + L[name..' Settings'] = name..' Einstellungen' + L['Sitzung']='Sitzung' + L['Einnahmen']='Einnahmen' + L['Ausgaben']='Ausgaben' + L['Heute']='Heute' + L['Gestern']='Gestern' + L['7-Tage']='7-Tage' + L['Gesamt']='Gesamt' + L['Bankier']='Bankier' + L['Goldgrenze']='Goldgrenze' + L['Sende'] = 'Sende' + L['Subject'] = 'Ab in den Sparstrumpf' + L['Minimum Limit']='Minimum Limit' + L['Desc MinL']='Spieler mit Gold unter diesem Limit werden dem Bankier angzeigt' + L['Maximum Limit']='Maximum Limit' + L['Desc MaxL']='Spieler mit Gold \195\188ber diesem Limit bekommen einen Knopf im Postfenster um es an den Bankier zu schicken' + L['Empfaenger']='Empf\195\164nger' + L['Fail']='Sendung fehlgeschlagen' + L['Success']=function(name,sum) return format("Sent %s to %s",addon:buildMoneyString(sum,nil,{ ['iconSize'] = addon['db']['global']['iconSize'] or 12}),name) end + L['iconSize']='M\195\188nzgr\195\182\195\159e' + L['sortDir'] = 'Tooltip-Sortierung Auf-/Absteigend' + L['nobanker'] = 'Bankier deaktivieren' + L['neutral'] = 'Deaktiviert solange neutral' + L['accountMoneyDesc'] = 'Zeige accountweiten Goldbestand' + L['accountMoney'] = 'Globales Gold' + L['shortMoney'] = 'Gold runden' + L['abrevK'] = "Geldanzeige k\195\188rzen k" + L['abrevM'] = "Geldanzeige k\195\188rzen m" + L['abrK'] = "k" + L['abrM'] = "m" + L['connectedRealms'] = "Zeige verbundene Realms" + L['DeleteChar'] = "L\195\182sche Char" + L['DeleteCharDesc'] = "Entferne alle Daten zu diesem Character" + L['DeleteCharOk'] = "Ja, ich bin sicher!" +end + +-- \195\182 \195\159 +-- \195\188 \195\164 +-- \195\132 +-- \195\182 +-- \195\156 \ No newline at end of file diff --git a/locale_enUS.lua b/locale_enUS.lua new file mode 100644 index 0000000..2987f2f --- /dev/null +++ b/locale_enUS.lua @@ -0,0 +1,40 @@ +local addonname, addon = ... +local name = "zz_Money" +local L = LibStub("AceLocale-3.0"):NewLocale(name, "enUS", false) +if L then + L[name] = name + L[name..' Settings'] = name..' Settings' + L['Sitzung']='Session' + L['Einnahmen']='Income' + L['Ausgaben']='Expenses' + L['Heute']='Today' + L['Gestern']='Yesterday' + L['7-Tage']='7-Days' + L['Gesamt']='Total' + L['Bankier']='Banker' + L['Goldgrenze']='Goldlimit' + L['Sende'] = 'Send' + L['Subject'] = 'Sock away' + L['Minimum Limit']='Minimum Limit' + L['Desc MinL']='Chars with less than this limit will be show to the banker' + L['Maximum Limit']='Maximum Limit' + L['Desc MaxL']='Chars with more than this limit will see a button in the send mail window to send it to the banker' + L['Empfaenger']='Beneficiary' + L['Fail']='Mail failed' + L['Success']=function(name,sum) return format("Sent %s to %s",addon:buildMoneyString(sum,nil,{ ['iconSize'] = addon['db']['global']['iconSize'] or 12}),name) end + L['iconSize']='Coinsize' + L['sortDir'] = 'Sort Tooltip Up/Down' + L['nobanker'] = 'Disable banker functionality' + L['neutral'] = 'Disabled while neutral' + L['accountMoney'] = 'Global Money' + L['accountMoneyDesc'] = 'Show accountwide Money' + L['shortMoney'] = 'Display gold only' + L['abrevK'] = "Shorten money display k" + L['abrevM'] = "Shorten money display m" + L['abrK'] = "k" + L['abrM'] = "m" + L['connectedRealms'] = "List connected Realms" + L['DeleteChar'] = "Delete Char" + L['DeleteCharDesc'] = "Removes all data for this character" + L['DeleteCharOk'] = "Yes, I'm sure!" +end \ No newline at end of file diff --git a/locale_koKR.lua b/locale_koKR.lua new file mode 100644 index 0000000..bcdcee2 --- /dev/null +++ b/locale_koKR.lua @@ -0,0 +1,40 @@ +local addonname, addon = ... +local name = "zz_Money" +local L = LibStub("AceLocale-3.0"):NewLocale(name, "koKR", false) +if L then + L[name] = name + L[name..' Settings'] = name..' 설정' + L['Sitzung']='세션' + L['Einnahmen']='수입' + L['Ausgaben']='지출' + L['Heute']='오늘' + L['Gestern']='어제' + L['7-Tage']='7일' + L['Gesamt']='전체' + L['Bankier']='은행' + L['Goldgrenze']='골드 제한' + L['Sende'] = '보내기' + L['Subject'] = '모우기' + L['Minimum Limit']='최소 제한' + L['Desc MinL']='Chars with less than this limit will be show to the banker' + L['Maximum Limit']='최대 제한' + L['Desc MaxL']='Chars with more than this limit will see a button in the send mail window to send it to the banker' + L['Empfaenger']='수령인' + L['Fail']='우편물 발송 실패' + L['Success']=function(name,sum) return format("Sent %s to %s",addon:buildMoneyString(sum,nil,{ ['iconSize'] = addon['db']['global']['iconSize'] or 12}),name) end + L['iconSize']='골드 아이콘 크기' + L['sortDir'] = '위/아래로 툴팁 정렬' + L['nobanker'] = '은행 기능 비활성화' + L['neutral'] = '중립적인 동안 비활성화' + L['accountMoney'] = 'Global Money' + L['accountMoneyDesc'] = 'Show accountwide Money' + L['shortMoney'] = '골드만 표시' + L['abrevK'] = "Shorten money display k" + L['abrevM'] = "Shorten money display m" + L['abrK'] = "k" + L['abrM'] = "m" + L['connectedRealms'] = "List connected Realms" + L['DeleteChar'] = "Delete Char" + L['DeleteCharDesc'] = "Removes all data for this character" + L['DeleteCharOk'] = "Yes, I'm sure!" +end \ No newline at end of file diff --git a/locale_ruRU.lua b/locale_ruRU.lua new file mode 100644 index 0000000..3bb7fcc --- /dev/null +++ b/locale_ruRU.lua @@ -0,0 +1,40 @@ +local addonname, addon = ... +local name = "zz_Money" +local L = LibStub("AceLocale-3.0"):NewLocale(name, "ruRU", false) +if L then + L[name] = name + L[name..' Settings'] = name..' Настройки' + L['Sitzung']='Сессия' + L['Einnahmen']='Доход' + L['Ausgaben']='Расход' + L['Heute']='Сегодня' + L['Gestern']='Вчера' + L['7-Tage']='7-Дней' + L['Gesamt']='Всего' + L['Bankier']='Банкир' + L['Goldgrenze']='Лимит золота' + L['Sende'] = 'Отправить' + L['Subject'] = 'Лишнее золото' + L['Minimum Limit']='Минимальный лимит' + L['Desc MinL']='Персонажи с золотом меньше указанного значения будут показаны банкиру' + L['Maximum Limit']='Максимальный лимит' + L['Desc MaxL']='Персонажи с золотом больше указанного лимита будут видеть кнопку для отправки избытка золота банкиру' + L['Empfaenger']='Бенефициар' + L['Fail']='Не удалось отправить письмо' + L['Success']=function(name,sum) return format("Sent %s to %s",addon:buildMoneyString(sum,nil,{ ['iconSize'] = addon['db']['global']['iconSize'] or 12}),name) end + L['iconSize']='Размер монеты' + L['sortDir'] = 'Сортировка Верх/Низ' + L['nobanker'] = 'Отключить функцию банкира' + L['neutral'] = 'Отключено пока не выбрана фракция' + L['accountMoney'] = 'Золота на аккаунте' + L['accountMoneyDesc'] = 'Показать все золото на аккаунте' + L['shortMoney'] = 'Показывать только золото' + L['abrevK'] = "Сокращать золото до тысяч" + L['abrevM'] = "Сокращать золото до миллионов" + L['abrK'] = "k" + L['abrM'] = "m" + L['connectedRealms'] = "List connected Realms" + L['DeleteChar'] = "Delete Char" + L['DeleteCharDesc'] = "Removes all data for this character" + L['DeleteCharOk'] = "Yes, I'm sure!" +end \ No newline at end of file diff --git a/out.tga b/out.tga new file mode 100644 index 0000000000000000000000000000000000000000..1b2388c7d913d1cba106ded8a469a2ad6b37e887 GIT binary patch literal 1574 zcmY*aZAe>Z6h8MW_ulx?MD5K-s}XHFOHHiRy0#$Q+~OvT4)#$7`# zbgpc+v?8UXB1p)OA|etpi6OXDk*qj-CnBY|)Y+|Uj8Qgl(w#l`ssj_wdEfiK&v|m* zbD#Hw$Vq#jYQk5$!_0Kma-v9&B$6J=q^t?wSSw#yP9j=$tMbD}Y=uZ)E4H@=tu2{U z)2+~Id)>*=d&RYDG16Bn?CmeDZH2TYH#y8mRiN9fJ@b$~4HIj4_SldC3*sO(56Dux z&);QAw92HevAcZeCxq_6`Yo7B+Jc+pe7pZ}mq~(&tX2@b!YMjw1nYaP9`|1$9lA!Adr?8ES}3dWO@o@ z=}4gVlBo*wAcN^SzKkDb(Kr=a>YTGh?x4SRzN3%UiO49}W(gzC(k{eg4Y9WzFj!d{AC7yl5Ch z$uigN;d0mLXP%0Y_x-+DOUIi3dvYfQDt&K{Hzl&8$l_Gb>Z-rbwxa*li^-X^>-Dg5D-%a!j1`RbKjDq-m&R z3Ph89jkHOIhNiY)>!eN3g83%wBIyX%QwG*0$;zd|*BNbY%s~ceNI*}aW=H}@o5l;q z%wB^wQVgM`p_DW@GvLh5k~Vh}b`h_x6{F25+vn30^(95)k6&znzMXl#PTHcC<qd z>(JRO459ZCdLN;S2%VJdVoRirhuyAt;dJ;BioAlOs3u}na|;&>8!grTcK+S(UvOMVqwD*FSIuPj+gS3uMqvhQsa@|I2g$AL059SR7-C4 z9dIVMG*?mbA9qRekFt`fe3|QRywo}Qg}XFy!SIeWH=IZnhfhoi_HDxXM#6@XD6}>G z1!X?t%QF4RQd965zw}D%X{l>8LelMEl*HHzD%?>RL?82z9CN{(m@CJQPl#5X?F$XY z8)1(pQFyg^8-;q#Jvwc(q+!-_bepLp{sTF0xagT5sK> wqAuCqvRk^~IM7{LRM8t8vg&hZzuWsCc;~HmBNsZ}?s)Tj=)LxiHzHyB4 +