Fatal Error During Runtime

Tyrulan

Ultra Cool Member
Reaction score
37
Hey guys, somewhat new to Jass so I hope you can be as helpful as possible while still being polite. Here is my code:

JASS:

function goFish takes unit castingUnit returns integer
    local integer int = 0
    local integer counter = 1
    local integer abilityDuration = 15 - 1
    local integer catchChance = 20 - (GetUnitAbilityLevel (castingUnit, 'A001') * 5)
    loop
        exitwhen counter > abilityDuration
        call TriggerSleepAction(1.00)
        set int = GetRandomInt (0, catchChance)           
        if (isCaughtFish(int) ) then
            call floatText ("You Caught A Fish!!", castingUnit, 0.00, 150.00, 0.00)
            return counter
        endif
        set counter = counter + 1
    endloop
    return 0
endfunction

function Trig_Fish_Get_Actions takes nothing returns nothing    
    local unit castingUnit = udg_Caster
    local integer counter = goFish(castingUnit)
    if (counter  == 00) then
        call floatText ( "No Fish Were Caught", castingUnit, 150.00, 0.00, 0.00 )      
    endif
    call TriggerSleepAction(0.50)
    call floatText ( "Loops: " + I2S(counter), castingUnit, 100.00, 100.00, 0.00 )      
endfunction


It works the first run through, but if the fish is caught before the abilityDuration (15 seconds) and the spell is recasted - the game crashes into fatal error. I'm assuming it is because I need to clear variables but I could be wrong. How would I clear the local variables here?

Thanks in advance.
 

jig7c

Stop reading me...-statement
Reaction score
123
set castingUnit = null

im also new to JASS, so i could be wrong...
 

Tyrulan

Ultra Cool Member
Reaction score
37
Thanks for the quick reply, I have just done that in my code before you mentioned it. :) Is it possible to do the same for the integer variables as well? Are they not still taking up memory?

This however has not fixed the error. :( Any suggestions?
 

jig7c

Stop reading me...-statement
Reaction score
123
i think when you recast the spell, the abilityDuration is not being reset to 15 again...
 

GameOver[GR]

New Member
Reaction score
11
I think that you should check this :

JASS:
local integer catchChance = 20 - (GetUnitAbilityLevel (castingUnit, 'A001') * 5)


if the chance can be negative then this may crash the game

Everything else seems find :banghead:
JASS:
local integer catchChance = 20 - 5 * 5)

That means 20 - 25 whitch means the chance is -5
If the level of the ability are not higher than 4 then this i told you is probably wrong.
 

Midna

New Member
Reaction score
1
i tested this and it worked. Thanks mate :thup: , if you still have this problem then it should be somewhere else.
 

Tyrulan

Ultra Cool Member
Reaction score
37
I'm fairly certain that the game is not crashing on the catchChance line as when I test it the spell is only level 1. Therefore 20 - 5 = 15.

And Midna I'm confused by your post. What do you mean?

Also how would I remove leaks? Since I posted this I have set unit variables to null but this doesn't fix the problem.

The only thing I can think of is the loop is still running even after it hits the return counter when you catch a fish. I could add a 15/10/5 second cooldown on the spell but that defeats the purpose.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top