Quantcast
Download
(28 Kb)
Download
Updated: 09/02/20 02:55 PM
Pictures
File Info
Compatibility:
Stonethorn (6.1.5)
Updated:09/02/20 02:55 PM
Created:10/14/19 10:49 PM
Monthly downloads:5,353
Total downloads:7,709
Favorites:14
MD5:
6.1.5
XL Gear Banker  Popular! (More than 5000 hits)
Version: 1.0.2
by: XL_Olsen [More]
Contact me for any questions and/or feedback (Either on ESOUI or directly through ingame whisper/mail @XL_Olsen on PC EU).

Description

XL Gear Banker (XLGB) is an ESO addon that strives to combat the tedious task of moving all your gear to another character.
Got multiple healer characters? Multiple tanks? DDs? This addon might be for you!

Before XLGB:
  • Log into character with the gear you need.
  • Go to bank or house storage chest
  • For every gear piece you need, find it in your inventory and manually put it into bank/chest.
  • Log into character that needs the gear.
  • Go to bank or house storage chest
  • For every gear piece you need, find it in your bank/chest and manually withdraw it from the bank/chest.
After XLGB:

- Step 3: Use UI or keybind to deposit all gear pieces at once.
- Step 6: Use UI or keybind to withdraw all gear pieces at once.

One button! Easy!

Demo gif showing XLGB in action! v0.9.3 (NOTE: This is now outdated! This version only had 'sets', but now there's the notion of both sets AND pages - concept similar to dressing room.)

Dependencies

This addon uses the following libraries:

- LibCustomMenu
- LibDialog
- LibShifterBox
- LibAddonMenu2-0

These libraries are required to run the addon.


Known Issues


Changes - Version 1.0.2
  • Option to open 'Page' and 'Set' windows when bank opens.
  • Resizing the 'Set' window.
  • Minor bugfixes



How to use the addon


Browsing sets
  • Open your chat and type in '/xlgb' to bring up the UI.
  • Use the arrows to browse your current sets

Edit sets (change name/remove items from set)
  • Open your chat and type in '/xlgb' to bring up the UI.
  • Press the edit icon (pen and paper thingy)
    • Now you can edit the name label to a choice of your own! (Press the label and edit away!)
    • Add items you currently wear using the button that states it does literally this.
    • Remove items using the 'X' icon to the right of the item you want removed. (If you regret your choice, you can discard your changes!)
  • Now you have a choice:
    • Discard changes by clicking the "cancel icon" that replaced the edit icon. (If you've made changes a dialog will pop up to confirm)
    • Accept changes by clicking the "accept icon". (If you've marked items for removal a dialog will pop up to confirm)
    • Remove the set by click the "minus icon". (If the set is not empty a dialog will pop up to confirm)

Adding new sets
  • Open your chat and type in '/xlgb' to bring up the UI.
  • Use the '+' to add a new set.
  • You now enter 'edit' mode. (Look above for explanation)

Removing sets

See "Edit sets" above at (3.3).

Add items to a gear set

(New in version 0.9.3+)
You can now add all your currently equipped items by opening the ui with "/xlgb", press the edit icon, and press the button "Add equipped items to set".

If you have atleast 1 set you can right-click any armor or weapon in your bank, inventory or even equipped items, an extra item in the drop-down menu will appear reading 'XLGB add >'.
If you hover over this menu you'll see all your sets, and if you click on of the sets the item you've right-clicked will be added to that set.

Remove items from a gear set

Accidentally added an item to the wrong set? Fear not!
As an alternative to removing items through the "edit mode" in the "/xlgb" UI I've kept the old way of removing items.
When an item belongs to a set a new menu item appears in the drop-down menu, similar to adding items, this menu item reads 'XLGB remove >'.
Clicking on one of the sets listed in the sub-menu will result in removing that gear piece from the set again.

Depositing/withdrawing gear

With UI 2.0 you can now deposit/withdraw currently displayed set directly through the UI! Open your bank/storage and the UI will appear with 2 buttons at the bottom of the UI saying "Deposit" and "Withdraw". These will deposit/withdraw the set you're currently looking at, easy as that! As an alternative to the UI, keybindings are also offered in keybindings menu that will deposit/withdraw specific sets.



List of slash_commands

/xlgb
Brings up the UI

/xlgb_debug
Toggles debug mode. (Note: quite verbose)

/xlgb_help
Prints out these commands in the chat.



Other
Github @ https://github.com/XLOlsen/XLGearBanker

Thanks to ESOUI wiki and other addon developers for inspiration, as this is my first ever addon, I've been reading through alot of code to get me started and help me write this addon.
Version 1.0.2
  • Option to open 'Page' and 'Set' windows when bank opens.
  • Resizing the 'Set' window.
  • Minor bugfixes

Version 1.0.1
  • Removed legacy keybinds
  • Minor bugfixes

Version 1.0.0 - UI Overhaul & Pages
  • Pages
  • Tooltips
  • Report of missing items (Items not found during withdraw/deposit)
  • Safe mode toggle (Turn off for good ol' fast withdraw/deposit that might get you server kicked)
  • Progress "loading" bar during withdraw/deposit
  • More UI changes (Hopefully you guys think it looks neat now as well)
  • Minor bugfixes

[size="4"]Version 0.9.3 - Add equipped items + Remove item rework
  • Added functionality for "Add equipped items to set". The button is visible during the "edit mode" in the UI.
  • Reworked item removal. Items are now removed in real time during "edit mode", the changes can be discarded still by pressing the "toggle edit" button again (or cycling left or right).

[size="4"]Version 0.9.1 - Hotfix
Fixed a bug where calculating amount of empty bagspaces was wrong. (This bug might also be the cause of not withdrawing/depositing all items in a set - awaiting further testing).

Version 0.9 - UI 2.0
Simplified alot of the ideas I had for this and got it down to two buttons "Deposit" and "Withdraw" that now appear when you open your bank/storage. These buttons will deposit the currently displayed set!
Other things:
  • Assign sets to storage now legacy feature
  • Adding new items to a set now sorts the set alphabetically. (To sort existing sets, just add an item and remove it again)
  • Button to toggle UI when Bank/Storage is open.
  • Fixed a bug where "Item amount" wouldn't update correctly when adding/removing items.



Version 0.8 - UI 1.0

Christmas is coming early with this new update (version 0.8). An XL change that alot of people I've talked to have asked for (including myself). The XLGB addon is getting its UI and is now not a complete mess to setup anymore! What this UI update includes is a UI that would help you track your sets, create new sets, and edit current sets easier than ever before! It's simple to use:

You can now actually see your sets! (BIIG)
  • Open your chat and type in '/xlgb' to bring up the UI.
  • Use the arrows to browse your current sets


New way to edit sets! (change name/remove items from set)
  • Open your chat and type in '/xlgb' to bring up the UI.
  • Press the edit icon (pen and paper thingy)
    • Now you can edit the name label to a choice of your own! (Press the label and edit away!)
    • Mark items for removal by using the 'X' icon to the right of the item you want removed. (If you regret your choice, press the cancel button to unmark it again!)
  • Now you have a choice:
    • Discard changes by clicking the "cancel icon" that replaced the edit icon. (If you've made changes a dialog will pop up to confirm)
    • Accept changes by clicking the "accept icon". (If you've marked items for removal a dialog will pop up to confirm)
    • Remove the set by click the "minus icon". (If the set is not empty a dialog will pop up to confirm)

Adding new sets (The EZ Clap way)
  • Open your chat and type in '/xlgb' to bring up the UI.
  • Use the '+' to add a new set.
  • You now enter 'edit' mode. (Look above for explanation)

Removing sets (YEET)

See "Edit sets" above at (3.3).

Roadmap
This is not the only change planned for the XLGB addon. I will further improve the user experience down the road with UI 2.0 as the next big goal that will assist in depositing/withdrawing sets easier (Which will phase out the confusing assigned set to chest thingy), as an alternative to depositing/withdrawing sets via keybinds. Below is a roadmap with features and improvements planned for the addon:
  • UI 2.0 (deposit/withdraw UI)
  • Settings menu
  • Multi-language support
  • UI polishing (Adding tooltips etc.)

Version 0.7.3.1 Hotfix!
  • Fixed bug when using /xlgb_removeset setNumber

Version 0.7.3
  • Editing gearSets now automatically updates the storage assigned sets aswell. (No need to manually reassign set to chest)
  • Added /xlgb_clearassigned command.
  • Updated /xlgb_help message
Optional Files (0)


Archived Files (8)
File Name
Version
Size
Uploader
Date
1.0.2
28kB
XL_Olsen
08/25/20 11:55 AM
1.0.0
29kB
XL_Olsen
07/29/20 01:58 PM
0.9.3
15kB
XL_Olsen
02/12/20 10:28 PM
0.9.1
14kB
XL_Olsen
01/29/20 08:02 AM
0.9
13kB
XL_Olsen
12/15/19 02:39 AM
0.8
15kB
XL_Olsen
12/13/19 12:46 AM
0.7.3.1
13kB
XL_Olsen
10/17/19 05:07 AM
0.7
14kB
XL_Olsen
10/14/19 10:49 PM


Post A Reply Comment Options
Unread 09/02/20, 02:56 PM  
XL_Olsen
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 10
Uploads: 1
Originally Posted by wambo
:-/ I am sorry to inform you, its not XD the manifest (XLGearBanker.txt) is still on 1.0.0
You are right and I am an absolute idiot - I forgot to upload the 1.0.2 zip Fixed now, hopefully, but probably not xD
Report comment to moderator  
Reply With Quote
Unread 09/01/20, 08:34 AM  
wambo
AddOn Author - Click to view AddOns

Forum posts: 35
File comments: 383
Uploads: 1
Originally Posted by XL_Olsen
Originally Posted by wambo
Minion keeps telling me that there is an update available for XL Gear Banker, even though I already installed the latest version.

I believe this is because both 1.0.0 and 1.0.1 state the version 1.0.0 in the manifest.
Ah yes you're right - Forgot all about updating the version number Should be good for 1.0.2!
:-/ I am sorry to inform you, its not XD the manifest (XLGearBanker.txt) is still on 1.0.0
Last edited by wambo : 09/01/20 at 03:33 PM.
Report comment to moderator  
Reply With Quote
Unread 08/31/20, 08:24 AM  
wambo
AddOn Author - Click to view AddOns

Forum posts: 35
File comments: 383
Uploads: 1
Ok. This would be a loot of work, but I think it would be a big help to many ppl.

As I understand most ppl use XL Gear banker together with Dressing Room (as Alphagear has a banking / withrawing feature already - although sets arent shared via multiple characters.).

Do you think it would be possible to access the Dressing Room data, and create Pages and Sets from there?
I imagine something like 1 Page per character (and role maybe) + each Dressing Room Page as Set.

It could be also be some kind of add-in for Dressing room that creates a XL set from the current DR page.
Although pulling it from the addon data directly might allow for updates of XLGB sets when the DR page
got changed.
Report comment to moderator  
Reply With Quote
Unread 08/30/20, 11:14 AM  
XL_Olsen
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 10
Uploads: 1
Originally Posted by wambo
Minion keeps telling me that there is an update available for XL Gear Banker, even though I already installed the latest version.

I believe this is because both 1.0.0 and 1.0.1 state the version 1.0.0 in the manifest.
Ah yes you're right - Forgot all about updating the version number Should be good for 1.0.2!

Originally Posted by wambo
Also there is a __MACOSX inside the zip, I believe this is unnecessary for the addon itself, and just gives windows users a folder they dont know what its about.
Yes this unfortunately happens when I update the addon from my macbook (Something with the built-in compression of MacOSX). I'll try updating only from my desktop !

Originally Posted by Baumlaus
First of all, amazing addon Really made my banking life easy.

- Ever since the update, I only get the new page site when hitting a banker etc. It would be kinda nice of there is an option to also show the Set Page right away, without having to click on of the sets first
Yes this was intentional as the 'Set' window was intended to only be needed upon setting up new stuff. I did however just add an option to have it showing or not in v1.0.2 to accommodate this!

Originally Posted by Baumlaus
- Would be amazing if there is an option to manually move pages. Since most pages are created over time I have pages, set-pages mixed all over the place and being able to move them into a certain order myself would be really nice
Yeah I can understand having lots of sets will eventually clutter these drop downs and selections. I agree that having different ways of sorting these sets and pages would be optimal. Maybe even categories and subcategories etc., this would however take a bit longer to implement For now I've opted to sort everything alphabetically, but I will of course look for better/customized ways to sort and keep it all clean for future patches!

Originally Posted by Baumlaus
edit:
- one last thing I forgot. It'd be nice aswell if it's possible to make both windows bigger and them staying that way. I know it is possible for the set page but it reverts back to its normal size after relogg
Ah yes! I actually forgot to make that work in previous iteration! For v1.0.2 this should now work for the 'Set' window only. The 'Page' window is another topic - I took the liberty of using LibShifterBox for editing which sets goes into a page, and it had the limitation of only allowing 1 anchor-point - thus making resizing a bit more difficult. However I think I have a solution in mind as you can set the dimensions of the shifterbox, but I'll have to test that out first - stay tuned for 1.0.3 !

Lastly, thank you both wambo & Baumlaus for your feedback! Much appreciated!
Report comment to moderator  
Reply With Quote
Unread 08/28/20, 01:24 PM  
wambo
AddOn Author - Click to view AddOns

Forum posts: 35
File comments: 383
Uploads: 1
Minion keeps telling me that there is an update available for XL Gear Banker, even though I already installed the latest version.

I believe this is because both 1.0.0 and 1.0.1 state the version 1.0.0 in the manifest.

Also there is a __MACOSX inside the zip, I believe this is unnecessary for the addon itself, and just gives windows users a folder they dont know what its about.
Report comment to moderator  
Reply With Quote
Unread 08/28/20, 02:39 AM  
Baumlaus

Forum posts: 0
File comments: 8
Uploads: 0
Few things

First of all, amazing addon Really made my banking life easy.

- Ever since the update, I only get the new page site when hitting a banker etc. It would be kinda nice of there is an option to also show the Set Page right away, without having to click on of the sets first
- Would be amazing if there is an option to manually move pages. Since most pages are created over time I have pages, set-pages mixed all over the place and being able to move them into a certain order myself would be really nice

edit:
- one last thing I forgot. It'd be nice aswell if it's possible to make both windows bigger and them staying that way. I know it is possible for the set page but it reverts back to its normal size after relogg
Last edited by Baumlaus : 08/28/20 at 02:50 AM.
Report comment to moderator  
Reply With Quote
Unread 08/26/20, 12:56 AM  
XL_Olsen
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 10
Uploads: 1
Thank YOU! for your support! Glad you like it

Originally Posted by Lulunyaa
thank you for this amazing addon
Also I'm, aware of the outdated stuff on the front page, I will look into getting that updated to help the ppl having trouble setting up their first page & set!
Report comment to moderator  
Reply With Quote
Unread 08/25/20, 05:14 PM  
Lulunyaa

Forum posts: 0
File comments: 21
Uploads: 0
thank you for this amazing addon
Report comment to moderator  
Reply With Quote
Unread 07/30/20, 06:50 AM  
XL_Olsen
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 10
Uploads: 1
Hi Baertram! Thanks again for the feedback!
Seems like I was too fast with the Context Menu fixes - I basically just copied what you wrote as a fix without testing it at all I'll be sure to make these fixes in the next iteration!

Originally Posted by Baertram
Hey there, one hint about your context menu:
You still have added the zo_callLater to add the new inventory context menu entries at the bottom but it's not needed anymore as you are using LibCustomMenu meanwhile.
Lua Code:
  1. local function AddContextMenuEntries(itemLink, itemID, inventorySlot)
  2.   --zo_callLater(
  3.     --function()
  4.       MakeContextMenuEntry_AddItemToGearSet(itemLink, itemID)
  5.       MakeContextMenuEntry_RemoveItemFromGearSet(itemLink, itemID)
  6.       ShowMenu(inventorySlot)
  7.     end
  8. --, 10)
  9. --end

Your contextmenu is now not using a "PreHooK" to ZO_InventorySlot_ShowContextMenu anymore and thus this "delay" is not needed anymore to show your context menu entries at the bottom (below ZOs vanilla context menu entries).
LibCustomMenu took care of this internally already.

Attention:
You also use CATEGORY_LATE to tell the lib to show your entries late BUT this is non existing!
You need to use the proper constant LibCustomMenu.CATEGORY_LATE and then it will work, and your zo_callLater can be totally stripped.

Here is the example code that should work:
Lua Code:
  1. local function AddContextMenuEntries(itemLink, itemID, inventorySlot)
  2.   MakeContextMenuEntry_AddItemToGearSet(itemLink, itemID)
  3.   MakeContextMenuEntry_RemoveItemFromGearSet(itemLink, itemID)
  4.   ShowMenu(inventorySlot)
  5. end
  6.  
  7.  
  8. local function OverWriteInventoryShowContextMenuHandler()
  9.   LibCustomMenu:RegisterContextMenu(
  10.       function(inventorySlot, slotActions)
  11.         -- Inventory slot should either be the player bag, equipment slots, or the bank.
  12.         local slotTypesAllowed = {
  13.           [SLOT_TYPE_ITEM] = true,
  14.           [SLOT_TYPE_EQUIPMENT] = true,
  15.           [SLOT_TYPE_BANK_ITEM] = true,
  16.         }
  17.         local slotType = ZO_InventorySlot_GetType(inventorySlot)
  18.         if not slotTypesAllowed[slotType] then return end
  19.         local bag, index = ZO_Inventory_GetBagAndIndex(inventorySlot)
  20.         if not bag or not index then return end
  21.         local itemLink = GetItemLink(bag, index)
  22.         local itemID = Id64ToString(GetItemUniqueId(bag, index))
  23.         if not itemLink or itemLink == "" or not itemID then return end
  24.         easyDebug("Item ID of " .. itemLink .. ": " .. itemID)
  25.         local itemType = GetItemLinkItemType(itemLink)
  26.         local itemTypesAllowed = {
  27.           [ITEMTYPE_ARMOR] = true,
  28.           [ITEMTYPE_WEAPON] = true,
  29.         }
  30.         -- Item should be armor or weapon.
  31.         if not itemTypesAllowed[itemType] then return end
  32.         AddContextMenuEntries(itemLink, itemID, inventorySlot)
  33.       end,
  34.       LibCustomMenu.CATEGORY_LATE
  35.     )
  36. end
Report comment to moderator  
Reply With Quote
Unread 07/30/20, 04:07 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3086
File comments: 3711
Uploads: 63
Hey there, one hint about your context menu:
You still have added the zo_callLater to add the new inventory context menu entries at the bottom but it's not needed anymore as you are using LibCustomMenu meanwhile.
Lua Code:
  1. local function AddContextMenuEntries(itemLink, itemID, inventorySlot)
  2.   --zo_callLater(
  3.     --function()
  4.       MakeContextMenuEntry_AddItemToGearSet(itemLink, itemID)
  5.       MakeContextMenuEntry_RemoveItemFromGearSet(itemLink, itemID)
  6.       ShowMenu(inventorySlot)
  7.     end
  8. --, 10)
  9. --end

Your contextmenu is now not using a "PreHooK" to ZO_InventorySlot_ShowContextMenu anymore and thus this "delay" is not needed anymore to show your context menu entries at the bottom (below ZOs vanilla context menu entries).
LibCustomMenu took care of this internally already.

Attention:
You also use CATEGORY_LATE to tell the lib to show your entries late BUT this is non existing!
You need to use the proper constant LibCustomMenu.CATEGORY_LATE and then it will work, and your zo_callLater can be totally stripped.

Here is the example code that should work:
Lua Code:
  1. local function AddContextMenuEntries(itemLink, itemID, inventorySlot)
  2.   MakeContextMenuEntry_AddItemToGearSet(itemLink, itemID)
  3.   MakeContextMenuEntry_RemoveItemFromGearSet(itemLink, itemID)
  4.   ShowMenu(inventorySlot)
  5. end
  6.  
  7.  
  8. local function OverWriteInventoryShowContextMenuHandler()
  9.   LibCustomMenu:RegisterContextMenu(
  10.       function(inventorySlot, slotActions)
  11.         -- Inventory slot should either be the player bag, equipment slots, or the bank.
  12.         local slotTypesAllowed = {
  13.           [SLOT_TYPE_ITEM] = true,
  14.           [SLOT_TYPE_EQUIPMENT] = true,
  15.           [SLOT_TYPE_BANK_ITEM] = true,
  16.         }
  17.         local slotType = ZO_InventorySlot_GetType(inventorySlot)
  18.         if not slotTypesAllowed[slotType] then return end
  19.         local bag, index = ZO_Inventory_GetBagAndIndex(inventorySlot)
  20.         if not bag or not index then return end
  21.         local itemLink = GetItemLink(bag, index)
  22.         local itemID = Id64ToString(GetItemUniqueId(bag, index))
  23.         if not itemLink or itemLink == "" or not itemID then return end
  24.         easyDebug("Item ID of " .. itemLink .. ": " .. itemID)
  25.         local itemType = GetItemLinkItemType(itemLink)
  26.         local itemTypesAllowed = {
  27.           [ITEMTYPE_ARMOR] = true,
  28.           [ITEMTYPE_WEAPON] = true,
  29.         }
  30.         -- Item should be armor or weapon.
  31.         if not itemTypesAllowed[itemType] then return end
  32.         AddContextMenuEntries(itemLink, itemID, inventorySlot)
  33.       end,
  34.       LibCustomMenu.CATEGORY_LATE
  35.     )
  36. end
Report comment to moderator  
Reply With Quote
Unread 03/25/20, 10:00 AM  
Gandamir

Forum posts: 12
File comments: 38
Uploads: 0
Food, Potions, and Poisons?

Hey XL Olsen,

I would love the ability to add food, potions, and poisons to the XL Banker list so that when I pull stam gear, I also pull the proper food and potions from the bank so each toon has the right stuff to go adventuring. It would also be nice to be able to pull/push lockpicks, soulgems, etc.

My vision is that on withdraw, it pulls up to a full stack of each. On deposit, deposit all items of that type.

What do you think?


Gandamir
Report comment to moderator  
Reply With Quote
Unread 03/08/20, 10:36 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3086
File comments: 3711
Uploads: 63
Hey XL Olsen,

Please read this and change your context menu on the inventory rows to use LibCustomMenu properly instead to assure all addons can work properly together and to benefit from LibCustomMenu's code (assures there won#t be any insecure error messages due to inventory context menu "hooks"):
https://www.esoui.com/forums/showthread.php?t=9052

Many thanks!


More info below:
Oe thing I noticed and which you definately should change is your prehook to ZO_PreHook('ZO_InventorySlot_ShowContextMenu'

It's not needed as you already use LibCustomMenu.
Please use the RegisterContextMenu function of the library instead to add your anonymous callback function
function(inventorySlot) ... which currently is used in the PreHook of ZO_InventorySlot_ShowContextMenu.

This will make so many addons work smoother together as most use the library and there are possibilities to suppress the context menus (e.g. by pressing a special key like SHIFT or ALT or CTRL) and currently your prehook will not be suppressed this way and always shows.
+ it removes possibilities of unsecure error messages.

Here is the libraries info about it:
Code:
Added callbacks, you can register to, to hook into inventory slot context menu. You don't need to reinvent the hook and are able to control the position of your entry/entries more granular.

category
lib.CATEGORY_EARLY
lib.CATEGORY_PRIMARY
lib.CATEGORY_SECONDARY
lib.CATEGORY_TERTIARY
lib.CATEGORY_QUATERNARY
lib.CATEGORY_LATE

CATEGORY_EARLY is before the first built-in menu entry.
CATEGORY_PRIMARY is after the first built-in menu entry. And so on.
CATEGORY_LATE is after built-in menu and default.

lib:RegisterContextMenu(func, category)
Register to the context menu of the inventory mouse right click.

func: callback function to be called.
Signature:
Lua Code:
local function func(inventorySlot, slotActions)
end

category: optional. defaults to CATEGORY_LATE.
So please do something like this instead in file XLGB_MenuOverwriter.lua
Lua Code:
  1. local function OverWriteInventoryShowContextMenuHandler()
  2. LibCustomMenu:RegisterContextMenu(
  3.           function(inventorySlot, slotActions)
  4.             -- Inventory slot should either be the player bag, equipment slots, or the bank.
  5.             local slotTypesAllowed = {
  6.               [SLOT_TYPE_ITEM] = true,
  7.               [SLOT_TYPE_EQUIPMENT] = true,
  8.               [SLOT_TYPE_BANK_ITEM] = true,
  9.             }
  10.             local slotType = ZO_InventorySlot_GetType(inventorySlot)
  11.             if not slotTypesAllowed[slotType] then return end
  12.             local bag, index = ZO_Inventory_GetBagAndIndex(inventorySlot)
  13.             if not bag or not index then return end
  14.             local itemLink = GetItemLink(bag, index)
  15.             local itemID = Id64ToString(GetItemUniqueId(bag, index))
  16.             if not itemLink or itemLink == "" or not itemID then return end
  17.             easyDebug("Item ID of " .. itemLink .. ": " .. itemID)
  18.             local itemType = GetItemLinkItemType(itemLink)
  19.             local itemTypesAllowed = {
  20.               [ITEMTYPE_ARMOR] = true,
  21.               [ITEMTYPE_WEAPON] = true,
  22.             }
  23.             -- Item should be armor or weapon.
  24.             if not itemTypesAllowed[itemType] then return end
  25.             AddContextMenuEntries(itemLink, itemID, inventorySlot)
  26.           end,
  27.           CATEGORY_LATE
  28.   )
  29. end

I have modified your code a bit to make it easier, if you like to.

Oh and important:
In your function AddContextMenuEntries remove the zo_callLater as the library LibCustomMenu will handle this autoamtically for the new added menu entries!

Lua Code:
  1. local function AddContextMenuEntries(itemLink, itemID, inventorySlot)
  2.       MakeContextMenuEntry_AddItemToGearSet(itemLink, itemID)
  3.       MakeContextMenuEntry_RemoveItemFromGearSet(itemLink, itemID)
  4.       ShowMenu(inventorySlot)
  5. end
Last edited by Baertram : 03/25/20 at 03:11 PM.
Report comment to moderator  
Reply With Quote
Unread 02/27/20, 09:52 AM  
XL_Olsen
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 10
Uploads: 1
Feature requests

Just checking in again in the comments to say that your feature requests have been noted -
It's great that you're coming with ideas, and I for sure will look into implementing new features and polishing the addon with e.g. tooltips, bugfixes etc. whenever I get the time to work on it

Thanks for your feedback!
Report comment to moderator  
Reply With Quote
Unread 02/15/20, 04:09 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3086
File comments: 3711
Uploads: 63
Aren't there events fired like event_inventory_single_slot_updated (once as item got removed from bag_backpack/bag_worn and again as item reaches bag_babk e.g.) where you could register a callback function and after the item reaches the bag wait a bit then move the next? Maybe this works as a throttle.

Feature request
1. /xlgb chat command should be a toggle command so it will show AND hide the UI if you use it. Currently it is oinly able to show it, but hiding only works via clicking the X at the UI.

2. Add notes multiline editbox or note icon and edit box upon click (shows text on mouse hover). Maybe the addon could even show which items are ins everal saved gears automatically with that note icon & tooltip.
I've send you a PM with more details.

3. Add tooltips to the buttons like + - save discard

4. Add a button "remove all items" if in edit mode of a gear to remove all the items in the current set/gear.
Maybe at the line "Total items in set: <number> [X button to remove all]

5. Upon creation of a gear/set also save the currently logged in character id to this set name and in the context menus for add item show a * e.g. at the end of these sets which were created by the currently logged in character id. This makes finding the sets easier in the context menus if you got a lot entries imo.
API function: GetCurrentCharacterId()

btw slight visual bug:
If I manually change the hieght of the XLGB UI the scrollbar does not update properly. It stays the same height and thus scrolling looks weird.
If I switch the active selected gear in the UI the scrollbar updates again (duie to the list's refresh I guess).

This also happens if I remove items from the list. The scrollbar will stay at the same length like before removing the items until I change the active selected gear.

Originally Posted by XL_Olsen
Edit 2: Also this doesn't seem to help either. Same problem persists:

Lua Code:
  1. local function moveGear(sourceBag, itemsToMove, targetBag, availableBagSpaces)
  2.   --Move each item of the specified gearset from sourceBag to targetBag
  3.   for i, itemEntry in ipairs(itemsToMove) do
  4.     zo_callLater(function()
  5.       moveItem(sourceBag, itemEntry.index, targetBag, availableBagSpaces[i]) end,
  6.       200
  7.     )
  8.   end
  9. end

Edit: So I quickly tried again with zo_callLater. The delay values I used for testing was 200, 2000 and 5000. What happens is that it seems like it would delay every single request by the delay time, however the delay would not add up and the staggering of requests remained the same (just with e.g. the 2 sec wait time before anything happened.)

Lua Code:
  1. local function moveItem(sourceBag, itemIndex, targetBag, availableSpace)
  2.   local moveSuccesful = false
  3.   moveSuccesful = CallSecureProtected("RequestMoveItem", sourceBag, itemIndex, targetBag, availableSpace, 1)
  4.   if moveSuccesful then
  5.     easyDebug("Item move: Success!")
  6.   end
  7. end
  8.  
  9. local function moveItemDelayed(sourceBag, itemIndex, targetBag, availableSpace)
  10.   zo_callLater(function () moveItem(sourceBag, itemIndex, targetBag, availableSpace) end, 2000)
  11. end
  12.  
  13. local function moveGear(sourceBag, itemsToMove, targetBag, availableBagSpaces)
  14.   --Move each item of the specified gearset from sourceBag to targetBag
  15.   for i, itemEntry in ipairs(itemsToMove) do
  16.     moveItemDelayed(sourceBag, itemEntry.index, targetBag, availableBagSpaces[i])
  17.   end
  18. end

Yeah I was suspecting as much. The amount of items able to be moved changing with the amount of addons sending requests makes sense too. I tried adding a delay before with no success, I guess I didn't add a high enough timer hmm. It would indeed be nice knowing that the addon will not boot you from the server without compromising the snappy/instant feel of moving items too much. Thanks for your insight !

Originally Posted by Baertram
Booted from server
This happens each time addons send too much messages due to raised events or usage of items, banking operations, creating of items by crafting, deconstruction etc. in a too short period of time.

You can always add some delay in between the operations or craft in stacks of a max amount of items (you alwas need to test what amounts the server will allow here AND having many addons enabled your raise more messages to the server so that with your addon only it will be 50 items but with 5 addons enabled it will be <50 items than.)

A working solution so far is the usage of e.g.
zo_callLater(function()
Lua Code:
  1. --your code here
  2. ), delayInMilliseconds)
in between the operations / stack of operations.

Delay will be increased each time so the next operation starts after the before one finished etc.
e.g. mass deconstruction of items before Multicraft was implmented into the vanilla UI was causing the server to boot you if you had no delay in between.
Adding a 200+ms delay in between worked and you did not get booted anymore.
Last edited by Baertram : 02/22/20 at 07:22 AM.
Report comment to moderator  
Reply With Quote
Unread 02/13/20, 05:30 AM  
XL_Olsen
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 10
Uploads: 1
Edit 2: Also this doesn't seem to help either. Same problem persists:

Lua Code:
  1. local function moveGear(sourceBag, itemsToMove, targetBag, availableBagSpaces)
  2.   --Move each item of the specified gearset from sourceBag to targetBag
  3.   for i, itemEntry in ipairs(itemsToMove) do
  4.     zo_callLater(function()
  5.       moveItem(sourceBag, itemEntry.index, targetBag, availableBagSpaces[i]) end,
  6.       200
  7.     )
  8.   end
  9. end

Edit: So I quickly tried again with zo_callLater. The delay values I used for testing was 200, 2000 and 5000. What happens is that it seems like it would delay every single request by the delay time, however the delay would not add up and the staggering of requests remained the same (just with e.g. the 2 sec wait time before anything happened.)

Lua Code:
  1. local function moveItem(sourceBag, itemIndex, targetBag, availableSpace)
  2.   local moveSuccesful = false
  3.   moveSuccesful = CallSecureProtected("RequestMoveItem", sourceBag, itemIndex, targetBag, availableSpace, 1)
  4.   if moveSuccesful then
  5.     easyDebug("Item move: Success!")
  6.   end
  7. end
  8.  
  9. local function moveItemDelayed(sourceBag, itemIndex, targetBag, availableSpace)
  10.   zo_callLater(function () moveItem(sourceBag, itemIndex, targetBag, availableSpace) end, 2000)
  11. end
  12.  
  13. local function moveGear(sourceBag, itemsToMove, targetBag, availableBagSpaces)
  14.   --Move each item of the specified gearset from sourceBag to targetBag
  15.   for i, itemEntry in ipairs(itemsToMove) do
  16.     moveItemDelayed(sourceBag, itemEntry.index, targetBag, availableBagSpaces[i])
  17.   end
  18. end

Yeah I was suspecting as much. The amount of items able to be moved changing with the amount of addons sending requests makes sense too. I tried adding a delay before with no success, I guess I didn't add a high enough timer hmm. It would indeed be nice knowing that the addon will not boot you from the server without compromising the snappy/instant feel of moving items too much. Thanks for your insight !

Originally Posted by Baertram
Booted from server
This happens each time addons send too much messages due to raised events or usage of items, banking operations, creating of items by crafting, deconstruction etc. in a too short period of time.

You can always add some delay in between the operations or craft in stacks of a max amount of items (you alwas need to test what amounts the server will allow here AND having many addons enabled your raise more messages to the server so that with your addon only it will be 50 items but with 5 addons enabled it will be <50 items than.)

A working solution so far is the usage of e.g.
zo_callLater(function()
Lua Code:
  1. --your code here
  2. ), delayInMilliseconds)
in between the operations / stack of operations.

Delay will be increased each time so the next operation starts after the before one finished etc.
e.g. mass deconstruction of items before Multicraft was implmented into the vanilla UI was causing the server to boot you if you had no delay in between.
Adding a 200+ms delay in between worked and you did not get booted anymore.
Last edited by XL_Olsen : 02/13/20 at 06:11 AM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: