| 02-14-2011, 02:09 AM | #1 |
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 |
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 |
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. |
| 06-29-2011, 02:58 AM | #4 |
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 |
| 06-29-2011, 11:40 AM | #5 |
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: JASS:private static method dorecycle takes nothing returns nothing local unit u =.recycle[0] local integer l local integer r local integer p local real lt call IssueImmediateOrder(u,"stop") call UnitRemoveAbility(u,GetUnitUserData(u)) call SetUnitUserData(u,0) call SetUnitFlyHeight(u,0,0) call PauseUnit(u,false) ... 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: JASS:private static method removeAbility takes nothing returns boolean local unit u=GetTriggerUnit() if(GetUnitUserData(u)!=0) then call UnitRemoveAbility(u,GetUnitUserData(u)) call SetUnitUserData(u,0) //call PauseUnit(u,true) Delete this line. endif //This is necessary, picture a value for recycle delay that's higher than the casting time, //for example if the spell does dps, if you leave the dummy caster with the ability and it //is owned by an AI player it will start casting the ability on player units, so it is // a good idea to pause it... set u=null return true endmethod |
| 06-30-2011, 11:05 AM | #6 |
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. |
