Download
(53 Kb)
Download
Updated: 08/21/23 04:06 PM
Pictures
File Info
Compatibility:
base-game patch (9.1.5)
Updated:08/21/23 04:06 PM
Created:04/01/14 04:21 PM
Monthly downloads:4,108
Total downloads:1,118,039
Favorites:1,180
MD5:
Dustman  Popular! (More than 5000 hits)
Version: 10.9.1
by: Garkin, Ayantir, iFedix
A powerful addon to deal with your unwanted items!

1) Mark items as junk
Options to mark items from different categories as junk (have a look at the attached pictures for more info). In particular, you can mark:

Weapons, Armors and Jewels
  • Ornate items and jewels up to selected quality
  • Trait-less items
  • 0 value items
  • Items with specific trait
  • Disguises
  • Equipable items up to selected quality. You can exclude items with:
    • Set bonus (also by type like Arena sets, Cyrodill sets, dungeon sets, etc...)
    • Nirnhorned trait
    • Rare style
    • Specific enchantments (like the ones from maelstrom weapons, blackrose prison etc..)
    • Intricate trait. Optionally you can exclude them only if the current character needs to level up the corresponding skill line

Trait and style materials
  • Style materials, customizable if full stack in bank
  • Trait materials, customizable if full stack in bank

Provisioning
  • Ingredients (drink, food or both) up to selected provisioning level or which are not used in any of your recipes. You can optionaly exclude rare additives (perfect roe, frost miriam and bervez juice).

Crafting materials
  • Low level blacksmithing materials (rubedite won't be marked), low level raw blacksmithing materials (rubedite ore won't be marked)
  • Low level clothing materials (ancestor silk and rubedo leather won't be marked), low level raw clothing materials (raw ancestor silk and rubedo hide scraps won't be marked)
  • Low level woodworking materials (sanded ruby ash won't be marked), low level raw woodworking materials (rough ruby ash won't be marked)
  • Low level jewelry crafting materials (platinum ounce won't be marked), low level raw jewelry crafting materials (platinum dust won't be marked)

Furnishing materials
  • Alchemical Resin
  • Bast
  • Clean Pelt
  • Decorative Wax
  • Heartwood
  • Mundane Rune
  • Ochre
  • Regulus

Glyphs and runestones
  • Looted glyphs (high tier ones can be excluded)
  • Aspect runes up to selected quality, customizable if full stack in bank
  • Potency and essence runes

Consumable
  • All foods and drinks up to selected quality
  • Non crafted potions customizable if full stack in bag and/or in bank (high tier potions can be excluded)
  • Non crafted poisons customizable if full stack in bag and/or in bank (high tier poisons can be excluded)
  • Poison solvants customizable if full stack in bag and/or in bank
  • Empty soul gems
  • Treasure maps (and optionally destroy them)
  • Known provisioning recipes up to selected quality
  • Known furnishing patterns up to selected quality

Fishing
  • Fishing lure, customizable if full stack in bag and/or in bank
  • Collected rare fishes

Stuff from daily logins
  • Food
  • Drink
  • Potions
  • Poisons
  • Repair kits
  • Soul gems

Trophies and treasures
  • Collected trophies
  • Treasures (e.g: Dragon's pellet, etc..)
  • Museum pieces

Stolen items
  • Stolen valuables up to selected quality (with the possibility to launder/destroy white items)

2) Launder items
Options to launder items at fence with the following exclusions:
  • Soul gems
  • Lockpicks
  • Potions and potion solvents
  • Poison and poison solvents
  • Ingredients
  • Style materials
  • Trash


3) Destroy junk
Options to destroy items marked as junk with gold value less or equal to the selected amount (both normal and stolen items). You can optionally exclude stackable items from destruction.


4) Remember junk
Option to track user marked junk in order to automatically mark future found items.


5) Quickly deal with your junk!
Optionally, you can activate these useful functionalities:
  • You can activate an option to automatically sell items marked as junk when you interact with a vendor (and this can be done also by first accepting a confirm dialog in order to prevent unwanted sells). You can also see a small recap on what you sold and the total amount of gained money.
  • You can be notified when you find interesting items
  • Notitications about marked items can be activated to track your junk management
  • You can use some useful keybinds to quickly activate/deactivate some addon functionalities:
    • Mark as junk hovered item
    • Destroy hovered item (PAY ATTENTION TO THIS, THERE IS NO CONFIRM DIALOG!)
    • Exclude/include set items in junk (useful when you usually sell to npcs all your found gear no matter the quality but sometimes you go farm set items for your characters and you don't want to mark them as junk)
    • Rescan inventory to reapply all dustman rules to your items


Library dependencies Add them using Minion or download them manually here at ESOUI.

Localization contributors
  • French: Zuhligan, Nycoo
  • German: Baertram, Scootworks, Phidias, Schleicher
  • Russian: Fellorion, Asdolg
Thanks!

You can also find the addon on Github!

If you like the addon, you can offer me a coffee! I need a lot of them to do long coding sessions!
10.9.1
- API updated to 101039 (Update 39)
- Removed Dustman deactivation if the player has not finished the tutorial yet (IsInTutorialZone() function was removed by ZOS). Please if you need, disable the addon manually there!

10.9
- API updated to 101038 (Necrom)
- Cleaning + fixed some bugs

v10.8
- API updated to 100035 (Blackwood)
- Fixed companions system compatibility (companions gear items will be automatically excluded from Dustman filtering)

v10.7
- Added possibility to destroy jewelry master writs (under consumable submenu)
- Some bugfix

v10.6
- API updated to 100034 (Flames of Ambition)
- Some bugfix

v10.5
- Fixed mark sets keybind
- Added possibility to save items for Bursar of Tributes dailies in Clockwork City (MUCH REQUESTED FEATURE!). You can decide to save items required for the accepted daily quest or to save items required for all of the daily quests given by the raven NPC.
- Added possibility to mark potency and essence runes

v10.4
- API updated to 100032 (Stonethorn)

v10.3
- API updated to 100031 (Greymoor)
- Added "stacks" output to the sold items message (thanks Dolgubon!). Basically a stack is an inventory slot, so you can now know also the inventory slots freed when you sell your items
- Added "Automatically scan inventory" option: if this option is enabled your Dustman rules will be automatically applied when a new item is found in your inventory. Note that if you disable this option you will need to manually force an inventory scan using the rescan keybind or the specific "Rescan" button that can you find in the addon's options menu

v10.2
- Fixed researchable items incorrectly marked as junk
- Fixed arena's armors not marked as junk as intended

v10.1
- Fixed intricate jewelry incorrectly marked as junk

v10
- Completely reworked some internal code related to weapons&armors and jewelry. You will have to set those filters again!
- Added libSets dependency to mark sets based on types (arena sets, dungeon sets, trial sets etc..): make sure to have this library installed!
- Added possibility to mark museum pieces as junk (and optionally destroy them)
- Added possibility to mark disguises as junk (and optionally destroy them)
- Added full compatibility with german (thank you Schleicher!), russian (thank you Asdolg!) and french (thank you Nycoo!) languages

v9.8.2 (iFedix)
- Fixed the comma of destrunction in language files!

v9.8.1 (iFedix)
- Languages files fix (oooops) PS: still need translations for non english files!

v9.8 (iFedix)
- API updated to 100028 (Harrowstorm)
- Added possibility to mark furnishing materials as junk
- Incompatibility fix with Crafted Potions addon

v9.7.2 (iFedix)
- Removed LibStub dependecy

v9.7.1 (iFedix)
- Removed deprecated options (bad food and drinks and old provisioning ingredients)
- Removed option to mark as junk smithing boosters (I think no one used it in these years lol just sell them in guilds for more gold than the one gained by interacting with npcs)
- Added maelstrom's and master's weapons filtering
- Updated settings to be visually more clear and user friendly (have a look at the updated screenshots in the main page)
- Moved treasure and trophies in a specific submenu
- Moved housing patterns and recipes under "consumable" submenu
- Added a proper description of the addon in the main page (damn, that took me like 3 hours :( )

v9.7 (iFedix)
- API updated to 100028 (Scalebreaker)
- Added possibility to mark intricate jewels as junk (and optionally only if the current char does not need to level up jewelry crafting)
- Added possibility to mark only jewels with traits that don't need to be researched
- Added possibility to mark treasures as junk (e.g.: dragon's pellet)
- Added possibility to automatically delete items from daily logins (boring poisons, potions and stuff)
- Removed LibCustumTiles lib and LibResearch (this last one needs to be installed separately)
- Bugfixes
IMPORTANT NOTE 1: some lines are not translated in de, jp, fr, and ru. If you open the respective files in the language folder, you can see those lines marked with --TO TRANSLATE comment. If you want to partecipate in the translation, pls send me the lines by private message or in the comments.
IMPORTANT NOTE 2: I fixed some bugs you described in the comments. If you notice something strange, pls post those bugs in the comments with a detailed description and a screen of your settings so I can easily reproduce and fix them. If you can, try to delete variables and reset the addon in order to see if the bug appears again.

v9.6.3 (iFedix)
- API updated to 100026 (Wrathstone).

v9.6.2 (iFedix)
- API updated to 100025 (Murkmire).
- Removed direct lib files, now DependsOn: LibStub LibAddonMenu-2.0 (NOTE: you now have to manually install them).
- Removed useless libs.
- Lowered the number of items that Dustman autosells in order to prevent the kick from the server (Due to api restrictions).
- Fixed ornate/intricate marked as junk: if you still have issues, please delete saved variables to reset the addon.
- Aooooo

v9.6.1 (iFedix)
- API updated to 100024 (Wolfhunter).
- Added a quality selector for "don't launder" stolen recipes.

v9.6 (iFedix)
- Added a "Rescan" keybind.
- Treasure maps can now be marked as junk (and also automatically destroyed).
- Furnishing materials, recipes, poisons and potions added to "Don't launder" option.
- Updated russian translation (thanks alexesprit and @wishna!).
NOTE: if you want to contribute to update the other translations (de, fr and jp)
you can send me via esoui message the updated lua file (you can find the file to update in "Language" folder)
based on strings.lua (english file) and I will be happy to add that to Dustman!

- Fixed display name post upon login.
- Fixed minor bugs.

v9.5 (iFedix)
- Finally introduced support for global saves: you can now use the same profile for all of your characters (global configuration) or decide to use different profiles for different characters as well as import config from one specific character to another.
- You can now mark also low level crafting materials (irons, raw hide etc..). Very useful for the ones doing the daily writs without eso plus.
- Fixed jewelry marking system: now you can correctly mark jewels with specific traits and also mark jewels trait items (zinc, dibellium etc).
NOTE: a manual clean of the variables is strongly reccomended after this addon update.
Install it and then delete the file dustman.lua in C:\Users\YOUR_NAME\Documents\Elder Scrolls Online\live\SavedVariables to clean all of your saved data about Dustman.


v9.4.1 (iFedix)
- Summerset API bump.
- Fixed Potent Nirncrux and Fortified Nirncrux marked as junk.
- Added a keybind to quicky mark/unmark set equipment as junk (very useful to me when farming sets).

v9.4 (Ayantir)
- Added two options to enable Junk and Destroy keybinds. If you enjoyed the Junk keybind, you'll need to enable the option in Misc section of settings of the addon.
- Created a Misc submenu in settings panel.
- Added a Destroy keybind to quickly destroy your items. Note: There is no confirmation when destroying items.
- Protected items can no longer be junked or destroyed by the new added keybinds.

v9.3 (Ayantir)
- The Keybind Mark as junk now also Unmark as junk on junked items
- Dustman won't force anymore its keybind if it has not been set
- Fixed Dustman self desactivation in Tutorial zones

v9.2 (Ayantir)
- Added a Keybind to mark an item as junk in inventory. X is the default key and you can change it in Keybinds.
- Laundered treasures will now be marked as junk and sold to the regular merchant if the option "Mark tresures" is enabled regardless of their quality.

v9.1 (Ayantir)
- Lib update
- Fixed error for known housing patterns

v9 (Ayantir)
- API update (please note that PTS users may have an error when trying to go in settings due to a lib not yet updated).
- Fixed error for styles
- Dwemer scrap is no longer listed as common style and will be always excluded from junking.

v8 (Ayantir)
- API & Lib update
- Fixed drink recipes not being junked
- Update to Styles API

v7.5 (Ayantir)
- Fixed bug on new Morrowind characters who did not do the Wailing Prison Tutorial. Dustman will disable itself while doing this tutorial and be activated (or re-enabled) after doing it.
- Changed way how collectibles (monster trophies and fish trophies) were analized. Method is now 100% efficient.
- Slightly Changed way how recipes (cooking & housing) were analized.
- Updated 2 tiny libs

v7.4 (Ayantir)
- little fix for DE users

v7.3 (Ayantir)
- Dustman is no longer activated while tutorial is not finished

v7.2 (Ayantir)
- Added an option to junk weapons and items based on trait. An option to exclude set items with thoses specific traits is also available. Take care to do not junk the Preposterous Armor of the ultimate Roxxor if you need it.
- Removed Nirn Stones from Trait Stones.
- Added compatibility for new FCOIS API
- Few fixes
- Dustman is now on GitHub - https://github.com/Ayantir/Dustman

v7.1 (Ayantir)
- Fixed a little error which was not marking anymore cloudy poisons
- Filter "mark known recipes" no longer mark housing patterns.
- An option to junk known housing patterns as been added with a quality selector.

v7 (Ayantir)
- API & Lib update
- Fixed a little error at startup due to a change in code
- Added option "Only if not full stack in bank" for lures
- Added option to junk poison solvants (and only if not full stack in bag/bank).
- Added a button to empty list of memorized items.

v6.2 (Ayantir)
- Items were not laundered anymore for users of "Remember marked items"

v6.1 (Ayantir)
- Items were not marked anymore for users of "Remember marked items" in combinaison with "Priority with marked items first".

v6 (Ayantir)
- API Bump
- Fixed bug in import when selected char wasn't 1st of your list
- Rework of items memorized. feel free to report any problem if you remember items
- Updated Librairies

v5.4 (Ayantir)
- Recap wasn't shown when using the vanilla keybind of game to sell items, fixed
- Added an option "Only if not full stack in bag" for lures.
- Removed a forgotten debug introduced by last version
- Tiny updates in translation files

v5.3 (Ayantir)
- When you select "only if full stack in bank", Dustman will now do the sum of items in "bank + crafting bag" in order to determine if item should be junked.
- Addon now handle players having chars with same names on different servers
- Updated import feature. In order to import settings from a player, you'll need to log it once to update data structure to new format.
- Updated German translation and added Russian translation (many thanks to Fellorion)
- Updated Librairies
- Changed Addon Licence
- Tiny updates

v5.2 (Ayantir)
- You can now choose to do not launder / destroy stolen basic style stones. Exotic stolen style stones will be laundered / sell anyway
- You can now choose to mark ornate items even if they're excluded from being max level
- You can now select a quality threshold of set jewels exclusion to mark the low quality set jewels

v4 (Ayantir)
- API Update

v3.8 (Ayantir)
- Forgot to round the haggling bonus.

v3.7 (Ayantir)
- The Haggling bonus wasn't added for sell summary at fence. It is now fixed.

v3.6 (Ayantir)
- Added Japaneese translation (thanks to k0ta0uchi)
- Addon is now Char renamming proof
- Lib Update

v3.5 (Ayantir)
- Tiny fix for a little bug introduced by last version

v3.4 (Ayantir)
- Dustman won't junk anymore your items protected with the ESO Item Protection
- Fixed the sell at fence for Gamepad users
- Fixed the gamepad autofocus on sell confirmation. Please leave a comment if it's still don't work

v3.2 (Ayantir)
- API & Lib Update
- Added option to mark empty soul gems in consumables submenu.
- Removed all "exotic" styles from style submenu are they are all rares. Dustman can now only marks style stones of the 10 racial styles, Primal, Daedric, Barbaric, Ancient Elf & Dwemer. All other are considered as rare and won't be junked.
- Little fix for the transaction count at sell. It was previously counting item count instead of transactions counted. It will help if you're selling large quantities of items in a row.
- Little performance improvments

v3.1 (Ayantir)
- Little fix for setting conversion (was only impacting new dustman users).

v3 (Ayantir)
- API Bump for Dark Brotherhood
- Conversion of Vet Rank settings into Champion ranks and modification of related strings (except in german).
- Items with legendary (yellow) quality have been totally excluded from Dustman.
- Poisons are now handled in the same way as potions with their own settings (mark looted poisons, only if full in bag, only if full in bank, exclude poisons > specified level). Plus the "Keep stolen poisons solvants" (and its automatic deletion).
- Added DB new data (3 new motifs & achievemnts for trophies handling).

v2.4 (Ayantir)
- Gamepad users will now have a gamepad dialog instead of a keyboard one when enabled
- Selling ad Laundering items at fence are now done by quality
- "Exclude stackable items" for destroying now include stolen items
- Tiny fixes on transactions limitation added by ZOS. Message should appear less frequently.

v2.3 (Ayantir)
- Added option to decide what to do with stolen treasures when setting "Mark treasures as junk" with quality >= green. You can destroy them, launder them or do nothing.
- Added stolen trash items as special item type to do not launder.
- Added a forgoten TG potion to whitelisted potion list to do not junk.
- "Stolen valuables" rennamed as "Treasures" to avoid confusion in option panel.

v2.2 (Ayantir)
- Typo fixes

v2.1 (Ayantir)
- Fix tiny bug when looting potion

v2 (Ayantir)
- API Bump for Thieves Guild Update
- Added option to junk smithing boosters, with quality and only if not full stack in bank option
- Added option to junk rune aspects, with quality and only if not full stack in bank option
- Added new Thieves Guild styles
- Added rule name which marked item as junk in chat log when verbose mode is activated
- Added stolen foods and drinks as stolen items to automatically destroy
- Fixed a tiny bug for special stolen items to destroy
- Updated library LibAddonMenu

v1.9.2 (Ayantir)
- Tiny fix when for destroying items

v1.9.1 (Ayantir)
- Exclude stolen clothes now exclude "laundered" ones too

v1.9 (Ayantir)
- Stolen Soul Gems, Lockpicks, Ingredients, Style stones & Solvants can now be excluded from laundering. they can also be destroyed if specified.

v1.8.2 (Ayantir)
- Fixed Craftstore compatibility for version 3.30+

v1.8.1 (Ayantir)
- Fix for collected trophies
- Added IC & Orsinium Fish trophies to the list of potential items to junk.

v1.8 (Ayantir)
- Orsinium API Bump
- Added Akaviri, Ancient Orc & Mercenary as rare styles
- Added Akaviri, Ancient Orc & Mercenary styles stones
- Added a quality selector for stolen items.

v1.7.4 (Ayantir)
- Due to ZOS restrictions, Dustman will now sell only 98 first items of its list. Please note that at 100 messages in less of 10 seconds, a spam warning message may appear and at 110, you'll be kicked from game.
- Added new AvA potions in whitelist for users who sells their looted potions

v1.7.2 (Ayantir)
- Stolen items were not recognized anymore, fixed
- Little update to the german translation (thanks Baertram!)

v1.7.1 (Ayantir)
- Jewels were also excluded when setting Armor/Weapons level limitation, they're not anymore

v1.7 (Ayantir)
- API Update for Imperial City
- German translation updated, many thanks to Baertram
- Added an option (in Notification submenu) to do not sell trash when talking to a merchant/fence

v1.6 (Ayantir)
- You can now exclude items with level >= desiredLevel . Level follow crafts tiers.
- You can now exclude glyphs with level >= desiredLevel . Level follow crafts tiers.
- You can now exclude potions with level >= desiredLevel . Level follow crafts tiers.
- You can now exclude items with a non craftable enchantment.
- Added Xivkyn and Glass as rare styles.
- Added Xivkyn and Glass stones in styles stones list.
- You can now exclude potions if you only got a full stack in bag.
- You can now exclude potions if you only got a full stack in bank.
- You can now import Dustman settings from another character. Settings remains character base
- libstub library has been updated to v4

You're greatly encouraged to set exclude items with level >= for incoming IC patch


v1.5 (Ayantir)
- Jewels are now totally separated from Armors & Weapons. You should activate "Mark equipable jewels" if needed. Added an option for set jewelss too. A new Jewel submenu has been set. Please note that "Mark equipable equipment" and others won't junk your jewels anymore. "Zero value items" still junk Weapons, Armors and Jewels on the other hand.
- Added an option to mark old provisioning ingredients. Option activated per default.
- Perfect Roe in now handled by "Exclude Rare additives".

v1.4 (Ayantir)
- Added an option to mark jewels without trait. Mara Ring is excluded
- Added an option to mark non crafted potions. Crown-Store potions are excluded


v1.3.9 (Ayantir)
- Improved Trophies and fishing trophies detection
- Added an option to mark armors and weapons without trait with a quality selector. Please not that even if you set this option to No and if you mark equippable items to Yes, they'll be marked.
- Added an option to mark non crafted glyphs with a quality selector.


v1.3.7 (Ayantir)
- Changed handling of stolen items :

- A stolen item category has been added.
- Valuable stolen items (with any other purpose) still have an option to be junked.
- Standard stolen items such as ingredients, armor, etc, will now follow the rules of the non-stolen ones. They'll also be automatically destroyed if settings allows it, be sell when talking to a launder if enabled.
Destroying stolen items can be set with a special threshold in the Destroying submenu.
- Added option to launder stolen items that doesn't match dustman filters when talking to a launder.
- Added option to exclude stolen clothes from launder and sell. This one is enabled by default.

- fixed support for CraftStore 3.00
- added option to set the ornate quality of ornate jewels
- added option for trophies, they'll be junked if you already got it
- re-added fish trophies, they'll be junked if you already got it
- updated french translation & few tiny fixes


v1.3.6
- added support for final version of CraftStore 3.00
- changed handling of stolen items (again)
- added option to junk provisioninig ingredients if you already have full stack in bank

v1.3.5
- bug fixes

v1.3.4
- fixed "Use remembered items first" option in the settings menu (it was always disabled)
- added separate destroy value threshold slider & quality dropdown for stolen valuables (stolen valuables are items which does not have any other use then selling to fence)
- improved compatibility with FCO ItemSaver and Circonians FilterIt. Dustman will no longer consider items marked for vendor as protected and they will be correctly junked & sold.
- added preliminary support for CraftStore 3.00, removed support for older versions (they doesn't work with Update 6 anyway...)
- fixed itemId typo (reported by Tarulia)

v1.3.3
- added option to exclude items with Nirnhoned trait
- sell dialog will be shown only if you really have items for sale
- changed handling of stolen items - unusable stolen items are now really just items which can't be worn, all other stolen items will be handled the same way as "clean" items

v1.3.2
- fixed quality dropdown in settings menu
- first part of stolen items support

v1.3.1
- fixed sell junk dialog

v1.3.0
- updated for API version 100011 (Update 6)
- updated LibAddonMenu-2.0 library

v1.2.1
- added option to do not destroy stackable items with gold value
- added support for FilterIt marks

v1.2.0
- added option to mark trait material as junk
- added option to mark as style/trait material as junk only if you already have full stack in bank
- added option to exclude intricate items only if your character needs them to level up crafting skill

v1.1.0
- added option to junk known provisioning recipes
- added option to destroy unwanted items with gold value
- fixed reporting items with set bous
- fixed incorrect marking of items looted from the Sealed Urn.
- changed a few default values

v1.0.2
- added option to exclude items with set bonus

v1.0.1
- fixed typo in settings menu
- fixed remebered items filter

v1.0.0
- updated API version to 100010 (Update 5)
- updated LibAddonMenu-2.0 to r16 (because of changes in controls in Update 5)

v0.9.9
- added option to mark equipable items of selected quality
- items marked by FCO ItemSaver or Item Saver won't be juked
- added option to make user marked junk as a highest priority filter
- added support for CraftStore (2.00+)
- fixed bug in cloudy/flat/murky drinks filter

v0.9.8
- updated API version to 100009 (Update 4)
- updated from libResearch 1.0 to 2.0

v0.9.7
- added style material submenu
- fixed issue with quest item Hunting Bow

v0.9.6
- added german translation (thanks to Phidias)

v0.9.5
- removed redundant functions

v0.9.4
- updated API version to 100008 (Update 3)
- updated libResearch (r4)
- small changes to rare style tracking

? There is a few lines to ensure compatibility with EU megaserver until Update 3 is deployed on both servers.

v0.9.3
- updated LibAddonMenu-2.0 library (r14)
- small changes to the ingredients handling
- fixed bug when quest item Wabbajack was moved into the junk

v0.9.2
- updated LibAddonMenu-2.0 library (r13)
- updated french localization (thanks to Zuhligan)
- a few changes to remembered user marked junk - it should be more reliable, but it reset current saved variables
- white equipable zero value items have now separate checkbox in settings menu
- white crafted items are now ignored, so Dustman should not mark your crafted items as junk

v0.9.1
- fixed missing spaces in chat messages

v0.9
- updated API version
- updated LibAddonMenu-2.0
- added Zuhligan's french localization (incomplete, but working)
Known issue:
- missing space in chat messages with links, I have to find out how to fix it.

v0.8
- updated APIversion
- new settings menu
- added tracking of user marked junk
- added quality checks
- added rare style check
- added sell junk dialog
- addon now uses libResearch library
TODO:
* translation needed
* crafting materials will need a bit work
* some features are still not implemented

v0.7.3
- small bug fix for slotId

v0.7.2
- all trophy fishes will be automatically marked as junk
- used bait will be automatically marked as junk
- added option to mark digusting food/drinks as junk

v0.7.1
- added french localization

v0.7
- added settings menu
- added new options what can be marked as junk
- added option to destroy junk worth 0 gold

v0.6
- added workaround for unsellable pets
- fixed language selection
- added total value of sold items

v0.5.2
- updated texts

v0.5.1
- fixed language selection

v0.5
- Added localization support
- added license

v0.4
- Bugfix: Receipt is now shown only for items sold by Dustman.

v0.3
- Tried to fix receipt, however it didn't work either - fixed in v0.4

v0.2
- Added receipt (requested by Zelophe)

v0.1
- intial version
Optional Files (0)


Archived Files (109)
File Name
Version
Size
Uploader
Date
10.9
53kB
iFedix
06/12/23 11:16 AM
10.8
60kB
iFedix
06/16/21 11:09 AM
10.7
60kB
iFedix
04/19/21 01:37 PM
10.6
59kB
iFedix
03/13/21 11:00 AM
10.5
59kB
iFedix
09/23/20 02:20 PM
10.4
55kB
iFedix
08/26/20 04:11 PM
10.3
55kB
iFedix
06/05/20 02:52 AM
10.2
54kB
iFedix
04/19/20 07:40 AM
10.1
54kB
iFedix
04/10/20 05:24 PM
10
54kB
iFedix
04/06/20 11:24 AM
9.8.2
51kB
iFedix
04/05/20 06:38 AM
9.8.1
51kB
iFedix
03/31/20 12:53 PM
9.8
51kB
iFedix
03/31/20 10:50 AM
9.7.2
48kB
iFedix
08/27/19 09:16 AM
9.7.1
48kB
iFedix
08/27/19 08:50 AM
9.7
52kB
iFedix
08/23/19 04:53 PM
9.6.3
55kB
iFedix
02/26/19 01:53 PM
9.6.2
55kB
iFedix
10/28/18 09:03 AM
9.6.1
102kB
iFedix
08/16/18 02:59 AM
9.6
102kB
iFedix
08/01/18 12:03 PM
9.5
101kB
iFedix
06/25/18 04:42 PM
9.4.1
100kB
iFedix
06/17/18 10:19 AM
9.4
99kB
Ayantir
10/28/17 10:35 AM
9.3
98kB
Ayantir
10/27/17 04:57 PM
9.2
99kB
Ayantir
10/26/17 05:03 PM
9.1
97kB
Ayantir
09/30/17 04:43 AM
9
97kB
Ayantir
09/24/17 09:38 AM
8
97kB
Ayantir
08/14/17 02:07 PM
7.5
95kB
Ayantir
06/28/17 12:29 PM
7.4
96kB
Ayantir
06/18/17 01:31 PM
7.3
96kB
Ayantir
06/18/17 10:43 AM
7.2
95kB
Ayantir
06/10/17 09:01 PM
7.1
95kB
Ayantir
06/05/17 02:56 PM
7
95kB
Ayantir
06/03/17 08:06 AM
6.2
94kB
Ayantir
02/26/17 09:40 AM
6.1
94kB
Ayantir
02/15/17 07:32 AM
6
94kB
Ayantir
02/13/17 08:40 PM
5.4
94kB
Ayantir
12/14/16 04:36 AM
5.3
94kB
Ayantir
12/11/16 12:31 AM
5.2
86kB
Ayantir
10/17/16 06:35 AM
5.1
86kB
Ayantir
10/17/16 04:10 AM
5
86kB
Ayantir
10/16/16 07:48 PM
4
79kB
Ayantir
09/05/16 08:04 AM
3.8
79kB
Ayantir
08/24/16 05:03 AM
3.7
79kB
Ayantir
08/23/16 05:38 AM
3.6
79kB
Ayantir
08/12/16 10:32 AM
3.5
74kB
Ayantir
08/01/16 06:18 PM
3.4
74kB
Ayantir
07/31/16 10:20 AM
3.3
74kB
Ayantir
07/31/16 08:50 AM
3.2
74kB
Ayantir
07/30/16 11:22 AM
3.1
78kB
Ayantir
06/01/16 01:12 AM
3
78kB
Ayantir
05/31/16 10:14 PM
2.4
73kB
Ayantir
03/20/16 01:01 PM
2.3
72kB
Ayantir
03/17/16 10:16 AM
2.2
72kB
Ayantir
03/11/16 08:55 AM
2..1
72kB
Ayantir
03/07/16 01:35 PM
2
72kB
Ayantir
03/07/16 01:28 AM
1.9.2
70kB
Ayantir
12/06/15 11:34 AM
1.9.1
70kB
Ayantir
11/21/15 04:25 AM
1.9
70kB
Ayantir
11/19/15 09:44 AM
1.8.2
70kB
Ayantir
11/07/15 05:25 PM
1.8.1
70kB
Ayantir
11/05/15 06:48 PM
1.8
70kB
Garkin
11/02/15 06:17 AM
1.7.4
70kB
Ayantir
09/19/15 01:47 PM
1.7.2
70kB
Ayantir
09/03/15 10:40 AM
1.7.1
70kB
Ayantir
09/02/15 02:45 AM
1.7
70kB
Ayantir
09/01/15 05:18 AM
1.6
69kB
Ayantir
08/20/15 05:32 PM
1.5
66kB
Ayantir
07/08/15 02:39 AM
1.4
65kB
Ayantir
06/28/15 03:22 AM
1.3.9
64kB
Ayantir
06/26/15 12:55 AM
1.3.7
65kB
Ayantir
06/26/15 12:52 AM
1.3.7
58kB
Ayantir
06/13/15 08:28 AM
1.3.6
56kB
Garkin
04/18/15 07:05 PM
1.3.5
55kB
Garkin
04/13/15 08:26 PM
1.3.4
56kB
Garkin
04/13/15 07:03 AM
1.3.3
55kB
Garkin
03/26/15 08:28 AM
1.3.2
55kB
Garkin
03/08/15 05:52 PM
1.3.1
54kB
Garkin
03/04/15 10:49 AM
1.3.0
54kB
Garkin
03/03/15 02:46 PM
1.2.1
50kB
Garkin
02/09/15 03:54 PM
1.2.0
50kB
Garkin
01/21/15 03:23 PM
1.1.0
49kB
Garkin
01/20/15 07:08 PM
1.0.2
49kB
Garkin
12/16/14 11:42 AM
1.0.1
49kB
Garkin
11/04/14 08:05 PM
1.0.0
49kB
Garkin
11/03/14 10:00 AM
0.9.9
47kB
Garkin
11/01/14 02:05 PM
0.9.8
45kB
Garkin
09/16/14 03:08 PM
0.9.7
45kB
Garkin
08/15/14 06:42 PM
0.9.6
43kB
Garkin
08/07/14 08:31 AM
0.9.5
44kB
Garkin
08/06/14 08:27 PM
0.9.5
44kB
Garkin
08/05/14 08:42 AM
0.9.4
44kB
Garkin
08/04/14 11:06 AM
0.9.3
44kB
Garkin
07/31/14 10:31 AM
0.9.2
43kB
Garkin
07/26/14 04:49 PM
0.9.1
41kB
Garkin
06/27/14 07:56 PM
0.9
42kB
Garkin
06/25/14 07:45 AM
0.8
41kB
Garkin
06/15/14 03:41 AM
0.7.3
14kB
Garkin
05/18/14 05:49 AM
0.7.2
14kB
Garkin
05/09/14 07:25 PM
0.7.1
13kB
Garkin
05/08/14 11:14 AM
0.7
13kB
Garkin
05/08/14 10:28 AM
0.6
2kB
Garkin
04/17/14 11:32 AM
0.5.2
2kB
Garkin
04/12/14 12:47 PM
0.5.1
2kB
Garkin
04/08/14 07:08 AM
0.5
2kB
Garkin
04/07/14 08:27 AM
0.4
989B
Garkin
04/02/14 03:45 PM
0.2
959B
Garkin
04/02/14 10:21 AM
0.1
751B
04/01/14 04:21 PM


Post A Reply Comment Options
Unread 02/15/17, 08:48 AM  
Mulcibur

Forum posts: 0
File comments: 38
Uploads: 0
Tested after last update. Working as intended. Thanks!
Report comment to moderator  
Reply With Quote
Unread 02/15/17, 07:33 AM  
Mulcibur

Forum posts: 0
File comments: 38
Uploads: 0
Originally Posted by Ayantir
Originally Posted by Mulcibur
Something seems to have broken with you latest update. So far, Ornate items and intricate items are not being automatically marked as junk despite this setting being set. Only items that seem to be marked correctly are those that were marked as User-Before

[14:58] Dustman has marked [Recipe: Markarth Mead] as junk (USER-BEFORE).
Ups yes, this is an issue for users using this option. sorry. fix inc.
You are awesome
Report comment to moderator  
Reply With Quote
Unread 02/15/17, 07:21 AM  
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1019
File comments: 1531
Uploads: 31
Originally Posted by Mulcibur
Something seems to have broken with you latest update. So far, Ornate items and intricate items are not being automatically marked as junk despite this setting being set. Only items that seem to be marked correctly are those that were marked as User-Before

[14:58] Dustman has marked [Recipe: Markarth Mead] as junk (USER-BEFORE).
Ups yes, this is an issue for users using this option. sorry. fix inc.
Report comment to moderator  
Reply With Quote
Unread 02/15/17, 07:02 AM  
Mulcibur

Forum posts: 0
File comments: 38
Uploads: 0
Something seems to have broken with you latest update. So far, Ornate items and intricate items are not being automatically marked as junk despite this setting being set. Only items that seem to be marked correctly are those that were marked as User-Before

[14:58] Dustman has marked [Recipe: Markarth Mead] as junk (USER-BEFORE).
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 08:56 PM  
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1019
File comments: 1531
Uploads: 31
Originally Posted by Haho
it's been 3 or 4 posts that i'm talking about the var passed by the event on slot update.

Have you double checked that the "slotId" in the event args (yes taken from that ZOS text for example "ESOUIDocumentationP13.txt" ) is still the same thing as slotIndex and not the result of a browsing in ipairs à la GenerateFullSlotData?

I haven't. But if it is, a new item would most likely use the next free slotindex so in the majority of cases it would coincide, but it could in some case be different.

Now, what you are explaining to me i know this, I understand this, but it doesn't explain the deleted items and the screenshots of the Dustman outputs. And if other addons were involved, back to the leak hypothesis.
So you assume that a C++ code sending an event to the Lua is done to follow a Lua ipair function ?..

the slotId in the SINGLE_SLOT_UPDATE event page is the slotIndex used everywhere, that's all. If you still don't believe this, just look at esoui code.

For your problem, I don't have any track.
I don't even know if it's dustman. you say the addon deleted an item, you say addon sold it, I look at the code, there is more than checks everywhere to do not do this. Yes I can agree that it may be possible that there is something leading to this, because I am a coder and my deep me says me to never close a possibility especially for bugs, but for now, I have strictly nothing which could explain this.

And for others addons, I could quote Roomba, which is almost same than Dustman.. code didn't changed since months, almost year.. and all is still working.
Last edited by Ayantir : 02/14/17 at 08:57 PM.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 06:47 PM  
Haho

Forum posts: 15
File comments: 14
Uploads: 0
it's been 3 or 4 posts that i'm talking about the var passed by the event on slot update.

Have you double checked that the "slotId" in the event args (yes taken from that ZOS text for example "ESOUIDocumentationP13.txt" ) is still the same thing as slotIndex and not the result of a browsing in ipairs à la GenerateFullSlotData?

I haven't. But if it is, a new item would most likely use the next free slotindex so in the majority of cases it would coincide, but it could in some case be different.

Now, what you are explaining to me i know this, I understand this, but it doesn't explain the deleted items and the screenshots of the Dustman outputs. And if other addons were involved, back to the leak hypothesis.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 06:26 PM  
Randactyl
 
Randactyl's Avatar
AddOn Author - Click to view AddOns

Forum posts: 251
File comments: 462
Uploads: 17
Originally Posted by Haho
Originally Posted by Randactyl
Variable names are 100% arbitrary. If you did:
i'm speaking of the var names used in the official documentation.
Sometimes slotId is used, sometimes slotIndex. I'm pretty sure it's not random.
official documentation where? The esoui wiki is written by a collective of addon authors. The .txt file given to us at update time by ZOS is the only thing official which is released. We also unpack the UI source out of the game files and reference that.

Even still, take this entry from that document released by ZOS:

* GetItemName(*integer* _bagId_, *integer* _slotIndex_)
** _Returns:_ *string* _name_

Yes, we usually use names which match the given parameter names for the sake of consistency. But the only requirement for an author to do so is his or her own commitment to that consistency. The only concrete requirement for any of the parameters is that their data type matches.

One of the constants provided by the game is BAG_BACKPACK. It represents the bagId for a player's inventory. BAG_BACKPACK is equal to the integer 1.

A slotIndex, sometimes also referred to as slotId, is the position at which an item is stored in a bag. slotIndex is an integer somewhere in the range from 1 to the maximum number of spaces in the player's inventory.

You don't need to name your variables exactly the same as they are named in a function's parameter list. Heck, you don't even have to pass a variable name to functions at all.

You can call GetItemName(1, 5) and get back the name of the item in slot 5 of the player's inventory, assuming there is in fact an item in position 5 of the player's inventory.

Now, since the sticking point is the variable slotId as it is used in Dustman, have a look at this:

In Lua, you can have a for loop declare two variables when iterating through a table. The function ipairs can iterate over a well-formed array (i.e. the the first value is stored at index 1 and there are no gaps in the table indicies). Paired with a for loop, it looks like this:
Lua Code:
  1. for index, value in ipairs(arrayName) do
  2.    
  3. end
The variable index represents the current index or key we are operating on in arrayName.
The variable value represents the data pointed to by arrayName[index].

These two variable names are created by the for loop declaration. These variables exist only for the life of the for loop and are not influenced by any variable which might happen to have the same name outside of the for loop. They also do not influence any variable which might have the same name outside of the for loop.

In Lua, using an underscore as a variable name is a convention which means "we do not care about the value which would be stored in this variable, so we have not given it a meaningful name". Often, an underscore is seen as the first variable declared in a for loop that iterates over an array because we don't care about what position the data is stored at, we just care about the data.

So let's update the example for loop to the following:
Lua Code:
  1. local bagCache = SHARED_INVENTORY:GenerateFullSlotData(nil, BAG_BACKPACK)
  2. for _, data in ipairs(bagCache) do
  3.  
  4. end
The second variable has been changed to a slightly more meaningful name: data. I've also updated arrayName to read bagCache, which would represent the array returned by SHARED_INVENTORY:GenerateFullSlotData(filterFunc, ...).

If you wanted to print the itemlink to chat and then sell each item to a vendor, the body of the for loop could look like this:
Lua Code:
  1. local bagCache = SHARED_INVENTORY:GenerateFullSlotData(nil, BAG_BACKPACK)
  2. for _, data in ipairs(bagCache) do
  3.     d(GetItemLink(data.bagId, data.slotIndex)
  4.     SellInventoryItem(data.bagId, data.slotIndex, data.stackCount)
  5. end
Notice, the first variable declared by the for loop is still and underscore. We do not need to know the array index where item is stored in bagCache in order to do things that require a slotIndex/slotId.

I want to circle back here and stress that the following snippet would perform exactly the same as the previous snippet:
Lua Code:
  1. local iShouldBeMakingDinner = SHARED_INVENTORY:GenerateFullSlotData(nil, BAG_BACKPACK)
  2. for itIsValentinesDay, butImDoingThisInstead in ipairs(iShouldBeMakingDinner) do
  3.     d(GetItemLink(butImDoingThisInstead.bagId, butImDoingThisInstead.slotIndex)
  4.     SellInventoryItem(butImDoingThisInstead.bagId, butImDoingThisInstead.slotIndex, butImDoingThisInstead.stackCount)
  5. end
because an author's local variable names make absolutely no difference to the outside world.

Now let's revisit the junk selling function from Dustman:
Lua Code:
  1. local function SellJunkItems(isFence)
  2.    
  3.     if GetInteractionType() == INTERACTION_VENDOR then
  4.        
  5.         local total = 0
  6.         local count = 0
  7.         local transactions = 0
  8.         local transactionsMessage = true
  9.         local hasHagglingBonus, hagglingBonus
  10.        
  11.         local bagCache = SHARED_INVENTORY:GenerateFullSlotData(nil, BAG_BACKPACK)
  12.        
  13.         if isFence then
  14.             hasHagglingBonus = GetNonCombatBonus(NON_COMBAT_BONUS_HAGGLING) > 0
  15.             hagglingBonus = GetNonCombatBonus(NON_COMBAT_BONUS_HAGGLING)
  16.             bagCache = pairsByQuality(bagCache)
  17.         end
  18.        
  19.         for slotId, data in pairs(bagCache) do
  20.             if transactions < 98 then
  21.                 if data.isJunk then
  22.                     if data.stolen == isFence then
  23.                         if isFence then
  24.                             local totalSells, sellsUsed = GetFenceSellTransactionInfo()
  25.                             if sellsUsed == totalSells then
  26.                                 ZO_Alert(UI_ALERT_CATEGORY_ALERT, SOUNDS.NEGATIVE_CLICK, GetString("SI_STOREFAILURE", STORE_FAILURE_AT_FENCE_LIMIT))
  27.                                 if total > 0 and savedVars.notifications.total then
  28.                                     MyPrint(zo_strformat(DUSTMAN_FORMAT_TOTAL, count, total))
  29.                                 end
  30.                                 return
  31.                             end
  32.                         end
  33.                         local name = GetItemLink(BAG_BACKPACK, data.slotIndex)
  34.                        
  35.                         if IsItemProtected(BAG_BACKPACK, data.slotIndex) then
  36.                             SetItemIsJunk(BAG_BACKPACK, data.slotIndex, false)
  37.                             MyPrint(zo_strformat(DUSTMAN_FORMAT_NOTSOLD, name))
  38.                         else
  39.                             SellInventoryItem(BAG_BACKPACK, data.slotIndex, data.stackCount)
  40.  
  41.                             local sellPrice = data.sellPrice
  42.                             if isFence and hasHagglingBonus then
  43.                                 sellPrice = zo_round(sellPrice * (1 + hagglingBonus / 100))
  44.                             end
  45.                            
  46.                             if savedVars.notifications.allItems then
  47.                                 local RECEIPT_FORMAT
  48.                                 if sellPrice == 0 then
  49.                                     RECEIPT_FORMAT = GetString(DUSTMAN_FORMAT_ZERO)
  50.                                 else
  51.                                     RECEIPT_FORMAT = GetString(DUSTMAN_FORMAT_GOLD)
  52.                                 end
  53.                                
  54.                                 MyPrint(zo_strformat(RECEIPT_FORMAT, name, data.stackCount, sellPrice * data.stackCount))
  55.                             end
  56.                             count = count + data.stackCount
  57.                             transactions = transactions + 1
  58.                             total = total + sellPrice * data.stackCount
  59.                         end
  60.                     end
  61.                 end
  62.             elseif transactionsMessage then
  63.                 transactionsMessage = false
  64.                 MyPrint(GetString(DUSTMAN_ZOS_RESTRICTIONS))
  65.             end
  66.         end
  67.        
  68.         if total > 0 and savedVars.notifications.total then
  69.             MyPrint(zo_strformat(DUSTMAN_FORMAT_TOTAL, count, total))
  70.         end
  71.        
  72.     end
  73.    
  74. end

Look at line 19. That line begins a for loop which ends on line 66. The for loop declares two variables, slotId and data which exist only for the life of the for loop and are not influenced by any variable which might happen to have the same name outside of the for loop. They also do not influence any variable which might have the same name outside of the for loop.

For brevity, here again is the paired down snippet from a few replies ago:
Lua Code:
  1. for slotId, data in pairs(bagCache) do
  2.     local name = GetItemLink(BAG_BACKPACK, data.slotIndex)I
  3.     if IsItemProtected(BAG_BACKPACK, data.slotIndex) then
  4.         SetItemIsJunk(BAG_BACKPACK, data.slotIndex, false)
  5.     else
  6.         SellInventoryItem(BAG_BACKPACK, data.slotIndex, data.stackCount)
  7.     end
  8. end

Is slotId ever used in the body of the for loop? No.
Paste the full function into a text editor and ctrl-f for slotId if you don't believe this shorter snippet is representative.

So then, based on my example for loop above, couldn't Dustman's for loop be written as:
Lua Code:
  1. for _, data in pairs(bagCache) do
  2.     local name = GetItemLink(BAG_BACKPACK, data.slotIndex)I
  3.     if IsItemProtected(BAG_BACKPACK, data.slotIndex) then
  4.         SetItemIsJunk(BAG_BACKPACK, data.slotIndex, false)
  5.     else
  6.         SellInventoryItem(BAG_BACKPACK, data.slotIndex, data.stackCount)
  7.     end
  8. end
? Yes.

And if that is the case, does it matter if the first variable in the Dustman for loop has a name or not? No.

All of this is to say, again, that Dustman has no bug related to misuse of the array returned by GenerateFullSlotData and that an author's local variable names are completely arbitrary with respect to outside scopes.

Edit: it is most likely that the reason the first variable name in Dustman's for loop is still slotId is that Ayantir simply did not change it to an underscore when he initially fixed the code to work with the updated GenerateFullSlotData function. No big deal.
Last edited by Randactyl : 02/14/17 at 06:29 PM.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 05:09 PM  
Haho

Forum posts: 15
File comments: 14
Uploads: 0
Originally Posted by Randactyl
Variable names are 100% arbitrary. If you did:
i'm speaking of the var names used in the official documentation.
Sometimes slotId is used, sometimes slotIndex. I'm pretty sure it's not random.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 04:59 PM  
Randactyl
 
Randactyl's Avatar
AddOn Author - Click to view AddOns

Forum posts: 251
File comments: 462
Uploads: 17
Originally Posted by Haho
maybe you wanna look at it from a larger point of view?

I don't use any slot update event in my version of Zolans, but if last year slotId and slotIndex were the same but not anymore (see screenshot), executing check function as IsItemStolen(bagId, slotIndex) with the return value of the Event (which is according to the wiki slotId and not slotindex) would generate the same kind of mixup.
Error which would have been masked until a few month ago but not anymore.

Now idk if the event really returns slotId or slotIndex, as I said, not my part to do the legwork here.
Variable names are 100% arbitrary. If you did:

local randomVarNameToProveAPoint = data.slotIndex

randomVarNameToProveAPoint would be a valid slotIndex and calling

GetItemLink(BAG_BACKPACK, randomVarNameToProveAPoint)

or any other function that takes a bagId and slotIndex as arguments would all be perfectly valid.

There's a fundamental misunderstanding here. Just suffice it to say your initial report about how GenerateFullSlotData has changed over time is valid, however Dustman has already accounted for it in at least the most recent update.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 04:34 PM  
Haho

Forum posts: 15
File comments: 14
Uploads: 0
Originally Posted by Randactyl

1. slotId is never actually used by calls in Dustman, per the code I just showed you.

2. Lua is lexically scoped. If slotId were ever actually used within the for loop, it would use the immediate one declared in "for slotId, data ..." not some other variable named slotId which was leaked to the global scope.
maybe you wanna look at it from a larger point of view?

I don't use any slot update event in my version of Zolans, but if last year slotId and slotIndex were the same but not anymore (see screenshot), executing check function as IsItemStolen(bagId, slotIndex) with the return value of the Event (which is according to the wiki slotId and not slotindex) would generate the same kind of mixup.
Error which would have been masked until a few month ago but not anymore.

Now idk if the event really returns slotId or slotIndex, as I said, not my part to do the legwork here.

Edit, also, CDGbankstacker, Restacker if you wanna verify for yourself that something that was working last year isn't anymore due to this.
Last edited by Haho : 02/14/17 at 04:52 PM.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 04:20 PM  
Randactyl
 
Randactyl's Avatar
AddOn Author - Click to view AddOns

Forum posts: 251
File comments: 462
Uploads: 17
Originally Posted by Haho
Originally Posted by Randactyl
Originally Posted by Haho
Originally Posted by Randactyl
Originally Posted by Haho
...

it's been like this for a few months :

What is this even supposed to show?

GenerateFullSlotData creates an array of all of the data tables that back items in the bags passed to the function. An index in the returned array cannot be assumed to be equal to data.slotIndex at any given array position.
yes, and that's why Dustman deletes random stuff.
GenerateFullSlotData used to return slotIndexes as indexes but not anymore since at least the update before Homestead.
GetOrCreateBagCache still does this though.
I assume they changed it to be able to ipair on one of both methods.
And all of Garkin's addons involving bags use GenerateFullSlotData btw.
Lua Code:
  1. for slotId, data in pairs(bagCache) do
  2.     local name = GetItemLink(BAG_BACKPACK, data.slotIndex)I
  3.     if IsItemProtected(BAG_BACKPACK, data.slotIndex) then
  4.         SetItemIsJunk(BAG_BACKPACK, data.slotIndex, false)
  5.     else
  6.         SellInventoryItem(BAG_BACKPACK, data.slotIndex, data.stackCount)
  7.     end
  8. end

From Dustman's sell junk function. I yanked out the irrelevant parts for length.

Dustman uses the correct slotIndex from data.slotIndex. slotId in the for loop is never use and could just as easily be _.
"slotId" is used for different things, as slotIndex when taken from EVENTS, idk it may have slipped or leaked somewhere.
The users reports with screenshots are very clear about gloden stuff deleted or other weird occurrences.
It's a lead, now i wont do the legwork.
1. slotId is never actually used by calls in Dustman, per the code I just showed you.

2. Lua is lexically scoped. If slotId were ever actually used within the for loop, it would use the immediate one declared in "for slotId, data ..." not some other variable named slotId which was leaked to the global scope.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 03:42 PM  
Haho

Forum posts: 15
File comments: 14
Uploads: 0
Originally Posted by Randactyl
Originally Posted by Haho
Originally Posted by Randactyl
Originally Posted by Haho
...

it's been like this for a few months :

What is this even supposed to show?

GenerateFullSlotData creates an array of all of the data tables that back items in the bags passed to the function. An index in the returned array cannot be assumed to be equal to data.slotIndex at any given array position.
yes, and that's why Dustman deletes random stuff.
GenerateFullSlotData used to return slotIndexes as indexes but not anymore since at least the update before Homestead.
GetOrCreateBagCache still does this though.
I assume they changed it to be able to ipair on one of both methods.
And all of Garkin's addons involving bags use GenerateFullSlotData btw.
Lua Code:
  1. for slotId, data in pairs(bagCache) do
  2.     local name = GetItemLink(BAG_BACKPACK, data.slotIndex)I
  3.     if IsItemProtected(BAG_BACKPACK, data.slotIndex) then
  4.         SetItemIsJunk(BAG_BACKPACK, data.slotIndex, false)
  5.     else
  6.         SellInventoryItem(BAG_BACKPACK, data.slotIndex, data.stackCount)
  7.     end
  8. end

From Dustman's sell junk function. I yanked out the irrelevant parts for length.

Dustman uses the correct slotIndex from data.slotIndex. slotId in the for loop is never use and could just as easily be _.
"slotId" is used for different things, as slotIndex when taken from EVENTS, idk it may have slipped or leaked somewhere.
The users reports with screenshots are very clear about gloden stuff deleted or other weird occurrences.
It's a lead, now i wont do the legwork.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 03:19 PM  
Randactyl
 
Randactyl's Avatar
AddOn Author - Click to view AddOns

Forum posts: 251
File comments: 462
Uploads: 17
Originally Posted by Haho
Originally Posted by Randactyl
Originally Posted by Haho
...

it's been like this for a few months :

What is this even supposed to show?

GenerateFullSlotData creates an array of all of the data tables that back items in the bags passed to the function. An index in the returned array cannot be assumed to be equal to data.slotIndex at any given array position.
yes, and that's why Dustman deletes random stuff.
GenerateFullSlotData used to return slotIndexes as indexes but not anymore since at least the update before Homestead.
GetOrCreateBagCache still does this though.
I assume they changed it to be able to ipair on one of both methods.
And all of Garkin's addons involving bags use GenerateFullSlotData btw.
Lua Code:
  1. for slotId, data in pairs(bagCache) do
  2.     local name = GetItemLink(BAG_BACKPACK, data.slotIndex)I
  3.     if IsItemProtected(BAG_BACKPACK, data.slotIndex) then
  4.         SetItemIsJunk(BAG_BACKPACK, data.slotIndex, false)
  5.     else
  6.         SellInventoryItem(BAG_BACKPACK, data.slotIndex, data.stackCount)
  7.     end
  8. end

From Dustman's sell junk function. I yanked out the irrelevant parts for length.

Dustman uses the correct slotIndex from data.slotIndex. slotId in the for loop is never use and could just as easily be _.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 03:00 PM  
Haho

Forum posts: 15
File comments: 14
Uploads: 0
Originally Posted by Randactyl
Originally Posted by Haho
...

it's been like this for a few months :

What is this even supposed to show?

GenerateFullSlotData creates an array of all of the data tables that back items in the bags passed to the function. An index in the returned array cannot be assumed to be equal to data.slotIndex at any given array position.
yes, and that's why Dustman deletes random stuff.
GenerateFullSlotData used to return slotIndexes as indexes but not anymore since at least the update before Homestead.
GetOrCreateBagCache still does this though.
I assume they changed it to be able to ipair on one of both methods.
And all of Garkin's addons involving bags use GenerateFullSlotData btw.
Report comment to moderator  
Reply With Quote
Unread 02/14/17, 02:44 PM  
Randactyl
 
Randactyl's Avatar
AddOn Author - Click to view AddOns

Forum posts: 251
File comments: 462
Uploads: 17
Originally Posted by Haho
...

it's been like this for a few months :

What is this even supposed to show?

GenerateFullSlotData creates an array of all of the data tables that back items in the bags passed to the function. An index in the returned array cannot be assumed to be equal to data.slotIndex at any given array position.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.