• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

[vJass] (System) CustomInventory

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
By far the biggest inventory system for Warcraft 3.
It's designed to have optional features, like FullScreenInventory-UI.

With a little bit of modification you can use this Inventory System in the normal Warcraft 3 Inventory too.

It is written in vJASS and has the following features:
- 12 Slot Equipment
- MPI
- Very flexible
- Easy to add bonuses to items
- Item Stacking
- Item Forging
- Item Sets (With bonuses)
- Inventory fixes warcraft 3 bugs (Double pickup bug)
- Fast
- Gives the ability to add your own areas with a little bit of code

A small note on the classes:

##############################################################################
# USER INTERFACE - CUSTOM WINDOW
##############################################################################
---------------
CWDestructable
---------------
It's an object that has an destructable for a local player.
(Such as icons, borders and more)

---------------
CWTrackable
---------------
This is basically an object that triggers player events for hovering the icons (CWDestructable).
Whenever an event occurs, it fires an action to the CustomWindow

---------------
CustomWindow
---------------
A collection of CWTrackable and CWDestructable. Every destructable will have an trackable object.
So whenever you hover over or click a trackable, this will be fired.
You will use this object to create hooks to the inventory system.

##############################################################################
# CUSTOM WINDOW - HOOK AND EXTENDING
##############################################################################

---------------
CIAll
---------------
This is a container object of items. It has conditions for pickup and drop and is the base
class for any container, like Slots, Potions, Equipment or even spell slots that you could create!
It has a variety of methods like adding, removing and checks and throws errors.

---------------
CIActions
---------------
This is a library which only use is to find out what the user wants to do. It supports up to 5
different steps which can be done in a row so if you need to build up something complicated here you go.
This action decides when to move, drop, pick and destroy items. It's bound to CIWindow and uses its
events to trigger / delegate events to the CISlots/CIEquips/CIPotions objects.

---------------
CIContent
---------------
This is a little help class for the CIActions object which puts a wrapper around the Equipment,
Potions and Slots. It will also update the camera.

---------------
CIWindow
---------------
This is the hook between CustomWindow, CIActions and the CustomInventory. It also provides
fake units to provide the Interface Functionality and delegates events to CIActions.

---------------
CISlots / CIEquips / CIPotions
---------------
The containers you see (Top left, top right and bottom left) are basically these objects.
They have special / unique conditions for pickup / drop and handle when to add or remove bonuses from the hero.

##############################################################################
# CUSTOM INVENTORY - CORE
##############################################################################

---------------
CIForging
---------------
This module forges items. You can combine any items and merge them to a bigger item. This will
always happen when your inventory updates.

---------------
CIStacking
---------------
You like items that can stack in your Inventory? Well this module is for you!
Create stackable items and make a maximum conditions. Item stacking is automatic, whenever
inventory updates.

---------------
CISet
---------------
Don't we all love this thing from World of Warcraft? Collecting items of a special set and
then get some bonus stuff once we have all of them. If you are cool, use this feature. It
even supports SET STACKING!

---------------
CIAttachment
---------------
Not done yet.

---------------
CIBonus
---------------
This is the hook between items and the unit state modifier library. You can use this module
to add and remove bonuses to the hero on the fly whenever needed.

---------------
CIError
---------------
Throw errors to the user whenever something bad happens.

---------------
CIEventHandler
---------------
Like every other Inventory system, we need some kind of hook for pickup/drop actions to
connect them with our CustomInventory. This will trigger the CustomInventory events.

---------------
CIEvents
---------------
Name may not be completely self-speaking, but this actually triggers the events on the item.
But only when the unit really has the item. (Safety layer)

---------------
CIItemDrop
---------------
This will allow pickup/drop actions of the items WITHOUT triggering the inventory events.
It will be required for many things so this module is a life safer!

---------------
CIItemInfo
---------------
Wouldn't it be cool if items could display what they are in a multiboard. Yes it would.
This module is exactly for that.

---------------
CIItemBoard
---------------
Yes, this is the multiboard which displays all the item statistics. It uses hooks to get
the attached events from the CUstomWindow.

---------------
CIItemProtection
---------------
Every item has states, like locked, owend, equiped and such. This module gives the ability
to change the states and make them available.

---------------
CIItemDest
---------------
Simple module for setting the destructable (icon) for the CustomWindow.

---------------
CIItemSeek
---------------
Module which is build to search and collect information about the inventory.
Find out how many items of which type you have that are not stacked, find out how many duplicated
items you have and even if you have errors in your inventory indexing.

---------------
CIItemSlot
---------------
Small module that adds classes to the items. You can only equip items with the right class
on the right positions.

---------------
CIItemEffect
---------------
This module allows to attach effects to an item wearer. Do whatever you want, but keep in mind
that one item has a maximum of 3 effects.

---------------
CIPowerup
---------------
Not done yet.

---------------
CISetup
---------------
Changes the area around the inventory to be black and create the UI for all players.


---------------
CustomItem
---------------
The item object itself. Will trigger and get triggered from all kind of sources.
Modules are completing the collection of members and methods.

---------------
CustomInventory
---------------
The main object. It forges, stacks, creates sets, triggers events, gets triggered and uses
optional modules to provide the full repository of features to the user.



-Fixed a bug found by Dr. Boom:
Dead units were able to change the inventory and caused bugs.
-Also added a little bit of documentation.


Keywords:
CustomInventory, Inventory, Custom, Anachron, FullScreen, Module, vJass, Stack, Forge, Combine, Set, Powerup, Drop, Equip, Equipment, Equip, System
Contents

CustomInventory - 0.2.2.6 (Map)

Reviews
18:27, 18th Feb 2010 The_Reborn_Devil: Ohsh- That describes pretty much what I'm thinking. My eyes were sore even before I was done reviewing half of the code. The code looks really good and I couldn't find just one little thing that would be...
Antares
While great at the time, this system uses an outdated implementation and has not survived the test of time. Simple
Level 12
Joined
May 21, 2009
Messages
994
Edit: Aww, it still can bug. Fuck it. Will continue trying to fix on tomorrow :/.

The fact that you tried means alot. You can't always fix it the first time. Like the white icon bug, you fixed it. Yes maybe it is a slowly progression but it is the time worth waiting for the bug fixes. Good luck Anachron. May the coding god be with you!
 
Level 14
Joined
Mar 30, 2009
Messages
971
HEY! you fixed the fast pick up bug in version 0.2.0.2!!!

no matter how fast i try to pick the potions up, they dont bug icons, or block dropping/picking. :D

now only bug that remains is the potion repick bug: when you pick up a potion, drop it and try to repick it again, it gives error message: cant pick up (you already have that item). the item wont show up on FSI, but will be in normal inventory.
 
HEY! you fixed the fast pick up bug in version 0.2.0.2!!!

no matter how fast i try to pick the potions up, they dont bug icons, or block dropping/picking. :D

now only bug that remains is the potion repick bug: when you pick up a potion, drop it and try to repick it again, it gives error message: cant pick up (you already have that item). the item wont show up on FSI, but will be in normal inventory.
That is basically the bug that I meant. Will try to fix it tomorrow.
 
Level 1
Joined
Nov 17, 2009
Messages
3
Wowow

WOWOW
Please continue working on this...
Especially I'd change the avatar (Paladin) displayed to a neutral passive unit so he doesn't walk around lol...
Also please work on item sellability soon because that's crucial to for instance an RPG...


:thumbs_up:
 
Please continue working on this...
Sure I will

Especially I'd change the avatar (Paladin) displayed to a neutral passive unit so he doesn't walk around lol...
Its actually a feature that he can still cast spells and such during watching the inventory.
Also please work on item sellability soon because that's crucial to for instance an RPG...
I will, thanks for the feedback.
 
EnounterED please. It's fixed.

Yea I also tried to implement and didn't work... I'm a noob and it's too confusing. Help me Anacharon :)
I will do another ObjectMerger script and then you only need to CnP all the scripts to another map. Maybe I will make a big merged trigger file too.
(So you only have to CnP once)

Anyway, most of the system is already done by itself.

For example the destructable data is created by the ciGenDestructables module written by Ammorth.
 
Remade item pickup. Now shouldn't bug anymore (or at least that often).
As I told, it should be fixed, however, there are some cases in which it might bug.
I don't really know why.
If you try to pickup items as fast as you can instantly after map loading there is a small chance that it will cause the bug.

Maybe its about overloading WC3 action engine.
 
Level 14
Joined
Mar 30, 2009
Messages
971
as i said before, i dont have the fast pickup bug anymore. i only have potion re-pick-up bug. (meaning, that when i try to pick up a potion, i dropped, then i cant)

though maybe you changed something and i will retest when i get home
 
Level 14
Joined
Mar 30, 2009
Messages
971
Sounds good. Also will you add extra modules/functions to this system after bugfixing? With functions I don't mean functions like "function blah blah takes nothing etc". I mean like Merchant and such.


I am thinking about my next module, an attachment system.
More features will come when I get more comments about that it works for all.
Yes, plus fixing the to fast pickup so the system bugs bug and also I start working on the Diablo3 UI for this inventory.
After that I'll make vendors and such.

i think Anachron will do it. :)
 
Level 12
Joined
Feb 11, 2008
Messages
809
Alright this happened 10/10 times when i tested it and i have 2 screen shots to show you the picking up items too fast glitch im experiencing.

The first shows the error i get and that it only happens to potions

The second shows that the clarity pots didnt even go into my inventory once it glitched.

images attached
 

Attachments

  • Error.JPG
    Error.JPG
    173.2 KB · Views: 69
  • Error1.JPG
    Error1.JPG
    172.3 KB · Views: 65
Top