vanilla-wow-addons – Rev 1
?pathlinks?
CT_BagNames = { { } };
function CT_GetNextCID()
for i=1, 5, 1 do
if (not getglobal("ContainerFrame" .. i):IsVisible()) then
return i;
end
end
return 5;
end
function CT_GetBagID(container)
if ( not container ) then return nil; end
return getglobal("ContainerFrame" .. container):GetID();
end
function CT_CCFrame_ToggleEditBox()
if ( getglobal(this:GetParent():GetName() .. "EBFrame"):IsVisible() ~= 1 ) then
getglobal(this:GetParent():GetName() .. "EBFrame"):Show();
else
CT_SaveEditBox(getglobal(this:GetParent():GetName() .. "EBFrameEditBox"), this:GetParent():GetID()+1);
getglobal(this:GetParent():GetName() .. "EBFrame"):Hide();
end
end
function CT_SaveEditBox(box, id)
local text = box:GetText();
if ( not text or strlen(text) == 0 ) then
text = "";
end
box:SetText("");
CT_BagNames[UnitName("player")][CT_GetBagID(id)] = text;
if ( text == "" ) then
getglobal("ContainerFrame" .. id .. "Name"):SetText(GetBagName(CT_GetBagID(id)));
else
getglobal("ContainerFrame" .. id .. "Name"):SetText(text);
end
end
function CT_CCEditBox_OnEnterPressed()
CT_SaveEditBox(this, this:GetParent():GetParent():GetID()+1);
end
function CT_CCEditBox_OnEscapePressed()
if ( CT_BagNames[UnitName("player")][CT_GetBagID(this:GetParent():GetParent():GetID()+1)] and strlen(CT_BagNames[UnitName("player")][CT_GetBagID(this:GetParent():GetParent():GetID()+1)]) > 0 and CT_BagNames[UnitName("player")][CT_GetBagID(this:GetParent():GetParent():GetID()+1)] ~= GetBagName(CT_GetBagID(this:GetParent():GetParent():GetID()+1)) ) then
getglobal("ContainerFrame" .. this:GetParent():GetParent():GetID()+1 .. "Name"):SetText(CT_BagNames[UnitName("player")][CT_GetBagID(this:GetParent():GetParent():GetID()+1)]);
else
getglobal("ContainerFrame" .. this:GetParent():GetParent():GetID()+1 .. "Name"):SetText(GetBagName(CT_GetBagID(this:GetParent():GetParent():GetID()+1)));
end
this:SetText("");
if ( this:GetParent():IsVisible() == 1 ) then
this:GetParent():Hide();
end
end
function CT_CCFrame_OnShow()
if ( CT_BagNames[UnitName("player")] and CT_BagNames[UnitName("player")][CT_GetBagID(this:GetParent():GetID()+1)] and strlen(CT_BagNames[UnitName("player")][CT_GetBagID(this:GetParent():GetID()+1)]) > 0 ) then
getglobal("ContainerFrame" .. this:GetParent():GetID()+1 .. "Name"):SetText(CT_BagNames[UnitName("player")][CT_GetBagID(this:GetParent():GetID()+1)]);
else
getglobal("ContainerFrame" .. this:GetParent():GetID()+1 .. "Name"):SetText(GetBagName(CT_GetBagID(this:GetParent():GetID()+1)));
end
end
function CT_CCItemSlotButton_OnLoad()
this:RegisterEvent("UNIT_INVENTORY_CHANGED");
this:RegisterEvent("ITEM_LOCK_CHANGED");
this:RegisterEvent("CURSOR_UPDATE");
this:RegisterEvent("BAG_UPDATE_COOLDOWN");
this:RegisterEvent("SHOW_COMPARE_TOOLTIP");
this:RegisterForDrag("LeftButton");
this:RegisterForClicks("LeftButtonUp", "RightButtonUp");
end
function CT_CCSlotButton_OnClick()
local isVisible = 0;
local container;
local button;
if ( this:GetID() >= 1 ) then
button = getglobal("CharacterBag" .. this:GetID()-1 .. "Slot")
local id = button:GetID();
local translatedID = id - CharacterBag0Slot:GetID() + 1;
local hadItem = PutItemInBag(id);
if ( not hadItem ) then
ToggleBag(translatedID);
PlaySound("BAGMENUBUTTONPRESS");
end
for i=1, NUM_CONTAINER_FRAMES, 1 do
local frame = getglobal("ContainerFrame"..i);
if (frame:GetID() == translatedID) then
container = i;
if ( frame:IsVisible() ) then
isVisible = 1;
break;
end
end
end
button:SetChecked(isVisible);
else
if ( not PutItemInBackpack() ) then
ToggleBackpack();
for i=1, NUM_CONTAINER_FRAMES, 1 do
local frame = getglobal("ContainerFrame"..i);
if (frame:GetID() == 0) then
container = i;
if ( frame:IsVisible() ) then
isVisible = 1;
break;
end
end
end
getglobal("MainMenuBarBackpackButton"):SetChecked(isVisible);
end
end
local newCID = container;
for z=0, 4, 1 do
local glb = getglobal("CT_CCB" .. z .. "Button");
if ( glb and glb.CID == newCID ) then
glb.CID = this.CID;
this.CID = newCID;
getglobal("ContainerFrame" .. glb.CID):SetID(glb:GetID());
end
end
end
function CT_CCSlotButton_OnDrag()
local button;
if ( this:GetID() ~= 0 ) then
button = getglobal("CharacterBag" .. this:GetID()-1 .. "Slot")
else
return;
end
local translatedID = button:GetID() - CharacterBag0Slot:GetID() + 1;
PickupBagFromSlot(button:GetID());
PlaySound("BAGMENUBUTTONPRESS");
local isVisible = 0;
for i=1, NUM_CONTAINER_FRAMES, 1 do
local frame = getglobal("ContainerFrame"..i);
if ( (frame:GetID() == translatedID) and frame:IsVisible() ) then
isVisible = 1;
break;
end
end
button:SetChecked(isVisible);
end
function CT_CCFrame_OnEnter()
local bagid = CT_GetBagID(this:GetParent():GetID()+1);
local cid = this:GetParent():GetID()+1;
local settext;
if ( not CT_BagNames[UnitName("player")] or not CT_BagNames[UnitName("player")][bagid] or CT_BagNames[UnitName("player")][bagid] == "" ) then
settext = GetBagName(bagid);
else
settext = CT_BagNames[UnitName("player")][bagid];
end
GameTooltip:SetOwner(this, "ANCHOR_LEFT");
if ( bagid and bagid == 0 ) then
GameTooltip:SetText(settext, 1.0, 1.0, 1.0);
if (GetBindingKey("TOGGLEBACKPACK")) then
GameTooltip:AppendText(" "..NORMAL_FONT_COLOR_CODE.."("..GetBindingKey("TOGGLEBACKPACK")..")"..FONT_COLOR_CODE_CLOSE)
end
elseif ( bagid and bagid > 0 and ContainerIDToInventoryID(bagid) and GameTooltip:SetInventoryItem("player", ContainerIDToInventoryID(bagid)) ) then
getglobal("GameTooltipTextLeft1"):SetText(settext);
local binding = GetBindingKey("TOGGLEBAG"..(5 - bagid));
if ( binding ) then
GameTooltip:AppendText(" "..NORMAL_FONT_COLOR_CODE.."("..binding..")"..FONT_COLOR_CODE_CLOSE);
end
end
end
function CT_CCButton_OnEnter()
local bagid = this:GetID();
local settext;
if ( not CT_BagNames[UnitName("player")][bagid] or CT_BagNames[UnitName("player")][bagid] == "" ) then
settext = GetBagName(bagid);
else
settext = CT_BagNames[UnitName("player")][bagid];
end
GameTooltip:SetOwner(this, "ANCHOR_LEFT");
if ( bagid == 0 ) then
GameTooltip:SetText(settext, 1.0, 1.0, 1.0);
if (GetBindingKey("TOGGLEBACKPACK")) then
GameTooltip:AppendText(" "..NORMAL_FONT_COLOR_CODE.."("..GetBindingKey("TOGGLEBACKPACK")..")"..FONT_COLOR_CODE_CLOSE)
end
elseif ( GameTooltip:SetInventoryItem("player", ContainerIDToInventoryID(bagid)) ) then
getglobal("GameTooltipTextLeft1"):SetText(settext);
local binding = GetBindingKey("TOGGLEBAG"..(5 - bagid));
if ( binding ) then
GameTooltip:AppendText(" "..NORMAL_FONT_COLOR_CODE.."("..binding..")"..FONT_COLOR_CODE_CLOSE);
end
else
GameTooltip:SetText(TEXT(EQUIP_CONTAINER), 1.0, 1.0, 1.0);
end
end
function CT_CCGlobalFrame_OnUpdate()
if ( UnitName("player") and not CT_BagNames[UnitName("player")] ) then
CT_BagNames[UnitName("player")] = { };
end
end
CT_CColdBankFrameItemButtonBag_OnShiftClick = BankFrameItemButtonBag_OnShiftClick;
function CT_CCnewBankFrameItemButtonBag_OnShiftClick()
if ( ChatFrameEditBox:IsVisible() and this:GetID() > 0 ) then
ChatFrameEditBox:Insert(GetInventoryItemLink("player", ContainerIDToInventoryID(this:GetID())));
else
CT_CColdBankFrameItemButtonBag_OnShiftClick();
end
end
BankFrameItemButtonBag_OnShiftClick = CT_CCnewBankFrameItemButtonBag_OnShiftClick;
function CT_CC_GetBankSlots(bag)
local numUsed, numSlots = 0, GetContainerNumSlots(bag);
for i = 1, numSlots, 1 do
if ( GetContainerItemLink(bag, i) ) then
numUsed = numUsed + 1;
end
end
return numUsed, numSlots;
end
CT_CC_BankDisplay = "1";
function CT_CC_UpdateBank(event)
local numBags, totalBagUsed, totalBagAvailable, totalItemUsed = GetNumBankSlots(), 0, 0, 0;
for i = 1, NUM_BANKBAGSLOTS, 1 do
local count = getglobal("BankFrameBag" .. i .. "Count");
if ( i <= numBags ) then
local used, available = CT_CC_GetBankSlots(i+4);
totalBagUsed = totalBagUsed + used;
totalBagAvailable = totalBagAvailable + available;
count:SetText(used .. "/" .. available);
end
if ( CT_CC_BankDisplay == "2" and i <= numBags ) then
count:Show();
else
count:Hide();
end
end
for i = 1, NUM_BANKGENERIC_SLOTS, 1 do
if ( GetInventoryItemLink("player", BankButtonIDToInvSlotID(i)) ) then
totalItemUsed = totalItemUsed + 1;
end
end
if ( CT_CC_BankDisplay ~= "3" ) then
CT_CCBankFrameAvailableBagSlots:SetText(" (" .. totalBagUsed .. "/" .. totalBagAvailable .. ")");
CT_CCBankFrameAvailableItemSlots:SetText(" (" .. totalItemUsed .. "/" .. NUM_BANKGENERIC_SLOTS .. ")");
CT_CCBankFrameTotalSlots:SetText("Total Slots: " .. totalItemUsed+totalBagUsed .. "/" .. totalBagAvailable+NUM_BANKGENERIC_SLOTS);
else
CT_CCBankFrameAvailableBagSlots:SetText("");
CT_CCBankFrameAvailableItemSlots:SetText("");
CT_CCBankFrameTotalSlots:SetText("");
end
end
function bankfunction(modId, text)
local val = CT_Mods[modId]["modValue"];
if ( val == "3" ) then
CT_Print("<CTMod> The bank frame now displays total counts.", 1, 1, 0);
val = "1";
elseif ( val == "1" ) then
CT_Print("<CTMod> The bank frame now displays all counts.", 1, 1, 0);
val = "2";
elseif ( val == "2" ) then
CT_Print("<CTMod> The bank frame no longer displays counts..", 1, 1, 0);
val = "3";
end
CT_CC_BankDisplay = val;
CT_Mods[modId]["modValue"] = val;
if ( text ) then text:SetText(val); end
CT_CC_UpdateBank();
end
function bankinitfunction(modId)
CT_CC_BankDisplay = CT_Mods[modId]["modValue"];
CT_CC_UpdateBank();
end
CT_RegisterMod("Bag Slots", "Change Display", 5, "Interface\\Icons\\INV_Ingot_03", "Toggles three ways to show bank slot counts (Totals/All/Off).", "switch", "1", bankfunction, bankinitfunction);
Generated by GNU Enscript 1.6.5.90.