- Joined
- Feb 22, 2006
- Messages
- 960
so here is my castbar system i made, actually i'm learning to handle with gamecaches and the handlevar system, so i asked my self if i found all leaks
JASS:
function castbar takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = GetHandleUnit(t,"caster")
local integer duration = GetHandleInt(t,"duration")
local location loc
local real zeit = GetHandleReal(t,"zeit")
local texttag textt = GetHandleTexttag(t,"textt")
local texttag textbarone = GetHandleTexttag(t,"textbarone")
local texttag textbartwo = GetHandleTexttag(t,"textbartwo")
local string text = "|"
local string textbartext = GetHandleString(t,"textbartext")
set zeit = zeit - interval()
set textbartext = textbartext + text
set loc = GetUnitLoc(u)
call SetTextTagPosBJ(textt,loc,200.00)
call SetTextTagPosBJ(textbarone,loc,200.00)
call SetTextTagPosBJ(textbartwo,loc,200.00)
call SetTextTagTextBJ(textbartwo,textbartext,10)
call SetTextTagTextBJ(textt,R2S(zeit),8)
call RemoveLocation(loc)
if (duration <= 1) then
call FlushHandleLocals(t)
call DestroyTextTag(textt)
call DestroyTextTag(textbarone)
call DestroyTextTag(textbartwo)
call DestroyTimer(t)
set loc = null
set u = null
set textt = null
set textbarone = null
set textbartwo = null
set t = null
return
endif
set loc = null
set u = null
call SetHandleReal(t,"zeit",zeit)
call SetHandleInt(t,"duration",duration-1)
call SetHandleString(t,"textbartext",textbartext)
endfunction
function castbar_action takes real time,unit u returns nothing
local timer t = CreateTimer()
local integer i = 200
local location loc = GetUnitLoc(u)
local string newtext = ""
local string text = "|"
local string textbar = ""
local texttag tg
local texttag tt
local texttag tb
local integer loopint = 0
loop
exitwhen loopint >= R2I(time/interval())
set newtext = newtext + text
set loopint = loopint + 1
endloop
set tt = CreateTextTagLocTwo(newtext,loc,200.00,10,10,10,10,0)
set tb = CreateTextTagLocTwo(textbar,loc,200.00,10,100,0,0,0)
set tg = CreateTextTagLocTwo(R2S(time),loc,200.00,8,100,100,100,0)
call SetHandleInt(t,"duration",R2I(time/interval()))
call SetHandleReal(t,"zeit",time)
call SetHandleString(t,"textbartext",textbar)
call SetHandleHandle(t,"caster",u)
call SetHandleHandle(t,"textt",tg)
call SetHandleHandle(t,"textbarone",tt)
call SetHandleHandle(t,"textbartwo",tb)
call TimerStart(t,interval(),true,function castbar)
call RemoveLocation(loc)
set loc = null
endfunction