After using EngInventory and Advanced Bags Plus, I can't live without a self-sorting inventory system. I don't particularly like how either of them look, though. And, of course, they aren't Ace. ;-)
Now, I'm no artist, but I can fire up an image editor as well as anybody else, so here's a mockup of what I'm thinking of for an interface.
The standard gold/silver/copper icons would replace "Eleventy Billion Gold", and all the slots would have appropriate items. Empty slots wouldn't appear, since if the bag is self-sorting, the only point to showing the empties would be to give you an idea how many you have (thus, the count in the corner).
Clicking a header would hide/show that category's contents. Dropping an item onto a header would add it to that category's filter.
Categories would be configurable similarly to EngInventory or Advanced Bags Plus, with filters based on item names, type, and quality. (For example, I'd sort gray items and a few other items by name into "junk")
Now, my question is... how difficult is this? It seems to me to be a mod that would be a bit hard for someone new to LUA (myself), but I'm willing to try if I can get a pointer in the right direction(s).
The collapsable sections might be a bit of a PITA but if we can figure out what the heck happened to Ramble and drag him back here, five'd get you ten he could do it with MyBags.
What I'm thinking though is that you'd have 'X' max-slots (the total number of bag slots you have available), the layout would be like yours except the slots would be permanent. So if you allot five slots to potions, you'd always have five slots until you changed that.
Anything that didn't have slots in it would just be a thin line of blank space, again, akin to what you have there. The trick would be then simply repositioning and reanchoring the bag buttons, which really wouldn't be all that hard.
The hardest part would be to create a category system for all the items out there, this is where it turns towards difficult, there's no easy way to recognize an item type unless it's hard coded.
This is where idea #2 comes into play, so how about this ...
You'd have 'groups' which are nameable, you'd be able to place items into slots and have a queue for each slot, with most important item to least important. So you could create a group and name it potions. Then you could queue different kinds of potions to each slot, so every slot is at least mostly always used.
And of course... Ramble has been working on the harder part.
I'm not really satisfied with everything quite yet but i've got an auto inventory sorting type system started, and I haven't posted much on it, so I guess I'll try to explain what I've got going on so far.
I've got one addon or module that does all the inventory scanning and tracking. It keeps track of everything in the inventory in a table, so you can look up stuff by Inv[1], Inv[50], or whatever. I've almost totally ditched the idea of knowing which item is in which bag; I hardly care. I am keeping track if a slot is an ammo slot (or a soul shard slot for 1.9; I have no warlock or shard bag to test this with when I get to workin on that bit), but that's about it. I also keep track of the Bags, Inv.Bag[1] - Inv.Bag[4] give info about the bags.
Now I'm doin all sorts of fun stuff with meta tables, so I think this is all really efficent. When I scan a slot, I check it has the same ID as what I had there before. If not, I cache the GetItemInfo data into a hidden table if I've never seen it before. Then I set Inv[slot].Id to the item ID, and give it a link to the GetItemInfo cache. This lets me look up all sorts of info about the item, Inv[1].Name, Inv[1].Type, Inv[1].SubType, Inv[1], Inv[1].MinLevel, etc. All those values get looked up in the GetItemInfo cache, but I can also save other info in the item itself, like Inv[1].Count, and Inv.Bag[1].Size.
And if that didn't make sense, well, I'll get my code online somewhere sometime :-[
Anyways, this module tracks BAG_UPDATE and BAG_CLOSED events to check for changes in the inventory, and if it detects a slot changes, it passes on ACE_INVENTORY_SLOTCHANGED if the itemId changed, ACE_INVENTORY_COUNTCHANGED if the count changes.
So then I have my sorting module. It hooks the ACE_INVENTORY events. Basically it's a list of rules and exceptions to those rules as how to sort items. Exceptions put specific items into specific categories. Rules are things like "Type" = "Quest" or "Type" = "Reagent".
So the big thing I'm working on right now is in game modification of those rules. I'm pretty confident the rules work if they're in place, and perhaps I might put aside changing them dynamically and work on a GUI instead. ... This is gonna be my 3rd rework of MyBags; I'm not exactly sure what I want in my GUI ::sigh::
So... maybe i'll purdy up my code a bit and try to get something to show for this weekend. I really like my Inv table; it's purdy :D
Ah hell, I'll give you what I'm workin with right now. It's not even close to being ready for release but I wouldn't mind some suggestions as far as where you think I'm at and where I should be going.
If you're poking at the code:
inv.lua sets up the Inv table and all my little metatables.
AceInventory.lua scans the inventory. I think I've got a glitch where it sometimes doesn't scan the entire inventory on login, but it does if you do a reload.
InvSortDefaults.lua has my rules for sorting. They can probably use some work.
InvSort.lua is what's actually doing sorting.
When you load this up in WoW, things that are interesting to play with are:
/in report - prints your entire inventory in order
/is report - prints the sorted inventory.
The default categories I have:
Empty slots: Empty bag slots (these have a Id of 0)
Trade tools: Items that are used in a few trades, such as mining pick, blacksmiths hammer, etc. These are all exceptions so far, perhaps I can come up with a better way to recognise them.
Reagents: Obvious enough. Type = Reagent.
Trade goods: This is a pretty general category, just about everything you use to make stuff or even stuff you make (it looks like my engineering trinkets get put in here even)
Equippable: Type = Armor or Type = Weapon. This can probably be better too
Soulshards: obvious enough; will also have empty soulshard slots (which probably will be Id = -2)
Quest Items: Type = Quest
Consumables: Type = Consumable (Again this could get seperated up, food, water, potions, etc.)
Projectiles: Type = Projectile, empty bag slots (Id = -1)
Unknown: Everything that didn't fit in the rest of the categories.
So if someone thinks I'm totally off on how I'm doing my sorting, I'd love to hear it; I'm not sure it's the greatest system and I'm totally open to suggestions.
It would be nice to be able to add some custome catagories. Take a druid perhaps that has a set of armor for feral and one for healing. If they could set up a my armor catagory so eventualy in the inventory display all the amor that they switch back and forth between can be set aside and not mixed in with other armor like new drops.
And of course... Ramble has been working on the harder part.
Well, sorry for stealing the thunder you would have gotten when you announced it. :)
(Ah, hell, you'll still get the thunder. Well earned, too.)
Quote from "Ramble" »
So the big thing I'm working on right now is in game modification of those rules. I'm pretty confident the rules work if they're in place, and perhaps I might put aside changing them dynamically and work on a GUI instead. ... This is gonna be my 3rd rework of MyBags; I'm not exactly sure what I want in my GUI ::sigh::
I'm not sure how important in-game modification is. On one hand, an interface for it is going to be somewhat complex. There's no easy way around it except simply providing a bunch of pre-made rules that (hopefully) cover most people's wants. On the other hand, you'll end up finding someone that wants something you haven't thought of.
I'd think a UI to change exceptions is more important than a UI to change rules. This would cover most of the cases where someone wants to change a rule... (this Stranglethorn Vale book page thing is a quest item. This halloween candy thing is food. etc...)
It would be nice to be able to add some custome catagories. Take a druid perhaps that has a set of armor for feral and one for healing. If they could set up a my armor catagory so eventualy in the inventory display all the amor that they switch back and forth between can be set aside and not mixed in with other armor like new drops.
Yea, this will be easy to do with exceptions. Just put all pieces of your armor into a group. I kinda liked the EngInventory idea of putting things in a Soulbound / not Soulbound category, but that would require a tooltip scan.
Anyways; poking around with GUI stuff and not totally likeing what I got but it gives you a bit more of a visual impression that things are getting sorted:
So two things could deffinately use improvement: my default sorting rules, and my layout on the screen. Lots of space gets wasted this way with large inventories and smaller groups. Anyone have any ideas?
I'd hide empty categories for one, definitely. I'd also place empty bag slots onto a line until it completes the line. You could set it up by priority which gets more slots but do it only until it completes the line for that column, that'd leave only empty space in the last category.
... but what is this strangeness I show you? Basically, it starts off as I said, with slots allocated. If one section gets filled it reallocates a slot from a lower priority section and drops a message in the chatframe like 'Slot reallocated from Quest Items to Trade Goods'. Then when you run out of bag space it'd be more like 'All sections full, no slots to reallocate'.
What are these strange minus and plus buttons though? They're for manual slot reallocation. I've shown that in the bottom too, where I reaollcated a slot from Quest Items to consumables. So the player can manually setup their allocations for the sections of items they have however they like. Then that'll be saved and that'll always be the allocation for that section.
Idea for empties... condense them dow ninto one slot and make a great big number in the center for your empty slots. I don't need to see 25 blank squares, one with a "25" will do just fine AND saves space.
Oh and, ala EngInv, make ammo/quiver emties seperate from "normal" empties.
So two things could deffinately use improvement: my default sorting rules, and my layout on the screen. Lots of space gets wasted this way with large inventories and smaller groups. Anyone have any ideas?
If the groups can be collapsed, that'd help some. For one, how often are empty slots actually interesting, beyond a simple count? Same with items like soul shards.
Another way to reduce the wasted space is with allowing more than one category to a row, sort of like cells in a table. (This is how EngInventory does it, btw; it gives you a window with 9 (I think?) configurable cells, three to a row. The user configures what cells show what categories)
I suppose, though, wasted space is one of the downsides of a sorted inventory system. Some people won't like it and prefer a normal all-in-one or even the WoW standard bag interface.
So long as its a seperate addon and can be loaded with another keybinding i will use it, most of the time i wont need it but it will help with my druid and shaman a lot.
Mm, if we did go with that approach, the only thing that I request is that you have the option to only show the buttons ... . or perhaps a semi-faded tooltip background without the border behind each category would help distinguish the bags, I'd suggest making it colour coded, where the player can configure the colours.
I'm thinking something along the lines of (and please excuse the crappiness) ...
What we might also have is a little icon at the top left distinguishing the 'type' of bag by using a major item of that class and we could have a little [x] at the top right of the bag for closing that category.
Ok Ok, as long as everyone else is getting their theory out in MS Paint, I guess I will too :-)
I feel like we've got some good ideas flowing. But I'm starting to realize, since the inventory will be sorted, what's the point in showing all the items at once? Kinda along the lines of AdvancedBags, now we've just got better bags, we know where to look for our stuff. So why not make it like a tabbed interface? It's awesome in Firefox and Gaim, why not my inventory? MS Paint, away!
OK, So, The important things I always care about belong on the frame at all times: Empty Slots, a total count like was suggested above. Then I have Ammo in Ammo slots. This can show the total count of ammo; although I'm starting to think this might be problematic, ammo bags can hold multiple types of ammo, not sure how I'd deal with that exactly, perhaps the ammo display can grow in that sort of situation. The red border around the next ammo slot is to indicate ammo that's not in an ammo bag. I'm not sure this is really needed, but there'd be no other way to tell if it wasn't sorted differently. The last slot is the number of empty Ammo slots. The ammo slots can be replaced with Soul Shard slots; can warlocks use guns? Never played one, but I pretty sure they can't.
Ok, so then you got your tabs showing the names of all the different groups with the current selected group highlighted. OK, so maybe you don't want to hide everything all the time. That's fine with me; then we can just undock the tab, and place it in it's own floating window.
I like it but could we perhaps do it via an iconic system? I think having long text-tabs in Warcraft might look a bit ugly and out of place, if we do go with it then I envision something like this ...
Basically, each of the buttons would have a major item from the bag, by clicking them you open that category. The numbered one is a custom bag, you can add as many custom bags as you want, basically it's a blank icon with a fontstring that has the number of the custom entry.
I like the idea of combining ammo (and other stuff) and I see where this could be troublesome, so here's an idea: only combine full stacks, and do it for everything. Basically stack the stacks. Ammo might show up as 1400 (7) and a partial stack as just 124. This could work with all items since the 7th return value from GetItemInfo is the item's full stack size. Check out TitanItemDed, I've done something similar in it.
I can hardly wait for this, I love EngInv but damn it's bulky, a nice streamlined, yet sorted bag interface would make me sooooo happy ^^
Found this the other day: Sanity Inventory (curse link, beware of server down pages)
Except the fact that it tries to use "pairs" as a table, straight off like "pairs = {}" (!!), I actually love it (after doing a search and replace on pairs). It doesn't seem to use very much resources, 311KiB according to warmup, despite keeping track of two chars inventory including their banks.
Nice sorting options, search function and so forth. What it needs though is to be more... "bag-ish"
Maybe it can be of some use for any of you here though-
Just wait until Ramble's version hits the shelves and your bags are sorted by button-based tabs, then nothing will ever be the same again. I'm against the categorized look of the earlier examples in this thread because they take up too much screen space. Also, folding unused categories is nice but it can leave you unprepared for when you have items in every category and it grows to catastrophic proportions, leaving your sanity to dwindle. I'm still smitten with the idea of tabs, I hope Ramble goes with button tabs over text tabs or it's going to be ugly but regardless ... tabs are a great way to manage bags - because you'll only have one category showing at any time and you you can compensate for the amount of screenspace you'll need, that way.
I'd like a cross between Advanced Bags Plus and Sanity inventory. That is, ABPs filtering and SIs interface but more compressed, and the cross-character functionality. Integrated with KC_Items perhaps, to save space?
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Now, I'm no artist, but I can fire up an image editor as well as anybody else, so here's a mockup of what I'm thinking of for an interface.
The standard gold/silver/copper icons would replace "Eleventy Billion Gold", and all the slots would have appropriate items. Empty slots wouldn't appear, since if the bag is self-sorting, the only point to showing the empties would be to give you an idea how many you have (thus, the count in the corner).
Clicking a header would hide/show that category's contents. Dropping an item onto a header would add it to that category's filter.
Categories would be configurable similarly to EngInventory or Advanced Bags Plus, with filters based on item names, type, and quality. (For example, I'd sort gray items and a few other items by name into "junk")
Now, my question is... how difficult is this? It seems to me to be a mod that would be a bit hard for someone new to LUA (myself), but I'm willing to try if I can get a pointer in the right direction(s).
What I'm thinking though is that you'd have 'X' max-slots (the total number of bag slots you have available), the layout would be like yours except the slots would be permanent. So if you allot five slots to potions, you'd always have five slots until you changed that.
Anything that didn't have slots in it would just be a thin line of blank space, again, akin to what you have there. The trick would be then simply repositioning and reanchoring the bag buttons, which really wouldn't be all that hard.
The hardest part would be to create a category system for all the items out there, this is where it turns towards difficult, there's no easy way to recognize an item type unless it's hard coded.
This is where idea #2 comes into play, so how about this ...
You'd have 'groups' which are nameable, you'd be able to place items into slots and have a queue for each slot, with most important item to least important. So you could create a group and name it potions. Then you could queue different kinds of potions to each slot, so every slot is at least mostly always used.
I'm not really satisfied with everything quite yet but i've got an auto inventory sorting type system started, and I haven't posted much on it, so I guess I'll try to explain what I've got going on so far.
I've got one addon or module that does all the inventory scanning and tracking. It keeps track of everything in the inventory in a table, so you can look up stuff by Inv[1], Inv[50], or whatever. I've almost totally ditched the idea of knowing which item is in which bag; I hardly care. I am keeping track if a slot is an ammo slot (or a soul shard slot for 1.9; I have no warlock or shard bag to test this with when I get to workin on that bit), but that's about it. I also keep track of the Bags, Inv.Bag[1] - Inv.Bag[4] give info about the bags.
Now I'm doin all sorts of fun stuff with meta tables, so I think this is all really efficent. When I scan a slot, I check it has the same ID as what I had there before. If not, I cache the GetItemInfo data into a hidden table if I've never seen it before. Then I set Inv[slot].Id to the item ID, and give it a link to the GetItemInfo cache. This lets me look up all sorts of info about the item, Inv[1].Name, Inv[1].Type, Inv[1].SubType, Inv[1], Inv[1].MinLevel, etc. All those values get looked up in the GetItemInfo cache, but I can also save other info in the item itself, like Inv[1].Count, and Inv.Bag[1].Size.
And if that didn't make sense, well, I'll get my code online somewhere sometime :-[
Anyways, this module tracks BAG_UPDATE and BAG_CLOSED events to check for changes in the inventory, and if it detects a slot changes, it passes on ACE_INVENTORY_SLOTCHANGED if the itemId changed, ACE_INVENTORY_COUNTCHANGED if the count changes.
So then I have my sorting module. It hooks the ACE_INVENTORY events. Basically it's a list of rules and exceptions to those rules as how to sort items. Exceptions put specific items into specific categories. Rules are things like "Type" = "Quest" or "Type" = "Reagent".
So the big thing I'm working on right now is in game modification of those rules. I'm pretty confident the rules work if they're in place, and perhaps I might put aside changing them dynamically and work on a GUI instead. ... This is gonna be my 3rd rework of MyBags; I'm not exactly sure what I want in my GUI ::sigh::
So... maybe i'll purdy up my code a bit and try to get something to show for this weekend. I really like my Inv table; it's purdy :D
http://people.ucsc.edu/~tgerdes/InvSort.rar
If you're poking at the code:
inv.lua sets up the Inv table and all my little metatables.
AceInventory.lua scans the inventory. I think I've got a glitch where it sometimes doesn't scan the entire inventory on login, but it does if you do a reload.
InvSortDefaults.lua has my rules for sorting. They can probably use some work.
InvSort.lua is what's actually doing sorting.
When you load this up in WoW, things that are interesting to play with are:
/in report - prints your entire inventory in order
/is report - prints the sorted inventory.
The default categories I have:
Empty slots: Empty bag slots (these have a Id of 0)
Trade tools: Items that are used in a few trades, such as mining pick, blacksmiths hammer, etc. These are all exceptions so far, perhaps I can come up with a better way to recognise them.
Reagents: Obvious enough. Type = Reagent.
Trade goods: This is a pretty general category, just about everything you use to make stuff or even stuff you make (it looks like my engineering trinkets get put in here even)
Equippable: Type = Armor or Type = Weapon. This can probably be better too
Soulshards: obvious enough; will also have empty soulshard slots (which probably will be Id = -2)
Quest Items: Type = Quest
Consumables: Type = Consumable (Again this could get seperated up, food, water, potions, etc.)
Projectiles: Type = Projectile, empty bag slots (Id = -1)
Unknown: Everything that didn't fit in the rest of the categories.
So if someone thinks I'm totally off on how I'm doing my sorting, I'd love to hear it; I'm not sure it's the greatest system and I'm totally open to suggestions.
Well, sorry for stealing the thunder you would have gotten when you announced it. :)
(Ah, hell, you'll still get the thunder. Well earned, too.)
I'm not sure how important in-game modification is. On one hand, an interface for it is going to be somewhat complex. There's no easy way around it except simply providing a bunch of pre-made rules that (hopefully) cover most people's wants. On the other hand, you'll end up finding someone that wants something you haven't thought of.
I'd think a UI to change exceptions is more important than a UI to change rules. This would cover most of the cases where someone wants to change a rule... (this Stranglethorn Vale book page thing is a quest item. This halloween candy thing is food. etc...)
Yea, this will be easy to do with exceptions. Just put all pieces of your armor into a group. I kinda liked the EngInventory idea of putting things in a Soulbound / not Soulbound category, but that would require a tooltip scan.
Anyways; poking around with GUI stuff and not totally likeing what I got but it gives you a bit more of a visual impression that things are getting sorted:
http://people.ucsc.edu/~tgerdes/Sorted.JPG
And I created a new hunter character to show the empty projectile slots get sorted too...
http://people.ucsc.edu/~tgerdes/NewHunter.JPG
So two things could deffinately use improvement: my default sorting rules, and my layout on the screen. Lots of space gets wasted this way with large inventories and smaller groups. Anyone have any ideas?
Then I imagine something like this:
... but what is this strangeness I show you? Basically, it starts off as I said, with slots allocated. If one section gets filled it reallocates a slot from a lower priority section and drops a message in the chatframe like 'Slot reallocated from Quest Items to Trade Goods'. Then when you run out of bag space it'd be more like 'All sections full, no slots to reallocate'.
What are these strange minus and plus buttons though? They're for manual slot reallocation. I've shown that in the bottom too, where I reaollcated a slot from Quest Items to consumables. So the player can manually setup their allocations for the sections of items they have however they like. Then that'll be saved and that'll always be the allocation for that section.
Oh and, ala EngInv, make ammo/quiver emties seperate from "normal" empties.
Another way to reduce the wasted space is with allowing more than one category to a row, sort of like cells in a table. (This is how EngInventory does it, btw; it gives you a window with 9 (I think?) configurable cells, three to a row. The user configures what cells show what categories)
I suppose, though, wasted space is one of the downsides of a sorted inventory system. Some people won't like it and prefer a normal all-in-one or even the WoW standard bag interface.
I'm thinking something along the lines of (and please excuse the crappiness) ...
http://mastaile.mine.nu/ColouredBags.jpg
What we might also have is a little icon at the top left distinguishing the 'type' of bag by using a major item of that class and we could have a little [x] at the top right of the bag for closing that category.
I feel like we've got some good ideas flowing. But I'm starting to realize, since the inventory will be sorted, what's the point in showing all the items at once? Kinda along the lines of AdvancedBags, now we've just got better bags, we know where to look for our stuff. So why not make it like a tabbed interface? It's awesome in Firefox and Gaim, why not my inventory? MS Paint, away!
OK, So, The important things I always care about belong on the frame at all times: Empty Slots, a total count like was suggested above. Then I have Ammo in Ammo slots. This can show the total count of ammo; although I'm starting to think this might be problematic, ammo bags can hold multiple types of ammo, not sure how I'd deal with that exactly, perhaps the ammo display can grow in that sort of situation. The red border around the next ammo slot is to indicate ammo that's not in an ammo bag. I'm not sure this is really needed, but there'd be no other way to tell if it wasn't sorted differently. The last slot is the number of empty Ammo slots. The ammo slots can be replaced with Soul Shard slots; can warlocks use guns? Never played one, but I pretty sure they can't.
Ok, so then you got your tabs showing the names of all the different groups with the current selected group highlighted. OK, so maybe you don't want to hide everything all the time. That's fine with me; then we can just undock the tab, and place it in it's own floating window.
... And... that's my latest idea. Woo?
http://mastaile.mine.nu/TabBags.jpg
Basically, each of the buttons would have a major item from the bag, by clicking them you open that category. The numbered one is a custom bag, you can add as many custom bags as you want, basically it's a blank icon with a fontstring that has the number of the custom entry.
I can hardly wait for this, I love EngInv but damn it's bulky, a nice streamlined, yet sorted bag interface would make me sooooo happy ^^
Like for instance shards, its nice to see how many i have in my inventory. but a single shard icon with a count will do.
I like everything about this as long as i can... put multiple categories in one tab.
And change tabs and categories around. Easely.
Except the fact that it tries to use "pairs" as a table, straight off like "pairs = {}" (!!), I actually love it (after doing a search and replace on pairs). It doesn't seem to use very much resources, 311KiB according to warmup, despite keeping track of two chars inventory including their banks.
Nice sorting options, search function and so forth. What it needs though is to be more... "bag-ish"
Maybe it can be of some use for any of you here though-
I'd like a cross between Advanced Bags Plus and Sanity inventory. That is, ABPs filtering and SIs interface but more compressed, and the cross-character functionality. Integrated with KC_Items perhaps, to save space?