mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge pull request #2177 from alganthe/documentation_pass_11
documentation pass 11
This commit is contained in:
commit
74cb948323
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: wiki
|
layout: wiki
|
||||||
title: Fonts
|
title: Fonts
|
||||||
|
description: Custom fonts including fixed-width font.
|
||||||
group: feature
|
group: feature
|
||||||
category: general
|
category: general
|
||||||
parent: wiki
|
parent: wiki
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: wiki
|
layout: wiki
|
||||||
title: HuntIR
|
title: HuntIR
|
||||||
|
description: High-altitude Unit Navigated Tactical Imaging Round
|
||||||
group: feature
|
group: feature
|
||||||
category: equipment
|
category: equipment
|
||||||
parent: wiki
|
parent: wiki
|
||||||
@ -9,27 +10,27 @@ parent: wiki
|
|||||||
## 1. Overview
|
## 1. Overview
|
||||||
|
|
||||||
### 1.1 The HuntIR
|
### 1.1 The HuntIR
|
||||||
The **H**igh altitude **U**nit **N**avigated **T**actical **I**maging **R**ound (HuntIR) is designed to be fired from a grenade launcher. After being fired in the air the in built parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or get shot down.
|
The **H**igh-altitude **U**nit **N**avigated **T**actical **I**maging **R**ound (HuntIR) is designed to be fired from a grenade launcher. After being fired in the air the in-built parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or get shot down.
|
||||||
|
|
||||||
## 2. Usage
|
## 2. Usage
|
||||||
NOTE: the HuntIR round doesn't work with modded weapons without a compatibility fix made either by the ACE3 team or the mod team.
|
NOTE: The HuntIR round does not work with modded weapons without a compatibility fix made either by the ACE3 team or the mod team.
|
||||||
|
|
||||||
### 2.1 Using the HuntIR
|
### 2.1 Using the HuntIR
|
||||||
- To be able to connect to the IR CMOS camera you'll need a `HuntIR monitor`.
|
- To be able to connect to the IR CMOS camera you will need a `HuntIR monitor`.
|
||||||
- Fire the HuntIR round as high as possible over the area you want to observe.
|
- Fire the HuntIR round as high as possible over the area you want to observe.
|
||||||
- Open the `HuntIR monitor`.
|
- Open the `HuntIR monitor`.
|
||||||
- To open the `HuntIR monitor` self interact <kbd>Ctrl</kbd> + <kbd>⊞ Win</kbd> (ACE3 default)
|
- To open the `HuntIR monitor` self interact <kbd>Ctrl</kbd> + <kbd>⊞ Win</kbd> (ACE3 default)
|
||||||
- Select `Equipment`.
|
- Select `Equipment`.
|
||||||
- Select `Activate HuntIR monitor`.
|
- Select `Activate HuntIR monitor`.
|
||||||
- You now have control of the IR CMOS camera to close the monitor press <kbd>ESC</kbd> or <kbd>⊞ Win</kbd>
|
- You now have control of the IR CMOS camera, to close the monitor press <kbd>ESC</kbd> or <kbd>⊞ Win</kbd>
|
||||||
|
|
||||||
### 2.2 IR CMOS camera controls
|
### 2.2 IR CMOS camera controls
|
||||||
|
|
||||||
Shortcut | Action
|
Shortcut | Action
|
||||||
------------ | -------------
|
------------ | -------------
|
||||||
<kbd>A</kbd> | Lower zoom level
|
<kbd>A</kbd> | Decrease zoom level
|
||||||
<kbd>D</kbd> | Increase zoom level
|
<kbd>D</kbd> | Increase zoom level
|
||||||
<kbd>N</kbd> | Toggle NV and TI modes
|
<kbd>N</kbd> | Toggle NV
|
||||||
<kbd>S</kbd> | Next camera
|
<kbd>S</kbd> | Next camera
|
||||||
<kbd>W</kbd> | Previous camera
|
<kbd>W</kbd> | Previous camera
|
||||||
<kbd>←</kbd> | Rotate camera anticlockwise
|
<kbd>←</kbd> | Rotate camera anticlockwise
|
||||||
|
@ -16,23 +16,23 @@ This adds the possibility to draw accurate lines on the map screen.
|
|||||||
This adds map tools that can be used to measure distances between two points or bearings on the map.
|
This adds map tools that can be used to measure distances between two points or bearings on the map.
|
||||||
|
|
||||||
### 1.3 GPS on map
|
### 1.3 GPS on map
|
||||||
If you are equipped with a vanilla GPS it will be shown on the map. (You don't need the map tools in your inventory for this.)
|
If you are equipped with a vanilla GPS it will be shown on the map. (You don't need the `Map Tools` item in your inventory for this.)
|
||||||
|
|
||||||
## 2. Usage
|
## 2. Usage
|
||||||
|
|
||||||
### 2.1 Using map tools
|
### 2.1 Using map tools
|
||||||
- For this you need to have `Map Tools`.
|
- To use map tools the `Map Tools` item is required.
|
||||||
- Open the map <kbd>M</kbd> (Arma 3 default key bind `Map`).
|
- Open the map <kbd>M</kbd> (Arma 3 default key bind `Map`).
|
||||||
- Press the self interaction key <kbd>Ctrl</kbd> + <kbd>⊞ Win</kbd> (ACE3 default key bind `Self Interaction Key`).
|
- Press the self interaction key <kbd>Ctrl</kbd> + <kbd>⊞ Win</kbd> (ACE3 default key bind `Self Interaction Key`).
|
||||||
- Select `Map tools`.
|
- Select `Map tools`.
|
||||||
- Select the type of tools you want to use.
|
- Select the type of tools you want to use.
|
||||||
- Note that you can drag the Roamer (map tool) around with <kdd> LMB </kbd> and rotate it with <kbd>Ctrl</kbd> + <kbd>LMB</kbd>.
|
- Note that you can drag the Roamer (map tool) around with <kbd>LMB</kbd> and rotate it with <kbd>Ctrl</kbd> + <kbd>LMB</kbd>.
|
||||||
|
|
||||||
### 2.2 Drawing lines
|
### 2.2 Drawing lines
|
||||||
- To draw lines `Map Tools` are not required.
|
- To draw lines the `Map Tools` item is required.
|
||||||
- Press <kbd>ALT</kbd> + <kbd>LMB</kbd> to start the line, left click again to end it.
|
- Press <kbd>ALT</kbd> + <kbd>LMB</kbd> to start the line, left click again to end it.
|
||||||
- To delete a line press <kbd>Del</kbd> around the center of the line.
|
- To delete a line press <kbd>Del</kbd> around the center of the line.
|
||||||
- Note that you can change the color of the lines by clicking on one of the coloured column on top of the screen (While the map is opened)
|
- Note that you can change the color of the lines by clicking on one of the coloured column on top of the screen (While the map is opened).
|
||||||
|
|
||||||
## 3. Dependencies
|
## 3. Dependencies
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
---
|
---
|
||||||
layout: wiki
|
layout: wiki
|
||||||
title: Medical System
|
title: Medical System
|
||||||
description: ACE provide users with a more realistic medical system and comes in both a basic and advanced version. Both versions have overlap but each have their own unique characteristics.
|
description: ACE3 provides users with a more realistic medical system and comes in both a basic and advanced version. Both versions have overlap but each have their own unique characteristics.
|
||||||
group: feature
|
group: feature
|
||||||
order: 4
|
order: 4
|
||||||
category: realism
|
category: realism
|
||||||
parent: wiki
|
parent: wiki
|
||||||
---
|
---
|
||||||
**Disclaimer:** The documentation for the medical system being extremely long it's highly advised to use the table of contents at the top right corner of the page.
|
**Disclaimer:** With the documentation for the medical system being extremely long it's highly advised to use the table of contents at the top right corner of the page.
|
||||||
|
|
||||||
## 1. Overview
|
## 1. Overview
|
||||||
ACE3 provides users with a more realistic medical system and comes in both a basic and an advanced version. This page will detail the differences between both systems and what they do as well as how to use them efficiently.
|
ACE3 provides users with a more realistic medical system and comes in both a basic and an advanced version. This page will detail the differences between both systems and what they do as well as how to use them efficiently.
|
||||||
@ -34,7 +34,7 @@ Besides the 4 elements introduced by basic medical, advanced introduces the foll
|
|||||||
- Cardiac Arrest.
|
- Cardiac Arrest.
|
||||||
- Various treatment methods such as CPR, different kinds of IVs and a working tourniquet.
|
- Various treatment methods such as CPR, different kinds of IVs and a working tourniquet.
|
||||||
- A basic medication simulation.
|
- A basic medication simulation.
|
||||||
|
|
||||||
## 2. Usage
|
## 2. Usage
|
||||||
|
|
||||||
### 2.1 Basic
|
### 2.1 Basic
|
||||||
@ -84,17 +84,17 @@ Atropine | Serves no use in basic
|
|||||||
- **Yes:** Ask him if he has wounds / he is in pain.
|
- **Yes:** Ask him if he has wounds / he is in pain.
|
||||||
- **No:** Go to step 2.
|
- **No:** Go to step 2.
|
||||||
|
|
||||||
|
|
||||||
- **Step 2:** Is the patient wounded?
|
- **Step 2:** Is the patient wounded?
|
||||||
- **Yes:** Treat the wounds and go to step 3.
|
- **Yes:** Treat the wounds and go to step 3.
|
||||||
- **No:** Skip this step.
|
- **No:** Skip this step.
|
||||||
|
|
||||||
|
|
||||||
- **Step 3:** Is the patient in pain?
|
- **Step 3:** Is the patient in pain?
|
||||||
- **Yes:** Give him morphine.
|
- **Yes:** Give him morphine.
|
||||||
- **No:** Skip this step.
|
- **No:** Skip this step.
|
||||||
|
|
||||||
|
|
||||||
- **Step 4:** Did the patient lose blood?
|
- **Step 4:** Did the patient lose blood?
|
||||||
- **Yes:** Give blood via IV.
|
- **Yes:** Give blood via IV.
|
||||||
- **No:** Go to step 5.
|
- **No:** Go to step 5.
|
||||||
@ -102,13 +102,21 @@ Atropine | Serves no use in basic
|
|||||||
|
|
||||||
|
|
||||||
- **Step 5**
|
- **Step 5**
|
||||||
- If at this point the patient is still not back on its feet it's time to use an epinephrine autoinjector.
|
- If at this point the patient is still not back on its feet it's time to use an epinephrine Autoinjector.
|
||||||
|
|
||||||
#### 2.1.3 Additional informations
|
#### 2.1.3 Additional informations
|
||||||
|
|
||||||
- If the revive system is in place your character will not die until the revive timer is at 0. Even if a tank shoots your ass off an epinephrine shot will bring you back up after your wounds are treated. (The timer is invisible and may vary from mission to mission, it also depends on the amount of lives remaining you have.)
|
- If the revive system is in place your character will not die until the revive timer is at 0. Even if a tank shoots your ass off an epinephrine shot will bring you back up after your wounds are treated. (The timer is invisible and may vary from mission to mission, it also depends on the amount of lives remaining you have.)
|
||||||
- You can't do an overdose in basic.
|
- You can't do an overdose in basic.
|
||||||
|
|
||||||
|
#### 2.1.4 Revive (Basic Medical)
|
||||||
|
For the following procedure to work revive need to be enabled.
|
||||||
|
|
||||||
|
- A unit in the revive state will be unconscious and will stay unconscious until it is either woken up or the revive timer runs out.
|
||||||
|
- A unit in the revive state can't die from any source of damage, only the timer ending can kill it.
|
||||||
|
- To wake up a patient treat all of his wounds, make sure he isn't in pain and then use epinephrine.
|
||||||
|
- Each successful revive removes a life from the unit, once the lives run out the next time the unit will take fatal damage it will not enter the revive state and will die.
|
||||||
|
|
||||||
### 2.2 Advanced
|
### 2.2 Advanced
|
||||||
|
|
||||||
Same as with basic, when hit an injury is sustained. Different though is that the type of injury and the severity of it are based upon how the damage was done and what caused it. This affects both blood loss and immediate consequences, such as being knocked out or being killed right away. When a player has sustained an injury, this will be indicated by flashing red on the screen; this means the player is bleeding.
|
Same as with basic, when hit an injury is sustained. Different though is that the type of injury and the severity of it are based upon how the damage was done and what caused it. This affects both blood loss and immediate consequences, such as being knocked out or being killed right away. When a player has sustained an injury, this will be indicated by flashing red on the screen; this means the player is bleeding.
|
||||||
@ -140,7 +148,7 @@ Same as with basic, when hit an injury is sustained. Different though is that th
|
|||||||
- Sources: falling, vehicle crashes, punches.
|
- Sources: falling, vehicle crashes, punches.
|
||||||
- Effects: pain - light, bleeding - extremely slowly.
|
- Effects: pain - light, bleeding - extremely slowly.
|
||||||
|
|
||||||
##### 2.2.1.5 Cut wounds**
|
##### 2.2.1.5 Cut wounds
|
||||||
|
|
||||||
- Slicing wounds made with a sharp instrument, leaving even edges. They may be as minimal as a paper cut or as significant as a surgical incision.
|
- Slicing wounds made with a sharp instrument, leaving even edges. They may be as minimal as a paper cut or as significant as a surgical incision.
|
||||||
- Sources: vehicle crashes, grenades, explosions, artillery shells, backblast, stabs.
|
- Sources: vehicle crashes, grenades, explosions, artillery shells, backblast, stabs.
|
||||||
@ -216,7 +224,7 @@ Atropine | lower the heart rate of the patient
|
|||||||
|
|
||||||
#### 2.2.2 Vitals
|
#### 2.2.2 Vitals
|
||||||
|
|
||||||
##### 2.2.2.1 Blood pressure
|
##### 2.2.2.1 Blood pressure
|
||||||
|
|
||||||
NOTE:the `systolic` blood pressure is the number on the left, the `diastolic` blood pressure is the number on the right.
|
NOTE:the `systolic` blood pressure is the number on the left, the `diastolic` blood pressure is the number on the right.
|
||||||
|
|
||||||
@ -232,7 +240,7 @@ Atropine | lower the heart rate of the patient
|
|||||||
- **Low:** 45 and below
|
- **Low:** 45 and below
|
||||||
- **Normal:** between 46 and 119
|
- **Normal:** between 46 and 119
|
||||||
- **High:** 120 and above
|
- **High:** 120 and above
|
||||||
|
|
||||||
|
|
||||||
##### 2.2.2.3 Cardiac arrest
|
##### 2.2.2.3 Cardiac arrest
|
||||||
|
|
||||||
@ -256,12 +264,12 @@ This is a step by step guide, follow the steps from 1 to 6 in order unless state
|
|||||||
- **Step 2:** Does the patient have a pulse?
|
- **Step 2:** Does the patient have a pulse?
|
||||||
- **Yes:** Go to step 3.
|
- **Yes:** Go to step 3.
|
||||||
- **No:** If you are alone provide CPR, if you have someone else get him to do CPR while you treat the patient's wounds. skip to step 3 or 4 depending on the situation.
|
- **No:** If you are alone provide CPR, if you have someone else get him to do CPR while you treat the patient's wounds. skip to step 3 or 4 depending on the situation.
|
||||||
|
|
||||||
|
|
||||||
- **Step 3:** Is the patient wounded?
|
- **Step 3:** Is the patient wounded?
|
||||||
- **Yes**: Treat the wounds.
|
- **Yes**: Treat the wounds.
|
||||||
- **No:** Skip this step.
|
- **No:** Skip this step.
|
||||||
|
|
||||||
|
|
||||||
- **Step 4:** Did the patient lose blood?
|
- **Step 4:** Did the patient lose blood?
|
||||||
- **Yes:** Use IVs to restore the volume of liquid in the blood stream of the patient.
|
- **Yes:** Use IVs to restore the volume of liquid in the blood stream of the patient.
|
||||||
@ -288,5 +296,76 @@ Note that keeping the patient's vitals stable is very important while treating h
|
|||||||
- You don't have to take epinephrine after you take morphine, just wait until your pulse stabilizes by itself (Provided that you are in a stable condition).
|
- You don't have to take epinephrine after you take morphine, just wait until your pulse stabilizes by itself (Provided that you are in a stable condition).
|
||||||
- Giving too much morphine to a patient (more than one every 10 minutes) will put him in cardiac arrest because of a blood pressure / heart rate too low.
|
- Giving too much morphine to a patient (more than one every 10 minutes) will put him in cardiac arrest because of a blood pressure / heart rate too low.
|
||||||
|
|
||||||
## 3. Dependencies
|
#### 2.2.5 Revive (Advanced Medical)
|
||||||
`ace_interaction`, `ace_modules`, `ace_apl`
|
For the following procedure to work revive needs to be enabled.
|
||||||
|
|
||||||
|
- A unit in the revive state will be unconscious and will stay unconscious until it is either woken up or the revive timer runs out.
|
||||||
|
- A unit in the revive state can't die from any source of damage, only the timer ending can kill it.
|
||||||
|
- To wake up a patient the use of a PAK is required.
|
||||||
|
- Each successful revive removes a life from the unit, once the lives run out the next time the unit will take fatal damage it will not enter the revive state and will die.
|
||||||
|
- Each successful round of CPR (filled up completion bar) increases the time left in the revive state.
|
||||||
|
|
||||||
|
## 3. Guides
|
||||||
|
### 3.1 Example loadouts
|
||||||
|
|
||||||
|
#### 3.1.1 Basic
|
||||||
|
- Soldier:
|
||||||
|
- 10 × Bandage (Basic)
|
||||||
|
- 3 × Morphine Autoinjector
|
||||||
|
- 1 × Epinephrine Autoinjector
|
||||||
|
|
||||||
|
- Medic:
|
||||||
|
- 15-25 × Bandage (Basic)
|
||||||
|
- 10 × Morphine Autoinjector
|
||||||
|
- 10 × Epinephrine Autoinjector
|
||||||
|
- 6 × Blood IV (500ml)
|
||||||
|
|
||||||
|
#### 3.1.2 Advanced
|
||||||
|
|
||||||
|
- Soldier :
|
||||||
|
- 3-6 × Bandage (Basic)
|
||||||
|
- 3-6 × Bandage (Elastic)
|
||||||
|
- 3-6 × Packing Bandage
|
||||||
|
- 3-6 × Basic Field Dressing (QuikClot)
|
||||||
|
- 1 × Morphine Autoinjector
|
||||||
|
- 1 × Epinephrine Autoinjector
|
||||||
|
- 1 × Tourniquet (CAT)
|
||||||
|
- **Optional**: 1 × Saline IV (500ml) - used only by a qualified medic
|
||||||
|
|
||||||
|
|
||||||
|
- Combat First Responder (CFR):
|
||||||
|
- 10-15 × Bandage (Basic)
|
||||||
|
- 10-15 × Bandage (Elastic)
|
||||||
|
- 10-15 × Packing Bandage
|
||||||
|
- 10-15 × Basic Field Dressing (QuikClot)
|
||||||
|
- 8 × Atropine Autoinjector
|
||||||
|
- 5 × Morphine Autoinjector
|
||||||
|
- 5 × Epinephrine Autoinjector
|
||||||
|
- 3 × Tourniquet (CAT)
|
||||||
|
- 4 × Saline IV (500ml)
|
||||||
|
|
||||||
|
|
||||||
|
- Medic:
|
||||||
|
- 10-15 × Bandage (Basic)
|
||||||
|
- 15-20 × Bandage (Elastic)
|
||||||
|
- 15-20 × Packing Bandage
|
||||||
|
- 10-15 × Basic Field Dressing (QuikClot)
|
||||||
|
- 12 × Atropine Autoinjector
|
||||||
|
- 8 × Morphine Autoinjector
|
||||||
|
- 8 × Epinephrine Autoinjector
|
||||||
|
- 5 × Tourniquet (CAT)
|
||||||
|
- 6 × Saline IV (500ml)
|
||||||
|
- 1-3 × *Surgical Kit*
|
||||||
|
- 1-3 × *Personal Aid Kit*
|
||||||
|
|
||||||
|
|
||||||
|
- Paramedic:
|
||||||
|
- 10-15 × Bandage (Basic)
|
||||||
|
- 15-20 × Bandage (Elastic)
|
||||||
|
- 15-20 × Packing Bandage
|
||||||
|
- 10-15 × Basic Field Dressing (QuikClot)
|
||||||
|
- 5 × Tourniquet (CAT)
|
||||||
|
- 2 × Saline IV (500ml)
|
||||||
|
|
||||||
|
## 4. Dependencies
|
||||||
|
`ace_interaction`, `ace_modules`, `ace_apl`
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: wiki
|
layout: wiki
|
||||||
title: Mk6 Mortar
|
title: Mk6 Mortar
|
||||||
description: Improve the existing mk6 mortar.
|
description: Improve the existing Mk6 Mortar.
|
||||||
group: feature
|
group: feature
|
||||||
category: equipment
|
category: equipment
|
||||||
parent: wiki
|
parent: wiki
|
||||||
@ -9,57 +9,38 @@ parent: wiki
|
|||||||
|
|
||||||
## 1. Overview
|
## 1. Overview
|
||||||
|
|
||||||
### 1.1 mk6 mortar overhaul
|
### 1.1 Mk6 Mortar overhaul
|
||||||
ACE3 adds wind deflection for shells as well as a rangetable to accurately take out your target without the artillery computer.
|
ACE3 adds wind deflection for shells as well as a rangetable to accurately take out your target without the artillery computer.
|
||||||
|
|
||||||
|
|
||||||
## 2. Usage
|
## 2. Usage
|
||||||
|
|
||||||
### 2.1 Switching charge
|
### 2.1 Switching charge
|
||||||
- Press <kbd>F</kbd> (Arma 3 default key bind `Fire Mode Switch`) to switch between charges
|
- Press <kbd>F</kbd> (Arma 3 default key bind `Fire Mode Switch`) to switch between charges
|
||||||
|
|
||||||
### 2.2 Working with the rangetable
|
### 2.2 Opening the table
|
||||||
- To open the table:
|
- Self interact <kbd>Ctrl</kbd> + <kbd>⊞ Win</kbd>
|
||||||
- Self interact <kbd>Ctrl</kbd> + <kbd>⊞ Win</kbd>
|
- Select `Equipment`.
|
||||||
- Select `equipment`.
|
- Select `Open 82mm Rangetable`.
|
||||||
- Select `Open 82mm Rangetable`.
|
|
||||||
|
|
||||||
- Using the table:
|
### 2.2 Getting your shells to land where you want.
|
||||||
- Get the distance and elevation difference between you and the target for this you can use map tools. For this example we'll say we're 2 000m away and 50m below (we're at 20m they are at 70m, 70-20=50).
|
For this you need a `82mm Rangetable`, `Map Tools` and a `Vector 21` are also recommended.
|
||||||
|
|
||||||
- Select the charge you want to use (0 = close / 1 = medium / 2 = far). For this case we're using charge 2.
|
|
||||||
|
|
||||||
- Check the range column on the table, we're at 2 000 then look at the corresponding entry in the column on the right (ELEV = elevation) For this example it's 1339.
|
|
||||||
|
|
||||||
- After that's done move by one column on the right that's the elevation for 100m heigh so in our case we're subtracting 2 (4:2 = 2) if our target was 300m above us we would have to subtract 12 from our elevation (3x4 = 12).
|
|
||||||
|
|
||||||
- Once you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1339-2 = 1337.
|
|
||||||
|
|
||||||
- On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found.
|
|
||||||
- To adjust the ELV use <kbd>Page Up</kbd> and <kbd>page Down</kbd>.
|
|
||||||
- Once the number you found and ELV are the same FIRE !
|
|
||||||
- On top of that you can calculate the time the shell will take to land by using the third row from the left, in our case the shell need to travel 2000m that's 20xthe number indicated. so 20x0,5 = 10s.
|
|
||||||
|
|
||||||
### 2.3 Working with the rangetable (Crosswinds enabled)
|
|
||||||
- Same as above there's just an extra step, I'll provide an other example in case you forgot.
|
|
||||||
|
|
||||||
- Get the distance and elevation difference between you and the target for this you can use map tools. For this example we'll say we're 2 400m away and 223m below (we're at 2m they are at 225, 225-2=223)
|
|
||||||
- Select the charge you want to use (0 = close / 1 = medium / 2 = far). For this case we're using charge 2.
|
|
||||||
|
|
||||||
- Check the range column on the table, we're 2 400m a then look at the corresponding entry in the column on the right (ELEV = elevation) For this example it's 1145.
|
|
||||||
- After that's done move by one column on the right that's the elevation for 100m heigh so in our case we're subtracting 22 (2,2 x 10 (2,2 because we're around 220m below)).
|
|
||||||
- Extra step needed here, a kestrel 4500 IS NEEDED.
|
|
||||||
- Pick the crosswind on your kestrel (for this refer to the kestrel documentation).
|
|
||||||
|
|
||||||
- For this example the crosswind is of 2 MPS on my table I can see under Azimuth correction that for each 1MPS I need to correct by 2.5 mill.
|
|
||||||
- So in this case i'm subtracting 5 mill from the ELV.
|
|
||||||
|
|
||||||
- It's MATH TIME the ELV given by the table is 1 145, we subtract 22 because of the heigh, we also subtract 5 for the crosswind ( 1 145-22-5 = 1 118 ).
|
|
||||||
- After you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1 118.
|
|
||||||
|
|
||||||
- On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found.
|
|
||||||
|
|
||||||
- FIREEEE !!!!
|
- Get the distance and elevation difference between you and the target (you can use map tools).
|
||||||
- Little advantage of having crosswind enabled is that you don't have to calculate the flight time, it's marked on the table in this case it's 33,8s.
|
- Select the charge you want to use (0 = close / 1 = medium / 2 = far).
|
||||||
|
- Open the `82mm Rangetable`
|
||||||
|
- Calculate the correct ELEV (elevation):
|
||||||
|
- Open the `82mm Rangetable` and click on the charge you are using.
|
||||||
|
- Find your range under the `RANGE` column
|
||||||
|
- Under the `ELEV` column find the number that matches your range, that's the base elevation you are going to work with.
|
||||||
|
- Under the `D ELEV for 100m DR` find the number that matches your ELEV and compensate:
|
||||||
|
- _Example_, if you're 200m above your target multiply the number by 2 and add it to your ELEV.
|
||||||
|
- If you're 200m below the target multiply the number by 2 and substract it to your ELEV.
|
||||||
|
- The lower the elevation the closer to you it will land.
|
||||||
|
- Once you finished calculating the ELEV align the barrel of the mortar with your target (directly looking at it) and set your ELEV to what you calculated by using <kbd>Page Up</kbd> and <kbd>Page Down</kbd>.
|
||||||
|
- Once the ELEV is correctly set and the barrel is facing the right direction, shoot and enjoy your bananas while watching hell rain on your enemies.
|
||||||
|
|
||||||
|
|
||||||
## 3. Dependencies
|
## 3. Dependencies
|
||||||
|
|
||||||
|
@ -1,108 +0,0 @@
|
|||||||
---
|
|
||||||
layout: wiki
|
|
||||||
title: Advanced Missile Guidance
|
|
||||||
description: The ACE3 Advanced Missile Guidance Framework provides a setup of configuration settings, functions and a execution framework for addon makers to integrate with the missile guidance and targeting mechanisms of ACE3.
|
|
||||||
group: framework
|
|
||||||
order: 5
|
|
||||||
parent: wiki
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. Overview
|
|
||||||
|
|
||||||
The ACE3 Advanced Missile Guidance Framework provides a setup of configuration settings, functions and a execution framework for addon makers to integrate with the missile guidance and targeting mechanisms of ACE3. It also provides for mod makers to create their own custom guidance methods within the framework.
|
|
||||||
|
|
||||||
The framework provides all the functionality needed for guidance; from laser locking, target specification and selection, to handling the fired events and tracking and steering the vehicle based on provided parameters. This way, all that needs to be defined in addons is the appropriate CfgAmmo entries for the missile.
|
|
||||||
|
|
||||||
The framework also provides addon makers and scripters with the ability to configure custom seeker types and attack profiles, which are defined below. This allows for complete control of the guidance, locking and flight of a missile at the discretion of the addon maker.
|
|
||||||
|
|
||||||
ACE3 provides a full suite of base concepts and guidance for the majority of modern missile weaponry avialable today; these includes all basic types of seekers (SALH/SACLOS/Optic/Thermal/etc) - as well as the different common attack profiles utilized with guided munitions (such as top-down attacks).
|
|
||||||
|
|
||||||
Finally, flight profiles and mechanics for realistic missile simulations are also implemented; allowing for lock-steering bump guidance flight such as with the M47 Dragon or GBU steering fins, or finely tuned direct flight guidance which is currently avialable with other missile types.
|
|
||||||
|
|
||||||
## 2. Details
|
|
||||||
|
|
||||||
The framework is broken up into 3 major components: Locking Types, Seeker Types and Attack Profiles. In combination, these components build out the entire process of launching, locking and going terminal flight against targets.
|
|
||||||
|
|
||||||
### 2.1 Components
|
|
||||||
|
|
||||||
#### 2.1.1 Locking Types
|
|
||||||
Locking types provide the basic functionality of targeting which will be based to a seeker type, providing target aquisition for seekers. This provides the basic functionality for providing pre-determined targets for a seeker, or allowing the seeker to perform its own target aquisition and locking. Additionally, the seeker may reference back into the locking type in order to re-perform target aquisition.
|
|
||||||
|
|
||||||
#### 2.1.2 Seeker Types
|
|
||||||
Each seeker is generally assumed to be the logic for the seeker head unit within any given munition. Seekers within this framework provide the basic targeting functionality for the entire framework. The locking type will provide a generic target to the seeker, or the seeker may aquire a target on its own. The seeker then provides a target, either an object or a ASL position, which is then passed further into the framework. This target (or position) should be the actual current target position for the missiles flight. Seekers are required to perform all limitations and checks within their systems, although various limitations have been provided in this framework such as LOS FOV, laser guidance, etc.
|
|
||||||
|
|
||||||
#### 2.1.3 Attack Profiles
|
|
||||||
|
|
||||||
An attack profile adjusts the current target flight location to create the actual flight path of the missile. The attack profile is provided with all parameters of the system, including the returned target of the seeker. Using this information, the attack profile then will adjust the *direct flight target position* to specifically direct where and how the missile shall flight.
|
|
||||||
|
|
||||||
## 3. How it all ties together
|
|
||||||
|
|
||||||
The system is executed in a linear series of calls to each step of the process, and feeding back the return from that step to the next step. Execution is conducted using Locking->Seeker->Profile, iteratively every frame of execution. Flight times are adjusted to accTime values and FPS lag, giving consistent flight.
|
|
||||||
|
|
||||||
On each step of execution, a target specification array [targetObj, targetPos] is passed to the locking type, which then will return a possible modified target array. Next, this modified data is passed to the seeker type - which then, in turn, returns a position vector to the current "seeked" target position (ASL). Last, this target position is passed to the attack profile, who then returns an "adjusted attack position (ASL)", which is the location the missile should *currently* be homing on for flight.
|
|
||||||
|
|
||||||
In the simplest sense, the entire system provides the flight trajectory of the missile homing directly on the "adjusted attack position"; thus, an attack profile would ajust this position to direct the missile. For example, Top down attacks return the adjusted attack position high above the target, until entering their terminal stages, which then changes the position to be directly ontop of the target - thus "walking the missile" along its flight path and to the kill.
|
|
||||||
|
|
||||||
## 4. Adding AMG to a missile
|
|
||||||
|
|
||||||
### 4.1 Enabling guidance on Ammo Types
|
|
||||||
```
|
|
||||||
class CfgAmmo {
|
|
||||||
class MissileBase;
|
|
||||||
class MyMissileType : MissileBase {
|
|
||||||
// Turn off arma crosshair-guidance
|
|
||||||
manualControl = 0;
|
|
||||||
|
|
||||||
// Begin ACE guidance Configs
|
|
||||||
class ace_missileguidance {
|
|
||||||
enabled = 1;
|
|
||||||
|
|
||||||
minDeflection = 0.00025; // Minium flap deflection for guidance
|
|
||||||
maxDeflection = 0.001; // Maximum flap deflection for guidance
|
|
||||||
incDeflection = 0.0005; // The incrmeent in which deflection adjusts.
|
|
||||||
|
|
||||||
canVanillaLock = 0; // Can this default vanilla lock? Only applicable to non-cadet modes. All 'recruit' games use vanilla locking
|
|
||||||
|
|
||||||
// Seeker type and settings for munitions
|
|
||||||
defaultSeekerType = "SALH";
|
|
||||||
seekerTypes[] = { "SALH", "LIDAR", "SARH", "Optic", "Thermal", "GPS", "SACLOS", "MCLOS" };
|
|
||||||
|
|
||||||
defaultSeekerLockMode = "LOAL";
|
|
||||||
seekerLockModes[] = { "LOAL", "LOBL" };
|
|
||||||
|
|
||||||
seekerAngle = 90; // Angle in front of the missile which can be searched
|
|
||||||
seekerAccuracy = 1; // seeker accuracy multiplier
|
|
||||||
|
|
||||||
seekerMinRange = 1;
|
|
||||||
seekerMaxRange = 2500; // Range from the missile which the seeker can visually search
|
|
||||||
|
|
||||||
// Attack profile type selection
|
|
||||||
defaultAttackProfile = "LIN";
|
|
||||||
attackProfiles[] = { "LIN", "DIR", "MID", "HI" };
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## 5. Creating your own custom seekers and attack profiles
|
|
||||||
|
|
||||||
### 5.1 Adding seeker types and attack profiles
|
|
||||||
|
|
||||||
```
|
|
||||||
class ace_missileguidance_attackProfiles{
|
|
||||||
class MyAttackProfile {
|
|
||||||
name = "";
|
|
||||||
visualName = "";
|
|
||||||
description = "";
|
|
||||||
|
|
||||||
functionName = "my_fnc_doAttackProfile";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
class ace_missileguidance_seekerTypes {
|
|
||||||
class MySeekerType {
|
|
||||||
name = "";
|
|
||||||
visualName = "";
|
|
||||||
description = "";
|
|
||||||
|
|
||||||
functionName = "my_fnc_doSeekerType";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
```
|
|
@ -1,96 +0,0 @@
|
|||||||
---
|
|
||||||
layout: wiki
|
|
||||||
title: Carry and Drag System
|
|
||||||
description:
|
|
||||||
group: framework
|
|
||||||
order: 5
|
|
||||||
parent: wiki
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. Config Values
|
|
||||||
|
|
||||||
```
|
|
||||||
class CfgVehicles {
|
|
||||||
class MyVehicle {
|
|
||||||
|
|
||||||
|
|
||||||
ace_dragging_canDrag = 1; // can this object be dragged?; 1 yes, 0 no (0 default)
|
|
||||||
ace_dragging_dragPosition[] = {0,1.2,0} // Offset of the model from the body while dragging, comparable to the offset in attachTo (It's the same actually)
|
|
||||||
ace_dragging_dragDirection = 0; // how much degrees is the model rotatated after dragging it (a global setDir after attachTo)
|
|
||||||
|
|
||||||
ace_dragging_canCarry = 1; // can this object be carried?; 1 yes, 0 no (0 default)
|
|
||||||
ace_dragging_carryPosition[] = {0,1.2,0}; // Same as drag, but for carrying objects
|
|
||||||
ace_dragging_carryDirection = 0; // Same as drag, but for carrying objects
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2. Functions
|
|
||||||
|
|
||||||
**NOTE THAT THE FOLLOWING FUNCTIONS ARE NOT PUBLIC AND THUS MAY CHANGE IN THE FUTURE.**</br>
|
|
||||||
|
|
||||||
|
|
||||||
Also note that if the item is too heavy you won't be able to carry / drag it, the mass is also affected by what's inside it.</br>
|
|
||||||
To bypass this empty the object and / or use setMass.</br>
|
|
||||||
|
|
||||||
### 2.1 Enabling / disabling dragging
|
|
||||||
|
|
||||||
`ace_dragging_fnc_setDraggable.` </br>
|
|
||||||
Enable the object to be dragged. </br>
|
|
||||||
|
|
||||||
| Arguments | |
|
|
||||||
--------------| -------- |
|
|
||||||
0 | Any object (Object)
|
|
||||||
1: | true to enable dragging, false to disable (Bool)
|
|
||||||
2:| Position offset for attachTo command (Array, optional; default: [0,0,0])
|
|
||||||
3: | Direction in degree to rotate the object after attachTo (Number, optional; default: 0)
|
|
||||||
Return value: NONE </br>
|
|
||||||
|
|
||||||
#### 2.1.1 example 1:
|
|
||||||
```
|
|
||||||
[foo,true,[0,2,0],45] call ace_dragging_fnc_setDraggable
|
|
||||||
```
|
|
||||||
| Arguments | |
|
|
||||||
--------------| -------- |
|
|
||||||
0:| foo (my object)
|
|
||||||
1:| true (dragging is enabled)
|
|
||||||
2:| `[0,2,0]` (0 meters sideways, 2 meters forward, 0 meters upwards)
|
|
||||||
3:| 45 (the object is rotated by 45°)
|
|
||||||
|
|
||||||
#### 2.1.2 example 2
|
|
||||||
```
|
|
||||||
[bar,false,[3,-2,2],20] call ace_dragging_fnc_setDraggable
|
|
||||||
```
|
|
||||||
|
|
||||||
| Arguments | |
|
|
||||||
--------------| -------- |
|
|
||||||
0:| bar (object)
|
|
||||||
1:| false (dragging is disabled)
|
|
||||||
2:| 3 meters sideways, -2 meters backwards, 2 meters upwards
|
|
||||||
3:| the object is rotated by 20°
|
|
||||||
|
|
||||||
### 2.2 Enabling / disabling carrying
|
|
||||||
`ace_dragging_fnc_setCarryable.` </br>
|
|
||||||
Enable the object to be carried. </br>
|
|
||||||
|
|
||||||
| Arguments | |
|
|
||||||
--------------| -------- |
|
|
||||||
0 | Any object (Object)
|
|
||||||
1:| true to enable carrying, false to disable (Bool)
|
|
||||||
2:| Position offset for attachTo command (Array, optional; default: [0,1,1])
|
|
||||||
3:| Direction in degree to rotate the object after attachTo (Number, optional; default: 0)
|
|
||||||
Return value: NONE </br>
|
|
||||||
|
|
||||||
|
|
||||||
#### 2.1.1 example 1:
|
|
||||||
```
|
|
||||||
[foo,true,[0,3,1],10] call ace_dragging_fnc_setCarryable
|
|
||||||
```
|
|
||||||
| Arguments | |
|
|
||||||
--------------| -------- |
|
|
||||||
0:| foo (my object)
|
|
||||||
1:| true (carrying is enabled)
|
|
||||||
2:| `[0,2,0]` (0 meters sideways, 3 meters forward, 1 meters upwards)
|
|
||||||
3:| 10 (the object is rotated by 10°)
|
|
||||||
|
|
38
documentation/framework/disposables-framework.md
Normal file
38
documentation/framework/disposables-framework.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Disposables Framework
|
||||||
|
description: Explains how to set-up custom disposable launchers with the ACE3 disposables system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="panel callout">
|
||||||
|
<h5>Note:</h5>
|
||||||
|
<p>This is just the necessary to make a launcher disposable, this is not a guide to make your own launcher.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 1. Making a launcher disposable
|
||||||
|
|
||||||
|
### 1.1 CfgWeapons
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class Launcher_Base_F;
|
||||||
|
class launch_banana: Launcher_Base_F {
|
||||||
|
ACE_UsedTube = "launch_banana_Used_F"; // The class name of the used tube
|
||||||
|
magazines[] = {"ACE_PreloadedMissileDummy"}; // The dummy magazine
|
||||||
|
};
|
||||||
|
class launch_banana_Used_F: launch_banana { // The used tube should be a sub class of the disposable launcher
|
||||||
|
scope = 1;
|
||||||
|
ACE_isUsedLauncher = 1;
|
||||||
|
author = "grandBanana";
|
||||||
|
displayName = "Used banana launcher";
|
||||||
|
descriptionShort = "A used banana launcher";
|
||||||
|
magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again
|
||||||
|
//picture = ""; // Not supported yet
|
||||||
|
//model = ""; // Not supported yet
|
||||||
|
weaponPoolAvailable = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
94
documentation/framework/dragging-framework.md
Normal file
94
documentation/framework/dragging-framework.md
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Dragging/Carrying Framework
|
||||||
|
description: Explains how to set-up dragging and carrying of objects with the ACE3 dragging and carrying system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Config Values
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgVehicles {
|
||||||
|
class MyVehicle {
|
||||||
|
// Dragging
|
||||||
|
ace_dragging_canDrag = 1; // Can be dragged (0-no, 1-yes)
|
||||||
|
ace_dragging_dragPosition[] = {0, 1.2, 0}; // Offset of the model from the body while dragging (same as attachTo)
|
||||||
|
ace_dragging_dragDirection = 0; // Model direction while dragging (same as setDir after attachTo)
|
||||||
|
|
||||||
|
// Carrying
|
||||||
|
ace_dragging_canCarry = 1; // Can be carried (0-no, 1-yes)
|
||||||
|
ace_dragging_carryPosition[] = {0, 1.2, 0}; // Offset of the model from the body while dragging (same as attachTo)
|
||||||
|
ace_dragging_carryDirection = 0; // Model direction while dragging (same as setDir after attachTo)
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Functions
|
||||||
|
|
||||||
|
<div class="panel callout">
|
||||||
|
<h5>Note:</h5>
|
||||||
|
<p>The following functions are NOT public and are likely to change in the future!</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
You will **not** be able to carry / drag objects that are too heavy, the mass is also affected by what is inside the object. To bypass this empty the object and/or use `setMass`.
|
||||||
|
|
||||||
|
### 2.1 Enabling / disabling dragging
|
||||||
|
|
||||||
|
`ace_dragging_fnc_setDraggable`
|
||||||
|
|
||||||
|
| Arguments | Type | Optional (default value)
|
||||||
|
---| --------- | ---- | ------------------------
|
||||||
|
0 | Any object | Object | Required
|
||||||
|
1 | Enable dragging, true to enable, false to disable | Boolean | Required
|
||||||
|
2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`)
|
||||||
|
3 | Direction in degree to rotate the object | Number | Optional (default: `0`)
|
||||||
|
**R** | None | None | Return value
|
||||||
|
|
||||||
|
#### 2.1.1 Example 1
|
||||||
|
|
||||||
|
`[foo, true, [0, 2, 0], 45] call ace_dragging_fnc_setDraggable;`
|
||||||
|
|
||||||
|
| Arguments | Explanation
|
||||||
|
---| --------- | -----------
|
||||||
|
0 | `foo` | My object
|
||||||
|
1 | `true` | Dragging is enabled
|
||||||
|
2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards
|
||||||
|
3 | `45` | Rotated by 45°
|
||||||
|
|
||||||
|
#### 2.1.2 Example 2
|
||||||
|
|
||||||
|
`[bar, false, [3, -2, 2], 20] call ace_dragging_fnc_setDraggable;`
|
||||||
|
|
||||||
|
| Arguments | Explanation
|
||||||
|
---| --------- | -----------
|
||||||
|
0 | `bar` | My object
|
||||||
|
1 | `false` | Dragging is disabled
|
||||||
|
2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards
|
||||||
|
3 | `20` | Rotated by 20°
|
||||||
|
|
||||||
|
|
||||||
|
### 2.2 Enabling / disabling carrying
|
||||||
|
|
||||||
|
`ace_dragging_fnc_setCarryable`
|
||||||
|
|
||||||
|
| Arguments | Type | Optional (default value)
|
||||||
|
---| --------- | ---- | ------------------------
|
||||||
|
0 | Any object | Object | Required
|
||||||
|
1 | Enable carrying, true to enable, false to disable | Boolean | Required
|
||||||
|
2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`)
|
||||||
|
3 | Direction in degree to rotate the object | Number | Optional (default: `0`)
|
||||||
|
**R** | None | None | Return value
|
||||||
|
|
||||||
|
#### 2.2.1 Example
|
||||||
|
|
||||||
|
`[foo, true, [0, 3, 1], 10] call ace_dragging_fnc_setCarryable;`
|
||||||
|
|
||||||
|
| Arguments | Explanation
|
||||||
|
---| --------- | -----------
|
||||||
|
0 | `foo` | My object
|
||||||
|
1 | `true`| Carrying is enabled
|
||||||
|
2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards
|
||||||
|
3 | `10` | Rotated by 10°
|
123
documentation/framework/explosives-framework.md
Normal file
123
documentation/framework/explosives-framework.md
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Explosives Framework
|
||||||
|
description: Explains how to set-up custom explosives with the ACE3 explosives system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="panel callout">
|
||||||
|
<h5>Note:</h5>
|
||||||
|
<p>This is just the necessary to make explosives using the framework, this is not a guide to make your own explosives.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 1. Explosives
|
||||||
|
|
||||||
|
### 1.1 Setting the magazine
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgMagazines {
|
||||||
|
class CA_Magazine;
|
||||||
|
class banana_satchel_remote_mag: CA_Magazine {
|
||||||
|
ACE_Placeable = 1; // Can be placed
|
||||||
|
useAction = 0; // Disable the vanilla interaction
|
||||||
|
ACE_SetupObject = "banana_satchel_place"; // The object placed before the explosive is armed
|
||||||
|
class ACE_Triggers { // Trigger configurations
|
||||||
|
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch"}; // Triggers that can be used
|
||||||
|
class Timer {
|
||||||
|
FuseTime = 0.5; // Time for the fuse to burn
|
||||||
|
};
|
||||||
|
class Command {
|
||||||
|
FuseTime = 0.5;
|
||||||
|
};
|
||||||
|
class MK16_Transmitter: Command {};
|
||||||
|
class DeadmanSwitch: Command {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.2 Setting the ammo
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgAmmo {
|
||||||
|
class PipeBombBase;
|
||||||
|
class SatchelCharge_Remote_Ammo: PipeBombBase {
|
||||||
|
soundActivation[] = {"", 0, 0, 0}; // No sound on activation
|
||||||
|
soundDeactivation[] = {"", 0, 0, 0}; // No sound on deactivation
|
||||||
|
triggerWhenDestroyed = 1; // (Optional) Explode when the object is shot and destroyed (after being placed) (0-disabled, 1-enabled).
|
||||||
|
ACE_explodeOnDefuse = 0.02; // (Optional) Add a chance for the explosive to detonate after being disarmed (in percent)
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.3 Adding the place item
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgVehicles {
|
||||||
|
class ACE_Explosives_Place;
|
||||||
|
class banana_satchel_place: ACE_Explosives_Place {
|
||||||
|
displayName = "Banana satchel"; // Name of the item
|
||||||
|
model = ""; // Path to your model
|
||||||
|
ACE_offset[] = {0, 0, 0}; // Offset of the interaction point from the model in meters on the X,Y,Z axis.
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Mines
|
||||||
|
|
||||||
|
### 2.1 Setting the magazine
|
||||||
|
|
||||||
|
_Pretty much the same as Explosives except that we inherit from_ `ATMine_Range_Mag` _instead of_ `CA_Magazine`.
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgMagazines {
|
||||||
|
class ATMine_Range_Mag;
|
||||||
|
class BananaMine_Range_Mag: ATMine_Range_Mag {
|
||||||
|
ACE_SetupObject = "BananaMine_Place"; // The object placed before the mine is armed
|
||||||
|
class ACE_Triggers { // Triggers
|
||||||
|
SupportedTriggers[] = {"PressurePlate"}; // This mine only support pressure plate activation
|
||||||
|
class PressurePlate {
|
||||||
|
digDistance = 0.05;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2 Setting up the Ammo
|
||||||
|
|
||||||
|
The class you inherit from depends of what type of trigger you are using, for `PressurePlate` and `Tripwire` you can skip this step, for timers and clackers refer to the Explosives entry.
|
||||||
|
|
||||||
|
Directional mines inherit from `DirectionalBombBase`.
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Adding your own detonators
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class ACE_ItemCore; // ACE3 base item class
|
||||||
|
class ACE_Clacker; // Clacker base class
|
||||||
|
class banana_clacker: ACE_Clacker {
|
||||||
|
displayName = "banana clacker"; // Name of the item
|
||||||
|
picture = ""; // Path to the item's picture
|
||||||
|
ACE_Range = 9000; // Explosives activation range in meters
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Trigger list
|
||||||
|
|
||||||
|
Name | Use
|
||||||
|
---- | -----
|
||||||
|
`Command` | Explode when activated via clacker.
|
||||||
|
`MK16_Transmitter` | Explode when activated via M26 clacker.
|
||||||
|
`DeadManSwitch` | Explode after activated via the switch or the person dies.
|
||||||
|
`Cellphone` | Explode when the number is called.
|
||||||
|
`PressurePlate` | Explode upon being stepped upon.
|
||||||
|
`IRSensor` | Explode after movement is detected in front of the mine.
|
||||||
|
`Timer` | Explode after timer drop to 0.
|
||||||
|
`Tripwire` | Explode when something touch the tripwire.
|
119
documentation/framework/frag-framework.md
Normal file
119
documentation/framework/frag-framework.md
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Fragmentation Framework
|
||||||
|
description: Explains how to set-up fragmentation system for explosives using ACE3 fragmentation system.
|
||||||
|
group: framework
|
||||||
|
parent: wiki
|
||||||
|
order: 7
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Overview
|
||||||
|
|
||||||
|
The fragmentation system in ACE3 is a significant improvement over the fragmentation system in ACE2. Previously the system relied on fuzzy math from the values of `indirectHit` and `indirectHitRange` in `CfgAmmo` to calculate roughly the velocity and range of fragmentation. This had some serious drawbacks, especially in the case of smaller explosives such as hand grenades and 40mm grenades where casualty production was lower than desired.
|
||||||
|
|
||||||
|
In ACE3 the system has moved away from what "feels" right to actual explosive engineering equations, primarily the [Gurney equations](http://en.wikipedia.org/wiki/Gurney_equations). This allows us to get close to the actual fragmentation velocities that would be produced by an explosive configuration similar to type of ammo we are simulating.
|
||||||
|
|
||||||
|
The system for the end-developer is easy to use, and only requires minimal research into the type of ammo being represented.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Config Values
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgAmmo {
|
||||||
|
class MyGrenade {
|
||||||
|
ace_frag_enabled = 1; // Enable fragmentation (0-disabled, 1-enabled)
|
||||||
|
ace_frag_metal = 210; // Amount of metal being fragmented (grams) - information below
|
||||||
|
ace_frag_charge = 185; // Amount of explosive filler (grams) - information below
|
||||||
|
ace_frag_gurney_c = 2843; // Gurney velocity constant for explosive type - information below
|
||||||
|
ace_frag_gurney_k = 3/5; // Gurney shape factor - information below
|
||||||
|
ace_frag_classes[] = {"ACE_frag_large"}; // Type of fragments - information below
|
||||||
|
ace_frag_skip = 0; // (Optional) Skip fragmentation for this ammo type (0-disabled, 1-enabled) - information below
|
||||||
|
ace_frag_force = 1; // (Optional) Force fragmentation system (0-disabled, 1-enabled) - information below
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.1 Metal amount
|
||||||
|
|
||||||
|
`ace_frag_metal`
|
||||||
|
|
||||||
|
Amount of metal being fragmented (generally taken as the entire weight of the warhead, though in some cases you might want to only include the fragmentation jacket or body.
|
||||||
|
|
||||||
|
Dimensionless value, as long as same unit as `ace_frag_charge` (for example `kg/kg` or `g/g` or `lbs/lbs`).
|
||||||
|
|
||||||
|
### 1.2 Explosives filler amount
|
||||||
|
|
||||||
|
`ace_frag_charge`
|
||||||
|
|
||||||
|
Amount of explosive filler in the warhead. `ace_frag_metal` and `ace_frag_charge` are dimensionless values, as long as they are both in the same unit (for example kg/kg g/g lbs/lbs).
|
||||||
|
|
||||||
|
Dimensionless value, as long as same unit as `ace_frag_metal` (for example `kg/kg` or `g/g` or `lbs/lbs`).
|
||||||
|
|
||||||
|
### 1.3 Gurney velocity constant
|
||||||
|
|
||||||
|
`ace_frag_gurney_c`
|
||||||
|
|
||||||
|
Gurney constant for explosive force. You can find a list of common explosive types below. If you can not find it here, or want more accurate numbers, just google the type of explosive and Gurney constant and you can find substantial information. This is **not** the detonation velocity of the explosive, do not confuse them!
|
||||||
|
|
||||||
|
Type | Speed
|
||||||
|
--------------- | --------
|
||||||
|
Composition B | 2700 m/s
|
||||||
|
Composition C-3 | 2680 m/s
|
||||||
|
Cyclotol 75/25 | 2790 m/s
|
||||||
|
HMX | 2800 m/s
|
||||||
|
LX-14 | 2970 m/s
|
||||||
|
Octol 75/25 | 2800 m/s
|
||||||
|
PBX 9404 | 2900 m/s
|
||||||
|
PBX 9502 | 2377 m/s
|
||||||
|
PETN | 2930 m/s
|
||||||
|
RDX | 2830 m/s
|
||||||
|
Tetryl | 2500 m/s
|
||||||
|
TNT | 2440 m/s
|
||||||
|
Tritonal | 2320 m/s
|
||||||
|
|
||||||
|
### 1.4 Gurney shape factor
|
||||||
|
|
||||||
|
`ace_frag_gurney_k`
|
||||||
|
|
||||||
|
Shape factor for the explosive configuration. You should choose it based on the general configuration of explosives/metal in the warhead. Most grenades for example are a sphere. Artillery and aircraft bombs are a cylinder. Mines generally a flat plate. Below is a list of the three common shapes and their factors.
|
||||||
|
|
||||||
|
Shape | Factor
|
||||||
|
-------- | ------
|
||||||
|
Sphere | 3/5
|
||||||
|
Cylinder | 1/2
|
||||||
|
Plate | 3/5
|
||||||
|
|
||||||
|
There are other configurations but these are the most common. If you are interested in others check out the wikipedia link given above. Most of these will not correctly function in ACE3 though due to additional variables for the equation.
|
||||||
|
|
||||||
|
### 1.5 Fragments type
|
||||||
|
|
||||||
|
`ace_frag_classes[]`
|
||||||
|
|
||||||
|
There are different types of fragmentation fragments to choose from, and they can be defined in this config value.
|
||||||
|
|
||||||
|
| Type
|
||||||
|
| ----
|
||||||
|
| ACE_frag_tiny
|
||||||
|
| ACE_frag_tiny_HD
|
||||||
|
| ACE_frag_small
|
||||||
|
| ACE_frag_small_HD
|
||||||
|
| ACE_frag_medium
|
||||||
|
| ACE_frag_medium_HD
|
||||||
|
| ACE_frag_large
|
||||||
|
| ACE_frag_large_HD
|
||||||
|
| ACE_frag_huge
|
||||||
|
| ACE_frag_huge_HD
|
||||||
|
|
||||||
|
The tinier the piece of fragmentation the shorter the distance of travel. The `_HD` variants are all even higher drag versions. Grenades generally should use the `_HD` variants. Experimentation here is important.
|
||||||
|
|
||||||
|
### 1.6 Ignore fragmentation
|
||||||
|
|
||||||
|
`ace_frag_skip`
|
||||||
|
|
||||||
|
Setting this to `1` will skip fragmentation for ammo of this type. This is useful for things that might cause high network load, such as FFAR rockets, or possibly even 40mm grenades from AGLs. Experimentation under network conditions is required.
|
||||||
|
|
||||||
|
### 1.7 Force fragmentation
|
||||||
|
|
||||||
|
`ace_frag_force`
|
||||||
|
|
||||||
|
Settings this to `1` will force the fragmentation system to use frag on this ammo, ignoring internal qualifications based on hit values.
|
@ -1,77 +0,0 @@
|
|||||||
---
|
|
||||||
layout: wiki
|
|
||||||
title: Fragmentation Configuration
|
|
||||||
description: The fragmentation system (ace_frag) in ACE3 is a significant improvement over the fragmentation system in ACE2.
|
|
||||||
group: framework
|
|
||||||
parent: wiki
|
|
||||||
order: 7
|
|
||||||
---
|
|
||||||
|
|
||||||
The fragmentation system (ace_frag) in ACE3 is a significant improvement over the fragmentation system in ACE2. Previously the system relied on fuzzy math from the values of `indirectHit` and `indirectHitRange` in CfgAmmo to calculate roughly the velocity and range of fragmentation. This had some serious drawbacks, especially in the case of smaller explosives such as hand grenades and 40mm grenades where casualty production was lower than desired.
|
|
||||||
|
|
||||||
In ACE3 the system has moved away from what "feels" right to actual explosive engineering equations, primarily the [Gurney equations](http://en.wikipedia.org/wiki/Gurney_equations). This allows us to get close to the actual fragmentation velocities that would be produced by an explosive configuration similar to type of ammo we are simulating.
|
|
||||||
|
|
||||||
The system for the end-developer is easy to use, and only requires minimal research into the type of ammo being represented. I will describe how to do this in this ticket.
|
|
||||||
|
|
||||||
Below is an example set of explosives configuration properties for sys_frag (in this case an M67 hand grenade):
|
|
||||||
|
|
||||||
```c++
|
|
||||||
ace_frag_metal = 210; // metal in grams
|
|
||||||
ace_frag_charge = 185; // explosive in grams
|
|
||||||
ace_frag_gurney_c = 2843; // Gurney velocity constant for explosive type. See: http://en.wikipedia.org/wiki/Gurney_equations
|
|
||||||
ace_frag_gurney_k = 3/5; // Gurney shape factor, in this case a sphere. See: http://en.wikipedia.org/wiki/Gurney_equations
|
|
||||||
```
|
|
||||||
|
|
||||||
`ace_frag_metal` is the amount of metal being fragmented (generally taken as the entire weight of the warhead, though in some cases you might want to only include the fragmentation jacket or body. `ace_frag_charge` is the amount of explosive filler in the warhead. `ace_frag_metal` and `ace_frag_charge` are dimensionless values, as long as they are both in the same unit (for example kg/kg g/g lbs/lbs).
|
|
||||||
|
|
||||||
`ace_frag_gurney_c` is the Gurney constant for explosive force. You can find a list of common explosive types below. If you can not find it here, or want more accurate numbers, just google the type of explosive and Gurney constant and you can find substantial information. This is *NOT* the detonation velocity of the explosive, do not confuse them!
|
|
||||||
|
|
||||||
| Type | Speed |
|
|
||||||
|------------------|----------|
|
|
||||||
|Composition B | 2700 m/s |
|
|
||||||
|Composition C-3 | 2680 m/s |
|
|
||||||
|Cyclotol 75/25 | 2790 m/s |
|
|
||||||
|HMX | 2800 m/s |
|
|
||||||
|LX-14 | 2970 m/s |
|
|
||||||
|Octol 75/25 | 2800 m/s |
|
|
||||||
|PBX 9404 | 2900 m/s |
|
|
||||||
|PBX 9502 | 2377 m/s |
|
|
||||||
|PETN | 2930 m/s |
|
|
||||||
|RDX | 2830 m/s |
|
|
||||||
|Tetryl | 2500 m/s |
|
|
||||||
|TNT | 2440 m/s |
|
|
||||||
|Tritonal | 2320 m/s |
|
|
||||||
|
|
||||||
|
|
||||||
`ace_frag_gurney_k` is the shape factor for the explosive configuration. You should choose it based on the general configuration of explosives/metal in the warhead. Most grenades for example are a sphere. Artillery and aircraft bombs are a cylinder. Mines generally a flat plate. Below is a list of the three common shapes and their factors.
|
|
||||||
|
|
||||||
```
|
|
||||||
Sphere = 3/5
|
|
||||||
Cylinder = 1/2
|
|
||||||
Plate = 3/5
|
|
||||||
```
|
|
||||||
|
|
||||||
There are other configurations but these are the most common. If you are interested in others check out the wikipedia link given above. Most of these will not correctly function in sys_frag though due to additional variables for the equation.
|
|
||||||
|
|
||||||
In addition to these variables there are different types of fragmentation fragments to choose from, and they can be defined in the config value `ace_frag_classes[]`. Below are a list of the types.
|
|
||||||
|
|
||||||
```
|
|
||||||
ACE_frag_tiny
|
|
||||||
ACE_frag_tiny_HD
|
|
||||||
ACE_frag_small
|
|
||||||
ACE_frag_small_HD
|
|
||||||
ACE_frag_medium
|
|
||||||
ACE_frag_medium_HD
|
|
||||||
ACE_frag_large
|
|
||||||
ACE_frag_large_HD
|
|
||||||
ACE_frag_huge
|
|
||||||
ACE_frag_huge_HD
|
|
||||||
```
|
|
||||||
|
|
||||||
The tinier the piece of fragmentation the shorter the distance of travel. The `_HD` variants are all even higher drag versions. Grenades generally should use the `_HD` variants. Experimentation here is important.
|
|
||||||
|
|
||||||
The final information needed is a couple of entries for forcing or ignoring fragmentation for this ammo.
|
|
||||||
|
|
||||||
If you set `ace_frag_skip` to 1 then you will skip fragmentation for ammo of this type. This is useful for things that might cause high network load, such as FFAR rockets, or possibly even 40mm grenades from AGLs. Experimentation under network conditions is required.
|
|
||||||
|
|
||||||
If you set `ace_frag_force` to 1 it will force the fragmentation system to use frag on this ammo, ignoring sys_frags internal qualifications based on hit values.
|
|
35
documentation/framework/goggles-framework.md
Normal file
35
documentation/framework/goggles-framework.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Goggles Framework
|
||||||
|
description: Explains how to set-up goggles with ACE3 goggles system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Config Values
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgGlasses {
|
||||||
|
class MyGoggles {
|
||||||
|
ace_color[] = {0, 0, -1}; // Post-proccess color
|
||||||
|
ace_tintAmount = 8; // Amount of tint applied to the color
|
||||||
|
ace_resistance = 1; // Resistance to breaking (0 or 1 or 2)
|
||||||
|
ace_protection = 0; // Provides protection (0-no, 1-yes)
|
||||||
|
ace_overlay = ""; // (Optional) Default overlay image path ("" for none)
|
||||||
|
ace_overlayDirt = "A3\Ui_f\data\igui\rsctitles\HealthTextures\dust_upper_ca.paa"; // (Optional) Dirt overlay image path
|
||||||
|
ace_overlayCracked = "mod\textures\HUD\Cracked.paa"; // (Optional) Cracked overlay image path
|
||||||
|
ace_dustPath = "mod\textures\fx\dust\dust1.paa"; // (Optional) Dust overlay image path
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Events
|
||||||
|
|
||||||
|
### 2.1 Listenable
|
||||||
|
|
||||||
|
Event Name | Description | Passed Parameter(s) | Locality
|
||||||
|
---------- | ----------- | ------------------- | --------
|
||||||
|
`"GlassesChanged"` | Glasses Changed | `[_glassesClass]` | Local
|
||||||
|
`"GlassesCracked"` | Glasses Cracked | `[_unit]` | Local
|
21
documentation/framework/hearing-framework.md
Normal file
21
documentation/framework/hearing-framework.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Hearing Framework
|
||||||
|
description: Explains how to set-up headgear with ACE3 hearing system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Config Values
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyHelmet {
|
||||||
|
ace_hearing_protection = 0.80; // Protection against deafening (0 to 1, higher means more protection)
|
||||||
|
ace_hearing_lowerVolume = 0.60; // Muffling of the sound (0 to 1, higher means more muffling)
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
The protection/muffling is a multiplier and not an absolute value, you can still be deafened/muffled with a value of 1.
|
27
documentation/framework/huntIR-framework.md
Normal file
27
documentation/framework/huntIR-framework.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: HuntIR Framework
|
||||||
|
description: Explains how to add HuntIR support to a weapon.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Config Values
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyRifle {
|
||||||
|
class MyGL: UGL_F {
|
||||||
|
magazines[] = {
|
||||||
|
// All default UGL magazines
|
||||||
|
"MyFirstMag",
|
||||||
|
"MySecondMag",
|
||||||
|
"MyLastMag",
|
||||||
|
// HuntIR magazine
|
||||||
|
"ACE_HuntIR_M203"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
23
documentation/framework/javelin-framework.md
Normal file
23
documentation/framework/javelin-framework.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Javelin Framework
|
||||||
|
description: Explains how to set-up Javelin-style locking system to a launcher.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Config Values
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyLauncher {
|
||||||
|
ace_javelin_enabled = 1; // Enable Javelin-style locking (0-disabled, 1-enabled)
|
||||||
|
weaponInfoType = "ACE_RscOptics_javelin"; // Inteface
|
||||||
|
modelOptics = "\z\ace\addons\javelin\data\reticle_titan.p3d"; // Optics model
|
||||||
|
canLock = 0; // Disable vanilla locking (0-disabled, 1-enabled)
|
||||||
|
lockingTargetSound[] = {"", 0, 1}; // Locking sound
|
||||||
|
lockedTargetSound[] = {"", 0, 1}; // Target acquired sound
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
117
documentation/framework/missile-guidance-framework.md
Normal file
117
documentation/framework/missile-guidance-framework.md
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Advanced Missile Guidance Framework
|
||||||
|
description: The ACE3 Advanced Missile Guidance Framework provides a setup of configuration settings, functions and a execution framework for mod makers to integrate with the missile guidance and targeting mechanisms of ACE3.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Overview
|
||||||
|
|
||||||
|
The ACE3 Advanced Missile Guidance Framework provides a setup of configuration settings, functions and an execution framework for mod makers to integrate with the missile guidance and targeting mechanisms of ACE3. It also provides the mod makers to create their own custom guidance methods within the framework.
|
||||||
|
|
||||||
|
The framework provides all the functionality needed for guidance; from laser locking, target specification and selection, to handling the fired events and tracking and steering the vehicle based on provided parameters. This way, all that needs to be defined in mods is the appropriate `CfgAmmo` entries for the missile.
|
||||||
|
|
||||||
|
The framework also provides mod makers and scripters with the ability to configure custom seeker types and attack profiles, which are defined below. This allows for complete control of the guidance, locking and flight of a missile at the discretion of the mod maker.
|
||||||
|
|
||||||
|
ACE3 provides a full suite of base concepts and guidance for the majority of modern missile weaponry avialable today; these includes all basic types of seekers (SALH, SACLOS, Optic, Thermal ...) as well as the different common attack profiles utilized with guided munitions (such as top-down attack).
|
||||||
|
|
||||||
|
Finally, flight profiles and mechanics for realistic missile simulations are also implemented; allowing for lock-steering bump guidance flight such as with the M47 Dragon or GBU steering fins, or finely tuned direct flight guidance which is currently available with other missile types.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Components
|
||||||
|
|
||||||
|
The framework is broken up into 3 major components: Locking Types, Seeker Types and Attack Profiles. In combination, these components build out the entire process of launching, locking and going terminal flight against targets.
|
||||||
|
|
||||||
|
#### 2.1 Locking Types
|
||||||
|
Locking types provide the basic functionality of targeting which will be based to a seeker type, providing target acquisition for seekers. This provides the basic functionality for providing pre-determined targets for a seeker, or allowing the seeker to perform its own target acquisition and locking. Additionally, the seeker may reference back into the locking type in order to re-perform target acquisition.
|
||||||
|
|
||||||
|
#### 2.2 Seeker Types
|
||||||
|
Each seeker is generally assumed to be the logic for the seeker head unit within any given munition. Seekers within this framework provide the basic targeting functionality for the entire framework. The locking type will provide a generic target to the seeker, or the seeker may aquire a target on its own. The seeker then provides a target, either an object or a ASL position, which is then passed further into the framework. This target (or position) should be the actual current target position for the missiles flight. Seekers are required to perform all limitations and checks within their systems, although various limitations have been provided in this framework such as LOS FOV, laser guidance, etc.
|
||||||
|
|
||||||
|
#### 2.3 Attack Profiles
|
||||||
|
|
||||||
|
An attack profile adjusts the current target flight location to create the actual flight path of the missile. The attack profile is provided with all parameters of the system, including the returned target of the seeker. Using this information, the attack profile then will adjust the *direct flight target position* to specifically direct where and how the missile shall flight.
|
||||||
|
|
||||||
|
|
||||||
|
## 3. How it all ties together
|
||||||
|
|
||||||
|
The system is executed in a linear series of calls to each step of the process, and feeding back the return from that step to the next step. Execution is conducted using Locking -> Seeker -> Profile, iteratively every frame of execution. Flight times are adjusted to `accTime` values and FPS lag, giving consistent flight.
|
||||||
|
|
||||||
|
On each step of execution, a target specification array `[targetObj, targetPos]` is passed to the locking type, which then will return a possible modified target array. Next, this modified data is passed to the seeker type - which then, in turn, returns a position vector to the current "seeked" target position (ASL). Last, this target position is passed to the attack profile, which then returns an "adjusted attack position" (ASL), which is the location the missile should *currently* be homing on for flight.
|
||||||
|
|
||||||
|
In the simplest sense, the entire system provides the flight trajectory of the missile homing directly on the "adjusted attack position"; thus, an attack profile would ajust this position to direct the missile. For example, top down attacks return the adjusted attack position high above the target, until entering their terminal stages, which then changes the position to be directly on top of the target - thus "walking the missile" along its flight path and to the impact.
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Config Values
|
||||||
|
|
||||||
|
### 4.1 Enabling guidance on Ammo Types
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgAmmo {
|
||||||
|
class MyMissile {
|
||||||
|
manualControl = 0; // Turn off vanilla crosshair guidance
|
||||||
|
|
||||||
|
// Begin ACE guidance Configs
|
||||||
|
class ace_missileguidance {
|
||||||
|
enabled = 1; // Enable missile guidance (0-disabled, 1-enabled)
|
||||||
|
|
||||||
|
minDeflection = 0.00025; // Minimum flap deflection for guidance
|
||||||
|
maxDeflection = 0.001; // Maximum flap deflection for guidance
|
||||||
|
incDeflection = 0.0005; // The increment in which deflection adjusts
|
||||||
|
|
||||||
|
canVanillaLock = 0; // Enable vanilla lock, only applicable to non-cadet modes, 'recruit' always uses vanilla locking (0-disabled, 1-enabled)
|
||||||
|
|
||||||
|
defaultSeekerType = "SALH"; // Default seeker type
|
||||||
|
seekerTypes[] = {"SALH", "LIDAR", "SARH", "Optic", "Thermal", "GPS", "SACLOS", "MCLOS"}; // Seeker types available
|
||||||
|
|
||||||
|
defaultSeekerLockMode = "LOAL"; // Default seeker lock mode
|
||||||
|
seekerLockModes[] = {"LOAL", "LOBL"}; // Seeker lock modes available
|
||||||
|
|
||||||
|
seekerAngle = 90; // Angle in front of the missile which can be searched
|
||||||
|
seekerAccuracy = 1; // Seeker accuracy multiplier
|
||||||
|
|
||||||
|
seekerMinRange = 1; // Minimum range from the missile which the seeker can visually search
|
||||||
|
seekerMaxRange = 2500; // Maximum from the missile which the seeker can visually search
|
||||||
|
|
||||||
|
defaultAttackProfile = "LIN"; // Default attack profile
|
||||||
|
attackProfiles[] = {"LIN", "DIR", "MID", "HI"}; // Attack profiles available
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 Custom Seeker Types
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class ace_missileguidance_attackProfiles {
|
||||||
|
class MyAttackProfile {
|
||||||
|
name = ""; // Name
|
||||||
|
visualName = ""; // Visual name
|
||||||
|
description = ""; // Description
|
||||||
|
|
||||||
|
functionName = "my_fnc_doSeekerType"; // Function that handles the seeker type
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3 Custom Attack Profiles
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class ace_missileguidance_seekerTypes {
|
||||||
|
class MySeekerType {
|
||||||
|
name = ""; // Name
|
||||||
|
visualName = ""; // Visual name
|
||||||
|
description = ""; // Description
|
||||||
|
|
||||||
|
functionName = "my_fnc_doAttackProfile"; // Function that handles the attack profile
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. Events
|
||||||
|
|
||||||
|
### 5.1 Listenable
|
||||||
|
|
||||||
|
Event Name | Description | Passed Parameter(s) | Locality
|
||||||
|
---------- | ----------- | ------------------- | --------
|
||||||
|
`"ace_missileguidance_handoff"` | Missile handed off | `[_target, _args]` | Global
|
21
documentation/framework/nightvision-framework.md
Normal file
21
documentation/framework/nightvision-framework.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Night Vision Framework
|
||||||
|
description: Explains how to set-up night vision goggles with ACE3 night vision system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Config Values
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyNightVision {
|
||||||
|
displayName = "Banana NVGs"; // Name displayed in the inventory
|
||||||
|
ace_nightVision_grain = 0.75; // Amount of grain (dots) on the screen (more means more grain) - can be higher than 1
|
||||||
|
ace_nightVision_blur = 0.055; // Blur amount (more means more blur) - keep low values!
|
||||||
|
ace_nightVision_radBlur = 0.001; // Radial blur amount (more means more blur) - keep low values!
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
78
documentation/framework/overheating-framework.md
Normal file
78
documentation/framework/overheating-framework.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Overheating Framework
|
||||||
|
description: Explains how to set-up weapon overheating with ACE3 overheating system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Config Values
|
||||||
|
|
||||||
|
### 1.1 Barrel Switching
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyMG {
|
||||||
|
ace_overheating_allowSwapBarrel = 1; // Enable barrel swap (0-disabled, 1-enabled) - information below
|
||||||
|
ace_overheating_dispersion[] = {0, -0.001, 0.001, 0.004}; // Bullet dispersion (in radians) - information below
|
||||||
|
ace_overheating_slowdownFactor[] = {1, 1, 1, 0.9}; // Slowdown factor inside the barrel - information below
|
||||||
|
ace_overheating_jamChance[] = {0, 0.0003, 0.0015, 0.0075}; // Jam chance - information below
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.1.1 Temperatures
|
||||||
|
|
||||||
|
`ace_overheating_dispersion[]`
|
||||||
|
`ace_overheating_slowdownFactor[]`
|
||||||
|
`ace_overheating_jamChance[]`
|
||||||
|
|
||||||
|
Above arrays have 4 values for different temperatures, which are interpolated between. These values correspond to temperatures converted to real life values from.
|
||||||
|
|
||||||
|
Config | Real Life
|
||||||
|
------ | ---------
|
||||||
|
0 | 0°C
|
||||||
|
1 | 333°C
|
||||||
|
2 | 666°C
|
||||||
|
3 | 1000°C
|
||||||
|
|
||||||
|
### 1.1.2 Barrel Swapping
|
||||||
|
|
||||||
|
`ace_overheating_allowSwapBarrel`
|
||||||
|
|
||||||
|
Meant for machine guns where you can easily swap the barrel without dismantling the whole weapon.
|
||||||
|
|
||||||
|
### 1.1.3 Dispersion
|
||||||
|
|
||||||
|
`ace_overheating_dispersion[]`
|
||||||
|
|
||||||
|
Dispersion in radians. First value is for temperature 0, second for temperature 1 and so on. Values in-between get interpolated. Negative values are ignored and can be used to move the starting point to hotter temperatures.
|
||||||
|
|
||||||
|
### 1.1.4 Slowdown Factor
|
||||||
|
|
||||||
|
`ace_overheating_slowdownFactor[]`
|
||||||
|
|
||||||
|
How much the projectile gets slowed down before leaving the barrel. `0.9` means the bullet will lose 10% velocity. Values in-between get interpolated. Numbers greater than `1` increase the velocity, smaller decrease it.
|
||||||
|
|
||||||
|
### 1.1.5 Jam Chance
|
||||||
|
|
||||||
|
`ace_overheating_jamChance[]`
|
||||||
|
|
||||||
|
Chance to jam the weapon. `0.0003` means 3 malfunctions on 10,000 rounds fired at this temperature. Values in-between get interpolated. Negative values are ignored and can be used to move the starting point to hotter temperatures.
|
||||||
|
|
||||||
|
When no reliable data exists for temperature versus jam chance except MRBS, the following uniform criteria was adopted.
|
||||||
|
`[0, 1/MRBS, 5/MRBS, 25/MRBS]`
|
||||||
|
|
||||||
|
|
||||||
|
### 1.2 Custom Animations
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyMG {
|
||||||
|
ace_clearJamAction = "GestureReload"; // Custom jam clearing action, default uses reload animation
|
||||||
|
ace_checkTemperatureAction = "Gear"; // Custom check temperature action, default uses gear animation
|
||||||
|
ace_clearJamAction = ""; // Custom jam clearing action, use empty string to undefine
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
45
documentation/framework/overpressure-framework.md
Normal file
45
documentation/framework/overpressure-framework.md
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Overpressure Framework
|
||||||
|
description: Explains how to set-up launchers and cannons with backblast and overpressure areas with the ACE3 overpressure system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Config Values
|
||||||
|
|
||||||
|
### 1.1 Launchers
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyLauncher {
|
||||||
|
ace_overpressure_angle = 60; // Cone in which the damage is applied (in degrees from the back end of the launcher)
|
||||||
|
ace_overpressure_range = 15; // Range in meters in which the damage is applied
|
||||||
|
ace_overpressure_damage = 0.7; // Damage multiplier
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.2 Cannons
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyBananaCannon {
|
||||||
|
ace_overpressure_angle = 90; // Cone in which the damage is applied (in degrees from the muzzle of the cannon)
|
||||||
|
ace_overpressure_range = 50; // Range in meters in which the damage is applied
|
||||||
|
ace_overpressure_damage = 0.85; // Damage multiplier
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
- You can note that the angle range and damage values are higher, that's because this is a cannon and the backblast area is bigger.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Events
|
||||||
|
|
||||||
|
### 2.1 Listenable
|
||||||
|
|
||||||
|
Event Name | Description | Passed Parameter(s) | Locality
|
||||||
|
---------- | ----------- | ------------------- | --------
|
||||||
|
`"overpressure"` | Overpressure damage inflicted | `[_firer, _position, _direction, _weapon]` | Target
|
19
documentation/framework/parachute-framework.md
Normal file
19
documentation/framework/parachute-framework.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Parachute Framework
|
||||||
|
description: Explains how to set-up a parachute with ACE3 parachute system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Adding reserve parachute to existing parachute
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgVehicles {
|
||||||
|
class BananaParachute {
|
||||||
|
ace_hasReserveParachute = 1; // Add reserve parachute (1-enabled, 0-disabled)
|
||||||
|
ace_reserveParachute = "ACE_ReserveParachute"; // Classname of the reserve parachute
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
26
documentation/framework/reloadlaunchers-framework.md
Normal file
26
documentation/framework/reloadlaunchers-framework.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Reload Launchers Framework
|
||||||
|
description: Explains how to set-up launchers with ACE3 reload launchers system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Adding third party reload
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class MyLauncher {
|
||||||
|
ace_reloadlaunchers_enabled = 1; // Allow your buddies to reload your launcher (0-disabled, 1-enabled)
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Events
|
||||||
|
|
||||||
|
### 2.1 Listenable
|
||||||
|
|
||||||
|
Event Name | Description | Passed Parameter(s) | Locality
|
||||||
|
---------- | ----------- | ------------------- | --------
|
||||||
|
`"reloadLauncher"` | Launcher reloaded | `[_unit, _target, _weapon, _magazine]` | Target
|
31
documentation/framework/scopes-framework.md
Normal file
31
documentation/framework/scopes-framework.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Scopes Framework
|
||||||
|
description: Explains how to set-up scopes with ACE3 scope adjustment system.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Adding scope adjustment support
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class CfgWeapons {
|
||||||
|
class InventoryOpticsItem_Base_F; // ItemInfo base class
|
||||||
|
|
||||||
|
class YourScope {
|
||||||
|
ace_scopeAdjust_vertical[] = {-4, 30}; // Maxmimum vertical adjustment limits
|
||||||
|
ace_scopeAdjust_horizontal[] = {-6, 6}; // Maximum horizontal adjustment limits
|
||||||
|
ace_scopeAdjust_verticalIncrement = 0.1; // Vertical increment
|
||||||
|
ace_scopeAdjust_horizontalIncrement = 0.1; // Horizontal increment
|
||||||
|
class ItemInfo: InventoryOpticsItem_Base_F {
|
||||||
|
class OpticsModes {
|
||||||
|
class Snip {
|
||||||
|
discreteDistance[] = {100};
|
||||||
|
discreteDistanceInitIndex = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
105
documentation/framework/settings-framework.md
Normal file
105
documentation/framework/settings-framework.md
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: Settings Framework
|
||||||
|
description: ACE3 contains an extensive settings framework that allows you to tweak the modification without having to mess around with deleting PBOs.
|
||||||
|
group: framework
|
||||||
|
order: 5
|
||||||
|
parent: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
ACE3 contains an extensive settings framework that allows you to tweak the modification without having to mess around with deleting PBOs. These settings are all handled server side and broadcasted to the clients connecting to that server. This ensures that everyone playing on the server will have a uniform experience.
|
||||||
|
|
||||||
|
Part of this settings framework are global settings and client settings. Both use the same underlaying framework, with the difference that client settings can be adjusted by clients, where global settings can not.
|
||||||
|
|
||||||
|
|
||||||
|
## 1. How do they work
|
||||||
|
|
||||||
|
Settings are entries in the config that get translated to `missionNamespace` global variables. An example settings entry looks like this:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class ACE_Settings {
|
||||||
|
class ACE_module_sampleSetting {
|
||||||
|
// Following 2 entries are redundant if isClientSettable = 0
|
||||||
|
displayName = "$STR_ACE_Common_SettingName"; // Stringtable entry with the setting name
|
||||||
|
description = "$STR_ACE_Common_SettingDescription"; // Stringtable entry with the setting description
|
||||||
|
|
||||||
|
isClientSettable = 1; // Show in client options menu (0-no, 1-yes)
|
||||||
|
typeName = "SCALAR"; // Type (BOOL/SCALAR/STRING/ARRAY/COLOR)
|
||||||
|
value = 1; // Value
|
||||||
|
|
||||||
|
// Following entry is redundant if typeName is NOT "SCALAR"
|
||||||
|
values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; // (Optional) Stringtable entries that describe the options
|
||||||
|
|
||||||
|
// Following entry is present only in export
|
||||||
|
force = 0; // Force the setting (0-no, 1-yes), exported settings are forced by default
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Settings are defined from the mod's config but can be adjusted through the following methods:
|
||||||
|
|
||||||
|
- Optional config entries
|
||||||
|
- Mission modules
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Load order
|
||||||
|
|
||||||
|
The load order for the settings are:
|
||||||
|
|
||||||
|
1. Mod Config
|
||||||
|
2. Server Config
|
||||||
|
3. Mission Config
|
||||||
|
4. Placed Mission Modules
|
||||||
|
|
||||||
|
What this means is that at any the 3 points after the Mod Config it is possible to insert your adjusted settings and force those (optionally). This is a powerful tool for server admins, whom can ensure that everyone is using uniform settings across the board on their server. And it provides mission makers the ability to easily set settings for their mission, without creating a large dependency on ACE3; you do not have to place down mission modules.
|
||||||
|
|
||||||
|
|
||||||
|
## 3. How do I use them?
|
||||||
|
|
||||||
|
In the 'how do they work' chapter an example of settings was shown. This is the same for any settings config. The only difference is the location. For ACE3 modules, the settings are placed in the class `ACE_Settings`. The same goes for the mission config.
|
||||||
|
|
||||||
|
The server config setting entries are done through our optional `ace_server.pbo`, which can be found in the optionals folder of `@ace`. It also contains a `userconfig` folder, which inside contains the file `ace\serverconfig.hpp`. This is the location where ACE3 settings are placed. There is no need for a sub-class.
|
||||||
|
|
||||||
|
### 3.1 Exporting the settings
|
||||||
|
|
||||||
|
ACE3 contains a lot of settings, for that reason tweaking everything to your liking manually can be quite a task. We have provided the option to export all settings in the editor (single-player). For this, follow these simple steps:
|
||||||
|
|
||||||
|
- Open the editor (single-player).
|
||||||
|
- Under modules (<kbd>F7</kbd>), find ACE, `Allow Config Export [ACE]`.
|
||||||
|
- Place down the module, ensure that the `Allow` parameter is set to `Yes`.
|
||||||
|
- Press preview, once in the game, press <kbd>Esc</kbd> and open the ACE3 Options dialog (top left)
|
||||||
|
- This is the dialog where you can modify client side settings. On the bottom left of it, you will now see a button called `Config Export`. Press it and a new dialog opens.
|
||||||
|
- You are now in the dialog that allows you to adjust all settings from ACE3. Tweak this to your liking.
|
||||||
|
- Once you are done tweaking, press the `Export` button and all settings will be copied to your clipboard.
|
||||||
|
- Paste the settings in your `serverconfig.hpp` file and you're done.
|
||||||
|
|
||||||
|
Note that the format copied to your clipboard by this can also be used in the mission config (`description.ext`), as long as they are in the class `ACE_Settings`.
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class ACE_Settings {
|
||||||
|
// Add exported settings here
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.1.1 Notes
|
||||||
|
|
||||||
|
- If a setting is forced it cannot be changed further down the line, see `2. Load order` for the hierarchy.
|
||||||
|
- Client settings can be forced, include while exporting (the button is next to export on the UI)
|
||||||
|
- You can use `ACE_common_forceAllSettings` to force settings in a mission, it will lock **all** the settings (which are not already forced) to the values they are set in either modules or server config
|
||||||
|
|
||||||
|
Example of `ACE_common_forceAllSettings`:
|
||||||
|
```c++
|
||||||
|
class ACE_Settings {
|
||||||
|
class ACE_common_forceAllSettings {
|
||||||
|
value = 1;
|
||||||
|
typeName = "BOOL";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 3.2 Loading up the server config
|
||||||
|
|
||||||
|
As stated before, the server config gets loaded through the optional `ace_server.pbo`. This PBO is only required (and should only be used) on the server - clients do not need to have this! It is for this reason we have not signed this PBO.
|
||||||
|
|
||||||
|
Load the `ace_server.pbo` like any other addon on your server. It is advised to create an `@aceServer` mod folder with an `addons` sub folder where you would paste the `ace_server.pbo` and load that through `-serverMod=@aceServer`.
|
@ -1,95 +0,0 @@
|
|||||||
---
|
|
||||||
layout: wiki
|
|
||||||
title: Settings Framework
|
|
||||||
description: ACE3 contains an extensive settings framework that allows you to tweak the modification without having to mess around with deleting pbos.
|
|
||||||
group: framework
|
|
||||||
order: 5
|
|
||||||
parent: wiki
|
|
||||||
---
|
|
||||||
|
|
||||||
ACE3 contains an extensive settings framework that allows you to tweak the modification without having to mess around with deleting pbos. These settings are all handled server side and broadcasted to the clients connecting to that server. This ensures that everyone playing on the server will have a uniform experience.
|
|
||||||
|
|
||||||
Part of this settings framework are global settings and client settings. Both use the same underlaying framework, with the difference that client settings can be adjusted by clients, where global settings can not.
|
|
||||||
|
|
||||||
|
|
||||||
## 1. How do they work
|
|
||||||
|
|
||||||
Settings are entries in the config that get translated to `missionnamespace` global variables. An example settings entry looks like this:
|
|
||||||
|
|
||||||
```c++
|
|
||||||
class ACE_module_sampleSetting {
|
|
||||||
// Value
|
|
||||||
value = 1;
|
|
||||||
|
|
||||||
// Type (SCALAR, BOOL, STRING, ARRAY, COLOR)
|
|
||||||
typeName = "SCALAR";
|
|
||||||
|
|
||||||
// Force the setting?
|
|
||||||
force = 0;
|
|
||||||
|
|
||||||
// Does it appear on the options menu?
|
|
||||||
isClientSettable = 1;
|
|
||||||
|
|
||||||
// The following settings only apply when isClientSettable == 1
|
|
||||||
// Stringtable entry with the setting name
|
|
||||||
displayName = "$STR_ACE_Common_SettingName";
|
|
||||||
|
|
||||||
// Stringtable entry with the setting description
|
|
||||||
description = "$STR_ACE_Common_SettingDescription";
|
|
||||||
|
|
||||||
// Stringtable entries that describe the options
|
|
||||||
// Only applies if typeName == "SCALAR"; and is optional
|
|
||||||
values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"};
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
Settings are defined from the mods config but can be adjusted through the following methods:
|
|
||||||
|
|
||||||
* Optional config entries
|
|
||||||
* Mission side modules
|
|
||||||
|
|
||||||
## 2. Load order
|
|
||||||
|
|
||||||
The load order for the settings are:
|
|
||||||
|
|
||||||
* 1. Mod config
|
|
||||||
* 2. Server config
|
|
||||||
* 3. Mission config
|
|
||||||
* 4. Placed down mission modules
|
|
||||||
|
|
||||||
What this means is that at any the 3 points after the mod config it is possible to insert your adjusted settings and force those (optionally). This is a powerful tool for server admins, whom can ensure that everyone is using uniform settings across the board on their server. And it provides mission makers the ability to easily set settings for their mission, without creating a large dependency on ACE3; you do not have to place down mission modules.
|
|
||||||
|
|
||||||
## 3. How do I use them?
|
|
||||||
|
|
||||||
In the 'how do they work' chapter an example of settings was shown. This is the same for any settings config. The only difference is the location. For ACE3 modules, the settings are placed in the class `ACE_settings`. The same goes for the mission config.
|
|
||||||
|
|
||||||
The server config setting entries are done through our optional ACE_server.pbo, which can be found in the optionals folder of @ace. It also contains a `userconfig` folder, which inside contains the file `ace\serverconfig.hpp`. This is the location ACE3 settings are placed. There is no need for a sub class.
|
|
||||||
|
|
||||||
### 3.1 Getting all the settings!
|
|
||||||
|
|
||||||
ACE3 contains a lot of settings; for that reason tweaking everything to your liking manually can be quite a task. We have provided the option to export all settings in the editor (single-player). For this, follow these simple steps:
|
|
||||||
|
|
||||||
* Open the editor (single-player).
|
|
||||||
* Under modules (<kbd>F7</kbd>), find ACE, `Config Export [ACE]`.
|
|
||||||
* Place down the module, ensure that the allow parameter is set to yes.
|
|
||||||
* Press preview, once in game, press <kbd>Esc</kbd> and open the ACE3 Options dialog (top left)
|
|
||||||
* This is the dialog where you can modify client side settings. On the bottom left of it, you will now see a button called `Config Export`. Press it and a new dialog opens.
|
|
||||||
* You are now in the dialog that allows you to adjust all settings from ACE3. Tweak this to your liking.
|
|
||||||
* Once you are done tweaking, press the `Export` button and all settings will be copied to your clipboard.
|
|
||||||
* Paste the settings in your `serverconfig.hpp` file and you're done.
|
|
||||||
|
|
||||||
Note that the format copied to your clipboard by this can also be used in the mission config (`description.ext`), as long as they are in the class `ACE_Settings`.
|
|
||||||
|
|
||||||
```c++
|
|
||||||
class ACE_Settings {
|
|
||||||
// add exported settings here
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### 3.2 Loading up the server config
|
|
||||||
|
|
||||||
As stated before, the server config gets loaded through the optional `ACE_server.pbo`. This PBO is only required (and should only be used) on the server - clients do not need to have this! It is for this reason we have not signed this PBO.
|
|
||||||
|
|
||||||
Load the `ACE_server.pbo` like any other addon on your server. It is advised to create an `@aceServer` mod folder with an `addons` sub folder where you would paste the `ACE_server.pbo` and load that through `-serverMod=@aceServer`.
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: wiki
|
layout: wiki
|
||||||
title: How to report an issue
|
title: How to report an issue
|
||||||
description: If you've found an issue with ACE3 please read this entry before reporting it.
|
description: If you have found an issue with ACE3 please read this entry before reporting it.
|
||||||
group: user
|
group: user
|
||||||
order: 10
|
order: 10
|
||||||
parent: wiki
|
parent: wiki
|
||||||
@ -9,13 +9,13 @@ parent: wiki
|
|||||||
|
|
||||||
### Before reporting
|
### Before reporting
|
||||||
|
|
||||||
If you've found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only `@cba_a3` and `@ACE3` on a newly created mission.
|
If you have found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only `@CBA_A3` and `@ace` on a newly created mission.
|
||||||
|
|
||||||
Indicate if the issue appears on stable or development version. In case it is the development version, please also include the commit SHA-1 hash.
|
Indicate if the issue appears on stable or development version. In case it is the development version, please also include the commit SHA-1 hash.
|
||||||
|
|
||||||
<div class="panel callout">
|
<div class="panel callout">
|
||||||
<h5>Please note:</h5>
|
<h5>Please note:</h5>
|
||||||
<p>It's not a valid to simply remove <code>@ACE3</code> from the mod list to confirm that ACE3 is the culprit.</p>
|
<p>It's not a valid to simply remove <code>@ace</code> from the mod list to confirm that ACE3 is the culprit.</p>
|
||||||
<p>If the error happens when using a <b>third-party mod</b> contact the author of the appropriate mod and report the issue there.</p>
|
<p>If the error happens when using a <b>third-party mod</b> contact the author of the appropriate mod and report the issue there.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -28,23 +28,23 @@ ACE3 Version: 3.x.x
|
|||||||
(indicate if stable or dev, if dev indicate the commit the version is based on)
|
(indicate if stable or dev, if dev indicate the commit the version is based on)
|
||||||
|
|
||||||
**Mods:**
|
**Mods:**
|
||||||
* @cba_a3
|
* `@CBA_A3`
|
||||||
* @ace3
|
* `@ace`
|
||||||
|
|
||||||
**Placed ACE3 Modules:**
|
**Placed ACE3 Modules:**
|
||||||
* *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.*
|
* *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.*
|
||||||
|
|
||||||
**Description:**
|
**Description:**
|
||||||
*Add a detailed description of the error. This makes it easier for us to fix the issue.*
|
* Add a detailed description of the error. This makes it easier for us to fix the issue.*
|
||||||
|
|
||||||
**Steps to reproduce:**
|
**Steps to reproduce:**
|
||||||
* *Add the steps needed to reproduce the issue.*
|
* *Add the steps needed to reproduce the issue.*
|
||||||
|
|
||||||
**Where did the issue occur?**
|
**Where did the issue occur?**
|
||||||
*A possible answer might be "Multiplayer", "Singleplayer"*
|
* A possible answer might be "Multiplayer", "Editor" or "Singleplayer"*
|
||||||
|
|
||||||
**RPT log file:**
|
**RPT log file:**
|
||||||
*Add a link (pastebin.com) to the client or server RPT file.*
|
* Add a link (pastebin.com) to the client or server RPT file.*
|
||||||
```
|
```
|
||||||
|
|
||||||
A video of the issue might be helpful in resolving it faster.
|
A video of the issue might be helpful in resolving it faster.
|
||||||
|
@ -20,7 +20,7 @@ Downloaded ACE3 and have no idea where to start? This page serves as a starting
|
|||||||
|
|
||||||
|
|
||||||
## 1. FAQ
|
## 1. FAQ
|
||||||
### 1.1 Features
|
### 1.1 Features
|
||||||
**Q:** Where is X feature? </br>
|
**Q:** Where is X feature? </br>
|
||||||
**A:** When it's done.</br>
|
**A:** When it's done.</br>
|
||||||
|
|
||||||
@ -38,16 +38,17 @@ Downloaded ACE3 and have no idea where to start? This page serves as a starting
|
|||||||
**Q:** Laser locking is broken, when are you going to fix it?</br>
|
**Q:** Laser locking is broken, when are you going to fix it?</br>
|
||||||
**A:** Fun fact, it isn't, you need to come from the direction of the laser, (laser is pointing to the east, you come from the west) and you drop the GBU, it will then guide itself to the target. The reasoning behind that is that the vehicle or building laser designated would obstruct the laser and the GBU would then be unable to lock on it. </br>
|
**A:** Fun fact, it isn't, you need to come from the direction of the laser, (laser is pointing to the east, you come from the west) and you drop the GBU, it will then guide itself to the target. The reasoning behind that is that the vehicle or building laser designated would obstruct the laser and the GBU would then be unable to lock on it. </br>
|
||||||
|
|
||||||
**Q:** I take vanilla damage with ACE 3.1.1</br>
|
**Q:** I am having dll errors.</br>
|
||||||
**A:** This has been fixed on ACE3 master and will be fixed in the next release, in the meantime Basic medical doesn't have that issue. </br>
|
**A:** Start the game once with the Arma 3 Launcher, close it, then start the game with your usual launcher (ArmA3Sync, Play withSix, etc …).</br>
|
||||||
|
The simple explanation is that the BattlEye process wasn't ended properly and is unable to start again properly, launching it with the Arma 3 Launcher is the only known solution to fix it.</br>
|
||||||
|
|
||||||
**Q:** I'm having dll errors.</br>
|
**Q:** ACE3 fonts is outdated.</br>
|
||||||
**A:** Remove ACE3 from your Arma 3 folder and repeat the installation process (don't forget to re-download).</br>
|
**A:** This happens because you have file patching enabled, restart your game without the `-FilePatching` param.
|
||||||
|
|
||||||
### 1.3 Compatibility
|
### 1.3 Compatibility
|
||||||
|
|
||||||
**Q:**(mod) doesn't have some ACE3 features.</br>
|
**Q:** (mod) doesn't have some ACE3 features.</br>
|
||||||
**A:**ACE3 isn't and can't be responsible for compatibility with every (mod), due it's size other (mod) authors are strongly encouraged to provide that from their side. Compatibility PBOs currently in ACE3 are there to kick-start and provide examples for (mod) authors.</br>
|
**A:** ACE3 isn't and can't be responsible for compatibility with every (mod), due it's size other (mod) authors are strongly encouraged to provide that from their side. Compatibility PBO's currently in ACE3 are there to kick-start and provide examples for (mod) authors.</br>
|
||||||
|
|
||||||
**Q:** ACE3 causes issues in (mod).</br>
|
**Q:** ACE3 causes issues in (mod).</br>
|
||||||
**A:**If you've found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only @cba_a3 and @ACE3 on a newly created mission. ACE3 isn't and can't be responsible for all mod conflicts, due it's size other mod authors are strongly encouraged to provide that from their side.</br>
|
**A:** If you've found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only `@CBA_A3` and `@ace` on a newly created mission. ACE3 isn't and can't be responsible for all mod conflicts, due it's size other mod authors are strongly encouraged to provide that from their side.</br>
|
||||||
|
Loading…
Reference in New Issue
Block a user