I'm guessing you're using ABC?
Best solution would be to use the game cache to attach them.
call StoreInteger(cache, I2S(H2I(timer)), I2S(i), struct)
cache is a gamecache
timer is the timer your attaching it to
i is an index, unique for each struct
struct is your struct, obviously
These are a few things the normal WE will crash at:
Crashes because of forgotten endif's and endloop's
When saving a map, with unended loops or if statements, the World Editor (WE) will crash.
Invalid integers cause crashes when saving
Invalid integer values, for example rawcodes, can cause a...
You don't need to both doing that with effects do you? I thought you only needed to do the null path thing when you're creating units/trackables/etc. Otherwise soulreaping's idea should work fine.
It is mostly safe to create units using the null path thing. It may cause desyncs when the unit...
Not sure if I quite get the gist of your problem, but this might solve it:
call UnitMakeAbilityPermanent( <your unit>, true, <ability id> )
Replace the bits in <>. That will make an ability remain on the hero when he morphs.
Edit: Okay, I think I understand your problem fully now and no, there...
Some models were changed from RoC to TFT. Seige Tank and some others. If you have custom versions of those it can cause your map to change even though the models were included with a recent RoC patch.
You can do this, but it's not worth it.
function Handle2Timer takes handle h returns timer t
return t
endfunction
Would convert it I think. To check what type it is, convert it and see if a native that normally takes that type has a valid return.
Maybe one of your variables doesn't exist. Does it give you that error during vJass or during pJass processing?
Can't get to wc3campaigns right now for some reason, but I'm going to say probably if your asking the question at all. If your doing the loop FirstOfGroup() endloop thing then yes.
global variables must have a udg_ prefix or you have to use a local variable like:
local trackable array t
set t[1] = CreateTrackable()
Unit rawcodes should have '' around them.
You can't pass variables like this:
call TriggerAddAction(gg_trg_hover, function Makebig(GetTriggeringTrackable())...
local unit tu
loop
set tu = FirstOfGroup(g)
exitwhen tu == null
call GroupRemoveUnit(g, tu)
//Do stuff to tu
endloop
But ForGroup is probably better if you're not passing any variables.
loop
exitwhen number of units in units within range of VarLastCreatedUnit > 0
wait(0.5)
endloop
Would do it directly. A much better method would to create a timer and do the same check every so often. Or if it's stationary, you could also use the Unit in Range event. I recomend using atimer.