HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Blizzard bug ?? unkown bug =(

07-22-2008, 06:55 PM#1
Flame_Phoenix
HI guys, I am working on a traveling system but it just doesn't work ... It is supposed to fire every time a unit enters one of 6 regions. The code is small and simple, but I just can't create the stupid text tags. Can some one please help me ?

Collapse JASS:
scope PlaneBomber initializer Init    

    globals
        private constant integer PLANEID = 'h00N'   //Id of the plane
        private rect array planeRegions[6]  //an array with all regions the plane will visit
        private timer array planeTextTimers[6]  //a Timer for each region
        private unit bomber = null  //just to know which plane 
    endglobals 
//============================================================
    private function ShowText takes nothing returns nothing
        local texttag text = CreateTextTag()
        
        //Although the BJDEBUG msg appears, this stupid texttag doest't .. !! WHY !!!
        call SetTextTagText(text, "TEST", .023)
        call SetTextTagPos(text, GetRectCenterX(gg_rct_Boom_1), GetRectCenterX(gg_rct_Boom_1), 280)
        call SetTextTagColor(text, GetRandomInt(50, 255), GetRandomInt(50, 255), GetRandomInt(50, 255), 255)
        call SetTextTagPermanent(text, false)
        call SetTextTagVelocity(text, 0, .0277)
        call SetTextTagFadepoint(text, 1)
        call SetTextTagLifespan(text, 2.5)
        
        set text = null
        
        call BJDebugMsg("showtext")
    endfunction
//===========================================================================
    private function onCreate takes nothing returns boolean
        local real x = GetRectCenterX(planeRegions[0])
        local real y = GetRectCenterY(planeRegions[0])
        call CreateUnit(Player(0), PLANEID, x, y, 0.)
        
        set x = GetRectCenterX(planeRegions[3])
        set y = GetRectCenterY(planeRegions[3])
        call CreateUnit(Player(0), PLANEID, x, y, 0.)
        
        return false
    endfunction
//===========================================================================
    private function onEnter takes nothing returns boolean
        local unit u = GetTriggerUnit() // the entering unit
        local integer uID = GetUnitTypeId(u)
        local integer i = 0
        
        if (uID == PLANEID) then
            loop
                exitwhen (i == 6)
                if RectContainsUnit(planeRegions[i], u) then
                    //here we set the text and repeat it over and over again
                    //however, although the Timer starts correctly, and the BJ message
                    //appear, the text doesn't!
                    set bomber = u
                    call TimerStart(planeTextTimers[i], 3.0, true, function ShowText)
                    call BJDebugMsg("region" + I2S(i))
                endif
                set i = i + 1
            endloop
        endif
        
        return false
    endfunction
//===========================================================================
    private function Init takes nothing returns nothing
        local trigger BomberTrigger = CreateTrigger(  )
        
        //this trigger creates two stupid planes when time is 20 
        call TriggerRegisterTimerEvent(BomberTrigger, 20., false)  
        call TriggerAddCondition(BomberTrigger, Condition(function onCreate))
        
        //yes, this trigger keeps track of all this regions, and if a unit
        //enters one of them, the function is called correctly
        set BomberTrigger = CreateTrigger()
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_1 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_2 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_3 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_4 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_5 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_6 )
        call TriggerAddCondition(BomberTrigger, Condition(function onEnter))
        
        set BomberTrigger = null
        
        //setting our globals
        set planeRegions[0] = gg_rct_Boom_1
        set planeRegions[1] = gg_rct_Boom_2
        set planeRegions[2] = gg_rct_Boom_3
        set planeRegions[3] = gg_rct_Boom_4
        set planeRegions[4] = gg_rct_Boom_5
        set planeRegions[5] = gg_rct_Boom_6
        
        set planeTextTimers[0] = CreateTimer()
        set planeTextTimers[1] = CreateTimer()
        set planeTextTimers[2] = CreateTimer()
        set planeTextTimers[3] = CreateTimer()
        set planeTextTimers[4] = CreateTimer()
        set planeTextTimers[5] = CreateTimer()
    
    endfunction
endscope
07-22-2008, 10:32 PM#2
TheDamien
Try this:

native SetTextTagVisibility takes texttag t, boolean flag returns nothing
07-23-2008, 02:53 PM#3
Flame_Phoenix
Thx by the tip but it still doesn't work !! Please help me !!!

Collapse JASS:
scope PlaneBomber initializer Init    

    globals
         constant integer PLANEID = 'h00N'   //Id of the plane
         rect array planeRegions[6]  //an array with all regions the plane will visit
         timer array planeTextTimers[6]  //a Timer for each region
         unit bomber = null  //just to know which plane 
    endglobals 
//============================================================
    private function ShowText takes nothing returns nothing
        local texttag text = CreateTextTag()
        
        //Although the BJDEBUG msg appears, this stupid texttag doest't .. !! WHY !!!
        call SetTextTagText(text, "TEST", .023)
        call SetTextTagPos(text, GetRectCenterX(gg_rct_Boom_1), GetRectCenterX(gg_rct_Boom_1), 280)
        call SetTextTagColor(text, GetRandomInt(50, 255), GetRandomInt(50, 255), GetRandomInt(50, 255), 255)
        call SetTextTagPermanent(text, false)
        call SetTextTagVelocity(text, 0, .0277)
        call SetTextTagFadepoint(text, 1)
        call SetTextTagLifespan(text, 2.5)
        call SetTextTagVisibility(text, true)
        
        set text = null
        
        call BJDebugMsg("showtext")
    endfunction
//===========================================================================
    private function onCreate takes nothing returns boolean
        local real x = GetRectCenterX(planeRegions[0])
        local real y = GetRectCenterY(planeRegions[0])
        call CreateUnit(Player(0), PLANEID, x, y, 0.)
        
        set x = GetRectCenterX(planeRegions[3])
        set y = GetRectCenterY(planeRegions[3])
        call CreateUnit(Player(0), PLANEID, x, y, 0.)
        
        return false
    endfunction
//===========================================================================
    private function onEnter takes nothing returns boolean
        local unit u = GetTriggerUnit() // the entering unit
        local integer uID = GetUnitTypeId(u)
        local integer i = 0
        
        if (uID == PLANEID) then
            loop
                exitwhen (i == 6)
                if RectContainsUnit(planeRegions[i], u) then
                    //here we set the text and repeat it over and over again
                    //however, although the Timer starts correctly, and the BJ message
                    //appear, the text doesn't!
                    set bomber = u
                    call TimerStart(planeTextTimers[i], 3.0, true, function ShowText)
                    call BJDebugMsg("region" + I2S(i))
                endif
                set i = i + 1
            endloop
        endif
        
        return false
    endfunction
//===========================================================================
    private function Init takes nothing returns nothing
        local trigger BomberTrigger = CreateTrigger(  )
        
        //this trigger creates two stupid planes when time is 20 
        call TriggerRegisterTimerEvent(BomberTrigger, 20., false)  
        call TriggerAddCondition(BomberTrigger, Condition(function onCreate))
        
        //yes, this trigger keeps track of all this regions, and if a unit
        //enters one of them, the function is called correctly
        set BomberTrigger = CreateTrigger()
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_1 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_2 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_3 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_4 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_5 )
        call TriggerRegisterEnterRectSimple( BomberTrigger, gg_rct_Boom_6 )
        call TriggerAddCondition(BomberTrigger, Condition(function onEnter))
        
        set BomberTrigger = null
        
        //setting our globals
        set planeRegions[0] = gg_rct_Boom_1
        set planeRegions[1] = gg_rct_Boom_2
        set planeRegions[2] = gg_rct_Boom_3
        set planeRegions[3] = gg_rct_Boom_4
        set planeRegions[4] = gg_rct_Boom_5
        set planeRegions[5] = gg_rct_Boom_6
        
        set planeTextTimers[0] = CreateTimer()
        set planeTextTimers[1] = CreateTimer()
        set planeTextTimers[2] = CreateTimer()
        set planeTextTimers[3] = CreateTimer()
        set planeTextTimers[4] = CreateTimer()
        set planeTextTimers[5] = CreateTimer()
    
    endfunction
endscope
07-23-2008, 03:04 PM#4
Toadcop
damn 2 threads with title
"BUG !!!"
...
remember users are lame =O T_T
07-23-2008, 03:22 PM#5
Alexander244
The function in isolation works fine, so I presume the 100 texttag limit is your problem.
07-24-2008, 11:53 AM#6
Flame_Phoenix
wtf !?!??!
100 texttag ,limit ?! what is that supposed to mean !???!?!?
It makes no sense, this thing happened to work fine with dynamic inefficient and bugged triggers, now that I start remaking it without bugs and decently it doesn't work !?

Besides my map doesn't have 100 text tags at the same time ... Neither with all spells together I would reach that limit !

It has to be some other reason =(
BUG from BLIZZARD !!
Help please ?
07-24-2008, 12:20 PM#7
Blubb-Tec
I got this idea, because Alexander244 said that isolated the function would work, so I think it is either 1. a problem with your global rect gg_rct_Boom_1,
or 2. it is because you used call SetTextTagPos(text, GetRectCenterX(gg_rct_Boom_1), GetRectCenterX(gg_rct_Boom_1), 280)
GetRectCenterX when you should have used GetRectCenterY
07-25-2008, 02:37 PM#8
Flame_Phoenix
Quote:
I got this idea, because Alexander244 said that isolated the function would work, so I think it is either 1. a problem with your global rect gg_rct_Boom_1,
or 2. it is because you used call SetTextTagPos(text, GetRectCenterX(gg_rct_Boom_1), GetRectCenterX(gg_rct_Boom_1), 280)
GetRectCenterX when you should have used GetRectCenterY

ARRRGHHH !!! Please don't say that !! I can't be that stupid ... I mean until now I lived in peace but now !!! (lol..)
I'll see what happens when I fix the bug ... however I don't think that will be the problem.
I will post a new version of code soon =S

EDIT EDIT EDIT

Bug solved, you were right all the time, thx for your help.
+rep to you all !