System Advanced Item Indexing

tooltiperror

Super Moderator
Reaction score
231
>till working the items systems i see. you planning on making some special map with those? what items are in pudge wars anyways? never bothered to play that map.
I think this thread is for discussion of this system, not a chatroom to talk with king about the map he works on.
 

SanKakU

Member
Reaction score
21
well, he made item system in the past, which was useful.

but i found the use of it to be somewhat inconvenient, so i made up something else with the help of vexorian. now he made up this and i didn't understand the old code, and wasn't sure if i tried to read this code i would understand it or not.

i figure he helps his position if he can give us some clues about what he is trying to do with the new system.

look, all i'm saying is it's a waste of time to examine the scrpit unless i got some hard core evidence that it would be used in a map. i'm just really dubious right now that it's a good system. you posted it yourself, "Very cool, it's like giving AIDS to items."

by posting that, you share with me the idea that i should just stay out of this thread altogether. i suppose i missed the hint.

personally what i'd rather see is some kind of super light indexing for units, rather than a system that works just fine already made by vexorian. now if kingkingyyk3 wants to dabble with items, i just feel it's a huge waste of time. if you don't believe me...try examining this resource closely.

http://www.hiveworkshop.com/forums/spells-569/vjass-system-custominventory-159130/

i know kingkingyyk3 isn't doing anything quite as dramatic(or foolish) as that, but still, i think he's kind of heading in that direction at the moment, even if slowly.
 

tooltiperror

Super Moderator
Reaction score
231
>by posting that, you share with me the idea that i should just stay out of this thread altogether. i suppose i missed the hint.
I posted that April...

You clearly do not see the use of this system, or how it is used. Can you please reply what you think this system does, and how it is to be used? Maybe if I see how you're thinking I can help.

>now if kingkingyyk3 wants to dabble with items, i just feel it's a huge waste of time. if you don't believe me...try examining this resource closely.
What are you talking about?
 

Nestharus

o-o
Reaction score
84
i figure he helps his position if he can give us some clues about what he is trying to do with the new system.

He just wanted to do item indexing. It's something a lot of programmers have tried to do, and many have failed =P.

He discovered that item events fire whenever they go on to a unit =), hence how this one got to be so great ^)^.

Anyways, as I've said before, being able to index handles makes it so that you don't have to do this nonsense-
[ljass]call SaveInteger(table, GetHandleId(handle), 0, value)[/ljass]

And it allows you to easily create structs for the thingies w/o worrying about instancing...

And it allows you to do stuff when the thing is created/destroyed. For example, if a custom item had a custom spell effect on it, you could attach it to the item when created and destroy it when the item is destroyed =P.

Anyways, the stuff with item indexing is the exact same deal as the stuff with unit indexing.

And you can't get much lighter than AIDS for unit indexing...

To give you an idea, here is the list of the main indexing systems from heaviest to lightest. AIDS isn't in the middle, but is rather extremely close to UnitIndexer.

AutoIndex
AIDS
UnitIndexer

It is so close that it wasn't even worth changing the standards over to UnitIndexer at TH.

You can't get much lighter than the AIDS library.

This ItemIndexer is the same way... previous item indexers have been graveyarded because they were too heavy (didn't last very long). This item indexer is about as lightweight as you can go.
 

emjlr3

Change can be a good thing
Reaction score
395
I actually prefer [ljass]call SaveInteger(table, GetHandleId(handle), 0, value)[/ljass] to one of these full blown systems. Although I am probably in the minority, I prefer simple, scaled as needed to all encompassing bloat.
 

Bribe

vJass errors are legion
Reaction score
67
The SaveInteger business is not good as it doesn't catch when the unit leaves scope, leaving that data in the hashtable and taking up plenty of memory over time.
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
Yeah. :D
Item removal detection is useful.
Anyone love the AIDS textmacro will love this too. :p
 

Romek

Super Moderator
Reaction score
963
> I actually prefer call SaveInteger(table, GetHandleId(handle), 0, value) to one of these full blown systems. Although I am probably in the minority, I prefer simple, scaled as needed to all encompassing bloat.
I agree with you in the case of this system. I don't find myself messing around with items enough to actually make it worth using this system. Items are picked up and used as normal with the WC3 engine, and if (in the very rare event) I do actually need to trigger something relating to an item, I'll just use a hashtable and clear it once I've finished.

I'm sure this has it's uses somewhere though. :p
 

luorax

Invasion in Duskwood
Reaction score
67
It's really usefull if you're creating a huge ORPG system with a custom inventory system. You can modify each item's attributes, you can handle enchants, and so on. I found it useful.
 

Jesus4Lyf

Good Idea™
Reaction score
397
It's really usefull if you're creating a huge ORPG system with a custom inventory system. You can modify each item's attributes, you can handle enchants, and so on. I found it useful.
I totally agree. You cross this with Status or something to give your unit buffs, and you're in business. Can have items levelling up and gaining stats or whatever you please. :)

I wish Azlier was here to comment on what difficulties he came across which made him quit item indexing, though. I never looked into it myself, but I remember there was some specific stuff... makes me worry for stability.

There's reasons I never used something like this in my maps, though, and that is that often custom item systems are the way to go. How to manage things like data attached to items you merge or something gets theoretically tricky. Or if you use an inventory paging system which removes the actual item... which is, of course, probably not that uncommon for every instance something like this is useful. I'd almost be inclined to make an item virtualisation kind of system. I dunno, just some random thoughts! Once you go down that path it's very difficult to write a general system. Not saying this is bad as is, at all! :)
 

tooltiperror

Super Moderator
Reaction score
231
I would say removing items instead of moving them out of sight for a backpack system would be an error on that system's part, not the indexer.
 

tooltiperror

Super Moderator
Reaction score
231
This is supremely useful.

It seems to be implemented well, and I use it in my map for just about everything related to items. Jesus4Lyf put it well, "You cross this with Status or something to give your unit buffs, and you're in business".

Approved.
 

codart

New Member
Reaction score
0
Hey, i found a bug with UID, let check the map http://dl.dropbox.com/u/14083092/Maper/Buggy.w3x
JASS:
scope test
    
    private struct tester
        
        private static method AII_filter takes item i returns boolean
            return GetItemTypeId(i) == 'I001'
        endmethod
        
        
        private method AII_onMove takes integer lastPosition returns nothing
            call BJDebugMsg(GetItemName( GetUnitItemInSlot(GetItemOwner(this.item),lastPosition)))
        endmethod
        
        //On init stuff
        private static method createItem takes nothing returns nothing
            call CreateItemEx('I001',0.0,0.0)
            call CreateItemEx('I000',0.0,0.0)
        endmethod
        private static method onInit takes nothing returns nothing
            call TimerStart(CreateTimer(),0.01,false,function thistype.createItem)
        endmethod
        
        implement AII
        implement ItemEvents
    endstruct

endscope


it say "(null)" when i swap item 'I001' with 'I000'. why? @@
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top