An error which I don't understand

GoGo-Boy

You can change this now in User CP
Reaction score
40
When I use this
JASS:
local integer lvl = GetUnitLevel(Caster) // caster is a local unit variable I declared before


The Syntax check displays this error for the line "Cannot convert null to real"
I don't know what this "null" means.
 

GoGo-Boy

You can change this now in User CP
Reaction score
40
Okay it's a short one...and this is my first self done trigger^^:


JASS:
function Darkness_Gem_Trigger_Conditions takes nothing returns boolean                                                            
    if( not( GetSpellAbilityId() == 'A00F') ) then                                                                                
      return false                                                                                                                
    endif                                                                                                                         
      return true                                                                                                                 
endfunction                                                                                                                       
                                                                                                                                  
function Darkness_Gem_Trigger_Actions takes nothing returns nothing                                                               
local unit caster = GetSpellAbilityUnit()                                                                                         
local unit target = GetSpellTargetUnit()                                                                                          
local real armor = GetUnitArmor(target)    //  I'll use this  armor-dection-system for this                                                                                         
local integer lvl = GetUnitLevel(caster)                                                                                          
    call UnitDamageTarget(caster,target,2*armor*lvl,true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_METAL_LIGHT_SLICE)
endfunction                                                                                                                       
                                                                                                                                  
                                                                                                                                  
//=============================================================================                                                   
function InitTrig_Darkness_Gem_Trigger takes nothing returns nothing                                                              
    set gg_trg_Darkness_Gem_Trigger = CreateTrigger()                                                                             
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Darkness_Gem_Trigger,EVENT_PLAYER_UNIT_SPELL_CAST)                                  
    call TriggerAddCondition( gg_trg_Darkness_Gem_Trigger, Condition( function Darkness_Gem_Trigger_Conditions))                  
    call TriggerAddAction( gg_trg_Darkness_Gem_Trigger,( function Darkness_Gem_Trigger_Actions ) )                                
endfunction
 
Reaction score
456
Works fine for me, no errors here. Even though, I don't have the system, so I don't know if the problem is in it.
 

Jesus4Lyf

Good Idea™
Reaction score
397
Problem is with this line:
Code:
local real armor = GetUnitArmor(target)

Looks like real is the wrong variable type. I could be wrong, but I really dont know what GetUnit Armor does. (Is that from a system? Is that default wc3? does it return a real?)

Often the syntax checkers for wc3 seem to return an error for the line AFTER the line with a fault. ;)

Wait... Null... I don't suppose GetUnitArmor returns "nothing" for some reason?

You'll probably have to tell us something about the system. Or show some code. :)
 

Jesus4Lyf

Good Idea™
Reaction score
397
If it fails... I'm gonna suggest something crunchy. In that system replace the GetUnitArmor function with this...

JASS:
function GetUnitArmor takes unit whichUnit returns real
    local real life = GetWidgetLife(whichUnit)
    local real reduction
    local integer ID
    local boolean b
    if (whichUnit!=null and life>=0.405) then
    set ID = Armor_ID()
    set b = IsUnitInvulnerable(whichUnit)
    call UnitAddAbility(whichUnit, 'allz')
    call UnitAddAbility(whichUnit, ID)
    if b==true then
      call SetUnitInvulnerable(whichUnit, false)
    endif
    call ADS_UnitDamageTarget (whichUnit, whichUnit, 16.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL)
    if b==true then
       call SetUnitInvulnerable(whichUnit, true)
    endif
    set reduction = (16.00-(life-GetWidgetLife(whichUnit)))/16.00
    call UnitRemoveAbility(whichUnit, 'allz')
    call UnitRemoveAbility(whichUnit, ID)
    call SetWidgetLife(whichUnit, life)
    return (50*reduction/(3.00-(3.00*reduction)))-30.00
    endif
    return 0.00
endfunction


The only difference there to the one you showed the thread for is the end - I noticed the last line isn't a return statement. This way it is. No difference, but I reckon that's why it says it's returning null (due to no last return) and that's why it's saying it can't convert it to a real. :)

For those interested, it ended with...
JASS:
    return (50*reduction/(3.00-(3.00*reduction)))-30.00
    else
    return 0.00
    endif

I could be completely wrong. But I reckon it's a good shot. :D
 

monoVertex

I'm back!
Reaction score
460
Umm, you tested with Syntax Check without trying it in WE? Pff. If you have the system in your map header this code should give no errors.

And btw, real was correct for that variable.

EDIT: @guy above me: that cannot return null. Daelin's function works as intended.
 
Reaction score
456
It gives the error, because the jasscraft doesn't know the event GetUnitArmor(..), but it works fine in WE though..
 

GoGo-Boy

You can change this now in User CP
Reaction score
40
Edit: Allright this problem here got solved^^.
Thx all for your help.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top