Newbie JASS Question

turok255

New Member
Reaction score
30
Im playing around with JASS like all the tutorials said and I was just wondering, How can I change globals from locals?

I did this
Code:
function Trig_Unit_Attacks_Func001C takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTriggerUnit()) == 'Hpal' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Unit_Attacks_Actions takes nothing returns nothing
    if ( Trig_Unit_Attacks_Func001C() ) then
        local unit u=GetTriggerUnit()
        call IssueImmediateOrderBJ( u, "divineshield" )
    else
    endif
    call TriggerSleepAction( 2.00 )
    call IssueImmediateOrderBJ( u, "undivineshield" )
endfunction

//===========================================================================
function InitTrig_Unit_Attacks takes nothing returns nothing
    set gg_trg_Unit_Attacks = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Unit_Attacks, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddAction( gg_trg_Unit_Attacks, function Trig_Unit_Attacks_Actions )
endfunction
All I did was change the set global to a local and take the udg_ part away, Is there somthing els I have to do?

And got 3 errors,
Line28: Expected endif
Line29: Expected a name
Line33: Expected a name

Im using NewGen WE if it matters.
 
Reaction score
456
locals have to be on the top of the function:

JASS:
function Trig_Unit_Attacks_Actions takes nothing returns nothing
    if ( Trig_Unit_Attacks_Func001C() ) then
        local unit u=GetTriggerUnit()
        call IssueImmediateOrderBJ( u, "divineshield" )
    else
    endif
    call TriggerSleepAction( 2.00 )
    call IssueImmediateOrderBJ( u, "undivineshield" )
endfunction

To:
JASS:
function Trig_Unit_Attacks_Actions takes nothing returns nothing
    local unit u=GetTriggerUnit()
    if ( Trig_Unit_Attacks_Func001C() ) then
        call IssueImmediateOrderBJ( u, "divineshield" )
    else
    endif
    call TriggerSleepAction( 2.00 )
    call IssueImmediateOrderBJ( u, "undivineshield" )
    set u = null //Preventing a memory leak
endfunction
 

turok255

New Member
Reaction score
30
Ahh I forgot about that, ty :)

Is nulling a local like using custom script in GUI to remove leaks or is this diffrent?
 
Reaction score
456
>Is nulling a local like using custom script in GUI
You write a JASS functions and other things in custom script. So called custom script is JASS.
 

Arkan

Nobody rides for free
Reaction score
92
You only null locals, and since you can't have locals in GUI, you don't null in GUI.

You null handles after you have cleaned them, like:

call RemoveLocation(l)
set l = null

call DestroyGroup(g)
set g = null

call KillUnit(u)
set u = null

etc.
 
Reaction score
456
>since you can't have locals in GUI
Wrong. Never say that again.

Example of locals in GUI:
Code:
Actions
    Custom script:   local location loc = GetUnitLoc(GetTriggerUnit()
    Custom script:   call RemoveLocation(loc)
    Custom script:   set loc = null
 

Rheias

New Helper (I got over 2000 posts)
Reaction score
232
>since you can't have locals in GUI
Wrong. Never say that again.

Example of locals in GUI:
Code:
Actions
    Custom script:   local location loc = GetUnitLoc(GetTriggerUnit()
    Custom script:   call RemoveLocation(loc)
    Custom script:   set loc = null


That's still Jass, only used in unconverted trigger. :rolleyes:
 
Reaction score
456
You can't say it's JASS. GUI is JASS too, but it's only in GUI. Don't let the graphical user interface confuse you, as it's not a "programming" language.
 

turok255

New Member
Reaction score
30
One more question, Is it possible for leaks in JASS to crash computers to the point of needing to restart the whole computer not just wc3? People I've tested a map with say it crashes their comps but only closes wc3 for me.
 
Reaction score
456
Well.. it could be possible somehow I guess.. no.. it should close the wc3 before restarting whole system..
 

Rheias

New Helper (I got over 2000 posts)
Reaction score
232
Ever played WoW Risk? Crashes my computer every time I play it. Leaks may crash your computer if many will be created, yes.
 

turok255

New Member
Reaction score
30
Well the only other possible reason I could guess is I have alot of dragon whelps in my map, Maybe they are bugged with like 200 of them in one area? Its a footmen wars with a dragon race :D But some people say they crash for no reason others say when they attack a base full of dragons.

EDIT:
Rheias
Ever played WoW Risk? Crashes my computer every time I play it. Leaks may crash your computer if many will be created, yes.

No I haven't, But if alot of leaks can cause a computer to crash I think I found my problem... But why would it totally crash someone leses computer and only close wc3 for mine? Is it becase im hosting? Better computer? No reason?
 

Arkan

Nobody rides for free
Reaction score
92
Wrong. Never say that again.
Custom script is a JASS line, what's the point of having a local variable in GUI if you can't use it with any GUI actions? Might aswell write everything in JASS.
 

0zaru

Learning vJASS ;)
Reaction score
60
That's wrong also, what if i do this with a global variable ?

Custom Script: local unit udg_MyUnit
Create a unit here..
set MyUnit=LastCreatedUnit
//Now MyUnit is a local variable.
 

Arkan

Nobody rides for free
Reaction score
92
How can you have a global and a local with the same name? Sounds pretty fancy to me :S
 
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