HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Add Ability lag removal, help please.

04-02-2007, 01:16 AM#1
Kojiro
No idea how to use this trigger tag thing... but anywho.
A previous trigger runs this one through.
Creates a dummy unit, adds and removes every ability that I 'add' to a unit in my map to this unit.
When the trigger is done running, runs another trigger that enables player control and you start the game.

The thing is, when I run this trigger, I get a fatal error.
I 'used' to have this trigger in my map, and it never once gave me an error.
The only difference is the addition of some new abilities added to the trigger, but it doesn't make sense that they'd act this way.

Couple things about these new abilities, they're based on the Engineering upgrade, doesn't actually upgrade anything, just adds an icon to the unit to tell what the triggers attatched to it do.

I doubt the type of ability should be the case, but..

Any ideas?

EDIT: Alright, solution was to remove those abilities that I added to the trigger.
Works "fine" now. ...but why was the error being caused, anyone have an idea?
It's not that the Engineering Upgrade can't be added, because it is in my map.
But when it's removed, it causes problems?

Hidden information:
Trigger:
Collapse function Trig_testtest_Actions takes nothing returns nothing
call CreateNUnitsAtLoc( 1, 'e004', Player(PLAYER_NEUTRAL_PASSIVE), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING )
set udg_aDummyCasters[0] = GetLastCreatedUnit()
call UnitAddAbilityBJ( 'Aloc', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'Aloc', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A031', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A031', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A00E', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A00E', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A032', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A032', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A030', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A030', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A006', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A006', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A06B', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A06B', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A039', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A039', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A02U', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A02U', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04A', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04A', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04B', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04B', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04C', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04C', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A068', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A068', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A01F', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A01F', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A01P', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A01P', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A03R', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A03R', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A00G', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A00G', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A066', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A066', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A03I', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A03I', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A010', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A010', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A05K', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A05K', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A067', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A067', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04R', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04R', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A00P', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A00P', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A00U', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A00U', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A02H', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A02H', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A00S', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A00S', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A03C', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A03C', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A018', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A018', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A05U', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A05U', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A027', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A027', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A051', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A051', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A050', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A050', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04Z', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04Z', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A045', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A045', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04G', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04G', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04H', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04H', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04I', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04I', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A033', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A033', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A069', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A069', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A03X', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A03X', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A03W', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A03W', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A03Y', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A03Y', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A06J', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A06J', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A04T', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A04T', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A05V', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A05V', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A05W', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A05W', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A05X', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A05X', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A03G', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A03G', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A02N', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A02N', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A001', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A001', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A00Y', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A00Y', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A05H', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A05H', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A058', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A058', udg_aDummyCasters[0] )
call UnitAddAbilityBJ( 'A01D', udg_aDummyCasters[0] )
call UnitRemoveAbilityBJ( 'A01D', udg_aDummyCasters[0] )
call TriggerSleepAction( 1.00 )
call TriggerExecute( gg_trg_LagFinisher )
endfunction

//===========================================================================
Collapse function InitTrig_testtest takes nothing returns nothing
set gg_trg_testtest = CreateTrigger( )
call DisableTrigger( gg_trg_testtest )
call TriggerAddAction( gg_trg_testtest, function Trig_testtest_Actions )
endfunction
04-02-2007, 05:48 AM#2
Pyrogasm
You're going to want to use the [jass] tags. JASS ones are for JASS code, and TRIGGER tags are for GUI triggers.

I would also suggest turning that into a loop, as you'll see below. You could use a DestroyTrigger() instead of disabling the trigger, to save memory. Additionally, the creation of the dummy leaks a location, and you can also set a variable to a value on the line it's created, as I've highlighted in the following:

Collapse JASS:
function Trig_testtest_Actions takes nothing returns nothing
    local location l = GetRectCenter(GetPlayableMapRect())
    local real x = GetLocationX(l)
    local real y = GetLocationY(l)
    local integer array abilities
    local integer i = 0

    set udg_aDummyCasters[0] = CreateUnit(Player(15), 'e004', x, y, 0)

    set abilities[1] = 'Aloc'
    set abilities[2] = 'A031'
    set abilities[3] = 'A00E'
    set abilities[4] = 'A032'
    set abilities[5] = 'A030'
    set abilities[6] = 'A006'
    set abilities[7] = 'A06B'
    set abilities[8] = 'A039'
    set abilities[9] = 'A02U'
    set abilities[10] = 'A04A'
    set abilities[11] = 'A04B'
    set abilities[12] = 'A04C'
    set abilities[13] = 'A068'
    set abilities[14] = 'A01F'
    set abilities[15] = 'A01P'
    set abilities[16] = 'A03R'
    set abilities[17] = 'A00G'
    set abilities[18] = 'A066'
    set abilities[19] = 'A03I'
    set abilities[20] = 'A010'
    set abilities[21] = 'A05K'
    set abilities[22] = 'A067'
    set abilities[23] = 'A04R'
    set abilities[24] = 'A00P'
    set abilities[25] = 'A00U'
    set abilities[26] = 'A02H'
    set abilities[27] = 'A00S'
    set abilities[28] = 'A03C'
    set abilities[29] = 'A018'
    set abilities[30] = 'A05U'
    set abilities[31] = 'A027'
    set abilities[32] = 'A051'
    set abilities[33] = 'A050'
    set abilities[34] = 'A04Z'
    set abilities[35] = 'A045'
    set abilities[36] = 'A04G'
    set abilities[37] = 'A04H'
    set abilities[38] = 'A04I'
    set abilities[39] = 'A033'
    set abilities[40] = 'A069'
    set abilities[41] = 'A03X'
    set abilities[42] = 'A03W'
    set abilities[43] = 'A03Y'
    set abilities[44] = 'A06J'
    set abilities[45] = 'A04T'
    set abilities[46] = 'A05V'
    set abilities[47] = 'A05W'
    set abilities[48] = 'A05X'
    set abilities[49] = 'A03G'
    set abilities[50] = 'A02N'
    set abilities[51] = 'A001'
    set abilities[52] = 'A00Y'
    set abilities[53] = 'A05H'
    set abilities[54] = 'A058'
    set abilities[55] = 'A01D'

    loop
        set i = i+1
        exitwhen i > 55
        call UnitAddAbility(udg_aDummyCasters[0], abilities[i])
        call UnitRemoveAbility(udg_aDummyCasters[0], abilities[i])
    endloop

    call TriggerSleepAction( 1.00 )
    call TriggerExecute( gg_trg_LagFinisher )
    call DestroyTrigger(GetTriggeringTrigger())
endfunction

//===========================================================================
function InitTrig_testtest takes nothing returns nothing
    set gg_trg_testtest = CreateTrigger(  )
    call TriggerAddAction( gg_trg_testtest, function Trig_testtest_Actions )
endfunction
04-03-2007, 01:54 AM#3
blademasterEXO
Quote:
EDIT: Alright, solution was to remove those abilities that I added to the trigger.
Works "fine" now. ...but why was the error being caused, anyone have an idea?
It's not that the Engineering Upgrade can't be added, because it is in my map.
But when it's removed, it causes problems?

Well the thing is; Engineering Upgrade has issues, when you remove it ur game may have a fatal error. It also only works if u use the Engineering Upgrade Buff. I never tried removing engineering upgrade; thus by thinking logically I think the game will crash etc.

P.S; U dont have to use the Engineering Upgrade warcraft includes, why not TRIGGER ur own?
04-03-2007, 08:35 AM#4
blu_da_noob
Quote:
Originally Posted by blademasterEXO
P.S; U dont have to use the Engineering Upgrade warcraft includes, why not TRIGGER ur own?

You can't trigger engineering upgrade. Engineering upgrade keeps the cooldown of the ability which is impossible to do otherwise.
04-03-2007, 11:20 AM#5
Anitarf
Engineering upgrade crashes the game when added to a non-hero unit. Read.