HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

xcecast errors?

02-14-2011, 02:09 AM#1
illegalpie
Im using xe by Vexorian, well, spells I have do, and for some reason, a spell i have, Water Spirits (hiveworkshop.com) and Arcane Pack (hiveworkshop.com) collide, and when I cast a lot of them, I get this Double free of type: xecast and water spirits no longer shows the models, Note that the spell worked before, and now its not, I have his dummy caster system, and all of the spells use it, but would that cause an error with xecast
02-14-2011, 02:50 AM#2
Vexorian
What did you do right before they stopped working?

What do you mean by "collide"? just saying the site from which you got something is not very helpful, try making the map available or a version of it that only has the flawed spells and xe so that we could test the actual issue and hopefully find the reason.
02-14-2011, 09:27 PM#3
illegalpie
Should I upload the spells? The spells still function, except for water spirits, which for some reason, probably about 1/5th of the time works, and the rest it doesnt, it just doesnt show up, I don't even know if it functions, I just changed the changable things, It works in the testmap, but in my map, it doesnt work usually.

Okay, I figured it out, partially, it only has to do with this spell pack - http://www.hiveworkshop.com/forums/s...1-24-a-126717/

Consisting of four spells, I get an error "Double free of type: xecast."

Also
http://www.hiveworkshop.com/forums/s...1-01-a-157890/
this spell, does not work always, sometimes it works, like once in three times, I did not change anything outside of the configurables, and all I changed in that is Damage, And Number of orbs.
I do not get the error with any other spells and the other (9ish) spells that use these systems do not give me the error. And the 4 that give me the error are from the same pack, whereas the others are not. Water Spirits is one of the ones thats not.

Attached are the maps.
Attached Files
File type: w3xArcane Mage 2.0.w3x (154.5 KB)
File type: w3xWater Spirits v1.01.w3x (69.0 KB)
06-29-2011, 02:58 AM#4
vuongkkk
I really dont know why my spell didn't work then i made a very simple spell outside my map.

Spell informations:
Functional spell: a spell like Blizzard but not need time to channel
Dummy spell : Blizzard
Trigger spell : Channel
Using xecast : .castOnPoint() and have .recycledelay
Problem : only done in the first cast, from the second, it do NOT work ?!
And my test map is here
Attached Files
File type: w3xxecast_channelSpell.w3x (37.1 KB)
06-29-2011, 11:40 AM#5
Anitarf
I've done some testing and I have to say this is a really really weird bug. It requires a combination of removing a channeling ability from a unit while the unit is still channeling it and then having a trigger that runs when that unit stops casting a spell and pausing the unit in that trigger. The result is that the unit becomes permanently paused. If you unpause it, it will no longer count as paused (which is why it took me so long to figure all this out, otherwise checking whether the dummy caster is paused was one of the first things I tried), but it will still act as a paused unit (it won't do anything and its command card will be blacked out).

If the unit stops channeling the spell because the spell finished or the unit was given another order, the bug will not occur. It only happens if the unit stops channeling the spell as a result of the ability being removed. Also, pausing a unit immediately after removing the ability from it won't cause the bug, you must pause it in a trigger that runs when the unit stops casting the spell.

How to avoid this bug with xecast? You must ensure that the dummy caster will have already stopped casting the spell before the ability is removed so that removing the ability won't run the endcast trigger.

One method is to always make your recycle delay longer than the duration of the spell. In my tests, just making it the same duration as the spell was not enough, it had to be at least 0.1 seconds longer, 0.05 seconds longer was also not enough.

Another way is to edit xecast so that it always give a stop order the dummy caster before removing the ability. This requires an edit to the dorecycle method:
Expand JASS:

Yet another way is to not pause the dummy caster when it stops casting the ability, but instead remove the ability. This requires an edit to the removeAbility method:
Expand JASS:
I'm not sure if there are any bad side effects with the last solution because the name of the method suggests that this was already how the method was supposed to work but then Vex decided to pause the unit instead of removing the ability.
06-30-2011, 11:05 AM#6
vuongkkk
I intended to use delay to manage the numbers of waves of Blizzard. But it is unnormalized then that method made a bug.
To resolve this bug, create one more level with a different number of waves is the best method

Note for everyone who is using dummy to cast a channel spell
Have enough delay time before dummy finish channel skill
And
Have enough cooldown time too. If not and your spell cooldown is very fast then your map will have a huge number of dummy
Of cause, there are my experiences


Thanks, Anitarf.