createTrigger

From Bohemia Interactive Community
Revision as of 02:55, 11 August 2021 by Leopard20 (talk | contribs)
Jump to navigation Jump to search

{{RV|type=command

|game1= ofpe |version1= 1.00

|game2= arma1 |version2= 1.00

|game3= arma2 |version3= 1.00

|game4= arma2oa |version4= 1.50

|game5= tkoh |version5= 1.00

|game6= arma3 |version6= 0.50

|gr1= Triggers

|descr= Creates a sensor (trigger) of the given type and at the given position. The type must be a class name in CfgNonAIVehicles or CfgVehicles with simulation = detector. An array containing all units that have activated the trigger is available via list triggerobj. Since triggers are [[object|objects], they can be deleted using deleteVehicle.

Note that triggers are objects, and commands such as getPosASL, setPosASL, deleteVehicle, etc. work on them the same as other objects.
Since Arma 3 v1.44 triggers can be created locally on clients setting optional param makeGlobal to false
Since Arma 3 v1.54 triggers can be disabled/enabled using enableSimulation command


Triggers are created with default params, which are:

  • a: 50.0
  • b: 50.0
  • c: -1
  • angle: 0
  • rectangular: false
  • activationBy: None
  • activationType: Present
  • repeating: false
  • timeoutMin: 0
  • timeoutMid: 0
  • timeoutMax: 0
  • interruptable: true
  • type: None
  • text: ""
  • name: ""
  • expCond: "this"
  • expActiv: ""
  • expDesactiv: ""
  • interval: 0.5 (Cannot be accessed via editor, scripted only since Arma 3 v1.98)


|s1= createTrigger [type, position, makeGlobal]

|p1= [type, position, makeGlobal]: Array |p2= type: String - usually "EmptyDetector" |p3= position: Position2D, Position3D or Object |p4= makeGlobal (Optional): Boolean - locality flag (available since Arma 3 v1.44)

|r1= Object - created trigger

|x1= _trg = createTrigger ["EmptyDetector", getPos player]; _trg setTriggerArea [5, 5, 0, false]; _trg setTriggerActivation ["CIV", "PRESENT", true]; _trg setTriggerStatements ["this", "hint 'Civilian near player'", "hint 'no civilian near'"];

|x2= Open/close Bar Gate automatically: //--- init of the Bar Gate if (isServer) then { _gateTrigger = createTrigger ["EmptyDetector", getPosWorld this, false]; _gateTrigger setVariable ["BarGateObj", this]; _gateTrigger setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _gateTrigger setTriggerArea [5, 25, getDir this, true]; _gateTrigger setTriggerStatements [ "this", "thisTrigger getVariable ""BarGateObj""; animateSource [""Door_1_sound_source"", 1]", "thisTrigger getVariable ""BarGateObj""; animateSource [""Door_1_sound_source"", 0]" ]; };

|seealso= setTriggerActivation, setTriggerArea, setTriggerStatements, setTriggerText, setTriggerTimeout, setTriggerType, setEffectCondition, setSoundEffect, setMusicEffect, setTitleEffect, deleteVehicle, synchronizeWaypoint, synchronizeTrigger, createGuardedPoint, triggerInterval, setTriggerInterval, enableSimulation, simulationEnabled }}

Posted on March 6, 2013 - 14:15 (CEST)
teaCup
Calling list immediately after creating a trigger this way (and setting up activation, area, statements, timeout, etc..), will return <null> instead of an array. It seems the trigger needs about 1 second to initialise, after which it will behave as expected: returning an array of all the objects inside the trigger (the ones matching the criteria), or an empty array.