| 04-03-2009, 01:24 PM | #1 |
JASS:library BackpackSys globals // vvvv private constant integer BackpackId = 'A000' //Change this to the ID of the backpack item in your map. endglobals private struct Data //! runtextmacro PUI() integer array ItemType[6] integer array Charges[6] integer array UserData[6] static method Create takes unit u returns Data local Data d = Data.create() local integer i = 0 local item it local integer id loop set it = UnitItemInSlot(u, i) set id = GetItemTypeId(it) if GetSpellAbilityId() == BackpackId then set d.ItemType[i] = id set d.Charges[i] = GetItemCharges(it) set d.UserData[i] = GetItemUserData(it) call RemoveItem(it) else set d.ItemType[i] = 0 set d.Charges[i] = 0 set d.UserData[i] = 0 endif set i = i + 1 exitwhen i > 5 endloop set it = null return d endmethod endstruct function ActivateBackpack takes unit target returns nothing local Data d1 local Data d2 = Data[target] local integer i = 0 local item it if d2 == 0 then set Data[target] = d2 endif if GetSpellAbilityId() == BackpackId then set d1 = Data.Create(target) if d2 != 0 then loop if d2.ItemType[i] != 0 then set it = UnitAddItemById(target, d2.ItemType[i]) call SetItemCharges(it, d2.Charges[i]) call SetItemUserData(it, d2.UserData[i]) endif set i = i + 1 exitwhen i > 5 endloop endif call SetUnitUserData(target, d1) endif set it = null endfunction endlibrary This code gave me syntax error with PUI GetUnitIndex library? |
| 04-03-2009, 03:03 PM | #2 | |
Quote:
me too JASS:library BackpackSys requires PUI this way it didnt |
| 04-03-2009, 03:12 PM | #3 |
JASS:library BackpackSys requires PUI globals // vvvv private constant integer BackpackId = 'A000' //Change this to the ID of the backpack item in your map. endglobals private struct Data //! runtextmacro PUI() integer array ItemType[6] integer array Charges[6] integer array UserData[6] static method Create takes unit u returns Data local Data d = Data.create() local integer i = 0 local item it local integer id set d = Data[u] loop set it = UnitItemInSlot(u, i) set id = GetItemTypeId(it) if GetSpellAbilityId() == BackpackId then set d.ItemType[i] = id set d.Charges[i] = GetItemCharges(it) set d.UserData[i] = GetItemUserData(it) call RemoveItem(it) else set d.ItemType[i] = 0 set d.Charges[i] = 0 set d.UserData[i] = 0 endif set i = i + 1 exitwhen i > 5 endloop set it = null return d endmethod endstruct function ActivateBackpack takes unit target returns nothing local Data d1 local Data d2 = Data[target] local integer i = 0 local item it if d2 == 0 then set Data[target] = d2 set d2 = Data.Create(target) endif if GetSpellAbilityId() == BackpackId then set d1 = Data.Create(target) if d2 != 0 then loop if d2.ItemType[i] != 0 then set it = UnitAddItemById(target, d2.ItemType[i]) call SetItemCharges(it, d2.Charges[i]) call SetItemUserData(it, d2.UserData[i]) endif set i = i + 1 exitwhen i > 5 endloop endif // call SetUnitUserData(target, d1) endif set it = null endfunction endlibrary Right now i am trying to replace SetUnitUserData and GetUnitUserData with PUI, can anyone tell me what is wrong? |
| 04-03-2009, 06:54 PM | #4 |
To replace UnitData: Frist you create a array in the globals section, for each Data you wanna use eg: JASS:globals // vvvv private constant integer BackpackId = 'A000' //Change this to the ID of the backpack item in your map. private integer array MyData endglobals and then you attach your data to it like that: set MyData[GetUnitIndex(target)] = d1 instead of call SetUnitUserData(target, d1) and get it like that: MyData[GetUnitIndex(target)] instead of GetUnitUserData(target) but what u mean with "can anyone tell me what is wrong?" |
| 04-04-2009, 01:16 AM | #5 |
solved |
