| 07-22-2008, 06:55 PM | #1 |
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 ? 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 |
Try this: native SetTextTagVisibility takes texttag t, boolean flag returns nothing |
| 07-23-2008, 02:53 PM | #3 |
Thx by the tip but it still doesn't work !! Please help me !!! 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 |
damn 2 threads with title "BUG !!!" ... remember users are lame =O T_T |
| 07-23-2008, 03:22 PM | #5 |
The function in isolation works fine, so I presume the 100 texttag limit is your problem. |
| 07-24-2008, 11:53 AM | #6 |
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 |
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 | |
Quote:
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 ! |
