Eden Editor: Setting Attributes: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
m (Some wiki formatting)
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{SideTOC}}
{{TOC|side}}
== Introduction ==
While Eden Editor [[Eden Editor: Modding#Workspace|Workspace]] behaves like a normal scenario and it is possible to modify entities using existing commands (e.g., [[setPosATL]]), such changes would be invisible for the editor and not saved to the scenario file.
While Eden Editor [[Eden_Editor:_Modding#Workspace|Workspace]] behaves like a normal scenario and it is possible to modify entities using existing commands (e.g., [[setPos]]), such changes would be invisible for the editor and not saved to the scenario file.


Instead, the editor is using attributes to store all entity and scenario settings. Most commonly, the scenario designer can edit them using Attributes window available after double-clicking on an entity. Some are also edited directly, like position when dragging entities around.
Instead, the editor is using attributes to store all entity and scenario settings. Most commonly, the scenario designer can edit them using Attributes window available after double-clicking on an entity. Some are also edited directly, like position when dragging entities around.


When an attribute is changed, the functionality attached to it is also performed. Setting ''position'' attribute of an object will move it to the given position, and adjusting _IntelWeatherStart_ attribute will change the weather. Using commands [[setPos]] or [[setOvercast]] would seemingly achieve the same, but without permanent effect - the changes wouldn't be visible next time the scenario is loaded.
When an attribute is changed, the functionality attached to it is also performed. Setting ''position'' attribute of an object will move it to the given position, and adjusting {{hl|IntelWeatherStart}} attribute will change the weather.
Using [[setPosATL]] or [[setOvercast]] commands would seemingly achieve the same, but without permanent effect - the changes would not be visible next time the scenario is loaded.
 


== Scripting ==
== Scripting ==
A scenario designer is not the only one who can modify attributes. Scripted systems can access them as well, giving you an ability to write some automated systems.
A scenario designer is not the only one who can modify attributes. Scripted systems can access them as well, giving you an ability to write some automated systems.


{{Important|Attributes are available only within the Eden Editor workspace. You cannot access them in scenario preview or exported scenario!}}
{{Feature|important|Attributes are available only within the Eden Editor workspace. They cannot be accessed in scenario preview or exported scenario.}}


=== Setting Entity Attributes ===
=== Setting Entity Attributes ===
To set an attribute, you need to know it is ''property'' and value ''type''. Tables below will help you with that - look at the last two columns, labeled '''Development'''. For example to set player as invincible, we'll use '''Enable Damage''' attribute. You can see its class is <tt>allowDamage</tt> (corresponding with [[allowDamage]] command; most attributes are named this way) and its value type is [[Boolean]]. This is how the expression will look like:
 
[[player]] [[set3DENAttribute]] ["allowDamage",[[false]]];
To set an attribute, you need to know it is ''property'' and value ''type''. Tables below will help you with that - look at the last two columns, labeled '''Development'''.
For example to set player as invincible, we'll use '''Enable Damage''' attribute.
You can see its class is {{hl|allowDamage}} (corresponding with [[allowDamage]] command; most attributes are named this way) and its value type is [[Boolean]]. This is how the expression will look like:
<sqf>player set3DENAttribute ["allowDamage", false];</sqf>


You can also check for the attribute state:
You can also check for the attribute state:
_isInvincible = player [[get3DENAttribute]] "allowDamage";
<sqf>_isInvincible = player get3DENAttribute "allowDamage";</sqf>


=== Managing History ===
=== Managing History ===
When setting attributes, each command execution would create a new history entry. When doing a batch change, the user would have to press undo for each entity modified, which would be uncomfortable. To prevent this, you can collect multiple changes together by wrapping them inside [[collect3DENHistory]] command:
 
[[collect3DENHistory]] {
When setting attributes, each command execution would create a new history entry. When doing a batch change, the user would have to press undo for each entity modified, which would be uncomfortable.
{
To prevent this, you can collect multiple changes together by wrapping them inside [[collect3DENHistory]] command:
_x [[set3DENAttribute]] ["allowDamage",[[false]]];
<sqf>
} [[forEach]] ([[all3DENEntities]] [[select]] 0);
collect3DENHistory {
};
{
_x set3DENAttribute ["allowDamage",false];
} forEach (all3DENEntities select 0);
};
</sqf>
Alternatively, you can use more [[set3DENAttributes]] command which is able to modify multiple entities at once already.
Alternatively, you can use more [[set3DENAttributes]] command which is able to modify multiple entities at once already.


=== Setting Object Type ===
=== Setting Object Type ===
[[Eden Editor: Object|Objects]] have also special attribute ''ItemType'', which defines which object class will represent them (i.e., a soldier, a car, a house, etc.). It cannot be changed as a normal attribute, because it requires replacing the old model with the new one. There's a special command to handle this:
 
[[player]] [[set3DENObjectType]] "B_Soldier_F";
[[Eden Editor: Object|Objects]] also have the ''ItemType'' special attribute, which defines which object class will represent them (i.e., a soldier, a car, a house, etc.).
It cannot be changed as a normal attribute, because it requires replacing the old model with the new one. There's a special command to handle this:
<sqf>player set3DENObjectType "B_Soldier_F";</sqf>


=== Setting Scenario Attributes ===
=== Setting Scenario Attributes ===
Scenario attributes can be set with the following commands.
* [[set3DENMissionAttributes]]
* [[set3DENMissionAttributes]]
* [[get3DENMissionAttribute]]
* [[set3DENMissionAttribute]]
 
To return a specific scenario attribute value use [[get3DENMissionAttribute]].
 
==== Sections & Properties ====
Use the following sections to return the scenario attribute values.
 
{| class="wikitable"
|-
! Display Name !! Section (Class Name)
|-
| Environment || <small>{{hl|Intel}}</small>
|-
| Multiplayer || <small>{{hl|Multiplayer}}</small>
|-
| Performance || <small>{{hl|GarbageCollection}}</small>
|-
| Preferences|| <small>{{hl|Preferences}}</small>
|}
 
The <small>{{hl|property}}</small> can be retrieved from the tables below.


== Attributes ==
== Attributes ==
=== Object ===
=== Object ===
{{:Category:Eden_Editor}}
 
{{:Eden Editor: Object}}


=== Composition ===
=== Composition ===
{{:Eden_Editor:_Composition}}
 
{{:Eden Editor: Composition}}
 
=== Trigger ===
=== Trigger ===
{{:Eden_Editor:_Trigger}}
 
{{:Eden Editor: Trigger}}
 
=== Waypoint ===
=== Waypoint ===
{{:Eden_Editor:_Waypoint}}
 
{{:Eden Editor: Waypoint}}
 
=== System ===
=== System ===
{{:Eden_Editor:_System}}
 
{{:Eden Editor: System}}
 
=== Marker ===
=== Marker ===
{{:Eden_Editor:_Marker}}
 
{{:Eden Editor: Marker}}
 
=== Scenario ===
=== Scenario ===
{{:Eden_Editor:_Scenario_Atttributes}}
 
{{:Eden Editor: Scenario Attributes}}
 
=== Comment ===
=== Comment ===
{{:Eden_Editor:_Comment}}
 
{{:Eden Editor: Comment}}
 


[[Category:Eden Editor: Editing|Setting Attributes]]
[[Category:Eden Editor: Editing|Setting Attributes]]
[[Category:Eden Editor: Modding|Setting Attributes]]
[[Category:Eden Editor: Modding|Setting Attributes]]

Latest revision as of 10:35, 25 June 2024

While Eden Editor Workspace behaves like a normal scenario and it is possible to modify entities using existing commands (e.g., setPosATL), such changes would be invisible for the editor and not saved to the scenario file.

Instead, the editor is using attributes to store all entity and scenario settings. Most commonly, the scenario designer can edit them using Attributes window available after double-clicking on an entity. Some are also edited directly, like position when dragging entities around.

When an attribute is changed, the functionality attached to it is also performed. Setting position attribute of an object will move it to the given position, and adjusting IntelWeatherStart attribute will change the weather. Using setPosATL or setOvercast commands would seemingly achieve the same, but without permanent effect - the changes would not be visible next time the scenario is loaded.


Scripting

A scenario designer is not the only one who can modify attributes. Scripted systems can access them as well, giving you an ability to write some automated systems.

Attributes are available only within the Eden Editor workspace. They cannot be accessed in scenario preview or exported scenario.

Setting Entity Attributes

To set an attribute, you need to know it is property and value type. Tables below will help you with that - look at the last two columns, labeled Development. For example to set player as invincible, we'll use Enable Damage attribute. You can see its class is allowDamage (corresponding with allowDamage command; most attributes are named this way) and its value type is Boolean. This is how the expression will look like:

player set3DENAttribute ["allowDamage", false];

You can also check for the attribute state:

_isInvincible = player get3DENAttribute "allowDamage";

Managing History

When setting attributes, each command execution would create a new history entry. When doing a batch change, the user would have to press undo for each entity modified, which would be uncomfortable. To prevent this, you can collect multiple changes together by wrapping them inside collect3DENHistory command:

Alternatively, you can use more set3DENAttributes command which is able to modify multiple entities at once already.

Setting Object Type

Objects also have the ItemType special attribute, which defines which object class will represent them (i.e., a soldier, a car, a house, etc.). It cannot be changed as a normal attribute, because it requires replacing the old model with the new one. There's a special command to handle this:

player set3DENObjectType "B_Soldier_F";

Setting Scenario Attributes

Scenario attributes can be set with the following commands.

To return a specific scenario attribute value use get3DENMissionAttribute.

Sections & Properties

Use the following sections to return the scenario attribute values.

Display Name Section (Class Name)
Environment Intel
Multiplayer Multiplayer
Performance GarbageCollection
Preferences Preferences

The property can be retrieved from the tables below.

Attributes

Object

Info Development
Name Category Description Property Type
Type Type Object type. Can be changed only to another type of the same side,

e.g., you can change BLUFOR Car to BLUFOR Helicopter, but not to OPFOR Car or a Prop.

ItemClass String
Variable Name Init Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. Name String
Init Init Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object. Init String
N/A Pylons Settings Pylons
Position Transformation World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. position Position3D
Rotation Transformation Local rotation in degrees. X is pitch, Y is roll and Z is yaw. rotation Number
Size Transformation Area size in meters. size3 Array
Shape Transformation Area shape.

Available options:

  • Ellipse
  • Rectangle
IsRectangle Boolean
Placement Radius Transformation Placement radius in meters. The entity will start at a random position within the radius. placementRadius Number
Player Control Player in singleplayer. When enabled, the character will also be available in multiplayer and team switch ('Playable' status cannot be disabled individually in such case). ControlSP Boolean
Playable Control When enabled, the character will appear as a slot in the multiplayer scenario lobby and in the list of roles available for team switch. ControlMP Boolean
Role Description Control Multiplayer role description visible in the multiplayer lobby. When undefined, the object type name will be used by default. description String
Lock States Vehicle lock. When locked, characters outside of the vehicle will be unable to get in and those already inside will be forbidden from leaving.

Available options:

  • Unlocked - Anyone can get in
  • Default - Group leaders and anyone who was ordered in by their group leader can get in
  • Locked - No one can get in
  • Locked for players - Anyone except for players can get in
lock Number
Skill States General AI skill. The attribute does not allow for decreasing it below 20%, because AI behavior would be too simplified. skill Number
Health / Armor States Object health / armor. When close to 0%, the object will be destroyed. Health Number
Fuel States Vehicle fuel. fuel Number
Ammunition States General vehicle ammo state. ammo Number
Rank States Character rank. When a group leader is killed, the subordinate with the highest rank will take over.

Available options:

  • Private
  • Corporal
  • Sergeant
  • Lieutenant
  • Captain
  • Major
  • Colonel
rank String
Stance States

Available options:

  • Default Stance
  • Lie Down
  • Crouch
  • Stand Up
unitPos
Enable Dynamic Simulation Special States Entity simulation is enabled only if the player or an enemy unit is nearby.

Note: Doesn't work on simple objects and it overwrites basic simulation settings.

dynamicSimulation Number
Wake-Up Dynamic Simulation Special States Controls unit capability to activate dynamically simulated entities. addToDynSimGrid Number
Enable Simulation Special States When disabled, the object will freeze and ignore any input or collisions.

Note: This option doesn't have any effect on dynamically simulated objects.

enableSimulation Boolean
Simple Object Special States When enabled, the object will behave like a map object (e.g. rocks or trees), which significantly saves performance. This option is available only for objects where it leads to improved performance.

Warning: If set, the setting is enforced at the start of the scenario and is irreversible during its runtime!

objectIsSimple Boolean
Show Model Special States Show model and collisions. Even when disabled, the object will be simulated normally (e.g., soldiers will still be able to move and shoot). hideObject Boolean
Enable Damage Special States Set if the object can receive any damage. When a vehicle is invincible, its crew can still be killed. allowDamage Boolean
Enable Stamina Special States Set whether the character should become tired when moving or not. When disabled for player, the stamina bar will be hidden completely. enableStamina Boolean
Revive Enabled Special States Enable revive for this unit. EnableRevive Boolean
Doors States Special States Set closed, locked or opened state for terrain object doors.

LMB - cycle between states RMB - close door (reset to default state) LMB + Alt - open door LMB + Shift - lock door LMB + Ctrl - close door

DoorStates
Local Only Special States When enabled, the object will exist as a local instance on every client. It will not be synchronized over the network. Use this primarily for static (decorative) objects in order to optimize large-scale scenarios. isLocalOnly Boolean
Name Identity Character name, by default automatically generated based on faction. unitName String
Face Identity Character face. face String
Call Sign Identity Call sign used in radio protocol (e.g., leader will order 'Kerry, fall back' instead of generic '2, fall back'). It doesn't affect character's actual name; consider changing it as well so they match together.

Available options:

  • No Call Sign
  • Miller
  • Reynolds
  • Armstrong
  • Nichols
  • Tanny
  • Frost
  • Lacey
  • Larkin
  • Kerry
  • Jackson
  • McKendrick
  • Levine
  • James
  • McKay
  • Hardy
  • Northgate
  • Adams
  • Bennett
  • Campbell
  • Dixon
  • Everett
  • Franklin
  • Givens
  • Hawkins
  • Lopez
  • Martinez
  • OConnor
  • Ryan
  • Patterson
  • Sykes
  • Taylor
  • Walker
  • Amin
  • Masood
  • Fahim
  • Habibi
  • Kushan
  • Jawadi
  • Nazari
  • Siddiqi
  • Takhtar
  • Wardak
  • Yousuf
  • Anthis
  • Costa
  • Dimitirou
  • Elias
  • Gekas
  • Kouris
  • Leventis
  • Markos
  • Nikas
  • Nicolo
  • Panas
  • Petros
  • Rosi
  • Samaras
  • Stavrou
  • Ghost
  • Stranger
  • Fox
  • Snake
  • Razer
  • Jester
  • Nomad
  • Viper
  • Korneedler
NameSound String
Voice Identity Radio voice used in group communication (e.g., target reporting). speaker String
Voice Pitch Identity Voice pitch. Higher number means higher voice. pitch Number
Insignia Identity Left shoulder insignia. Right shoulder insignia is reserved for a squad logo and cannot be changed by the scenario. unitInsignia String
Probability of Presence Presence Probability of presence evaluated at the scenario start. When it fails, the object is not created at all. presence Number
Condition of Presence Presence Condition of presence evaluated at the scenario start, must return boolean expression. When false, the object is not created at all. presenceCondition String
Equipment Storage Equipment Storage ammoBox String
Data Link Send Electronics & Sensors Vehicle will broadcast targets tracked by its sensors to any other unit on the same side with Data Link enabled. ReportRemoteTargets Boolean
Data Link Receive Electronics & Sensors Vehicle will receive targeting and positional data from any other broadcasting vehicle on the same side. ReceiveRemoteTargets Boolean
Data Link Position Electronics & Sensors Vehicle will broadcast its own position to any other unit on the same side with Data Link enabled. ReportOwnPosition Boolean
Emission Control Electronics & Sensors Radar EMCON rules for the AI

Available options:

  • Default - AI will use the Radar when in Aware or Combat behavior.
  • Active - AI will keep the Radar active and emitting at all times
  • Off - AI will keep Radar silent at all times
RadarUsageAI String


Composition

Apart from pre-defined groups and compositions, you can save and share your own custom compositions.

The following things will be saved with the composition:

  • Attribute values (inventory, simulation, simple object, etc.)
  • Layer structure (i.e. one can place comments in their own sub-layer for easy removal)
  • Layer visibility and transformation
  • Connections

Since Arma 3 logo black.png2.06, custom Eden Editor compositions are also available in Zeus.


Saving Compositions

To save a composition, select the entities in the scene, click right mouse button on one of them and pick the Save Custom Composition option (or use the 3den composition new.png button in the Asset Browser).

3den customCompositionSave.gif

A window will be opened where you can set a title, author and category for your composition.

In the list on the left, you can either choose to create a new composition, or overwite one of the existing ones. This way, you can edit already created compositions. To edit a composition's attributes, double-click on it, or select it and click on the Edit button (or use the 3den composition edit.png button in the Asset Browser). It will open a window where you can change the title, author and category again.

In order to delete a composition permanently, select it in list and then use the 3den composition delete.png button.


Placing Compositions

You can find compositions in Compositions > Custom. Place it just like any other entity - either select it and then click in the scene on desired position, or drag it from the list to the scene.

Vertical mode defines how the composition will be placed.
  • 3den vertical mode atl.png Terrain Level - composition will be snapped to the surface underneath. Please note that objects which are placed on another objects may no longer be positioned precisely.
  • 3den vertical mode asl.png Sea Level - the composition will be placed exactly as it was saved, ignoring surface slope. This option may work better for complex compositions, especially when manually lowering the entities after placing.

If you need to correct the position or rotation of a placed composition it is recommended to use the Translation Widget and Rotation Widget. This way, relative position and orientation of all entities in the composition will be preserved.

If you do not want each composition to be placed in its own layer turn off Automatic Composition Layering which can be found in Settings... -> Preferences... -> Misc.


Publishing Compositions

You can also publish your compositions to Steam Workshop. Do so by selecting the saved composition in the Asset Browser, and then using the 3den composition publish.png button there.

A publishing window will be opened where you can enter a name, description, visibility setting, image, and various tags. After agreeing with the Workshop license, you are free to publish the composition and share the link with others.

3den composition publishing.gif

Creating a Screenshot

In order for your composition to be found easier in the Steam Workshop you should add a meaningful screenshot. It is very easy to do so:

  • Place your composition
  • Move the Eden Editor camera so that only the composition is visible
  • Press the Backspace button to hide the Eden Editor interface
  • Press F12 (or the key you have assigned for screenshots in your steam application)
  • Select your screenshot in the publish composition UI by pressing the Browse... button, navigate to Steam screenshots and select the previously taken screenshot
3den composition publishing screenshot.gif


Republishing Compositions

Updating a composition that was already published is effectively the same as the first time. Select the composition and use 3den composition publish.png. In the publishing window, select your already published composition on the left. Consider entering relevant change notes and publish.


Unpublishing Compositions

In order to unpublish a composition from within Eden Editor, open the publishing window by selecting any saved composition and using the 3den composition publish.png button. Now select the published composition in the list on the left and press DELETE.


Subscribing to Compositions

You can easily find all published compositions made by yourself and others by selecting the 3den composition publish.png Steam subscribed content entry in the Asset Browser, and then pressing the 3den composition publish.png button. This will open a Steam overlay with the Workshop opened and compositions filtered. Soon after subscribing to any number of composition items there, the game should download these in the background. Large compositions may take a brief while to download and appear. They will then be listed in the Asset Browser, ready for regular placement. Note that certain compositions require placement using a specific vertical mode to work correctly (see above).


Unsubscribing from Compositions

To unsubscribe from a Workshop composition from within Eden Editor, select it in the Asset Browser and press the 3den composition delete.png button. Note that you should look for compositions listed under 3den composition publish.png Steam subscribed content, otherwise you may accidentally delete a local composition instead.


Local Files

Compositions are saved in the Compositions folder in your Profile directory.

They can be shared freely - if you pack a composition folder into a *.zip file and make it available for download, people who place the unpacked composition to their Compositions folder will have it available as well.


Modding Compositions

It is possible for mods to add their own compositions. The mod needs to register them in config (see the Example below) for them to be loaded and displayed in groups tabs in Eden and Zeus.

Init scripts and all other composition features are supported.

Modded Compositions can be used as replacement for CfgGroups and the arsenal can be used in compositions, thus removing the need to make custom hidden unit classes with custom loadouts in order to construct a group. Note that placement-wise, compositions are slightly less efficient than using CfgGroups.

Example

class CfgEditorCategories
{
	class EdCat_NATO // CfgGroups NATO
	{
		displayName = "$STR_A3_CfgGroups_West_BLU_F0";
	};
};

class CfgEditorSubcategories
{
	class EdSubcat_Armored // CfgGroups Armored
	{
		displayName = "$STR_A3_CfgGroups_West_BLU_F_Armored0";
	};
};

class Cfg3DEN
{
	class Compositions
	{
		class ModTag_MyComposition1 // one class per composition
		{
			path = "edenCompositionTestmod\compositionTank";	// pbo path to a folder containing header.sqe/composition.sqe files
			side = 0;											// 0 opfor, 1 blufor, 2 indfor, 3 civ, 8 Empty/Props
			editorCategory = "EdCat_NATO";						// link to CfgEditorCategories
			editorSubcategory = "EdSubcat_Armored";				// link to CfgEditorSubcategories
			displayName = "$STR_Composition_Armored01";
			icon = "\A3\ui_f\data\map\markers\nato\b_inf.paa";	// left side icon in groups list
			useSideColorOnIcon = 1;								// 1 == icon is always colored in faction color
		};
	};
};

Automating Composition Creation

It's possible to automate the creation of compositions. This is extremly helpful for maintaining a large number of compositions.

Always make a backup of your composition folder before running this script. It will overwrite existing compositions!

0 spawn { private _compositionLayers = []; // Get all layers that follow a naming scheme all3DENEntities # 6 apply { private _name = _x get3DENAttribute "name" select 0; if ("SPE_Comp_" in _name) then { _compositionLayers pushBack [_name, _x]; }; }; // Loop though all layers { _x params ["_name", "_ID"]; // Get the entities private _entities = get3DENLayerEntities _ID; // Select the entities so do3DENAction works set3DENSelected _entities; // Open the create composition dialog do3DENAction "CreateCustomComposition"; // Make sure it's open waitUntil { !(isNull findDisplay 317) }; // Set the layer name as composition name in the dialog findDisplay 317 displayCtrl 95 ctrlSetText _name; // Close the dialog by activating the OK button ctrlActivate (findDisplay 317 displayCtrl 1); // Add a small delay sleep 0.1; } forEach _compositionLayers; };

Trigger

Info Development
Name Category Description Property Type
Variable Name Init Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. name String
Text Init Trigger description. Players can see it in the radio menu when its activation is set to 'Radio'. Also visible in tooltip when hovering over the trigger in the editor. text String
Position Transformation World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. position Position3D
Rotation Transformation Local rotation in degrees. X is pitch, Y is roll and Z is yaw. rotation Number
Size Transformation Area size in meters in format [a, b, c]. size3 Array
Shape Transformation Area shape.

Available options:

  • Ellipse
  • Rectangle
IsRectangle Boolean
Type Activation Trigger type, determines special behavior upon activation.

Available options:

  • None - No other effects except of those defined by 'On Activation' expression.
  • Guarded by BLUFOR/OPFOR/Independent - The trigger position becomes a point to be guarded by the given side. Groups with a 'Guard' waypoint will protect all guard points in the scenario, prioritizing them by the distance and order in which they were placed (the first placed is the most important).
  • Skip Waypoint - Meant to work with a waypoint linked to the trigger using the 'Set Waypoint Activation' connection. Once activated, the trigger will force the waypoint to skip. Particularly useful for 'Hold' or 'Guard' waypoint types, which do not complete automatically.
  • End #1/#2/#3/#4/#5/#6 - Complete the scenario successfully.
  • Lose - Fail the scenario.
TriggerType String
Activation Activation What or who can activate the trigger. Some options further depend on 'Activation Condition'.

Available options:

  • None - No default activation, only a custom condition expression can activate the trigger.
  • Any Player - Activated when any player of the given side satisfies the 'Activation Condition'.
  • Anybody - Activated when any object satisfies the 'Activation Condition'.
  • BLUFOR/OPFOR/Independent/Civilian Game Logic - Activated when any object of the given side satisfies the 'Activation Condition'.
  • Seized by BLUFOR/OPFOR/Independent - Activated when the given side is in control of the area. Strength matters, which means one tank can be in control of an area while ten enemy infantrymen are still present.
  • Radio Alpha/Bravo/Charlie/Delta/Echo/Foxtrot/Golf/Hotel/India/Juliet - Activated by a player using a radio command (accessible for the player by pressing 0-0 on a standard keyboard). The trigger's 'Text' will be used as the command title.
ActivationBy String
Activation Activation What or who can activate the trigger. Some options further depend on 'Activation Type'. The available options are specific to the connected trigger owner.

Available options:

  • Owner Only - Activated when the connected trigger owner (or its vehicle, if the owner is a crew member) satisfies the 'Activation Condition'.
  • Whole Group - Activated when all the owner's group members satisfy the 'Activation Condition'.
  • Group Leader - Activated when leader of the owner's group satisfies the 'Activation Condition'.
  • Any Group Member - Activated when anyone from the owner's group satisfies the 'Activation Condition'.
activationByOwner String
Activation Type Activation Condition of the 'Activation' attribute.

Available options:

  • Present - Activated when objects are in the area.
  • Not Present - Activated when objects are not in the area.
  • Detected by BLUFOR/OPFOR/Independent/Civilian - Activated when objects are in the area and are discovered by the given side.
activationType String
Repeatable Activation Repetition rules. When enabled, the trigger can be activated again once deactivated. repeatable Boolean
Server Only Activation When enabled, the trigger will only be created and evaluated on the server. isServerOnly Boolean
Condition Expression Repeatedly calculated condition, must return boolean expression. When true, the trigger will be activated.

Passed variables are:

  • this - boolean value of activation condition
  • thisList - list of all objects in trigger area, based on 'Activation'
  • thisTrigger - trigger object
condition String
Interval Expression How frequently the trigger condition is evaluated in seconds. triggerInterval Number
On Activation Expression Expression executed once the trigger is activated.

Passed variables are:

  • thisList - list of all objects in trigger area, based on 'Activation'
  • thisTrigger - trigger object
onActivation String
On Deactivation Expression Expression executed once the trigger is deactivated.
This only concerns Repeatable triggers.

Passed variables are:

  • thisTrigger - trigger object
onDeactivation String
Timer Type Timer Type of activation timer.

Available options:

  • Countdown - Once the conditions are met, the trigger will activate after the specified amount of time has elapsed.
  • Timeout - The trigger's conditions must be satisfied for the specified duration for the trigger to be activated.
interuptable Boolean
Timer Values Timer Timer values in seconds, selected randomly in a range from Min to Max, gravitating towards Mid. timeout Array in format [min, mid, max]
Effect Condition Effects Condition for effects to be played, must return boolean expression. effectCondition String
Sound Effects Sound played upon activation. sound String
Voice Effects Sound spoken by the first unit which activated the trigger. voice String
Environment Effects Environment sounds played upon activation. soundEnvironment String
SFX Effects Sound effect played by the trigger upon activation. Repeats as long as the repeatable trigger is active or forever for non-repeatable triggers. soundTrigger String
Music Effects Music played upon activation. Replaces previously playing music track. music String
UI Overlay Effects User interface overlay shown upon activation. title String


Waypoint

Info Development
Name Category Description Property Type
Type Type Waypoint type defines what the group will do when the waypoint becomes active, and the condition when it becomes completed. Applies mainly to AI-led groups, as players will not be prompted to perform any specific actions, even though the waypoint completion condition is the same.

Some waypoints have special attributes, which are only available the next time you access the attribute window.

itemClass String
Description Init Text visible for the player next to the waypoint icon in the scene. description String
Order Init Order in which waypoints follow. When changing order, the waypoint will take position of the selected one, pushing all other further down. order
Identified Init System name of the waypoint, used for identification in scripts. name String
Position Transformation World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. position Position3D
Placement Radius Transformation Placement radius in meters. The entity will start at a random position within the radius. placementRadius Number
Completion Radius Transformation Distance in meters in which a group member has to be in order for the waypoint to be considered completed. completionRadius Number
Combat Mode State Controls how and when the group will choose to engage enemy targets.

Available options:

  • Unchanged - No change compared to the previous state.
  • Forced Hold Fire - The group will never fire under any circumstances.
  • Do Not Fire Unless Fired Upon, Keep Formation - Group members will hold fire unless directly threatened.
  • Do Not Fire Unless Fired Upon - Group members will move into positions from which they can shoot at the enemy, but will hold fire unless directly threatened.
  • Open Fire, Keep Formation - Default combat mode. Group members will fire upon any target in range, while staying in formation. The group leader may order individual members to engage specific targets.
  • Open Fire - Group members will fire at any suitable target in range, leaving the formation to find a suitable shooting position.
combatMode String
Behavior State Behavior pattern of the group.

Available options:

  • Unchanged - No change compared to the previous state.
  • Careless - The same as 'Safe', except that it will not be switched automatically after spotting a threat. Use with caution, player may perceive AIs in this behavior as defective.
  • Safe - Non-combat behavior. Characters have weapons lowered. Vehicles follow roads and use lights. They automatically switch to 'Aware' upon spotting a threat.
  • Aware - Default behavior. Characters are in ready position. Vehicles prefer roads, do not use lights and their passengers will disembark to counter threats.
  • Combat - Firefight behavior. Characters break formation and take cover. Vehicles ignore roads and do not use lights.
  • Stealth - Characters break formation and move cautiously, preferring cover and going prone. Vehicles prefer roads, but do not use lights.
behaviour String
Formation State Default group formation. Based on the combat mode, group members may ignore the formation in 'Combat' and 'Stealth' modes.

Available options:

  • Unchanged
  • Wedge
  • Vee
  • Line
  • Column
  • File
  • Staggered Col.
  • Echelon L.
  • Echelon R.
  • Diamond
formation String
SpeedMode State Default travel speed of the group. In Combat and Stealth behavior modes, group members will try to prioritize this setting.

Available options:

  • Unchanged
  • Limited
  • Normal
  • Full
speedMode String
Condition Expression Repeatedly calculated condition, must return boolean expression. When the waypoint type conditions are met and this expression returns true, the waypoint is completed.

Passed variables are:

  • this - group leader
  • thisList - array with all group members
condition String
On Activation Expression Expression called when the waypoint is completed.

Passed variables are:

  • this - group leader
  • thisList - array with all group members
onActivation String
Script Expression Script executed when 'SCRIPTED' waypoint type is selected. The waypoint will be completed once the script is finished. script String
Map Visibility Visibility Make the waypoint visible for the player on the map. show2D Boolean
Scene Visibility Visibility Make the waypoint visible for the player in the scene. show3D Boolean
Timer Values Timer Time in seconds passed between when the waypoint would be considered complete and when it actually completes. Selected randomly in a range from Min to Max, gravitating towards Mid. timeout Array in format [min, mid, max]
Effect Condition Effects Condition for effects to be played, must return boolean expression. effectCondition String
Sound Effects Sound played upon activation. sound String
Voice Effects Sound spoken by the first unit which activated the trigger. voice String
Environment Effects Environment sounds played upon activation. soundEnvironment String
Music Effects Music played upon activation. Replaces previously playing music track. music String
UI Overlay Effects User interface overlay shown upon activation. title String


System

Info Development
Name Category Description Property Type
Type Type itemClass String
Variable Name Init Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. Name String
Init Init Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object. Init String
Position Transformation World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. position Position3D
Rotation Transformation Local rotation in degrees. X is pitch, Y is roll and Z is yaw. rotation Array
Size Transformation Area size in meters. size2 Array
Size Transformation Area size in meters. size3 Array
Shape Transformation Area shape.

Available options:

  • Ellipse
  • Rectangle
IsRectangle Boolean
Placement Radius Transformation Placement radius in meters. The entity will start at a random position within the radius. placementRadius Number
Player Control Player in singleplayer. When enabled, the character will also be available in multiplayer and team switch ('Playable' status cannot be disabled individually in such case). ControlSP Boolean
Playable Control When enabled, the character will appear as a slot in the multiplayer scenario lobby and in the list of roles available for team switch. ControlMP Boolean
Role Description Control Multiplayer role description visible in the multiplayer lobby. When undefined, the object type name will be used by default. description String
Probability of Presence Presence Probability of presence evaluated at the scenario start. When it fails, the object is not created at all. presence Number
Condition of Presence Presence Condition of presence evaluated at the scenario start, must return boolean expression. When false, the object is not created at all. presenceCondition String


Marker

Info Development
Name Category Description Property Type Correspondence
Type Type Icon texture. itemClass String markerType
Variable Name Init Unique system name. Can contain any characters. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. markerName String createMarker
Text Init Text displayed right from the marker. text String markerText
Position Transformation World coordinates in meters. X goes from West to East and Y from South to North. position Position3D markerPos
Size Transformation Marker A and B size. size2 Array markerSize
Rotation Transformation Rotation in degrees. rotation Number markerDir
Shape Style Marker shape. The marker has to be created as shape marker, for this use "" empty string as class name with create3DENEntity, this will create rectangular marker.

Available options:

  • 0 - rectangle
  • 1 - ellipse
markerType Number markerShape
Brush Style Area fill texture. brush String markerBrush
Color Style Marker color. 'Default' is based on the selected marker type. baseColor Array markerColor
Alpha Style Transparency. When the icon marker has a shadow, it will be visible behind the transparent icon. alpha Number markerAlpha


Scenario

General

Info Development
Name Category Description Property Type
Title Presentation Scenario name. Appears in the scenarios menu, multiplayer lobby and loading screens. Use @STR_ prefix to link to localization keys. IntelBriefingName String
Author Presentation Scenario author. Appears in the scenarios menu and in loading screens. Author String
Picture Overview Path to overview picture visible in the scenarios menu. When no loading screen picture is defined, this will be used in loading screen instead. OverviewPicture String
Text Overview Short overview text visible in the scenarios menu. When no loading screen text is defined, this will be used in loading screens instead. Use @STR_ prefix to link to localization keys. OverviewText String
DLC Overview When set, the overview image will be overlaid with a DLC frame indicating the scenario belongs to the DLC. AppId Number
Require DLC Overview Sets if the DLC is required. When checked, the player will not be able to play the scenario if the DLC is not owned. AssetType String
Picture Overview (Locked) Path to the overview picture visible in the scenarios menu. When no loading screen picture is defined, this will be used in the loading screen instead. OverviewPictureLocked String
Text Overview (Locked) Short overview text visible in the scenarios menu when the scenario is locked (see 'Unlock' category for more details). Use @STR_ prefix to link to localization keys. OverviewTextLocked String
Picture Loading Screen Path to the picture visible in the loading screens before and during the scenario. LoadScreen String
Text Loading Screen Short text visible in loading screens before and during the scenario. Use @STR_ prefix to link to localization keys. OnLoadMission String
Show Briefing States When disabled, the scenario will start automatically after the loading, without showing the briefing. Valid only for singleplayer scenarios. Briefing Boolean
Show Debriefing States When disabled, the debriefing screen will not be shown when the scenario is completed. Debriefing Boolean
Enable Saving States When disabled, the 'SAVE' option in the pause menu will be disabled and scripted autosaves will not do anything. Saving Boolean
Show Map States When disabled, a black screen is shown instead of the map. Tasks, notes and other information will remain accessible. Can also be achieved by removing the map from the player's inventory. ShowMap Boolean
Show Compass States When disabled, the compass will not be available either on the map, or in the scene after pressing the 'Compass' key. Can also be achieved by removing the compass from the player's inventory. ShowCompass Boolean
Show Watch States When disabled, the watch will not be available in the scene after pressing the 'Watch' key. Can also be achieved by removing the watch from the player's inventory. ShowWatch Boolean
Show GPS States When disabled, the GPS minimap will not be available in the scene after pressing the 'GPS' key. Can also be achieved by removing the GPS from the player's inventory. ShowGPS Boolean
Show HUD States When disabled, on-screen information such as weapon information or the command menu will be hidden. ShowHUD Boolean
Show UAV Feed States When disabled, the UAV feed will not be available in the scene after pressing the 'AV Camera' key. ShowUAVFeed Boolean
Advanced Flight Model States When enabled, all player controlled helicopters will use the advanced flight model. ForceRotorLibSimulation Boolean
Debug Console States Determines debug console availability

Available options:

  • Available only in editor
  • Available for the host or logged-in admin
  • Available for everyone
EnableDebugConsole Number
Unlocked Keys Unlock Keys needed to mark the scenario as completed in the scenarios menu. Can be multiple words divided by a semicolon. Key can be activated using 'activateKey' scripting command. Does not affect the multiplayer and campaign scenarios, and the scenarios downloaded from Steam. DoneKeys Array
Required Keys Unlock Keys required for mission to be available for playing from the scenarios menu. Can be multiple words divided by a semicolon. Does not affect the multiplayer and campaign scenarios. Keys Array
Required Keys Limit Unlock The number of required keys to be active for the mission to be unlocked. KeysLimit Number
Init Init Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object.
Despite the tooltip saying that 'this' refers to the affected object, it does not. There are no arguments passed to this attribute!
This attribute behaves similar to the init.sqf.
Init String
Independents Allegiance Misc Sets who the Independent side will be friendly to. The value is shared across all scenario phases. IntelIndepAllegiance Array in format [west:Number,east:Number]
Binarize the Scenario File Misc When true, the *.sqm file will be binarized. The process saves loading time, but makes the file uneditable in a text editor. SaveBinarized Boolean

Environment

Info Development
Name Category Description Property Type
Date Date Starting date. IntelDate Array in format [year, month, day]
Time Date Starting time of the day. Please note that the sunrise and sunset times are influenced by the date (e.g., days are shorter in winter) and the longitude and latitude of the terrain. IntelTime Number
Time of Changes Weather Forecast Delay until all forecasted weather values take effect. IntelTimeOfChanges Number
Overcast Start Overcast Initial cloud cover. Unless set manually, this value also affects rain, lightning, waves, wind and gusts values. IntelWeatherStart Number
Overcast Forecast Overcast Forecasted cloud cover. IntelWeatherForecast Number
Fog Start Fog Initial fog. Strength affects not only how far player can see, but also limits the sight of AI entities. IntelFogStart Number
Fog Forecast Fog Forecasted fog. IntelFogForecast Number
Manual Override Rain Enables manual settings in this category. When disabled, the engine will calculate the values automatically. IntelRainIsForced Boolean
Rain Start Rain Initial rain strength. Applied only when the cloud cover is already bad, i.e., a high value is ignored when the weather is sunny. IntelRainStart Number
Rain Forecast Rain Forecasted rain strength. IntelRainForecast Number
Manual Override Lightnings Enables manual settings in this category. When disabled, the engine will calculate the values automatically. IntelLightningIsForced Boolean
Lightnings Start Lightnings Initial frequency of lightning. Applied only when the cloud cover is already bad, i.e., a high value is ignored when the weather is sunny. IntelLightningStart Number
Lightnings Forecast Lightnings Forecasted frequency of lightning. IntelLightningForecast Number
Manual Override Waves Enables manual settings in this category. When disabled, the engine will calculate the values automatically. IntelWavesIsForced Boolean
Waves Start Waves Initial waves size. Applied independently of cloud cover settings. IntelWavesStart Number
Waves Forecast Waves Forecasted waves size. IntelWavesForecast Number
Manual Override Wind Enables manual settings in this category. When disabled, the engine will calculate the values automatically. IntelWindIsForced Boolean
Wind Start Wind Initial wind strength. Together with wind direction, it influences how clouds, smoke, vegetation or flags are moving. IntelWindStart Number
Wind Forecast Wind Forecasted wind strength. IntelWindForecast Number
Gusts Start Wind Initial gusts strength. Gusts are randomly changing wind direction. The worse the cloud cover, the stronger and more frequent the changes. IntelWindGustStart Number
Gusts Forecast Wind Forecasted gusts value. IntelWindGustForecast Number
Direction Start Wind Initial wind direction. IntelWindDirectionStart Number
Direction Forecast Wind Forecasted wind direction. IntelWindDirectionForecast Number

Multiplayer

Info Development
Name Category Description Property Type
Game Type Type Scenario type shown in the server browser and in the loading screen. GameType String
Min Players Type Minimum number of required players. MinPlayers Number
Max Players Type Minimum number of allowed players. MaxPlayers Number
Summary Lobby Short summary shown in the scenario lobby. IntelOverviewText Structured Text
Enable AI Lobby When AI is enabled, all playable characters are created at the scenario start, controlled by AI. Upon joining, a player takes control of an existing character.

When AI is disabled, a new character is created for each connecting player. Server host can disable AI even when it is allowed by default.

DisabledAI Boolean
Auto Assign Slots Lobby When enabled, arriving players will be first assigned to the side with the lowest number of players. Valid only for scenarios with multiple playable sides involved. JoinUnassigned Boolean
Respawn Respawn Character respawn type. Defines what happens to players and playable characters after they die in multiplayer scenarios. Has no effect in singleplayer scenarios.

Available options:

  • Disabled - No respawn.
  • Respawn on Custom Position - Respawn on a position defined by the marker with a specific prefix in the name. When multiple ones are available, a random one is selected.
  • respawn - position available for all sides
  • respawn_west - BLUFOR respawn
  • respawn_east - OPFOR respawn
  • respawn_guerrila - Independent respawn
  • respawn_civilian - Civilian respawn
Because these are prefixes, anything can follow them, e.g., respawn_1, respawn_west_base, etc.
  • Respawn on Position of Death - Respawn where killed, even if the dead body moved.
  • Switch to Group Member - Take control of the next available group member. When none are left, 'Switch to Spectator' respawn is used instead.
  • Switch to Side Member - Pick a character on the same side to take control of. When none are left, 'Switch to Spectator' respawn is used instead.
  • Switch to Spectator - Spectate the scenario without being directly involved.
Respawn Number
Rulesets Respawn Specific respawn rulesets based on currently selected 'Respawn'. RespawnTemplates Array
Respawn Delay Respawn Time in seconds after which players respawn. RespawnDelay Number
Vehicle Respawn Delay Respawn Time in seconds after which vehicles respawn. RespawnVehicleDelay Number
Show Scoreboard Respawn When enabled, the scoreboard is shown while waiting for respawn. May be subdued by some respawn rulesets. RespawnDialog Boolean
Allow Manual Respawn Respawn When enabled, players will have the option to manually respawn in the pause menu. RespawnButton Boolean
Enable Team Switch Respawn When enabled, players will be able to manually switch to any other playable character in the scenario not controlled by another player. EnableTeamSwitch Boolean
Allow AI Score Respawn When enabled, the score of playable characters controlled by AI will appear on the scoreboard. AIKills Boolean
Shared Objectives Tasks Sets if tasks assigned to friendlies are visualized to player and who can assign/unassign tasks.

Available options:

  • Disabled - Tasks assigned by friendlies are not marked.
  • Enabled - Tasks assigned by friendlies are marked to player.
  • Enabled with Task Propagation - Tasks assigned by friendlies are marked to player, but only group leaders can assign and unassign tasks. Task assignment changes are automatically propagated to subordinates.
SharedObjectives String
Revive Mode Revive Controls who can be incapacitated and who can revive others.

Available options:

  • Disabled - Revive is completely disabled. All players will die immediately.
  • Enabled for all players - Revive is enabled for all players.
  • Controlled by player Attributes - Only players with Revive enabled in their Attributes are effected.
ReviveMode String
Required Trait Revive Controls the specialty required to revive others.

Available options:

  • None - Anyone can revive.
  • Medic - Only players with the 'Medic' trait can revive.
ReviveRequiredTrait String
Required Items Revive Controls the item required to revive others.

Available options:

  • None - No special item is required in order to revive.
  • Medikit - The 'Medikit' item is required in order to revive.
  • First Aid Kit / Medikit - 'Medikit' or 'First Aid Kit' items are required in order to revive.
ReviveRequiredItems String
Revive Duration Revive Controls the time it takes to revive someone. ReviveDelay String
Medic Speed Multiplier Revive Controls how much faster a medic revives someone. ReviveMedicSpeedMultiplier String
Force Respawn Duration Revive Controls how long it takes to force respawn while incapacitated. ReviveForceRespawnDelay String
Incapacitation Mode Revive Controls the level of simulation involved in triggering incapacitation.

Available options:

  • Basic - Players will always enter the incapacitated state.
  • Advanced - Extensive wounds will kill players instantly.
ReviveUnconsciousStateMode String
Bleed Out Duration Revive Controls how long it takes an incapacitated unit to bleed out. ReviveBleedOutDelay String

Garbage Collection

Info Development
Name Category Description Property Type
Minimum distance Garbage Collection The minimum distance from any player. Set the value to 0 to remove the min. distance. MinPlayerDistance Number
Character Corpses Garbage Collection AttributeSystemSubcategory
Mode Garbage Collection Garbage collecting mode.

Available options:

  • None
  • All scenario objects
  • Only objects that can respawn
  • Only objects that cannot respawn
CorpseManagerMode Number
Limit Garbage Collection Maximum allowed number of dead bodies in the scenario. CorpseLimit Number
Min Delay Garbage Collection Time in seconds before a dead body is removed when the number of dead bodies exceeds the 'Limit'. CorpseRemovalMinTime Number
Max Delay Garbage Collection Time in seconds before a dead body is removed when the number of dead bodies is below or equals the 'Limit'. CorpseRemovalMaxTime Number
Vehicle Wrecks Garbage Collection AttributeSystemSubcategory
Mode Garbage Collection Garbage collecting mode.

Available options:

  • None
  • All scenario objects
  • Only objects that can respawn
  • Only objects that cannot respawn
WreckManagerMode Number
Limit Garbage Collection Maximum allowed number of dead bodies in the scenario. WreckLimit Number
Min Delay Garbage Collection Time in seconds before a dead body is removed when the number of dead bodies exceeds the 'Limit'. WreckRemovalMinTime Number
Max Delay Garbage Collection Time in seconds before a dead body is removed when the number of dead bodies is below or equals the 'Limit'. WreckRemovalMaxTime Number
Enable Dynamic Simulation Dynamic Simulation Turns on the 'Dynamic Simulation' system. Only entities and groups with the 'Dynamic Simulation' will be affected. DynSimEnabled
Characters Dynamic Simulation DynSimDistGroup
Manned Vehicles Dynamic Simulation DynSimDistVehicle
Props Dynamic Simulation DynSimDistProp
Empty Vehicles Dynamic Simulation DynSimDistEmptyVehicle
Is Moving Dynamic Simulation Multiplies activation distance of non-static entity by set value. DynSimMovingCoef
Limit by View Distance Dynamic Simulation Limits all activation distances to player's object view distance. Dynamically simulated entities beyond the object view distance will be disabled. DynSimSaturateByObjDist


Comment

Info Development
Name Category Description Property Type
Title Init Text displayed above the comment icon. Name String
Tooltip Init Text displayed as a tooltip when hovering over the comment icon. Description String
Position Init World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. position Position3D
Rotation Init Local rotation in degrees. X is pitch, Y is roll and Z is yaw. rotation Number