mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into zeusModuleUiExample
This commit is contained in:
commit
3e16142ff6
10
.github/CONTRIBUTING.md
vendored
10
.github/CONTRIBUTING.md
vendored
@ -6,11 +6,9 @@ If you have found an issue with ACE3 please make sure that ACE3 really is the ca
|
||||
|
||||
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">
|
||||
<h5>Please note:</h5>
|
||||
<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>
|
||||
</div>
|
||||
**Please note:**
|
||||
- It's not a valid to simply remove <code>@ace</code> from the mod list to confirm that ACE3 is the culprit.
|
||||
- If the error happens when using a <b>third-party mod</b> contact the author of the appropriate mod and report the issue there.
|
||||
|
||||
## Reporting the issue
|
||||
|
||||
@ -26,6 +24,6 @@ ACE2, AGM and CSE had a lot of features implemented or planned. All of them are
|
||||
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
|
||||
|
||||
## Requesting a feature
|
||||
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
|
||||
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/3594). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
|
||||
|
||||
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
|
||||
|
28
.github/ISSUE_TEMPLATE.md
vendored
28
.github/ISSUE_TEMPLATE.md
vendored
@ -1,25 +1,23 @@
|
||||
**Arma 3 Version:** `x.xx`
|
||||
*(indicate if stable, rc or dev*)
|
||||
|
||||
**ACE3 Version:** `3.x.x`
|
||||
*(indicate if stable or dev, if dev indicate the commit the version is based on)*
|
||||
**Arma 3 Version:** `x.xx` (stable / rc / dev)
|
||||
**CBA Version:** `2.x.x` (stable / dev + commit hash)
|
||||
**ACE3 Version:** `3.x.x` (stable / dev + commit hash)
|
||||
|
||||
**Mods:**
|
||||
* `@CBA_A3`
|
||||
* `@ace`
|
||||
* ...
|
||||
|
||||
**Placed Modules:**
|
||||
* *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.*
|
||||
- `@CBA_A3`
|
||||
- `@ace`
|
||||
|
||||
**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:**
|
||||
* *Add the steps needed to reproduce the issue.*
|
||||
- Add the steps needed to reproduce the issue.
|
||||
|
||||
**Where did the issue occur?**
|
||||
* *A possible answer might be "Dedicated Server", "Local Multiplayer", "Editor", or "Singleplayer"*
|
||||
- Dedicated / Self-Hosted Multiplayer / Singleplayer / Editor (Singleplayer) / Editor (Multiplayer) / Virtual Arsenal
|
||||
|
||||
**Placed Modules:**
|
||||
- Add the list of modules you have placed on the map. Use 'None' if the error occurs without any modules.
|
||||
|
||||
**RPT log file:**
|
||||
* *Add a link (pastebin.com) to the client and/or server RPT file. An instruction to find your RPT files can be [found here](https://community.bistudio.com/wiki/Crash_Files#Arma_3)*
|
||||
- Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3).
|
||||
- If possible at the time the bug is encountered, go to ACE Options and select "Debug To Clipboard", this will print extensive debug information to the RPT file.
|
||||
|
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,10 +1,4 @@
|
||||
### When merged this pull request will:
|
||||
|
||||
1. *Describe what this pull request will do*
|
||||
2. *Each change in a seperate line*
|
||||
|
||||
---
|
||||
*Delete this line and everything below*
|
||||
|
||||
- [Make sure to respect the file structure](http://ace3mod.com/wiki/development/modularity-and-pbo-structure.html)
|
||||
- [Make sure to respect the coding guidelines](http://ace3mod.com/wiki/development/coding-guidelines.html)
|
||||
**When merged this pull request will:**
|
||||
- Describe what this pull request will do
|
||||
- Each change in a separate line
|
||||
- Respect the [Development Guidelines](http://ace3mod.com/wiki/development/)
|
||||
|
@ -12,6 +12,7 @@ before_script:
|
||||
fi
|
||||
script:
|
||||
- python3 tools/sqf_validator.py
|
||||
- python3 tools/config_style_checker.py
|
||||
- if [ -n "${GH_TOKEN}" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
|
||||
python3 tools/deploy.py;
|
||||
fi
|
||||
|
@ -65,6 +65,7 @@ F3 Project <alanr@ferstaberinde.com>
|
||||
Falke75
|
||||
Ferenczi
|
||||
Ferenzi
|
||||
FFAAMOD <modffaa@gmail.com>
|
||||
Filip Basara <filip.basara93@googlemail.com>
|
||||
fr89k <kaschitoku@web.de>
|
||||
FreeZbe <freeseb@gmail.com>
|
||||
@ -74,6 +75,7 @@ Gianmarco Varriale (TeamNuke) <admin@forhost.org>
|
||||
GieNkoV <gienkov.grzegorz@gmail.com>
|
||||
GitHawk <githawk@gmx.net>
|
||||
gpgpgpgp
|
||||
Grey-Soldierman <gungamer101@hotmail.com>
|
||||
Grzegorz
|
||||
Hamburger SV
|
||||
Harakhti <shadowdragonphd@gmail.com>
|
||||
@ -110,6 +112,7 @@ Sniperwolf572 <tenga6@gmail.com>
|
||||
System98
|
||||
SzwedzikPL <szwedzikpl@gmail.com>
|
||||
Tachi <zaveruha007@gmail.com>
|
||||
Tessa Elieff <Fastroping Sound - CreativeCommons Attributions 3.0>
|
||||
Toaster <jonathan.pereira@gmail.com>
|
||||
Tonic
|
||||
Tourorist <tourorist@gmail.com>
|
||||
@ -118,4 +121,3 @@ voiper
|
||||
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
|
||||
Winter <simon@agius-muscat.net>
|
||||
zGuba
|
||||
Grey-Soldierman <gungamer101@hotmail.com>
|
||||
|
2
LICENSE
2
LICENSE
@ -26,6 +26,8 @@ Some folders of this project may contain a separate LICENSE file. Should
|
||||
that be the case, everything in that folder and all subfolders is subject
|
||||
to that license instead.
|
||||
|
||||
- ARMA PUBLIC LICENSE (\addons\apl)
|
||||
- CreativeCommons Attributions 3.0 (\addons\fastroping\data\sounds)
|
||||
|
||||
============================================================================
|
||||
Full GNU General Public License Text
|
||||
|
10
README.md
10
README.md
@ -3,15 +3,15 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="https://img.shields.io/badge/Version-3.4.2-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/releases/download/v3.4.2/ace3_3.4.2.zip">
|
||||
<img src="https://img.shields.io/badge/Download-72.6_MB-green.svg?style=flat-square" alt="ACE3 Download">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.5.1-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="https://img.shields.io/github/downloads/acemod/ACE3/total.svg?style=flat-square&label=Downloads" alt="ACE3 Downloads">
|
||||
</a>
|
||||
<a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670">
|
||||
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat-square" alt="BIF Thread">
|
||||
</a>
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
ace_fcs.dll
BIN
ace_fcs.dll
Binary file not shown.
BIN
ace_medical.dll
BIN
ace_medical.dll
Binary file not shown.
Binary file not shown.
@ -1,29 +1,34 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(enabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(enabled_DisplayName);
|
||||
description = CSTRING(enabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(simulateForSnipers) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulateForSnipers_DisplayName);
|
||||
description = CSTRING(simulateForSnipers_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(simulateForGroupMembers) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulateForGroupMembers_DisplayName);
|
||||
description = CSTRING(simulateForGroupMembers_Description);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(simulateForEveryone) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulateForEveryone_DisplayName);
|
||||
description = CSTRING(simulateForEveryone_Description);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(disabledInFullAutoMode) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(disabledInFullAutoMod_DisplayName);
|
||||
description = CSTRING(disabledInFullAutoMod_Description);
|
||||
typeName = "BOOL";
|
||||
@ -31,6 +36,7 @@ class ACE_Settings {
|
||||
};
|
||||
/* // TODO: We currently do not have firedEHs on vehicles
|
||||
class GVAR(vehicleGunnerEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = "Enabled For Vehicle Gunners";
|
||||
description = "Enables advanced ballistics for vehicle gunners";
|
||||
typeName = "BOOL";
|
||||
@ -38,30 +44,35 @@ class ACE_Settings {
|
||||
};
|
||||
*/
|
||||
class GVAR(ammoTemperatureEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
|
||||
description = CSTRING(ammoTemperatureEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(barrelLengthInfluenceEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
|
||||
description = CSTRING(barrelLengthInfluenceEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(bulletTraceEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(bulletTraceEnabled_DisplayName);
|
||||
description = CSTRING(bulletTraceEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(simulationInterval) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulationInterval_DisplayName);
|
||||
description = CSTRING(simulationInterval_Description);
|
||||
typeName = "SCALAR";
|
||||
value = 0.0;
|
||||
};
|
||||
class GVAR(simulationRadius) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulationRadius_DisplayName);
|
||||
description = CSTRING(simulationRadius_Description);
|
||||
typeName = "SCALAR";
|
||||
|
@ -21,7 +21,6 @@ if (!GVAR(extensionAvailable)) exitWith {
|
||||
};
|
||||
};
|
||||
*/
|
||||
[] call FUNC(initializeTerrainExtension);
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
@ -29,10 +28,28 @@ if (!hasInterface) exitWith {};
|
||||
//If not enabled, dont't add PFEH
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
//Run the terrain processor
|
||||
[] call FUNC(initializeTerrainExtension);
|
||||
|
||||
// Register fire event handler
|
||||
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
|
||||
["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
|
||||
|
||||
//Add warnings for missing compat PBOs (only if AB is on)
|
||||
{
|
||||
_x params ["_modPBO", "_compatPBO"];
|
||||
if ((isClass (configFile >> "CfgPatches" >> _modPBO)) && {!isClass (configFile >> "CfgPatches" >> _compatPBO)}) then {
|
||||
ACE_LOGWARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO);
|
||||
};
|
||||
} forEach [
|
||||
["RH_acc","ace_compat_rh_acc"],
|
||||
["RH_de_cfg","ace_compat_rh_de"],
|
||||
["RH_m4_cfg","ace_compat_rh_m4"],
|
||||
["RH_PDW","ace_compat_rh_pdw"],
|
||||
["RKSL_PMII","ace_compat_rksl_pm_ii"],
|
||||
["iansky_opt","ace_compat_sma3_iansky"],
|
||||
["R3F_Armes","ace_compat_r3f"]
|
||||
];
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
|
@ -47,7 +47,7 @@ GVAR(Protractor) = true;
|
||||
__ctrl1 ctrlSetTextColor [1, 1, 1, 1];
|
||||
|
||||
__ctrl2 ctrlSetScale 1;
|
||||
__ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY + 0.001 - 0.0012 * (-58 max (asin((ACE_player weaponDirection currentWeapon ACE_player) select 2)) min 58), 0.2, 0.2 * 4/3];
|
||||
__ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY - 0.001 - 0.1074 * (-0.86 max ((ACE_player weaponDirection currentWeapon ACE_player) select 2) min 0.86), 0.2, 0.2 * 4/3];
|
||||
__ctrl2 ctrlCommit 0;
|
||||
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));
|
||||
__ctrl2 ctrlSetTextColor [1, 1, 1, 1];
|
||||
|
@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then {
|
||||
|
||||
_bulletTraceVisible = false;
|
||||
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then {
|
||||
if (currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]) then {
|
||||
if (currentWeapon ACE_player == binocular ACE_player) then {
|
||||
_bulletTraceVisible = true;
|
||||
} else {
|
||||
if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then {
|
||||
|
@ -24,7 +24,7 @@ _mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
|
||||
if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
systemChat "AdvancedBallistics: Terrain already initialized";
|
||||
#endIf
|
||||
#endif
|
||||
};
|
||||
|
||||
_mapGrids = ceil(_mapSize / 50) + 1;
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Advanced_Ballistics">
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey">
|
||||
@ -92,7 +92,7 @@
|
||||
<German>Für Gruppenmitglieder aktiviert</German>
|
||||
<Czech>Povoleno pro členy skupiny</Czech>
|
||||
<Portuguese>Ativada para membros do grupo</Portuguese>
|
||||
<French>Activer pour les membres groupés</French>
|
||||
<French>Activer pour les membres du groupe</French>
|
||||
<Hungarian>Csoporttagoknak engedélyezve</Hungarian>
|
||||
<Russian>Включена для группы</Russian>
|
||||
<Italian>Abilita per Membri del Gruppo</Italian>
|
||||
@ -104,7 +104,7 @@
|
||||
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
|
||||
<Czech>Aktivuje pokročilou balistiku pro nelokální členy skupiny</Czech>
|
||||
<Portuguese>Ativa balística avançada para membros de grupo não locais</Portuguese>
|
||||
<French>Active la balistique avancée pour les membres groupés non locaux</French>
|
||||
<French>Active la balistique avancée pour les membres du groupe non locaux</French>
|
||||
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak</Hungarian>
|
||||
<Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian>
|
||||
<Italian>Abilita Balistica Avanzata per Membri non locali del Gruppo</Italian>
|
||||
@ -128,7 +128,7 @@
|
||||
<German>Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)</German>
|
||||
<Czech>Aktivuje pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles FPS během velké přestřelky v multiplayeru)</Czech>
|
||||
<Portuguese>Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer)</Portuguese>
|
||||
<French>Active la balistique avancé pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs)</French>
|
||||
<French>Active la balistique avancée pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs)</French>
|
||||
<Hungarian>Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt)</Hungarian>
|
||||
<Russian>Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере)</Russian>
|
||||
<Italian>Abilita Balistica Avanzata per tutti i giocatori non locali (abilitare questo parametro potrebbe degradare le prestazioni durante scontri intensi in multiplayer)</Italian>
|
||||
@ -140,7 +140,7 @@
|
||||
<German>Für Gruppenmitglieder immer aktiviert</German>
|
||||
<Czech>Vždy povoleno pro členy skupiny</Czech>
|
||||
<Portuguese>Sempre ativada para membros do grupo</Portuguese>
|
||||
<French>Toujours activer pour les membres groupés</French>
|
||||
<French>Toujours activer pour les membres du groupe</French>
|
||||
<Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian>
|
||||
<Russian>Всегда включена для членов группы</Russian>
|
||||
<Italian>Sempre abilitato per Membri del Gruppo</Italian>
|
||||
@ -272,7 +272,7 @@
|
||||
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
|
||||
<Czech>Určuje interval mezi každým výpočtem</Czech>
|
||||
<Portuguese>Define o intervalo entre cada cálculo</Portuguese>
|
||||
<French>Défini un intervalle de calcul entre deux simulations</French>
|
||||
<French>Définit un intervalle de calcul entre deux simulations</French>
|
||||
<Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian>
|
||||
<Russian>Определяет временной интервал между вычислениями</Russian>
|
||||
<Italian>Definisce l'intervallo tra ogni step di calcolo</Italian>
|
||||
@ -296,7 +296,7 @@
|
||||
<German>Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird</German>
|
||||
<Czech>Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil</Czech>
|
||||
<Portuguese>Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis</Portuguese>
|
||||
<French>Défini le rayon autour du joueur (en mètres) d'application de la balistique avancée</French>
|
||||
<French>Définit le rayon autour du joueur (en mètres) d'application de la balistique avancée</French>
|
||||
<Hungarian>Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak</Hungarian>
|
||||
<Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
|
||||
<Italian>Definisce il raggio attorno al giocatore (in metri) per cui la Balistica Avanzata è applicata ai proiettili</Italian>
|
||||
@ -307,7 +307,7 @@
|
||||
<Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish>
|
||||
<Czech>Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice.</Czech>
|
||||
<Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa.</Portuguese>
|
||||
<French>Ce module active la simulation de balistique avancée - ie les projectiles sont influencé par des varibles comme le vent, la température, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme avec laquelles ils sont tirés</French>
|
||||
<French>Ce module active la simulation de balistique avancée - ie les projectiles sont influencés par des varibles comme le vent, la température, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme avec laquelle ils sont tirés.</French>
|
||||
<Hungarian>Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket.</Hungarian>
|
||||
<Russian>Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел.</Russian>
|
||||
<Spanish>Este módulo permite la simulación balística avanzada - es decir, la trayectoria de los proyectiles está influenciada por variables como la temperatura del aire, la presión atmosférica, la humedad, la gravedad, el tipo de municiones y el arma desde el que fue disparada.</Spanish>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Aircraft">
|
||||
<Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name">
|
||||
@ -7,7 +7,7 @@
|
||||
<Spanish>Ráfaga</Spanish>
|
||||
<Polish>Seria</Polish>
|
||||
<Czech>Dávka</Czech>
|
||||
<French>Contre mesure</French>
|
||||
<French>Contre mesures</French>
|
||||
<Russian>Очередь</Russian>
|
||||
<Hungarian>Sorozat</Hungarian>
|
||||
<Portuguese>Rajada</Portuguese>
|
||||
@ -29,7 +29,7 @@
|
||||
<English>Open Cargo Door</English>
|
||||
<German>Laderampe öffnen</German>
|
||||
<Spanish>Abrir compuerta de carga</Spanish>
|
||||
<French>Ourvir la rampe</French>
|
||||
<French>Ouvrir la rampe</French>
|
||||
<Polish>Otwórz drzwi ładowni</Polish>
|
||||
<Czech>Otevřít nákladní prostor</Czech>
|
||||
<Hungarian>Rakodórámpa nyitása</Hungarian>
|
||||
|
@ -42,31 +42,14 @@
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"];
|
||||
_scopeBaseAngle = _this select 0;
|
||||
_bulletMass = _this select 1;
|
||||
_boreHeight = _this select 2;
|
||||
_airFriction = _this select 3;
|
||||
_muzzleVelocity = _this select 4;
|
||||
_temperature = _this select 5;
|
||||
_barometricPressure = _this select 6;
|
||||
_relativeHumidity = _this select 7;
|
||||
_simSteps = _this select 8;
|
||||
_windSpeed1 = (_this select 9) select 0;
|
||||
_windSpeed2 = (_this select 9) select 1;
|
||||
_windDirection = _this select 10;
|
||||
_inclinationAngle = _this select 11;
|
||||
_targetSpeed = _this select 12;
|
||||
_targetRange = _this select 13;
|
||||
_bc = _this select 14;
|
||||
_dragModel = _this select 15;
|
||||
_atmosphereModel = _this select 16;
|
||||
_storeRangeCardData = _this select 17;
|
||||
_stabilityFactor = _this select 18;
|
||||
_twistDirection = _this select 19;
|
||||
_latitude = _this select 20;
|
||||
_directionOfFire = _this select 21;
|
||||
params [
|
||||
"_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity",
|
||||
"_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed",
|
||||
"_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel",
|
||||
"_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude",
|
||||
"_directionOfFire"
|
||||
];
|
||||
_windSpeed params ["_windSpeed1", "_windSpeed2"];
|
||||
|
||||
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
|
||||
_bulletPos = [0, 0, 0];
|
||||
@ -142,7 +125,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
_drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
||||
private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
||||
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
|
||||
} else {
|
||||
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation))
|
||||
|
@ -17,10 +17,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_gunID", "_restoreMemory", "_updateDisplay"];
|
||||
_gunID = _this select 0;
|
||||
_restoreMemory = _this select 1;
|
||||
_updateDisplay = _this select 2;
|
||||
params ["_gunID", "_restoreMemory", "_updateDisplay"];
|
||||
|
||||
if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {};
|
||||
|
||||
|
@ -21,6 +21,5 @@ GVAR(showGunList) = _this;
|
||||
|
||||
if (_this) then {
|
||||
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 6002);
|
||||
|
||||
lbSetCurSel [6000, GVAR(currentGun)];
|
||||
};
|
||||
|
@ -21,7 +21,6 @@ GVAR(showTargetRangeAssist) = _this;
|
||||
|
||||
if (_this) then {
|
||||
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 7018);
|
||||
|
||||
ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
|
||||
ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
|
||||
|
||||
|
@ -17,10 +17,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_slopeDistance", "_azimuth", "_inclination"];
|
||||
_slopeDistance = _this select 0;
|
||||
_azimuth = _this select 1;
|
||||
_inclination = _this select 2;
|
||||
params ["_slopeDistance", "_azimuth", "_inclination"];
|
||||
|
||||
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
|
||||
GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)];
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="ATragMX">
|
||||
<Key ID="STR_ACE_ATragMX_Name">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Attach">
|
||||
<Key ID="STR_ACE_Attach_AttachDetach">
|
||||
@ -90,7 +90,7 @@
|
||||
<German>Leuchtstab befestigt</German>
|
||||
<Spanish>Barra de luz acoplada</Spanish>
|
||||
<Polish>Przyczepiono światło chemiczne</Polish>
|
||||
<French>Chemlight attachée</French>
|
||||
<French>Cyalume attachée</French>
|
||||
<Czech>Chemické světlo připnuto</Czech>
|
||||
<Portuguese>Chemlight Fixada</Portuguese>
|
||||
<Italian>Chemlight attaccata</Italian>
|
||||
@ -102,7 +102,7 @@
|
||||
<German>Leuchtstab entfernt</German>
|
||||
<Spanish>Barra de luz quitada</Spanish>
|
||||
<Polish>Odczepiono światło chemiczne</Polish>
|
||||
<French>Chemlight détachée</French>
|
||||
<French>Cyalume détachée</French>
|
||||
<Czech>Chemické světlo odepnuto</Czech>
|
||||
<Portuguese>Chemlight Separada</Portuguese>
|
||||
<Italian>Chemlight staccata</Italian>
|
||||
@ -138,7 +138,7 @@
|
||||
<German>Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist.</German>
|
||||
<Polish>Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne.</Polish>
|
||||
<Spanish>El Marcador IR permite señalizar su posisición a través de una baliza visible solo a través de dispositivos de visión nocturna. </Spanish>
|
||||
<French>La balise IR permet de signaler votre position grace à un clignotement visible par des JVN.</French>
|
||||
<French>La balise IR permet de signaler votre position grâce à un clignotement visible par des JVN.</French>
|
||||
<Czech>IR Značkovač je Infračerveně zářící stroboskop umožňující signalizaci vaší pozice díky blikajícímu světlu, které je vidět pouze při užití noktovizoru.</Czech>
|
||||
<Portuguese>O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna.</Portuguese>
|
||||
<Italian>La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni.</Italian>
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params [["_backpack", objNull, [objNull]]];
|
||||
params [["_backpack", objNull, [objNull, ""]]];
|
||||
|
||||
if (_backpack isEqualType objNull) then {
|
||||
_backpack = typeOf _backpack;
|
||||
|
@ -285,6 +285,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -305,6 +307,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -320,6 +324,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -335,6 +341,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -356,6 +364,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -371,6 +381,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -386,6 +398,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Ballistics">
|
||||
<!-- MX -->
|
||||
|
@ -1,5 +1,11 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
["SettingsInitialized", {
|
||||
// Hold on a little bit longer to ensure anims will work
|
||||
[{
|
||||
GVAR(captivityEnabled) = true;
|
||||
}, [], 0.05] call EFUNC(common,waitAndExecute);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
//Handles when someone starts escorting and then disconnects, leaving the captive attached
|
||||
//This is normaly handled by the PFEH in doEscortCaptive, but that won't be running if they DC
|
||||
@ -33,10 +39,3 @@ if (!hasInterface) exitWith {};
|
||||
["isNotEscorting", {!(GETVAR(_this select 0,GVAR(isEscorting),false))}] call EFUNC(common,addCanInteractWithCondition);
|
||||
["isNotHandcuffed", {!(GETVAR(_this select 0,GVAR(isHandcuffed),false))}] call EFUNC(common,addCanInteractWithCondition);
|
||||
["isNotSurrendering", {!(GETVAR(_this select 0,GVAR(isSurrendering),false))}] call EFUNC(common,addCanInteractWithCondition);
|
||||
|
||||
["SettingsInitialized", {
|
||||
// Hold on a little bit longer to ensure anims will work
|
||||
[{
|
||||
GVAR(captivityEnabled) = true;
|
||||
}, [], 0.05] call EFUNC(common,waitAndExecute);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
@ -5,7 +5,7 @@
|
||||
<English>Take Prisoner</English>
|
||||
<German>Gefangen nehmen</German>
|
||||
<Spanish>Tomar prisionero</Spanish>
|
||||
<French>Capturer le prisonnier</French>
|
||||
<French>Prendre prisonnier</French>
|
||||
<Polish>Aresztuj</Polish>
|
||||
<Czech>Zajmout osobu</Czech>
|
||||
<Italian>Arresta il prigioniero</Italian>
|
||||
@ -54,7 +54,7 @@
|
||||
<German>Du musst ihn zuerst gefangen nehmen.</German>
|
||||
<Spanish>Necesitas hacerle prisionero primero!</Spanish>
|
||||
<Polish>Najpierw musisz go aresztować!</Polish>
|
||||
<French>Vous devez d'abord le capturer!</French>
|
||||
<French>Vous devez d'abord le capturer !</French>
|
||||
<Czech>Musíš ho nejdříve zajmout!</Czech>
|
||||
<Italian>Prima devi arrestarlo!</Italian>
|
||||
<Portuguese>Você deve tomá-lo como prisioneiro primeiro!</Portuguese>
|
||||
@ -112,7 +112,7 @@
|
||||
<Key ID="STR_ACE_Captives_FriskMenuHeader">
|
||||
<English>Inventory of frisked person</English>
|
||||
<German>Inventar der durchsuchten Person</German>
|
||||
<French>Inventaire de la fouille</French>
|
||||
<French>Inventaire de la personne fouillé</French>
|
||||
<Spanish>Inventario de la persona cacheada</Spanish>
|
||||
<Hungarian>Motozott személy felszerelése</Hungarian>
|
||||
<Czech>Inventář prohledávané osoby</Czech>
|
||||
@ -124,7 +124,7 @@
|
||||
<Key ID="STR_ACE_Captives_FriskPerson">
|
||||
<English>Frisk person</English>
|
||||
<German>Person durchsuchen</German>
|
||||
<French>Fouiller</French>
|
||||
<French>Fouiller la personne</French>
|
||||
<Spanish>Cachear</Spanish>
|
||||
<Czech>Prohledávaná osoba</Czech>
|
||||
<Polish>Rewiduj osobę</Polish>
|
||||
@ -147,7 +147,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_StopSurrendering">
|
||||
<English>Stop Surrendering</English>
|
||||
<French>Annuler la capitulation</French>
|
||||
<French>Annuler la reddition</French>
|
||||
<German>Den Kampf erneut aufnehmen</German>
|
||||
<Spanish>Dejar de rendirse</Spanish>
|
||||
<Portuguese>Parar de se render</Portuguese>
|
||||
@ -190,6 +190,7 @@
|
||||
<Czech>Spoutat jednotku</Czech>
|
||||
<Italian>Metti manette all'unità</Italian>
|
||||
<Spanish>Hacer que la unidad esté esposada</Spanish>
|
||||
<French>Rend une unité captive</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleHandcuffed_Description">
|
||||
<English>Sync a unit to make them handcuffed.</English>
|
||||
@ -200,6 +201,7 @@
|
||||
<Czech>Synchronizovat s jednotkou, která má být v poutech.</Czech>
|
||||
<Italian>Sincronizza un'unità per metterle le manette.</Italian>
|
||||
<Spanish>Sincroniza una unidad para hacer que esté esposada.</Spanish>
|
||||
<French>Synchronisez une unité pour la rendre captive.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
|
||||
<English>Captives Settings</English>
|
||||
@ -208,7 +210,7 @@
|
||||
<Czech>Nastavení zajatce</Czech>
|
||||
<German>Gefangenen-Einstellungen</German>
|
||||
<Portuguese>Ajustes de prisioneiros</Portuguese>
|
||||
<French>Options de capitulation</French>
|
||||
<French>Options de reddition</French>
|
||||
<Hungarian>Fogoly-beállítások</Hungarian>
|
||||
<Russian>Настройки пленения</Russian>
|
||||
<Italian>Impostazioni Prigionieri</Italian>
|
||||
@ -220,7 +222,7 @@
|
||||
<Czech>Toto kontroluje nastavení kapitulace a pout</Czech>
|
||||
<German>Einstellungen zur Kapitulation und Kabelbindern</German>
|
||||
<Portuguese>Controla as configurações de rendição e abraçadeiras</Portuguese>
|
||||
<French>Contrôle les paramètres de la rédition et des Serflex</French>
|
||||
<French>Contrôle les paramètres de la reddition et des Serflex</French>
|
||||
<Hungarian>Szabályozza a kapituláció és bilincselés beállításait</Hungarian>
|
||||
<Russian>Управляет настройками сдачи в плен и связывания</Russian>
|
||||
<Italian>Controlla le impostazioni per la resa e le manette</Italian>
|
||||
@ -232,7 +234,7 @@
|
||||
<Czech>Může spoutat spolubojovníky</Czech>
|
||||
<German>Kann Kameraden fesseln</German>
|
||||
<Portuguese>Pode algemar o próprio lado</Portuguese>
|
||||
<French>Peut libérer sa propre faction</French>
|
||||
<French>Peut capturer sa propre faction</French>
|
||||
<Hungarian>Saját oldal megbilincselhető</Hungarian>
|
||||
<Russian>Связать союзника</Russian>
|
||||
<Italian>Puoi ammanettare unità alleate</Italian>
|
||||
@ -256,7 +258,7 @@
|
||||
<Czech>Povolit vzdávání</Czech>
|
||||
<German>Kapitulation erlauben</German>
|
||||
<Portuguese>Permite rendição</Portuguese>
|
||||
<French>Permettre la capitulation</French>
|
||||
<French>Permettre la reddition</French>
|
||||
<Hungarian>Kapituláció engedélyezése</Hungarian>
|
||||
<Russian>Сдаться в плен</Russian>
|
||||
<Italian>Permetti Resa</Italian>
|
||||
@ -282,6 +284,7 @@
|
||||
<Spanish>Requiere rendición</Spanish>
|
||||
<Czech>Vzdávání vyžadováno</Czech>
|
||||
<Italian>Richiedi Resa</Italian>
|
||||
<French>Requiert la reddition</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description">
|
||||
<English>Require Players to surrender before they can be arrested</English>
|
||||
@ -292,6 +295,7 @@
|
||||
<Spanish>Requiere que los Jugadores se rindan antes de arrestarlos</Spanish>
|
||||
<Czech>Vyžaduje, aby se hráč nejdříve vzdal, poté může být spoután</Czech>
|
||||
<Italian>I giocatori devono arrendersi prima che possano essere arrestati</Italian>
|
||||
<French>Requiert la capitulation des joueurs avant qu'ils ne puissent être arrêtés</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_SurrenderOnly">
|
||||
<English>Surrendering only</English>
|
||||
@ -302,6 +306,7 @@
|
||||
<Spanish>Solo rendición</Spanish>
|
||||
<Czech>Pouze vzdávání</Czech>
|
||||
<Italian>Solo Resa</Italian>
|
||||
<French>Reddition seulement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_SurrenderOrNoWeapon">
|
||||
<English>Surrendering or No weapon</English>
|
||||
@ -312,6 +317,7 @@
|
||||
<Spanish>Rendición o desarme</Spanish>
|
||||
<Czech>Vzdávání nebo beze zbraně</Czech>
|
||||
<Italian>Resa o senza armi</Italian>
|
||||
<French>Capitulation ou desarmé</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -27,27 +27,7 @@ class Extended_Killed_EventHandlers {
|
||||
|
||||
//Need initPost or we have problems with setVariable with 'ACE_Cargo'
|
||||
class Extended_InitPost_EventHandlers {
|
||||
class StaticWeapon {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class ReammoBox_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class Cargo_base_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class CargoNet_01_box_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Land_CargoBox_V1_F {
|
||||
class ThingX {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
@ -57,27 +37,17 @@ class Extended_InitPost_EventHandlers {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class RoadCone_F {
|
||||
class PlasticCase_01_base_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Car {
|
||||
class LandVehicle {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Tank {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Helicopter {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Plane {
|
||||
class Air {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
@ -87,16 +57,6 @@ class Extended_InitPost_EventHandlers {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class ACE_RepairItem_Base {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class ACE_bodyBagObject {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class ACE_ConcertinaWireCoil {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
|
@ -1,3 +1,6 @@
|
||||
|
||||
class CBA_Extended_EventHandlers;
|
||||
|
||||
class CfgVehicles {
|
||||
class Logic;
|
||||
class Module_F: Logic {
|
||||
@ -191,12 +194,69 @@ class CfgVehicles {
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class Heli_Transport_02_base_F;
|
||||
class I_Heli_Transport_02_F : Heli_Transport_02_base_F {
|
||||
class Helicopter_Base_H;
|
||||
class Heli_Light_01_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
};
|
||||
|
||||
class Heli_Light_02_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 4;
|
||||
};
|
||||
|
||||
class Helicopter_Base_F;
|
||||
class Heli_light_03_base_F: Helicopter_Base_F {
|
||||
GVAR(space) = 4;
|
||||
};
|
||||
|
||||
class Heli_Transport_01_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 8;
|
||||
};
|
||||
|
||||
class Heli_Transport_02_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 20;
|
||||
};
|
||||
|
||||
class Heli_Transport_03_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 40;
|
||||
};
|
||||
|
||||
class Heli_Transport_04_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
};
|
||||
|
||||
class O_Heli_Transport_04_box_F: Heli_Transport_04_base_F {
|
||||
GVAR(space) = 20;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class O_Heli_Transport_04_repair_F: Heli_Transport_04_base_F {
|
||||
GVAR(space) = 12;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class O_Heli_Transport_04_ammo_F: Heli_Transport_04_base_F {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class O_Heli_Transport_04_fuel_F: Heli_Transport_04_base_F {};
|
||||
|
||||
class O_Heli_Transport_04_medevac_F: Heli_Transport_04_base_F {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class Heli_Attack_01_base_F: Helicopter_Base_F {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
};
|
||||
|
||||
class Heli_Attack_02_base_F: Helicopter_Base_F {
|
||||
GVAR(space) = 4;
|
||||
};
|
||||
|
||||
// jets
|
||||
class Plane: Air {
|
||||
GVAR(space) = 0;
|
||||
@ -204,7 +264,6 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
// autonomus
|
||||
class Helicopter_Base_F;
|
||||
class UAV_01_base_F: Helicopter_Base_F {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
@ -245,6 +304,25 @@ class CfgVehicles {
|
||||
GVAR(canLoad) = 1;
|
||||
};
|
||||
|
||||
// Taru pods
|
||||
class Pod_Heli_Transport_04_base_F;
|
||||
class Land_Pod_Heli_Transport_04_ammo_F: Pod_Heli_Transport_04_base_F {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
class Land_Pod_Heli_Transport_04_box_F: Pod_Heli_Transport_04_base_F {
|
||||
GVAR(space) = 20;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
class Land_Pod_Heli_Transport_04_medevac_F: Pod_Heli_Transport_04_base_F {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
class Land_Pod_Heli_Transport_04_repair_F: Pod_Heli_Transport_04_base_F {
|
||||
GVAR(space) = 12;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class StaticMortar;
|
||||
class Mortar_01_base_F: StaticMortar {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
@ -253,6 +331,7 @@ class CfgVehicles {
|
||||
|
||||
// Ammo boxes
|
||||
class ThingX;
|
||||
class Items_base_F;
|
||||
class ReammoBox_F: ThingX {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
GVAR(canLoad) = 1;
|
||||
@ -275,6 +354,23 @@ class CfgVehicles {
|
||||
class Slingload_01_Base_F: Slingload_base_F { //Huron 20ft containers
|
||||
GVAR(canLoad) = 0;
|
||||
};
|
||||
|
||||
//Plastic and metal case
|
||||
class PlasticCase_01_base_F: Items_base_F {
|
||||
GVAR(size) = 1; // 1 = small, 2 = large
|
||||
GVAR(canLoad) = 1;
|
||||
};
|
||||
class Land_PlasticCase_01_large_F: PlasticCase_01_base_F {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
};
|
||||
class MetalCase_01_base_F: Items_base_F {
|
||||
GVAR(size) = 1; // 1 = small, 2 = large
|
||||
GVAR(canLoad) = 1;
|
||||
};
|
||||
class Land_MetalCase_01_large_F: MetalCase_01_base_F {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
};
|
||||
|
||||
// objects
|
||||
class RoadCone_F: ThingX {
|
||||
GVAR(size) = 1;
|
||||
@ -284,14 +380,16 @@ class CfgVehicles {
|
||||
GVAR(size) = 2;
|
||||
};
|
||||
|
||||
|
||||
class Scrapyard_base_F;
|
||||
class Land_PaperBox_closed_F: Scrapyard_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 10;
|
||||
GVAR(hasCargo) = 1;
|
||||
GVAR(size) = 11;
|
||||
GVAR(canLoad) = 1;
|
||||
XEH_ENABLED;
|
||||
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
@ -323,163 +421,253 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
class Cargo10_base_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 14;
|
||||
GVAR(size) = 15;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_blue_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_brick_red_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_cyan_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_grey_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_light_blue_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_light_green_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_military_green_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Ruins_F;
|
||||
class Land_Cargo20_military_ruins_F: Ruins_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Land_Cargo20_orange_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_red_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_sand_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_vr_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_white_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo20_yellow_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Land_Cargo40_blue_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_brick_red_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_cyan_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_grey_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_light_blue_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_light_green_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_military_green_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Land_Cargo40_military_ruins_F: Ruins_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Land_Cargo40_orange_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_red_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_sand_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_vr_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_white_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
class Land_Cargo40_yellow_F: Cargo_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
// small
|
||||
class Land_CargoBox_V1_F: ThingX {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 7;
|
||||
GVAR(hasCargo) = 1;
|
||||
GVAR(size) = 7;
|
||||
XEH_ENABLED;
|
||||
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
|
@ -20,6 +20,8 @@ TRACE_1("params", _vehicle);
|
||||
|
||||
private _type = typeOf _vehicle;
|
||||
|
||||
if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
|
||||
|
||||
if (isServer) then {
|
||||
{
|
||||
if (isClass _x) then {
|
||||
@ -38,7 +40,6 @@ if (_type in GVAR(initializedVehicleClasses)) exitWith {};
|
||||
GVAR(initializedVehicleClasses) pushBack _type;
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
|
||||
|
||||
TRACE_1("Adding unload cargo action to class", _type);
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
<Czech>Naložit</Czech>
|
||||
<Spanish>Cargar</Spanish>
|
||||
<Italian>Carica</Italian>
|
||||
<French>Charger</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_unloadObject">
|
||||
<English>Unload</English>
|
||||
@ -20,6 +21,7 @@
|
||||
<Czech>Vyložit</Czech>
|
||||
<Spanish>Descargar</Spanish>
|
||||
<Italian>Scarica</Italian>
|
||||
<French>Décharger</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_openMenu">
|
||||
<English>Cargo</English>
|
||||
@ -30,6 +32,7 @@
|
||||
<Czech>Náklad</Czech>
|
||||
<Spanish>Carga</Spanish>
|
||||
<Italian>Cargo</Italian>
|
||||
<French>Cargaison</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_cargoMenu">
|
||||
<English>Cargo Menu</English>
|
||||
@ -40,6 +43,7 @@
|
||||
<Czech>Menu nákladu</Czech>
|
||||
<Spanish>Menu de carga</Spanish>
|
||||
<Italian>Menù Cargo</Italian>
|
||||
<French>Menu de cargaison</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_labelSpace">
|
||||
<English>Cargo space left: %1</English>
|
||||
@ -50,6 +54,7 @@
|
||||
<Czech>Zbývající prostor: %1</Czech>
|
||||
<Spanish>Espacio de carga restante: %1</Spanish>
|
||||
<Italian>Spazio cargo rimanente: %1</Italian>
|
||||
<French>Espace de cargaison restant : %1</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_ModuleSettings_enable">
|
||||
<English>Enable Cargo</English>
|
||||
@ -60,6 +65,7 @@
|
||||
<Czech>Povolit náklad</Czech>
|
||||
<Spanish>Habilitar carga</Spanish>
|
||||
<Italian>Abilita Cargo</Italian>
|
||||
<French>Activer la cargaison</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description">
|
||||
<English>Enable the load in cargo module</English>
|
||||
@ -70,6 +76,7 @@
|
||||
<Spanish>Habilitar la carga en el módulo de carga</Spanish>
|
||||
<Czech>Umožňuje naložit předměty do nákladového prostoru vozidla</Czech>
|
||||
<Italian>Abilita il modulo di caricamento in cargo</Italian>
|
||||
<French>Activer le chargement dans le module de cargaison.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_SettingsModule_DisplayName">
|
||||
<English>Cargo Settings</English>
|
||||
@ -80,6 +87,7 @@
|
||||
<Czech>Nastavení nákladu</Czech>
|
||||
<Spanish>Ajustes de carga</Spanish>
|
||||
<Italian>Impostazioni Cargo</Italian>
|
||||
<French>Réglages de cargaison</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_SettingsModule_Description">
|
||||
<English>Configure the cargo module settings</English>
|
||||
@ -90,6 +98,7 @@
|
||||
<Spanish>Configure los ajustes del módulo de carga</Spanish>
|
||||
<Czech>Konfigurace nákladního modulu</Czech>
|
||||
<Italian>Configura le impostazioni del modulo cargo</Italian>
|
||||
<French>Configurer les réglages du module de cargaison</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_LoadedItem">
|
||||
<English>%1<br/>loaded into<br/>%2</English>
|
||||
@ -124,6 +133,7 @@
|
||||
<Russian>Погрузка</Russian>
|
||||
<Italian>Caricando</Italian>
|
||||
<Spanish>Cargando</Spanish>
|
||||
<French>Chargement de la cargaison</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_UnloadingItem">
|
||||
<English>Unloading Cargo</English>
|
||||
@ -134,6 +144,7 @@
|
||||
<Russian>Выгрузка</Russian>
|
||||
<Italian>Scaricando</Italian>
|
||||
<Spanish>Descargando</Spanish>
|
||||
<French>Déchargement de la cargaison</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_LoadingFailed">
|
||||
<English>%1<br/>could not be loaded</English>
|
||||
@ -144,6 +155,7 @@
|
||||
<Russian>%1<br/>не может быть погружен</Russian>
|
||||
<Italian>%1<br/>non può essere caricato</Italian>
|
||||
<Spanish>%1<br/>no pudo ser cargado</Spanish>
|
||||
<French>%1<br /> n'a pas pu être chargé</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_UnloadingFailed">
|
||||
<English>%1<br/>could not be unloaded</English>
|
||||
@ -154,6 +166,7 @@
|
||||
<Russian>%1<br/>не может быть выгружен</Russian>
|
||||
<Italian>%1<br/>non può essere scaricato</Italian>
|
||||
<Spanish>%1<br/>no pudo ser descargado</Spanish>
|
||||
<French>%1<br /> n'a pas pu être déchargé</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_makeLoadable_displayName">
|
||||
<English>Make Object Loadable</English>
|
||||
@ -161,6 +174,8 @@
|
||||
<Polish>Ustaw jako ładowalny</Polish>
|
||||
<Italian>Rendi oggetto caricabile</Italian>
|
||||
<Spanish>Hacer objeto cargable</Spanish>
|
||||
<French>Rendre l'objet chargeable</French>
|
||||
<Czech>Vytvořit objekt nakladatelným</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_makeLoadable_description">
|
||||
<English>Sets the synced object as loadable by the cargo system.</English>
|
||||
@ -168,6 +183,8 @@
|
||||
<Polish>Ustawia zsynchronizowany obiekt jako możliwy do załadowania poprzez system cargo</Polish>
|
||||
<Italian>Imposta l'oggetto sincronizzato come caricabile dal sistema cargo</Italian>
|
||||
<Spanish>Sincronizar un objecto para hacerlo cargable.</Spanish>
|
||||
<French>Rend l'objet synchronisé comme chargeable par le système de cargaison.</French>
|
||||
<Czech>Nastaví synchronizované objekty nakladatelnými za pomocí Nákladního systému.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_makeLoadable_setSize_displayName">
|
||||
<English>Object's Size</English>
|
||||
@ -175,6 +192,8 @@
|
||||
<Polish>Rozmiar obiektu</Polish>
|
||||
<Italian>Dimensioni dell'oggetto</Italian>
|
||||
<Spanish>Tamaño del objeto</Spanish>
|
||||
<French>Taille de l'objet</French>
|
||||
<Czech>Velikost objektu</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -49,7 +49,7 @@ class ACE_Settings {
|
||||
description = CSTRING(SettingFeedbackIconsDesc);
|
||||
values[] = {ECSTRING(optionsmenu,Hide), ECSTRING(optionsmenu,TopRightDown), ECSTRING(optionsmenu,TopRightLeft), ECSTRING(optionsmenu,TopLeftDown), ECSTRING(optionsmenu,TopLeftRight)};
|
||||
};
|
||||
class GVAR(SettingProgressBarLocation) {
|
||||
class GVAR(settingProgressBarLocation) {
|
||||
value = 0;
|
||||
typeName = "SCALAR";
|
||||
force = 0;
|
||||
|
@ -21,7 +21,7 @@ class Extended_PostInit_EventHandlers {
|
||||
|
||||
class Extended_DisplayLoad_EventHandlers {
|
||||
class RscDisplayMission {
|
||||
ADDON = QUOTE(_this call COMPILE_FILE(XEH_mainDislayLoad));
|
||||
ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad));
|
||||
};
|
||||
};
|
||||
|
||||
@ -33,7 +33,7 @@ class Extended_InitPost_EventHandlers {
|
||||
};
|
||||
class CAManBase {
|
||||
class GVAR(setName) {
|
||||
init = QUOTE(if (local (_this select 0)) then {_this call FUNC(setName)};);
|
||||
init = QUOTE(if (local (_this select 0)) then {[ARR_2(FUNC(setName),_this)] call FUNC(execNextFrame)};);
|
||||
};
|
||||
class GVAR(muteUnit) {
|
||||
init = QUOTE(_this call FUNC(muteUnitHandleInitPost));
|
||||
@ -76,3 +76,9 @@ class Extended_FiredBIS_EventHandlers {
|
||||
ADDON = QUOTE(_this call FUNC(firedEH));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_Engine_EventHandlers {
|
||||
class All {
|
||||
ADDON = QUOTE(_this call FUNC(handleEngine));
|
||||
};
|
||||
};
|
||||
|
@ -87,6 +87,7 @@ PREP(getWindDirection);
|
||||
PREP(getZoom);
|
||||
PREP(goKneeling);
|
||||
PREP(hadamardProduct);
|
||||
PREP(handleEngine);
|
||||
PREP(handleModifierKey);
|
||||
PREP(handleModifierKeyUp);
|
||||
PREP(handleScrollWheel);
|
||||
|
@ -1,6 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
GVAR(ScrollWheelFrame) = diag_frameno;
|
||||
|
||||
call COMPILE_FILE(init_handleScrollWheel);
|
||||
call COMPILE_FILE(init_handleModifierKey);
|
@ -64,6 +64,7 @@
|
||||
["blockSprint", false, []] call FUNC(statusEffect_addType);
|
||||
["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] call FUNC(statusEffect_addType);
|
||||
["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType);
|
||||
["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType);
|
||||
|
||||
["forceWalk", {
|
||||
params ["_object", "_set"];
|
||||
@ -90,6 +91,11 @@
|
||||
_object allowDamage (_set == 0);
|
||||
};
|
||||
}] call FUNC(addEventHandler);
|
||||
["blockEngine", {
|
||||
params ["_vehicle", "_set"];
|
||||
_vehicle setVariable [QGVAR(blockEngine), _set > 0, true];
|
||||
_vehicle engineOn false;
|
||||
}] call FUNC(addEventHandler);
|
||||
|
||||
//Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit
|
||||
//This variable is used for isPlayer checks
|
||||
@ -133,6 +139,7 @@ if (isServer) then {
|
||||
["fixFloating", FUNC(fixFloating)] call FUNC(addEventhandler);
|
||||
["fixPosition", FUNC(fixPosition)] call FUNC(addEventhandler);
|
||||
|
||||
["loadPersonEvent", FUNC(loadPersonLocal)] call FUNC(addEventhandler);
|
||||
["unloadPersonEvent", FUNC(unloadPersonLocal)] call FUNC(addEventhandler);
|
||||
|
||||
["lockVehicle", {
|
||||
@ -146,12 +153,15 @@ if (isServer) then {
|
||||
|
||||
["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler);
|
||||
["setFuel", {(_this select 0) setFuel (_this select 1)}] call FUNC(addEventhandler);
|
||||
["engineOn", {(_this select 0) engineOn (_this select 1)}] call FUNC(addEventhandler);
|
||||
["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler);
|
||||
["selectLeader", {(_this select 0) selectLeader (_this select 1)}] call FUNC(addEventHandler);
|
||||
["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call FUNC(addEventHandler);
|
||||
["playMove", {(_this select 0) playMove (_this select 1)}] call FUNC(addEventHandler);
|
||||
["playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call FUNC(addEventHandler);
|
||||
["switchMove", {(_this select 0) switchMove (_this select 1)}] call FUNC(addEventHandler);
|
||||
["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call FUNC(addEventHandler);
|
||||
["setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler);
|
||||
|
||||
if (isServer) then {
|
||||
["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler);
|
||||
@ -323,19 +333,13 @@ enableCamShake true;
|
||||
GVAR(OldPlayerVehicle) = vehicle objNull;
|
||||
GVAR(OldPlayerTurret) = [objNull] call FUNC(getTurretIndex);
|
||||
GVAR(OldPlayerWeapon) = currentWeapon objNull;
|
||||
GVAR(OldPlayerInventory) = [objNull] call FUNC(getAllGear);
|
||||
GVAR(OldPlayerInventory) = [];
|
||||
GVAR(OldPlayerVisionMode) = currentVisionMode objNull;
|
||||
GVAR(OldCameraView) = "";
|
||||
GVAR(OldVisibleMap) = false;
|
||||
GVAR(OldInventoryDisplayIsOpen) = nil; //@todo check this
|
||||
GVAR(OldIsCamera) = false;
|
||||
|
||||
// clean up playerChanged eventhandler from preinit and put it in the same PFH as the other events to reduce overhead and guarantee advantageous execution order
|
||||
if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
||||
[GVAR(PreInit_playerChanged_PFHID)] call CBA_fnc_removePerFrameHandler;
|
||||
GVAR(PreInit_playerChanged_PFHID) = nil;
|
||||
};
|
||||
|
||||
// PFH to raise varios events
|
||||
[{
|
||||
BEGIN_COUNTER(stateChecker);
|
||||
@ -377,11 +381,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
||||
};
|
||||
|
||||
// "playerInventoryChanged" event
|
||||
_data = [ACE_player] call FUNC(getAllGear);
|
||||
_data = getUnitLoadout ACE_player;
|
||||
if !(_data isEqualTo GVAR(OldPlayerInventory)) then {
|
||||
// Raise ACE event locally
|
||||
GVAR(OldPlayerInventory) = _data;
|
||||
["playerInventoryChanged", [ACE_player, _data]] call FUNC(localEvent);
|
||||
["playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear) ]] call FUNC(localEvent);
|
||||
};
|
||||
|
||||
// "playerVisionModeChanged" event
|
||||
@ -442,6 +446,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
||||
// Add various canInteractWith conditions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
["isNotDead", {
|
||||
params ["_unit", "_target"];
|
||||
alive _unit
|
||||
}] call FUNC(addCanInteractWithCondition);
|
||||
|
||||
["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition);
|
||||
|
||||
["isNotInside", {
|
||||
|
@ -47,29 +47,12 @@ GVAR(statusEffect_Names) = [];
|
||||
GVAR(statusEffect_isGlobal) = [];
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Set up PlayerChanged eventhandler for pre init
|
||||
// Set up PlayerChanged eventhandler for pre init (EH is installed in postInit)
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
ACE_player = objNull;
|
||||
uiNamespace setVariable ["ACE_player", objNull];
|
||||
|
||||
// @todo check if this can be removed
|
||||
if (hasInterface) then {
|
||||
// PFH to update the ACE_player variable
|
||||
GVAR(PreInit_playerChanged_PFHID) = [{
|
||||
if !(ACE_player isEqualTo (call FUNC(player))) then {
|
||||
private _oldPlayer = ACE_player;
|
||||
|
||||
ACE_player = call FUNC(player);
|
||||
uiNamespace setVariable ["ACE_player", ACE_player];
|
||||
|
||||
// Raise ACE event
|
||||
["playerChanged", [ACE_player, _oldPlayer]] call FUNC(localEvent);
|
||||
};
|
||||
}, 0, []] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Time handling
|
||||
//////////////////////////////////////////////////
|
||||
|
@ -23,7 +23,7 @@ if (isServer) then {
|
||||
params ["_eventName", "_client"];
|
||||
|
||||
if (!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith {
|
||||
ACE_LOGERROR("Request for synced event - key not found.");
|
||||
ACE_LOGERROR_1("Request for synced event - key [%1] not found.", _eventName);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
params ["_name", "_args", "_ttl"];
|
||||
|
||||
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
ACE_LOGERROR("Synced event key not found.");
|
||||
ACE_LOGERROR_1("Synced event key [%1] not found (_handleSyncedEvent).", _name);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -45,7 +45,7 @@ if (_actionID == -1) then {
|
||||
private _addAction = call compile format [
|
||||
"[
|
||||
'',
|
||||
{if (inputAction '%1' == 0) exitWith {}; {if (_this call (_x select 0)) then {_this call (_x select 1)}} forEach (((_this select 0) getVariable '%2') select 1 select 2)},
|
||||
{[{if (inputAction '%1' == 0) exitWith {}; {if (_this call (_x select 0)) then {_this call (_x select 1)}} forEach (((_this select 0) getVariable '%2') select 1 select 2)}, _this] call CBA_fnc_directCall},
|
||||
nil,
|
||||
-1,
|
||||
false,
|
||||
|
@ -52,7 +52,7 @@ _actionIDs pushBack _id;
|
||||
private _addAction = call compile format [
|
||||
"[
|
||||
'%2',
|
||||
{if (inputAction '%1' == 0) then {if (_this call (%3 select 2)) then {_this call (%3 select 3)}} else {_this call (%3 select 1)}},
|
||||
{[{if (inputAction '%1' == 0) then {if (_this call (%3 select 2)) then {_this call (%3 select 3)}} else {_this call (%3 select 1)}}, _this] call CBA_fnc_directCall},
|
||||
nil,
|
||||
%4,
|
||||
false,
|
||||
|
@ -15,6 +15,8 @@
|
||||
|
||||
params ["_statement"];
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_addScrollWheelEventHandler", "3.8.0", "'MouseZChanged' Display EventHandler");
|
||||
|
||||
if (_statement isEqualType "") then {
|
||||
_statement = compile _statement;
|
||||
};
|
||||
|
@ -10,6 +10,9 @@
|
||||
* Return Value:
|
||||
* Boolean of success <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* ["myEvent", {_this call x}, 0] call ace_common_fnc_addSyncedEventHandler
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
@ -17,7 +20,7 @@
|
||||
params ["_name", "_handler", ["_ttl", 0]];
|
||||
|
||||
if (HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
ACE_LOGERROR("Duplicate synced event creation.");
|
||||
ACE_LOGERROR_1("Duplicate synced event [%1] creation.",_name);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -29,39 +29,17 @@ GVAR(AssignedItemsShownItems) = [
|
||||
];
|
||||
|
||||
["playerInventoryChanged", {
|
||||
params ["_unit", "_assignedItems"];
|
||||
params ["_unit"];
|
||||
|
||||
_assignedItems = _assignedItems select 17;
|
||||
private _assignedItems = getUnitLoadout _unit param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"]
|
||||
|
||||
GVAR(AssignedItemsShownItems) = [true, true, true, true, true];
|
||||
|
||||
{
|
||||
if !(_x in GVAR(AssignedItems)) then {
|
||||
GVAR(AssignedItems) pushBack _x;
|
||||
GVAR(AssignedItemsInfo) pushBack toLower getText (configFile >> "CfgWeapons" >> _x >> "ACE_hideItemType");
|
||||
};
|
||||
|
||||
switch (GVAR(AssignedItemsInfo) select (GVAR(AssignedItems) find _x)) do {
|
||||
case ("map"): {
|
||||
GVAR(AssignedItemsShownItems) set [0, false];
|
||||
};
|
||||
case ("compass"): {
|
||||
GVAR(AssignedItemsShownItems) set [1, false];
|
||||
};
|
||||
case ("watch"): {
|
||||
GVAR(AssignedItemsShownItems) set [2, false];
|
||||
};
|
||||
case ("radio"): {
|
||||
GVAR(AssignedItemsShownItems) set [3, false];
|
||||
};
|
||||
case ("gps"): {
|
||||
GVAR(AssignedItemsShownItems) set [4, false];
|
||||
};
|
||||
};
|
||||
false
|
||||
} count _assignedItems;
|
||||
|
||||
//systemChat str GVAR(AssignedItemsShownItems);
|
||||
GVAR(AssignedItemsShownItems) = [
|
||||
!((_assignedItems select 0) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 0 >> "ACE_hideItemType") != "map"},
|
||||
!((_assignedItems select 3) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 3 >> "ACE_hideItemType") != "compass"},
|
||||
!((_assignedItems select 4) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 4 >> "ACE_hideItemType") != "watch"},
|
||||
!((_assignedItems select 2) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 2 >> "ACE_hideItemType") != "radio"},
|
||||
!((_assignedItems select 1) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 1 >> "ACE_hideItemType") != "gps"}
|
||||
];
|
||||
|
||||
GVAR(AssignedItemsShownItems) params ["_showMap", "_showCompass", "_showWatch", "_showRadio", "_showGPS"];
|
||||
|
||||
|
@ -19,6 +19,18 @@ private _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "version
|
||||
|
||||
ACE_LOGINFO_1("ACE is version %1.",_version);
|
||||
|
||||
//CBA Versioning check - close main display if using incompatible version
|
||||
private _cbaVersionAr = getArray (configFile >> "CfgPatches" >> "cba_main" >> "versionAr");
|
||||
private _cbaRequiredAr = (getArray (configFile >> "CfgSettings" >> "CBA" >> "Versioning" >> "ACE" >> "dependencies" >> "CBA")) select 1;
|
||||
ACE_LOGINFO_2("CBA is version %1 [min required %2]",_cbaVersionAr,_cbaRequiredAr);
|
||||
if ([_cbaRequiredAr, _cbaVersionAr] call cba_versioning_fnc_version_compare) then {
|
||||
private _errorMsg = format ["CBA Version [%1] is outdated [required %2]", _cbaVersionAr, _cbaRequiredAr];
|
||||
ACE_LOGERROR(_errorMsg);
|
||||
if (hasInterface) then {
|
||||
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
|
||||
};
|
||||
};
|
||||
|
||||
//private _addons = activatedAddons; // broken with High-Command module, see #2134
|
||||
private _addons = "true" configClasses (configFile >> "CfgPatches");//
|
||||
_addons = _addons apply {toLower configName _x};//
|
||||
|
@ -12,12 +12,11 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_function"];
|
||||
params ["_code"];
|
||||
if (_code isEqualType "") exitWith {_code};
|
||||
|
||||
if (_function isEqualType "") exitWith {_function};
|
||||
_code = str(_code);
|
||||
_code = _code select [1, count _code - 2];
|
||||
|
||||
_function = toArray str _function;
|
||||
_function deleteAt 0;
|
||||
_function deleteAt (count _function - 1);
|
||||
_code
|
||||
|
||||
toString _function // return
|
||||
|
@ -92,6 +92,15 @@ while {_rangeToCheck < _maxDistance} do {
|
||||
private _point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.1];
|
||||
private _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, (_radiusOfItem + 0.5)];
|
||||
private _testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL];
|
||||
if (((count _testIntersections) == 1) && {isNull ((_testIntersections select 0) select 2)}) then {
|
||||
private _hitGroundASL = (_testIntersections select 0) select 0;
|
||||
private _hitHeightOffset = ((AGLtoASL _roundAGL) select 2) - (_hitGroundASL select 2);
|
||||
private _hit2dOffset = _roundAGL distance2D _hitGroundASL;
|
||||
private _slope = _hitHeightOffset atan2 _hit2dOffset;
|
||||
if (_slope < 25) then { //Ignore ground hit if slope is reasonable
|
||||
_testIntersections = [];
|
||||
};
|
||||
};
|
||||
if (!(_testIntersections isEqualTo [])) exitWith {
|
||||
TRACE_2("collision low/high",_roundAGL,_testIntersections);
|
||||
_roundPointIsValid = false;
|
||||
|
@ -16,6 +16,16 @@
|
||||
// setVectorUp requires local object
|
||||
if (!local _this) exitWith {};
|
||||
|
||||
if ((getText (configFile >> "CfgVehicles" >> (typeOf _this) >> "simulation")) == "house") then {
|
||||
//Houses don't have gravity/physics, so make sure they are not floating
|
||||
private _posAbove = (getPos _this) select 2;
|
||||
TRACE_2("house",_this,_posAbove);
|
||||
if (_posAbove > 0.1) then {
|
||||
private _newPosASL = (getPosASL _this) vectorDiff [0,0,_posAbove];
|
||||
_this setPosASL _newPosASL;
|
||||
};
|
||||
};
|
||||
|
||||
private _position = getPos _this;
|
||||
|
||||
// don't place the object below the ground
|
||||
|
@ -33,7 +33,11 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit"];
|
||||
params ["_unit", ["_showDeprecated", true]];
|
||||
|
||||
if (_showDeprecated) then {
|
||||
ACE_DEPRECATED("ace_common_fnc_getAllGear","3.7.0","getUnitLoadout");
|
||||
};
|
||||
|
||||
if (isNull _unit) exitWith {[
|
||||
"",
|
||||
|
@ -22,27 +22,81 @@ private _long = getNumber (configFile >> "CfgWorlds" >> _map >> "longitude");
|
||||
private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude");
|
||||
private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset");
|
||||
|
||||
if (_map in ["Chernarus", "Bootcamp_ACR", "Woodland_ACR", "utes"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["Altis", "Stratis"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["Takistan", "Zargabad", "Mountains_ACR"]) then { _lat = 35; _altitude = 2000; };
|
||||
if (_map in ["Shapur_BAF", "ProvingGrounds_PMC"]) then { _lat = 35; _altitude = 100; };
|
||||
_map = toLower _map;
|
||||
if (_map in ["abbottabad"]) then { _lat = 34; _altitude = 1256; }; //Abbottabad elevation 1256m (Wikipedia)
|
||||
if (_map in ["abramia"]) then { _lat = 60; _altitude = 0; };
|
||||
if (_map in ["af_kandahar_province"]) then { _lat = 42; _altitude = 0; };
|
||||
if (_map in ["altis"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["angel"]) then { _lat = 38; _altitude = 0; };
|
||||
if (_map in ["anim_helvantis_v2"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["australia"]) then { _lat = -25; _altitude = 0; };
|
||||
if (_map in ["bootcamp_acr"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["bornholm"]) then { _lat = 55; _altitude = 0; };
|
||||
if (_map in ["bozcaada"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["caribou"]) then { _lat = 68; _altitude = 0; };
|
||||
if (_map in ["catalina"]) then { _lat = 33; _altitude = 0; };
|
||||
if (_map in ["chernarus", "chernarus_summer", "chernarus_winter"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["chernobylzone", "chernobylzonea2"]) then { _lat = 51; _altitude = 0; };
|
||||
if (_map in ["clafghan"]) then { _lat = 34; _altitude = 640; };
|
||||
if (_map in ["dakrong"]) then { _lat = 17; _altitude = 0; }; //Unsung Mod
|
||||
if (_map in ["desert_e"]) then { _lat = 40; _altitude = 800; };
|
||||
if (_map in ["dya"]) then { _lat = 34; _altitude = 110; }; //Diyala Iraq - default elevationOffset
|
||||
if (_map in ["esseker"]) then { _lat = 43; _altitude = 2000; };
|
||||
if (_map in ["evergreen"]) then { _lat = 41; _altitude = 0; }; //Burgazada, Turkey - default elevationOffset
|
||||
if (_map in ["fallujah"]) then { _lat = 33; _altitude = 0; };
|
||||
if (_map in ["fata", "Abbottabad"]) then { _lat = 30; _altitude = 1000; };
|
||||
if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; };
|
||||
if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; };
|
||||
if (_map in ["Bornholm"]) then { _lat = 55; _altitude = 0; };
|
||||
if (_map in ["Imrali"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["Caribou"]) then { _lat = 68; _altitude = 0; };
|
||||
if (_map in ["Namalsk"]) then { _lat = 65; _altitude = 0; };
|
||||
if (_map in ["MCN_Aliabad"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["Clafghan"]) then { _lat = 34; _altitude = 640; };
|
||||
if (_map in ["Sangin", "hellskitchen"]) then { _lat = 32; _altitude = 0; };
|
||||
if (_map in ["Sara"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["fata"]) then { _lat = 33; _altitude = 1347; };
|
||||
if (_map in ["gorgona"]) then { _lat = 43; _altitude = 0; };
|
||||
if (_map in ["hellskitchen", "hellskitchens"]) then { _lat = 32; _altitude = 900; }; //Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia)
|
||||
if (_map in ["hindukush"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["imrali", "imralispring"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["intro"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["isladuala3"]) then { _lat = -19; _altitude = 0; };
|
||||
if (_map in ["jacobi"]) then { _lat = 34; _altitude = 2000; }; //default elevationOffset
|
||||
if (_map in ["kapaulio"]) then { _lat = 0; _altitude = 0; };
|
||||
if (_map in ["kerama"]) then { _lat = 26; _altitude = 0; }; //Kerama Islands, Japan - default elevationOffset
|
||||
if (_map in ["kholm"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["koplic"]) then { _lat = 42; _altitude = 0; };
|
||||
if (_map in ["kunduz"]) then { _lat = 37; _altitude = 0; };
|
||||
if (_map in ["lingor", "lingor3"]) then { _lat = -4; _altitude = 0; };
|
||||
if (_map in ["lost", "lostw"]) then { _lat = 60; _altitude = 0; };
|
||||
if (_map in ["mcn_aliabad"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["malvinas"]) then { _lat = -52; _altitude = 0; };
|
||||
if (_map in ["namalsk"]) then { _lat = 65; _altitude = 0; };
|
||||
if (_map in ["mef_alaska"]) then { _lat = 60; _altitude = 5; };
|
||||
if (_map in ["mountains_acr"]) then { _lat = 35; _altitude = 2000; };
|
||||
if (_map in ["napf", "napfwinter"]) then { _lat = 47; _altitude = 0; };
|
||||
if (_map in ["panthera3"]) then { _lat = 46; _altitude = 0; };
|
||||
if (_map in ["pianosa_aut"]) then { _lat = 43; _altitude = 0; }; //Pianosa, Italy - default elevationOffset
|
||||
if (_map in ["pja305"]) then { _lat = 0; _altitude = 0; }; //G.O.S N'Ziwasogo
|
||||
if (_map in ["pja306"]) then { _lat = 35; _altitude = 0; }; //G.O.S Kalu Khan
|
||||
if (_map in ["pja307"]) then { _lat = 17; _altitude = 0; }; //F.S.F Daryah
|
||||
if (_map in ["pja308"]) then { _lat = 36; _altitude = 0; }; //G.O.S Gunkizli
|
||||
if (_map in ["pja310"]) then { _lat = 36; _altitude = 0; }; //G.O.S Al Rayak
|
||||
if (_map in ["pja312"]) then { _lat = 16; _altitude = 0; }; //G.O.S Song Bin Tanh
|
||||
if (_map in ["porquerolles"]) then { _lat = 43; _altitude = 0; };
|
||||
if (_map in ["porto"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["provinggrounds_pmc"]) then { _lat = 35; _altitude = 100; };
|
||||
if (_map in ["reshmaan"]) then { _lat = 35; _altitude = 2000; };
|
||||
if (_map in ["Thirsk"]) then { _lat = 65; _altitude = 0; };
|
||||
if (_map in ["lingor"]) then { _lat = -4; _altitude = 0; };
|
||||
if (_map in ["Panthera3"]) then { _lat = 46; _altitude = 0; };
|
||||
if (_map in ["Kunduz"]) then { _lat = 37; _altitude = 400; };
|
||||
if (_map in ["sara", "sara_dbe1"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["saralite"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["sb3"]) then { _lat = 53; _altitude = 25; }; //TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset
|
||||
if (_map in ["shapur_baf"]) then { _lat = 35; _altitude = 100; };
|
||||
if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; };
|
||||
if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; };
|
||||
if (_map in ["stratis"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["sugarlake"]) then { _lat = 29; _altitude = 0; };
|
||||
if (_map in ["takistan"]) then { _lat = 35; _altitude = 2000; };
|
||||
if (_map in ["thirsk"]) then { _lat = 65; _altitude = 0; };
|
||||
if (_map in ["tilos"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["utes"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["vt5"]) then { _lat = 61; _altitude = 100; }; //Vt5, Suomi Finland - default elevationOffset
|
||||
if (_map in ["wake"]) then { _lat = 19; _altitude = 0; };
|
||||
if (_map in ["waziristan"]) then { _lat = 33; _altitude = 0; };
|
||||
if (_map in ["wintermap"]) then { _lat = 61; _altitude = 0; }; //Nordkvingo - default elevationOffset
|
||||
if (_map in ["wintertown", "wintertowna3"]) then { _lat = 39; _altitude = 600; }; //U.S. state Kansas mean elevation 610m (Wikipedia)
|
||||
if (_map in ["woodland_acr"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["xcam_prototype"]) then { _lat = 35; _altitude = 0; };
|
||||
if (_map in ["zargabad"]) then { _lat = 35; _altitude = 2000; };
|
||||
|
||||
private _UTM = [_long,_lat] call BIS_fnc_posDegToUTM;
|
||||
private _easting = _UTM select 0;
|
||||
|
@ -18,7 +18,7 @@ private _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles")
|
||||
|
||||
{
|
||||
if (_x == "this") then {
|
||||
_muzzles set [_forEachIndex, _weapon];
|
||||
_muzzles set [_forEachIndex, configName (configFile >> "CfgWeapons" >> _weapon)];
|
||||
};
|
||||
} forEach _muzzles;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* Arguments:
|
||||
* 0: unit <OBJECT>
|
||||
* 1: weapon <STRING>
|
||||
* 1: weapon (optional, default: units current weapon) <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* 0: Attachements <ARRAY>
|
||||
@ -16,21 +16,19 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit", "_weapon"];
|
||||
params [["_unit", objNull, [objNull]], ["_weapon", nil, [""]]];
|
||||
|
||||
if (isNil "_weapon") then {
|
||||
_weapon = currentWeapon _unit;
|
||||
};
|
||||
|
||||
private _attachments = [_unit weaponAccessories _weapon] param [0, ["","","",""]];
|
||||
|
||||
private _muzzles = _weapon call FUNC(getWeaponMuzzles);
|
||||
|
||||
private _weaponInfo = [["","","",""], primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit] select ((["", primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] find _weapon) max 0);
|
||||
|
||||
// get loaded magazines and ammo
|
||||
private _magazines = [];
|
||||
private _ammo = [];
|
||||
|
||||
{
|
||||
_magazines pushBack "";
|
||||
_ammo pushBack 0;
|
||||
false
|
||||
} count _muzzles;
|
||||
private _magazines = _muzzles apply {""};
|
||||
private _ammo = _muzzles apply {0};
|
||||
|
||||
{
|
||||
if (_x select 2) then {
|
||||
@ -44,6 +42,4 @@ private _ammo = [];
|
||||
false
|
||||
} count magazinesAmmoFull _unit;
|
||||
|
||||
_weaponInfo append [_muzzles, _magazines, _ammo];
|
||||
|
||||
_weaponInfo
|
||||
[_attachments, _muzzles, _magazines, _ammo];
|
||||
|
19
addons/common/functions/fnc_handleEngine.sqf
Normal file
19
addons/common/functions/fnc_handleEngine.sqf
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Blocks turning on the vehicles engine if set by the status effect handler.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
* 1: Engine state <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle", "_engineOn"];
|
||||
|
||||
if (local _vehicle && {_engineOn} && {_vehicle getVariable [QGVAR(blockEngine), false]}) then {
|
||||
_vehicle engineOn false;
|
||||
};
|
@ -12,11 +12,6 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
// prevents a bug that causes the MouseZChanged to trigger N-times, where N is the number of times you consecutively pressed "Restart" instead of "Preview" in the editor
|
||||
if (GVAR(ScrollWheelFrame) == diag_frameno) exitWith {};
|
||||
|
||||
GVAR(ScrollWheelFrame) = diag_frameno;
|
||||
|
||||
{
|
||||
[_this select 1] call _x;
|
||||
false
|
||||
|
@ -21,33 +21,18 @@ private _vehicle = objNull;
|
||||
|
||||
if (!([_caller, _unit, ["isNotDragging", "isNotCarrying"]] call FUNC(canInteractWith)) || {_caller == _unit}) exitWith {_vehicle};
|
||||
|
||||
private _loadcar = nearestObject [_unit, "Car"];
|
||||
private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F"], 10];
|
||||
|
||||
if (_unit distance _loadcar <= 10) then {
|
||||
_vehicle = _loadcar;
|
||||
} else {
|
||||
private _loadair = nearestObject [_unit, "Air"];
|
||||
|
||||
if (_unit distance _loadair <= 10) then {
|
||||
_vehicle = _loadair;
|
||||
} else {
|
||||
private _loadtank = nearestObject [_unit, "Tank"];
|
||||
|
||||
if (_unit distance _loadtank <= 10) then {
|
||||
_vehicle = _loadtank;
|
||||
} else {
|
||||
private _loadboat = nearestObject [_unit, "Ship_F"];
|
||||
|
||||
if (_unit distance _loadboat <= 10) then {
|
||||
_vehicle = _loadboat;
|
||||
{
|
||||
TRACE_1("",_x);
|
||||
if ((_x emptyPositions "cargo" > 0) || {_x emptyPositions "gunner" > 0}) exitWith {
|
||||
_vehicle = _x;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _nearVehicles;
|
||||
|
||||
if (!isNull _vehicle) then {
|
||||
[_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide);
|
||||
[[_unit, _vehicle, _caller], QFUNC(loadPersonLocal), _unit, false] call FUNC(execRemoteFnc);
|
||||
["loadPersonEvent", _unit, [_unit, _vehicle, _caller]] call FUNC(objectEvent);
|
||||
};
|
||||
|
||||
_vehicle
|
||||
|
@ -39,7 +39,7 @@ private _fnc_parseConfigForDisplayNames = {
|
||||
} else {
|
||||
private _value = missionNamespace getVariable [_name, -1];
|
||||
if ((_value < 0) || {_value >= (count _values)}) then {
|
||||
ACE_LOGWARNING_3("Setting [%1] out of bounds %2 (values[] count is %3)(", _name, _value, count _values);
|
||||
ACE_LOGWARNING_3("Setting [%1] out of bounds %2 (values[] count is %3)", _name, _value, count _values);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -34,7 +34,7 @@ createDialog QGVAR(ProgressBar_Dialog);
|
||||
|
||||
//Adjust position based on user setting:
|
||||
private _ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle));
|
||||
_ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
|
||||
_ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
|
||||
|
||||
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlSetPosition _ctrlPos;
|
||||
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlCommit 0;
|
||||
|
@ -24,5 +24,15 @@ if (isNil {_logic getVariable _moduleVariable}) exitWith {
|
||||
ACE_LOGWARNING_2("Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.",typeOf _logic,_moduleVariable);
|
||||
};
|
||||
|
||||
private _value = _logic getVariable _moduleVariable;
|
||||
if (_value isEqualTo -1) then {
|
||||
//3den missions will save modules with value = 0 as -1
|
||||
//If the setting has a "values" array, we should be able to assume that -1 is not a valid number as it would not be a valid index for the array
|
||||
if (isArray (configFile >> "ACE_Settings" >> _settingName >> "values")) then {
|
||||
ACE_LOGWARNING_2("Module For Setting [%1] is saved as (-1), switching to (0) - missionVersion [%2]",_settingName,missionVersion);
|
||||
_value = 0;
|
||||
};
|
||||
};
|
||||
|
||||
// Set the setting globally and force it
|
||||
[_settingName, _logic getVariable _moduleVariable, true, true] call FUNC(setSetting);
|
||||
[_settingName, _value, true, true] call FUNC(setSetting);
|
||||
|
@ -15,7 +15,7 @@
|
||||
params ["_name"];
|
||||
|
||||
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
ACE_LOGERROR("Synced event key not found.");
|
||||
ACE_LOGERROR_1("Synced event key [%1] not found (removeSyncedEventHandler).", _name);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_setAllGear","3.7.0","setUnitLoadout");
|
||||
|
||||
params ["_unit", "_allGear", ["_clearAttachments", false], ["_clearBackpack", false]];
|
||||
|
||||
if (!local _unit) exitWith {
|
||||
|
@ -54,5 +54,5 @@ private _lowestVolume = 1;
|
||||
0 fadeMusic _lowestVolume;
|
||||
|
||||
// Set Radio mod variables.
|
||||
player setVariable ["tf_globalVolume", _lowestVolume];
|
||||
ACE_player setVariable ["tf_globalVolume", _lowestVolume];
|
||||
if (!isNil "acre_api_fnc_setGlobalVolume") then { [_lowestVolume^0.33] call acre_api_fnc_setGlobalVolume; };
|
||||
|
@ -20,12 +20,6 @@ if (_unit isKindOf "CAManBase") then {
|
||||
private _sanitizedName = [name _unit, true] call FUNC(sanitizeString);
|
||||
private _rawName = [name _unit, false] call FUNC(sanitizeString);
|
||||
|
||||
//Debug Testing Code (with html tags):
|
||||
// private _sanitizedName = ["<TAG>Name", true] call FUNC(sanitizeString);
|
||||
// private _rawName = ["<TAG>Name", false] call FUNC(sanitizeString);
|
||||
|
||||
//if (_name != _unit getVariable ["ACE_Name", ""]) then {
|
||||
_unit setVariable ["ACE_Name", _sanitizedName, true];
|
||||
_unit setVariable ["ACE_NameRaw", _rawName, true];
|
||||
//};
|
||||
};
|
||||
|
@ -17,7 +17,7 @@
|
||||
params ["_name", "_args", ["_ttl", 0]];
|
||||
|
||||
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
ACE_LOGERROR("Synced event key not found.");
|
||||
ACE_LOGERROR_1("Synced event key [%1] not found (syncedEvent).", _name);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -12,9 +12,17 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
disableSerialization;
|
||||
_this spawn {//
|
||||
waitUntil {!isNull findDisplay 46};//
|
||||
sleep 2;//
|
||||
|
||||
params ["_display"];
|
||||
disableSerialization;
|
||||
|
||||
_display displayAddEventHandler ["KeyDown", FUNC(handleModifierKey)];
|
||||
_display displayAddEventHandler ["KeyUp", FUNC(handleModifierKeyUp)];
|
||||
params ["_display"];
|
||||
|
||||
_display displayAddEventHandler ["KeyDown", {_this call FUNC(handleModifierKey)}];
|
||||
_display displayAddEventHandler ["KeyUp", {_this call FUNC(handleModifierKeyUp)}];
|
||||
};//
|
||||
|
||||
//@todo, remove all lines with comments after CBA update, events rewrite branch
|
||||
// note 2, will break in save games after ~ 10 seconds thanks to CBA, fixed with above
|
||||
|
@ -512,7 +512,7 @@
|
||||
<German>Was soll mit Leuten geschehen, die nicht die richtigen PBO-Dateien geladen haben?</German>
|
||||
<Czech>Co udělat s lidmi, co nemají správné addony?</Czech>
|
||||
<Portuguese>O que fazer com pessoas que não tem os PBOs corretos?</Portuguese>
|
||||
<French>Que faire avec les personnes n'ayant pas les bon PBOs</French>
|
||||
<French>Que faire avec les personnes n'ayant pas les bons PBO ?</French>
|
||||
<Hungarian>Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k?</Hungarian>
|
||||
<Russian>Что делать с игроками с неправильными аддонами?</Russian>
|
||||
<Italian>Cosa fare con giocatori che non hanno i PBO corretti?</Italian>
|
||||
@ -596,7 +596,7 @@
|
||||
<German>Welche Addons werden dennoch erlaubt?</German>
|
||||
<Czech>Jaké addony jsou povoleny?</Czech>
|
||||
<Portuguese>Quais addons são permitidos de qualquer maneira?</Portuguese>
|
||||
<French>Quels addons sont tolérés</French>
|
||||
<French>Quels addons sont tolérés ?</French>
|
||||
<Hungarian>Milyen bővítmények vannak feltétlenül engedélyezve?</Hungarian>
|
||||
<Russian>Какие аддоны дополнительно разрешены?</Russian>
|
||||
<Italian>Quali addon sono permessi in ogni caso?</Italian>
|
||||
@ -664,7 +664,7 @@
|
||||
<Key ID="STR_ACE_Common_Disabled">
|
||||
<English>Disabled</English>
|
||||
<Czech>Zakázáno</Czech>
|
||||
<French>Non</French>
|
||||
<French>Désactiver</French>
|
||||
<German>Deaktiviert</German>
|
||||
<Italian>Disattivato</Italian>
|
||||
<Polish>Wyłączone</Polish>
|
||||
@ -675,7 +675,7 @@
|
||||
<Key ID="STR_ACE_Common_Enabled">
|
||||
<English>Enabled</English>
|
||||
<Czech>Povoleno</Czech>
|
||||
<French>Oui</French>
|
||||
<French>Activer</French>
|
||||
<German>Aktiviert</German>
|
||||
<Italian>Attivato</Italian>
|
||||
<Polish>Włączone</Polish>
|
||||
@ -716,6 +716,7 @@
|
||||
<Czech>Pouze vozidla</Czech>
|
||||
<Spanish>Solo vehículos</Spanish>
|
||||
<Italian>Solo veicoli</Italian>
|
||||
<French>Vehicules seulement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_DoNotForce">
|
||||
<English>Do Not Force</English>
|
||||
@ -726,6 +727,7 @@
|
||||
<Portuguese>Não forçar</Portuguese>
|
||||
<Russian>Не обязывать</Russian>
|
||||
<Italian>Non forzare</Italian>
|
||||
<French>Ne pas forcer</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment">
|
||||
<English>ACE3 Equipment</English>
|
||||
@ -736,6 +738,7 @@
|
||||
<Czech>ACE3 Vybavení</Czech>
|
||||
<Spanish>ACE3 Equipo</Spanish>
|
||||
<Italian>Equipaggiamento ACE3</Italian>
|
||||
<French>Equipement ACE3</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryCommon">
|
||||
<English>ACE3 Common</English>
|
||||
@ -746,6 +749,7 @@
|
||||
<Spanish>ACE3 Común</Spanish>
|
||||
<Czech>ACE3 Obecné</Czech>
|
||||
<Italian>Comune ACE3</Italian>
|
||||
<French>Commun ACE3</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons">
|
||||
<English>ACE3 Weapons</English>
|
||||
@ -756,6 +760,7 @@
|
||||
<Czech>ACE3 Zbraně</Czech>
|
||||
<Spanish>ACE3 Armas</Spanish>
|
||||
<Italian>Armi ACE3</Italian>
|
||||
<French>Armes ACE3</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryMovement">
|
||||
<English>ACE3 Movement</English>
|
||||
@ -766,6 +771,7 @@
|
||||
<Spanish>ACE3 Movimiento</Spanish>
|
||||
<Czech>ACE3 Pohyb</Czech>
|
||||
<Italian>Movimento ACE3</Italian>
|
||||
<French>Mouvement ACE3</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment">
|
||||
<English>ACE3 Scope Adjustment</English>
|
||||
@ -776,6 +782,7 @@
|
||||
<Czech>ACE3 Nastavení optiky</Czech>
|
||||
<Spanish>ACE3 Ajuste de miras</Spanish>
|
||||
<Italian>Regolazione Ottiche ACE3</Italian>
|
||||
<French>Ajustement de la lunette ACE3</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles">
|
||||
<English>ACE3 Vehicles</English>
|
||||
@ -786,6 +793,7 @@
|
||||
<Czech>ACE3 Vozidla</Czech>
|
||||
<Spanish>ACE3 Vehículos</Spanish>
|
||||
<Italian>Veicoli ACE3</Italian>
|
||||
<French>Vehicules ACE3</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NoRoomToUnload">
|
||||
<English>No Room to unload</English>
|
||||
@ -793,6 +801,8 @@
|
||||
<Polish>Brak miejsca na rozładunek</Polish>
|
||||
<Italian>Non c'è spazio per scaricare</Italian>
|
||||
<Spanish>No hay espacio para descargar.</Spanish>
|
||||
<French>Pas de place pour décharger</French>
|
||||
<Czech>Nedostatek místa k vyložení</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,11 +1,13 @@
|
||||
|
||||
class CBA_Extended_EventHandlers;
|
||||
|
||||
class CfgVehicles {
|
||||
class Fence;
|
||||
class ThingX;
|
||||
class NonStrategic;
|
||||
|
||||
class ACE_ConcertinaWireNoGeo: Fence {
|
||||
XEH_ENABLED;
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
scope = 1;
|
||||
displayName = "";
|
||||
model = PATHTOF(data\ACE_ConcertinaWireNoGeo.p3d);
|
||||
@ -84,7 +86,7 @@ class CfgVehicles {
|
||||
selection = "";
|
||||
displayName = "$STR_ACE_UNROLLWIRE";
|
||||
distance = 5;
|
||||
condition = "true";
|
||||
condition = "alive _target";
|
||||
statement = QUOTE([ARR_2(_target,_player)] call FUNC(dismount));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
@ -94,8 +96,13 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class ThingX;
|
||||
class ACE_ConcertinaWireCoil: ThingX {
|
||||
XEH_ENABLED;
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
scope = 2;
|
||||
displayName = $STR_ACE_CONCERTINA_WIRECOIL;
|
||||
model = PATHTOF(data\ACE_ConcertinaWireCoil.p3d);
|
||||
@ -112,7 +119,7 @@ class CfgVehicles {
|
||||
accuracy = 1000;
|
||||
autocenter = 0;
|
||||
EGVAR(dragging,canDrag) = 1;
|
||||
EGVAR(dragging,dragPosition[]) = {0,0.5,0.5};
|
||||
EGVAR(dragging,dragPosition)[] = {0,0.5,0.5};
|
||||
EGVAR(dragging,dragDirection) = 0;
|
||||
EGVAR(cargo,size) = 1;
|
||||
EGVAR(cargo,canLoad) = 1;
|
||||
@ -137,7 +144,10 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
|
||||
class NonStrategic;
|
||||
class Land_Razorwire_F: NonStrategic {
|
||||
XEH_ENABLED;
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -14,13 +14,17 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
params ["_wire", "_killer"];
|
||||
TRACE_2("params",_wire,_killer);
|
||||
|
||||
private ["_distance", "_vehicle"];
|
||||
|
||||
if (isNull _killer) then {
|
||||
_killer = _wire getVariable ["ace_concertina_wire_lastDamager", objNull];
|
||||
if (isNull _killer) then {
|
||||
_killer = nearestObject [_wire, "car"];
|
||||
private _midPoint = ((_wire selectionPosition "start") vectorAdd (_wire selectionPosition "deploy")) vectorMultiply 0.5;
|
||||
{
|
||||
if ((vectorMagnitude velocity _x) > 0) exitWith {_killer = _x};
|
||||
} forEach (nearestObjects [(_wire modelToWorld _midPoint), ["Car"], 8]);
|
||||
};
|
||||
};
|
||||
if (isNull _killer || {_killer == _wire} || {_killer == gunner (vehicle _killer)}) exitWith {};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="concertina_wire">
|
||||
<Key ID="STR_ACE_CONCERTINA_WIRE">
|
||||
@ -31,7 +31,7 @@
|
||||
<Russian>Демонтировать колючую проволоку</Russian>
|
||||
<Polish>Zwiń koncentrinę</Polish>
|
||||
<Spanish>Desmontar alambre de espino</Spanish>
|
||||
<French>Descendre le fil barbelé</French>
|
||||
<French>Démonter le fil barbelé</French>
|
||||
<Czech>Svinout ostnatý drát</Czech>
|
||||
<Italian>Smonta la concertina</Italian>
|
||||
<Hungarian>Dismount Concertina wire</Hungarian>
|
||||
|
@ -522,7 +522,7 @@ GVAR(menuRun) = true;
|
||||
(__dsp displayCtrl __mainText) ctrlSetText "Connecting...";
|
||||
};
|
||||
if (ACE_time - GVAR(busyTimer) > 0.6) then {
|
||||
if (ACE_player hasWeapon "ACE_Vector") then {
|
||||
if (({_x isKindOf ["ACE_Vector", configFile >> "CfgWeapons"]} count (weapons ACE_player)) > 0) then {
|
||||
GVAR(displaySelection) = "VECTOR";
|
||||
(__dsp displayCtrl __mainText) ctrlSetText "Vector Connected";
|
||||
GVAR(vectorConnected) = true;
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="DAGR">
|
||||
<Key ID="STR_ACE_DAGR_Name">
|
||||
@ -10,6 +10,7 @@
|
||||
<Portuguese>DAGR</Portuguese>
|
||||
<Czech>DAGR</Czech>
|
||||
<Italian>DAGR</Italian>
|
||||
<French>DAGR</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_ConfigureDAGR">
|
||||
<English>Configure DAGR</English>
|
||||
@ -20,6 +21,7 @@
|
||||
<Portuguese>Configurar DAGR</Portuguese>
|
||||
<Czech>Konfigurovat DAGR</Czech>
|
||||
<Italian>Configura DAGR</Italian>
|
||||
<French>Configurer le DAGR</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_ToggleDAGR">
|
||||
<English>Toggle DAGR</English>
|
||||
@ -30,6 +32,7 @@
|
||||
<Portuguese>Mostrar DAGR</Portuguese>
|
||||
<Czech>Přepnout DAGR</Czech>
|
||||
<Italian>Apri DAGR</Italian>
|
||||
<French>Activer/Desactiver le DAGR</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_Description">
|
||||
<English>Defense Advanced GPS Receiver</English>
|
||||
@ -40,6 +43,7 @@
|
||||
<Portuguese>Defense Advanced GPS Receiver</Portuguese>
|
||||
<Czech>Defense Advanced GPS Receiver</Czech>
|
||||
<Italian>Defense Advanced GPS Receiver</Italian>
|
||||
<French>Defense Advanced GPS Receiver</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1 +0,0 @@
|
||||
z\ace\addons\difficulties
|
@ -1,33 +0,0 @@
|
||||
|
||||
class CfgDifficulties {
|
||||
class Mercenary {
|
||||
class Flags {
|
||||
armor[] = {0,0};
|
||||
friendlyTag[] = {0,0};
|
||||
enemyTag[] = {0,0};
|
||||
mineTag[] = {0,0};
|
||||
hud[] = {0,1};//{1,1};
|
||||
hudPerm[] = {0,0};
|
||||
hudWp[] = {0,0};
|
||||
hudWpPerm[] = {0,0};
|
||||
autoSpot[] = {0,1};
|
||||
map[] = {0,0};
|
||||
weaponCursor[] = {0,1};//{1,1};
|
||||
autoGuideAT[] = {0,0};
|
||||
clockIndicator[] = {0,0};
|
||||
3rdPersonView[] = {0,0};
|
||||
autoAim[] = {0,0};
|
||||
unlimitedSaves[] = {0,0};
|
||||
deathMessages[] = {0,1};//{1,1};
|
||||
netStats[] = {0,1};//{1,1};
|
||||
vonID[] = {0,1};
|
||||
cameraShake[] = {1,0};
|
||||
hudGroupInfo[] = {0,0};
|
||||
extendetInfoType[] = {0,0};
|
||||
roughLanding[] = {0,0};
|
||||
windEnabled[] = {1,0};
|
||||
autoTrimEnabled[] = {0,0};
|
||||
stressDamageEnabled[] = {1,0};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,15 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author[] = {"commy2"};
|
||||
authorUrl = "https://github.com/commy2/";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgDifficulties.hpp"
|
@ -1,17 +0,0 @@
|
||||
#define COMPONENT difficulties
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
// #define DEBUG_MODE_FULL
|
||||
// #define DISABLE_COMPILE_CACHE
|
||||
// #define CBA_DEBUG_SYNCHRONOUS
|
||||
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||
|
||||
#ifdef DEBUG_ENABLED_DIFFICULTIES
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_ENABLED_DIFFICULTIES
|
||||
#define DEBUG_SETTINGS DEBUG_ENABLED_DIFFICULTIES
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Disarming">
|
||||
<Key ID="STR_ACE_Disarming_OpenInventory">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Disposable">
|
||||
<Key ID="STR_ACE_Disposable_UsedTube">
|
||||
|
@ -55,3 +55,9 @@ class Extended_AnimChanged_EventHandlers {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_DisplayLoad_EventHandlers {
|
||||
class RscDisplayMission {
|
||||
ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad));
|
||||
};
|
||||
};
|
||||
|
@ -1,17 +1,24 @@
|
||||
|
||||
class CBA_Extended_EventHandlers;
|
||||
|
||||
class CfgVehicles {
|
||||
// Static weapons
|
||||
class LandVehicle;
|
||||
class StaticWeapon: LandVehicle {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1.2,0};
|
||||
GVAR(carryPosition)[] = {0,1.2,0};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
class StaticCannon: StaticWeapon {
|
||||
GVAR(canCarry) = 0;
|
||||
GVAR(canDrag) = 0;
|
||||
};
|
||||
|
||||
//remove actions from Taru Pods
|
||||
class Pod_Heli_Transport_04_base_F: StaticWeapon {
|
||||
GVAR(canCarry) = 0;
|
||||
@ -21,23 +28,24 @@ class CfgVehicles {
|
||||
class StaticMortar;
|
||||
class Mortar_01_base_F: StaticMortar {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1.2,0};
|
||||
GVAR(carryPosition)[] = {0,1.2,0};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
// ammo boxes
|
||||
class ThingX;
|
||||
class Items_base_F;
|
||||
class ReammoBox_F: ThingX {
|
||||
GVAR(canCarry) = 0;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 0;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
@ -83,44 +91,73 @@ class CfgVehicles {
|
||||
GVAR(canDrag) = 0;
|
||||
};
|
||||
|
||||
// Barrier
|
||||
class RoadCone_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
//Plastic and metal case
|
||||
class PlasticCase_01_base_F: Items_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
GVAR(carryDirection) = 270;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
class MetalCase_01_base_F: Items_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 270;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
// Barrier
|
||||
class RoadCone_F: ThingX {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
class RoadBarrier_F: RoadCone_F {
|
||||
GVAR(carryPosition[]) = {0,1,0.300671};
|
||||
GVAR(carryPosition)[] = {0,1,0.300671};
|
||||
};
|
||||
|
||||
class ACE_RepairItem_Base: ThingX {};
|
||||
|
||||
class ACE_Track: ACE_RepairItem_Base {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
};
|
||||
|
||||
class ACE_Wheel: ACE_RepairItem_Base {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
};
|
||||
|
||||
class Lamps_base_F;
|
||||
class Land_PortableLight_single_F: Lamps_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1.2,0};
|
||||
GVAR(carryPosition)[] = {0,1.2,0};
|
||||
GVAR(carryDirection) = 180;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 180;
|
||||
};
|
||||
};
|
||||
|
BIN
addons/dragging/UI/icons/box_carry.paa
Normal file
BIN
addons/dragging/UI/icons/box_carry.paa
Normal file
Binary file not shown.
BIN
addons/dragging/UI/icons/box_drag.paa
Normal file
BIN
addons/dragging/UI/icons/box_drag.paa
Normal file
Binary file not shown.
BIN
addons/dragging/UI/icons/person_carry.paa
Normal file
BIN
addons/dragging/UI/icons/person_carry.paa
Normal file
Binary file not shown.
BIN
addons/dragging/UI/icons/person_drag.paa
Normal file
BIN
addons/dragging/UI/icons/person_drag.paa
Normal file
Binary file not shown.
5
addons/dragging/XEH_missionDisplayLoad.sqf
Normal file
5
addons/dragging/XEH_missionDisplayLoad.sqf
Normal file
@ -0,0 +1,5 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_display"];
|
||||
|
||||
_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}];
|
@ -8,8 +8,6 @@ if (isServer) then {
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler);
|
||||
|
||||
if (isNil "ACE_maxWeightDrag") then {
|
||||
ACE_maxWeightDrag = 800;
|
||||
};
|
||||
|
@ -40,4 +40,8 @@ detach _carriedItem;
|
||||
_carriedItem setPosATL _position;
|
||||
_carriedItem attachTo [_unit];
|
||||
|
||||
//reset the carry direction
|
||||
private _direction = _carriedItem getVariable [QGVAR(carryDirection), 0];
|
||||
["setDir", _carriedItem, [_carriedItem, _direction]] call EFUNC(common,targetEvent);
|
||||
|
||||
true
|
||||
|
@ -43,7 +43,9 @@ if (_type in _initializedClasses) exitWith {};
|
||||
_initializedClasses pushBack _type;
|
||||
GVAR(initializedClasses_carry) = _initializedClasses;
|
||||
|
||||
private _carryAction = [QGVAR(carry), localize LSTRING(Carry), "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction);
|
||||
private _icon = [QUOTE(PATHTOF(UI\icons\box_carry.paa)), QUOTE(PATHTOF(UI\icons\person_carry.paa))] select (_object isKindOf "Man");
|
||||
|
||||
private _carryAction = [QGVAR(carry), localize LSTRING(Carry), _icon, {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction);
|
||||
private _dropAction = [QGVAR(drop_carry), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction);
|
||||
|
||||
[_type, 0, ["ACE_MainActions"], _carryAction] call EFUNC(interact_menu,addActionToClass);
|
||||
|
@ -44,7 +44,9 @@ if (_type in _initializedClasses) exitWith {};
|
||||
_initializedClasses pushBack _type;
|
||||
GVAR(initializedClasses) = _initializedClasses;
|
||||
|
||||
private _dragAction = [QGVAR(drag), localize LSTRING(Drag), "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction);
|
||||
private _icon = [QUOTE(PATHTOF(UI\icons\box_drag.paa)), QUOTE(PATHTOF(UI\icons\person_drag.paa))] select (_object isKindOf "Man");
|
||||
|
||||
private _dragAction = [QGVAR(drag), localize LSTRING(Drag), _icon, {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction);
|
||||
private _dropAction = [QGVAR(drop), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction);
|
||||
|
||||
[_type, 0, ["ACE_MainActions"], _dragAction] call EFUNC(interact_menu,addActionToClass);
|
||||
|
@ -58,6 +58,7 @@
|
||||
<Czech>Zvýšit/Snížit</Czech>
|
||||
<Italian>Alza/Abbassa</Italian>
|
||||
<Spanish>Subir/Bajar</Spanish>
|
||||
<French>Lever/Baisser</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,13 +1,17 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(RequireSpecialist) {
|
||||
class GVAR(requireSpecialist) {
|
||||
displayName = CSTRING(RequireSpecialist_DisplayName);
|
||||
description = CSTRING(RequireSpecialist_Description);
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(PunishNonSpecialists) {
|
||||
class GVAR(punishNonSpecialists) {
|
||||
displayName = CSTRING(PunishNonSpecialists_DisplayName);
|
||||
description = CSTRING(PunishNonSpecialists_Description);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(ExplodeOnDefuse) {
|
||||
class GVAR(explodeOnDefuse) {
|
||||
displayName = CSTRING(ExplodeOnDefuse_DisplayName);
|
||||
description = CSTRING(ExplodeOnDefuse_Description);
|
||||
value = 1;
|
||||
|
@ -31,14 +31,14 @@ class CfgAmmo {
|
||||
class ClaymoreDirectionalMine_Remote_Ammo: DirectionalBombBase {
|
||||
GVAR(magazine) = "ClaymoreDirectionalMine_Remote_Mag";
|
||||
GVAR(Explosive) = "ClaymoreDirectionalMine_Remote_Ammo_Scripted";
|
||||
GVAR(defuseObjectPosition[]) = {0, 0, 0.038};
|
||||
GVAR(defuseObjectPosition)[] = {0, 0, 0.038};
|
||||
soundActivation[] = {"", 0, 0, 0};
|
||||
soundDeactivation[] = {"", 0, 0, 0};
|
||||
};
|
||||
// class ClaymoreDirectionalMine_Remote_Ammo_Scripted: ClaymoreDirectionalMine_Remote_Ammo {};
|
||||
|
||||
class APERSTripMine_Wire_Ammo: DirectionalBombBase {
|
||||
GVAR(defuseObjectPosition[]) = {-1.415, 0, 0.12};
|
||||
GVAR(defuseObjectPosition)[] = {-1.415, 0, 0.12};
|
||||
};
|
||||
|
||||
class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase {
|
||||
@ -66,7 +66,7 @@ class CfgAmmo {
|
||||
class DemoCharge_Remote_Ammo: PipeBombBase {
|
||||
GVAR(magazine) = "DemoCharge_Remote_Mag";
|
||||
GVAR(Explosive) = "DemoCharge_Remote_Ammo_Scripted";
|
||||
GVAR(defuseObjectPosition[]) = {0.07, 0, 0.055};
|
||||
GVAR(defuseObjectPosition)[] = {0.07, 0, 0.055};
|
||||
soundActivation[] = {"", 0, 0, 0};
|
||||
soundDeactivation[] = {"", 0, 0, 0};
|
||||
hit = 500;
|
||||
@ -76,7 +76,7 @@ class CfgAmmo {
|
||||
class SatchelCharge_Remote_Ammo: PipeBombBase {
|
||||
GVAR(magazine) = "SatchelCharge_Remote_Mag";
|
||||
GVAR(Explosive) = "SatchelCharge_Remote_Ammo_Scripted";
|
||||
GVAR(defuseObjectPosition[]) = {0.1, 0.1, 0.05};
|
||||
GVAR(defuseObjectPosition)[] = {0.1, 0.1, 0.05};
|
||||
soundActivation[] = {"", 0, 0, 0};
|
||||
soundDeactivation[] = {"", 0, 0, 0};
|
||||
};
|
||||
|
@ -32,3 +32,9 @@ class Extended_Put_EventHandlers {
|
||||
GVAR(takeHandler) = QUOTE([ARR_3(_this select 1, _this select 0, _this select 2)] call FUNC(onInventoryChanged));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_DisplayLoad_EventHandlers {
|
||||
class RscDisplayMission {
|
||||
ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad));
|
||||
};
|
||||
};
|
||||
|
@ -1,3 +1,6 @@
|
||||
|
||||
class CBA_Extended_EventHandlers;
|
||||
|
||||
class CfgVehicles {
|
||||
class Man;
|
||||
class CAManBase: Man {
|
||||
@ -37,15 +40,17 @@ class CfgVehicles {
|
||||
|
||||
class Items_base_F;
|
||||
class ACE_DefuseObject: Items_base_F {
|
||||
XEH_ENABLED;
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
author = "ACE";
|
||||
_generalMacro = "ACE_DefuseObject";
|
||||
displayName = "ACE Defuse Helper";
|
||||
mapSize = 0.2;
|
||||
icon = "iconObject_1x2";
|
||||
model = "\A3\Weapons_f\dummyweapon.p3d";
|
||||
scope = 2;
|
||||
scopeCurator = 1;
|
||||
scope = 1;
|
||||
vehicleClass = "Cargo";
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
@ -60,31 +65,31 @@ class CfgVehicles {
|
||||
showDisabled = 0;
|
||||
icon = PATHTOF(UI\Defuse_ca.paa);
|
||||
priority = 0.8;
|
||||
distance = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_Explosives_Place: Items_base_F {
|
||||
XEH_ENABLED;
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
author = "ACE";
|
||||
_generalMacro = "ACE_Explosives_Place";
|
||||
displayName = "Multi-meter";
|
||||
mapSize = 0.2;
|
||||
icon = "iconObject_1x2";
|
||||
model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d";
|
||||
scope = 2;
|
||||
scopeCurator = 1;
|
||||
scope = 1;
|
||||
vehicleClass = "Cargo";
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
selection = "";
|
||||
distance = 1;
|
||||
distance = 1.5;
|
||||
condition = "true";
|
||||
class ACE_SetTrigger {
|
||||
selection = "";
|
||||
displayName = CSTRING(TriggerMenu);
|
||||
distance = 1;
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions););
|
||||
@ -96,7 +101,6 @@ class CfgVehicles {
|
||||
class ACE_PickUp {
|
||||
selection = "";
|
||||
displayName = CSTRING(Pickup);
|
||||
distance = 1;
|
||||
condition = "true";
|
||||
statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;);
|
||||
showDisabled = 0;
|
||||
|
@ -6,6 +6,7 @@ PREP(addExplosiveActions);
|
||||
PREP(addToSpeedDial);
|
||||
PREP(addTransmitterActions);
|
||||
PREP(addTriggerActions);
|
||||
PREP(cancelPlacement);
|
||||
PREP(canDefuse);
|
||||
PREP(canDetonate);
|
||||
PREP(connectExplosive);
|
||||
|
6
addons/explosives/XEH_missionDisplayLoad.sqf
Normal file
6
addons/explosives/XEH_missionDisplayLoad.sqf
Normal file
@ -0,0 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_display"];
|
||||
|
||||
_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}];
|
||||
_display displayAddEventHandler ["MouseButtonDown", {[ACE_player, _this select 1] call FUNC(cancelPlacement)}];
|
@ -27,6 +27,18 @@ if (isServer) then {
|
||||
TRACE_1("Knocked Out, Doing Deadman", _unit);
|
||||
[_unit] call FUNC(onIncapacitated);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
["clientRequestsOrientations", {
|
||||
params ["_logic"];
|
||||
TRACE_1("clientRequestsOrientations received:",_logic);
|
||||
// Filter the array before sending it
|
||||
GVAR(explosivesOrientations) = GVAR(explosivesOrientations) select {
|
||||
_x params ["_explosive"];
|
||||
(!isNull _explosive && {alive _explosive})
|
||||
};
|
||||
TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations));
|
||||
["serverSendsOrientations", _logic, [GVAR(explosivesOrientations)]] call EFUNC(common,targetEvent);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
};
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
@ -36,16 +48,26 @@ GVAR(Setup) = objNull;
|
||||
GVAR(pfeh_running) = false;
|
||||
GVAR(CurrentSpeedDial) = 0;
|
||||
|
||||
// Properly angle preplaced bottom-attack SLAMs
|
||||
{
|
||||
if (local _x) then {
|
||||
switch (typeOf _x) do {
|
||||
case ("ACE_SLAMDirectionalMine_Magnetic_Ammo"): {
|
||||
[_x, getDir _x, 90] call FUNC(setPosition);
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach allMines;
|
||||
// In case we are a JIP client, ask the server for orientation of any previously
|
||||
// placed mine.
|
||||
if (didJIP) then {
|
||||
["serverSendsOrientations", {
|
||||
params ["_explosivesOrientations"];
|
||||
TRACE_1("serverSendsOrientations received:",_explosivesOrientations);
|
||||
{
|
||||
_x params ["_explosive","_direction","_pitch"];
|
||||
TRACE_3("orientation set:",_explosive,_direction,_pitch);
|
||||
[_explosive, _direction, _pitch] call FUNC(setPosition);
|
||||
} forEach _explosivesOrientations;
|
||||
deleteVehicle GVAR(localLogic);
|
||||
GVAR(localLogic) = nil;
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
// Create a logic to get the client ID
|
||||
GVAR(localLogic) = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["Logic", [0,0,0], [], 0, "NONE"];
|
||||
TRACE_1("clientRequestsOrientations sent:",GVAR(localLogic));
|
||||
["clientRequestsOrientations", [GVAR(localLogic)]] call EFUNC(common,serverEvent);
|
||||
};
|
||||
|
||||
["interactMenuOpened", {
|
||||
//Cancel placement if interact menu opened
|
||||
@ -57,5 +79,3 @@ GVAR(CurrentSpeedDial) = 0;
|
||||
_this call FUNC(interactEH);
|
||||
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
[{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(common,addScrollWheelEventHandler);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user