Timed Item Life

Wratox1

Member
Reaction score
22
i dont know if its the best solution but it is the only one that came to my mind:
Trigger:
  • init
    • Events
      • Time - Elapsed game time is 0.01 seconds
    • Conditions
    • Actions
      • Set integer = 0

-this can be done at map initialization
Trigger:
  • drop from creep
    • Events
      • Unit - A unit owned by Neutral Hostile Dies
    • Conditions
    • Actions
      • Wait 0.10 seconds {the item need some time to spawn there}
      • Item - Pick every item in (Region centered at (Position of (Triggering unit)) with size (250.00, 250.00)) and do (Actions)
        • Loop - Actions
          • Item - Set the custom value of (Picked item) to 0
          • Set integer = (integer + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • integer Equal to 29 {set this to (item variable array size) -1}
            • Then - Actions
              • Set integer = 1
            • Else - Actions
          • Set item[integer] = (Picked item)

-integer is integer variable
-item is item variable with array 30 (i assume that there wont be more than 30 items on ground in the same time, u can also increase it if u want - but then u need to change when should be "integer" set to 1
Trigger:
  • pick
    • Events
      • Unit - A unit Acquires an item
    • Conditions
    • Actions
      • For each (Integer A) from 1 to integer, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Item being manipulated) Equal to item[(Integer A)]
            • Then - Actions
              • Item - Set the custom value of item[(Integer A)] to 16 {u need to change this to (desired time after that item will be removed) +1}
            • Else - Actions

-this prevents picked items from being removed
Trigger:
  • hero drop
    • Events
      • Unit - A unit Loses an item
    • Conditions
    • Actions
      • Item - Set the custom value of (Item being manipulated) to 0
      • Set integer = (integer + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • integer Equal to 29 {and again set this to (item variable array size) -1}
        • Then - Actions
          • Set integer = 1
        • Else - Actions
      • Set item[integer] = (Item being manipulated)

-if your items cannot be dropped or removed from inventory to ground then u dont need this
Trigger:
  • remove from map
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to integer, do (Actions)
        • Loop - Actions
          • Item - Set the custom value of item[(Integer A)] to ((Custom value of item[(Integer A)]) + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Custom value of item[(Integer A)]) Equal to 15 {desired time after that unused items will disappear}
            • Then - Actions
              • Item - Remove item[(Integer A)]
            • Else - Actions

-and this one removes idle items from map - i set the time to 15 seconds coz i didnt wanted to wait 30 :p , i assume that u will be able to change this by yourself

i think this doesnt work because its setting the integer to 0 every 0.01 seconds...
 

kaboo

New Member
Reaction score
45
I'll give it a try. Thanks so much!

Edit: Tried and failed : /

Any other ideas?

seems, like youre right, ive tested it a bit more and found the problem, it was that when the item was stored to variable, then picked and droped it was stored to another, so its custom value was increasing faster, that means it was removed sooner, i will post the new triggers and demo map when i solve it,
btw - have you found any other problem or it was the above mentioned?

ok it can be solved with this:
Trigger:
  • hero drop
    • Events
      • Unit - A unit Loses an item
    • Conditions
    • Actions
      • For each (Integer A) from 1 to integer, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • item[(Integer A)] Equal to (Item being manipulated)
            • Then - Actions
              • Item - Set the custom value of (Item being manipulated) to 0
              • Skip remaining actions
            • Else - Actions
      • Item - Set the custom value of (Item being manipulated) to 0
      • Set integer = (integer + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • integer Equal to 29
        • Then - Actions
          • Set integer = 1
        • Else - Actions
      • Set item[integer] = (Item being manipulated)
      • Game - Display to (All players) the text: ((Name of item[integer]) + ( - int: + (String(integer))))

i changed only this one, all others were untouched

i think this doesnt work because its setting the integer to 0 every 0.01 seconds...

it is time elapsed not periodic event
 

Lghtofthmoon

New Member
Reaction score
0
I found a solution that worked. For all others who read this thread later, here it is:
Trigger:
  • Remove Items
    • Events
      • Time - Every 10.00 seconds of game time
    • Conditions
    • Actions
      • Item - Pick every item in (Playable map area) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Custom value of (Picked item)) Greater than or equal to 4
            • Then - Actions
              • Item - Remove (Picked item)
            • Else - Actions
              • Item - Set the custom value of (Picked item) to ((Custom value of (Picked item)) + 1)


Followed by...

Trigger:
  • Acquire Item
    • Events
      • Unit - A unit Acquires an item
    • Conditions
    • Actions
      • Item - Set the custom value of (Item being manipulated) to 0


Hope this helps. Thanks for looking in to it, everyone!:D
 
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