locals and globals

lh2705

Just another Helper
Reaction score
111
can sumbody tell me the difference?

also how do you put these type of variables in a gui trigger?
:)
 

phyrex1an

Staff Member and irregular helper
Reaction score
447
A global variables are available to use everywhere at the same time, if one trigger change the value of it then every trigger will use that new value.
A local variable only exist in the function it was declared in, and only in that instance of the function. Only that function has access to the value of that variable.

A global variable is the normal variables you use, so you don't need any help with those.

A local variable can be used in the GUI if you use a trick. Put this in the beginning of the actions in your trigger:
Code:
Custom Script: local <Varibale Type> udg_<Variable Name>
<Variable Type> should be replaced with the type of the variable, ie integer or unit. However some of the types are named incorrect in the GUi. For example there is no such thing as a 'Unit Type', a unit type is simply an integer.

<Variable Name> should be replaced with the name of the variable, blank spaces are replaced with underscore.

Remember that a 'Pick Every ...' call uses a new function, so the locals changes there.

Read some jass/custom script tutorials for better understanding.
 

lh2705

Just another Helper
Reaction score
111
so if i use the custom script to set a local variable, do i stll need to use
set (variable) = (sumthing)?

and if i want it MUI i have to set every variable in that particular trigger to have a custom script?
 

phyrex1an

Staff Member and irregular helper
Reaction score
447
If you use the 'trick' that I posted then you can use the variable as you used to use it when it was a global GUI variable.

You have to make every variable that should survive a wait local, but if I remember right there is some kind of glitch that only allows one global variable to be tricked to act as a local.
So if you need more than one local variable then you have to code without the GUI.
 

lh2705

Just another Helper
Reaction score
111
..err okkay thanks

although i didnt understand a word u said :confused: :confused: :confused:
 

Sim

Forum Administrator
Staff member
Reaction score
534
Once you do something with a local variable everywhere you use must be in JASS also.

Short example :

GUI trigger :
Code:
Events
   Unit - A unit enters Region 002 <gen>
Conditions
Actions
   Set Unit_Var = (Entering unit)
   Set Point_Var = Center of Region 001 <gen>
   Set Player_var = Owner of (Entering unit)
   Unit - Order Unit_Var to Attack-Move to Point_Var
   Player - Add 10 gold to Player_Var current gold

Trigger with locals (half-GUI)
Code:
Events
   Unit - A unit enters Region 002 <gen>
Conditions
Actions
   Custom script:   local unit u = GetEnteringUnit()
   Custom script:   local location p = GetRectCenter(gg_rct_Region_001)
   Set Player_var = Owner of (Entering unit)
   Custom script:   call IssuePointOrderLocBJ( u, "attack", p )
   Player - Add 10 gold to Player_Var current gold

What I'm showing you right now is that all actions that will use the local variable should be in Custom Script (unless you set it to a global variable) and all the actions that don't use local variables may stay in GUI.
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,495
> What I'm showing you right now is that all actions that will use the local variable must be in Custom Script

I'd suggest re-reading post #2 :p
 
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