Noob questions

mapguy

New Member
Reaction score
46
I have to remove locals in the end of the triggers or they dont cause leak?

I can set locals with custom script and use them in GUI script?
Trigger:
  • custom script: local integer a=1
    • custom script: local string b=I2S(a)
    • Dysplay to all players the text "b"
 

hgkjfhfdsj

Active Member
Reaction score
55
I have to remove locals in the end of the triggers or they dont cause leak?
everything but integers, booleans, etc ..(the usual)

I can set locals with custom script and use them in GUI script?
nope, normal gui cant reference locals
one way to bypass this is to set a global variable with the value of the local
 

tooltiperror

Super Moderator
Reaction score
231
Trigger:
  • Lol Trigger
    • Actions
    • Conditions
    • Events
      • Custom Script: local location SomeLocation=Location(0,0)
      • Custom Script: set udg_YourLocation=SomeLocation
      • Custom Script: call RemoveLocation(SomeLocation)
      • Custom Script: call RemoveLocation(udg_YourLocation)
      • Custom Script: set SomeLocation=null


The Base Types are:
  • Integers
  • Reals
  • Booleans
  • Strings

Those are the only things that don't have to be nulled.
 

tooltiperror

Super Moderator
Reaction score
231
Also [ljass]code[/ljass], and permanent things, such as players. :thup:

Touche. But if you are not using waits or anything and your trigger is quick, there are one or two bj_ globals you can use for players, as long as your map doesn't use GUI.
 

mapguy

New Member
Reaction score
46
hey...
So I have to remove all locals in the end...

well.

countdown timers leak too? or I can just replace them instead of call DestroyTimer (udg_mytimer)
 

tooltiperror

Super Moderator
Reaction score
231
It depends on what you are doing with the timer. If you're creating a timer once per spell and using it, destroy it. If every thirty minutes everyone in your map gets 10 gold, re-use it.
 

mapguy

New Member
Reaction score
46
so I destroy timers that are used once but recreate when I use lots of times?

example:
unit starts the effect of an ability.
start timer that will expire in 5 seconds.

this timer I maintain (dont destroy) right?
 

tooltiperror

Super Moderator
Reaction score
231
The thing about timers is that they can be recycled and you can just get them as available, while all the work is done for you 'under the hood'. Getting timers (especially with O(1) complexity) instead of creating them when you need them can be very important if you want to spawn an effect once every .0003125 seconds.

Unfortunately, timers in GUI are utterly disgusting.
 

Ayanami

칼리
Reaction score
288
and also.. if you're using locals you cannot refer to them in GUI.

so you have to custom script every line that uses it...
as i said, it's ugly.

You can refer to locals by doing this right?:

Trigger:
  • Actions
    • Custom script: local unit u = GetTriggerUnit()
    • Custom script: set udg_TempUnit = u
    • Unit - Kill TempUnit
    • Custom script: set u = null
 

tooltiperror

Super Moderator
Reaction score
231
You know you can quote posts and see how they do things, right?
 

Kajik

New Member
Reaction score
4
I also have a question.

JASS:

struct S
    timer t
    
    static method create takes integer int returns S
        local S s = S.allocate()
        set s.t = CreateTimer()
        call SetHandleInt(s.t, "int", int)
        return s
    endmethod
endstruct

function test takes nothing returns nothing
    local S s = S.create(2)
    call s. destroy()
endfunction


Do I have to flush and destroy that timer manualy (or other possible struct variables) or s.destroy() clears whole struct and all it's variabes?
 
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