Go to Page... |
Compatibility: | Stonethorn (6.1.5) |
Updated: | 09/02/20 02:55 PM |
Created: | 10/14/19 10:49 PM |
Monthly downloads: | 317 |
Total downloads: | 29,061 |
Favorites: | 33 |
MD5: |
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 |
![]() |
Comment Options |
![]() |
|
|
This looks very prommissing, thanks!
Any chance you can add multi language support for the context menu? You can have a look at pChat, there is an easy way to support multiple language "files" dynamically. Just define in your addon's txt file an entry like Code:
/lang/lang_base.lua #Contains all the strings in EN e.g. /lang/lang_$(language).lua # Contains the translated strings in file lang_de.lua, or lang_fr.lua or lang_jp.lua etc. The constant $(language) will be replaced with the 2 character client language text, e.g. de, en, fr. If the file does not exists it will be just skipped. You can also define an empty en.lua e.g. so it will be found but nothing is loaded. The base strings should ALWAYS be loaded with e.g. english so having a base file or alwaysLoaded file as fallback is a best practice. Then check the pChat language folder files how to lpoad the base strings and then how to load the other strings in other language files. Define your own constants like SI_XLGB_CONTEXTMENU_ADD etc. And in your addon replace the static english texts with GetString(SI_XLGB_CONTEXTMENU_ADD) and the game will handle the correct translations from the files for you. For texts containing values (e.g. d("[XLGB] Item " .. itemLink .. " is already in " .. gearSetName) ) you can use string.format like this: Define a string constant SI_XLGB_PREFIX = "[XLGB] ". This will be reused for all your leading prefix texts. Define a string constant SI_XLGB_ALREADY_IN_SET = "Item %s is already in %s" Lua Code:
German translations: --> Ideas: As bank and storage chest messages are quite similar: You could even use a placeholder for "bank" or "storage" or "chest" in your messages and define texts where you can use string.format to dynamically replace the placeholder with "storage chest" or "bank" then. -----Strings----- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1st line English 2nd line German ... English ... German and so on... !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Code:
--Error mesages d("[XLGB_ERROR] GearSetNumber is invalid. Got:", gearSetNumber) d("[XLGB_FEHLER] GearSetNummmer ist ungültig: ", gearSetNumber) d("[XLGB_ERROR] Enter a name for the set.") d("[XLGB_FEHLER] Bitte gib einen Namen für das Set ein.") d("[XLGB_ERROR] A set named ".. gearSetName .." does already exist! Set names should be unique.") d("[XLGB_FEHLER] Ein Set mit Namen ".. gearSetName .." existiert bereits! Set Namen müssen eindeutig sein.") d("[XLGB_ERROR] Trying to move " .. numberOfItemsToMove/#itemsToMove.. "items into a bag with " .. #availableBagSpaces/numberOfAvailableSpaces .." empty slots.") d("[XLGB_FEHLER] Versuche " .. numberOfItemsToMove/#itemsToMove.. " Gegenstände in einen Beutel mit " .. #availableBagSpaces/numberOfAvailableSpaces .." freien Plätzen zu verschieben.") d("[XLGB_ERROR] Bank is not open, abort!") d("[XLGB_FEHLER] Bank ist nicht geöffnet, Abbruch!") d("[XLGB_ERROR] Cannot assign set to storage. Trying to assign " .. #itemsNotAlreadyAssigned .. " items when only " .. storageBag.slotsLeft .. " are open for assignment.") d("[XLGB_FEHLER] Kann Set nicht der Lagertruhe zuweisen. Versuche insgesamt " .. #itemsNotAlreadyAssigned .. " Gegenstände zuzuweisen, wobei nur " .. storageBag.slotsLeft .. " übrig sind für die Zuweisung.") d("[XLGB_ERROR] House storage chest not open, abort!") d("[XLGB_FEHLER] Haus Lagertruhe nicht geöffnet, Abbruch!") d("[XLGB_ERROR] Gearset already assigned to this storage chest.") d("[XLGB_FEHLER] Gearset ist bereits dieser Lagertruhe zugewiesen.") d("[XLGB_ERROR] Set \'" .. gearSet.name .. "\' is already not assigned to this chest.") d("[XLGB_FEHLER] Set \'" .. gearSet.name .. "\' ist noch nicht dieser Truhe zugewiesen.") d("[XLGB_ERROR] On item update: Couldn't reassign set \'".. gearSetAfter.name .."\' to storageBag with ID: " .. storageBagID) d("[XLGB_FEHLER] Bei Gegenstandsaktualisierung: Konnte das Set \'".. gearSetAfter.name .."\' nicht der Lagertruhe mit ID: " .. storageBagID .. " zuweisen.") --Texts chat output etc. d(Item " .. itemLink .. " is already in " .. gearSetName) d(Gegenstand " .. itemLink .. " ist bereits in " .. gearSetName) d("[XLGB] Assigned \'" .. gearSet.name .. "\' to chest.") d("[XLGB] \'" .. gearSet.name .. "\' wurde Truhe zugewiesen.") d("[XLGB] Depositing " .. gearSet.name) d("[XLGB] Einlagerung " .. gearSet.name) d("[XLGB] Set \'" .. gearSet.name .. "\' deposited!") d("[XLGB] Set \'" .. gearSet.name .. "\' eingelagert!") d("[XLGB] Withdrawing " .. gearSet.name) d("[XLGB] Auslagerung " .. gearSet.name) d("[XLGB] Set \'" .. gearSet.name .. "\' withdrawn!") d("[XLGB] Set \'" .. gearSet.name .. "\' ausgelagert!") d("[XLGB] Set \'" .. gearSet.name .. "\' is no longer assigned to this chest.") d("[XLGB] Set \'" .. gearSet.name .. "\' ist nicht länger dieser Lagertruhe zugewiesen.") d("[XLGB] Depositing assigned items from sets: ", storageBag.assignedSets) d("[XLGB] Lagere zugewiesene Gegenstände des Sets ein: ", storageBag.assignedSets) d("[XLGB] Assigned items deposited!") d("[XLGB] Zugewiesene Gegenstände eingelagert!") d("[XLGB] Withdrawing assigned items from sets", storageBag.assignedSets ) -->Here is missing the <space>: behind sets, or you should remove the : behind the sets: of "Depositing assigned items from sets: " d("[XLGB] Lagere zugewiesene Gegenstände des Sets aus: ", storageBag.assignedSets ) d("[XLGB] Assigned items withdrawn!") d("[XLGB] Zugewiesene Gegenstände ausgelagert!") d("[XLGB] Cleared storage chest assigned sets.") d("[XLGB] Zugeweisung der Sets zur Lagertruhe wurden aufgehoben.") d("[XLGB] Chest contains the following assigned sets:") d("[XLGB] Truhe beinhält die folgenden zugewiesenen Sets:") d("[XLGB] Total sets: " .. #storageBag.assignedSets/totalGearSets) d("[XLGB] Anzahl Sets: " .. #storageBag.assignedSets/totalGearSets) d("[XLGB] Total items: " .. #storageBag.assignedItems .. " out of " .. storageBag.size) d("[XLGB] Anzahl Gegenstände: " .. #storageBag.assignedItems .. " von " .. storageBag.size) d("[XLGB] Created new set: " .. gearSetName) d("[XLGB] Neues Set erstellt: " .. gearSetName) d("[XLGB] Removed set: " .. gearSet.name) d("[XLGB] Set entfernt: " .. gearSet.name) d("[XLGB] Added item " .. itemLink .. " to " .. gearSet.name) d("[XLGB] Gegenstand " .. itemLink .. " zu " .. gearSet.name .. " hinzugefügt") d("[XLGB] Removed item " .. itemLink .. " from " .. gearSetName) d("[XLGB] Gegenstand " .. itemLink .. " aus " .. gearSetName .. " entfernt") d("Set " .. i .. " = " .. gearSet.name) d("Set " .. i .. " = " .. gearSet.name) d("Set \'" .. gearSet.name .. "\' contains the following items:") d("Set \'" .. gearSet.name .. "\' beinhält die folgenden Gegenstände:") d("[XLGB] Total items = " .. #gearSet.items) d("[XLGB] Anzahl Gegenstände = " .. #gearSet.items) --Context menu entries self.ADD_ITEM_TO_GEARSET = "XLGB addItem" self.ADD_ITEM_TO_GEARSET = "XLGB Hinzufügen" self.REMOVE_ITEM_FROM_GEARSET = "XLGB removeItem" self.REMOVE_ITEM_FROM_GEARSET = "XLGB Entfernen" --Keybinds name = "Deposit Assigned", name = "Zugewiesene Einlagern", name = "Withdraw Assigned", name = "Zugewiesene Auslagern", "Deposit Gear Set <number 1 to 9>" "Lagere Gear Set <number 1 to 9> ein" "Withdraw Gear Set <number 1 to 9>" "Lagere Gear Set <number 1 to 9> aus" --Slash commands d("\'/xlgb_sets\': Prints out saved sets to chat.") d("\'/xlgb_sets\': Chat Ausgabe gespeicherter Sets.") d("\'/xlgb_items setNumber\': Prints out set #(setNumber)s items to chat.") d("\'/xlgb_items setNumber\': Chat Ausgabe der Gegenstände des Sets #(setNummer).") d("\'/xlgb_addset setName\': Creates a new set named (setName).") d("\'/xlgb_addset setName\': Erstellt ein neues Set mit Namen (setName).") d("\'/xlgb_removeset setNumber\': Removes set #(setNumber).") d("\'/xlgb_removeset setNumber\': Entfernt Set #(setNummer).") d("\'/xlgb_deposit setNumber\': Deposit all items from set #(setNumber) into the bank.") d("\'/xlgb_deposit setNumber\': Einlagern aller Gegenstände des Sets #(setNummer) in die Bank.") d("\'/xlgb_withdraw setNumber\': Withdraw all items from set #(setNumber) into the player inventory.") d("\'/xlgb_withdraw setNumber\': Auslagern aller Gegenstände des Sets #(setNummer) in das Inventar.") d("\'/xlgb_assign setNumber\': Assigns set #(setNumber) to opened chest.") d("\'/xlgb_assign setNumber\': Weist Set #(setNummer) der geöffneten Truhe zu.") d("\'/xlgb_unassign setNumber\': Unassigns set #(setNumber) from opened chest.") d("\'/xlgb_unassign setNumber\': Hebt Zuweisung des Sets #(setNummmer) zur geöffneten Truhe auf.") d("\'/xlgb_clearassigned\': Clears the list of sets assigned to opened chest.") d("\'/xlgb_clearassigned\': Leert die Liste der zugewiesenen Sets der geöffneten Truhe.") d("\'/xlgb_assignedsets\': Prints out the sets assigned to opened chest.") d("\'/xlgb_assignedsets\': Chat Ausgabe der Truhen zugewiesenen Sets.") d("\'/xlgb_debug\': Toggles debug mode. (Note: quite verbose)") d("\'/xlgb_debug\': Debug Modus umschalten. (Notiz: sehr wortreich)")
Last edited by Baertram : 10/17/19 at 07:10 AM.
|
![]() |
![]() |
Baertram |
View Public Profile |
Send a private message to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
![]() |
||
|
Thank you for your feedback! For sure I will look into adding multi-lang support, didn't think I'd get noticed this quick, so didn't think it'd be needed ![]() I'm also working on a UI module to give a better overview of saved sets and items, similar to e.g. Dressing Room (Distinguish between sets) or Inventory Insight (the way the items are listed), but I ran into problems here - Would be nice to have something other than the slash_commands but I guess they'll work while the addon is in its infant stages. Again - Thanks for the tips, translation and how to approach multi-lang support, it's appreciated! |
|
![]() |
![]() |
XL_Olsen |
View Public Profile |
Send a private message to XL_Olsen |
Find More Posts by XL_Olsen |
Add XL_Olsen to Your Buddy List |
![]() |
|||
|
You could also use the LibAddonMenu-2.0 LAM library to create a settings panel for the overview of your sets in banks and handling them. It already provides standard controls and you can alsoa dd customd efined controls to the settings menu.
This library here is nice as it provides a listbox with 2 sides where you can drag&drop or move/add items to. It maybe good to e.g. show the different banks / storage chests on one side and the sets defined in another one so you can drag&drop them from one to another etc. https://www.esoui.com/downloads/info...hifterBox.html
|
||
![]() |
![]() |
Baertram |
View Public Profile |
Send a private message to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
Baertram |
View Public Profile |
Send a private message to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
XL_Olsen |
View Public Profile |
Send a private message to XL_Olsen |
Find More Posts by XL_Olsen |
Add XL_Olsen to Your Buddy List |
![]() |
|
Guest
Join Date: Not Yet
Forum posts: 0
File comments: 0
Uploads: 0
|
More then 45 items
I have a total of 46 items in a set but only 45 are getting withdrawn. Even if it withdrawn 45 items and i click again to withdraw the last item it will not do it. Also happends with deposit.
|
![]() |
![]() ![]() |
SimplyArmin |
View Public Profile |
Send a private message to SimplyArmin |
Find More Posts by SimplyArmin |
![]() |
||
|
Re: More then 45 items
Hi SimplyArmin! I had that problem before and thought I fixed it hmm. Are you using the bank or storage chest? Also are you ESO+ or no ? What item is not getting withdrawn/deposited (what number in the list)?
Last edited by XL_Olsen : 12/17/19 at 08:33 PM.
|
|
![]() |
![]() |
XL_Olsen |
View Public Profile |
Send a private message to XL_Olsen |
Find More Posts by XL_Olsen |
Add XL_Olsen to Your Buddy List |
![]() |
|||
Guest
Join Date: Not Yet
Forum posts: 0
File comments: 0
Uploads: 0
|
Re: Re: More then 45 items
So... I had all 46 items in the bank. I withdrew them and it worked. When I deposited them only 45 were deposit. 1 Perfect False God Ring didnt. Also last time i described the issue it was exactly that ring. I have ESO+ and use the default banker. Its No. 22 in the Gear Banker List. Right now I tested again... I removed that ring which caused issues. So my list went down from 46 to 45. Again 1 Item didn't deposit. It was my Perfect False God Robe which was now No. 22 in the list. So I removed the Robe as well. And now its my FG Sash which now is No. 22 and didnt deposit again. TLDR: Withdraw works. Deposit the item No. 22 is not working in the set.
Last edited by : 12/20/19 at 07:26 AM.
|
||
![]() |
![]() ![]() |
SimplyArmin |
View Public Profile |
Send a private message to SimplyArmin |
Find More Posts by SimplyArmin |
![]() |
|
Forum posts: 0
File comments: 10
Uploads: 0
|
Server Boots
First of all, thank you so much for this addon! I can see how this will be incredibly helpful for transferring gear between alts.
Currently the addon is having issues handling large sets of gear. For example, I made a set with 106 pieces of gear (all my healer sets). I opened the bank, clicked Withdraw, but only 100 items were withdrawn. The game then booted me from the server. When I was able to log back in, I clicked Withdraw and the remaining 6 pieces were withdrawn. I then attempted to deposit the set back into the bank. This time it only deposited 29 items, and again I was booted from the server. I'm assuming the server boots are because it considers the large amount of bank transactions all at once as spamming, so maybe this could be prevented by staggering the transactions similar to how Personal Assistant handles bulk deposits/withdrawals? |
![]() |
![]() |
sobelding |
View Public Profile |
Send a private message to sobelding |
Send email to sobelding |
Find More Posts by sobelding |
Add sobelding to Your Buddy List |
![]() |
||
|
Re: Server Boots
(Edit: The issue with all items not getting withdrawn/deposited is now fixed! Only the booting from server remains)
Thank you for your kind words! You are 100% right about this, and I'm looking for a clean way to stagger the items as you mentioned. I fear the "instant" withdrawal/depositing of items is also what causes some items, to not withdraw/deposit at all aswell (even in smaller sets where you don't get booted e.g. look at one of the comments below). I do have finals coming up so I don't know how much time I'll have to come up with a solution these issues currently ![]() ![]() For now I think my suggestion would be to create sets at around 50-60 items (I've found that to be a "manageable" number), and also do some quick maths to check whether all items did withdraw/deposit (did the bank get itemNumberAmount of items upon withdrawal). I'll leave an open issues comment here with information of current issues and the raw facts (Feel free to correct me if I've gotten any of these wrong): Booted from server
All items not getting withdrawn/deposited
Thanks for using the addon despite its current flaws, I'm glad that it can help other ppl!
Last edited by XL_Olsen : 02/12/20 at 11:42 PM.
|
|
![]() |
![]() |
XL_Olsen |
View Public Profile |
Send a private message to XL_Olsen |
Send email to XL_Olsen |
Find More Posts by XL_Olsen |
Add XL_Olsen to Your Buddy List |
![]() |
|
|
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:
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. |
![]() |
![]() |
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
![]() |
||
|
Edit 2: Also this doesn't seem to help either. Same problem persists:
Lua Code:
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:
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 !
Last edited by XL_Olsen : 02/13/20 at 06:11 AM.
|
|
![]() |
![]() |
XL_Olsen |
View Public Profile |
Send a private message to XL_Olsen |
Send email to XL_Olsen |
Find More Posts by XL_Olsen |
Add XL_Olsen to Your Buddy List |
![]() |
|||
|
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.
Last edited by Baertram : 02/22/20 at 07:22 AM.
|
||
![]() |
![]() |
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
![]() |
|
|
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! |
![]() |
![]() |
XL_Olsen |
View Public Profile |
Send a private message to XL_Olsen |
Send email to XL_Olsen |
Find More Posts by XL_Olsen |
Add XL_Olsen to Your Buddy List |
![]() |
|
|
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. Lua Code:
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:
Last edited by Baertram : 03/25/20 at 03:11 PM.
|
![]() |
![]() |
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
![]() |