Merge branch 'master' into zeusModuleUiExample

This commit is contained in:
SilentSpike 2016-05-21 17:36:27 +01:00
commit 3e16142ff6
646 changed files with 8355 additions and 5010 deletions

View File

@ -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. 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"> **Please note:**
<h5>Please note:</h5> - It's not a valid to simply remove <code>@ace</code> from the mod list to confirm that ACE3 is the culprit.
<p>It's not a valid to simply remove <code>@ace</code> from the mod list to confirm that ACE3 is the culprit.</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>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>
## Reporting the issue ## 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. 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 ## 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. Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.

View File

@ -1,25 +1,23 @@
**Arma 3 Version:** `x.xx` **Arma 3 Version:** `x.xx` (stable / rc / dev)
*(indicate if stable, rc or dev*) **CBA Version:** `2.x.x` (stable / dev + commit hash)
**ACE3 Version:** `3.x.x` (stable / dev + commit hash)
**ACE3 Version:** `3.x.x`
*(indicate if stable or dev, if dev indicate the commit the version is based on)*
**Mods:** **Mods:**
* `@CBA_A3` - `@CBA_A3`
* `@ace` - `@ace`
* ...
**Placed Modules:**
* *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.*
**Description:** **Description:**
* *Add a detailed description of the error. This makes it easier for us to fix the issue.* - Add a detailed description of the error. This makes it easier for us to fix the issue.
**Steps to reproduce:** **Steps to reproduce:**
* *Add the steps needed to reproduce the issue.* - Add the steps needed to reproduce the issue.
**Where did the issue occur?** **Where did the issue occur?**
* *A possible answer might be "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:** **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.

View File

@ -1,10 +1,4 @@
### When merged this pull request will: **When merged this pull request will:**
- Describe what this pull request will do
1. *Describe what this pull request will do* - Each change in a separate line
2. *Each change in a seperate line* - Respect the [Development Guidelines](http://ace3mod.com/wiki/development/)
---
*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)

View File

@ -12,6 +12,7 @@ before_script:
fi fi
script: script:
- python3 tools/sqf_validator.py - python3 tools/sqf_validator.py
- python3 tools/config_style_checker.py
- if [ -n "${GH_TOKEN}" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then - if [ -n "${GH_TOKEN}" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
python3 tools/deploy.py; python3 tools/deploy.py;
fi fi

View File

@ -65,6 +65,7 @@ F3 Project <alanr@ferstaberinde.com>
Falke75 Falke75
Ferenczi Ferenczi
Ferenzi Ferenzi
FFAAMOD <modffaa@gmail.com>
Filip Basara <filip.basara93@googlemail.com> Filip Basara <filip.basara93@googlemail.com>
fr89k <kaschitoku@web.de> fr89k <kaschitoku@web.de>
FreeZbe <freeseb@gmail.com> FreeZbe <freeseb@gmail.com>
@ -74,6 +75,7 @@ Gianmarco Varriale (TeamNuke) <admin@forhost.org>
GieNkoV <gienkov.grzegorz@gmail.com> GieNkoV <gienkov.grzegorz@gmail.com>
GitHawk <githawk@gmx.net> GitHawk <githawk@gmx.net>
gpgpgpgp gpgpgpgp
Grey-Soldierman <gungamer101@hotmail.com>
Grzegorz Grzegorz
Hamburger SV Hamburger SV
Harakhti <shadowdragonphd@gmail.com> Harakhti <shadowdragonphd@gmail.com>
@ -110,6 +112,7 @@ Sniperwolf572 <tenga6@gmail.com>
System98 System98
SzwedzikPL <szwedzikpl@gmail.com> SzwedzikPL <szwedzikpl@gmail.com>
Tachi <zaveruha007@gmail.com> Tachi <zaveruha007@gmail.com>
Tessa Elieff <Fastroping Sound - CreativeCommons Attributions 3.0>
Toaster <jonathan.pereira@gmail.com> Toaster <jonathan.pereira@gmail.com>
Tonic Tonic
Tourorist <tourorist@gmail.com> Tourorist <tourorist@gmail.com>
@ -118,4 +121,3 @@ voiper
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com> VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
Winter <simon@agius-muscat.net> Winter <simon@agius-muscat.net>
zGuba zGuba
Grey-Soldierman <gungamer101@hotmail.com>

View File

@ -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 that be the case, everything in that folder and all subfolders is subject
to that license instead. to that license instead.
- ARMA PUBLIC LICENSE (\addons\apl)
- CreativeCommons Attributions 3.0 (\addons\fastroping\data\sounds)
============================================================================ ============================================================================
Full GNU General Public License Text Full GNU General Public License Text

View File

@ -3,15 +3,15 @@
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/acemod/ACE3/releases"> <a href="https://github.com/acemod/ACE3/releases/latest">
<img src="https://img.shields.io/badge/Version-3.4.2-blue.svg?style=flat-square" alt="ACE3 Version"> <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/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> </a>
<a href="https://github.com/acemod/ACE3/issues"> <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"> <img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
</a> </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"> <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"> <img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat-square" alt="BIF Thread">
</a> </a>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,29 +1,34 @@
class ACE_Settings { class ACE_Settings {
class GVAR(enabled) { class GVAR(enabled) {
category = CSTRING(DisplayName);
displayName = CSTRING(enabled_DisplayName); displayName = CSTRING(enabled_DisplayName);
description = CSTRING(enabled_Description); description = CSTRING(enabled_Description);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(simulateForSnipers) { class GVAR(simulateForSnipers) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulateForSnipers_DisplayName); displayName = CSTRING(simulateForSnipers_DisplayName);
description = CSTRING(simulateForSnipers_Description); description = CSTRING(simulateForSnipers_Description);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(simulateForGroupMembers) { class GVAR(simulateForGroupMembers) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulateForGroupMembers_DisplayName); displayName = CSTRING(simulateForGroupMembers_DisplayName);
description = CSTRING(simulateForGroupMembers_Description); description = CSTRING(simulateForGroupMembers_Description);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(simulateForEveryone) { class GVAR(simulateForEveryone) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulateForEveryone_DisplayName); displayName = CSTRING(simulateForEveryone_DisplayName);
description = CSTRING(simulateForEveryone_Description); description = CSTRING(simulateForEveryone_Description);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(disabledInFullAutoMode) { class GVAR(disabledInFullAutoMode) {
category = CSTRING(DisplayName);
displayName = CSTRING(disabledInFullAutoMod_DisplayName); displayName = CSTRING(disabledInFullAutoMod_DisplayName);
description = CSTRING(disabledInFullAutoMod_Description); description = CSTRING(disabledInFullAutoMod_Description);
typeName = "BOOL"; typeName = "BOOL";
@ -31,6 +36,7 @@ class ACE_Settings {
}; };
/* // TODO: We currently do not have firedEHs on vehicles /* // TODO: We currently do not have firedEHs on vehicles
class GVAR(vehicleGunnerEnabled) { class GVAR(vehicleGunnerEnabled) {
category = CSTRING(DisplayName);
displayName = "Enabled For Vehicle Gunners"; displayName = "Enabled For Vehicle Gunners";
description = "Enables advanced ballistics for vehicle gunners"; description = "Enables advanced ballistics for vehicle gunners";
typeName = "BOOL"; typeName = "BOOL";
@ -38,30 +44,35 @@ class ACE_Settings {
}; };
*/ */
class GVAR(ammoTemperatureEnabled) { class GVAR(ammoTemperatureEnabled) {
category = CSTRING(DisplayName);
displayName = CSTRING(ammoTemperatureEnabled_DisplayName); displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
description = CSTRING(ammoTemperatureEnabled_Description); description = CSTRING(ammoTemperatureEnabled_Description);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(barrelLengthInfluenceEnabled) { class GVAR(barrelLengthInfluenceEnabled) {
category = CSTRING(DisplayName);
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName); displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
description = CSTRING(barrelLengthInfluenceEnabled_Description); description = CSTRING(barrelLengthInfluenceEnabled_Description);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(bulletTraceEnabled) { class GVAR(bulletTraceEnabled) {
category = CSTRING(DisplayName);
displayName = CSTRING(bulletTraceEnabled_DisplayName); displayName = CSTRING(bulletTraceEnabled_DisplayName);
description = CSTRING(bulletTraceEnabled_Description); description = CSTRING(bulletTraceEnabled_Description);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(simulationInterval) { class GVAR(simulationInterval) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulationInterval_DisplayName); displayName = CSTRING(simulationInterval_DisplayName);
description = CSTRING(simulationInterval_Description); description = CSTRING(simulationInterval_Description);
typeName = "SCALAR"; typeName = "SCALAR";
value = 0.0; value = 0.0;
}; };
class GVAR(simulationRadius) { class GVAR(simulationRadius) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulationRadius_DisplayName); displayName = CSTRING(simulationRadius_DisplayName);
description = CSTRING(simulationRadius_Description); description = CSTRING(simulationRadius_Description);
typeName = "SCALAR"; typeName = "SCALAR";

View File

@ -21,7 +21,6 @@ if (!GVAR(extensionAvailable)) exitWith {
}; };
}; };
*/ */
[] call FUNC(initializeTerrainExtension);
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
@ -29,10 +28,28 @@ if (!hasInterface) exitWith {};
//If not enabled, dont't add PFEH //If not enabled, dont't add PFEH
if (!GVAR(enabled)) exitWith {}; if (!GVAR(enabled)) exitWith {};
//Run the terrain processor
[] call FUNC(initializeTerrainExtension);
// Register fire event handler // Register fire event handler
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); ["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
["firedPlayerNonLocal", 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); }] call EFUNC(common,addEventHandler);
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL

View File

@ -47,7 +47,7 @@ GVAR(Protractor) = true;
__ctrl1 ctrlSetTextColor [1, 1, 1, 1]; __ctrl1 ctrlSetTextColor [1, 1, 1, 1];
__ctrl2 ctrlSetScale 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 ctrlCommit 0;
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa)); __ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));
__ctrl2 ctrlSetTextColor [1, 1, 1, 1]; __ctrl2 ctrlSetTextColor [1, 1, 1, 1];

View File

@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then {
_bulletTraceVisible = false; _bulletTraceVisible = false;
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { 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; _bulletTraceVisible = true;
} else { } else {
if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then { if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then {

View File

@ -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 { if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
systemChat "AdvancedBallistics: Terrain already initialized"; systemChat "AdvancedBallistics: Terrain already initialized";
#endIf #endif
}; };
_mapGrids = ceil(_mapSize / 50) + 1; _mapGrids = ceil(_mapSize / 50) + 1;

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Advanced_Ballistics"> <Package name="Advanced_Ballistics">
<Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey"> <Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey">
@ -92,7 +92,7 @@
<German>Für Gruppenmitglieder aktiviert</German> <German>Für Gruppenmitglieder aktiviert</German>
<Czech>Povoleno pro členy skupiny</Czech> <Czech>Povoleno pro členy skupiny</Czech>
<Portuguese>Ativada para membros do grupo</Portuguese> <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> <Hungarian>Csoporttagoknak engedélyezve</Hungarian>
<Russian>Включена для группы</Russian> <Russian>Включена для группы</Russian>
<Italian>Abilita per Membri del Gruppo</Italian> <Italian>Abilita per Membri del Gruppo</Italian>
@ -104,7 +104,7 @@
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German> <German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
<Czech>Aktivuje pokročilou balistiku pro nelokální členy skupiny</Czech> <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> <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> <Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak</Hungarian>
<Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian> <Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian>
<Italian>Abilita Balistica Avanzata per Membri non locali del Gruppo</Italian> <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> <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> <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> <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> <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> <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> <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> <German>Für Gruppenmitglieder immer aktiviert</German>
<Czech>Vždy povoleno pro členy skupiny</Czech> <Czech>Vždy povoleno pro členy skupiny</Czech>
<Portuguese>Sempre ativada para membros do grupo</Portuguese> <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> <Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian>
<Russian>Всегда включена для членов группы</Russian> <Russian>Всегда включена для членов группы</Russian>
<Italian>Sempre abilitato per Membri del Gruppo</Italian> <Italian>Sempre abilitato per Membri del Gruppo</Italian>
@ -272,7 +272,7 @@
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German> <German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
<Czech>Určuje interval mezi každým výpočtem</Czech> <Czech>Určuje interval mezi každým výpočtem</Czech>
<Portuguese>Define o intervalo entre cada cálculo</Portuguese> <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> <Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian>
<Russian>Определяет временной интервал между вычислениями</Russian> <Russian>Определяет временной интервал между вычислениями</Russian>
<Italian>Definisce l'intervallo tra ogni step di calcolo</Italian> <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> <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> <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> <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> <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> <Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
<Italian>Definisce il raggio attorno al giocatore (in metri) per cui la Balistica Avanzata è applicata ai proiettili</Italian> <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> <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> <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> <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> <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> <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> <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>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Aircraft"> <Package name="Aircraft">
<Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name"> <Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name">
@ -7,7 +7,7 @@
<Spanish>Ráfaga</Spanish> <Spanish>Ráfaga</Spanish>
<Polish>Seria</Polish> <Polish>Seria</Polish>
<Czech>Dávka</Czech> <Czech>Dávka</Czech>
<French>Contre mesure</French> <French>Contre mesures</French>
<Russian>Очередь</Russian> <Russian>Очередь</Russian>
<Hungarian>Sorozat</Hungarian> <Hungarian>Sorozat</Hungarian>
<Portuguese>Rajada</Portuguese> <Portuguese>Rajada</Portuguese>
@ -29,7 +29,7 @@
<English>Open Cargo Door</English> <English>Open Cargo Door</English>
<German>Laderampe öffnen</German> <German>Laderampe öffnen</German>
<Spanish>Abrir compuerta de carga</Spanish> <Spanish>Abrir compuerta de carga</Spanish>
<French>Ourvir la rampe</French> <French>Ouvrir la rampe</French>
<Polish>Otwórz drzwi ładowni</Polish> <Polish>Otwórz drzwi ładowni</Polish>
<Czech>Otevřít nákladní prostor</Czech> <Czech>Otevřít nákladní prostor</Czech>
<Hungarian>Rakodórámpa nyitása</Hungarian> <Hungarian>Rakodórámpa nyitása</Hungarian>

View File

@ -42,31 +42,14 @@
* Public: No * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params [
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", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity",
_scopeBaseAngle = _this select 0; "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed",
_bulletMass = _this select 1; "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel",
_boreHeight = _this select 2; "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude",
_airFriction = _this select 3; "_directionOfFire"
_muzzleVelocity = _this select 4; ];
_temperature = _this select 5; _windSpeed params ["_windSpeed1", "_windSpeed2"];
_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;
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"]; private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
_bulletPos = [0, 0, 0]; _bulletPos = [0, 0, 0];
@ -142,7 +125,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_trueSpeed = vectorMagnitude _trueVelocity; _trueSpeed = vectorMagnitude _trueVelocity;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { 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])) parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
} else { } else {
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation)) ([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation))

View File

@ -17,10 +17,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_gunID", "_restoreMemory", "_updateDisplay"]; params ["_gunID", "_restoreMemory", "_updateDisplay"];
_gunID = _this select 0;
_restoreMemory = _this select 1;
_updateDisplay = _this select 2;
if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {}; if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {};

View File

@ -39,7 +39,7 @@ if (GVAR(showRangeCard)) then {
}; };
GVAR(showRangeCardSetup) call FUNC(show_range_card_setup); GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
GVAR(showSolutionSetup) call FUNC(show_solution_setup); GVAR(showSolutionSetup) call FUNC(show_solution_setup);
GVAR(showTargetData) call FUNC(show_target_data); GVAR(showTargetData) call FUNC(show_target_data);
GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist); GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist); GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer); GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);

View File

@ -21,6 +21,5 @@ GVAR(showGunList) = _this;
if (_this) then { if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 6002); ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 6002);
lbSetCurSel [6000, GVAR(currentGun)]; lbSetCurSel [6000, GVAR(currentGun)];
}; };

View File

@ -21,7 +21,6 @@ GVAR(showTargetRangeAssist) = _this;
if (_this) then { if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 7018); ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 7018);
ctrlSetText [7012, Str(parseNumber(ctrlText 320))]; ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
ctrlSetText [7013, Str(parseNumber(ctrlText 340))]; ctrlSetText [7013, Str(parseNumber(ctrlText 340))];

View File

@ -17,10 +17,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_slopeDistance", "_azimuth", "_inclination"]; params ["_slopeDistance", "_azimuth", "_inclination"];
_slopeDistance = _this select 0;
_azimuth = _this select 1;
_inclination = _this select 2;
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)]; GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)]; GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)];

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="ATragMX"> <Package name="ATragMX">
<Key ID="STR_ACE_ATragMX_Name"> <Key ID="STR_ACE_ATragMX_Name">

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Attach"> <Package name="Attach">
<Key ID="STR_ACE_Attach_AttachDetach"> <Key ID="STR_ACE_Attach_AttachDetach">
@ -90,7 +90,7 @@
<German>Leuchtstab befestigt</German> <German>Leuchtstab befestigt</German>
<Spanish>Barra de luz acoplada</Spanish> <Spanish>Barra de luz acoplada</Spanish>
<Polish>Przyczepiono światło chemiczne</Polish> <Polish>Przyczepiono światło chemiczne</Polish>
<French>Chemlight attachée</French> <French>Cyalume attachée</French>
<Czech>Chemické světlo připnuto</Czech> <Czech>Chemické světlo připnuto</Czech>
<Portuguese>Chemlight Fixada</Portuguese> <Portuguese>Chemlight Fixada</Portuguese>
<Italian>Chemlight attaccata</Italian> <Italian>Chemlight attaccata</Italian>
@ -102,7 +102,7 @@
<German>Leuchtstab entfernt</German> <German>Leuchtstab entfernt</German>
<Spanish>Barra de luz quitada</Spanish> <Spanish>Barra de luz quitada</Spanish>
<Polish>Odczepiono światło chemiczne</Polish> <Polish>Odczepiono światło chemiczne</Polish>
<French>Chemlight détachée</French> <French>Cyalume détachée</French>
<Czech>Chemické světlo odepnuto</Czech> <Czech>Chemické světlo odepnuto</Czech>
<Portuguese>Chemlight Separada</Portuguese> <Portuguese>Chemlight Separada</Portuguese>
<Italian>Chemlight staccata</Italian> <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> <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> <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> <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> <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> <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> <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>

View File

@ -12,7 +12,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params [["_backpack", objNull, [objNull]]]; params [["_backpack", objNull, [objNull, ""]]];
if (_backpack isEqualType objNull) then { if (_backpack isEqualType objNull) then {
_backpack = typeOf _backpack; _backpack = typeOf _backpack;

View File

@ -285,6 +285,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -305,6 +307,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -320,6 +324,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -335,6 +341,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -356,6 +364,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -371,6 +381,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -386,6 +398,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Ballistics"> <Package name="Ballistics">
<!-- MX --> <!-- MX -->

View File

@ -1,5 +1,11 @@
#include "script_component.hpp" #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 //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 //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); ["isNotEscorting", {!(GETVAR(_this select 0,GVAR(isEscorting),false))}] call EFUNC(common,addCanInteractWithCondition);
["isNotHandcuffed", {!(GETVAR(_this select 0,GVAR(isHandcuffed),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); ["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);

View File

@ -5,7 +5,7 @@
<English>Take Prisoner</English> <English>Take Prisoner</English>
<German>Gefangen nehmen</German> <German>Gefangen nehmen</German>
<Spanish>Tomar prisionero</Spanish> <Spanish>Tomar prisionero</Spanish>
<French>Capturer le prisonnier</French> <French>Prendre prisonnier</French>
<Polish>Aresztuj</Polish> <Polish>Aresztuj</Polish>
<Czech>Zajmout osobu</Czech> <Czech>Zajmout osobu</Czech>
<Italian>Arresta il prigioniero</Italian> <Italian>Arresta il prigioniero</Italian>
@ -54,7 +54,7 @@
<German>Du musst ihn zuerst gefangen nehmen.</German> <German>Du musst ihn zuerst gefangen nehmen.</German>
<Spanish>Necesitas hacerle prisionero primero!</Spanish> <Spanish>Necesitas hacerle prisionero primero!</Spanish>
<Polish>Najpierw musisz go aresztować!</Polish> <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> <Czech>Musíš ho nejdříve zajmout!</Czech>
<Italian>Prima devi arrestarlo!</Italian> <Italian>Prima devi arrestarlo!</Italian>
<Portuguese>Você deve tomá-lo como prisioneiro primeiro!</Portuguese> <Portuguese>Você deve tomá-lo como prisioneiro primeiro!</Portuguese>
@ -112,7 +112,7 @@
<Key ID="STR_ACE_Captives_FriskMenuHeader"> <Key ID="STR_ACE_Captives_FriskMenuHeader">
<English>Inventory of frisked person</English> <English>Inventory of frisked person</English>
<German>Inventar der durchsuchten Person</German> <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> <Spanish>Inventario de la persona cacheada</Spanish>
<Hungarian>Motozott személy felszerelése</Hungarian> <Hungarian>Motozott személy felszerelése</Hungarian>
<Czech>Inventář prohledávané osoby</Czech> <Czech>Inventář prohledávané osoby</Czech>
@ -124,7 +124,7 @@
<Key ID="STR_ACE_Captives_FriskPerson"> <Key ID="STR_ACE_Captives_FriskPerson">
<English>Frisk person</English> <English>Frisk person</English>
<German>Person durchsuchen</German> <German>Person durchsuchen</German>
<French>Fouiller</French> <French>Fouiller la personne</French>
<Spanish>Cachear</Spanish> <Spanish>Cachear</Spanish>
<Czech>Prohledávaná osoba</Czech> <Czech>Prohledávaná osoba</Czech>
<Polish>Rewiduj osobę</Polish> <Polish>Rewiduj osobę</Polish>
@ -147,7 +147,7 @@
</Key> </Key>
<Key ID="STR_ACE_Captives_StopSurrendering"> <Key ID="STR_ACE_Captives_StopSurrendering">
<English>Stop Surrendering</English> <English>Stop Surrendering</English>
<French>Annuler la capitulation</French> <French>Annuler la reddition</French>
<German>Den Kampf erneut aufnehmen</German> <German>Den Kampf erneut aufnehmen</German>
<Spanish>Dejar de rendirse</Spanish> <Spanish>Dejar de rendirse</Spanish>
<Portuguese>Parar de se render</Portuguese> <Portuguese>Parar de se render</Portuguese>
@ -190,6 +190,7 @@
<Czech>Spoutat jednotku</Czech> <Czech>Spoutat jednotku</Czech>
<Italian>Metti manette all'unità</Italian> <Italian>Metti manette all'unità</Italian>
<Spanish>Hacer que la unidad esté esposada</Spanish> <Spanish>Hacer que la unidad esté esposada</Spanish>
<French>Rend une unité captive</French>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleHandcuffed_Description"> <Key ID="STR_ACE_Captives_ModuleHandcuffed_Description">
<English>Sync a unit to make them handcuffed.</English> <English>Sync a unit to make them handcuffed.</English>
@ -200,6 +201,7 @@
<Czech>Synchronizovat s jednotkou, která má být v poutech.</Czech> <Czech>Synchronizovat s jednotkou, která má být v poutech.</Czech>
<Italian>Sincronizza un'unità per metterle le manette.</Italian> <Italian>Sincronizza un'unità per metterle le manette.</Italian>
<Spanish>Sincroniza una unidad para hacer que esté esposada.</Spanish> <Spanish>Sincroniza una unidad para hacer que esté esposada.</Spanish>
<French>Synchronisez une unité pour la rendre captive.</French>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName"> <Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
<English>Captives Settings</English> <English>Captives Settings</English>
@ -208,7 +210,7 @@
<Czech>Nastavení zajatce</Czech> <Czech>Nastavení zajatce</Czech>
<German>Gefangenen-Einstellungen</German> <German>Gefangenen-Einstellungen</German>
<Portuguese>Ajustes de prisioneiros</Portuguese> <Portuguese>Ajustes de prisioneiros</Portuguese>
<French>Options de capitulation</French> <French>Options de reddition</French>
<Hungarian>Fogoly-beállítások</Hungarian> <Hungarian>Fogoly-beállítások</Hungarian>
<Russian>Настройки пленения</Russian> <Russian>Настройки пленения</Russian>
<Italian>Impostazioni Prigionieri</Italian> <Italian>Impostazioni Prigionieri</Italian>
@ -220,7 +222,7 @@
<Czech>Toto kontroluje nastavení kapitulace a pout</Czech> <Czech>Toto kontroluje nastavení kapitulace a pout</Czech>
<German>Einstellungen zur Kapitulation und Kabelbindern</German> <German>Einstellungen zur Kapitulation und Kabelbindern</German>
<Portuguese>Controla as configurações de rendição e abraçadeiras</Portuguese> <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> <Hungarian>Szabályozza a kapituláció és bilincselés beállításait</Hungarian>
<Russian>Управляет настройками сдачи в плен и связывания</Russian> <Russian>Управляет настройками сдачи в плен и связывания</Russian>
<Italian>Controlla le impostazioni per la resa e le manette</Italian> <Italian>Controlla le impostazioni per la resa e le manette</Italian>
@ -232,7 +234,7 @@
<Czech>Může spoutat spolubojovníky</Czech> <Czech>Může spoutat spolubojovníky</Czech>
<German>Kann Kameraden fesseln</German> <German>Kann Kameraden fesseln</German>
<Portuguese>Pode algemar o próprio lado</Portuguese> <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> <Hungarian>Saját oldal megbilincselhető</Hungarian>
<Russian>Связать союзника</Russian> <Russian>Связать союзника</Russian>
<Italian>Puoi ammanettare unità alleate</Italian> <Italian>Puoi ammanettare unità alleate</Italian>
@ -256,7 +258,7 @@
<Czech>Povolit vzdávání</Czech> <Czech>Povolit vzdávání</Czech>
<German>Kapitulation erlauben</German> <German>Kapitulation erlauben</German>
<Portuguese>Permite rendição</Portuguese> <Portuguese>Permite rendição</Portuguese>
<French>Permettre la capitulation</French> <French>Permettre la reddition</French>
<Hungarian>Kapituláció engedélyezése</Hungarian> <Hungarian>Kapituláció engedélyezése</Hungarian>
<Russian>Сдаться в плен</Russian> <Russian>Сдаться в плен</Russian>
<Italian>Permetti Resa</Italian> <Italian>Permetti Resa</Italian>
@ -282,6 +284,7 @@
<Spanish>Requiere rendición</Spanish> <Spanish>Requiere rendición</Spanish>
<Czech>Vzdávání vyžadováno</Czech> <Czech>Vzdávání vyžadováno</Czech>
<Italian>Richiedi Resa</Italian> <Italian>Richiedi Resa</Italian>
<French>Requiert la reddition</French>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description"> <Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description">
<English>Require Players to surrender before they can be arrested</English> <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> <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> <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> <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>
<Key ID="STR_ACE_Captives_SurrenderOnly"> <Key ID="STR_ACE_Captives_SurrenderOnly">
<English>Surrendering only</English> <English>Surrendering only</English>
@ -302,6 +306,7 @@
<Spanish>Solo rendición</Spanish> <Spanish>Solo rendición</Spanish>
<Czech>Pouze vzdávání</Czech> <Czech>Pouze vzdávání</Czech>
<Italian>Solo Resa</Italian> <Italian>Solo Resa</Italian>
<French>Reddition seulement</French>
</Key> </Key>
<Key ID="STR_ACE_Captives_SurrenderOrNoWeapon"> <Key ID="STR_ACE_Captives_SurrenderOrNoWeapon">
<English>Surrendering or No weapon</English> <English>Surrendering or No weapon</English>
@ -312,6 +317,7 @@
<Spanish>Rendición o desarme</Spanish> <Spanish>Rendición o desarme</Spanish>
<Czech>Vzdávání nebo beze zbraně</Czech> <Czech>Vzdávání nebo beze zbraně</Czech>
<Italian>Resa o senza armi</Italian> <Italian>Resa o senza armi</Italian>
<French>Capitulation ou desarmé</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -27,27 +27,7 @@ class Extended_Killed_EventHandlers {
//Need initPost or we have problems with setVariable with 'ACE_Cargo' //Need initPost or we have problems with setVariable with 'ACE_Cargo'
class Extended_InitPost_EventHandlers { class Extended_InitPost_EventHandlers {
class StaticWeapon { class ThingX {
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 ADDON { class ADDON {
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); 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)); init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
}; };
}; };
class RoadCone_F { class PlasticCase_01_base_F {
class ADDON { class ADDON {
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
}; };
}; };
class Car { class LandVehicle {
class ADDON { class ADDON {
init = QUOTE(_this call DFUNC(initVehicle)); init = QUOTE(_this call DFUNC(initVehicle));
}; };
}; };
class Tank { class Air {
class ADDON {
init = QUOTE(_this call DFUNC(initVehicle));
};
};
class Helicopter {
class ADDON {
init = QUOTE(_this call DFUNC(initVehicle));
};
};
class Plane {
class ADDON { class ADDON {
init = QUOTE(_this call DFUNC(initVehicle)); init = QUOTE(_this call DFUNC(initVehicle));
}; };
@ -87,16 +57,6 @@ class Extended_InitPost_EventHandlers {
init = QUOTE(_this call DFUNC(initVehicle)); 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 ACE_ConcertinaWireCoil {
class ADDON { class ADDON {
init = QUOTE(_this call DFUNC(initObject)); init = QUOTE(_this call DFUNC(initObject));

View File

@ -1,3 +1,6 @@
class CBA_Extended_EventHandlers;
class CfgVehicles { class CfgVehicles {
class Logic; class Logic;
class Module_F: Logic { class Module_F: Logic {
@ -191,12 +194,69 @@ class CfgVehicles {
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
}; };
class Heli_Transport_02_base_F; class Helicopter_Base_H;
class I_Heli_Transport_02_F : Heli_Transport_02_base_F { 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(space) = 20;
GVAR(hasCargo) = 1; 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 // jets
class Plane: Air { class Plane: Air {
GVAR(space) = 0; GVAR(space) = 0;
@ -204,7 +264,6 @@ class CfgVehicles {
}; };
// autonomus // autonomus
class Helicopter_Base_F;
class UAV_01_base_F: Helicopter_Base_F { class UAV_01_base_F: Helicopter_Base_F {
GVAR(space) = 0; GVAR(space) = 0;
GVAR(hasCargo) = 0; GVAR(hasCargo) = 0;
@ -245,6 +304,25 @@ class CfgVehicles {
GVAR(canLoad) = 1; 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 StaticMortar;
class Mortar_01_base_F: StaticMortar { class Mortar_01_base_F: StaticMortar {
GVAR(size) = 2; // 1 = small, 2 = large GVAR(size) = 2; // 1 = small, 2 = large
@ -253,6 +331,7 @@ class CfgVehicles {
// Ammo boxes // Ammo boxes
class ThingX; class ThingX;
class Items_base_F;
class ReammoBox_F: ThingX { class ReammoBox_F: ThingX {
GVAR(size) = 2; // 1 = small, 2 = large GVAR(size) = 2; // 1 = small, 2 = large
GVAR(canLoad) = 1; GVAR(canLoad) = 1;
@ -275,6 +354,23 @@ class CfgVehicles {
class Slingload_01_Base_F: Slingload_base_F { //Huron 20ft containers class Slingload_01_Base_F: Slingload_base_F { //Huron 20ft containers
GVAR(canLoad) = 0; 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 // objects
class RoadCone_F: ThingX { class RoadCone_F: ThingX {
GVAR(size) = 1; GVAR(size) = 1;
@ -284,14 +380,16 @@ class CfgVehicles {
GVAR(size) = 2; GVAR(size) = 2;
}; };
class Scrapyard_base_F; class Scrapyard_base_F;
class Land_PaperBox_closed_F: Scrapyard_base_F { class Land_PaperBox_closed_F: Scrapyard_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 10; GVAR(space) = 10;
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
GVAR(size) = 11; GVAR(size) = 11;
GVAR(canLoad) = 1; GVAR(canLoad) = 1;
XEH_ENABLED;
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {
@ -323,163 +421,253 @@ class CfgVehicles {
}; };
}; };
class Cargo10_base_F: Cargo_base_F { class Cargo10_base_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 14; GVAR(space) = 14;
GVAR(size) = 15; GVAR(size) = 15;
XEH_ENABLED;
}; };
class Land_Cargo20_blue_F: Cargo_base_F { class Land_Cargo20_blue_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_brick_red_F: Cargo_base_F { class Land_Cargo20_brick_red_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_cyan_F: Cargo_base_F { class Land_Cargo20_cyan_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_grey_F: Cargo_base_F { class Land_Cargo20_grey_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_light_blue_F: Cargo_base_F { class Land_Cargo20_light_blue_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_light_green_F: Cargo_base_F { class Land_Cargo20_light_green_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_military_green_F: Cargo_base_F { class Land_Cargo20_military_green_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Ruins_F; class Ruins_F;
class Land_Cargo20_military_ruins_F: Ruins_F { class Land_Cargo20_military_ruins_F: Ruins_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_orange_F: Cargo_base_F { class Land_Cargo20_orange_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_red_F: Cargo_base_F { class Land_Cargo20_red_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_sand_F: Cargo_base_F { class Land_Cargo20_sand_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_vr_F: Cargo_base_F { class Land_Cargo20_vr_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_white_F: Cargo_base_F { class Land_Cargo20_white_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo20_yellow_F: Cargo_base_F { class Land_Cargo20_yellow_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED;
}; };
class Land_Cargo40_blue_F: Cargo_base_F { class Land_Cargo40_blue_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_brick_red_F: Cargo_base_F { class Land_Cargo40_brick_red_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_cyan_F: Cargo_base_F { class Land_Cargo40_cyan_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_grey_F: Cargo_base_F { class Land_Cargo40_grey_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_light_blue_F: Cargo_base_F { class Land_Cargo40_light_blue_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_light_green_F: Cargo_base_F { class Land_Cargo40_light_green_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_military_green_F: Cargo_base_F { class Land_Cargo40_military_green_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_military_ruins_F: Ruins_F { class Land_Cargo40_military_ruins_F: Ruins_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_orange_F: Cargo_base_F { class Land_Cargo40_orange_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_red_F: Cargo_base_F { class Land_Cargo40_red_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_sand_F: Cargo_base_F { class Land_Cargo40_sand_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_vr_F: Cargo_base_F { class Land_Cargo40_vr_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_white_F: Cargo_base_F { class Land_Cargo40_white_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
class Land_Cargo40_yellow_F: Cargo_base_F { class Land_Cargo40_yellow_F: Cargo_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED;
}; };
// small // small
class Land_CargoBox_V1_F: ThingX { class Land_CargoBox_V1_F: ThingX {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(space) = 7; GVAR(space) = 7;
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
GVAR(size) = 7; GVAR(size) = 7;
XEH_ENABLED;
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {

View File

@ -20,6 +20,8 @@ TRACE_1("params", _vehicle);
private _type = typeOf _vehicle; private _type = typeOf _vehicle;
if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
if (isServer) then { if (isServer) then {
{ {
if (isClass _x) then { if (isClass _x) then {
@ -38,7 +40,6 @@ if (_type in GVAR(initializedVehicleClasses)) exitWith {};
GVAR(initializedVehicleClasses) pushBack _type; GVAR(initializedVehicleClasses) pushBack _type;
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
TRACE_1("Adding unload cargo action to class", _type); TRACE_1("Adding unload cargo action to class", _type);

View File

@ -10,6 +10,7 @@
<Czech>Naložit</Czech> <Czech>Naložit</Czech>
<Spanish>Cargar</Spanish> <Spanish>Cargar</Spanish>
<Italian>Carica</Italian> <Italian>Carica</Italian>
<French>Charger</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_unloadObject"> <Key ID="STR_ACE_Cargo_unloadObject">
<English>Unload</English> <English>Unload</English>
@ -20,6 +21,7 @@
<Czech>Vyložit</Czech> <Czech>Vyložit</Czech>
<Spanish>Descargar</Spanish> <Spanish>Descargar</Spanish>
<Italian>Scarica</Italian> <Italian>Scarica</Italian>
<French>Décharger</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_openMenu"> <Key ID="STR_ACE_Cargo_openMenu">
<English>Cargo</English> <English>Cargo</English>
@ -30,6 +32,7 @@
<Czech>Náklad</Czech> <Czech>Náklad</Czech>
<Spanish>Carga</Spanish> <Spanish>Carga</Spanish>
<Italian>Cargo</Italian> <Italian>Cargo</Italian>
<French>Cargaison</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_cargoMenu"> <Key ID="STR_ACE_Cargo_cargoMenu">
<English>Cargo Menu</English> <English>Cargo Menu</English>
@ -40,6 +43,7 @@
<Czech>Menu nákladu</Czech> <Czech>Menu nákladu</Czech>
<Spanish>Menu de carga</Spanish> <Spanish>Menu de carga</Spanish>
<Italian>Menù Cargo</Italian> <Italian>Menù Cargo</Italian>
<French>Menu de cargaison</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_labelSpace"> <Key ID="STR_ACE_Cargo_labelSpace">
<English>Cargo space left: %1</English> <English>Cargo space left: %1</English>
@ -50,6 +54,7 @@
<Czech>Zbývající prostor: %1</Czech> <Czech>Zbývající prostor: %1</Czech>
<Spanish>Espacio de carga restante: %1</Spanish> <Spanish>Espacio de carga restante: %1</Spanish>
<Italian>Spazio cargo rimanente: %1</Italian> <Italian>Spazio cargo rimanente: %1</Italian>
<French>Espace de cargaison restant : %1</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enable"> <Key ID="STR_ACE_Cargo_ModuleSettings_enable">
<English>Enable Cargo</English> <English>Enable Cargo</English>
@ -60,6 +65,7 @@
<Czech>Povolit náklad</Czech> <Czech>Povolit náklad</Czech>
<Spanish>Habilitar carga</Spanish> <Spanish>Habilitar carga</Spanish>
<Italian>Abilita Cargo</Italian> <Italian>Abilita Cargo</Italian>
<French>Activer la cargaison</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description"> <Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description">
<English>Enable the load in cargo module</English> <English>Enable the load in cargo module</English>
@ -70,6 +76,7 @@
<Spanish>Habilitar la carga en el módulo de carga</Spanish> <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> <Czech>Umožňuje naložit předměty do nákladového prostoru vozidla</Czech>
<Italian>Abilita il modulo di caricamento in cargo</Italian> <Italian>Abilita il modulo di caricamento in cargo</Italian>
<French>Activer le chargement dans le module de cargaison.</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_SettingsModule_DisplayName"> <Key ID="STR_ACE_Cargo_SettingsModule_DisplayName">
<English>Cargo Settings</English> <English>Cargo Settings</English>
@ -80,6 +87,7 @@
<Czech>Nastavení nákladu</Czech> <Czech>Nastavení nákladu</Czech>
<Spanish>Ajustes de carga</Spanish> <Spanish>Ajustes de carga</Spanish>
<Italian>Impostazioni Cargo</Italian> <Italian>Impostazioni Cargo</Italian>
<French>Réglages de cargaison</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_SettingsModule_Description"> <Key ID="STR_ACE_Cargo_SettingsModule_Description">
<English>Configure the cargo module settings</English> <English>Configure the cargo module settings</English>
@ -90,6 +98,7 @@
<Spanish>Configure los ajustes del módulo de carga</Spanish> <Spanish>Configure los ajustes del módulo de carga</Spanish>
<Czech>Konfigurace nákladního modulu</Czech> <Czech>Konfigurace nákladního modulu</Czech>
<Italian>Configura le impostazioni del modulo cargo</Italian> <Italian>Configura le impostazioni del modulo cargo</Italian>
<French>Configurer les réglages du module de cargaison</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_LoadedItem"> <Key ID="STR_ACE_Cargo_LoadedItem">
<English>%1&lt;br/&gt;loaded into&lt;br/&gt;%2</English> <English>%1&lt;br/&gt;loaded into&lt;br/&gt;%2</English>
@ -124,6 +133,7 @@
<Russian>Погрузка</Russian> <Russian>Погрузка</Russian>
<Italian>Caricando</Italian> <Italian>Caricando</Italian>
<Spanish>Cargando</Spanish> <Spanish>Cargando</Spanish>
<French>Chargement de la cargaison</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_UnloadingItem"> <Key ID="STR_ACE_Cargo_UnloadingItem">
<English>Unloading Cargo</English> <English>Unloading Cargo</English>
@ -134,6 +144,7 @@
<Russian>Выгрузка</Russian> <Russian>Выгрузка</Russian>
<Italian>Scaricando</Italian> <Italian>Scaricando</Italian>
<Spanish>Descargando</Spanish> <Spanish>Descargando</Spanish>
<French>Déchargement de la cargaison</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_LoadingFailed"> <Key ID="STR_ACE_Cargo_LoadingFailed">
<English>%1&lt;br/&gt;could not be loaded</English> <English>%1&lt;br/&gt;could not be loaded</English>
@ -144,6 +155,7 @@
<Russian>%1&lt;br/&gt;не может быть погружен</Russian> <Russian>%1&lt;br/&gt;не может быть погружен</Russian>
<Italian>%1&lt;br/&gt;non può essere caricato</Italian> <Italian>%1&lt;br/&gt;non può essere caricato</Italian>
<Spanish>%1&lt;br/&gt;no pudo ser cargado</Spanish> <Spanish>%1&lt;br/&gt;no pudo ser cargado</Spanish>
<French>%1&lt;br /&gt; n'a pas pu être chargé</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_UnloadingFailed"> <Key ID="STR_ACE_Cargo_UnloadingFailed">
<English>%1&lt;br/&gt;could not be unloaded</English> <English>%1&lt;br/&gt;could not be unloaded</English>
@ -154,6 +166,7 @@
<Russian>%1&lt;br/&gt;не может быть выгружен</Russian> <Russian>%1&lt;br/&gt;не может быть выгружен</Russian>
<Italian>%1&lt;br/&gt;non può essere scaricato</Italian> <Italian>%1&lt;br/&gt;non può essere scaricato</Italian>
<Spanish>%1&lt;br/&gt;no pudo ser descargado</Spanish> <Spanish>%1&lt;br/&gt;no pudo ser descargado</Spanish>
<French>%1&lt;br /&gt; n'a pas pu être déchargé</French>
</Key> </Key>
<Key ID="STR_ACE_Cargo_makeLoadable_displayName"> <Key ID="STR_ACE_Cargo_makeLoadable_displayName">
<English>Make Object Loadable</English> <English>Make Object Loadable</English>
@ -161,6 +174,8 @@
<Polish>Ustaw jako ładowalny</Polish> <Polish>Ustaw jako ładowalny</Polish>
<Italian>Rendi oggetto caricabile</Italian> <Italian>Rendi oggetto caricabile</Italian>
<Spanish>Hacer objeto cargable</Spanish> <Spanish>Hacer objeto cargable</Spanish>
<French>Rendre l'objet chargeable</French>
<Czech>Vytvořit objekt nakladatelným</Czech>
</Key> </Key>
<Key ID="STR_ACE_Cargo_makeLoadable_description"> <Key ID="STR_ACE_Cargo_makeLoadable_description">
<English>Sets the synced object as loadable by the cargo system.</English> <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> <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> <Italian>Imposta l'oggetto sincronizzato come caricabile dal sistema cargo</Italian>
<Spanish>Sincronizar un objecto para hacerlo cargable.</Spanish> <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>
<Key ID="STR_ACE_Cargo_makeLoadable_setSize_displayName"> <Key ID="STR_ACE_Cargo_makeLoadable_setSize_displayName">
<English>Object's Size</English> <English>Object's Size</English>
@ -175,6 +192,8 @@
<Polish>Rozmiar obiektu</Polish> <Polish>Rozmiar obiektu</Polish>
<Italian>Dimensioni dell'oggetto</Italian> <Italian>Dimensioni dell'oggetto</Italian>
<Spanish>Tamaño del objeto</Spanish> <Spanish>Tamaño del objeto</Spanish>
<French>Taille de l'objet</French>
<Czech>Velikost objektu</Czech>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -49,7 +49,7 @@ class ACE_Settings {
description = CSTRING(SettingFeedbackIconsDesc); description = CSTRING(SettingFeedbackIconsDesc);
values[] = {ECSTRING(optionsmenu,Hide), ECSTRING(optionsmenu,TopRightDown), ECSTRING(optionsmenu,TopRightLeft), ECSTRING(optionsmenu,TopLeftDown), ECSTRING(optionsmenu,TopLeftRight)}; values[] = {ECSTRING(optionsmenu,Hide), ECSTRING(optionsmenu,TopRightDown), ECSTRING(optionsmenu,TopRightLeft), ECSTRING(optionsmenu,TopLeftDown), ECSTRING(optionsmenu,TopLeftRight)};
}; };
class GVAR(SettingProgressBarLocation) { class GVAR(settingProgressBarLocation) {
value = 0; value = 0;
typeName = "SCALAR"; typeName = "SCALAR";
force = 0; force = 0;

View File

@ -21,7 +21,7 @@ class Extended_PostInit_EventHandlers {
class Extended_DisplayLoad_EventHandlers { class Extended_DisplayLoad_EventHandlers {
class RscDisplayMission { 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 CAManBase {
class GVAR(setName) { 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) { class GVAR(muteUnit) {
init = QUOTE(_this call FUNC(muteUnitHandleInitPost)); init = QUOTE(_this call FUNC(muteUnitHandleInitPost));
@ -76,3 +76,9 @@ class Extended_FiredBIS_EventHandlers {
ADDON = QUOTE(_this call FUNC(firedEH)); ADDON = QUOTE(_this call FUNC(firedEH));
}; };
}; };
class Extended_Engine_EventHandlers {
class All {
ADDON = QUOTE(_this call FUNC(handleEngine));
};
};

View File

@ -87,6 +87,7 @@ PREP(getWindDirection);
PREP(getZoom); PREP(getZoom);
PREP(goKneeling); PREP(goKneeling);
PREP(hadamardProduct); PREP(hadamardProduct);
PREP(handleEngine);
PREP(handleModifierKey); PREP(handleModifierKey);
PREP(handleModifierKeyUp); PREP(handleModifierKeyUp);
PREP(handleScrollWheel); PREP(handleScrollWheel);

View File

@ -1,6 +1,4 @@
#include "script_component.hpp" #include "script_component.hpp"
GVAR(ScrollWheelFrame) = diag_frameno;
call COMPILE_FILE(init_handleScrollWheel); call COMPILE_FILE(init_handleScrollWheel);
call COMPILE_FILE(init_handleModifierKey); call COMPILE_FILE(init_handleModifierKey);

View File

@ -64,6 +64,7 @@
["blockSprint", false, []] call FUNC(statusEffect_addType); ["blockSprint", false, []] call FUNC(statusEffect_addType);
["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] 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); ["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType);
["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType);
["forceWalk", { ["forceWalk", {
params ["_object", "_set"]; params ["_object", "_set"];
@ -90,6 +91,11 @@
_object allowDamage (_set == 0); _object allowDamage (_set == 0);
}; };
}] call FUNC(addEventHandler); }] 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 //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 //This variable is used for isPlayer checks
@ -133,6 +139,7 @@ if (isServer) then {
["fixFloating", FUNC(fixFloating)] call FUNC(addEventhandler); ["fixFloating", FUNC(fixFloating)] call FUNC(addEventhandler);
["fixPosition", FUNC(fixPosition)] call FUNC(addEventhandler); ["fixPosition", FUNC(fixPosition)] call FUNC(addEventhandler);
["loadPersonEvent", FUNC(loadPersonLocal)] call FUNC(addEventhandler);
["unloadPersonEvent", FUNC(unloadPersonLocal)] call FUNC(addEventhandler); ["unloadPersonEvent", FUNC(unloadPersonLocal)] call FUNC(addEventhandler);
["lockVehicle", { ["lockVehicle", {
@ -146,12 +153,15 @@ if (isServer) then {
["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler); ["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler);
["setFuel", {(_this select 0) setFuel (_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); ["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler);
["selectLeader", {(_this select 0) selectLeader (_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); ["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call FUNC(addEventHandler);
["playMove", {(_this select 0) playMove (_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); ["playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call FUNC(addEventHandler);
["switchMove", {(_this select 0) switchMove (_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 { if (isServer) then {
["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler); ["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler);
@ -323,19 +333,13 @@ enableCamShake true;
GVAR(OldPlayerVehicle) = vehicle objNull; GVAR(OldPlayerVehicle) = vehicle objNull;
GVAR(OldPlayerTurret) = [objNull] call FUNC(getTurretIndex); GVAR(OldPlayerTurret) = [objNull] call FUNC(getTurretIndex);
GVAR(OldPlayerWeapon) = currentWeapon objNull; GVAR(OldPlayerWeapon) = currentWeapon objNull;
GVAR(OldPlayerInventory) = [objNull] call FUNC(getAllGear); GVAR(OldPlayerInventory) = [];
GVAR(OldPlayerVisionMode) = currentVisionMode objNull; GVAR(OldPlayerVisionMode) = currentVisionMode objNull;
GVAR(OldCameraView) = ""; GVAR(OldCameraView) = "";
GVAR(OldVisibleMap) = false; GVAR(OldVisibleMap) = false;
GVAR(OldInventoryDisplayIsOpen) = nil; //@todo check this GVAR(OldInventoryDisplayIsOpen) = nil; //@todo check this
GVAR(OldIsCamera) = false; 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 // PFH to raise varios events
[{ [{
BEGIN_COUNTER(stateChecker); BEGIN_COUNTER(stateChecker);
@ -377,11 +381,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
}; };
// "playerInventoryChanged" event // "playerInventoryChanged" event
_data = [ACE_player] call FUNC(getAllGear); _data = getUnitLoadout ACE_player;
if !(_data isEqualTo GVAR(OldPlayerInventory)) then { if !(_data isEqualTo GVAR(OldPlayerInventory)) then {
// Raise ACE event locally // Raise ACE event locally
GVAR(OldPlayerInventory) = _data; GVAR(OldPlayerInventory) = _data;
["playerInventoryChanged", [ACE_player, _data]] call FUNC(localEvent); ["playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear) ]] call FUNC(localEvent);
}; };
// "playerVisionModeChanged" event // "playerVisionModeChanged" event
@ -442,6 +446,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
// Add various canInteractWith conditions // Add various canInteractWith conditions
////////////////////////////////////////////////// //////////////////////////////////////////////////
["isNotDead", {
params ["_unit", "_target"];
alive _unit
}] call FUNC(addCanInteractWithCondition);
["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition); ["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition);
["isNotInside", { ["isNotInside", {

View File

@ -47,29 +47,12 @@ GVAR(statusEffect_Names) = [];
GVAR(statusEffect_isGlobal) = []; 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; ACE_player = objNull;
uiNamespace setVariable ["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 // Time handling
////////////////////////////////////////////////// //////////////////////////////////////////////////

View File

@ -23,7 +23,7 @@ if (isServer) then {
params ["_eventName", "_client"]; params ["_eventName", "_client"];
if (!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith { 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 false
}; };

View File

@ -17,7 +17,7 @@
params ["_name", "_args", "_ttl"]; params ["_name", "_args", "_ttl"];
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { 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 false
}; };

View File

@ -45,7 +45,7 @@ if (_actionID == -1) then {
private _addAction = call compile format [ 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, nil,
-1, -1,
false, false,

View File

@ -52,7 +52,7 @@ _actionIDs pushBack _id;
private _addAction = call compile format [ private _addAction = call compile format [
"[ "[
'%2', '%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, nil,
%4, %4,
false, false,

View File

@ -15,6 +15,8 @@
params ["_statement"]; params ["_statement"];
ACE_DEPRECATED("ace_common_fnc_addScrollWheelEventHandler", "3.8.0", "'MouseZChanged' Display EventHandler");
if (_statement isEqualType "") then { if (_statement isEqualType "") then {
_statement = compile _statement; _statement = compile _statement;
}; };

View File

@ -10,6 +10,9 @@
* Return Value: * Return Value:
* Boolean of success <BOOL> * Boolean of success <BOOL>
* *
* Example:
* ["myEvent", {_this call x}, 0] call ace_common_fnc_addSyncedEventHandler
*
* Public: Yes * Public: Yes
*/ */
#include "script_component.hpp" #include "script_component.hpp"
@ -17,7 +20,7 @@
params ["_name", "_handler", ["_ttl", 0]]; params ["_name", "_handler", ["_ttl", 0]];
if (HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { if (HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
ACE_LOGERROR("Duplicate synced event creation."); ACE_LOGERROR_1("Duplicate synced event [%1] creation.",_name);
false false
}; };

View File

@ -29,39 +29,17 @@ GVAR(AssignedItemsShownItems) = [
]; ];
["playerInventoryChanged", { ["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]; 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"},
if !(_x in GVAR(AssignedItems)) then { !((_assignedItems select 4) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 4 >> "ACE_hideItemType") != "watch"},
GVAR(AssignedItems) pushBack _x; !((_assignedItems select 2) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 2 >> "ACE_hideItemType") != "radio"},
GVAR(AssignedItemsInfo) pushBack toLower getText (configFile >> "CfgWeapons" >> _x >> "ACE_hideItemType"); !((_assignedItems select 1) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 1 >> "ACE_hideItemType") != "gps"}
}; ];
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) params ["_showMap", "_showCompass", "_showWatch", "_showRadio", "_showGPS"]; GVAR(AssignedItemsShownItems) params ["_showMap", "_showCompass", "_showWatch", "_showRadio", "_showGPS"];

View File

@ -19,6 +19,18 @@ private _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "version
ACE_LOGINFO_1("ACE is version %1.",_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 = activatedAddons; // broken with High-Command module, see #2134
private _addons = "true" configClasses (configFile >> "CfgPatches");// private _addons = "true" configClasses (configFile >> "CfgPatches");//
_addons = _addons apply {toLower configName _x};// _addons = _addons apply {toLower configName _x};//

View File

@ -12,12 +12,11 @@
*/ */
#include "script_component.hpp" #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; _code
_function deleteAt 0;
_function deleteAt (count _function - 1);
toString _function // return

View File

@ -92,6 +92,15 @@ while {_rangeToCheck < _maxDistance} do {
private _point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.1]; 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 _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, (_radiusOfItem + 0.5)];
private _testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL]; 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 { if (!(_testIntersections isEqualTo [])) exitWith {
TRACE_2("collision low/high",_roundAGL,_testIntersections); TRACE_2("collision low/high",_roundAGL,_testIntersections);
_roundPointIsValid = false; _roundPointIsValid = false;

View File

@ -16,6 +16,16 @@
// setVectorUp requires local object // setVectorUp requires local object
if (!local _this) exitWith {}; 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; private _position = getPos _this;
// don't place the object below the ground // don't place the object below the ground

View File

@ -33,7 +33,11 @@
*/ */
#include "script_component.hpp" #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 {[ if (isNull _unit) exitWith {[
"", "",

View File

@ -22,27 +22,81 @@ private _long = getNumber (configFile >> "CfgWorlds" >> _map >> "longitude");
private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude"); private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude");
private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset"); private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset");
if (_map in ["Chernarus", "Bootcamp_ACR", "Woodland_ACR", "utes"]) then { _lat = 50; _altitude = 0; }; _map = toLower _map;
if (_map in ["Altis", "Stratis"]) then { _lat = 40; _altitude = 0; }; if (_map in ["abbottabad"]) then { _lat = 34; _altitude = 1256; }; //Abbottabad elevation 1256m (Wikipedia)
if (_map in ["Takistan", "Zargabad", "Mountains_ACR"]) then { _lat = 35; _altitude = 2000; }; if (_map in ["abramia"]) then { _lat = 60; _altitude = 0; };
if (_map in ["Shapur_BAF", "ProvingGrounds_PMC"]) then { _lat = 35; _altitude = 100; }; 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 ["fallujah"]) then { _lat = 33; _altitude = 0; };
if (_map in ["fata", "Abbottabad"]) then { _lat = 30; _altitude = 1000; }; if (_map in ["fata"]) then { _lat = 33; _altitude = 1347; };
if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; }; if (_map in ["gorgona"]) then { _lat = 43; _altitude = 0; };
if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; }; if (_map in ["hellskitchen", "hellskitchens"]) then { _lat = 32; _altitude = 900; }; //Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia)
if (_map in ["Bornholm"]) then { _lat = 55; _altitude = 0; }; if (_map in ["hindukush"]) then { _lat = 36; _altitude = 0; };
if (_map in ["Imrali"]) then { _lat = 40; _altitude = 0; }; if (_map in ["imrali", "imralispring"]) then { _lat = 40; _altitude = 0; };
if (_map in ["Caribou"]) then { _lat = 68; _altitude = 0; }; if (_map in ["intro"]) then { _lat = 40; _altitude = 0; };
if (_map in ["Namalsk"]) then { _lat = 65; _altitude = 0; }; if (_map in ["isladuala3"]) then { _lat = -19; _altitude = 0; };
if (_map in ["MCN_Aliabad"]) then { _lat = 36; _altitude = 0; }; if (_map in ["jacobi"]) then { _lat = 34; _altitude = 2000; }; //default elevationOffset
if (_map in ["Clafghan"]) then { _lat = 34; _altitude = 640; }; if (_map in ["kapaulio"]) then { _lat = 0; _altitude = 0; };
if (_map in ["Sangin", "hellskitchen"]) then { _lat = 32; _altitude = 0; }; if (_map in ["kerama"]) then { _lat = 26; _altitude = 0; }; //Kerama Islands, Japan - default elevationOffset
if (_map in ["Sara"]) then { _lat = 40; _altitude = 0; }; 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 ["reshmaan"]) then { _lat = 35; _altitude = 2000; };
if (_map in ["Thirsk"]) then { _lat = 65; _altitude = 0; }; if (_map in ["sara", "sara_dbe1"]) then { _lat = 40; _altitude = 0; };
if (_map in ["lingor"]) then { _lat = -4; _altitude = 0; }; if (_map in ["saralite"]) then { _lat = 40; _altitude = 0; };
if (_map in ["Panthera3"]) then { _lat = 46; _altitude = 0; }; if (_map in ["sb3"]) then { _lat = 53; _altitude = 25; }; //TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset
if (_map in ["Kunduz"]) then { _lat = 37; _altitude = 400; }; 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 _UTM = [_long,_lat] call BIS_fnc_posDegToUTM;
private _easting = _UTM select 0; private _easting = _UTM select 0;

View File

@ -18,7 +18,7 @@ private _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles")
{ {
if (_x == "this") then { if (_x == "this") then {
_muzzles set [_forEachIndex, _weapon]; _muzzles set [_forEachIndex, configName (configFile >> "CfgWeapons" >> _weapon)];
}; };
} forEach _muzzles; } forEach _muzzles;

View File

@ -4,7 +4,7 @@
* *
* Arguments: * Arguments:
* 0: unit <OBJECT> * 0: unit <OBJECT>
* 1: weapon <STRING> * 1: weapon (optional, default: units current weapon) <STRING>
* *
* Return Value: * Return Value:
* 0: Attachements <ARRAY> * 0: Attachements <ARRAY>
@ -16,21 +16,19 @@
*/ */
#include "script_component.hpp" #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 _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 // get loaded magazines and ammo
private _magazines = []; private _magazines = _muzzles apply {""};
private _ammo = []; private _ammo = _muzzles apply {0};
{
_magazines pushBack "";
_ammo pushBack 0;
false
} count _muzzles;
{ {
if (_x select 2) then { if (_x select 2) then {
@ -44,6 +42,4 @@ private _ammo = [];
false false
} count magazinesAmmoFull _unit; } count magazinesAmmoFull _unit;
_weaponInfo append [_muzzles, _magazines, _ammo]; [_attachments, _muzzles, _magazines, _ammo];
_weaponInfo

View 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;
};

View File

@ -12,11 +12,6 @@
*/ */
#include "script_component.hpp" #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; [_this select 1] call _x;
false false

View File

@ -21,33 +21,18 @@ private _vehicle = objNull;
if (!([_caller, _unit, ["isNotDragging", "isNotCarrying"]] call FUNC(canInteractWith)) || {_caller == _unit}) exitWith {_vehicle}; 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; TRACE_1("",_x);
} else { if ((_x emptyPositions "cargo" > 0) || {_x emptyPositions "gunner" > 0}) exitWith {
private _loadair = nearestObject [_unit, "Air"]; _vehicle = _x;
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;
};
};
}; };
}; } forEach _nearVehicles;
if (!isNull _vehicle) then { if (!isNull _vehicle) then {
[_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide); [_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 _vehicle

View File

@ -39,7 +39,7 @@ private _fnc_parseConfigForDisplayNames = {
} else { } else {
private _value = missionNamespace getVariable [_name, -1]; private _value = missionNamespace getVariable [_name, -1];
if ((_value < 0) || {_value >= (count _values)}) then { 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);
}; };
}; };
}; };

View File

@ -34,7 +34,7 @@ createDialog QGVAR(ProgressBar_Dialog);
//Adjust position based on user setting: //Adjust position based on user setting:
private _ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)); 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)) ctrlSetPosition _ctrlPos;
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlCommit 0; (uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlCommit 0;

View File

@ -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); 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 // Set the setting globally and force it
[_settingName, _logic getVariable _moduleVariable, true, true] call FUNC(setSetting); [_settingName, _value, true, true] call FUNC(setSetting);

View File

@ -15,7 +15,7 @@
params ["_name"]; params ["_name"];
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { 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 false
}; };

View File

@ -18,6 +18,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
ACE_DEPRECATED("ace_common_fnc_setAllGear","3.7.0","setUnitLoadout");
params ["_unit", "_allGear", ["_clearAttachments", false], ["_clearBackpack", false]]; params ["_unit", "_allGear", ["_clearAttachments", false], ["_clearBackpack", false]];
if (!local _unit) exitWith { if (!local _unit) exitWith {

View File

@ -54,5 +54,5 @@ private _lowestVolume = 1;
0 fadeMusic _lowestVolume; 0 fadeMusic _lowestVolume;
// Set Radio mod variables. // 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; }; if (!isNil "acre_api_fnc_setGlobalVolume") then { [_lowestVolume^0.33] call acre_api_fnc_setGlobalVolume; };

View File

@ -20,12 +20,6 @@ if (_unit isKindOf "CAManBase") then {
private _sanitizedName = [name _unit, true] call FUNC(sanitizeString); private _sanitizedName = [name _unit, true] call FUNC(sanitizeString);
private _rawName = [name _unit, false] 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_Name", _sanitizedName, true];
_unit setVariable ["ACE_NameRaw", _rawName, true]; _unit setVariable ["ACE_NameRaw", _rawName, true];
//};
}; };

View File

@ -17,7 +17,7 @@
params ["_name", "_args", ["_ttl", 0]]; params ["_name", "_args", ["_ttl", 0]];
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { 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 false
}; };

View File

@ -12,9 +12,17 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
disableSerialization; _this spawn {//
waitUntil {!isNull findDisplay 46};//
sleep 2;//
params ["_display"]; disableSerialization;
_display displayAddEventHandler ["KeyDown", FUNC(handleModifierKey)]; params ["_display"];
_display displayAddEventHandler ["KeyUp", FUNC(handleModifierKeyUp)];
_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

View File

@ -512,7 +512,7 @@
<German>Was soll mit Leuten geschehen, die nicht die richtigen PBO-Dateien geladen haben?</German> <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> <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> <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> <Hungarian>Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k?</Hungarian>
<Russian>Что делать с игроками с неправильными аддонами?</Russian> <Russian>Что делать с игроками с неправильными аддонами?</Russian>
<Italian>Cosa fare con giocatori che non hanno i PBO corretti?</Italian> <Italian>Cosa fare con giocatori che non hanno i PBO corretti?</Italian>
@ -596,7 +596,7 @@
<German>Welche Addons werden dennoch erlaubt?</German> <German>Welche Addons werden dennoch erlaubt?</German>
<Czech>Jaké addony jsou povoleny?</Czech> <Czech>Jaké addony jsou povoleny?</Czech>
<Portuguese>Quais addons são permitidos de qualquer maneira?</Portuguese> <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> <Hungarian>Milyen bővítmények vannak feltétlenül engedélyezve?</Hungarian>
<Russian>Какие аддоны дополнительно разрешены?</Russian> <Russian>Какие аддоны дополнительно разрешены?</Russian>
<Italian>Quali addon sono permessi in ogni caso?</Italian> <Italian>Quali addon sono permessi in ogni caso?</Italian>
@ -664,7 +664,7 @@
<Key ID="STR_ACE_Common_Disabled"> <Key ID="STR_ACE_Common_Disabled">
<English>Disabled</English> <English>Disabled</English>
<Czech>Zakázáno</Czech> <Czech>Zakázáno</Czech>
<French>Non</French> <French>Désactiver</French>
<German>Deaktiviert</German> <German>Deaktiviert</German>
<Italian>Disattivato</Italian> <Italian>Disattivato</Italian>
<Polish>Wyłączone</Polish> <Polish>Wyłączone</Polish>
@ -675,7 +675,7 @@
<Key ID="STR_ACE_Common_Enabled"> <Key ID="STR_ACE_Common_Enabled">
<English>Enabled</English> <English>Enabled</English>
<Czech>Povoleno</Czech> <Czech>Povoleno</Czech>
<French>Oui</French> <French>Activer</French>
<German>Aktiviert</German> <German>Aktiviert</German>
<Italian>Attivato</Italian> <Italian>Attivato</Italian>
<Polish>Włączone</Polish> <Polish>Włączone</Polish>
@ -716,6 +716,7 @@
<Czech>Pouze vozidla</Czech> <Czech>Pouze vozidla</Czech>
<Spanish>Solo vehículos</Spanish> <Spanish>Solo vehículos</Spanish>
<Italian>Solo veicoli</Italian> <Italian>Solo veicoli</Italian>
<French>Vehicules seulement</French>
</Key> </Key>
<Key ID="STR_ACE_Common_DoNotForce"> <Key ID="STR_ACE_Common_DoNotForce">
<English>Do Not Force</English> <English>Do Not Force</English>
@ -726,6 +727,7 @@
<Portuguese>Não forçar</Portuguese> <Portuguese>Não forçar</Portuguese>
<Russian>Не обязывать</Russian> <Russian>Не обязывать</Russian>
<Italian>Non forzare</Italian> <Italian>Non forzare</Italian>
<French>Ne pas forcer</French>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment"> <Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment">
<English>ACE3 Equipment</English> <English>ACE3 Equipment</English>
@ -736,6 +738,7 @@
<Czech>ACE3 Vybavení</Czech> <Czech>ACE3 Vybavení</Czech>
<Spanish>ACE3 Equipo</Spanish> <Spanish>ACE3 Equipo</Spanish>
<Italian>Equipaggiamento ACE3</Italian> <Italian>Equipaggiamento ACE3</Italian>
<French>Equipement ACE3</French>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryCommon"> <Key ID="STR_ACE_Common_ACEKeybindCategoryCommon">
<English>ACE3 Common</English> <English>ACE3 Common</English>
@ -746,6 +749,7 @@
<Spanish>ACE3 Común</Spanish> <Spanish>ACE3 Común</Spanish>
<Czech>ACE3 Obecné</Czech> <Czech>ACE3 Obecné</Czech>
<Italian>Comune ACE3</Italian> <Italian>Comune ACE3</Italian>
<French>Commun ACE3</French>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons"> <Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons">
<English>ACE3 Weapons</English> <English>ACE3 Weapons</English>
@ -756,6 +760,7 @@
<Czech>ACE3 Zbraně</Czech> <Czech>ACE3 Zbraně</Czech>
<Spanish>ACE3 Armas</Spanish> <Spanish>ACE3 Armas</Spanish>
<Italian>Armi ACE3</Italian> <Italian>Armi ACE3</Italian>
<French>Armes ACE3</French>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryMovement"> <Key ID="STR_ACE_Common_ACEKeybindCategoryMovement">
<English>ACE3 Movement</English> <English>ACE3 Movement</English>
@ -766,6 +771,7 @@
<Spanish>ACE3 Movimiento</Spanish> <Spanish>ACE3 Movimiento</Spanish>
<Czech>ACE3 Pohyb</Czech> <Czech>ACE3 Pohyb</Czech>
<Italian>Movimento ACE3</Italian> <Italian>Movimento ACE3</Italian>
<French>Mouvement ACE3</French>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment"> <Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment">
<English>ACE3 Scope Adjustment</English> <English>ACE3 Scope Adjustment</English>
@ -776,6 +782,7 @@
<Czech>ACE3 Nastavení optiky</Czech> <Czech>ACE3 Nastavení optiky</Czech>
<Spanish>ACE3 Ajuste de miras</Spanish> <Spanish>ACE3 Ajuste de miras</Spanish>
<Italian>Regolazione Ottiche ACE3</Italian> <Italian>Regolazione Ottiche ACE3</Italian>
<French>Ajustement de la lunette ACE3</French>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles"> <Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles">
<English>ACE3 Vehicles</English> <English>ACE3 Vehicles</English>
@ -786,6 +793,7 @@
<Czech>ACE3 Vozidla</Czech> <Czech>ACE3 Vozidla</Czech>
<Spanish>ACE3 Vehículos</Spanish> <Spanish>ACE3 Vehículos</Spanish>
<Italian>Veicoli ACE3</Italian> <Italian>Veicoli ACE3</Italian>
<French>Vehicules ACE3</French>
</Key> </Key>
<Key ID="STR_ACE_Common_NoRoomToUnload"> <Key ID="STR_ACE_Common_NoRoomToUnload">
<English>No Room to unload</English> <English>No Room to unload</English>
@ -793,6 +801,8 @@
<Polish>Brak miejsca na rozładunek</Polish> <Polish>Brak miejsca na rozładunek</Polish>
<Italian>Non c'è spazio per scaricare</Italian> <Italian>Non c'è spazio per scaricare</Italian>
<Spanish>No hay espacio para descargar.</Spanish> <Spanish>No hay espacio para descargar.</Spanish>
<French>Pas de place pour décharger</French>
<Czech>Nedostatek místa k vyložení</Czech>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,11 +1,13 @@
class CBA_Extended_EventHandlers;
class CfgVehicles { class CfgVehicles {
class Fence; class Fence;
class ThingX;
class NonStrategic;
class ACE_ConcertinaWireNoGeo: Fence { class ACE_ConcertinaWireNoGeo: Fence {
XEH_ENABLED; class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
scope = 1; scope = 1;
displayName = ""; displayName = "";
model = PATHTOF(data\ACE_ConcertinaWireNoGeo.p3d); model = PATHTOF(data\ACE_ConcertinaWireNoGeo.p3d);
@ -84,7 +86,7 @@ class CfgVehicles {
selection = ""; selection = "";
displayName = "$STR_ACE_UNROLLWIRE"; displayName = "$STR_ACE_UNROLLWIRE";
distance = 5; distance = 5;
condition = "true"; condition = "alive _target";
statement = QUOTE([ARR_2(_target,_player)] call FUNC(dismount)); statement = QUOTE([ARR_2(_target,_player)] call FUNC(dismount));
showDisabled = 0; showDisabled = 0;
exceptions[] = {}; exceptions[] = {};
@ -94,8 +96,13 @@ class CfgVehicles {
}; };
}; };
}; };
class ThingX;
class ACE_ConcertinaWireCoil: ThingX { class ACE_ConcertinaWireCoil: ThingX {
XEH_ENABLED; class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
scope = 2; scope = 2;
displayName = $STR_ACE_CONCERTINA_WIRECOIL; displayName = $STR_ACE_CONCERTINA_WIRECOIL;
model = PATHTOF(data\ACE_ConcertinaWireCoil.p3d); model = PATHTOF(data\ACE_ConcertinaWireCoil.p3d);
@ -112,7 +119,7 @@ class CfgVehicles {
accuracy = 1000; accuracy = 1000;
autocenter = 0; autocenter = 0;
EGVAR(dragging,canDrag) = 1; 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(dragging,dragDirection) = 0;
EGVAR(cargo,size) = 1; EGVAR(cargo,size) = 1;
EGVAR(cargo,canLoad) = 1; EGVAR(cargo,canLoad) = 1;
@ -137,7 +144,10 @@ class CfgVehicles {
}; };
}; };
class NonStrategic;
class Land_Razorwire_F: NonStrategic { class Land_Razorwire_F: NonStrategic {
XEH_ENABLED; class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
}; };
}; };

View File

@ -14,13 +14,17 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_wire", "_killer"]; params ["_wire", "_killer"];
TRACE_2("params",_wire,_killer);
private ["_distance", "_vehicle"]; private ["_distance", "_vehicle"];
if (isNull _killer) then { if (isNull _killer) then {
_killer = _wire getVariable ["ace_concertina_wire_lastDamager", objNull]; _killer = _wire getVariable ["ace_concertina_wire_lastDamager", objNull];
if (isNull _killer) then { 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 {}; if (isNull _killer || {_killer == _wire} || {_killer == gunner (vehicle _killer)}) exitWith {};

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="concertina_wire"> <Package name="concertina_wire">
<Key ID="STR_ACE_CONCERTINA_WIRE"> <Key ID="STR_ACE_CONCERTINA_WIRE">
@ -31,7 +31,7 @@
<Russian>Демонтировать колючую проволоку</Russian> <Russian>Демонтировать колючую проволоку</Russian>
<Polish>Zwiń koncentrinę</Polish> <Polish>Zwiń koncentrinę</Polish>
<Spanish>Desmontar alambre de espino</Spanish> <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> <Czech>Svinout ostnatý drát</Czech>
<Italian>Smonta la concertina</Italian> <Italian>Smonta la concertina</Italian>
<Hungarian>Dismount Concertina wire</Hungarian> <Hungarian>Dismount Concertina wire</Hungarian>

View File

@ -76,349 +76,349 @@
class RscText; class RscText;
class DAGR_Button { class DAGR_Button {
idc = -1; idc = -1;
type = CT_BUTTON; type = CT_BUTTON;
style = ST_LEFT; style = ST_LEFT;
font = "RobotoCondensed"; font = "RobotoCondensed";
sizeEx = 0.02; sizeEx = 0.02;
colorText[] = { 0, 1, 0, 1 }; colorText[] = { 0, 1, 0, 1 };
colorFocused[] = { 0, 0, 0, 0 }; // border color for focused state colorFocused[] = { 0, 0, 0, 0 }; // border color for focused state
colorDisabled[] = { 0, 0, 0, 0 }; // text color for disabled state colorDisabled[] = { 0, 0, 0, 0 }; // text color for disabled state
colorBackground[] = { 0, 0, 0, 0 }; colorBackground[] = { 0, 0, 0, 0 };
colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // background color for disabled state colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // background color for disabled state
colorBackgroundActive[] = { 0, 0, 0, 0 }; // background color for active state colorBackgroundActive[] = { 0, 0, 0, 0 }; // background color for active state
offsetX = 0; offsetX = 0;
offsetY = 0; offsetY = 0;
offsetPressedX = 0; offsetPressedX = 0;
offsetPressedY = 0; offsetPressedY = 0;
colorShadow[] = { 0, 0, 0, 0 }; colorShadow[] = { 0, 0, 0, 0 };
colorBorder[] = { 0, 0, 0, 0 }; colorBorder[] = { 0, 0, 0, 0 };
borderSize = 0; borderSize = 0;
soundEnter[] = { "", 0, 1 }; // no sound soundEnter[] = { "", 0, 1 }; // no sound
soundPush[] = { "", 0, 1 }; soundPush[] = { "", 0, 1 };
soundClick[] = { "", 0, 1 }; // no sound soundClick[] = { "", 0, 1 }; // no sound
soundEscape[] = { "", 0, 1 }; // no sound soundEscape[] = { "", 0, 1 }; // no sound
x = 0.5; x = 0.5;
y = 0.5; y = 0.5;
w = 0.07; w = 0.07;
h = 0.05; h = 0.05;
text = ""; text = "";
action = ""; action = "";
}; };
class DAGR_Menu_Pic { class DAGR_Menu_Pic {
type = 0; type = 0;
idc = -1; idc = -1;
style = 48; style = 48;
x = 0; x = 0;
y = 0; y = 0;
w = 0.7; w = 0.7;
h = 1.4; h = 1.4;
text = ""; text = "";
colorBackground[] = {}; colorBackground[] = {};
colorText[] = {}; colorText[] = {};
font = "RobotoCondensed"; font = "RobotoCondensed";
sizeEx = 0.04; sizeEx = 0.04;
waitForLoad = 0; waitForLoad = 0;
}; };
class DAGR_Menu_Text { class DAGR_Menu_Text {
type = 0; type = 0;
idc = -1; idc = -1;
style = 0x00; style = 0x00;
x = 0.5; x = 0.5;
y = 0.5; y = 0.5;
w = 0.15; w = 0.15;
h = 0.15; h = 0.15;
colorBackground[] = { 0, 0, 0, 0 }; colorBackground[] = { 0, 0, 0, 0 };
colorText[] = { 0.239, 0.216, 0.153, 1 }; colorText[] = { 0.239, 0.216, 0.153, 1 };
font = "RobotoCondensed"; font = "RobotoCondensed";
sizeEx = 0.03; sizeEx = 0.03;
waitForLoad = 0; waitForLoad = 0;
text = ""; text = "";
}; };
class DAGR_Menu { class DAGR_Menu {
idd = 266860; idd = 266860;
movingEnable = false; movingEnable = false;
duration = 100000; duration = 100000;
fadein = 0; fadein = 0;
fadeout = 0; fadeout = 0;
name = "Dagr_Menu"; name = "Dagr_Menu";
onLoad = "uiNamespace setVariable ['DAGR_Menu', _this select 0]"; onLoad = "uiNamespace setVariable ['DAGR_Menu', _this select 0]";
onUnload = QUOTE(GVAR(PWR) = true); // Simulate pressing the power button onUnload = QUOTE(GVAR(PWR) = true); // Simulate pressing the power button
controls[] = {"DAGR_MENU_UI", "DAGR_PWR_Button", "DAGR_UP_Button", "DAGR_DOWN_Button", "DAGR_LEFT_Button", "DAGR_RIGHT_Button", "DAGR_NEXT_Button", controls[] = {"DAGR_MENU_UI", "DAGR_PWR_Button", "DAGR_UP_Button", "DAGR_DOWN_Button", "DAGR_LEFT_Button", "DAGR_RIGHT_Button", "DAGR_NEXT_Button",
"DAGR_SEL_Button", "DAGR_MENU_Button", "DAGR_F1_Button", "DAGR_F2_Button", "DAGR_F3_Button", "DAGR_F1_Text", "DAGR_F2_Text", "DAGR_F3_Text", "DAGR_MENU_OPTION0", "DAGR_SEL_Button", "DAGR_MENU_Button", "DAGR_F1_Button", "DAGR_F2_Button", "DAGR_F3_Button", "DAGR_F1_Text", "DAGR_F2_Text", "DAGR_F3_Text", "DAGR_MENU_OPTION0",
"DAGR_MENU_OPTION1", "DAGR_MENU_OPTION2", "DAGR_MENU_OPTION3", "DAGR_MENU_OPTION4", "DAGR_MENU_SELECTION0", "DAGR_MENU_SELECTION1", "DAGR_MENU_SELECTION2", "DAGR_MENU_OPTION1", "DAGR_MENU_OPTION2", "DAGR_MENU_OPTION3", "DAGR_MENU_OPTION4", "DAGR_MENU_SELECTION0", "DAGR_MENU_SELECTION1", "DAGR_MENU_SELECTION2",
"DAGR_MENU_SELECTION3", "DAGR_MENU_SELECTION4", "DAGR_MENU_Main_Text", "DAGR_MENU_PSELECTION1", "DAGR_MENU_PSELECTION2", "DAGR_MENU_PSELECTION3", "DAGR_MENU_SELECTION3", "DAGR_MENU_SELECTION4", "DAGR_MENU_Main_Text", "DAGR_MENU_PSELECTION1", "DAGR_MENU_PSELECTION2", "DAGR_MENU_PSELECTION3",
"DAGR_MENU_PSELECTION4", "DAGR_MENU_PSELECTION5", "DAGR_MENU_PSELECTION6","DAGR_MENU_PSELECTION7", "DAGR_MENU_PSELECTION8"}; "DAGR_MENU_PSELECTION4", "DAGR_MENU_PSELECTION5", "DAGR_MENU_PSELECTION6","DAGR_MENU_PSELECTION7", "DAGR_MENU_PSELECTION8"};
class DAGR_MENU_UI : DAGR_Menu_Pic { class DAGR_MENU_UI : DAGR_Menu_Pic {
idc = 266861; idc = 266861;
x = 0.175; x = 0.175;
y = -0.173; y = -0.173;
text = QUOTE(PATHTOF(UI\dagr_menu.paa)); text = QUOTE(PATHTOF(UI\dagr_menu.paa));
sizeEx = 0.1; sizeEx = 0.1;
}; };
class DAGR_PWR_Button : DAGR_Button { class DAGR_PWR_Button : DAGR_Button {
idc = 266863; idc = 266863;
action = QUOTE(GVAR(PWR) = true); action = QUOTE(GVAR(PWR) = true);
x = 0.40; x = 0.40;
y = 0.65; y = 0.65;
}; };
class DAGR_UP_Button : DAGR_Button { class DAGR_UP_Button : DAGR_Button {
idc = 266864; idc = 266864;
action = QUOTE(GVAR(UP) = true); action = QUOTE(GVAR(UP) = true);
x = 0.50; x = 0.50;
y = 0.675; y = 0.675;
}; };
class DAGR_DOWN_Button : DAGR_Button { class DAGR_DOWN_Button : DAGR_Button {
idc = 266865; idc = 266865;
action = QUOTE(GVAR(DOWN) = true); action = QUOTE(GVAR(DOWN) = true);
x = 0.50; x = 0.50;
y = 0.81; y = 0.81;
}; };
class DAGR_LEFT_Button : DAGR_Button { class DAGR_LEFT_Button : DAGR_Button {
idc = 266866; idc = 266866;
action = QUOTE(GVAR(LEFT) = true); action = QUOTE(GVAR(LEFT) = true);
x = 0.40; x = 0.40;
y = 0.735; y = 0.735;
w = 0.05; w = 0.05;
h = 0.07; h = 0.07;
}; };
class DAGR_RIGHT_Button : DAGR_Button { class DAGR_RIGHT_Button : DAGR_Button {
idc = 266867; idc = 266867;
action = QUOTE(GVAR(RIGHT) = true); action = QUOTE(GVAR(RIGHT) = true);
x = 0.62; x = 0.62;
y = 0.735; y = 0.735;
w = 0.05; w = 0.05;
h = 0.07; h = 0.07;
}; };
class DAGR_NEXT_Button : DAGR_Button { class DAGR_NEXT_Button : DAGR_Button {
idc = 266868; idc = 266868;
action = QUOTE(DAGR_NEXT = true); action = QUOTE(DAGR_NEXT = true);
x = 0.60; x = 0.60;
y = 0.65; y = 0.65;
}; };
class DAGR_SEL_Button : DAGR_Button { class DAGR_SEL_Button : DAGR_Button {
idc = 266869; idc = 266869;
action = QUOTE(GVAR(SEL) = true); action = QUOTE(GVAR(SEL) = true);
x = 0.54; x = 0.54;
y = 0.735; y = 0.735;
w = 0.06; w = 0.06;
h = 0.06; h = 0.06;
}; };
class DAGR_MENU_Button : DAGR_Button { class DAGR_MENU_Button : DAGR_Button {
idc = 266870; idc = 266870;
action = QUOTE(GVAR(MENU_B) = true); action = QUOTE(GVAR(MENU_B) = true);
x = 0.46; x = 0.46;
y = 0.735; y = 0.735;
w = 0.06; w = 0.06;
h = 0.06; h = 0.06;
}; };
class DAGR_F1_Button : DAGR_Button { class DAGR_F1_Button : DAGR_Button {
idc = 266871; idc = 266871;
action = QUOTE(GVAR(F1) = true); action = QUOTE(GVAR(F1) = true);
x = 0.40; x = 0.40;
y = 0.575; y = 0.575;
}; };
class DAGR_F2_Button : DAGR_Button { class DAGR_F2_Button : DAGR_Button {
idc = 266872; idc = 266872;
action = QUOTE(GVAR(F2) = true); action = QUOTE(GVAR(F2) = true);
x = 0.495; x = 0.495;
y = 0.575; y = 0.575;
}; };
class DAGR_F3_Button : DAGR_Button { class DAGR_F3_Button : DAGR_Button {
idc = 266873; idc = 266873;
action = QUOTE(GVAR(F3) = true); action = QUOTE(GVAR(F3) = true);
x = 0.59; x = 0.59;
y = 0.575; y = 0.575;
}; };
class DAGR_F1_Text : DAGR_Menu_Text { class DAGR_F1_Text : DAGR_Menu_Text {
idc = 266874; idc = 266874;
x = 0.388; x = 0.388;
y = 0.38; y = 0.38;
text = ""; text = "";
}; };
class DAGR_F2_Text : DAGR_Menu_Text { class DAGR_F2_Text : DAGR_Menu_Text {
idc = 266875; idc = 266875;
x = 0.506; x = 0.506;
y = 0.38; y = 0.38;
}; };
class DAGR_F3_Text : DAGR_Menu_Text { class DAGR_F3_Text : DAGR_Menu_Text {
idc = 266876; idc = 266876;
x = 0.612; x = 0.612;
y = 0.38; y = 0.38;
}; };
class DAGR_MENU_OPTION0 : DAGR_Menu_Text { class DAGR_MENU_OPTION0 : DAGR_Menu_Text {
idc = 2668777; idc = 2668777;
style = 0x02; style = 0x02;
sizeEx = 0.035; sizeEx = 0.035;
x = 0.43; x = 0.43;
y = 0.19; y = 0.19;
}; };
class DAGR_MENU_OPTION1 : DAGR_Menu_Text { class DAGR_MENU_OPTION1 : DAGR_Menu_Text {
idc = 2668778; idc = 2668778;
style = 0x02; style = 0x02;
sizeEx = 0.035; sizeEx = 0.035;
x = 0.43; x = 0.43;
y = 0.225; y = 0.225;
}; };
class DAGR_MENU_OPTION2 : DAGR_Menu_Text { class DAGR_MENU_OPTION2 : DAGR_Menu_Text {
idc = 2668779; idc = 2668779;
style = 0x02; style = 0x02;
sizeEx = 0.035; sizeEx = 0.035;
x = 0.43; x = 0.43;
y = 0.26; y = 0.26;
}; };
class DAGR_MENU_OPTION3 : DAGR_Menu_Text { class DAGR_MENU_OPTION3 : DAGR_Menu_Text {
idc = 2668780; idc = 2668780;
style = 0x02; style = 0x02;
sizeEx = 0.035; sizeEx = 0.035;
x = 0.43; x = 0.43;
y = 0.295; y = 0.295;
}; };
class DAGR_MENU_OPTION4 : DAGR_Menu_Text { class DAGR_MENU_OPTION4 : DAGR_Menu_Text {
idc = 2668781; idc = 2668781;
style = 0x02; style = 0x02;
sizeEx = 0.035; sizeEx = 0.035;
x = 0.43; x = 0.43;
y = 0.33; y = 0.33;
}; };
class DAGR_MENU_SELECTION0 : DAGR_Menu_Pic { class DAGR_MENU_SELECTION0 : DAGR_Menu_Pic {
idc = 2668783; idc = 2668783;
x = 0.42; x = 0.42;
y = 0.246; y = 0.246;
w = 0.17; w = 0.17;
h = 0.035; h = 0.035;
sizeEx = 0.05; sizeEx = 0.05;
}; };
class DAGR_MENU_SELECTION1 : DAGR_Menu_Pic { class DAGR_MENU_SELECTION1 : DAGR_Menu_Pic {
idc = 2668784; idc = 2668784;
x = 0.42; x = 0.42;
y = 0.281; y = 0.281;
w = 0.17; w = 0.17;
h = 0.035; h = 0.035;
sizeEx = 0.05; sizeEx = 0.05;
}; };
class DAGR_MENU_SELECTION2 : DAGR_Menu_Pic { class DAGR_MENU_SELECTION2 : DAGR_Menu_Pic {
idc = 2668785; idc = 2668785;
x = 0.42; x = 0.42;
y = 0.316; y = 0.316;
w = 0.17; w = 0.17;
h = 0.035; h = 0.035;
sizeEx = 0.05; sizeEx = 0.05;
}; };
class DAGR_MENU_SELECTION3 : DAGR_Menu_Pic { class DAGR_MENU_SELECTION3 : DAGR_Menu_Pic {
idc = 2668786; idc = 2668786;
x = 0.42; x = 0.42;
y = 0.351; y = 0.351;
w = 0.17; w = 0.17;
h = 0.035; h = 0.035;
sizeEx = 0.05; sizeEx = 0.05;
}; };
class DAGR_MENU_SELECTION4 : DAGR_Menu_Pic { class DAGR_MENU_SELECTION4 : DAGR_Menu_Pic {
idc = 2668787; idc = 2668787;
x = 0.42; x = 0.42;
y = 0.386; y = 0.386;
w = 0.17; w = 0.17;
h = 0.035; h = 0.035;
sizeEx = 0.05; sizeEx = 0.05;
}; };
class DAGR_MENU_Main_Text : DAGR_Menu_Text { class DAGR_MENU_Main_Text : DAGR_Menu_Text {
idc = 2668782; idc = 2668782;
style = ST_CENTER; style = ST_CENTER;
x = 0.38; x = 0.38;
y = 0.32; y = 0.32;
w = 0.25; w = 0.25;
h = 0.035; h = 0.035;
sizeEx = 0.04; sizeEx = 0.04;
}; };
class DAGR_MENU_PSELECTION1 : DAGR_Menu_Pic { class DAGR_MENU_PSELECTION1 : DAGR_Menu_Pic {
idc = 2668788; idc = 2668788;
x = 0.451; x = 0.451;
y = 0.352; y = 0.352;
w = 0.01; w = 0.01;
h = 0.003; h = 0.003;
}; };
class DAGR_MENU_PSELECTION2 : DAGR_Menu_Pic { class DAGR_MENU_PSELECTION2 : DAGR_Menu_Pic {
idc = 2668789; idc = 2668789;
x = 0.465; x = 0.465;
y = 0.352; y = 0.352;
w = 0.01; w = 0.01;
h = 0.003; h = 0.003;
}; };
class DAGR_MENU_PSELECTION3 : DAGR_Menu_Pic { class DAGR_MENU_PSELECTION3 : DAGR_Menu_Pic {
idc = 2668790; idc = 2668790;
x = 0.479; x = 0.479;
y = 0.352; y = 0.352;
w = 0.01; w = 0.01;
h = 0.003; h = 0.003;
}; };
class DAGR_MENU_PSELECTION4 : DAGR_Menu_Pic { class DAGR_MENU_PSELECTION4 : DAGR_Menu_Pic {
idc = 2668791; idc = 2668791;
x = 0.493; x = 0.493;
y = 0.352; y = 0.352;
w = 0.01; w = 0.01;
h = 0.003; h = 0.003;
}; };
class DAGR_MENU_PSELECTION5 : DAGR_Menu_Pic { class DAGR_MENU_PSELECTION5 : DAGR_Menu_Pic {
idc = 2668792; idc = 2668792;
x = 0.507; x = 0.507;
y = 0.352; y = 0.352;
w = 0.01; w = 0.01;
h = 0.003; h = 0.003;
}; };
class DAGR_MENU_PSELECTION6 : DAGR_Menu_Pic { class DAGR_MENU_PSELECTION6 : DAGR_Menu_Pic {
idc = 2668793; idc = 2668793;
x = 0.521; x = 0.521;
y = 0.352; y = 0.352;
w = 0.01; w = 0.01;
h = 0.003; h = 0.003;
}; };
class DAGR_MENU_PSELECTION7 : DAGR_Menu_Pic { class DAGR_MENU_PSELECTION7 : DAGR_Menu_Pic {
idc = 2668794; idc = 2668794;
x = 0.535; x = 0.535;
y = 0.352; y = 0.352;
w = 0.01; w = 0.01;
h = 0.003; h = 0.003;
}; };
class DAGR_MENU_PSELECTION8 : DAGR_Menu_Pic { class DAGR_MENU_PSELECTION8 : DAGR_Menu_Pic {
idc = 2668795; idc = 2668795;
x = 0.549; x = 0.549;
y = 0.352; y = 0.352;
w = 0.01; w = 0.01;
h = 0.003; h = 0.003;
}; };
}; };

View File

@ -1,95 +1,95 @@
class RscTitles { class RscTitles {
class DAGR_Text { class DAGR_Text {
type = 0; type = 0;
idc = -1; idc = -1;
style = 0x01; style = 0x01;
x = 0; x = 0;
y = 0; y = 0;
w = 0.15; w = 0.15;
h = 0.050; h = 0.050;
text = ""; text = "";
colorBackground[] = { 0, 0, 0, 0 }; colorBackground[] = { 0, 0, 0, 0 };
colorText[] = { 0.239, 0.216, 0.153, 1 }; colorText[] = { 0.239, 0.216, 0.153, 1 };
font = "RobotoCondensed"; font = "RobotoCondensed";
sizeEx = 0.04; sizeEx = 0.04;
waitForLoad = 0; waitForLoad = 0;
}; };
class DAGR_Pic { class DAGR_Pic {
type = 0; type = 0;
idc = -1; idc = -1;
style = 48; style = 48;
x = 0; x = 0;
y = 0; y = 0;
w = 0.50; w = 0.50;
h = 0.50; h = 0.50;
text = ""; text = "";
colorBackground[] = {}; colorBackground[] = {};
colorText[] = {}; colorText[] = {};
font = "RobotoCondensed"; font = "RobotoCondensed";
sizeEx = 0.02; sizeEx = 0.02;
waitForLoad = 0; waitForLoad = 0;
}; };
class DAGR_Display { class DAGR_Display {
idd = 266850; idd = 266850;
movingEnable = false; movingEnable = false;
duration = 100000; duration = 100000;
fadein = 0; fadein = 0;
fadeout = 0; fadeout = 0;
name = "Dagr_Display"; name = "Dagr_Display";
onLoad="uiNamespace setVariable ['DAGR_Display', _this select 0]"; onLoad="uiNamespace setVariable ['DAGR_Display', _this select 0]";
controls[] = {"DAGR_UI", "DAGR_Grid", "DAGR_Speed", "DAGR_Elevation", "DAGR_Heading", "DAGR_Time", "DAGR_WP", "DAGR_Bearing", "DAGR_DIST"}; controls[] = {"DAGR_UI", "DAGR_Grid", "DAGR_Speed", "DAGR_Elevation", "DAGR_Heading", "DAGR_Time", "DAGR_WP", "DAGR_Bearing", "DAGR_DIST"};
class DAGR_UI : DAGR_Pic { class DAGR_UI : DAGR_Pic {
idc = 266856; idc = 266856;
x = "(SafeZoneW + SafeZoneX) - 0.45"; x = "(SafeZoneW + SafeZoneX) - 0.45";
y = "(SafeZoneH + SafeZoneY) - 0.47"; y = "(SafeZoneH + SafeZoneY) - 0.47";
}; };
class DAGR_Grid : DAGR_Text { class DAGR_Grid : DAGR_Text {
idc = 266851; idc = 266851;
x = "(SafeZoneW + SafeZoneX) - 0.370";// 0.830 x = "(SafeZoneW + SafeZoneX) - 0.370";// 0.830
y = "(SafeZoneH + SafeZoneY)- 0.250";// 0.845 y = "(SafeZoneH + SafeZoneY)- 0.250";// 0.845
w = 0.25; w = 0.25;
h = 0.06; h = 0.06;
sizeEx = 0.07; sizeEx = 0.07;
}; };
class DAGR_Speed : DAGR_Text { class DAGR_Speed : DAGR_Text {
idc = 266852; idc = 266852;
x = "(SafeZoneW + SafeZoneX) - 0.388"; //0.812 x = "(SafeZoneW + SafeZoneX) - 0.388"; //0.812
y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
}; };
class DAGR_Elevation : DAGR_Text { class DAGR_Elevation : DAGR_Text {
idc = 266853; idc = 266853;
x = "(SafeZoneW + SafeZoneX) - 0.270"; //0.930 x = "(SafeZoneW + SafeZoneX) - 0.270"; //0.930
y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
}; };
class DAGR_Heading : DAGR_Text { class DAGR_Heading : DAGR_Text {
idc = 266854; idc = 266854;
x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787 x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787
y = "(SafeZoneH + SafeZoneY) - 0.1294"; //0.9656 y = "(SafeZoneH + SafeZoneY) - 0.1294"; //0.9656
}; };
class DAGR_Time : DAGR_Text { class DAGR_Time : DAGR_Text {
idc = 266855; idc = 266855;
x = "(SafeZoneW + SafeZoneX) - 0.275"; //0.925 x = "(SafeZoneW + SafeZoneX) - 0.275"; //0.925
y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965 y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965
}; };
class DAGR_WP : DAGR_Text { class DAGR_WP : DAGR_Text {
idc = 266857; idc = 266857;
x = "(SafeZoneW + SafeZoneX) - 0.235"; //0.965 x = "(SafeZoneW + SafeZoneX) - 0.235"; //0.965
y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
}; };
class DAGR_Bearing : DAGR_Text { class DAGR_Bearing : DAGR_Text {
idc = 266858; idc = 266858;
x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787 x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787
y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
}; };
class DAGR_DIST : DAGR_Text { class DAGR_DIST : DAGR_Text {
idc = 266859; idc = 266859;
x = "(SafeZoneW + SafeZoneX) - 0.265"; //0.935 x = "(SafeZoneW + SafeZoneX) - 0.265"; //0.935
y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965 y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965
}; };
}; };
}; };

View File

@ -522,7 +522,7 @@ GVAR(menuRun) = true;
(__dsp displayCtrl __mainText) ctrlSetText "Connecting..."; (__dsp displayCtrl __mainText) ctrlSetText "Connecting...";
}; };
if (ACE_time - GVAR(busyTimer) > 0.6) then { 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"; GVAR(displaySelection) = "VECTOR";
(__dsp displayCtrl __mainText) ctrlSetText "Vector Connected"; (__dsp displayCtrl __mainText) ctrlSetText "Vector Connected";
GVAR(vectorConnected) = true; GVAR(vectorConnected) = true;

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="DAGR"> <Package name="DAGR">
<Key ID="STR_ACE_DAGR_Name"> <Key ID="STR_ACE_DAGR_Name">
@ -10,6 +10,7 @@
<Portuguese>DAGR</Portuguese> <Portuguese>DAGR</Portuguese>
<Czech>DAGR</Czech> <Czech>DAGR</Czech>
<Italian>DAGR</Italian> <Italian>DAGR</Italian>
<French>DAGR</French>
</Key> </Key>
<Key ID="STR_ACE_DAGR_ConfigureDAGR"> <Key ID="STR_ACE_DAGR_ConfigureDAGR">
<English>Configure DAGR</English> <English>Configure DAGR</English>
@ -20,6 +21,7 @@
<Portuguese>Configurar DAGR</Portuguese> <Portuguese>Configurar DAGR</Portuguese>
<Czech>Konfigurovat DAGR</Czech> <Czech>Konfigurovat DAGR</Czech>
<Italian>Configura DAGR</Italian> <Italian>Configura DAGR</Italian>
<French>Configurer le DAGR</French>
</Key> </Key>
<Key ID="STR_ACE_DAGR_ToggleDAGR"> <Key ID="STR_ACE_DAGR_ToggleDAGR">
<English>Toggle DAGR</English> <English>Toggle DAGR</English>
@ -30,6 +32,7 @@
<Portuguese>Mostrar DAGR</Portuguese> <Portuguese>Mostrar DAGR</Portuguese>
<Czech>Přepnout DAGR</Czech> <Czech>Přepnout DAGR</Czech>
<Italian>Apri DAGR</Italian> <Italian>Apri DAGR</Italian>
<French>Activer/Desactiver le DAGR</French>
</Key> </Key>
<Key ID="STR_ACE_DAGR_Description"> <Key ID="STR_ACE_DAGR_Description">
<English>Defense Advanced GPS Receiver</English> <English>Defense Advanced GPS Receiver</English>
@ -40,6 +43,7 @@
<Portuguese>Defense Advanced GPS Receiver</Portuguese> <Portuguese>Defense Advanced GPS Receiver</Portuguese>
<Czech>Defense Advanced GPS Receiver</Czech> <Czech>Defense Advanced GPS Receiver</Czech>
<Italian>Defense Advanced GPS Receiver</Italian> <Italian>Defense Advanced GPS Receiver</Italian>
<French>Defense Advanced GPS Receiver</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1 +0,0 @@
z\ace\addons\difficulties

View File

@ -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};
};
};
};

View File

@ -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"

View File

@ -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"

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Disarming"> <Package name="Disarming">
<Key ID="STR_ACE_Disarming_OpenInventory"> <Key ID="STR_ACE_Disarming_OpenInventory">

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Disposable"> <Package name="Disposable">
<Key ID="STR_ACE_Disposable_UsedTube"> <Key ID="STR_ACE_Disposable_UsedTube">

View File

@ -55,3 +55,9 @@ class Extended_AnimChanged_EventHandlers {
}; };
}; };
}; };
class Extended_DisplayLoad_EventHandlers {
class RscDisplayMission {
ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad));
};
};

View File

@ -1,17 +1,24 @@
class CBA_Extended_EventHandlers;
class CfgVehicles { class CfgVehicles {
// Static weapons // Static weapons
class LandVehicle; class LandVehicle;
class StaticWeapon: LandVehicle { class StaticWeapon: LandVehicle {
GVAR(canCarry) = 1; GVAR(canCarry) = 1;
GVAR(carryPosition[]) = {0,1.2,0}; GVAR(carryPosition)[] = {0,1.2,0};
GVAR(carryDirection) = 0; GVAR(carryDirection) = 0;
GVAR(canDrag) = 1; GVAR(canDrag) = 1;
GVAR(dragPosition[]) = {0,1.2,0}; GVAR(dragPosition)[] = {0,1.2,0};
GVAR(dragDirection) = 0; GVAR(dragDirection) = 0;
}; };
class StaticCannon: StaticWeapon {
GVAR(canCarry) = 0;
GVAR(canDrag) = 0;
};
//remove actions from Taru Pods //remove actions from Taru Pods
class Pod_Heli_Transport_04_base_F: StaticWeapon { class Pod_Heli_Transport_04_base_F: StaticWeapon {
GVAR(canCarry) = 0; GVAR(canCarry) = 0;
@ -21,23 +28,24 @@ class CfgVehicles {
class StaticMortar; class StaticMortar;
class Mortar_01_base_F: StaticMortar { class Mortar_01_base_F: StaticMortar {
GVAR(canCarry) = 1; GVAR(canCarry) = 1;
GVAR(carryPosition[]) = {0,1.2,0}; GVAR(carryPosition)[] = {0,1.2,0};
GVAR(carryDirection) = 0; GVAR(carryDirection) = 0;
GVAR(canDrag) = 1; GVAR(canDrag) = 1;
GVAR(dragPosition[]) = {0,1.2,0}; GVAR(dragPosition)[] = {0,1.2,0};
GVAR(dragDirection) = 0; GVAR(dragDirection) = 0;
}; };
// ammo boxes // ammo boxes
class ThingX; class ThingX;
class Items_base_F;
class ReammoBox_F: ThingX { class ReammoBox_F: ThingX {
GVAR(canCarry) = 0; GVAR(canCarry) = 0;
GVAR(carryPosition[]) = {0,1,1}; GVAR(carryPosition)[] = {0,1,1};
GVAR(carryDirection) = 0; GVAR(carryDirection) = 0;
GVAR(canDrag) = 0; GVAR(canDrag) = 0;
GVAR(dragPosition[]) = {0,1.2,0}; GVAR(dragPosition)[] = {0,1.2,0};
GVAR(dragDirection) = 0; GVAR(dragDirection) = 0;
}; };
@ -83,44 +91,73 @@ class CfgVehicles {
GVAR(canDrag) = 0; GVAR(canDrag) = 0;
}; };
// Barrier //Plastic and metal case
class RoadCone_F: ThingX { class PlasticCase_01_base_F: Items_base_F {
XEH_ENABLED; class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
GVAR(canCarry) = 1; GVAR(canCarry) = 1;
GVAR(carryPosition[]) = {0,1,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(canDrag) = 1;
GVAR(dragPosition[]) = {0,1.2,0}; GVAR(dragPosition[]) = {0,1.2,0};
GVAR(dragDirection) = 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 { class RoadBarrier_F: RoadCone_F {
GVAR(carryPosition[]) = {0,1,0.300671}; GVAR(carryPosition)[] = {0,1,0.300671};
}; };
class ACE_RepairItem_Base: ThingX {}; class ACE_RepairItem_Base: ThingX {};
class ACE_Track: ACE_RepairItem_Base { class ACE_Track: ACE_RepairItem_Base {
GVAR(canCarry) = 1; GVAR(canCarry) = 1;
GVAR(carryPosition[]) = {0,1,1}; GVAR(carryPosition)[] = {0,1,1};
GVAR(carryDirection) = 0; GVAR(carryDirection) = 0;
}; };
class ACE_Wheel: ACE_RepairItem_Base { class ACE_Wheel: ACE_RepairItem_Base {
GVAR(canCarry) = 1; GVAR(canCarry) = 1;
GVAR(carryPosition[]) = {0,1,1}; GVAR(carryPosition)[] = {0,1,1};
GVAR(carryDirection) = 0; GVAR(carryDirection) = 0;
}; };
class Lamps_base_F; class Lamps_base_F;
class Land_PortableLight_single_F: Lamps_base_F { class Land_PortableLight_single_F: Lamps_base_F {
GVAR(canCarry) = 1; GVAR(canCarry) = 1;
GVAR(carryPosition[]) = {0,1.2,0}; GVAR(carryPosition)[] = {0,1.2,0};
GVAR(carryDirection) = 180; GVAR(carryDirection) = 180;
GVAR(canDrag) = 1; GVAR(canDrag) = 1;
GVAR(dragPosition[]) = {0,1.2,0}; GVAR(dragPosition)[] = {0,1.2,0};
GVAR(dragDirection) = 180; GVAR(dragDirection) = 180;
}; };
}; };

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,5 @@
#include "script_component.hpp"
params ["_display"];
_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}];

View File

@ -8,8 +8,6 @@ if (isServer) then {
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler);
if (isNil "ACE_maxWeightDrag") then { if (isNil "ACE_maxWeightDrag") then {
ACE_maxWeightDrag = 800; ACE_maxWeightDrag = 800;
}; };

View File

@ -40,4 +40,8 @@ detach _carriedItem;
_carriedItem setPosATL _position; _carriedItem setPosATL _position;
_carriedItem attachTo [_unit]; _carriedItem attachTo [_unit];
//reset the carry direction
private _direction = _carriedItem getVariable [QGVAR(carryDirection), 0];
["setDir", _carriedItem, [_carriedItem, _direction]] call EFUNC(common,targetEvent);
true true

View File

@ -43,7 +43,9 @@ if (_type in _initializedClasses) exitWith {};
_initializedClasses pushBack _type; _initializedClasses pushBack _type;
GVAR(initializedClasses_carry) = _initializedClasses; 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); 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); [_type, 0, ["ACE_MainActions"], _carryAction] call EFUNC(interact_menu,addActionToClass);

View File

@ -44,7 +44,9 @@ if (_type in _initializedClasses) exitWith {};
_initializedClasses pushBack _type; _initializedClasses pushBack _type;
GVAR(initializedClasses) = _initializedClasses; 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); 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); [_type, 0, ["ACE_MainActions"], _dragAction] call EFUNC(interact_menu,addActionToClass);

View File

@ -58,6 +58,7 @@
<Czech>Zvýšit/Snížit</Czech> <Czech>Zvýšit/Snížit</Czech>
<Italian>Alza/Abbassa</Italian> <Italian>Alza/Abbassa</Italian>
<Spanish>Subir/Bajar</Spanish> <Spanish>Subir/Bajar</Spanish>
<French>Lever/Baisser</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,13 +1,17 @@
class ACE_Settings { class ACE_Settings {
class GVAR(RequireSpecialist) { class GVAR(requireSpecialist) {
displayName = CSTRING(RequireSpecialist_DisplayName);
description = CSTRING(RequireSpecialist_Description);
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
}; };
class GVAR(PunishNonSpecialists) { class GVAR(punishNonSpecialists) {
displayName = CSTRING(PunishNonSpecialists_DisplayName);
description = CSTRING(PunishNonSpecialists_Description);
value = 1; value = 1;
typeName = "BOOL"; typeName = "BOOL";
}; };
class GVAR(ExplodeOnDefuse) { class GVAR(explodeOnDefuse) {
displayName = CSTRING(ExplodeOnDefuse_DisplayName); displayName = CSTRING(ExplodeOnDefuse_DisplayName);
description = CSTRING(ExplodeOnDefuse_Description); description = CSTRING(ExplodeOnDefuse_Description);
value = 1; value = 1;

View File

@ -31,14 +31,14 @@ class CfgAmmo {
class ClaymoreDirectionalMine_Remote_Ammo: DirectionalBombBase { class ClaymoreDirectionalMine_Remote_Ammo: DirectionalBombBase {
GVAR(magazine) = "ClaymoreDirectionalMine_Remote_Mag"; GVAR(magazine) = "ClaymoreDirectionalMine_Remote_Mag";
GVAR(Explosive) = "ClaymoreDirectionalMine_Remote_Ammo_Scripted"; GVAR(Explosive) = "ClaymoreDirectionalMine_Remote_Ammo_Scripted";
GVAR(defuseObjectPosition[]) = {0, 0, 0.038}; GVAR(defuseObjectPosition)[] = {0, 0, 0.038};
soundActivation[] = {"", 0, 0, 0}; soundActivation[] = {"", 0, 0, 0};
soundDeactivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0};
}; };
// class ClaymoreDirectionalMine_Remote_Ammo_Scripted: ClaymoreDirectionalMine_Remote_Ammo {}; // class ClaymoreDirectionalMine_Remote_Ammo_Scripted: ClaymoreDirectionalMine_Remote_Ammo {};
class APERSTripMine_Wire_Ammo: DirectionalBombBase { class APERSTripMine_Wire_Ammo: DirectionalBombBase {
GVAR(defuseObjectPosition[]) = {-1.415, 0, 0.12}; GVAR(defuseObjectPosition)[] = {-1.415, 0, 0.12};
}; };
class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase { class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase {
@ -66,7 +66,7 @@ class CfgAmmo {
class DemoCharge_Remote_Ammo: PipeBombBase { class DemoCharge_Remote_Ammo: PipeBombBase {
GVAR(magazine) = "DemoCharge_Remote_Mag"; GVAR(magazine) = "DemoCharge_Remote_Mag";
GVAR(Explosive) = "DemoCharge_Remote_Ammo_Scripted"; GVAR(Explosive) = "DemoCharge_Remote_Ammo_Scripted";
GVAR(defuseObjectPosition[]) = {0.07, 0, 0.055}; GVAR(defuseObjectPosition)[] = {0.07, 0, 0.055};
soundActivation[] = {"", 0, 0, 0}; soundActivation[] = {"", 0, 0, 0};
soundDeactivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0};
hit = 500; hit = 500;
@ -76,7 +76,7 @@ class CfgAmmo {
class SatchelCharge_Remote_Ammo: PipeBombBase { class SatchelCharge_Remote_Ammo: PipeBombBase {
GVAR(magazine) = "SatchelCharge_Remote_Mag"; GVAR(magazine) = "SatchelCharge_Remote_Mag";
GVAR(Explosive) = "SatchelCharge_Remote_Ammo_Scripted"; 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}; soundActivation[] = {"", 0, 0, 0};
soundDeactivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0};
}; };

View File

@ -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)); 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));
};
};

View File

@ -1,3 +1,6 @@
class CBA_Extended_EventHandlers;
class CfgVehicles { class CfgVehicles {
class Man; class Man;
class CAManBase: Man { class CAManBase: Man {
@ -37,15 +40,17 @@ class CfgVehicles {
class Items_base_F; class Items_base_F;
class ACE_DefuseObject: Items_base_F { class ACE_DefuseObject: Items_base_F {
XEH_ENABLED; class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
author = "ACE"; author = "ACE";
_generalMacro = "ACE_DefuseObject"; _generalMacro = "ACE_DefuseObject";
displayName = "ACE Defuse Helper"; displayName = "ACE Defuse Helper";
mapSize = 0.2; mapSize = 0.2;
icon = "iconObject_1x2"; icon = "iconObject_1x2";
model = "\A3\Weapons_f\dummyweapon.p3d"; model = "\A3\Weapons_f\dummyweapon.p3d";
scope = 2; scope = 1;
scopeCurator = 1;
vehicleClass = "Cargo"; vehicleClass = "Cargo";
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {
@ -60,31 +65,31 @@ class CfgVehicles {
showDisabled = 0; showDisabled = 0;
icon = PATHTOF(UI\Defuse_ca.paa); icon = PATHTOF(UI\Defuse_ca.paa);
priority = 0.8; priority = 0.8;
distance = 1;
}; };
}; };
}; };
}; };
class ACE_Explosives_Place: Items_base_F { class ACE_Explosives_Place: Items_base_F {
XEH_ENABLED; class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
author = "ACE"; author = "ACE";
_generalMacro = "ACE_Explosives_Place"; _generalMacro = "ACE_Explosives_Place";
displayName = "Multi-meter"; displayName = "Multi-meter";
mapSize = 0.2; mapSize = 0.2;
icon = "iconObject_1x2"; icon = "iconObject_1x2";
model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d"; model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d";
scope = 2; scope = 1;
scopeCurator = 1;
vehicleClass = "Cargo"; vehicleClass = "Cargo";
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {
selection = ""; selection = "";
distance = 1; distance = 1.5;
condition = "true"; condition = "true";
class ACE_SetTrigger { class ACE_SetTrigger {
selection = ""; selection = "";
displayName = CSTRING(TriggerMenu); displayName = CSTRING(TriggerMenu);
distance = 1;
condition = "true"; condition = "true";
statement = ""; statement = "";
insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions);); insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions););
@ -96,7 +101,6 @@ class CfgVehicles {
class ACE_PickUp { class ACE_PickUp {
selection = ""; selection = "";
displayName = CSTRING(Pickup); displayName = CSTRING(Pickup);
distance = 1;
condition = "true"; condition = "true";
statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;); statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;);
showDisabled = 0; showDisabled = 0;

Some files were not shown because too many files have changed in this diff Show More