Ok, I want every unit of a special type have an ID number and put it in its costum value when it is created. Player 1 has units with ID 1-5, player 2 with 6-10 and so on.
This trigger is supposed to find a ID number that's not taken by a living unit (I use the TankAlive boolean variable to track if it's free or not), give it to the created unit and then show a message to prove it.
But, it doesnt. The event is registered, and the actions before the loop happens, but not the ones inside it. No syntax check has shown any issues, however.
And when the unit dies, its ID number will be made free to be taken again:
And now I would like to whine about that I used GUI too long.
This is a "Pick All Units In Unit Group And Do Actions"-action converted to JASS. The problem is, I need to use a variable from function A in Function B and C.
So I need another way of unit group creation, if possible merge these functions into one, or export the variable to function B and C in another way.
Thanks.
This trigger is supposed to find a ID number that's not taken by a living unit (I use the TankAlive boolean variable to track if it's free or not), give it to the created unit and then show a message to prove it.
But, it doesnt. The event is registered, and the actions before the loop happens, but not the ones inside it. No syntax check has shown any issues, however.
JASS:
function Trig_Tank_ID_Creation_Conditions takes nothing returns boolean
return ( GetUnitTypeId(GetTrainedUnit()) == 039;h000039; )
endfunction
function Trig_Tank_ID_Creation_Actions takes nothing returns nothing
local integer ID
local integer index
set ID = ID + (GetPlayerId(GetOwningPlayer(GetTrainedUnit()))*5)
loop
set ID = ID + 1
if ( udg_TankAlive[ID] == false ) then
call SetUnitUserData(GetTrainedUnit(), ID)
set udg_TankAlive[ID] = true
call DisplayTextToForce( GetPlayersAll(), "A new tank has been created with ID "+I2S(GetUnitUserData(GetTrainedUnit())))
set ID = 100
else
endif
exitwhen ID == 100
endloop
endfunction
//===========================================================================
function InitTrig_Tank_ID_Creation takes nothing returns nothing
set gg_trg_Tank_ID_Creation = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Tank_ID_Creation, EVENT_PLAYER_UNIT_TRAIN_FINISH )
call TriggerAddCondition( gg_trg_Tank_ID_Creation, Condition( function Trig_Tank_ID_Creation_Conditions ) )
call TriggerAddAction( gg_trg_Tank_ID_Creation, function Trig_Tank_ID_Creation_Actions )
endfunction
And when the unit dies, its ID number will be made free to be taken again:
JASS:
function Trig_Tank_Death_Actions takes nothing returns nothing
set udg_TankAlive[GetUnitUserData(GetDyingUnit())] = false
endfunction
And now I would like to whine about that I used GUI too long.
This is a "Pick All Units In Unit Group And Do Actions"-action converted to JASS. The problem is, I need to use a variable from function A in Function B and C.
So I need another way of unit group creation, if possible merge these functions into one, or export the variable to function B and C in another way.
JASS:
function Function_C takes nothing returns boolean
return ( IsUnitInTransportBJ(GetFilterUnit(), variable) == true )
endfunction
function Function_B takes nothing returns nothing
call RandomAction(variable)
endfunction
function Function_A takes unit variable returns nothing
call ForGroupBJ( GetUnitsOfPlayerMatching(Player(0), Condition(function Trigger_C)), function Trigger_B)
endfunction
Thanks.