Quantcast
Download
(85 Kb)
Download
Updated: 12/05/21 02:19 PM
Pictures
File Info
Compatibility:
Deadlands (7.2.5)
Waking Flame (7.1.5)
Blackwood (7.0.5)
Flames of Ambition (6.3.5)
Markarth (6.2.5)
Stonethorn (6.1.5)
Greymoor (6.0.5)
Updated:12/05/21 02:19 PM
Created:03/13/19 07:00 PM
Monthly downloads:42,847
Total downloads:249,025
Favorites:206
MD5:
Categories:Plug-Ins & Patches, Bags, Bank, Inventory
7.2.5
Auto Category - Revised  Updated less than 3 days ago!  Popular! (More than 5000 hits)
Version: 2.33
by: Shadowfen [More]
Depends on the following (separately installed) libraries: LibSFUtils, LibAddonMenu-2.0, LibMediaProvider-1.0, and LibDebugLogger

Auto Category adds categories to your inventory, bank, guild bank, craft bag, and crafting station screens. Fully customizable!

Features
  • Pre-defined rules and settings for beginners, download and use with no more settings required. Just that easy!
  • A nice header is added for each category. Get a clear view of your inventory.
  • Auto group for your set items without adding rules one by one.
  • Use pre-defined or your own rules, applying them to your backpack/bank/guild bank/craft bag/craft station/home storage, it will refresh categories immediately without reloading.
  • Fully customizable rules based on LUA, for advanced users you can categorize items as the way you want.
  • Rule checking to assist you in writing rules that can work.
  • Wiki documentation for learning to create rules.
  • [For Developers] Supports creation of separate plugin addons to integrate between other Addons and AutoCategory. See the new embedded Plugins files (FCOIS, Iakoni, ItemSaver, etc) for examples of simple and complex plugin integration.
  • Believed to auto integrate with all interfaces. Keyboard is fully supported. Gamepad supports most of them. (Gamepad with BetterUI is not supported.)

Integrates with the following addons:
Wiki:
https://github.com/Shadowfen/AutoCategory/wiki

Based on: RockingDice's Auto Category
2.33(60):
  • Fixed traittype("ornate") so that it will work again.
  • Added ability for the integration with UnknownTracker to tell us when Style Pages are unknown.
  • In addition to adding style pages to the UnknownTracker Plugin function isunknown(), we have a New function isstyleunknown() specifically to look for style pages from UnknownTracker.
  • Fixed multiple errors in the new bulkmode code when running with GridList.
  • Keyboard-mode only. Added a "BulkMode" capability for an inventory manager addon to turn off AutoCategory sorting in the Guild Bank while moving items to or from the guild bank - thereby speeding up the process immensely. Your inventory manager addon will need to set and release BulkMode inside of the addon to temporarily disable guildbank sorting and categorizing. To start, the author needs to set that their addon has an optional dependency on AutoCategory
    Code:
    ## OptionalDependsOn: AutoCategory
    and then to turn on bulk mode:
    Code:
    	if AutoCategory then
    		AutoCategory.BulkMode = true
    	end
    before starting the automated guildbank management process. Once the process is done, the author then needs to reenable AutoCategory sorting and categorization with the following code.
    Code:
    	if AutoCategory and AutoCategory.BulkMode and AutoCategory.BulkMode == true then
    		AutoCategory.BulkMode = false
    		PLAYER_INVENTORY:UpdateList(INVENTORY_GUILD_BANK)
    	end
    (Note: If the author does not do this second part, the sorting and categorization that AutoCategory provides will be reenabled when the Guild Bank window is closed.)
  • Other performance enhancing changes.

2.32(59):
  • Reverting changes to previous working version while I work on the integration with GridList bug. This version is identical to previous 2.30 except the change in version number.

2.31(58):
  • Version changes removed.

2.30(57):
  • Enahncement to function ck_isknown() to accept an optional parameter specifying the character name in the same account who is your crafter and returns true or false if the item in question is marked as known by the specified character by CharacterKnowledge. If you do not specify a character name, then it assumes that you want ck_isknown() to use the current character. If you misspell your character name, or provide a character from a different account, it will ignore the parameter and assume you meant the current character.
    Exampe:
    Code:
        ck_isknowncat("recipe") and not ck_isknown("My Crafty Crafter")

2.29 (56):
  • New - Integration with CharacterKnowledge addon, requested by tralce.
  • New function ck_isknowncat() returns true or false if the item in question belongs to one of the categories recognized by CharacterKnowledge - "recipe", "plan", or "motif". You may specify one or more of these categories to restrict the membership you are looking for, or if you leave it empty then the function will check membership against any of the known categories.
  • New function ck_isknown() returns true or false if the item in question is marked as known for the current character (and server) by CharacterKnowledge. Note that this function will return false when tested against an item (such as a piece of armor, or a potion) that is not tracked by CharacterKnowledge. A recommended rule for checking unknowns would be
    Code:
        ck_isknowncat() and not ck_isknown()
    More specifically, you can look for unknown recipes only by the following:
    Code:
        ck_isknowncat("recipe") and not ck_isknown()

2.28 (55):
  • New - Spanish language translation courtesy of MasterZiggy.

2.27 (54):
  • New setting to change category names from "Set (God Gear)" to simply "God Gear" when using the autoset rule. The default setting (ON) is to behave as it always has before. Turning it off will enable the display of "God Gear" instead of the old "Set ( )". Note that changing this setting will change all of your collapsed categories back to expanded in your inventory because those are stored by name.
    Categories are usually named "rule name" or "rule name (sub-name)" when there is a sub-name provided. Typically the autoset(), the FCOIS plugin, and the AlphaGear plugins are known to provide sub-names. If a subname is not provided, then we always display the only the rule name as the category.
  • FCOIS users, this new setting will also affect category names for FCOIS rules (in particular the Dynamic rules.)
  • AlphaGear users, this new setting will also affect category names for AlphaGear rules.
  • ANNOYING CHANGE for Plugin authors: Where previously, you would append " (sub-name)" to the AutoCategory.AdditionCategoryName, now you should simply assign your subname to it (AutoCategory.AdditionCategoryName = subname). The AutoCategory addon will be responsible for putting the subname in parentheses as necessary for display.
  • Translations of:
    Code:
    	SI_AC_MENU_GS_CHECKBOX_SHOW_CATEGORY_SET_TITLE = "Show 'Set(name)' for autosets",
    	SI_AC_MENU_GS_CHECKBOX_SHOW_CATEGORY_SET_TITLE_TOOLTIP = "Show 'Set(name)' instead of 'name' in inventory for autosets",
    are requested for German, French, Russian, and Chinese to update the new strings for those languages


2.26 (53):
  • New function isinzone() returns true or false if the name of the item in question contains the name of the current zone. (Primarily useful for treasure maps and surveys!)
  • New function zone() returns the name of the current zone.
  • API bump.
Gamepad changes from Friday-the13-rus.
  • Fix for gamepad guild bank and updated gamepad inventory keybinds position to match vanilla inventory

2.25 (52):
  • Require minimum version of installed LibAddonMenu to be at least 32. Earlier versions break the user interface.

2.24 (51):
  • Implemented minor speedup suggested by Klingo. Thanks!
  • Update minimum versions of required libraries checked for.
  • API bump.

2.23 (50):
FCOItemSaver integration enhancements: (requested by Baertram)
  • New function isfcoisprotected() checks if the item is protected by FCOIS.
  • New function isfcoisgear() checks of the item is marked as gear in FCOIS.

2.22 (49):
  • New function getamountttc() to get the number of sales for the current item from TTC.

2.21 (48):
  • Put in a fix addressing the lag issue with banking.
  • Commented out the remains of the old (nonsupported) Inventory Grid View addon integration. For using a grid inventory view with AutoCategory, I recommend the GridList (https://www.esoui.com/downloads/info2341-GridList.html) addon.

2.20 (47):
  • Merged in code from @Saenic to turn on/off the display of the plus/minus to expand/condense individual categories within the inventory.
    The default setting is to have the display of plus/minus be ON (as it worked before).
  • Added the following new item trait types introduced with the companions:
    o armor:
    armor_aggressive, armor_augmented, armor_bolstered, armor_focused, armor_prolific, armor_quickened, armor_shattering, armor_soothing, armor_vigorous
    o jewelry:
    jewelry_aggressive, jewelry_augmented, jewelry_bolstered, jewelry_focused, jewelry_prolific, jewelry_quickened, jewelry_shattering, jewelry_soothing, jewelry_vigorous
    o weapon:
    weapon_aggressive, weapon_augmented, weapon_bolstered, weapon_focused, weapon_prolific, weapon_quickened, weapon_shattering, weapon_soothing, weapon_vigorous
  • Added the following item type (type): group_repair
  • Added the following specialized item types (sptype):
    collectible_style_page, container_currency, container_style_page, siege_lancer, trophy_dungeon_buff_ingredient
  • Removed the former item filter type (filtertype) reuse that was removed by ESO.

2.19 (46):
  • New function iscompaniononly() allows you to select companion gear.
  • New operand for filtertype(...) which now also allows you to specify companion as one of the filters.

2.18 (45):
  • Reworked rule matching to continue matching against other rules after a rule errors out. Previously it would stop trying to match and just toss everything after that item into "Others".
  • Rules that fail to run because of errors now send those errors to LibDebugLogger.
  • Fixed problem reported by RufusRedBeard that turning off a AutoCategory plugin addon would cause errors when the previously created plugin-reliant rule was evaluated anyway.

2.17 (44):
  • Reworked the inventory sorting to avoid errors with new Blackwood chapter.
  • API bump (Blackwood)

2.16 (43):
  • New function isreconstructed() allows you to select gear that has been reconstructed using the transmute station.
  • New function istransmuted() allows you to select gear that has had the trait changed using the transmute station.
  • New function isunbound() is a convenience function which is essentially equivalent to
    Code:
    not isbound()
    .
Gamepad changes from Friday-the13-rus.
  • Fixed assigning and removing item to quickslot using Extended Supplies Category.

2.15 (42):
From Friday-the13-rus.
  • Update 29 compatibility
  • Added gamepad Fence (sell and launder)
  • Fixed gamepad Buy back

2.14 (41):
From Friday-the13-rus. New gamepad functionality and fixes, and Russian language updates:
  • Fixed error when opening container if it on the first place
  • Fixed error when equipping poisons
  • Fixed situation when all items shown in poisons category
  • Added compare mode to "Extended" Supplies category (can compare current and equipped item).
  • Fixed sorting for bank
  • The addon categories are applying to all gamepad inventory categories
  • Added option to disable "Extended" Supplies category
  • Updated RU translation

About the gamepad "Extended Supplies":
"Extended" Supplies category is Supplies category that contains all items from inventory.
The gamepad settings for the addon contains 2 options: "Enable inventory support" and "Enable extended Supplies category".
If the first option disabled, the addon is not affect gamepad inventory at all.
If the first option enabled, the addon categories are applying to whole gamepad inventory.
If the second option disabled, gamepad inventory contains all default categories (Materials, Furnishings and Slottable items) and default Supplies category.
If the second option enabled, Supplies category transforms to "Extended" Supplies category. Materials, Furnishings and Slottable items categories are hiding.

2.13 (40):
  • Added a setting to Enable the new gamepad support introduced by 2.12. (The setting is OFF/DISABLED by default.)
  • Separated the gamepad and the keyboard hooks code into separate files.

2.12 (39):
  • New gamepad support. Code provided by Friday-the13-rus. I do not have a gamepad to be able to test with, so I have no idea how well it will work for you.

2.11.1 (38):
  • Modified function isnotcollected() so that it returns true if the gear is non-crafted set gear that is not collected. Returns false if the gear is not collectable set gear or it has already been collected.

2.11 (37):
Enhancement
  • New function iscollected() allows you to select set gear that you have already collected. Returns true if the gear is set gear that is collected. Returns false if the gear is not set gear or it has not yet been collected.
  • New function isnotcollected() allows you to select set gear that you have not yet collected. Returns true if the gear is set gear that is not collected. Returns false if the gear is not set get or it has already been collected.

2.10 (36):
  • API bump (Markarth).
  • Zenimax compatibility enum and function updates.

2.9 (35):
Enhancement
  • New value added for
    Code:
    type()
    : "container_currency" allows you to identify a container of transmute crystals. Requested (and code provided) by Drakhyr.

2.8 (33):
Enhancement
  • New function isinbackpack() allows you to check if items is in your backpack or is currently being worn. Requested by AlbertVonMoosseedorf. An example of use for this new function could be a "deconstruct inventory" to list things that you want to decon that ignores the items in the bank. For instance:
    Code:
    isinbackpack() and not ismonsterset() and traitstring("intricate","invigorating","training") and ((type("armor","weapon") and not isset()) or equiptype("head","shoulders"))

2.7.2 (32):
  • Corrected the text for Home Storage Chests in German thanks to report by AlbertVonMoosseedorf.

2.7.1 (31):
  • Parameter values "mythic" or "orange" for the function quality() now really does allow you to check if items are mythic quality. (Finally got a mythic item to test with!)

2.7 (30):
Enhancement
  • New parameter values "mythic" or "orange" for the function quality() allows you to check if items are mythic quality.

2.6 (29):
Enhancement
  • New function istreasure() allows you to check if items are considered Treasure (i.e. random junk that you can sell for good money).

2.5 (28):
  • Updated the ITEM_QUALITY_ values to correspond to the change to ITEM_DISPLAY_QUALITY_ values that was brought in by Greymoor.

2.4.6 (27):
  • API bump.

2.4.5 (26):
  • Added Russian language strings courtesy of Ckau.

2.4.4 (25):
  • Set up the character default settings to the same as the account-wide default settings.
  • Add in minimum version checking for UnknownTracker.
  • Removed version checking for a library that we don't even use.

2.4.3 (24):
  • Add in predefined rules for UnknownTracker integration plugin.

2.4.2 (23):
  • Remove annoying debug printout.

2.4.1 (22):
  • Fix problem with isunknown() returning false where none of the toons knew the item.
  • Fix addon version.

2.4 (21):
COLOR="MediumSlateBlue"]Enhancement[/color]
  • Now integrated with the Unknown Tracker Addon to allow you to write rules about if a recipe, motif, style page, furnishing recipes, or runeboxes are unknown to your character(s). Requires version 0.63 of the addon "Unknown Tracker" to be installed for this to work. (Thanks to kadeer for modifications to "Unknown Tracker" to allow this to work!)
  • New function isunknown() with zero or more strings to match knowledge of the recipe to the named characters (names are case sensitive). If you use isunknown() without any parameters, it will return true if the learnable item (recipe, etc) is unknown to ANY of your toons. If you use isunknown("me") with the special parameter "me" then it will return true if the learnable item is unknown to the toon that you are currently logged in on. Finally you can specify specific toon names as parameters so you can tell if the learnable item is unknown to your specific "crafter" toons. (Note that the options for Unknown Tracker to turn off displaying for specific types of items will also turn off AutoCategory's ability to detect them with this rule.)
  • New function isrecipeunknown() which does the same thing as isunknown() except only for food and drink provisioning recipes.
  • New function isfurnishingunknown() which does the same thing as isunknown() except only for furnishing recipes.
  • New function ismotifunknown() which does the same thing as isunknown() except only for motifs.
For those of you who are new to the Unknown Tracker addon, it will add lists of characters to the inventory item information boxes (tooltips) with colors distinguishing the toons who know if from the toons that do not know it. That cannot be turned off at this time. If you have another addon also doing that, it might be possible that the other addon will allow you to turn those off. In particular, ESO Master Recipe List will add character lists to the Recipes, and TraitBuddy will add them to motifs - and both can be turned off.

2.3.1 (20):
  • Set AddonVersion in manifest file.
  • Now checks dependent library versions (where possible) and will write error messages to LibDebugLogger to indicate when a dependent library is out-dated for the current version of AutoCategory. Messages can be viewed with the DebugLogViewer (recommended addon).

2.3 Changes:
COLOR="MediumSlateBlue"]Enhancement[/color]
  • Added an itemstyle() with one or more strings that are the names of motifs. This function will return true if the style of the item matches one of the names in the parameter list of itemstyle(...). Capitalization is ignored, but spelling of the motif name must be correct - to include spaces and punctuations marks - for instance "dro-m'athra" must include both the "-" and the "'", and "dark brotherhood" is two words separated by a space. (Note that with multi-word motif names, the rule checker will probably warn that it does not recognize the words after the first word of the name.)

2.2.2 Changes:
  • Added sort key conflict resolution by request of Mladen90.

2.2.1
  • Fix version to prevent being listed as "Out of Date".

2.2 Changes:
COLOR="MediumSlateBlue"]Enhancements[/color]
  • Added an charname() with one or more strings that are the names of your characters. This function will return true if the current character name matches one of the names in the parameter list of charname(...). This will allow you to write rules which apply to specific characters only.

2.1.1
  • API Bump

2.1 Changes:
Bug Fixes
  • Fixed problem with islockpick() not being recognized as a function. (reported by Amber1019)

Enhancements
  • Modified islockpick() so that it only gets lockpicks (lockpick tools) instead of lockpicks and repair kits (the "other" tools).
  • Added an ischarbound() to items that are marked as "Character Bound" in inventory. Note that items that match ischarbound() will also match isbound() since character bound is a type of binding. If you want bound that are not also character bound, you will need to specify "~ischarbound() and isbound()" for account bound items only.

2.0.5 Changes:
  • Fixed problem with getmaxtraits() returning one more than the number of traits on a crafted potion. (reported by TheMikrobe)
  • API bump

2.0.4 Changes:
  • Fixed bug that was causing bag categories that had been changed in priority or removed from the bag to be replaced or duplicated (with the original priority) if they were part of the default set. (reported by rhaeven and LeinadOrarogep)

2.0.3 Changes:
  • Fixed bug that was causing getpricettc() (reported by Ivo_ESO), getpricemm(), and alphagear() to not work in rules.

2.0.2 Changes:
  • Fixed minor bug in Bag Export.
  • Fixed bug in type() and sptype() where it was ignoring any arguments after the first one.

2.0.1 Changes:
  • Fixed loading bug in integration for SetTracker, TTC, and Master Merchant.

2.0 Changes:
Breaking Changes
  • Now requires the libraries LibSFUtils, LibAddonMenu-2.0, and LibMediaProvider-1.0 to be installed separately.
  • The SavedVariables for version 2.0 have changed formats from 1.37 in order to support multiple servers and character name changing. This means that 2.0 will not be able to read in your 1.37 category definitions. I recommend that you move your live\SavedVariables\AutoCategory.lua somewhere else (or print it) so that you can refer to your old rules to enter them back into the new AutoCategory.

Bug Fixes
  • Fixed error that prevented AutoCategory from working with the Quality Sort addon. (Thanks to Silvereyes for the corrected code.)
  • Included in the patch for Inventory Grid View integration by Provision to properly display the default icons for Ornate, Intricate, Research, etc. on the grid cells instead of next to them.

Enhancements
  • Elsweyr support.
  • Changed the AutoCategory settings page to try to make it easier to understand and use.
  • Created a wiki based on Rockingdice's which I have permissions to update. Updated and revised help content.
  • NEW: Added a "Check" button to the Add Category section so that you can test to see that your rule will compile properly when you write it. If it does not compile correctly, the area to the left of the Check button will show an error message to try to tell you what was wrong with it.
  • Added a "Hide ungrouped items" option to the Bag Settings which will turn on/off the display of inventory items which do not match any of the Categories which you have assigned to that particular bag. These are the items that are typically listed in "Other" (unless you've changed the name in the Appearance Setttings).
  • Modified iscrafted() so that it will return true for crafted potions or poisons so you can:
    type("poison","potion") and iscrafted()
  • Added the base ability to use some convenience items that are actually combinations of several base game items.
  • Added convenience items:
    Item Types (type):
    o enchanting_rune - this will match against enchanting_rune_aspect, enchanting_rune_essence, or enchanting_rune_potency
    Specialized Item Types (sptype):
    o glyph - this will match against glyph_armor, glyph_weapon, or glyph_jewelry
  • Added an islockpick() to detect lockpicks in inventory since, due to a Zenimax bug, lockpicks do not belong to type("lockpick").
  • Added some convenience values to traittype() that combines existing values:
    o intricate - this will match against armor_intricate, jewelry_intricate, or weapon_intricate
    o divines - this will match against armor_divines
    o infused - this will match against armor_infused, jewelry_infused, or weapon_infused
    o ornate - this will match against armor_ornate, jewelry_ornate, or weapon_ornate
    o nirnhoned - this will match against armor_nirnhoned, or weapon_nirnhoned
  • Added support for the development of addon integrations to AutoCategory as separate plugins. Rewrote three of the internally provided integrations (FCOIS, Iakoni, and ItemSaver) in the form that standalone plugin integrations would take to demonstrate how to register the plugin with AutoCategory, provide additional rule functions, predefined rules, and localization strings where necessary.

Predefined Rules
  • Changed the way that predefined rules are loaded so that they are always loaded first and then your customizations are loaded afterwards. This allows you to get new predefined rules automatically added as they come out with addon or plugin updates. It also means that if you accidentally delete a predefined rule, you can get it back by simply reloading ui.
  • Changed the way that predefined rules are loaded so that predefined rules for addon integrations such as FCOIS and Iakoni Gear Changer are only loaded when you have those particular addons installed. (Note that this applies when the addons are first installed - once the predefines get loaded once, they will get saved to your saved variables. Rules in SavedVariables are always loaded after that until they are deleted. A planned enhancement that did not make this version is to only save customized categories that are actually customized, since now predefines always get loaded.)
  • Added predefined rules for FCOIS dynamics 11-30 for when you are starting AutoCategory without preexisting saved variables.

Localization
  • Expanded the remaining alternative language files to include strings for the FCOIS dynamics 11-30.
  • Added additional localization strings for German from Baertram's git pull request.
  • Removed the alternative language files which were still in English. When we get translations, we can add them back with appropriate values.
  • Converted the way that language strings are defined to use the new LibSFUtils.LoadLanguage() function to load the particular language required (or the specified default if the client language is not available).

Internal (non-visible) Changes
  • Moved FCOIS integration into an included plugin file.
  • Moved ItemSaver integration into an included plugin file.
  • Moved GearChangerByIakoni integration into an included plugin file. Moved the GearChanger language strings into the plugin and load them separately using the AutoCategory.LoadLanguage() to supplement the existing string tables. While not strictly necessary, it acts as both a proof-of-concept and an example for how external plugins to AutoCategory can work.
  • Removed specific integration code for DoItAll addon as that integration was moved to the DoItAll addon instead of residing in AutoCategory (Baertram's pull request).
  • Adopted by Shadowfen after prolonged lack of response from the previous authors. Renamed to "AutoCategory - Revised".


1.37 Changes:
Released by Shadowfen
  • New filter function: getmaxtraits()
    When used with posions and potions, such as this rule:
    type("poison","potion") and getmaxtraits() <=2
    it can tell you which are crafted (i.e. having more than one trait).
    This new feature is courtesy of Tonyleila.
  • Updated the specialized item types. This adds:
    Specialized Item Types (sptype):
    o trophy_toy
    o holiday_writ

1.36 Changes:
Released by Shadowfen
  • Updated the item types, specialized types, filter types, and trait types lists with the latest values from Wrathstone. This adds:
    Item Types (type):
    o jewelry_booster
    o jewelry_material
    o jewelry_raw_booster
    o jewelry_raw_material
    o jewelry_raw_trait
    o jewelry_trait
    o recall_stone
    Specialized Item Types (sptype):
    o furnishing_attunable_crafting_station
    o furnishing_material_jewelry
    o recall_stone_keep
    o recipes_jewelry_sketch_furnishing
    o trophy_collectible_fragment
    o trophy_upgrade_fragment
    o weapon
    Filter Types (filtertype):
    o jewelry
    Trait Types (traittype):
    o jewelry_bloodthirsty
    o jewelry_harmony
    o jewelry_infused
    o jewelry_intricate
    o jewelry_protective
    o jewelry_swift
    o jewelry_triune

1.35 Changes:
Released by Shadowfen
  • Bumped API version for Wrathstone
  • LibStub and LibAddonMenu-2.0 must now be installed separately from AutoCategory.
  • Added support for FCOIS dynamics 11-30.
  • Merged in Provision's integration fixes for IGV.
  • Added jewelry crafting materials, raw materials and boosters for the sptype() check
  • Fixed a crash when a rule could not compile.

1.34 Changes:
  • Added itemname() to match items by name. Returns true if the item name contains any of the provided strings (case insensitive), e.g. itemname("Maelstrom", "Alkosh")


1.33 Changes:
  • Bumped API version for Murkmire.


1.32 Changes:
  • More huge performance improvements! Thanks again to Shadowfen who did all the work here. (Pre-compile rules as they are changed)
  • Replaced Set Tracker support function GetSetTrackerState() with IsTracked(). If you used the old function, you will need to update your rule (sorry). This was done to bring the usage inline with the way the other similar functions work. Usage, e.g.: IsTracked("Sell/Decon", "Collecting")


1.31 Changes:
  • Big performance increase (2x or better for me), thank you to Shadowfen for the code change suggestion!
  • Updated libraries


1.30 Changes:
  • Added French translation. Big thanks to Hasgaad!


1.29 Changes:
  • HOTFIX - resolve errors at merchant due to Wolfhunter API changes.


1.28 Changes:
  • Bumped API version for Wolfhunter.


1.27 Changes:
  • Bumped API version for Summerset.
  • Added support for jewelry crafting ingredients. Note: you will need to either create a new rule yourself, or reset AutoCategory to default settings to grab the new default rule.
    To create your own rule, use
    Lua Code:

    filtertype("jewelrycrafting")

    To reset to default settings: In the Auto Category add-on menu, use the Defaults button. Then use the /reloadui command. Important: this will remove any custom rules/settings you have defined.
  • New API function "IsMarkedIS()" - use to test whether an item is marked with Item Saver. Note that FCO ItemSaver users should continue to use "IsMarked()"


1.26 Changes:
  • New API function "islocked()" - use to test whether an item has been locked.


1.24 Changes:
  • Resolve circular dependency issue with DoItAll (requires matching update to DoItAll).



1.23 Changes:
  • Added Set Tracker support! Use "getsettrackerstate()" to retrieve the name of the Set Tracker category, if an item is tracked.
  • Added charlevel() and charcp() to pull current character level and CP. Can be used to compare item level to your character level with a custom rule. (Thanks to VulcanTourist)


1.22 Changes:
  • You can now define separate settings for your home storage chests (they will take their initial settings from your bank settings, but can be customized at will).


1.21 Changes:
  • Added support for home storage chests (big thanks to raj72616a). Currently, they will use the settings selected for your bank (no custom settings for home chests yet).
  • Bumped API version for Dragon Bones.
  • New maintainer (crafty35a).



1.19 Changes:
  • Fixed Localization.
  • New Feature: Collapsed/Expanded status can be saved now. You can turn it on in the general setting menu.


1.18 Changes:
  • Fixed Bug: IGV will show the last category correctly.
  • Fixed Bug: Items Count can be turned off permanently.
  • Fixed Bug: Quest Panel will not complain about lua error.


1.17 Changes:
  • Removed debug logs in destruct/improvement panel


1.16 Changes:
  • New Feature: Collapsible Category. You can now click the header to fold all items inside. Get an overall view of your inventory! Context Menu is available, you can collapse/expand all headers with one click.
  • New Feature: Hide-able Category. You can hide some categories to focus on the items you need to deal with. Also you can hide the items that are not matched in the 'Other' category. Can be set in bag setting menu.
  • New Feature: Items Count. You can get a total number about how many items inside the category. This can be turned off in the general setting menu.
  • Account Wide setting changed: You can switch account wide/character wide for each of your characters. (* Need to select again if you use character setting before, don't affect the bag settings)
  • Fixed bug: Removed duplicated rules in bag setting.
  • Fixed bug: German set names should be able to be matched now.
  • Changed api:keepresearch()
  • After a lot of tests, the api is not working fine. So I decided to make the api work more simple: It will match all the items can be researched. If you want better result, please use it with other api together. This is a basic idea to filter the item that is not part of a set and can be researched:
    Lua Code:

    keepresearch() and not isset()
  • New api:isset() api:ismonsterset()


1.15 Changes:
  • New feature: Category header's height is customizable!
  • New feature: You can change the name of ungrouped Category.
  • New feature: Added a message in chat when toggling the add-on's function, and a switch for it to turn on/off.
  • Fixed bug: Toggling in Inventory Grid View should not result a bad layout.
  • Fixed bug: Removed tag should not to be restored after relog.
  • New Add-ons Integrated!
    Do It All: You can now use it with AC together.
    Alpha Gear: Added a new api:alphagear
    Master Merchant: Added a new api:getpricemm
    Tamriel Trade Centre: Added a new api:getpricettc
  • New api:isinbank


1.14 Changes:
  • CwC is supported!
  • Fixed integration for Inventory Grid View(3.2).


1.13 Changes:
  • Fixed Bug: Setting for Craft Station is not working.
  • Added API:
    Code:

    getquality

    please see api:getquality
  • Updated localization for Chinese.


1.12 Changes:
  • New Function: Export to all bag settings. You can now replace all bag settings by one of them.
    Added API:
    Code:

    quality

    please see api:quality
  • Fixed Bug: Import from bag setting will incorrectly make settings be linked together.


1.11 Changes:
  • New bags supported: Guild Bank / Craft Bag / Craft Station for both keyboard and gamepad mode.
  • New function: Import from bag setting: you can import from a bag setting to replace current one. No need to create it from the beginning. Make backups by copying your AutoCategory.lua in SavedVariables folder!
  • New add-on supported: Quick Menu you can toggle Auto Category by Quick Menu to save a key binding, check it out!
  • Added API:
    Code:

    sellprice
    islearnable

    please see api:sellprice and api:islearnable for more info.


1.10 Changes:
  • Added custom names from FCO Item Saver
  • Added API:
    Code:

    armortype
    weapontype

    please see api:armortype and api:weapontype for more info.
  • Added deconstruct & improvement support for keyboard mode.


1.09 Changes:
  • Integrated FCO Item Saver
    Added API:
    Code:

    ismarked

    please see api reference and tutorial and examples for more info.
    Added Keybinding to toggle on/off.


1.08 Changes:
  • Fixed Category 'Trait/Style Gems' (If not changed, please try to restore to defaults)
  • Added Localization support.


1.07 Changes:
  • Fixed a rare issue of IGV integration.


1.06 Changes:
  • Fixed Quest tab issue.
  • Adjusted the height of header to the same as item row.
  • Added custom appearance of header text. You can set up them in the setting menu (or type /ac)


1.05 Changes:
  • Fixed multiple add-on compatible issue.
  • Fixed auto set name in different languages.
  • Added API:
    Code:

    iscrafted

    please see api reference and tutorial for more info.


1.04 Changes:
  • Added gamepad trade inventory support. Thanks @catsith105 for testing!


1.03 Changes:
  • Integrated with 'Inventory Grid View'
  • Added a tutorial button.
  • Added a wiki home page and tutorial page.


1.02 Changes:
  • Fixed banking issue with deposit/withdraw items.


1.01 Changes:
  • Updated lib: LibAddonMenu to r24
  • Refined Addon Setting Menu
Optional Files (0)


Archived Files (58)
File Name
Version
Size
Uploader
Date
2.32
83kB
Shadowfen
12/05/21 11:26 AM
2.31
84kB
Shadowfen
12/04/21 11:00 PM
2.30
83kB
Shadowfen
11/24/21 04:55 PM
2.30
83kB
Shadowfen
11/24/21 04:45 PM
2.29
83kB
Shadowfen
11/23/21 01:55 PM
2.28
82kB
Shadowfen
11/16/21 10:22 PM
2.27
79kB
Shadowfen
11/12/21 12:25 PM
2.26
82kB
Shadowfen
10/31/21 03:28 PM
2.25
77kB
Shadowfen
09/07/21 07:50 PM
2.24
77kB
Shadowfen
08/25/21 08:21 PM
2.23
79kB
Shadowfen
07/23/21 10:14 AM
2.22
77kB
Shadowfen
07/22/21 10:53 PM
2.21
80kB
Shadowfen
07/09/21 09:14 PM
2.20
82kB
Shadowfen
06/12/21 11:36 AM
2.20
82kB
Shadowfen
06/12/21 11:25 AM
2.19
84kB
Shadowfen
06/11/21 11:12 PM
2.18
84kB
Shadowfen
05/09/21 11:59 AM
2.17
84kB
Shadowfen
04/25/21 06:57 PM
2.16
81kB
Shadowfen
03/29/21 09:14 PM
2.15
80kB
Shadowfen
03/11/21 10:39 PM
2.14
79kB
Shadowfen
03/02/21 10:25 PM
2.13
78kB
Shadowfen
01/24/21 07:54 PM
2.12
853kB
Shadowfen
01/21/21 09:46 PM
2.11.1
75kB
Shadowfen
11/04/20 09:39 PM
2.11
75kB
Shadowfen
11/03/20 10:31 PM
2.10
75kB
Shadowfen
11/01/20 02:10 PM
2.9
74kB
Shadowfen
09/09/20 07:12 PM
2.8.1
74kB
Shadowfen
08/08/20 10:43 PM
2.8
74kB
Shadowfen
08/08/20 10:39 PM
2.7.2
74kB
Shadowfen
07/30/20 09:31 PM
2.7.1
74kB
Shadowfen
07/02/20 10:41 PM
2.7
74kB
Shadowfen
06/26/20 04:20 PM
2.7
719kB
Shadowfen
06/25/20 09:19 PM
2.6
74kB
Shadowfen
06/12/20 03:05 PM
2.5
74kB
Shadowfen
05/28/20 04:04 PM
2.4.5
74kB
Shadowfen
04/06/20 06:15 PM
2.4.4
70kB
Shadowfen
03/07/20 11:13 PM
2.4.3
70kB
Shadowfen
02/17/20 06:07 PM
2.4.2
70kB
Shadowfen
02/16/20 10:29 AM
2.4.1
70kB
Shadowfen
02/16/20 12:33 AM
2.4
70kB
Shadowfen
02/15/20 10:16 AM
2.3.1
67kB
Shadowfen
02/07/20 12:26 AM
2.3
66kB
Shadowfen
12/31/19 08:17 PM
2.2.2
66kB
Shadowfen
12/31/19 12:34 AM
2.2.1
66kB
Shadowfen
10/30/19 05:22 PM
2.2
66kB
Shadowfen
10/25/19 03:58 PM
2.1.1
66kB
Shadowfen
10/20/19 05:05 PM
2.1
66kB
Shadowfen
09/17/19 08:32 PM
2.0.5
65kB
Shadowfen
08/15/19 11:44 PM
2.0.4
65kB
Shadowfen
06/08/19 10:29 AM
2.0.3
65kB
Shadowfen
05/27/19 12:48 PM
2.0.2
74kB
Shadowfen
05/20/19 02:22 PM
2.0.2
64kB
Shadowfen
05/20/19 08:25 AM
2.0.1
78kB
Shadowfen
05/19/19 06:57 PM
2.0
77kB
Shadowfen
05/19/19 06:00 PM
1.37
72kB
Shadowfen
03/20/19 02:12 PM
1.36
71kB
Shadowfen
03/16/19 08:24 PM
1.35
71kB
Shadowfen
03/13/19 07:00 PM


Post A Reply Comment Options
Unread Today, 07:44 PM  
tralce
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 44
Uploads: 2
Originally Posted by Baertram
Is this new BulkMode only working at the guild bank or could one enable it at the normal inventories, player bank, house bank, crafting tables as well, to temporarily disable the sorting and filtering of AutoCategory?
After some quick testing with
Code:
/script AutoCategory.BulkMode=true
/script PLAYER_INVENTORY:UpdateList(INVENTORY_BACKPACK)
in the chat box, it appears that it's guild bank only.

This tinkering comes from trying to modify Roomba to make this new trigger work but I honestly don't know my lua quite well enough to figure out why my changes aren't working. Yet.
Report comment to moderator  
Reply With Quote
Unread Today, 06:48 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 3761
File comments: 4629
Uploads: 69
Code:
if AutoCategory then
		AutoCategory.BulkMode = true
	end
Is this new BulkMode only working at the guild bank or could one enable it at the normal inventories, player bank, house bank, crafting tables as well, to temporarily disable the sorting and filtering of AutoCategory?

I was thinking about a small "toggle" button at the inventory to enable/disable the bulk mode, which will be remembered via the AC SavedVariables, per inventory/panel.
If one wants to be fast and scroll the inv unsorted/unfiltered: Enabled
If one wants to see the AutoCategory sorted and filtered categories: Disabled

I'm not using AC that often, but like the categories in some cases, at some inventories. So my usecase would be to disable the bulk mode at some panels (player inventory, mail) and enable them at most others (e.g. trade, banks, crafting).

I'll think about adding the guild bank's "bulk mode" to LibFilters-3.0, or FCOItemSaver at least, if it can help to improve the overall performance.
Thanks for the addition.
Last edited by Baertram : 12/06/21 at 06:56 PM.
Report comment to moderator  
Reply With Quote
Unread Yesterday, 07:25 AM  
Eratas

Forum posts: 0
File comments: 2
Uploads: 0
Thumbs up Re: Gridlist bug fixed, others too

Originally Posted by Shadowfen
With this new release
Nice, thank you very much.
Report comment to moderator  
Reply With Quote
Unread Yesterday, 08:20 PM  
Shadowfen
AddOn Author - Click to view AddOns

Forum posts: 77
File comments: 595
Uploads: 14
Gridlist bug fixed, others too

With this new release
Report comment to moderator  
Reply With Quote
Unread 12/05/21, 04:15 AM  
wartime

Forum posts: 1
File comments: 8
Uploads: 0
Got constant errors when trying to view bank/guildbank/inventory after update
Code:
/EsoUI/Libraries/ZO_Templates/ScrollTemplates.lua:2116: function expected instead of nil
stack traceback:
/EsoUI/Libraries/ZO_Templates/ScrollTemplates.lua:2116: in function 'ZO_ScrollList_Commit'
|caaaaaa<Locals> self = ud, windowHeight = 744, selectionsEnabled = F, scrollableDistance = 0, foundSelected = F, layoutInfo = [table:1]{endPos = 559, startPos = 0, direction = 1, lineBreakModifier = 0}, currentX = 0, currentY = 0, i = 1, currentData = [table:2]{sortPriorityName = "005Контейнер", bagTypeId = 3, num = 12, bestItemTypeName = "Контейнер", typeId = 998, isHeader = T}, currentOperation = [table:3]{selectable = T, height = 20} </Locals>|r
(tail call): ?
user:/AddOns/AutoCategory/Hooks_Keyboard.lua:259: in function 'prehookSort'
|caaaaaa<Locals> self = [table:4]{suppressItemAddedAlert = T, lastSuccessfulGuildBankId = 665980, selectedTabType = 1, loadingGuildBank = T, itemsLockedDueToDeath = F}, inventoryType = 5, inventory = [table:5]{currentSortKey = "name", freeSlotsStringId = 4393, rowTemplate = "ZO_PlayerInventorySlot", currentContext = "guildBankTextSearch", LibFilters3_filterType = 4, altFreeSlotType = 5, subFilter = 0, slotType = 10, freeSlotType = 1, currentFilter = 0, listDataType = 1, currentSortOrder = T, freeSlotsFullStringId = 4394}, list = ud, scrollData = [table:6]{}, lastBestItemCategoryName = "Прочее", newScrollData = [table:7]{}, hiddenItem = F, countItems = T </Locals>|r
/EsoUI/Libraries/Utility/ZO_Hook.lua:18: in function 'ApplySort'
/EsoUI/Ingame/Inventory/Inventory.lua:1791: in function 'ZO_InventoryManager:UpdateList'
|caaaaaa<Locals> self = [table:4], inventoryType = 5, inventory = [table:5], list = ud, scrollData = [table:6] </Locals>|r
/EsoUI/Ingame/Inventory/Inventory.lua:1877: in function 'ZO_InventoryManager:LayoutInventoryItems'
|caaaaaa<Locals> self = [table:4], inventoryType = 5 </Locals>|r
/EsoUI/Ingame/Inventory/Inventory.lua:1844: in function 'ZO_InventoryManager:RefreshAllInventorySlots'
|caaaaaa<Locals> self = [table:4], inventoryType = 5, inventory = [table:5] </Locals>|r
/EsoUI/Ingame/Inventory/Inventory.lua:980: in function 'OnFullInventoryUpdated'
|caaaaaa<Locals> bagId = 3, inventoryType = 5, inventory = [table:5], _ = 1, searchBagId = 3 </Locals>|r
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:107: in function 'ZO_CallbackObjectMixin:FireCallbacks'
|caaaaaa<Locals> self = [table:8]{fireCallbackDepth = 4}, eventName = "FullInventoryUpdate", registry = [table:9]{}, callbackInfoIndex = 1, callbackInfo = [table:10]{3 = F}, callback = /EsoUI/Ingame/Inventory/Inventory.lua:971, deleted = F </Locals>|r
/EsoUI/Ingame/Inventory/SharedInventory.lua:522: in function 'ZO_SharedInventoryManager:PerformFullUpdateOnBagCache'
|caaaaaa<Locals> self = [table:8], bagId = 3, bagCache = [table:11]{} </Locals>|r
/EsoUI/Ingame/Inventory/SharedInventory.lua:300: in function 'ZO_SharedInventoryManager:RefreshInventory'
|caaaaaa<Locals> self = [table:8], bagId = 3 </Locals>|r
/EsoUI/Ingame/Inventory/SharedInventory.lua:59: in function 'RefreshAll'
/EsoUI/Libraries/Refresh/Refresh.lua:60: in function 'ZO_Refresh:UpdateRefreshGroups'
|caaaaaa<Locals> self = [table:12]{currentlyRefreshing = T}, refreshGroup = "guild_bank", refreshData = [table:13]{allDirty = T, wasShown = F} </Locals>|r
/EsoUI/Ingame/Inventory/SharedInventory.lua:331: in function 'ZO_SharedInventoryManager:GenerateSingleSlotData'
|caaaaaa<Locals> self = [table:8], bagId = 3, slotIndex = 499 </Locals>|r
/EsoUI/Ingame/Inventory/Inventory.lua:1610: in function 'ZO_InventoryManager:AddInventoryItem'
|caaaaaa<Locals> self = [table:4], inventoryType = 5, slotIndex = 499, bagId = 3, inventory = [table:5] </Locals>|r
/EsoUI/Ingame/Inventory/Inventory.lua:1836: in function 'ZO_InventoryManager:RefreshAllInventorySlots'
|caaaaaa<Locals> self = [table:4], inventoryType = 5, inventory = [table:5], _ = 1, bagId = 3, slotIndex = 499 </Locals>|r
/EsoUI/Ingame/Inventory/Inventory.lua:980: in function 'OnFullInventoryUpdated'
|caaaaaa<Locals> bagId = 3, inventoryType = 5, inventory = [table:5], _ = 1, searchBagId = 3 </Locals>|r
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:107: in function 'ZO_CallbackObjectMixin:FireCallbacks'
|caaaaaa<Locals> self = [table:8], eventName = "FullInventoryUpdate", registry = [table:9], callbackInfoIndex = 1, callbackInfo = [table:10], callback = /EsoUI/Ingame/Inventory/Inventory.lua:971, deleted = F </Locals>|r
/EsoUI/Ingame/Inventory/SharedInventory.lua:128: in function 'OnGuildBankUpdated'
Unrolling version back fix problem for me right now.
Report comment to moderator  
Reply With Quote
Unread 12/05/21, 03:31 AM  
Eratas

Forum posts: 0
File comments: 2
Uploads: 0
Issue with v2.31

The version 2.31 is not compatible with Gridlist, the interface simply doesn't show and I can't even get to the debug log, disabling autocategory fixed the issue. Yes my libs are all up to date.
Last edited by Eratas : 12/05/21 at 03:32 AM.
Report comment to moderator  
Reply With Quote
Unread 12/05/21, 03:10 AM  
trez5555

Forum posts: 0
File comments: 4
Uploads: 0
Issue with the new version

Hello and thanks for your great work.

I have an issue with the new version : I can't open inventory or bank. I always got the following error :
/EsoUI/Libraries/ZO_Templates/ScrollTemplates.lua:2116: function expected instead of nil
stack traceback:
/EsoUI/Libraries/ZO_Templates/ScrollTemplates.lua:2116: in function 'ZO_ScrollList_Commit'
(tail call): ?
(tail call): ?
user:/AddOns/AutoCategory/Hooks_Keyboard.lua:259: in function 'prehookSort'
/EsoUI/Libraries/Utility/ZO_Hook.lua:18: in function 'ApplySort'
/EsoUI/Ingame/Inventory/Inventory.lua:1791: in function 'ZO_InventoryManager:UpdateList'
/EsoUI/Ingame/Inventory/Inventory.lua:695: in function 'callback'
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:107: in function 'ZO_CallbackObjectMixin:FireCallbacks'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:143: in function 'ZO_SceneFragment:SetState'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:161: in function 'ZO_SceneFragment:ShouldBeShown'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:232: in function 'ZO_SceneFragment:Refresh'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:108: in function 'ZO_Scene:AddFragment'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:145: in function 'ZO_Scene:AddTemporaryFragment'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:119: in function 'ZO_SceneManager_Base:AddFragment'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:148: in function 'ZO_SceneManager_Base:AddFragmentGroup'
/EsoUI/Libraries/ZO_MenuBar/ZO_SceneFragmentBar.lua:89: in function 'callback'
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:286: in function 'MenuBarButton:Release'
/EsoUI/Libraries/ZO_MenuBar/ZO_MenuBar.lua:604: in function 'MenuBar:SelectDescriptor'
(tail call): ?
/EsoUI/Libraries/ZO_MenuBar/ZO_SceneFragmentBar.lua:17: in function 'ZO_SceneFragmentBar:SelectFragment'
/EsoUI/Libraries/ZO_MenuBar/ZO_SceneFragmentBar.lua:25: in function 'ZO_SceneFragmentBar:ShowLastFragment'
/EsoUI/Ingame/Inventory/InventoryMenuBar.lua:173: in function 'ZO_InventoryMenuBar:OnFragmentShowing'
/EsoUI/Ingame/Inventory/InventoryMenuBar.lua:35: in function 'callback'
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:107: in function 'ZO_CallbackObjectMixin:FireCallbacks'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:143: in function 'ZO_SceneFragment:SetState'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:161: in function 'ZO_SceneFragment:ShouldBeShown'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:232: in function 'ZO_SceneFragment:Refresh'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:331: in function 'ZO_Scene:RefreshFragmentsHelper'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:339: in function 'ZO_Scene:RefreshFragments'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:294: in function 'ZO_Scene:SetState'
I tried to uninstall and reinstall the addon and LibSFUtils using minion, but it doesn't work. If I remove autocategory, there is no more issue. Do you have any idea of the problem ?
Thanks
Report comment to moderator  
Reply With Quote
Unread 12/05/21, 01:10 AM  
Shadowfen
AddOn Author - Click to view AddOns

Forum posts: 77
File comments: 595
Uploads: 14
Oops

Originally Posted by zelenin
Forgot that I had a new version of LibSFUtils that also needed to be released, as AutoCategory now requires the new version.

Released LibSFUtils version 38, which will fix the problem.
Report comment to moderator  
Reply With Quote
Unread 12/05/21, 12:52 AM  
pancakes_br

Forum posts: 0
File comments: 2
Uploads: 0
Originally Posted by zelenin
same.
Report comment to moderator  
Reply With Quote
Unread 12/05/21, 12:40 AM  
zelenin
AddOn Author - Click to view AddOns

Forum posts: 6
File comments: 149
Uploads: 12
Report comment to moderator  
Reply With Quote
Unread 12/04/21, 11:09 PM  
Shadowfen
AddOn Author - Click to view AddOns

Forum posts: 77
File comments: 595
Uploads: 14
Re: Lag workaround

Originally Posted by Kyzeragon
As a workaround for other addon authors who do bulk operations such as gear loadouts and auto-vendor addons, bypassing the ApplySort while the bulk operation is active and only resuming the ApplySort afterwards helps a lot in cutting down lag. It doesn't even involve changing AutoCategory's code, just need to return true on the prehook during the bulk operation to skip sorting, and call PLAYER_INVENTORY:UpdateList after bulk is done.
Thanks for the suggestion! I've implement a "BulkMode" in AutoCategory that other addons can us to turn on/off categorization and sorting specifically for the guild bank (which has the additional lag of having to contact the server whenever it does something).

Originally Posted by Kyzeragon
It's working so far for me and I haven't run into any issues yet, but I'm not super familiar with inventory code and I'd like to know your thoughts on potential problems with this hack. Of course the user shouldn't interact with the inventory while it's in this inoperable state... maybe I should try doing that to see what it breaks.
I did run into some problems, but managed to get around most so far as I know. While in BulkMode, the GuildBank Withdraw contents display does not get updated at all, until BulkMode ends and the UpdateList() is called - which seems acceptable for the purpose.

Other addon authors whose addons do automated inventory management, will need to add the code to use the AutoCategory.BulkMode (as described in the change log) if they want to take advantage of the speedup.
Report comment to moderator  
Reply With Quote
Unread 11/25/21, 05:59 PM  
Kyzeragon
 
Kyzeragon's Avatar
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 171
Uploads: 8
Lag workaround

Originally Posted by Shadowfen
Originally Posted by Klingo
Hey Shadowfen

Fellow Addon author here.
A player reported a performance issue with my addon that is automatically moving items between backpack and bank. Upon investigation, it turned out that the actual "culprit" is your addon .

I would highly recommend to look at your current hook implementation with ESOProfiler, it's a big performance hit whenever an item is deposited to / withdrawn from the bank; and it gets much worse once an addon comes into play that automates such item transfers.
Thanks for your suggestions. I've removed one preHook at this time and am looking at the others.
As a workaround for other addon authors who do bulk operations such as gear loadouts and auto-vendor addons, bypassing the ApplySort while the bulk operation is active and only resuming the ApplySort afterwards helps a lot in cutting down lag. It doesn't even involve changing AutoCategory's code, just need to return true on the prehook during the bulk operation to skip sorting, and call PLAYER_INVENTORY:UpdateList after bulk is done.

Example, I implemented this in a private fork of AlphaGear, which conveniently already has the concept of bulk mode:

1. Add an optional dependency on AutoCategory to ensure AlphaGear's ZO_PreHook gets called after AutoCategory's ZO_PreHook, such that AG wraps around AC:
Code:
## OptionalDependsOn: AutoCategory
2. In AG:Initialize, prehook the same function that AC does and return true while AG is in bulk mode, as well as keep track of the most recent inventoryType that the sort was attempted on, so that we may use it later:
Code:
AG.recentInventoryType = INVENTORY_BACKPACK
ZO_PreHook(PLAYER_INVENTORY, "ApplySort", function(self, inventoryType) AG.recentInventoryType = inventoryType return AG.InBulkMode end)
3. In AG.HandleOnUpdate (where jobs/tasks are handled, including JOB_TYPE_STOP_BULK_MODE), perform a final sort on the recent inventoryType to "catch up" on the sorting. I noticed that PLAYER_INVENTORY:ApplySort was not enough; the header would still be missing until you refreshed the inventory, hence using UpdateList instead:
Code:
[...]
elseif (jobType == AG.JOB_TYPE_STOP_BULK_MODE) then
    AG.InBulkMode = false
    trace("EVT: bulkmode off")
    PLAYER_INVENTORY:UpdateList(AG.recentInventoryType)
[...]
This cut down my wait time for depositing 36 items from 22,148ms to 4,755ms (that is, without tabbing onto any empty filters or search term, which btw if you are an AutoCategory user, is a workaround to the lag as well, because no visible items to sort = no lag).

It's working so far for me and I haven't run into any issues yet, but I'm not super familiar with inventory code and I'd like to know your thoughts on potential problems with this hack. Of course the user shouldn't interact with the inventory while it's in this inoperable state... maybe I should try doing that to see what it breaks.
Last edited by Kyzeragon : 11/25/21 at 06:28 PM.
Report comment to moderator  
Reply With Quote
Unread 11/24/21, 05:40 PM  
Shadowfen
AddOn Author - Click to view AddOns

Forum posts: 77
File comments: 595
Uploads: 14
Re: Re: Re: Categorize Rare Fish

Originally Posted by ESO_Demon
Originally Posted by Askedal
Originally Posted by ESO_Demon
Does anyone know how to categorize rare fish?
What do you mean with rare fish, the blue and green fish you catch in fishing pools?
Yes, I'm trying to add them to my selling category or my fish category but nothing working.
Code:
sptype("collectible_rare_fish")
works for me. It seems from your post that you were misspelling "collectible".

Although "collectable" and "collectible" are correct alternate spellings according to English, "collectible" is the only correct spelling according to Zenimax.
Last edited by Shadowfen : 11/24/21 at 06:19 PM.
Report comment to moderator  
Reply With Quote
Unread 11/24/21, 04:47 PM  
Shadowfen
AddOn Author - Click to view AddOns

Forum posts: 77
File comments: 595
Uploads: 14
Originally Posted by tralce
Is there a way to limit the ck_isknown etc filters to only look at one character's knowledge?

What I have:
ck_isknowncat() and not ck_isknown()

What it's doing:
Filtering everything that *the current character* doesn't know into a catergory

What I want it to do:
Filter everything that *my crafter* (the only CK tracked character) into a category, no matter what character I'm on.
Released in 2.30. Now you can specify your crafter's character name
Code:
ck_isknowncat() and not ck_isknown("Cala Crafter")
For a rule to check if something is unknown by your crafter toon (on the same account).
Report comment to moderator  
Reply With Quote
Unread 11/23/21, 06:23 PM  
ESO_Demon

Forum posts: 0
File comments: 4
Uploads: 0
Originally Posted by tralce
Is there a way to limit the ck_isknown etc filters to only look at one character's knowledge?

What I have:
ck_isknowncat() and not ck_isknown()

What it's doing:
Filtering everything that *the current character* doesn't know into a catergory

What I want it to do:
Filter everything that *my crafter* (the only CK tracked character) into a category, no matter what character I'm on.
No, that would be cool but there'd be no way to make that work as far as I know.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: