This item stacking system isnt working =(

a j j bones

New Member
Reaction score
3
I got this system from Mr.Zero but its not working, it works off the level of the item and that is how much it should stack, but there not stacking.

JASS:
function ISS_Set_Charges takes nothing returns nothing
    local integer i = 0
    local item a = GetManipulatedItem()
    local unit b = GetManipulatingUnit()
    if (GetItemCharges(a)>=1) then
        loop
            exitwhen i>5
            if (((UnitItemInSlot(b,i)!=a)and(GetItemTypeId(UnitItemInSlot(b,i))==GetItemTypeId(a)))and(GetItemCharges(UnitItemInSlot(b,i))<GetItemLevel(a))) then
                if ((GetItemCharges(UnitItemInSlot(b,i))+GetItemCharges(a))<=GetItemLevel(a)) then
                    call SetItemCharges(UnitItemInSlot(b,i),(GetItemCharges(UnitItemInSlot(b,i))+GetItemCharges(a)))
                    call RemoveItem(a)
                    set i = 5
                else
                    call SetItemCharges(a, ((GetItemCharges(UnitItemInSlot(b, i)) + GetItemCharges(a))) - GetItemLevel(a))
                    call SetItemCharges(UnitItemInSlot(b, i), GetItemLevel(a))
                    call UnitAddItem(b, a)
                    set i = 5
                endif
            endif
            set i = i + 1
        endloop
    endif
    set a = null
    set b = null
    return
endfunction

function ISS_Remove_Charges takes nothing returns nothing
    local integer i
    local integer b = GetIssuedOrderId()
    local unit c = GetOrderedUnit()
    local location d = GetUnitLoc(c)
    local location e = Location(GetLocationX(d) + 80.00 * Cos(GetUnitFacing(c) * (3.14159/180.0)),GetLocationY(d) + 80.00 * Sin(GetUnitFacing(c) * (3.14159/180.0)))
    local item f = GetOrderTargetItem()
    local item g = UnitItemInSlot(c, (b - 852002))
    if ((((b >= 852002) and (b <= 852007)) and (GetItemCharges(f) != 0) and (g != null))) then
        if (f == g) then
            set g = CreateItem(GetItemTypeId(f), GetLocationX(e), GetLocationY(e))
            set i = GetItemCharges(g)
            call RemoveItem(g)
            if (GetItemCharges(f) > i) then
                call SetItemCharges(f, (GetItemCharges(f) - i))
                set g = CreateItem(GetItemTypeId(f), GetLocationX(e), GetLocationY(e))
                call SetItemCharges(g, i)
                set i = 0
                loop
                    exitwhen i > 5
                    if ( UnitItemInSlot(c, i) == null) then
                        call DisableTrigger(gg_trg_Item_Stacking_System)
                        call UnitAddItem(c, g)
                        call EnableTrigger(gg_trg_Item_Stacking_System)
                        set i = 5
                    endif
                    set i = i + 1
                endloop
            else
                call UnitRemoveItem(c, f)
                call SetItemPosition(f, GetLocationX(e), GetLocationY(e))
            endif
        else
            if (((GetItemTypeId(f) == GetItemTypeId(g)) and (f != g)) and (GetItemCharges(f) < GetItemLevel(f))) then
                if ((GetItemCharges(f) + GetItemCharges(g)) <= GetItemLevel(f)) then
                    call SetItemCharges(f, (GetItemCharges(f) + GetItemCharges(g)))
                    call RemoveItem(g)
                else
                    call SetItemCharges(g, ((GetItemCharges(f) + GetItemCharges(g))) - GetItemLevel(f))
                    call SetItemCharges(f, GetItemLevel(f))
                endif
            endif
        endif
    endif
    set c = null
    set f = null
    set g = null
    call RemoveLocation(d)
    call RemoveLocation(e)
    return
endfunction

//===========================================================================
function InitTrig_Item_Stacking_System takes nothing returns nothing
    local integer i = 0
    local trigger ISS_Remove_Charges_Trigger = CreateTrigger()
    set gg_trg_Item_Stacking_System = CreateTrigger()
    loop
        exitwhen i == bj_MAX_PLAYER_SLOTS
        call TriggerRegisterPlayerUnitEvent(gg_trg_Item_Stacking_System, Player(i), EVENT_PLAYER_UNIT_PICKUP_ITEM, null)
        call TriggerRegisterPlayerUnitEvent(ISS_Remove_Charges_Trigger, Player(i), EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, null)
        set i = i + 1
    endloop
    call TriggerAddAction(gg_trg_Item_Stacking_System, function ISS_Set_Charges)
    call TriggerAddAction(ISS_Remove_Charges_Trigger, function ISS_Remove_Charges)
    set ISS_Remove_Charges_Trigger = null
endfunction
 

PurgeandFire

zxcvmkgdfg
Reaction score
508
Did you use those functions? Where is your trigger?

Just so you know, it doesn't automatically make items stack. You have to use those custom-defined functions yourself to make it stack. Those are just to simplify the work used to make them stack, it doesn't do all of the work for you. I'm pretty sure of myself. :p

If you need help, you can post here or ask Mr. Zero since he is the creator. :)
 

a j j bones

New Member
Reaction score
3
it says in his system thread the only work you have to do is change the level of he item to the stacking limit and thats it, and mr zero doesnt go on these forums anymore
 

SFilip

Gone but not forgotten
Reaction score
634
> but there not stacking
Doesn't work at all or doesn't stack correctly?

Anyway you're always welcome to use my stacking system (one topic above Mr. Zero's) :)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top