WW4 Extended - Extra features

Manual

I. Game logics

1. Unit scripts

Rucksacks

Enabling the rucksacks

Use

Advanced

Rucksack scripts

Removing rucksacks and their magazines

Replacing rucksacks with invisible versions

Adding bandages to the rucksacks

Disposable launchers

Aircraft scripts

Land vehicle scripts

Tracers

Bullet cracks

Flyby sounds

Blocking smoke grenades

Suppressive fire

Smoke throwing

Dust effects

High dispersion magazine replacer

Fixed limited speed

Delete dead bodies

Remove pistols

Enable all

Enable all but launchers

Forced effects

Hit

Flare launching

2. Player features

Sight switching

Use

Sniper rifle zeroing

Enabling the zeroing system

Use

Advanced

WW4 EXT Menu

Enabling the menu in your mission

Use

Menu buttons

Orders

Squad

Support

Options

3. Time & Weather

Sandstorm (fixed)

Sandstorm with sound

Advanced

Mist (dense)

Mist (sparse)

Snow (fixed)

Blizzard

Advanced

Dust wind (fixed)

Random weather

Random weather (no fog change)

Random time

4. Support

CAS

Advanced

Marker

Global variables

Fire support

Advanced

Marker

A.I. awareness

Global variables

Transport

Advanced

Marker

Global variables

General global variables

II. Scripts and other features

1. Custom faces

Available custom faces

Applying custom faces to units who don’t start with one

Applying custom faces to the crew of a vehicle

Changing the custom face of a group

Excluding a unit from the custom faces system

Including a unit back to the custom faces system

Stopping the custom faces system for a whole group

2. G.I. Glasses

3. Applying EXT inits to non-EXT units

Infantry

Land vehicles

Air vehicles

4. Calling artillery strikes for A.I.

III. Addendum

How to create a description.ext file

Troubleshooting

I’ve created the file, but the mission doesn’t detect it

I. Game logics

All the features listed here are disabled by default. To enable them you must place in the mission editor the corresponding game logic, found in the Game Logic side (accessible through the unit’s window, as long as you’ve placed the player already).

1. Unit scripts

All the listed game logics can be found in the WW4 EXT/Unit scripts list.

When enabled, these features are applied to all the EXT units, those present in the mission editor and any further dynamically spawned during the mission.

Rucksacks

Logics: RUCKSACKS/ Enable rucksacks (A.I. & players) or RUCKSACKS/ Enable rucksacks (only players)

Included in the "Enable all" logic

Rucksacks allow both A.I. units and players to carry more ammunition and gear than they normally can in vanilla OFP/CWA. The content of the rucksacks can be found in the pistol slots of the inventory screen of each unit. To use them you must unpack them first. If you just drop them as is you won’t be able to use them. You can find below instructions about how to unpack them.

If enabled, A.I. units are able to use the rucksacks the same way players do. Units will grab magazines from their rucksacks when they run out of ammo, and will also share their extra ammo when a teammate (be it players or A.I.) requests it. This process is fully automated.

Note that since v1.0 units use an invisible variant of the rucksacks. These are as functional as the previous visible ones, the only difference being that you can’t see them. Also, rucksacks are placed in the secondary weapon slot. This means that it’s not possible to equip units that already use a secondary weapon (AT gunners, etc) with a rucksack.

Enabling the rucksacks

Place in the mission editor either the Enable All or the RUCKSACKS/ Enable rucksacks (A.I. & players) game logic. If you only want to enable rucksacks for the player(s) you can use RUCKSACKS/ Enable rucksacks (only players) instead.

If you want units to wear invisible versions of the rucksacks place the RUCKSACKS/ Invisible rucksacks (if enabled) logic. This option is included in the Enable all logic and it’s activated by default.

Use

To take a magazine out of a rucksack you need to do the following:

  1. Select the rucksack in the actions menu (usually named Weapon Ruck (<name of the rucksack magazine>))
  2. Select the desired mag in the actions menu if it isn't selected already and reload it
  3. Use your Fire key (by default, left mouse button or the Left Control key)
  4. Your unit will crouch and place a single magazine on the ground
  5. Pick up the magazine you just dropped.

Don't take too long to pick up the dropped magazine, as it will disappear after a couple minutes.

Advanced

Rucksack scripts
Removing rucksacks and their magazines

Single unit:

[this] exec "\WW4EXT_scripts\remove_rucksack.sqs";

Group:

{[_x] exec "\WW4EXT_scripts\remove_rucksack.sqs"} forEach units this;

Replacing rucksacks with invisible versions

Included in the "Enable all" logic

Single unit:

[this] exec "\WW4EXT_scripts\replace_rucksack.sqs";

Group:

{[_x] exec "\WW4EXT_scripts\replace_rucksack.sqs"} forEach units this;

Adding bandages to the rucksacks

All units should have an empty slot reserved for bandages. You can assign these bandages to any unit or group with the commands below.

Single unit:

[this] exec "\WW4EXT_scripts\add_bandage.sqs";

Group:

{[_x] exec "\WW4EXT_scripts\add_bandage.sqs"} forEach units this;

Disposable launchers

Logic: WEAPONS/ Enable disposable launchers

Included in the "Enable all" logic

Anti-tank launchers will be automatically removed from the units inventory (be it a player or an A.I.) after it’s been fired. Only launchers that are disposable in real life will be removed.

Aircraft scripts

Logic: VEHICLES/ Enable aircraft scripts

Included in the "Enable all" logic

Enables rotor dust effects for helicopters and the ability to automatically launch countermeasures (flares) when shot at with a rocket or missile.

Land vehicle scripts

Logic: VEHICLES/ Enable land vehicle scripts

Included in the "Enable all" logic

Enables the display of bullet casings for vehicles with a mounted machinegun. It also activates the Shtora active protection system for the T-90, which can deviate incoming rockets and missiles.

Tracers

Logic: WEAPONS/ Enable tracers for vehicles and M/MGs

Included in the "Enable all" logic

Enables the display of custom bullet tracers for light, medium and heavy machine guns, both for infantry and vehicles. Unlike the vanilla OFP tracers, these ones are only displayed every 5 shots and are a closer representation of the real thing (way less pewpew lazerz! than vanilla).

Bullet cracks

Logic: WEAPONS/ Enable bullet cracks

Included in the "Enable all" logic

Enables bullet crack sounds when bullets fly near the player’s position. Unlike the rest of features, this one only works reliably in single player.

Flyby sounds

Logic: VEHICLES/ Enable jet flyby sounds for planes

Included in the "Enable all" logic

Enables flyby sounds when jet planes fly near the player’s position.

Blocking smoke grenades

Logic: WEAPONS/ Enable block A.I. "vision" for smoke grenades

Included in the "Enable all" logic

Smoke grenades will generate an invisible object that blocks vision for the A.I..

Note that the shape of the invisible object might not cover the real placement of the smoke, as there’s no way in OFP to know the wind direction (it’s random and can’t be retrieved via scripts). Also, A.I. units might still shoot units behind the object if they detected them previously. This is caused by not being an actual line-of-sight check for A.I. units in OFP. Detection is based on several factors, including the unit’s sound emitted, current stance (standing up, crouching, prone), proximity to objects, etc.

Suppressive fire

Logic: HIT/ Enable suppressive fire

Included in the "Enable all" logic

Allows A.I. units to automatically provide suppressive fire on units that have been hit by that or any other unit enemy of the hit one.

When an infantry unit is hit, an invisible target will be created roughly at its position, and will stay there for about 15 seconds. A.I. units can then decide to shoot at that target, creating the illusion of providing suppressive fire on that position.

Smoke throwing

Logic: HIT/ Enable smoke throwing

Included in the "Enable all" logic

A.I. units equipped with smoke grenades that are being shot at might decide to throw one in the direction of the shooter.

Dust effects

Logic: FX/ Enable dust effects

(untested in MP)

Included in the "Enable all" logic

Enables dust effects for infantry steps, when rifles are fired, bullets hit the ground, AT launchers fire, etc.

High dispersion magazine replacer

Logics:

AMMO/ High Dispersion ammo for West units

AMMO/ High Dispersion ammo for East units

AMMO/ High Dispersion ammo for Resistance units

Automatically replaces magazines with high dispersion (HD) variants for all infantry units of the given side. It replaces both normal and rucksack mags. The script used by these logics can also be accessed directly to only assign HD to a given unit or group (found in \ww4ext_scripts\hdammoww4ext.sqs).

Fixed limited speed

Logic: VEHICLES/ Enable fixed speed limit when in "LIMITED"

(untested in MP)

It automatically limits the speed of all vehicles to a fixed maximum when their group speed is set to "LIMITED"

Delete dead bodies

Logic: PERFORMANCE/ Delete dead bodies

Included in the "Enable all" logic

Deletes dead units (infantry and vehicles) after a default time of 5 minutes. Time can be changed through the WW4EXT_dbtime global variable. Vehicles can also be deleted setting the WW4EXT_deleteVeh variable to true.

You can set any of those variables anywhere you like, but I suggest common places like the init.sqs of your mission or the init field of the logic in the mission editor.

The time set in WW4EXT_dbtime is in minutes. So, if you want to, say increase the time before a body is deleted from 5 up to 10 minutes, you would use: WW4EXT_dbtime=10;

Remove pistols

Logic: WEAPONS/ Remove pistols

Removes handguns and their ammo from all units, except for those who lack a primary weapon (such as cops) and players.

Enable all

Logic: Enable all

Enables all the features listed above, except remove pistols, HD ammo change and limited speed for vehicles.

Enable all but launchers

Logic: Enable all but launchers

Enables all the features listed above except for the disposable launchers and those mentioned in the Enable all logic.

Forced effects

These effects are automatically enabled on all the related infantry units and cannot be disabled.

Hit

Units hit by bullets will stagger and fire at a reduced fire rate, if at all, for several seconds. They will lie down and, if moving, they will slow down and act a bit disoriented. Players will see a white flash when hit, the intensity and duration being tied to the severity of the wound.

Flare launching

Units equipped with flares will automatically launch them periodically as long as they are in combat mode.

2. Player features

All the listed game logics can be found in the WW4 EXT/Player features list and only affect players.

Sight switching

Some scoped rifles allow you to swap sights from scoped to back-up iron sights, so you can use one or another depending on your current engagement distance.

To enable it, place in the mission editor the Enable sight switching logic.

Use

Select the new > Switch sight mode entry in your actions menu, or the associated key if you’re using Fwatch. You can change this key via the personal menu, if it’s enabled for the mission.

This feature only works with some scoped guns. You’ll be notified in the chat area if your current weapon isn’t supported.

Sniper rifle zeroing

Some of the available sniper rifles can be zeroed in-game. This allows you to engage targets located closer or beyond the default zeroing without having to elevate or lower your rifle.

Enabling the zeroing system

  1. In the mission editor, place the Enable weapon zeroing logic.
  2. Copy/paste this to the description.ext file of your mission (if you haven't already):
    #include <ww4ext_dialogs\defines.hpp>
    #include <ww4ext_dialogs\dialogs.hpp>

Use

This feature only works with some scoped guns. You’ll be notified in the chat area if your current weapon isn’t supported.

If you have Fwatch running and your mission uses the personal menu, you'll be able to specify a key to be used to open and close the menu. To do that go in the personal menu to OPTIONS, and then Fwatch. Once the key is set the action menu entry won't be used in further mission restarts.

Advanced

If you don't create and configure the description.ext file you will still be able to use the zeroing system, but without the handy dialog. You'll get an error but, apart from that, it'll work normally. Instead of using the dialog to change the zeroing you'll have to use the "> Zero up" and "< Zero down" actions in the actions menu. If you don't want to use the dialog version for some reason you can avoid the error displayed by directly calling the up and down scripts. For this, you could write this in your init.sqs:

player addaction ["> Zero up","\ww4ext_scripts\zeroing\zeroup.sqs"]

player addaction ["< Zero down","\ww4ext_scripts\zeroing\zerodown.sqs"]

If you go this route remember NOT to place the previously mentioned logic on the mission editor, or you'll get the error again.

How does the zeroing work?

It's actually pretty simple. Every time you change the zeroing you're actually replacing your current weapon with an identical one, but with a different zeroing. Those weapons are (and must be) previously defined in the config of the addon (ww4ext_magazines.pbo), so you can't add new ones without tinkering with those previously.

For scripters

This method has its own peculiarities and, depending on what you want to do, drawbacks. For instance, every time you change the zeroing, the weapon is reloaded. This shouldn't be a big issue, as the time it takes to reload is the same as what it would take you to manually doing so. But it also changes the weapon itself, so if you have some script that checks for the class of the primary weapon hold by the player, you have to take this into account. In this case, there's already a script built in that can help you identifying the real class of the current zeroed weapon. A call for \ww4ext_scripts\zeroing\checkWpn.sqf will fill an array (_arr) with all the classes belonging to that weapon. The first element is always the default zeroing, and the second the name of the base weapon.

WW4 EXT Menu

The goal of the personal menu is to simplify the management of A.I. units in the player's group. It also offers some built-in features that aren’t accessible otherwise, such as: allowing to change the sorting order of your units (be it to change their placement or to remove gaps in formations), remove single or multiple units from your group and issuing a global heal order, where the A.I. units will heal with any medic in the group or use bandages if they have some. It also allows quick access to some other extra features found in EXT, such as all the support options (transport, CAS, artillery).

The orders issued through this menu will only affect A.I. units present in the player’s group. The menu can be safely used in multiplayer.

Enabling the menu in your mission

  1. In the mission editor, place the Enable personal menu logic.
  2. Copy/paste this to the description.ext file of your mission (if you haven't already):
    #include <ww4ext_dialogs\defines.hpp>
    #include <ww4ext_dialogs\dialogs.hpp>

Use

A new entry will be added to your action menu, named > Show WW4 EXT menu, which you can use to open it.

If you have Fwatch running you'll be able to specify a key to be used to open and close the menu. To do that go in the personal menu to OPTIONS, and then Fwatch. Once the key is set the action menu entry won't be used in further mission restarts. Fwatch will also save your desired view distance (if you set it in OPTIONS) and automatically apply it in every mission which uses the personal menu. If present, all support missions will be activated through the personal, and no extra action menu entries will be added.

Menu buttons
Orders
Squad
Support

These options will only be available if they are enabled in the mission by placing the corresponding game logics.

Options

3. Time & Weather

All the game logics listed here can be found in the WW4 EXT/Time & Weather list.

Sandstorm (fixed)

Logic: Enable sandstorm (fixed)

This feature creates a sandstorm effect around the player (without sound effects). It’s a fixed version of the one found in vanilla WW4, so use this version instead of that one.

In the vanilla version this script changes the reference of the player to that of the vehicle he’s in so, from that point on, the OFP engine will think that the player is that particular vehicle and not the player himself. This bug causes a lot of serious problems in other functions or scripts that need to reference the player himself.

The sandstorm effect will always follow the player, so the game logic can be placed anywhere in the map.

Sandstorm with sound

Logic: Enable sandstorm w/ sound

This feature is very similar to the Enable sandstorm (fixed) one, with some differences: in this version a windy sound effect plays for the duration of the sandstorm and the visibility (view distance) is severely reduced. It also allows you to tweak some aspects of the sandstorm, such as its duration, the weather afterwards, etc.

The sandstorm effect will always follow the player, so the game logic can be placed anywhere in the map.

This feature is multiplayer compatible. You don’t need to do anything for this to work in that environment (there’s no need to add extra game logics, etc).

Advanced

If you want to have more control over how the sandstorm behaves you can use this global variable: WW4EXT_sandstorm = [_duration,_chance,_wait,_fog,_rain,_overcast];

The available parameters are:

Examples

So, say you want a very long sandstorm which won't repeat more than once. You'd set the variable this way: WW4EXT_sandstorm = [999,0,0,0,0,0.5];

To disable an ongoing sandstorm we need to delete the sandstorm logic. To do that you'll have to name it first. If we name the sandstorm logic "sandstormLogic" in the mission editor, once we don't want further sandstorms we delete it with: deletevehicle sandstormLogic

Eventually the script will be aware of this and stop for good.

Mist (dense)

Logic: Enable mist (dense)

Creates a dense mist somewhere in the map. The epicenter of the mist will be placed where the game logic is located and it will cover an area of about 2 km2.

Mist (sparse)

Logic: Enable mist (sparse)

Creates sparse mist somewhere in the map. The epicenter of the mist will be placed where the game logic is located and it will cover an area of about 2 km2.

Snow (fixed)

Logic: Enable snow (fixed)

Generates a light snowfall effect around the player. It’s a fixed version of the one found in vanilla WW4, so use this version instead of that one.

In the vanilla version this script changes the reference of the player to that of the vehicle he’s in so, from that point on, the OFP engine will think that the player is that particular vehicle and not the player himself. This bug causes a lot of serious problems in other functions or scripts that need to reference the player himself.

The snow effect will always follow the player, so the game logic can be placed anywhere in the map.

Blizzard

Logic: Enable blizzard

This feature will generate a blizzard with sound effects around the player, while also reducing visibility (view distance).

The blizzard effect will always follow the player, so the game logic can be placed anywhere in the map.

This feature is multiplayer compatible. You don’t need to do anything for this to work in that environment (there’s no need to add extra game logics named server, etc).

Advanced

If you want to have more control over how the sandstorm behaves you can use this global variable: WW4EXT_blizzard = [_duration,_chance,_wait,_fog,_rain,_overcast];

The available parameters are:

Examples

So, say you want a very long blizzard which won't repeat more than once. You'd set the variable this way: WW4EXT_blizzard = [999,0,0,0,0,0.5];

To deactivate an ongoing blizzard we need to delete the blizzard logic. In order to do that you'll have to name it first. If we name the blizzard logic "blizzardLogic" in the mission editor, once we don't want further blizzards we delete it with: deletevehicle blizzardLogic

Eventually the script will be aware of this and stop for good.

Dust wind (fixed)

Logic: Enable dust wind (fixed)

This feature generates some puffs of dust around the player, emulating those created in a windy day. It’s a fixed version of the one found in vanilla WW4, so use this version instead of that one.

In the vanilla version this script changes the reference of the player to that of the vehicle he’s in so, from that point on, the OFP engine will think that the player is that particular vehicle and not the player himself. This bug causes a lot of serious problems in other functions or scripts that need to reference the player himself.

The dust wind effect will always follow the player, so the game logic can be placed anywhere in the map.

Random weather

Logic: Random weather

Changes the current weather conditions (amount of clouds, rain possibility and amount of fog) to new, random ones.

This feature is multiplayer compatible by also placing the CoC-SERVER logic (found in CoC Utilities). Only one CoC-SERVER logic is needed so only place it if there’s none present in the mission editor.

Random weather (no fog change)

Logic: Random weather (no fog change)

Changes the current weather conditions to new, random ones, without changing the amount of fog.

This feature is multiplayer compatible by also placing the CoC-SERVER logic (found in CoC Utilities). Only one CoC-SERVER logic is needed so only place it if there’s none present in the mission editor..

Random time

Logic: Random time

Changes the time of day where the mission takes place to a random one.

This feature is multiplayer compatible by also placing the CoC-SERVER logic (found in CoC Utilities). Only one CoC-SERVER logic is needed so only place it if there’s none present in the mission editor.

4. Support

All the game logics listed here can be found in the WW4 EXT/Support list.

You must place only one game logic per side of the desired support you want to be available.

These support options are multiplayer compatible by also placing the CoC-SERVER logic (found in CoC Utilities) in the mission editor. Only one CoC-SERVER logic is needed so only place it if there’s none present already.

CAS

To make Close Air Support (CAS) available in a mission you must first place the CAS/ Enable for <side> game logic corresponding to the side you want to enable CAS for (CAS/ Enable for West, CAS/ Enable for East or CAS/ Enable for Resistance). The logic must be placed on more or less flat and empty ground.

The place where you place the logic will be used as the starting point of the CAS mission and, if there’s no spawner unit present yet, that’s also where the spawner, vehicle and crew will be created. So, place it anywhere other than over water, a forest or a town.

There’s a video tutorial available for this type of support: https://youtu.be/tAfz0nIyKW4

Advanced

Marker

You can create a marker that will be used to display to all the players of the same side the current objective of the CAS mission. To do so create a marker and name it WW4EXT_CAS<side> (WW4EXT_CASwest, WW4EXT_CASeast or WW4EXT_CASguer).

The type of marker doesn’t matter, as it will be changed automatically by the support scripts. It is recommended that you write something descriptive in the Text field, though (such as CAS or something similar).

Global variables

You can modify several parameters of the available CAS via global variables. These global variables can be set in the init of a unit or in any script.

WW4EXT_CASpreset

Determines the available preset (vehicle and crew used) for this type of support.

Variable name for west: WW4EXT_CASpresetWest

Variable name for east: WW4EXT_CASpresetEast

Variable name for resistance: WW4EXT_CASpresetGuer

Default value:

Possible values for west:

Possible values for east:

Possible values for resistance:

Examples

To use the harrier preset we’d use: WW4EXT_CASpresetWest="harrier";

To use a hind: WW4EXT_CASpresetEast="hind";

WW4EXT_CASVehClass

You can set a specific vehicle class to be used for this type of support, instead of using presets. The value of this global variable overrides that of the preset one. Note that the value must be a valid class name of an air vehicle, not one of the previous presets.

Variable name for west: WW4EXT_CASVehClassWest

Variable name for east: WW4EXT_CASVehClassEast

Variable name for resistance: WW4EXT_CASVehClassGuer

Default value:

Examples

To use an apache to give support to the resistance side we’d use: WW4EXT_CASVehClassGuer="WW4EXT_AH64";

WW4EXT_CASCrewClass

You can set a specific unit class to be used as crew for the support vehicle. This value overrides the default crew of a given preset, so you can use one of the presets but assign another unit class.

Variable name for west: WW4EXT_CASCrewClassWest

Variable name for east: WW4EXT_CASCrewClassEast

Variable name for resistance: WW4EXT_CASCrewClassGuer

Default value:

Examples

Following the previous example, we’ll assign a National Army helicopter pilot to the apache: WW4EXT_CASCrewClassGuer="WW4EXT_INDYPilotHelo";

WW4EXT_CASlimit

Sets a limit to the amount of CAS requests available. You can change its value any time you want to increase or reduce (even completely) the number of available support missions for a given side.

Variable name for west: WW4EXT_CASlimitWest

Variable name for east: WW4EXT_CASlimitEast

Variable name for resistance: WW4EXT_CASlimitGuer

Default value:

Examples

To limit the amount of CAS missions for east to three we would use: WW4EXT_CASlimitEast=3;

Fire support

You can enable access to Fire Support in a mission by placing in the mission editor the FIRE/ Enable for <side> game logic corresponding to the side you want to enable the support for (FIRE/ Enable for West, FIRE/ Enable for East or FIRE/ Enable for Resistance).

There’s a video tutorial available for this type of support: https://youtu.be/Y2qceMV8uSU

Advanced

Marker

You can create a marker that will be used to display to all the players of the same side the current objective of the fire mission. To do so create a marker and name it WW4EXT_ARTY<side> (WW4EXT_ARTYwest, WW4EXT_ARTYeast or WW4EXT_ARTYguer).

The type of marker doesn’t matter, as it will be changed automatically by the support scripts. It is recommended that you write something descriptive in the Text field, though (such as Fire Support or something similar).

A.I. awareness

You can spice things up a bit by making A.I. units react to incoming fire. To do so you’ll have to create a new trigger (F3), set its size so it approximately covers the area where the rounds will impact (about 100m radius should be enough). Set the Activation to Anybody and the Name to artyUnits. Set also the frequency to Repeatedly.

Now whenever a fire mission is called the trigger will be placed at the objective area when the rounds are about to impact. The units inside the trigger will then proceed to run around like headless chickens.

Global variables

You can modify several parameters of the available fire support via global variables. These global variables can be set in the init of a unit or in any script.

WW4EXT_ARTYtype

Determines which type of artillery pieces will be used for the fire mission.

Variable name for west: WW4EXT_ARTYtypeWest

Variable name for east: WW4EXT_ARTYtypeEast

Variable name for resistance: WW4EXT_ARTYtypeGuer

Default value:

Possible values for west:

Examples

To use use mortars for a west fire mission we’d use: WW4EXT_ARTYtypeWest="mortar";

To use a Grad for east: WW4EXT_ARTYtypeEast="MLRSEAST";

WW4EXT_ARTYlimit

Sets a limit to the amount of CAS requests available. You can change its value any time you want to increase or reduce (even completely) the number of available support missions for a given side.

Variable name for west: WW4EXT_ARTYlimitWest

Variable name for east: WW4EXT_ARTYlimitEast

Variable name for resistance: WW4EXT_ARTYlimitGuer

Default value:

Examples

To limit the amount of fire missions for resistance to one we would use: WW4EXT_ARTYlimitGuer=1;

Transport

To enable transport support to a given side you must place in the mission editor the TRANSPORT/ Enable for <side> game logic corresponding to that side (TRANSPORT/ Enable for West, TRANSPORT/ Enable for East or TRANSPORT/ Enable for Resistance). The logic must be placed on more or less flat and empty ground.

The place where you place the logic is where the spawner (if it isn’t present yet), vehicle and crew will be created. So, place it anywhere but over water, a forest or a town.

Once the transport support is requested a series of in-game hints will guide you through the whole process. You will be able to simply set a destination or carefully set a custom path the vehicle will try to follow (up to 6 nodes). If the provided transport vehicle is a helicopter, you’ll be able to choose between the following insertion methods when clicking the last node: land, paradrop and fast rope.

Advanced

Marker

You can create a marker that will be used to display to all the players of the same side the current objective of the transport mission. To do so create a marker and name it WW4EXT_TRANS<side> (WW4EXT_TRANSwest, WW4EXT_TRANSeast or WW4EXT_TRANSguer).

The type of marker doesn’t matter, as it will be changed automatically by the support scripts. It is recommended that you write something descriptive in the Text field, though (such as Transport or something similar).

The marker will loop through all the nodes found in the travel path, so you (and any other player in your side) will be able to see the shape of the path the transport will take.

Global variables

You can modify several parameters of the available transport support via global variables. These global variables can be set in the init of a unit or in any script.

WW4EXT_TRANSpreset

Determines the available preset (vehicle and crew used) for this type of support.

Variable name for west: WW4EXT_TRANSpresetWest

Variable name for east: WW4EXT_TRANSpresetEast

Variable name for resistance: WW4EXT_TRANSpresetGuer

Default value:

Possible values for west:

Possible values for east:

Possible values for resistance:

Examples

To use the bmp2 preset we’d use: WW4EXT_TRANSpresetEast="bmp2";

To use a Zil truck as transport: WW4EXT_TRANSpresetGuer="zilmg";

WW4EXT_TRANSVehClass

You can set a specific vehicle class to be used for this type of support, instead of using presets. The value of this global variable overrides that of the preset one. Note that the value must be a valid class name of a vehicle, not one of the previous presets.

Variable name for west: WW4EXT_TRANSVehClassWest

Variable name for east: WW4EXT_TRANSVehClassEast

Variable name for resistance: WW4EXT_TRANSVehClassGuer

Default value:

Examples

To use an M113 export as transport for east we’d use: WW4EXT_TRANSVehClassEast="WW4EXT_M113E";

WW4EXT_TRANSCrewClass

You can set a specific unit class to be used as crew for the support vehicle. This value overrides the default crew of a given preset, so you can use one of the presets but assign another unit class.

Variable name for west: WW4EXT_TRANSCrewClassWest

Variable name for east: WW4EXT_TRANSCrewClassEast

Variable name for resistance: WW4EXT_TRANSCrewClassGuer

Default value:

Examples

Following the previous example, we’ll assign a mercenary driver to the M113: WW4EXT_TRANSCrewClassEast="WW4EXT_MERCDriverE";

WW4EXT_TRANSlimit

Sets a limit to the amount of transport requests available. You can change its value any time you want to increase or reduce (even completely) the number of available support missions for a given side.

Variable name for west: WW4EXT_TRANSlimitWest

Variable name for east: WW4EXT_TRANSlimitEast

Variable name for resistance: WW4EXT_TRANSlimitGuer

Default value:

Examples

To disable transport missions for west (at least for a while) we would use: WW4EXT_TRANSlimitWest=0;

WW4EXT_TRANSAlt

Number. Default value: 40

Altitude at which helicopter transport vehicles will fly.

WW4EXT_TRANSAirOnly

Boolean. Default value: false

Whether only use air vehicles for transport or a mix of air and land ones (the A.I. decides which type will be used based on distance to destination).

General global variables

These three variables are used by all the available support options (CAS, fire support and transport) and they only need to be set up once, if at all.

WW4EXT_SUPPORTonlyLeaders

Boolean. Default value: true

Only group leaders are able to call for support missions. If radios are forced then RTOs are also allowed.

WW4EXT_SUPPORTForceRadio

Boolean. Default value: false

There must be a radio in a group in order to be able to call for support.

WW4EXT_SUPPORTRadios

Array. Default value: ["ww4_radio"]

Radios allowed to request this type of support. The WW4 radio is already allowed by default.


II. Scripts and other features

Features that are not enabled via game logics.

1. Custom faces

The whole custom faces system is fully automated. Since EXT v1.0, these custom faces will also be preserved during savegame reloads, and they will be properly applied to the crew of a vehicle.

The face variant used for each unit is randomized each time you start the mission, so use these custom faces in a mission only for units other than protagonists (you can exclude them if they already use one, see below).

Available custom faces

Here’s a list of the currently available face types you can apply:

Applying custom faces to units who don’t start with one

Only units that are centered around Middle East conflicts and some reconnaissance and Special Forces ones have custom faces applied automatically (afghan and camo variants, respectively).

To apply custom faces to units who don’t start with them use the following syntax:

[<unit>,<face type>,<forced>] exec "\ww4ext_faces\setFace.sqs";

The forced parameter will make sure to apply the new faces immediately instead of waiting for the next check (which happens each 3 seconds).

Note that since v1.0 only the leader of a group needs to be referenced and the same face type will be applied to all the units in his group.

Example

To apply woodland camouflage faces to all the units of a given group you would use this on the init line of the leader:

[this,"camo"] exec "\ww4ext_faces\setFace.sqs";

Applying custom faces to the crew of a vehicle

Due to how the init event handler works, custom faces will only be applied to units starting as crew of a vehicle after they dismount. To work around this you can use the following syntax on the init line of the vehicle:

[<vehicle>,<face type>] exec "\ww4ext_faces\setFaceVeh.sqs";

Example

To apply arabic faces to the crew of a vehicle you would use this on the init line of the vehicle:

[this,"afghan"] exec "\ww4ext_faces\setFaceVeh.sqs";

Changing the custom face of a group

You can also change the custom face being used by a group by using the new changeFace script:

[<unit>,<face type>] exec "\ww4ext_faces\changeFace.sqs";

Example

To apply woodland camo faces to units already using custom faces:

[this,"camo"] exec "\ww4ext_faces\changeFace.sqs";

Excluding a unit from the custom faces system

Maybe you want to use your own custom face for a given unit, or simply use vanilla faces for it.

To do so, type or copy/paste this in the init field of the unit:

[this] exec "\ww4ext_faces\exclude.sqs";

Including a unit back to the custom faces system

To include a unit that was previously excluded use this:

[this] exec "\ww4ext_faces\include.sqs";

Stopping the custom faces system for a whole group

If you want to remove the custom faces system for a whole group, use this line on the init of the leader:

{[_x] exec "\ww4ext_faces\exclude.sqs"}forEach units this;

This will disable the faces system for that given group, so it will not respond to further exclude or include requests. Any custom face assigned before this will be lost after a saved game is loaded.

2. G.I. Glasses

There’s a new set of glasses based on the ones issued to US soldiers during the 80s and 90s.

Since version 1.1 the G.I. glasses now substitute by default the original OFP glasses. Sunglasses are also replaced by a new pair of "modern" sunglasses.

The original OFP glasses and sunglasses must now be applied as BISglasses and BISsunglasses, respectively. To apply them to a given unit you must first create an identity in the description.ext file of your mission (you might need to manually create that file if it doesn’t exist already):

        class <name of the identity class>

        {

            name = <proper name>;

            face = <face type you want to use>;

            glasses = "BISglasses";

            speaker = <voice>;

            pitch = <pitch of the voice>;

        };

And then apply the new identity to the desired unit by using this syntax:

<unit> setIdentity <name of the identity class>;

Example

To create a generic OriginalGlassesGuy identity we would write this in the description.ext file of the mission:

class CfgIdentities

{

        class OriginalGlassesGuy

        {

            name = "Johnny Four Eyes";

            face = "Face20";

            glasses = "BISglasses";

            speaker = "Dan";

            pitch = 1.1;

        };

};

And then this should be written in the init line of the unit we want to wear glasses:

this setIdentity "OriginalGlassesGuy";

3. Applying EXT inits to non-EXT units

Infantry

This will allow the unit(s) to use rucksacks, tracers, bullet cracks, etc

Single Unit:

[this] exec "\WW4EXT_scripts\eh_infantry.sqs";

Group:

{[_x] exec "\WW4EXT_scripts\eh_infantry.sqs"} forEach units this;

Land vehicles

Tracers, bullet cracks, fireball and smoke when destroyed

Single Unit:

[this] exec "\WW4EXT_scripts\eh_land.sqs";

Group:

{[_x] exec "\WW4EXT_scripts\eh_land.sqs"} forEach units this;

Air vehicles

Automated countermeasures, fireball and smoke when destroyed, and also rotor wash for helos

Single Unit:

[this] exec "\WW4EXT_scripts\eh_air.sqs";

Group:

{[_x] exec "\WW4EXT_scripts\eh_air.sqs"} forEach units this;

4. Calling artillery strikes for A.I.

If you just want an artillery strike without placing support logics, to simulate the A.I. firing, or whatever other reason, you can do so by calling the ARTY_FFE.sqs script:

USE: [<pos>,<logic>,<optional: parameters>,<optional: type>] exec "\ww4ext_support\artillery\ARTY_FFE.sqs"

 - pos: position of the target area/unit

 - logic: logic to be used as the simulated artillery battery

 - parameters: OPTIONAL [<rounds>,<radius>]

         - rounds: how many rounds to fire per each battery unit

         - radius: radius of deviation from the designated target each round is subjected

 - type: OPTIONAL it can be "arty", "mortar", "MLRS" or "MLRSEAST"

           + "arty" for artillery (battery size: 6, default rounds fired: 30)

           + "mortar" for mortars (battery size: 4, default rounds fired: 20)

           + "MLRS" for a simulated M270 MLRS (battery size: 8, default rounds fired: 96)

           + "MLRSEAST" for a simulated BM-21 Grad (battery size: 8, default rounds fired: 320)

Examples

[getMarkerPos "artyTarget",artyLogic] exec "\ww4ext_support\artillery\ARTY_FFE.sqs";

That would call a standard fire mission on the position of the "artyTarget" marker.

[getPos (leader grp1),artyLogic,[10,50],"mortar"] exec "\ww4ext_support\artillery\ARTY_FFE.sqs";

Request fire mission on the current position of the leader of grp1, this time using mortars and only firing 10 rounds per mortar (having 4 mortars in the section, that means 40 rounds will be fired) and less accurately (rounds can deviate up to 50 meters).


III. Addendum

How to create a description.ext file

For some features to work you will need to write something on a file named description.ext. This file should be located in the folder of your mission and, unless you’re tweaking an already existing mission, you’ll have to create it yourself first.

To do so, follow these steps:

  1. Right click on an empty space inside your mission’s folder
  1. Select New in the contextual menu
  2. Select any of the displayed types
  1. Rename the new file to description.ext
  1. Make sure that .ext is the extension of the file. Windows hides the extensions of files by default, so you might need to force Windows to display them first.

Once the file is created you can proceed to open it and edit it by using your text editor of choice (Windows Notepad, Notepad++, Sublime Text, etc).

More information about description.ext here.

Troubleshooting

I’ve created the file, but the mission doesn’t detect it

You need to reload the mission (via the Load button in the mission editor) if you create a description.ext file when your mission was already opened. You also need to reload it every time you change something in that file.