diff --git a/DataBase.lua b/DataBase.lua
deleted file mode 100644
index aec6411..0000000
--- a/DataBase.lua
+++ /dev/null
@@ -1,509 +0,0 @@
--- DataBase v0.01
-----------------------------
--- Список команд:
--- /db cls - очистить собраные данные
-----------------------------
--- Сделать: тултипы, подсветку, занято/свободно
-
--- Пригодится:
--- WINDOW_MANAGER:GetMouseOverControl()
--- ZO_FeedbackPanel - "loading... - смотреть инвентарь когда она исчезла?
-
-
-
-DB = { }
-
-DB.version=0.20
-
-DB.dataDefaultItems = {
- data = {}
-}
-
-for i=1,GetNumGuilds() do
- DB.dataDefaultItems.data[GetGuildName(i)]={}
-end
-
-DB.dataDefaultParams = {
- DBUI_Menu = {10,10},
- DBUI_Container = {530,380}
-}
-
-DB.UI_Movable=false
-DB.AddonReady=false
-DB.TempData={}
-DB.GCountOnUpdateTimer=0
-
-function DB.OnLoad(eventCode, addOnName)
- if (addOnName ~= "DataBase" ) then return end
-
- --добавляем команду
- SLASH_COMMANDS["/db"] = commandHandler
-
- --Регистрация эвентов
- EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_OPEN_BANK, DB.PL_Opened)
- EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_CLOSE_BANK, DB.PL_Closed)
- -- EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_GUILD_BANK_SELECTED, DB.GB_Selected)
- EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_OPEN_GUILD_BANK, DB.GB_Opened)
- EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_GUILD_BANK_ITEMS_READY, DB.GB_Ready)
-
- --Загрузка сохраненных переменных
- DB.items= ZO_SavedVars:New( "DB_SavedVars" , 2, "items" , DB.dataDefaultItems, nil )
- DB.params= ZO_SavedVars:New( "DB_SavedVars" , 2, "params" , DB.dataDefaultParams, nil )
-
- --Инициализация графического интерфейся
- db_UI = WINDOW_MANAGER:CreateTopLevelWindow("DBUI")
-
- -- Создаем меню
- DB.CreateMenu()
- -- Создаем банк
- DB.CreateBank()
-
- DB.AddonReady=true
-end
-
-
-function DB.CreateMenu()
- db_UI.Menu=WINDOW_MANAGER:CreateControl("DBUI_Menu",DBUI,CT_CONTROL)
- db_UI.Menu.BG = WINDOW_MANAGER:CreateControl("DBUI_Menu_BG",DBUI_Menu,CT_BACKDROP)
- db_UI.Menu.Title = WINDOW_MANAGER:CreateControl("DBUI_Menu_Title",DBUI_Menu,CT_LABEL)
- db_UI.Menu.Button={}
- db_UI.Menu.Button.Guild = WINDOW_MANAGER:CreateControl("DBUI_Menu_Button_Guild",DBUI_Menu,CT_BUTTON)
- db_UI.Menu.Button.Player = WINDOW_MANAGER:CreateControl("DBUI_Menu_Button_Player",DBUI_Menu,CT_BUTTON)
- db_UI.Menu.Button.Move = WINDOW_MANAGER:CreateControl("DBUI_Menu_Button_Move",DBUI_Menu,CT_BUTTON)
-
- --Обработчики событий
-
- -- Клик по гильдии
- db_UI.Menu.Button.Guild:SetHandler( "OnClicked" , function(self)
- local bool = not(DBUI_Container:IsHidden())
- DB.CurrentLastValue=11
-
- if DBUI_Container:IsHidden() then
- DB.PrepareBankValues("Guild")
- DB.FillBank(DB.CurrentLastValue)
- end
- DB.HideContainer(bool)
- end )
-
- -- Клик по игроку
- db_UI.Menu.Button.Player:SetHandler( "OnClicked" , function(self)
- local bool = not(DBUI_Container:IsHidden())
- DB.CurrentLastValue=11
-
- if DBUI_Container:IsHidden() then
- DB.PrepareBankValues("Player")
- DB.FillBank(DB.CurrentLastValue)
- end
- DB.HideContainer(bool)
- end )
-
- -- Клик по M
- db_UI.Menu.Button.Move:SetHandler( "OnClicked" , function(self)
- if DB.UI_Movable then
- db_UI.Menu:SetMovable(true)
- DBUI_Container:SetMovable(true)
- DB.UI_Movable=false
- else
- db_UI.Menu:SetMovable(false)
- DBUI_Container:SetMovable(false)
- DB.UI_Movable=true
- end
- end )
-
- DBUI_Menu:SetHandler("OnMouseUp" , function(self) DB.MouseUp(self) end)
- DBUI_Container:SetHandler("OnMouseUp" , function(self) DB.MouseUp(self) end)
-
- --Настройки меню
- db_UI.Menu:SetAnchor(TOPLEFT,DBUI,TOPLEFT,DB.params.DBUI_Menu[1],DB.params.DBUI_Menu[2])
- db_UI.Menu:SetDimensions(200,50)
- db_UI.Menu:SetMouseEnabled(true)
-
- if DB.UI_Movable then
- db_UI:SetMovable(true)
- DB.UI_Movable=false
- else
- db_UI:SetMovable(false)
- DB.UI_Movable=true
- end
-
- --Фон
- db_UI.Menu.BG:SetAnchor(BOTTOM,DBUI_Menu,BOTTOM,0,0)
- db_UI.Menu.BG:SetDimensions(200,50)
- db_UI.Menu.BG:SetCenterColor(0,0,0,1)
- db_UI.Menu.BG:SetEdgeColor(0,0,0,1)
- db_UI.Menu.BG:SetEdgeTexture("", 8, 1, 1)
- db_UI.Menu.BG:SetAlpha(0.5)
-
- --Заголовок
- db_UI.Menu.Title:SetAnchor(TOP,DBUI_Menu,TOP,0,0)
- db_UI.Menu.Title:SetFont("ZoFontGame" )
- db_UI.Menu.Title:SetColor(255,255,255,1.5)
- db_UI.Menu.Title:SetText( "|cff8000Bank Storage|" )
-
- -- Кнопка "Гильдия"
- db_UI.Menu.Button.Guild:SetAnchor(TOP,DBUI_Menu,TOPRIGHT,-150,20)
- db_UI.Menu.Button.Guild:SetText("[Guild]")
- db_UI.Menu.Button.Guild:SetDimensions(70,25)
- db_UI.Menu.Button.Guild:SetFont("ZoFontGameBold")
- db_UI.Menu.Button.Guild:SetNormalFontColor(0,255,255,.7)
- db_UI.Menu.Button.Guild:SetMouseOverFontColor(0.8,0.4,0,1)
-
- -- Кнопка "Игрок"
- db_UI.Menu.Button.Player:SetAnchor(TOP,DBUI_Menu,TOPRIGHT,-90,20)
- db_UI.Menu.Button.Player:SetText("[Player]")
- db_UI.Menu.Button.Player:SetDimensions(70,25)
- db_UI.Menu.Button.Player:SetFont("ZoFontGameBold")
- db_UI.Menu.Button.Player:SetNormalFontColor(0,255,255,.7)
- db_UI.Menu.Button.Player:SetMouseOverFontColor(0.8,0.4,0,1)
-
- -- Кнопка "M"
- db_UI.Menu.Button.Move:SetAnchor(TOP,DBUI_Menu,TOPRIGHT,-40,20)
- db_UI.Menu.Button.Move:SetText("[M]")
- db_UI.Menu.Button.Move:SetDimensions(40,25)
- db_UI.Menu.Button.Move:SetFont("ZoFontGameBold")
- db_UI.Menu.Button.Move:SetNormalFontColor(0,255,255,.7)
- db_UI.Menu.Button.Move:SetMouseOverFontColor(0.8,0.4,0,1)
-end
-
-function DB.CreateBank()
- local OldAnchor=false
-
- --Настройки контейнера
- DBUI_Container:SetParent(DBUI)
- DBUI_Container:SetAnchor(TOPLEFT,GuiRoot,TOPLEFT,DB.params.DBUI_Container[1],DB.params.DBUI_Container[2])
- DBUI_Container:SetDimensions(560,640)
- DBUI_Container:SetMouseEnabled(true)
- DBUI_Container:SetHidden(true)
-
- -- Фон
- DBUI_ContainerBg:SetAnchor(TOPLEFT,DBUI_Container,TOPLEFT,10,0)
- DBUI_ContainerBg:SetCenterColor(0,0,0,0.5)
- DBUI_ContainerBg:SetEdgeColor(0,0,0,0.5)
- DBUI_ContainerBg:SetDimensions(DBUI_Container:GetDimensions())
-
- -- + Правим заголовок
- DBUI_ContainerTitle:SetAnchor(TOP,DBUI_Container,TOP,0,15)
- DBUI_ContainerTitle:SetFont("ZoFontGame")
- DBUI_ContainerTitle:SetText( "|cff8000Offline Bank Storage|" )
- DBUI_ContainerTitle:SetHeight(150)
-
- -- + Правим Слайдер
- DBUI_ContainerSlider:SetAnchor(BOTTOM,DBUI_Container,BOTTOMRIGHT,0,-15)
- DBUI_ContainerSlider:SetValue(11)
- DBUI_ContainerSlider:SetWidth(ZO_PlayerBankBackpackScrollBar:GetWidth())
- DBUI_ContainerSlider:SetHeight(550)
- DBUI_ContainerSlider:SetAllowDraggingFromThumb(true)
-
- for i = 1, 11 do
- local dynamicControl = CreateControlFromVirtual("DBUI_Row", DBUI_Container, "TemplateRow",i)
- -- _G[] - позволяет подставлять динамические имена переменных
-
- -- Строка
- local fromtop=60
- _G["DBUI_Row"..i]:ClearAnchors()
- _G["DBUI_Row"..i]:SetAnchor(TOP,DBUI_Container,TOP,0,fromtop+52*(i-1))
- _G["DBUI_Row"..i]:SetDimensions (530,52)
-
-
- -- Фон
- _G["DBUI_Row"..i.."Bg"]:SetColor(1,1,1,1)
- --На самом деле это хак ('notexture'). Не могу найти нормальную текстуру
- _G["DBUI_Row"..i.."Bg"]:SetTexture('notexture')
- _G["DBUI_Row"..i.."Bg"]:SetDimensions (549,59)
- _G["DBUI_Row"..i.."Bg"]:GetTextureFileDimensions(512,64)
-
- -- Кнопка
- OldAnchor=_G["DBUI_Row"..i.."Button"]:GetParent()
-
- --Иконка
- OldAnchor=_G["DBUI_Row"..i.."ButtonIcon"]:GetParent()
- -- Это не ошибки. Привязки ниже идут к другому якорю.
- _G["DBUI_Row"..i.."ButtonIcon"]:ClearAnchors()
- _G["DBUI_Row"..i.."ButtonIcon"]:SetAnchor(TOPLEFT,OldAnchor,TOPLEFT,0,0)
- _G["DBUI_Row"..i.."ButtonIcon"]:SetColor(1,1,1,1)
- _G["DBUI_Row"..i.."ButtonIcon"]:SetDimensions (40,40)
- _G["DBUI_Row"..i.."ButtonIcon"]:GetTextureFileDimensions(64,64)
-
- --Количество
- _G["DBUI_Row"..i.."ButtonStackCount"]:ClearAnchors()
- _G["DBUI_Row"..i.."ButtonStackCount"]:SetAnchor(TOPLEFT,OldAnchor,TOPLEFT,20,20)
- _G["DBUI_Row"..i.."ButtonStackCount"]:SetDimensions (38,35)
-
- -- Наименование
- _G["DBUI_Row"..i.."Name"]:ClearAnchors()
- _G["DBUI_Row"..i.."Name"]:SetAnchor(CENTERLEFT,OldAnchor,CENTERLEFT,50,15)
-
-
- -- Отображение статов
- _G["DBUI_Row"..i.."StatValue"]:ClearAnchors()
- _G["DBUI_Row"..i.."StatValue"]:SetAnchor(CENTERLEFT,OldAnchor,CENTERLEFT,380,15)
-
- -- Цена
- _G["DBUI_Row"..i.."SellPrice"]:ClearAnchors()
- _G["DBUI_Row"..i.."SellPrice"]:SetAnchor(CENTERLEFT,OldAnchor,CENTERLEFT,480,15)
-
- _G["DBUI_Row"..i.."Highlight"]:SetHidden(true)
- end
-end
-
-function DB.PrepareBankValues(PrepareType)
- DB.BankValueTable={}
-
- if PrepareType=="Player" then
- d("Preparing Player values")
- bagIcon, bagSlots=GetBagInfo(BAG_BANK)
- DB.ItemCounter=0
- while (DB.ItemCounter < bagSlots) do
- if GetItemName(BAG_BANK,DB.ItemCounter)~="" then
-
- --Избавляемся от мусора при сохранении
- local clearlink=string.gsub(GetItemLink(BAG_BANK,DB.ItemCounter), "(^p)", "")
- clearlink=string.gsub(clearlink, "(^n)", "")
-
- local start,finish=string.find(clearlink,'|h.+|h')
- local nameClear=string.sub(clearlink,start+2,finish-2)
- local count = GetSlotStackSize(BAG_BANK,DB.ItemCounter)
- local statvalue = GetItemStatValue(BAG_BANK,DB.ItemCounter)
- local quality = GetItemInfo(BAG_BANK,DB.ItemCounter)
-
- local icon,sellPrice,meetsUsageRequirement,equipType,itemStyle = GetItemLinkInfo(clearlink)
- iconFile=icon
-
- DB.BankValueTable[#DB.BankValueTable+1]={
- ["link"]=tostring(clearlink),
- ["icon"] = tostring(iconFile),
- ["name"]=tostring(nameClear),
- ["count"]=tostring(count),
- ["statvalue"]=tostring(statvalue),
- ["sellPrice"] = tostring(sellPrice),
- ["quality"] = tostring(quality)
-
- }
- end
- DB.ItemCounter=DB.ItemCounter+1
- end
- elseif PrepareType=="Guild" then
- d("Preparing Guild values")
- -- Пока только для первой гильдии
- -- local guildname=tostring(GetGuildName(GetSelectedGuildBankId()))
- local guildname=tostring(GetGuildName(1))
- DB.BankValueTable=DB.items.data[guildname]
- else
- d("Unknown prepare type: "..tostring(PrepareType))
- end
-
- DBUI_ContainerSlider:SetHandler("OnValueChanged",function(self, value, eventReason)
- DB.FillBank(value)
- end)
-
- for i=1,11 do
- _G["DBUI_Row"..i]:SetHandler("OnMouseWheel" , function(self, delta)
- local calculatedvalue=DB.CurrentLastValue-delta
- if (calculatedvalue>=11) and (calculatedvalue<=#DB.BankValueTable) then
- DB.FillBank(calculatedvalue)
- DBUI_ContainerSlider:SetValue(calculatedvalue)
- end
- end )
- end
-
- DB.SortPreparedValues()
- return DB.BankValueTable
-
-end
-
-function DB.SortPreparedValues()
-
- function compare(a,b)
- -- d("a: "..tostring(a["nameClear"])..", b: "..tostring(b["nameClear"]))
- return a["name"]<b["name"]
- end
-
- table.sort(DB.BankValueTable,compare)
-end
-
-function DB.FillBank(last)
- if last<=1 then d("last<=1") return end
- if (#DB.BankValueTable==0) then
- d("No data avaliable. Open your bank first.")
- DB.HideContainer(true)
- for i=1,11 do
- _G["DBUI_Row"..i]:SetHidden(true)
- end
- return
- else
- local texture='/esoui/art/miscellaneous/scrollbox_elevator.dds'
- DBUI_ContainerSlider:SetMinMax(11,#DB.BankValueTable)
- DBUI_ContainerSlider:SetThumbTexture(texture, texture, texture, 18, (1/#DB.BankValueTable*25000)/3, 0, 0, 1, 1)
- for i=1,11 do
- _G["DBUI_Row"..i]:SetHidden(false)
- end
- end
- DB.CurrentLastValue=last
-
- if #DB.BankValueTable<11 then
- -- Прячем Слайдер
- DBUI_ContainerSlider:SetHidden(true)
- -- Заполнение идёт сверху
- for i=1,#DB.BankValueTable do
- local icon,sellPrice,meetsUsageRequirement,equipType,itemStyle = GetItemLinkInfo(DB.BankValueTable[i].link)
-
- d("icon: "..tostring(icon))
- _G["DBUI_Row"..i.."ButtonIcon"]:SetTexture(DB.BankValueTable[i].icon)
- _G["DBUI_Row"..i.."ButtonStackCount"]:SetText(DB.BankValueTable[i].count)
- _G["DBUI_Row"..i.."Name"]:SetText(DB.BankValueTable[i].link)
- if (DB.BankValueTable[i].statvalue~="0") then
- _G["DBUI_Row"..i.."StatValue"]:SetText(DB.BankValueTable[i].statvalue)
- else
- _G["DBUI_Row"..i.."StatValue"]:SetText("-")
- end
- _G["DBUI_Row"..i.."SellPrice"]:SetText(DB.BankValueTable[i].count*sellPrice)
- end
- -- Прячем пустые строки
- for i=#DB.BankValueTable+1,11 do
- _G["DBUI_Row"..i]:SetHidden(true)
- end
- else
- -- Показываем слайдер
- DBUI_ContainerSlider:SetHidden(false)
- -- Заполнение идёт снизу
- for i=11,1,-1 do
- local icon,sellPrice,meetsUsageRequirement,equipType,itemStyle = GetItemLinkInfo(DB.BankValueTable[last].link)
- _G["DBUI_Row"..i.."ButtonIcon"]:SetTexture(DB.BankValueTable[last].icon)
- _G["DBUI_Row"..i.."ButtonStackCount"]:SetText(DB.BankValueTable[last].count)
- _G["DBUI_Row"..i.."Name"]:SetText(DB.BankValueTable[last].link)
- if (DB.BankValueTable[last].statvalue~="0") then
- _G["DBUI_Row"..i.."StatValue"]:SetText(DB.BankValueTable[last].statvalue)
- else
- _G["DBUI_Row"..i.."StatValue"]:SetText("-")
- end
- _G["DBUI_Row"..i.."SellPrice"]:SetText(DB.BankValueTable[last].count*sellPrice)
- if last<=#DB.BankValueTable and last>1 then
- last=last-1
- else
- last=11
- end
- end
- end
-end
-
-
-
-
-function DB.PL_Opened()
-end
-
-function DB.PL_Closed()
-end
-
-function DB.GB_Opened()
- DB.EventHacked=false
-end
-
-function DB.GB_Ready()
- --хак на срабатывание только 1 события
-
- if (not DB.EventHacked) then
- DB.gcount()
- DB.EventHacked=true
- end
-end
-
-
-
-function commandHandler( text )
- if text=="cls" then
- DB.items.data={}
- DB.params.DBUI_Menu=nil
- DB.params.DBUI_Container=nil
- d("All data cleared")
- else
- d("/db cls - clear all data ")
- end
-end
-
-function DB.gcount()
- if not DB.GCountOnUpdateReady then
- DB.GCountOnUpdateTimer=GetGameTimeMilliseconds()
- DB.GCountOnUpdateReady=true
- end
-end
-
-function DB.MouseUp(self)
- local name = self:GetName()
- local left = self:GetLeft()
- local top = self:GetTop()
-
- if name=="DBUI_Menu" then
- d("Menu saved")
- DB.params.DBUI_Menu={left,top}
- elseif name=="DBUI_Container" then
- d("Container saved")
- DB.params.DBUI_Container={left,top}
- else
- d("Unknown window")
- end
-end
-
-function DB.Update(self)
-if (not DB.AddonReady) then return end
-
- local EscMenuHidden = ZO_GameMenu_InGame:IsHidden()
- local interactHidden = ZO_InteractWindow:IsHidden()
-
- if (EscMenuHidden == false) then
- DBUI_Container:SetHidden(true)
- DBUI_Menu:SetHidden(true)
- elseif (interactHidden == false) then
- DBUI_Container:SetHidden(true)
- DBUI_Menu:SetHidden(true)
- else
- DBUI_Menu:SetHidden(false)
- end
-
- --Хак на проверку инвентаря спустя Х сек после первого срабатывания эвента
- if DB.GCountOnUpdateReady and (GetGameTimeMilliseconds()-DB.GCountOnUpdateTimer>=1000) then
- d("Data saved!")
- local sv=false
- local guildname=tostring(GetGuildName(GetSelectedGuildBankId()))
-
- bagIcon, bagSlots=GetBagInfo(BAG_GUILDBANK)
-
- DB.items.data[guildname]={}
-
- sv = DB.items.data[guildname]
-
- for i=1, #ZO_GuildBankBackpack.data do
- name=ZO_GuildBankBackpack.data[i].data.name
- count=ZO_GuildBankBackpack.data[i].data.stackCount
- statValue=ZO_GuildBankBackpack.data[i].data.statValue
- sellPrice=ZO_GuildBankBackpack.data[i].data.sellPrice
- quality=ZO_GuildBankBackpack.data[i].data.quality
- iconFile=ZO_GuildBankBackpack.data[i].data.iconFile
- slotIndex=ZO_GuildBankBackpack.data[i].data.slotIndex
- link = GetItemLink(BAG_GUILDBANK,slotIndex)
- clearlink =string.gsub(link, "(^p)", "")
- clearlink =string.gsub(clearlink, "(^n)", "")
-
- sv[#sv+1] =
- {
- ["link"] = tostring(clearlink),
- ["icon"] = tostring(iconFile),
- ["name"] = tostring(name),
- ["count"] = tostring(count),
- ["statvalue"] = tostring(statValue),
- ["sellPrice"] = tostring(sellPrice),
- ["quality"] = tostring(quality)
- }
- end
- DB.GCountOnUpdateReady=false
- end
-
-end
-
-function DB.HideContainer(value)
- DBUI_Container:SetHidden(value)
- -- d("GuildBankHideValue: "..tostring(value))
-end
-
---Инициализация Аддона
-EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_ADD_ON_LOADED, DB.OnLoad)
\ No newline at end of file
diff --git a/DataBase.txt b/DataBase.txt
deleted file mode 100644
index 3163bf8..0000000
--- a/DataBase.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-## Title: DataBase
-## APIVersion: 100003
-## SavedVariables: DB_SavedVars
-
-DataBase.lua
-DataBase.xml
\ No newline at end of file
diff --git a/DataBase.xml b/DataBase.xml
deleted file mode 100644
index 13c429a..0000000
--- a/DataBase.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<GuiXml>
- <Controls>
- <TopLevelControl name="dbBLANK">
- <OnUpdate>
- DB.Update(self)
- </OnUpdate>
- </TopLevelControl>
- <!-- Заготовка отображения информации о предмете -->
- <Control name="DBUI_Container" mouseEnabled="true">
- <Controls>
- <!-- Фон -->
- <Backdrop name="$(parent)Bg">
- <!-- <AnchorFill/> -->
- </Backdrop>
-
- <!-- Заголовок -->
- <Label name="$(parent)Title" font="ZoFontGame">
- <!-- <AnchorFill/> -->
- </Label>
-
- <!-- Счетчик вещей -->
- <Label name="$(parent)ItemCounter" font="ZoFontGame" color="white">
- <AnchorFill/>
- </Label>
-
- <!-- Слайдер -->
- <Slider name="$(parent)Slider" mouseEnabled="true" step="1">
- <!-- <AnchorFill/> -->
- </Slider>
-
- </Controls>
- </Control>
- <Control name="TemplateRow" virtual="true" mouseEnabled="true">
- <AnchorFill/>
- <Controls>
- <!-- Фон -->
- <Texture name="$(parent)Bg">
- <AnchorFill/>
- </Texture>
-
- <!-- Подсветка -->
- <Texture name="$(parent)Highlight">
- <AnchorFill/>
- </Texture>
-
- <!-- Новый статус -->
- <Control name="$(parent)NewStatus">
- <AnchorFill/>
- </Control>
-
- <!-- Кнопка -->
- <Control name="$(parent)Button">
- <AnchorFill/>
- <Controls>
- <Texture name="$(parent)Icon">
- <AnchorFill/>
- </Texture>
-
- <Label name="$(parent)StackCount" font="ZoFontGame" color="white">
- <AnchorFill/>
- </Label>
- </Controls>
- </Control>
-
- <!-- Имя -->
- <Label name="$(parent)Name" font="ZoFontGame" color="white">
- <AnchorFill/>
- </Label>
-
- <!-- Значение -->
- <Label name="$(parent)StatValue" font="ZoFontGame" color="white">
- <AnchorFill/>
- </Label>
-
- <!-- Цена -->
- <Label name="$(parent)SellPrice" font="ZoFontGame" color="white">
- <AnchorFill/>
- </Label>
- </Controls>
- </Control>
- </Controls>
-</GuiXml>
\ No newline at end of file
diff --git a/MobileBank.lua b/MobileBank.lua
new file mode 100644
index 0000000..b30c28d
--- /dev/null
+++ b/MobileBank.lua
@@ -0,0 +1,633 @@
+-- MobileBank v0.25
+----------------------------
+-- Список команд:
+-- /db cls - очистить собраные данные
+----------------------------
+
+
+
+MB = { }
+
+MB.version=0.25
+
+MB.dataDefaultItems = {
+ data = {}
+}
+
+for i=1,GetNumGuilds() do
+ MB.dataDefaultItems.data[i]={
+ [GetGuildName(i)]={}
+ }
+end
+
+MB.dataDefaultParams = {
+ MBUI_Menu = {10,10},
+ MBUI_Container = {530,380}
+}
+
+MB.GuildNames = {}
+
+MB.UI_Movable=false
+MB.AddonReady=false
+MB.TempData={}
+MB.GCountOnUpdateTimer=0
+MB.GuildBankIdToPrepare=1
+MB.Dedug=false
+MB.PreviousButtonClicked=nil
+MB.LastButtonClicked=nil
+
+function debug(text)
+ if MB.Debug then
+ d(text)
+ end
+end
+
+function MB.OnLoad(eventCode, addOnName)
+ if (addOnName ~= "MobileBank" ) then return end
+
+ --добавляем команду
+ SLASH_COMMANDS["/mb"] = commandHandler
+
+ --Регистрация эвентов
+ EVENT_MANAGER:RegisterForEvent("MobileBank", EVENT_OPEN_BANK, MB.PL_Opened)
+ EVENT_MANAGER:RegisterForEvent("MobileBank", EVENT_CLOSE_BANK, MB.PL_Closed)
+ -- EVENT_MANAGER:RegisterForEvent("MobileBank", EVENT_GUILD_BANK_SELECTED, MB.GB_Selected)
+ EVENT_MANAGER:RegisterForEvent("MobileBank", EVENT_OPEN_GUILD_BANK, MB.GB_Opened)
+ EVENT_MANAGER:RegisterForEvent("MobileBank", EVENT_GUILD_BANK_ITEMS_READY, MB.GB_Ready)
+
+ --Загрузка сохраненных переменных
+ MB.items= ZO_SavedVars:New( "MB_SavedVars" , 2, "items" , MB.dataDefaultItems, nil )
+ MB.params= ZO_SavedVars:New( "MB_SavedVars" , 2, "params" , MB.dataDefaultParams, nil )
+
+ --Инициализация графического интерфейся
+ MB_UI = WINDOW_MANAGER:CreateTopLevelWindow("MBUI")
+
+ -- Создаем меню
+ MB.CreateMenu()
+ -- Создаем банк
+ MB.CreateBank()
+
+ MB.AddonReady=true
+end
+
+
+function MB.CreateMenu()
+ MB_UI.Menu=WINDOW_MANAGER:CreateControl("MBUI_Menu",MBUI,CT_CONTROL)
+ MB_UI.Menu.BG = WINDOW_MANAGER:CreateControl("MBUI_Menu_BG",MBUI_Menu,CT_BACKDROP)
+ MB_UI.Menu.Title = WINDOW_MANAGER:CreateControl("MBUI_Menu_Title",MBUI_Menu,CT_LABEL)
+ MB_UI.Menu.Button={}
+ MB_UI.Menu.Button.Guild = WINDOW_MANAGER:CreateControl("MBUI_Menu_Button_Guild",MBUI_Menu,CT_BUTTON)
+ MB_UI.Menu.Button.Player = WINDOW_MANAGER:CreateControl("MBUI_Menu_Button_Player",MBUI_Menu,CT_BUTTON)
+ MB_UI.Menu.Button.Move = WINDOW_MANAGER:CreateControl("MBUI_Menu_Button_Move",MBUI_Menu,CT_BUTTON)
+
+ --Обработчики событий
+
+ -- Клик по гильдии
+ MB_UI.Menu.Button.Guild:SetHandler( "OnClicked" , function(self)
+ local bool = not(MBUI_Container:IsHidden())
+ MB.PreviousButtonClicked=MB.LastButtonClicked
+ MB.LastButtonClicked="Guild"
+
+ MB.CurrentLastValue=11
+
+ MB.PrepareBankValues("Guild",1)
+ MB.FillBank(MB.CurrentLastValue)
+ MB.HideContainer(bool)
+ end )
+
+ -- Клик по игроку
+ MB_UI.Menu.Button.Player:SetHandler( "OnClicked" , function(self)
+ local bool = not(MBUI_Container:IsHidden())
+ MB.PreviousButtonClicked=MB.LastButtonClicked
+ MB.LastButtonClicked="Player"
+
+ if MB.PlayerShown then
+ bool=false
+ end
+
+ MB.CurrentLastValue=11
+
+ MB.PrepareBankValues("Player")
+ MB.FillBank(MB.CurrentLastValue)
+ MB.HideContainer(bool)
+ end )
+
+ -- Клик по M
+ MB_UI.Menu.Button.Move:SetHandler( "OnClicked" , function(self)
+ if MB.UI_Movable then
+ MB_UI.Menu:SetMovable(true)
+ MBUI_Container:SetMovable(true)
+ MB.UI_Movable=false
+ else
+ MB_UI.Menu:SetMovable(false)
+ MBUI_Container:SetMovable(false)
+ MB.UI_Movable=true
+ end
+ end )
+
+ MBUI_Menu:SetHandler("OnMouseUp" , function(self) MB.MouseUp(self) end)
+ MBUI_Container:SetHandler("OnMouseUp" , function(self) MB.MouseUp(self) end)
+
+ --Настройки меню
+ MB_UI.Menu:SetAnchor(TOPLEFT,MBUI,TOPLEFT,MB.params.MBUI_Menu[1],MB.params.MBUI_Menu[2])
+ MB_UI.Menu:SetDimensions(200,50)
+ MB_UI.Menu:SetMouseEnabled(true)
+
+ if MB.UI_Movable then
+ MB_UI:SetMovable(true)
+ MB.UI_Movable=false
+ else
+ MB_UI:SetMovable(false)
+ MB.UI_Movable=true
+ end
+
+ --Фон
+ MB_UI.Menu.BG:SetAnchor(BOTTOM,MBUI_Menu,BOTTOM,0,0)
+ MB_UI.Menu.BG:SetDimensions(200,50)
+ MB_UI.Menu.BG:SetCenterColor(0,0,0,1)
+ MB_UI.Menu.BG:SetEdgeColor(0,0,0,1)
+ MB_UI.Menu.BG:SetEdgeTexture("", 8, 1, 1)
+ MB_UI.Menu.BG:SetAlpha(0.5)
+
+ --Заголовок
+ MB_UI.Menu.Title:SetAnchor(TOP,MBUI_Menu,TOP,0,0)
+ MB_UI.Menu.Title:SetFont("ZoFontGame" )
+ MB_UI.Menu.Title:SetColor(255,255,255,1.5)
+ MB_UI.Menu.Title:SetText( "|cff8000Bank Storage|" )
+
+ -- Кнопка "Гильдия"
+ MB_UI.Menu.Button.Guild:SetAnchor(TOP,MBUI_Menu,TOPRIGHT,-150,20)
+ MB_UI.Menu.Button.Guild:SetText("[Guild]")
+ MB_UI.Menu.Button.Guild:SetDimensions(70,25)
+ MB_UI.Menu.Button.Guild:SetFont("ZoFontGameBold")
+ MB_UI.Menu.Button.Guild:SetNormalFontColor(0,255,255,.7)
+ MB_UI.Menu.Button.Guild:SetMouseOverFontColor(0.8,0.4,0,1)
+
+ -- Кнопка "Игрок"
+ MB_UI.Menu.Button.Player:SetAnchor(TOP,MBUI_Menu,TOPRIGHT,-90,20)
+ MB_UI.Menu.Button.Player:SetText("[Player]")
+ MB_UI.Menu.Button.Player:SetDimensions(70,25)
+ MB_UI.Menu.Button.Player:SetFont("ZoFontGameBold")
+ MB_UI.Menu.Button.Player:SetNormalFontColor(0,255,255,.7)
+ MB_UI.Menu.Button.Player:SetMouseOverFontColor(0.8,0.4,0,1)
+
+ -- Кнопка "M"
+ MB_UI.Menu.Button.Move:SetAnchor(TOP,MBUI_Menu,TOPRIGHT,-40,20)
+ MB_UI.Menu.Button.Move:SetText("[M]")
+ MB_UI.Menu.Button.Move:SetDimensions(40,25)
+ MB_UI.Menu.Button.Move:SetFont("ZoFontGameBold")
+ MB_UI.Menu.Button.Move:SetNormalFontColor(0,255,255,.7)
+ MB_UI.Menu.Button.Move:SetMouseOverFontColor(0.8,0.4,0,1)
+end
+
+function MB.CreateBank()
+ local OldAnchor=false
+
+ --Настройки контейнера
+ MBUI_Container:SetParent(MBUI)
+ MBUI_Container:SetAnchor(TOPLEFT,GuiRoot,TOPLEFT,MB.params.MBUI_Container[1],MB.params.MBUI_Container[2])
+ MBUI_Container:SetDimensions(560,720)
+ MBUI_Container:SetMouseEnabled(true)
+ MBUI_Container:SetHidden(true)
+
+ -- Фон
+ MBUI_ContainerBg:SetAnchor(TOPLEFT,MBUI_Container,TOPLEFT,10,0)
+ MBUI_ContainerBg:SetCenterColor(0,0,0,0.5)
+ MBUI_ContainerBg:SetEdgeColor(0,0,0,0.5)
+ MBUI_ContainerBg:SetDimensions(MBUI_Container:GetDimensions())
+
+ -- + Правим Заглавие
+ MBUI_ContainerTitle:SetAnchor(TOP,MBUI_Container,TOP,0,15)
+ MBUI_ContainerTitle:SetFont("ZoFontGame")
+ MBUI_ContainerTitle:SetText( "|cff8000Offline Bank Storage|" )
+ MBUI_ContainerTitle:SetHeight(150)
+
+ -- Правим Заголовки
+ MBUI_ContainerTitleName:SetAnchor(TOP,MBUI_ContainerTitle,LEFT,-100,-15)
+ MBUI_ContainerTitleStat:SetAnchor(TOP,MBUI_ContainerTitle,CENTER,130,-15)
+ MBUI_ContainerTitleValue:SetAnchor(TOP,MBUI_ContainerTitle,RIGHT,155,-15)
+
+ -- Правим Содержание банка
+ MBUI_ContainerItemCounter:SetAnchor(CENTER,MBUI_Container,BOTTOM,0,-17)
+
+ -- + Правим Слайдер
+ MBUI_ContainerSlider:SetAnchor(BOTTOM,MBUI_Container,BOTTOMRIGHT,0,-50)
+ MBUI_ContainerSlider:SetValue(11)
+ MBUI_ContainerSlider:SetWidth(ZO_PlayerBankBackpackScrollBar:GetWidth())
+ MBUI_ContainerSlider:SetHeight(565)
+ MBUI_ContainerSlider:SetAllowDraggingFromThumb(true)
+
+ -- Создаем кнопки для переключения между гильдбанками
+ local nextXstep=0
+ for i=1,#MB.items.data do
+
+ -- Сохраняем названия гильдий из Ключей(да, да...)
+ for k, v in pairs(MB.items.data[i]) do
+ MB.GuildNames[#MB.GuildNames+1] = k
+ end
+
+ local guildname=tostring(MB.GuildNames[i])
+ WINDOW_MANAGER:CreateControl("MBUI_ContainerTitleGuildButton"..i,MBUI_ContainerTitle,CT_BUTTON)
+ _G["MBUI_ContainerTitleGuildButton"..i]:SetParent(MBUI_ContainerTitleGuildButtons)
+ _G["MBUI_ContainerTitleGuildButton"..i]:SetFont("ZoFontGame" )
+ nextXstep=(MBUI_Container:GetWidth()/#MB.items.data*i)
+ _G["MBUI_ContainerTitleGuildButton"..i]:SetDimensions(MBUI_Container:GetWidth()/#MB.items.data,20)
+ -- Делаем поправку на ширину самой кнопки
+ _G["MBUI_ContainerTitleGuildButton"..i]:SetAnchor(TOP,MBUI_Container,TOPLEFT,nextXstep-_G["MBUI_ContainerTitleGuildButton"..i]:GetWidth()/2,40)
+ _G["MBUI_ContainerTitleGuildButton"..i]:SetText("["..guildname.."]")
+ _G["MBUI_ContainerTitleGuildButton"..i]:SetNormalFontColor(0,255,255,.7)
+ _G["MBUI_ContainerTitleGuildButton"..i]:SetMouseOverFontColor(0.8,0.4,0,1)
+
+ _G["MBUI_ContainerTitleGuildButton"..i]:SetHandler( "OnClicked" , function(self)
+ MB.PrepareBankValues("Guild",i)
+ MB.SortPreparedValues()
+ MB.FillBank(11)
+ end)
+
+
+ end
+
+ -- Создаем строки
+ for i = 1, 11 do
+ local dynamicControl = CreateControlFromVirtual("MBUI_Row", MBUI_Container, "TemplateRow",i)
+ -- _G[] - позволяет подставлять динамические имена переменных
+
+ -- Строка
+ local fromtop=100
+ _G["MBUI_Row"..i]:ClearAnchors()
+ _G["MBUI_Row"..i]:SetAnchor(TOP,MBUI_Container,TOP,0,fromtop+52*(i-1))
+ _G["MBUI_Row"..i]:SetDimensions (530,52)
+
+ -- Фон
+ _G["MBUI_Row"..i.."Bg"]:SetColor(1,1,1,1)
+ --На самом деле это хак ('notexture'). Не могу найти нормальную текстуру
+ _G["MBUI_Row"..i.."Bg"]:SetTexture('notexture')
+ _G["MBUI_Row"..i.."Bg"]:SetDimensions (549,59)
+ _G["MBUI_Row"..i.."Bg"]:GetTextureFileDimensions(512,64)
+
+ -- Кнопка
+ OldAnchor=_G["MBUI_Row"..i.."Button"]:GetParent()
+
+ --Иконка
+ OldAnchor=_G["MBUI_Row"..i.."ButtonIcon"]:GetParent()
+ -- Это не ошибки. Привязки ниже идут к другому якорю.
+ _G["MBUI_Row"..i.."ButtonIcon"]:ClearAnchors()
+ _G["MBUI_Row"..i.."ButtonIcon"]:SetAnchor(TOPLEFT,OldAnchor,TOPLEFT,0,0)
+ _G["MBUI_Row"..i.."ButtonIcon"]:SetColor(1,1,1,1)
+ _G["MBUI_Row"..i.."ButtonIcon"]:SetDimensions (40,40)
+ _G["MBUI_Row"..i.."ButtonIcon"]:GetTextureFileDimensions(64,64)
+
+ --Количество
+ _G["MBUI_Row"..i.."ButtonStackCount"]:ClearAnchors()
+ _G["MBUI_Row"..i.."ButtonStackCount"]:SetAnchor(TOPLEFT,OldAnchor,TOPLEFT,20,20)
+ _G["MBUI_Row"..i.."ButtonStackCount"]:SetDimensions (38,35)
+
+ -- Наименование
+ _G["MBUI_Row"..i.."Name"]:ClearAnchors()
+ _G["MBUI_Row"..i.."Name"]:SetAnchor(CENTERLEFT,OldAnchor,CENTERLEFT,50,15)
+
+
+ -- Отображение статов
+ _G["MBUI_Row"..i.."StatValue"]:ClearAnchors()
+ _G["MBUI_Row"..i.."StatValue"]:SetAnchor(CENTERLEFT,OldAnchor,CENTERLEFT,380,15)
+
+ -- Цена
+ _G["MBUI_Row"..i.."SellPrice"]:ClearAnchors()
+ _G["MBUI_Row"..i.."SellPrice"]:SetAnchor(CENTERLEFT,OldAnchor,CENTERLEFT,480,15)
+
+ _G["MBUI_Row"..i.."Highlight"]:SetEdgeTexture("", 8, 1, 1)
+ _G["MBUI_Row"..i.."Highlight"]:SetCenterColor(0,0,0,0.5)
+ _G["MBUI_Row"..i.."Highlight"]:SetEdgeColor(0,0,0,0.5)
+ end
+end
+
+function MB.PrepareBankValues(PrepareType,GuildBankIdToPrepare)
+ MB.GuildBankIdToPrepare=GuildBankIdToPrepare
+ MB.BankValueTable={}
+ MB.BankMaxCapacity=0
+
+ if PrepareType=="Player" then
+ debug("Preparing Player values")
+ bagIcon, bagSlots=GetBagInfo(BAG_BANK)
+ MB.BankMaxCapacity=bagSlots
+ MB.ItemCounter=0
+ while (MB.ItemCounter < bagSlots) do
+ if GetItemName(BAG_BANK,MB.ItemCounter)~="" then
+
+ --Избавляемся от мусора при сохранении
+ local clearlink=string.gsub(GetItemLink(BAG_BANK,MB.ItemCounter), "(^p)", "")
+ clearlink=string.gsub(clearlink, "(^n)", "")
+
+ local start,finish=string.find(clearlink,'|h.+|h')
+ local nameClear=string.sub(clearlink,start+2,finish-2)
+ local count = GetSlotStackSize(BAG_BANK,MB.ItemCounter)
+ local statvalue = GetItemStatValue(BAG_BANK,MB.ItemCounter)
+ local quality = GetItemInfo(BAG_BANK,MB.ItemCounter)
+
+ local icon,sellPrice,meetsUsageRequirement,equipType,itemStyle = GetItemLinkInfo(clearlink)
+ iconFile=icon
+
+ MB.BankValueTable[#MB.BankValueTable+1]={
+ ["link"]=tostring(clearlink),
+ ["icon"] = tostring(iconFile),
+ ["name"]=tostring(nameClear),
+ ["count"]=tostring(count),
+ ["statvalue"]=tostring(statvalue),
+ ["sellPrice"] = tostring(sellPrice),
+ ["quality"] = tostring(quality)
+
+ }
+ end
+ MB.ItemCounter=MB.ItemCounter+1
+ end
+ MBUI_ContainerTitleGuildButtons:SetHidden(true)
+ elseif PrepareType=="Guild" then
+ bagIcon, bagSlots=GetBagInfo(BAG_GUILDBANK)
+ MB.BankMaxCapacity=bagSlots
+ debug("Preparing Guild values")
+
+ local guildname=tostring(GetGuildName(GuildBankIdToPrepare))
+ MB.BankValueTable=MB.items.data[GuildBankIdToPrepare][guildname]
+ MBUI_ContainerTitleGuildButtons:SetHidden(false)
+ else
+ debug("Unknown prepare type: "..tostring(PrepareType))
+ end
+
+ MBUI_ContainerSlider:SetHandler("OnValueChanged",function(self, value, eventReason)
+ MB.FillBank(value)
+ end)
+
+ for i=1,11 do
+ _G["MBUI_Row"..i]:SetHandler("OnMouseWheel" , function(self, delta)
+ local calculatedvalue=MB.CurrentLastValue-delta
+ if (calculatedvalue>=11) and (calculatedvalue<=#MB.BankValueTable) then
+ MB.FillBank(calculatedvalue)
+ MBUI_ContainerSlider:SetValue(calculatedvalue)
+ end
+ end )
+ end
+MB.SortPreparedValues()
+return MB.BankValueTable
+end
+
+function MB.SortPreparedValues()
+
+ function compare(a,b)
+ return a["name"]<b["name"]
+ end
+
+ table.sort(MB.BankValueTable,compare)
+end
+
+function MB.FillBank(last)
+ if last<=1 then debug("last<=1") return end
+ if (#MB.BankValueTable==0) then
+ d("No data avaliable. Open your bank first.")
+ MBUI_ContainerItemCounter:SetHidden(true)
+ MB.HideContainer(true)
+ for i=1,11 do
+ _G["MBUI_Row"..i]:SetHidden(true)
+ end
+ return
+ else
+ local texture='/esoui/art/miscellaneous/scrollbox_elevator.dds'
+ MBUI_ContainerSlider:SetMinMax(11,#MB.BankValueTable)
+ MBUI_ContainerSlider:SetThumbTexture(texture, texture, texture, 18, (1/#MB.BankValueTable*25000)/3, 0, 0, 1, 1)
+ for i=1,11 do
+ _G["MBUI_Row"..i]:SetHidden(false)
+ end
+ end
+ MB.CurrentLastValue=last
+
+ if #MB.BankValueTable<11 then
+ -- Прячем Слайдер
+ MBUI_ContainerSlider:SetHidden(true)
+ -- Заполнение идёт сверху
+ for i=1,#MB.BankValueTable do
+ local icon,sellPrice,meetsUsageRequirement,equipType,itemStyle = GetItemLinkInfo(MB.BankValueTable[i].link)
+
+ -- Регистрируем отображение тултипов при наведении на строку
+ _G["MBUI_Row"..i]:SetHandler("OnMouseEnter", function(self)
+
+ -- Тут может быть любой другой якорь. Нам важен его родитель
+ OldAnchor=_G["MBUI_Row"..i.."ButtonIcon"]:GetParent()
+ ItemTooltip:ClearAnchors()
+ ItemTooltip:ClearLines()
+ ItemTooltip:SetAnchor(CENTER,OldAnchor,CENTER,-200,0)
+ ItemTooltip:SetLink(_G["MBUI_Row"..i.."Name"]:GetText())
+ ItemTooltip:SetAlpha(1)
+ ItemTooltip:SetHidden(false)
+ _G["MBUI_Row"..i.."Highlight"]:SetCenterColor(0.5,0.5,0.5,0.5)
+ _G["MBUI_Row"..i.."Highlight"]:SetDimensions(GetDimensions(_G["MBUI_Row"..i]))
+
+ end)
+
+ _G["MBUI_Row"..i]:SetHandler("OnMouseExit", function(self)
+ ItemTooltip:ClearAnchors()
+ ItemTooltip:ClearLines()
+ ItemTooltip:SetAlpha(0)
+ ItemTooltip:SetHidden(true)
+ _G["MBUI_Row"..i.."Highlight"]:SetCenterColor(0.5,0.5,0.5,0)
+
+ end)
+
+ _G["MBUI_Row"..i.."ButtonIcon"]:SetTexture(MB.BankValueTable[i].icon)
+ _G["MBUI_Row"..i.."ButtonStackCount"]:SetText(MB.BankValueTable[i].count)
+ _G["MBUI_Row"..i.."Name"]:SetText(MB.BankValueTable[i].link)
+ if (MB.BankValueTable[i].statvalue~="0") then
+ _G["MBUI_Row"..i.."StatValue"]:SetText(MB.BankValueTable[i].statvalue)
+ else
+ _G["MBUI_Row"..i.."StatValue"]:SetText("-")
+ end
+ _G["MBUI_Row"..i.."SellPrice"]:SetText(MB.BankValueTable[i].count*sellPrice)
+ end
+ -- Заполняем вместимость банка
+ local CurBankCapacity = #MB.BankValueTable
+ MBUI_ContainerItemCounter:SetText("Bank: "..CurBankCapacity.." / "..MB.BankMaxCapacity)
+ -- Прячем пустые строки
+ for i=#MB.BankValueTable+1,11 do
+ _G["MBUI_Row"..i]:SetHidden(true)
+ end
+ else
+ -- Показываем слайдер
+ MBUI_ContainerSlider:SetHidden(false)
+ -- Заполнение идёт снизу
+ for i=11,1,-1 do
+ local icon,sellPrice,meetsUsageRequirement,equipType,itemStyle = GetItemLinkInfo(MB.BankValueTable[last].link)
+
+ -- Регистрируем отображение тултипов при наведении на строку
+ _G["MBUI_Row"..i]:SetHandler("OnMouseEnter", function(self)
+
+ -- Тут может быть любой другой якорь. Нам важен его родитель
+ OldAnchor=_G["MBUI_Row"..i.."ButtonIcon"]:GetParent()
+ ItemTooltip:ClearAnchors()
+ ItemTooltip:ClearLines()
+ if _G["MBUI_Row"..i]:GetLeft()>=480 then
+ ItemTooltip:SetAnchor(CENTER,OldAnchor,CENTER,-480,0)
+ else
+ ItemTooltip:SetAnchor(CENTER,OldAnchor,CENTER,500,0)
+ end
+
+ ItemTooltip:SetLink(_G["MBUI_Row"..i.."Name"]:GetText())
+ ItemTooltip:SetAlpha(1)
+ ItemTooltip:SetHidden(false)
+ _G["MBUI_Row"..i.."Highlight"]:SetCenterColor(0.5,0.5,0.5,0.5)
+ end)
+
+ _G["MBUI_Row"..i]:SetHandler("OnMouseExit", function(self)
+ ItemTooltip:ClearAnchors()
+ ItemTooltip:ClearLines()
+ ItemTooltip:SetAlpha(0)
+ ItemTooltip:SetHidden(true)
+ _G["MBUI_Row"..i.."Highlight"]:SetCenterColor(0.5,0.5,0.5,0)
+
+ end)
+
+ _G["MBUI_Row"..i.."ButtonIcon"]:SetTexture(MB.BankValueTable[last].icon)
+ _G["MBUI_Row"..i.."ButtonStackCount"]:SetText(MB.BankValueTable[last].count)
+ _G["MBUI_Row"..i.."Name"]:SetText(MB.BankValueTable[last].link)
+ if (MB.BankValueTable[last].statvalue~="0") then
+ _G["MBUI_Row"..i.."StatValue"]:SetText(MB.BankValueTable[last].statvalue)
+ else
+ _G["MBUI_Row"..i.."StatValue"]:SetText("-")
+ end
+ _G["MBUI_Row"..i.."SellPrice"]:SetText(MB.BankValueTable[last].count*sellPrice)
+ if last<=#MB.BankValueTable and last>1 then
+ last=last-1
+ else
+ last=11
+ end
+ end
+ -- Заполняем вместимость банка
+ local CurBankCapacity = #MB.BankValueTable
+ MBUI_ContainerItemCounter:SetText("Bank: "..CurBankCapacity.." / "..MB.BankMaxCapacity)
+ MBUI_ContainerItemCounter:SetHidden(false)
+ end
+end
+
+
+
+
+function MB.PL_Opened()
+ debug("Event PL_Opened fired")
+end
+
+function MB.PL_Closed()
+ debug("Event PL_Closed fired")
+end
+
+function MB.GB_Opened()
+ debug("Event GB_Opened fired")
+end
+
+function MB.GB_Ready()
+ debug("Event GB_Ready fired")
+ MB.gcount()
+end
+
+
+
+function commandHandler( text )
+ if text=="cls" then
+ MB.items.data={}
+ MB.params.MBUI_Menu=nil
+ MB.params.MBUI_Container=nil
+ ReloadUI()
+ else
+ d("/mb cls - clear all data and reloadui ")
+ end
+end
+
+function MB.gcount()
+ MB.GCountOnUpdateTimer=GetGameTimeMilliseconds()
+ MB.GCountOnUpdateReady=true
+end
+
+function MB.MouseUp(self)
+ local name = self:GetName()
+ local left = self:GetLeft()
+ local top = self:GetTop()
+
+ if name=="MBUI_Menu" then
+ debug("Menu saved")
+ MB.params.MBUI_Menu={left,top}
+ elseif name=="MBUI_Container" then
+ debug("Container saved")
+ MB.params.MBUI_Container={left,top}
+ else
+ debug("Unknown window")
+ end
+end
+
+function MB.Update(self)
+if (not MB.AddonReady) then return end
+
+ local EscMenuHidden = ZO_GameMenu_InGame:IsHidden()
+ local interactHidden = ZO_InteractWindow:IsHidden()
+
+ if (EscMenuHidden == false) then
+ MBUI_Container:SetHidden(true)
+ MBUI_Menu:SetHidden(true)
+ elseif (interactHidden == false) then
+ MBUI_Container:SetHidden(true)
+ MBUI_Menu:SetHidden(true)
+ else
+ MBUI_Menu:SetHidden(false)
+ end
+
+ --Хак на проверку инвентаря спустя Х сек после первого срабатывания эвента
+ if MB.GCountOnUpdateReady and (GetGameTimeMilliseconds()-MB.GCountOnUpdateTimer>=1000) then
+ local guildbankid=GetSelectedGuildBankId()
+ local guildname=tostring(GetGuildName(guildbankid))
+ MB.items.data[guildbankid][guildname]={}
+ d("Data saved for "..guildname)
+ local sv=false
+
+ bagIcon, bagSlots=GetBagInfo(BAG_GUILDBANK)
+
+ sv = MB.items.data[guildbankid][guildname]
+
+ for i=1, #ZO_GuildBankBackpack.data do
+ name=ZO_GuildBankBackpack.data[i].data.name
+ count=ZO_GuildBankBackpack.data[i].data.stackCount
+ statValue=ZO_GuildBankBackpack.data[i].data.statValue
+ sellPrice=ZO_GuildBankBackpack.data[i].data.sellPrice
+ quality=ZO_GuildBankBackpack.data[i].data.quality
+ iconFile=ZO_GuildBankBackpack.data[i].data.iconFile
+ slotIndex=ZO_GuildBankBackpack.data[i].data.slotIndex
+ link = GetItemLink(BAG_GUILDBANK,slotIndex)
+ clearlink =string.gsub(link, "(^p)", "")
+ clearlink =string.gsub(clearlink, "(^n)", "")
+
+ sv[#sv+1] =
+ {
+ ["link"] = tostring(clearlink),
+ ["icon"] = tostring(iconFile),
+ ["name"] = tostring(name),
+ ["count"] = tostring(count),
+ ["statvalue"] = tostring(statValue),
+ ["sellPrice"] = tostring(sellPrice),
+ ["quality"] = tostring(quality)
+ }
+ end
+ MB.GCountOnUpdateReady=false
+ end
+
+end
+
+function MB.HideContainer(value)
+ debug("StartPrevious:"..tostring(MB.PreviousButtonClicked))
+ debug("StartLast:"..tostring(MB.LastButtonClicked))
+ if MB.PreviousButtonClicked==MB.LastButtonClicked then
+ MBUI_Container:SetHidden(true)
+ MB.PreviousButtonClicked=nil
+ MB.LastButtonClicked=nil
+ else
+ MBUI_Container:SetHidden(false)
+ end
+ debug("FinishPrevious:"..tostring(MB.PreviousButtonClicked))
+ debug("FinishLast:"..tostring(MB.LastButtonClicked))
+end
+
+--Инициализация Аддона
+EVENT_MANAGER:RegisterForEvent("MobileBank", EVENT_ADD_ON_LOADED, MB.OnLoad)
\ No newline at end of file
diff --git a/MobileBank.txt b/MobileBank.txt
new file mode 100644
index 0000000..915b3ef
--- /dev/null
+++ b/MobileBank.txt
@@ -0,0 +1,6 @@
+## Title: MobileBank
+## APIVersion: 100003
+## SavedVariables: MB_SavedVars
+
+MobileBank.lua
+MobileBank.xml
\ No newline at end of file
diff --git a/MobileBank.xml b/MobileBank.xml
new file mode 100644
index 0000000..a30d4ce
--- /dev/null
+++ b/MobileBank.xml
@@ -0,0 +1,92 @@
+<GuiXml>
+ <Controls>
+ <TopLevelControl name="MBUI_Blank">
+ <OnUpdate>
+ MB.Update(self)
+ </OnUpdate>
+ </TopLevelControl>
+ <!-- Заготовка отображения информации о предмете -->
+ <Control name="MBUI_Container" mouseEnabled="true">
+ <Controls>
+ <!-- Фон -->
+ <Backdrop name="$(parent)Bg">
+ </Backdrop>
+
+ <!-- Заголовок -->
+ <Label name="$(parent)Title" font="ZoFontGame">
+ <Controls>
+ <Control name="$(parent)GuildButtons" font="ZoFontGame" text="Name">
+ </Control>
+
+ <Label name="$(parent)Name" font="ZoFontGame" text="Name">
+ </Label>
+
+ <Label name="$(parent)Stat" font="ZoFontGame" text="Stat">
+ </Label>
+
+ <Label name="$(parent)Value" font="ZoFontGame" text="Value">
+ </Label>
+ </Controls>
+ </Label>
+
+ <!-- Счетчик вещей -->
+ <Label name="$(parent)ItemCounter" font="ZoFontGame" color="white">
+ </Label>
+
+ <!-- Слайдер -->
+ <Slider name="$(parent)Slider" mouseEnabled="true" step="1">
+ </Slider>
+
+ </Controls>
+ </Control>
+ <Control name="TemplateRow" virtual="true" mouseEnabled="true">
+ <AnchorFill/>
+ <Controls>
+ <!-- Фон -->
+ <Texture name="$(parent)Bg">
+ <AnchorFill/>
+ </Texture>
+
+ <!-- Подсветка -->
+ <Backdrop name="$(parent)Highlight">
+ <AnchorFill/>
+ </Backdrop>
+
+ <!-- Кнопка -->
+ <Control name="$(parent)Button">
+ <AnchorFill/>
+ <Controls>
+ <Texture name="$(parent)Icon">
+ <AnchorFill/>
+ </Texture>
+
+ <Label name="$(parent)StackCount" font="ZoFontGame" color="white">
+ <AnchorFill/>
+ </Label>
+ </Controls>
+ </Control>
+
+ <!-- Имя -->
+ <Label name="$(parent)Name" font="ZoFontGame" color="white">
+ <AnchorFill/>
+ </Label>
+
+ <!-- Значение -->
+ <Label name="$(parent)StatValue" font="ZoFontGame" color="white">
+ <AnchorFill/>
+ </Label>
+
+ <!-- Цена -->
+ <Label name="$(parent)SellPrice" font="ZoFontGame" color="white">
+ <AnchorFill/>
+ </Label>
+
+ <!-- Подсказка -->
+ <Tooltip name="$(parent)Tooltip" font="ZoFontGame">
+ <AnchorFill/>
+ </Tooltip>
+
+ </Controls>
+ </Control>
+ </Controls>
+</GuiXml>
\ No newline at end of file
diff --git a/README.md b/README.md
index 5ce40de..d9b4281 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-DataBase
+MobileBank
========
TESO addon