diff --git a/AUTHORS.txt b/AUTHORS.txt
index 8c22096033..f4ebd317eb 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -44,6 +44,7 @@ BlackPixxel
BlackQwar
Brakoviejo
Brisse
+Brostrom.A | Evul
BullHorn
Clon1998
Codingboy
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6b7f1006fa..ed17a41e67 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -14,7 +14,7 @@ Indicate if the issue appears on stable or development version. In case it is th
## Reporting the issue
-Head over to the ACE3 GitHub issue tracker and press the "New issue" button in the top right corner. Add a descriptive title and copy the following issue template in to the text area:
+Head over to the [ACE3 GitHub issue tracker](https://github.com/acemod/ACE3/issues) and press the [New issue](https://github.com/acemod/ACE3/issues/new) button in the top right corner. Add a descriptive title and copy the following issue template in to the text area:
```
ACE3 Version: 3.x.x
@@ -43,8 +43,8 @@ ACE3 Version: 3.x.x
A video of the issue might be helpful in resolving it faster.
+GitHub uses [Markdown](http://daringfireball.net/projects/markdown/syntax) to style the output. If you want to know more about it (e.g. how to [turn text bold](https://help.github.com/articles/markdown-basics/#styling-text), how to denote [code blocks](https://help.github.com/articles/markdown-basics/#inline-formats) or [inline code](https://help.github.com/articles/markdown-basics/#multiple-lines)) have a look at the [GitHub Markdown Documentation](https://help.github.com/articles/github-flavored-markdown).
-Github uses "Markdown" to style the output. If you want to know more about it (e.g. how to turn text bold , how to denote code blocks or inline code ) have a look at the GitHub markdown documentation .
# Feature Requests
@@ -54,11 +54,11 @@ ACE2, AGM and CSE had a lot of features implemented or planned. All of them are
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
## Requesting a feature
-In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for ACE 3 Feature requests . 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/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.
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
# Regarding Pull Requests (PRs)
-- You want to help but don't know where to start ? Check the wiki entry for [setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html)
+- You want to help but don't know where to start? Check the wiki entry for [setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html)
- [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)
diff --git a/README.md b/README.md
index ecbc0dd01d..a407f5a299 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,35 @@
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-Requires the latest version of CBA A3 . Visit us on Facebook | YouTube | Twitter | Reddit
+
+
+ Requires the latest version of CBA A3 .
+ Visit us on Twitter | Facebook | YouTube | Reddit
+
**ACE3** is a joint effort by the teams behind **ACE2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3.
@@ -43,6 +48,7 @@ The mod is **built modularly**, so almost any included PBO can be easily removed
- Captivity system
- Explosives system, including different trigger types
- Map screen improvements – marker placement and map tools
+- Logistics
- Advanced missile guidance and laser designation
#### Additional features
diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp
index de6a757bf3..0cfda46128 100644
--- a/addons/captives/CfgVehicles.hpp
+++ b/addons/captives/CfgVehicles.hpp
@@ -153,16 +153,32 @@ class CfgVehicles {
class GVAR(ModuleSurrender): Module_F {
author = ECSTRING(common,ACETeam);
category = "ACE";
- displayName = CSTRING(ModuleSurrender_DisplayName); //Make Unit Surrender
+ displayName = CSTRING(ModuleSurrender_DisplayName);
function = QFUNC(moduleSurrender);
scope = 2; //show in editor
- isGlobal = 1; //run global
+ isGlobal = 0; //run on server
isTriggerActivated = 1; //Wait for triggers
icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa));
functionPriority = 0;
class Arguments {};
class ModuleDescription: ModuleDescription {
- description = CSTRING(ModuleSurrender_Description); //Sync a unit to make them surrender. Source: ace_captives
+ description = CSTRING(ModuleSurrender_Description);
+ sync[] = {"AnyAI"};
+ };
+ };
+ class GVAR(ModuleHandcuffed): Module_F {
+ author = ECSTRING(common,ACETeam);
+ category = "ACE";
+ displayName = CSTRING(ModuleHandcuffed_DisplayName);
+ function = QFUNC(moduleHandcuffed);
+ scope = 2; //show in editor
+ isGlobal = 0; //run on server
+ isTriggerActivated = 1; //Wait for triggers
+ icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Handcuffed_ca.paa));
+ functionPriority = 0;
+ class Arguments {};
+ class ModuleDescription: ModuleDescription {
+ description = CSTRING(ModuleHandcuffed_Description);
sync[] = {"AnyAI"};
};
};
diff --git a/addons/captives/UI/Icon_Module_Make_Unit_Handcuffed_ca.paa b/addons/captives/UI/Icon_Module_Make_Unit_Handcuffed_ca.paa
new file mode 100644
index 0000000000..85c556cb2a
Binary files /dev/null and b/addons/captives/UI/Icon_Module_Make_Unit_Handcuffed_ca.paa differ
diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf
index b59249b937..dcc585ef8e 100644
--- a/addons/captives/XEH_preInit.sqf
+++ b/addons/captives/XEH_preInit.sqf
@@ -24,6 +24,7 @@ PREP(handlePlayerChanged);
PREP(handleRespawn);
PREP(handleUnitInitPost);
PREP(handleZeusDisplayChanged);
+PREP(moduleHandcuffed);
PREP(moduleSettings);
PREP(moduleSurrender);
PREP(setHandcuffed);
diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp
index cdaf6dc4e4..a9ec2950ee 100644
--- a/addons/captives/config.cpp
+++ b/addons/captives/config.cpp
@@ -2,7 +2,7 @@
class CfgPatches {
class ADDON {
- units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender)};
+ units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender), QGVAR(ModuleHandcuffed)};
weapons[] = {"ACE_CableTie"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"};
diff --git a/addons/captives/functions/fnc_canApplyHandcuffs.sqf b/addons/captives/functions/fnc_canApplyHandcuffs.sqf
index 368ce3cb7a..f5fa666652 100644
--- a/addons/captives/functions/fnc_canApplyHandcuffs.sqf
+++ b/addons/captives/functions/fnc_canApplyHandcuffs.sqf
@@ -20,11 +20,12 @@ params ["_unit", "_target"];
//Check sides, Player has cableTie, target is alive and not already handcuffed
(GVAR(allowHandcuffOwnSide) || {(side _unit) != (side _target)}) &&
-("ACE_CableTie" in (items _unit)) &&
+{"ACE_CableTie" in (items _unit)} &&
{alive _target} &&
{!(_target getVariable [QGVAR(isHandcuffed), false])} &&
{
(_target getVariable ["ACE_isUnconscious", false]) || //isUnconscious
+ {!([_target] call EFUNC(common,isPlayer))} || //is an AI (not a player)
{GVAR(requireSurrender) == 0} || //or don't require surrendering
{_target getVariable [QGVAR(isSurrendering), false]} || //or is surrendering
{(GVAR(requireSurrender) == 2) && {(currentWeapon _target) == ""}} //or "SurrenderOrNoWeapon" and no weapon
diff --git a/addons/captives/functions/fnc_moduleHandcuffed.sqf b/addons/captives/functions/fnc_moduleHandcuffed.sqf
new file mode 100644
index 0000000000..4c6cc4c6fc
--- /dev/null
+++ b/addons/captives/functions/fnc_moduleHandcuffed.sqf
@@ -0,0 +1,35 @@
+/*
+ * Author: PabstMirror
+ * Module Function to make a unit handcuffed (can be called from editor)
+ *
+ * Arguments:
+ * 0: The Module Logic
+ * 1: synced objects
+ * 2: Activated
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * Called from module
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+params ["_logic", "_units", "_activated"];
+
+TRACE_3("params",_logic,_units,_activated);
+
+if (!_activated) exitWith {};
+if (!isServer) exitWith {};
+
+//Modules run before postInit can instal the event handler, so we need to wait a little bit
+[{
+ params ["_units"];
+ {
+ ["SetHandcuffed", [_x], [_x, true]] call EFUNC(common,targetEvent);
+ } forEach _units;
+}, [_units], 0.05] call EFUNC(common,waitAndExecute);
+
+deleteVehicle _logic;
diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf
index bdb0f7c1b5..f5c091a78a 100644
--- a/addons/captives/functions/fnc_moduleSurrender.sqf
+++ b/addons/captives/functions/fnc_moduleSurrender.sqf
@@ -1,9 +1,9 @@
/*
* Author: PabstMirror
- * Module Function to make a unit surrender (can be called from editor, or placed with zeus)
+ * Module Function to make a unit surrender (can be called from editor)
*
* Arguments:
- * 0: The Module Logic Object
+ * 0: The Module Logic
* 1: synced objects
* 2: Activated
*
@@ -17,20 +17,19 @@
*/
#include "script_component.hpp"
-private ["_bisMouseOver", "_mouseOverObject"];
-
params ["_logic", "_units", "_activated"];
+TRACE_3("params",_logic,_units,_activated);
+
if (!_activated) exitWith {};
+if (!isServer) exitWith {};
-if (local _logic) then {
- //Modules run before postInit can instal the event handler, so we need to wait a little bit
- [{
- params ["_units"];
- {
- ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
- } forEach _units;
- }, [_units], 0.05]call EFUNC(common,waitAndExecute);
+//Modules run before postInit can instal the event handler, so we need to wait a little bit
+[{
+ params ["_units"];
+ {
+ ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
+ } forEach _units;
+}, [_units], 0.05] call EFUNC(common,waitAndExecute);
- deleteVehicle _logic;
-};
+deleteVehicle _logic;
diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf
index 00122862eb..0bc2e85c52 100644
--- a/addons/captives/functions/fnc_setHandcuffed.sqf
+++ b/addons/captives/functions/fnc_setHandcuffed.sqf
@@ -56,8 +56,11 @@ if (_state) then {
//Adds an animation changed eh
//If we get a change in animation then redo the animation (handles people vaulting to break the animation chain)
- private "_animChangedEHID";
-
+ local _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
+ if (_animChangedEHID != -1) then {
+ TRACE_1("removing animChanged EH",_animChangedEHID);
+ _unit removeEventHandler ["AnimChanged", _animChangedEHID];
+ };
_animChangedEHID = _unit addEventHandler ["AnimChanged", {
params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_unit,_newAnimation);
@@ -67,7 +70,6 @@ if (_state) then {
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
};
} else {
-
_turretPath = [];
{
_x params ["_xUnit", "", "", "_xTurretPath"];
@@ -90,8 +92,7 @@ if (_state) then {
[_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus);
//remove AnimChanged EH
- private "_animChangedEHID";
- _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
+ local _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
TRACE_1("removing animChanged EH",_animChangedEHID);
_unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(handcuffAnimEHID), -1];
diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf
index cdba47a406..171455f3b1 100644
--- a/addons/captives/functions/fnc_setSurrendered.sqf
+++ b/addons/captives/functions/fnc_setSurrendered.sqf
@@ -48,7 +48,11 @@ if (_state) then {
if (_unit getVariable [QGVAR(isSurrendering), false] && {(vehicle _unit) == _unit}) then {
//Adds an animation changed eh
//If we get a change in animation then redo the animation (handles people vaulting to break the animation chain)
- private "_animChangedEHID";
+ local _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
+ if (_animChangedEHID != -1) then {
+ TRACE_1("removing animChanged EH",_animChangedEHID);
+ _unit removeEventHandler ["AnimChanged", _animChangedEHID];
+ };
_animChangedEHID = _unit addEventHandler ["AnimChanged", {
params ["_unit", "_newAnimation"];
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
@@ -64,8 +68,7 @@ if (_state) then {
[_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus);
//remove AnimChanged EH
- private "_animChangedEHID";
- _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
+ local _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
_unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(surrenderAnimEHID), -1];
diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml
index 864fa7c437..d4166a495d 100644
--- a/addons/captives/stringtable.xml
+++ b/addons/captives/stringtable.xml
@@ -1,4 +1,4 @@
-
+
@@ -99,7 +99,7 @@
Cable ties that allow you to restrain prisoners.
- Kabelbinder ermöglichen es, Gefangene zu fesseln.
+ Mit Kabelbindern können Gefangene gefesselt werden.
Opaska zaciskowa pozwala na skrępowanie dłoni u więźnia.
Los precintos permiten maniatar prisioneros
Les Serflex permettent de menotter les prisonniers.
@@ -179,6 +179,12 @@
Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives
Синхронизируйте с юнитами, чтобы сделать их пленными.<br />Источник: ace_captives
+
+ Make Unit Handcuffed
+
+
+ Sync a unit to make them handcuffed.<br />Source: ace_captives
+
Captives Settings
Ustawienia więźniów
@@ -206,7 +212,7 @@
Skuwanie sojuszników
Se puede esposar el bando propio
Může spoutat spolubojovníky
- Kann Teamkollegen fesseln
+ Kann Kameraden fesseln
Pode algemar o próprio lado
Peut libérer sa propre faction
Saját oldal megbilincselhető
@@ -217,7 +223,7 @@
Czy gracze mogą skuwać sojuszników?
Pueden los jugadores esposar unidades en su propio bando
Mohou hráči spoutat jednotky na své straně
- Können Spieler eigene Einheiten fesseln
+ Spieler können eigene Einheiten fesseln.
Os jogadores podem algemar unidades do seu lado
Les joueurs peuvent utiliser les Serflex sur leur propre camp
A játékosok megkötözhetik-e a saját oldalukon lévő egységeket
@@ -239,7 +245,7 @@
Gracze mogą skapitulować po schowaniu swojej broni do kabury
Los jugadores pueden rendirse después de enfundar su arma
Hráč se může vzdát poté, co si skryje zbraň
- Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben
+ Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben.
Jogadores podem se render depois de guardar sua arma
Les joueurs peuvent se rendre après avoir rangé leur arme
A játékosok megadhatják magukat a fegyverük elrakása után
@@ -247,6 +253,7 @@
Require surrendering
+ Benötigt Kapitulation
Wymagaj kapitulacji
Requer rendição
Требовать пленения
@@ -254,6 +261,7 @@
Require Players to surrender before they can be arrested
+ Spieler müssen sich erst ergeben, bevor sie gefangen genommen werden können
Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować
Requer que jogadores se rendam antes de poderem ser presos
Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать
@@ -261,6 +269,7 @@
Surrendering only
+ Nur Ergeben
Tylko kapitulacja
Somente rendição
Только сдавшийся в плен
@@ -268,6 +277,7 @@
Surrendering or No weapon
+ Ergeben oder keine Waffe
Kapitulacja lub brak broni
Rendição ou desarmado
Сдавшийся или безоружный
diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp
index 90fc439b60..1204c35496 100644
--- a/addons/cargo/CfgVehicles.hpp
+++ b/addons/cargo/CfgVehicles.hpp
@@ -172,6 +172,13 @@ class CfgVehicles {
GVAR(hasCargo) = 0;
};
+ // autonomus
+ class Helicopter_Base_F;
+ class UAV_01_base_F: Helicopter_Base_F {
+ GVAR(space) = 0;
+ GVAR(hasCargo) = 0;
+ };
+
// boats
class Ship;
class Ship_F: Ship {
diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf
index e1cc807bdc..a9b10c4896 100644
--- a/addons/common/XEH_preInit.sqf
+++ b/addons/common/XEH_preInit.sqf
@@ -223,6 +223,7 @@ PREP(getTurretCopilot);
PREP(getDoorTurrets);
PREP(getTurretsFFV);
PREP(getTurretsOther);
+PREP(hasHatch);
// missing inventory commands
PREP(binocularMagazine);
diff --git a/addons/common/functions/fnc_hasHatch.sqf b/addons/common/functions/fnc_hasHatch.sqf
new file mode 100644
index 0000000000..124eed78a5
--- /dev/null
+++ b/addons/common/functions/fnc_hasHatch.sqf
@@ -0,0 +1,35 @@
+/*
+ * Author: commy2
+ * Check if unit is in a vehicle position where it can turn in or out.
+ *
+ * Arguments:
+ * 0: Unit
+ *
+ * Return Value:
+ * Unit has a hatch?
+ *
+ * Public: Yes
+ */
+#include "script_component.hpp"
+
+params ["_unit"];
+
+local _vehicle = vehicle _unit;
+
+if (_unit == _vehicle) exitWith {false};
+
+local _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
+
+if (getNumber (_config >> "hideProxyInCombat") != 1) exitWith {false};
+
+if (_unit == driver _vehicle) exitWith {
+ getNumber (_config >> "forceHideDriver") == 0; // return
+};
+
+local _turret = [_unit] call FUNC(getTurretIndex);
+
+if (_turret isEqualTo []) exitWith {false};
+
+local _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath);
+
+getNumber (_turretConfig >> "forceHideGunner") == 0; // return
diff --git a/addons/common/functions/fnc_waitUntilAndExecute.sqf b/addons/common/functions/fnc_waitUntilAndExecute.sqf
index 6a7867d707..bbc6c540fe 100644
--- a/addons/common/functions/fnc_waitUntilAndExecute.sqf
+++ b/addons/common/functions/fnc_waitUntilAndExecute.sqf
@@ -11,7 +11,7 @@
* None
*
* Example:
- * [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player]] call ace_common_fnc_waitAndExecute
+ * [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player]] call ace_common_fnc_waitUntilAndExecute
*
* Public: No
*/
diff --git a/addons/dagr/stringtable.xml b/addons/dagr/stringtable.xml
index 1abd146800..a164ac51f3 100644
--- a/addons/dagr/stringtable.xml
+++ b/addons/dagr/stringtable.xml
@@ -6,24 +6,28 @@
DAGR
DAGR
DAGR
+ DAGR
Configure DAGR
Konfiguruj DAGR
Configurar DAGR
Настроить DAGR
+ Configurar DAGR
Toggle DAGR
Przełącz DAGR
Mostrar DAGR
Вкл./выкл. DAGR
+ Mostrar DAGR
Defense Advanced GPS Receiver
Defense Advanced GPS Receiver
Defense Advanced GPS Receiver
Военный многофункциональный GPS-приёмник
+ Defense Advanced GPS Receiver
-
+
\ No newline at end of file
diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml
index 4535a8e62e..417493fc75 100644
--- a/addons/dragging/stringtable.xml
+++ b/addons/dragging/stringtable.xml
@@ -1,4 +1,4 @@
-
+
@@ -53,6 +53,7 @@
Raise/Lower
Heben/Senken
Wyżej/Niżej
+ Levantar/Abaixar
-
+
\ No newline at end of file
diff --git a/addons/fcs/XEH_clientInit.sqf b/addons/fcs/XEH_clientInit.sqf
index f5131dd135..3338e739e1 100644
--- a/addons/fcs/XEH_clientInit.sqf
+++ b/addons/fcs/XEH_clientInit.sqf
@@ -1,7 +1,7 @@
#include "script_component.hpp"
GVAR(enabled) = false;
-GVAR(ACE_time) = 0;
+GVAR(time) = 0;
GVAR(position) = [0,0,0];
if (!hasInterface) exitWith {};
diff --git a/addons/fcs/functions/fnc_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf
index a56e94bbf1..cea7196570 100644
--- a/addons/fcs/functions/fnc_keyDown.sqf
+++ b/addons/fcs/functions/fnc_keyDown.sqf
@@ -22,7 +22,7 @@ _distance = call FUNC(getRange);
if !(!GVAR(enabled) && FUNC(canUseFCS)) exitWith {};
GVAR(Enabled) = true;
-GVAR(Time) = ACE_time;
+GVAR(time) = ACE_time;
if (_distance == 0) then {
_distance = [5, 5000, 0] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision
diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf
index 1e831d6df3..ca4b791a7c 100644
--- a/addons/fcs/functions/fnc_keyUp.sqf
+++ b/addons/fcs/functions/fnc_keyUp.sqf
@@ -60,7 +60,7 @@ private ["_movingAzimuth", "_posTarget", "_velocityTarget"];
// MOVING TARGETS
_movingAzimuth = 0;
-if (ACE_time - GVAR(ACE_time) > 1 and GVAR(ACE_time) != -1 and count _this < 3) then {
+if (ACE_time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then {
// calculate speed of target
_posTarget = [
(getPos _vehicle select 0) + _distance * (_weaponDirection select 0),
@@ -68,9 +68,9 @@ if (ACE_time - GVAR(ACE_time) > 1 and GVAR(ACE_time) != -1 and count _this < 3)
(getPos _vehicle select 2) + _distance * (_weaponDirection select 2)
];
_velocityTarget = [
- ((_posTarget select 0) - (GVAR(position) select 0)) / (ACE_time - GVAR(ACE_time)),
- ((_posTarget select 1) - (GVAR(position) select 1)) / (ACE_time - GVAR(ACE_time)),
- ((_posTarget select 2) - (GVAR(position) select 2)) / (ACE_time - GVAR(ACE_time))
+ ((_posTarget select 0) - (GVAR(position) select 0)) / (ACE_time - GVAR(time)),
+ ((_posTarget select 1) - (GVAR(position) select 1)) / (ACE_time - GVAR(time)),
+ ((_posTarget select 2) - (GVAR(position) select 2)) / (ACE_time - GVAR(time))
];
private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef", "_velocityMagnitude"];
@@ -90,7 +90,7 @@ if (ACE_time - GVAR(ACE_time) > 1 and GVAR(ACE_time) != -1 and count _this < 3)
if (_initSpeedCoef > 0) then {
_initSpeed = _initSpeedCoef;
};
-
+
if (_simulationStep != 0) then {
private ["_posX", "_velocityX", "_velocityY", "_timeToTarget"];
@@ -130,7 +130,7 @@ if (ACE_time - GVAR(ACE_time) > 1 and GVAR(ACE_time) != -1 and count _this < 3)
};
};
GVAR(enabled) = false;
-GVAR(ACE_time) = -1;
+GVAR(time) = -1;
private ["_viewDiff", "_FCSAzimuth", "_FCSMagazines", "_FCSElevation"];
@@ -157,7 +157,7 @@ _FCSElevation = [];
_maxElev = getNumber (_turretConfig >> "maxElev");
_initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed");
_airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction");
-
+
{
private ["_weapon", "_muzzles", "_weaponMagazines", "_muzzleMagazines"];
_weapon = _x;
@@ -179,7 +179,7 @@ _FCSElevation = [];
};
};
} forEach _weapons;
-
+
_offset = "ace_fcs" callExtension format ["%1,%2,%3,%4", _initSpeed, _airFriction, _angleTarget, _distance];
_offset = parseNumber _offset;
@@ -209,4 +209,4 @@ if(_playSound) then {
if(_showHint) then {
[format ["%1: %2", localize LSTRING(ZeroedTo), _distance]] call EFUNC(common,displayTextStructured);
-};
\ No newline at end of file
+};
diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml
index 0488a13493..92547e8632 100644
--- a/addons/map/stringtable.xml
+++ b/addons/map/stringtable.xml
@@ -259,10 +259,12 @@
Set Channel At Start
Ust. domyślny kanał
+ Definir canal no início
Change the starting marker channel at mission start
Ustaw domyślny kanał dla markerów przy starcie misji
+ Muda o canal do marcador no início da missão
\ No newline at end of file
diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml
index 3da02aa2b0..5b6b0f641d 100644
--- a/addons/map_gestures/stringtable.xml
+++ b/addons/map_gestures/stringtable.xml
@@ -3,72 +3,95 @@
Map Gestures
+ Gestos no mapa
Enabled
+ Ativado
Map Gesture Max Range
+ Distância para gestos no mapa
Max range between players to show the map gesture indicator [default: 7 meters]
+ Distância max. entre os jogadores para mostrar o indicador de gesto no mapa [padrão: 7 metros]
Lead Default Color
+ Cor padrão para o líder
Fallback Color value for group leaders when there is no group setting. [Module: leave blank to not force on clients]
+ Valor de cor alternativa para líderes de grupo
Default Color
+ Cor padrão
Fallback Color value when there is no group setting. [Module: leave blank to not force on clients]
+ Valor alternativo de cor
Lead Color
+ Cor do líder
Color value for group leaders of groups synced with this module.
+ Valor de cor para líderes de grupo sincronizados com este módulo.
Color
+ Cor
Color value for group members of groups synced with this module.
+ Valor de cor para membros de grupo sincronizados com este módulo.
Map Gestures - Group Settings
+ Gestos no mapa - Definições de Grupo
Update Interval
+ Intervalo de atualizações
Time between data updates.
+ Tempo entre atualização de dados
Group color configurations
+ Configurações de cores de grupo
Group color configuration containing arrays of color pairs ([leadColor, color]).
+ Configuração de cores de grupo contendo arrays com pares de cores ([leadColor, color]).
Hash of Group ID mapped to the Group color configuration index.
+ Hashes de ID de grupos mapeados para o índice de configuração de cor de grupos.
GroupID Color configuration mapping
+ Mapeamento de configuração para cores de GroupID
Enables the Map Gestures.
+ Ativa os gestos no mapa
Name Text Color
+ Cor do texto do nome
Color of the name tag text besides the map gestures mark.
+ Cor do texto da etiqueta de nome que fica embaixo da marcação de gestos no mapa.
Map Gestures
+ Gestos no mapa
-
+
\ No newline at end of file
diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index b17610b0e3..02b5375e96 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -154,13 +154,13 @@ class ACE_Settings {
category = CSTRING(Category_Medical);
typeName = "SCALAR";
value = 3;
- values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"};
+ values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
};
class GVAR(useLocation_SurgicalKit) {
category = CSTRING(Category_Medical);
typeName = "SCALAR";
value = 2;
- values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"};
+ values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
};
class GVAR(useCondition_PAK) {
category = CSTRING(Category_Medical);
diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf
index 2625bf4b8a..9563752d92 100644
--- a/addons/medical/XEH_preInit.sqf
+++ b/addons/medical/XEH_preInit.sqf
@@ -70,6 +70,7 @@ PREP(setDead);
PREP(setHitPointDamage);
PREP(setStructuralDamage);
PREP(setUnconscious);
+PREP(translateSelections);
PREP(treatment);
PREP(treatment_failure);
PREP(treatment_success);
diff --git a/addons/medical/functions/fnc_canTreat.sqf b/addons/medical/functions/fnc_canTreat.sqf
index ba6ced0486..60685ee20a 100644
--- a/addons/medical/functions/fnc_canTreat.sqf
+++ b/addons/medical/functions/fnc_canTreat.sqf
@@ -11,6 +11,9 @@
* ReturnValue:
* Can Treat
*
+ * Example:
+ * [player, cursorTarget, "Head", "SurgicalKit"] call ace_medical_fnc_canTreat
+ *
* Public: Yes
*/
@@ -85,10 +88,11 @@ _medVeh = {([_caller] call FUNC(isInMedicalVehicle)) || ([_target] call FUNC(isI
_val = missionNamespace getvariable _x;
if (typeName _val == "SCALAR") then {
_return = switch (_val) do {
- case 0: {true};
- case 1: _medVeh;
- case 2: _medFacility;
- case 3: {call _medFacility || call _medVeh};
+ case 0: {true}; //AdvancedMedicalSettings_anywhere
+ case 1: {call _medVeh}; //AdvancedMedicalSettings_vehicle
+ case 2: {call _medFacility}; //AdvancedMedicalSettings_facility
+ case 3: {(call _medFacility) || {call _medVeh}}; //AdvancedMedicalSettings_vehicleAndFacility
+ default {false}; //Disabled
};
};
};
diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf
index c234574abc..54fd6694dd 100644
--- a/addons/medical/functions/fnc_createLitter.sqf
+++ b/addons/medical/functions/fnc_createLitter.sqf
@@ -45,12 +45,9 @@ _createLitter = {
if(surfaceIsWater (getPos _unit)) exitWith { false };
_position = getPosATL _unit;
- _position params ["_posX", "_posY"];
- _position = if (random(1) >= 0.5) then {
- [_posX + random 1, _posY + random 1, 0]
- } else {
- [_posX - random 1, _posY - random 1, 0];
- };
+ _position params ["_posX", "_posY", "_posZ"];
+ _position = [_posX + (random 2) - 1, _posY + (random 2) - 1, _posZ];
+
_direction = (random 360);
// Create the litter, and timeout the event based on the cleanup delay
diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf
index afcf6e12e5..4174f3a0f3 100644
--- a/addons/medical/functions/fnc_handleDamage.sqf
+++ b/addons/medical/functions/fnc_handleDamage.sqf
@@ -39,6 +39,13 @@ TRACE_3("ACE_DEBUG: HandleDamage",_selection,_damage,_unit);
if (_selection == "hands") exitWith {_unit getHit "hands"};
if (_selection == "legs") exitWith {_unit getHit "legs"};
+// Deal with the new hitpoint and selection names introduced with Arma v1.50 and later.
+// This will convert new selection names into selection names that the medical system understands
+// TODO This should be cleaned up when we revisit the medical system at a later stage
+// and instead we should deal with the new hitpoints directly
+_selection = [_selection] call FUNC(translateSelections);
+_this set [1, _selection]; // ensure that the parameters are set correctly
+
// If the damage is being weird, we just tell it to fuck off. Ignore: "hands", "legs", "?"
if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@todo "neck", "pelvis", "spine1", "spine2", "spine3"
diff --git a/addons/medical/functions/fnc_translateSelections.sqf b/addons/medical/functions/fnc_translateSelections.sqf
new file mode 100644
index 0000000000..410005888e
--- /dev/null
+++ b/addons/medical/functions/fnc_translateSelections.sqf
@@ -0,0 +1,37 @@
+/*
+ * Author: Glowbal
+ * Translate selection names into medical usable hit selection names.
+ * Aims to deal with the new hitpoint system introduced in Arma3 v1.50 and later.
+ *
+ * Arguments:
+ * 0: selection name
+ *
+ * Return Value:
+ * translated selection name
+ *
+ * Example:
+ * ["pelvis"] call ace_medical_fnc_translateSelections
+ * Returns "body"
+ *
+ * Public: No
+ */
+
+#define HEAD_SELECTIONS ["face_hub", "neck", "head"]
+#define TORSO_SELECTIONS ["pelvis", "spine1", "spine2", "spine3", "body"]
+#define L_ARM_SELECTIONS ["hand_l"]
+#define R_ARM_SELECTIONS ["hand_r"]
+#define L_LEG_SELECTIONS ["leg_l"]
+#define R_LEG_SELECTIONS ["leg_r"]
+
+params ["_selection"];
+
+if (_selection in HEAD_SELECTIONS) exitwith {"head"};
+if (_selection in TORSO_SELECTIONS) exitwith {"body"};
+
+// Not necessary unless we get more hitpoints variants in an next arma update
+/*if (_selection in L_ARM_SELECTIONS) exitwith {"hand_l"};
+if (_selection in R_ARM_SELECTIONS) exitwith {"hand_r"};
+if (_selection in L_LEG_SELECTIONS) exitwith {"leg_l"};
+if (_selection in R_LEG_SELECTIONS) exitwith {"leg_r"};*/
+
+_selection;
diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf
index 5e97e31501..2d0e44d488 100644
--- a/addons/medical/functions/fnc_treatment.sqf
+++ b/addons/medical/functions/fnc_treatment.sqf
@@ -100,10 +100,11 @@ if ("All" in _locations) then {
_val = missionNamespace getvariable _x;
if (typeName _val == "SCALAR") then {
_return = switch (_val) do {
- case 0: {true};
- case 1: _medVeh;
- case 2: _medFacility;
- case 3: {call _medFacility || call _medVeh};
+ case 0: {true}; //AdvancedMedicalSettings_anywhere
+ case 1: {call _medVeh}; //AdvancedMedicalSettings_vehicle
+ case 2: {call _medFacility}; //AdvancedMedicalSettings_facility
+ case 3: {(call _medFacility) || {call _medVeh}}; //AdvancedMedicalSettings_vehicleAndFacility
+ default {false}; //Disabled
};
};
};
diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 8b4282c555..0a75d67583 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -2105,10 +2105,12 @@
%1 wykonał cykl RKO
%1 провел сердечно-легочную реанимацию
%1 realicó RCP
+ %1 realizou RCP
%1 used Personal Aid Kit
%1 użył apteczki
+ %1 utilizou KPS
Heavily wounded
@@ -2223,6 +2225,7 @@
Lecz w pełni zabandażowane hitpointy
Curar miembros totalmente vendados
Исцелять полностью перебинтованные части тела
+ Curar hitpoints totalmente enfaixados
Pain is only temporarily suppressed
@@ -3441,12 +3444,14 @@
Lecz hitpointy
Curar puntos de vida
Исцелять части тела
+ Curar hitpoints
Heal fully bandaged hitpoints
Po bandażowaniu ulecz hitpointy, usuwając z nich ślady krwi i przywracając im pełną sprawność.
Curar miembros totalmente vendados
Исцелять полностью перебинтованные части тела
+ Curar totalmente hitpoints enfaixados
Pain suppression
@@ -3844,12 +3849,14 @@
Ta osoba (%1) jest przytomna i nie może zostać załadowana
Esta persona (%1) está despierto y no puede ser cargado
Боец (%1) в сознании и не может быть погружен
+ Esta pessoa (%1) está acordada e não pode ser carregada
There is no tourniquet on this body part!
Na tej części ciała nie ma stazy!
No hay torniquete en esta parte del cuerpo!
Нет жгута на этой части тела!
+ Não existe nenhum torniquete nesta parte do corpo!
-
+
\ No newline at end of file
diff --git a/addons/medical_menu/ACE_Settings.hpp b/addons/medical_menu/ACE_Settings.hpp
index 42bd80044f..d74a6bdfe0 100644
--- a/addons/medical_menu/ACE_Settings.hpp
+++ b/addons/medical_menu/ACE_Settings.hpp
@@ -24,4 +24,10 @@ class ACE_Settings {
isClientSettable = 1;
category = ECSTRING(medical,Category_Medical);
};
+ class GVAR(maxRange) {
+ //for ref: 3d interaction (MEDICAL_ACTION_DISTANCE) is 1.75
+ value = 3;
+ typeName = "SCALAR";
+ category = ECSTRING(medical,Category_Medical);
+ };
};
diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf
index eaf356f608..4435511b8f 100644
--- a/addons/medical_menu/XEH_postInit.sqf
+++ b/addons/medical_menu/XEH_postInit.sqf
@@ -2,6 +2,10 @@
if (!hasInterface) exitwith {};
+GVAR(MenuPFHID) = -1;
+GVAR(lastOpenedOn) = -1;
+GVAR(pendingReopen) = false;
+
["medical_treatmentSuccess", {
if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then {
@@ -15,8 +19,9 @@ if (!hasInterface) exitwith {};
["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey),
{
- _target = cursorTarget;
- if (!(_target isKindOf "CAManBase") || ACE_player distance _target > 10) then {_target = ACE_player};
+ local _target = cursorTarget;
+ if (!((_target isKindOf "CAManBase") && {[ACE_player, _target] call FUNC(canOpenMenu)})) then {_target = ACE_player};
+
// Conditions: canInteract
if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, _target] call FUNC(canOpenMenu)) exitwith {false};
@@ -27,7 +32,7 @@ if (!hasInterface) exitwith {};
},
{
if (ACE_time - GVAR(lastOpenedOn) > 0.5) exitWith {
- [ObjNull] call FUNC(openMenu);
+ [objNull] call FUNC(openMenu);
};
false
},
diff --git a/addons/medical_menu/functions/fnc_canOpenMenu.sqf b/addons/medical_menu/functions/fnc_canOpenMenu.sqf
index 9b7c3bcbff..1ef7dccf5b 100644
--- a/addons/medical_menu/functions/fnc_canOpenMenu.sqf
+++ b/addons/medical_menu/functions/fnc_canOpenMenu.sqf
@@ -10,7 +10,7 @@
* Can open
*
* Example:
- * [] call ace_medical_menu_canOpenMenu
+ * [player, cursorTarget] call ace_medical_menu_fnc_canOpenMenu
*
* Public: No
*/
@@ -18,7 +18,8 @@
params ["_caller", "_target"];
-if !(GVAR(allow) == 1 || (GVAR(allow) == 2 && {vehicle _caller != _caller || vehicle _target != _target} && {alive ACE_player})) exitwith {false};
-if !(GVAR(useMenu) == 1 || (GVAR(useMenu) == 2 && {vehicle _caller != _caller || vehicle _target != _target} && {alive ACE_player})) exitwith {false};
-
-true
+(alive _caller)
+&& {!isNull _target}
+&& {((_caller distance _target) < GVAR(maxRange)) || {(vehicle _caller) == (vehicle _target)}} //for now, ignore range when in same vehicle
+&& {(GVAR(allow) == 1) || {(GVAR(allow) == 2) && {(vehicle _caller != _caller) || {vehicle _target != _target}}}}
+&& {(GVAR(useMenu) == 1) || {(GVAR(useMenu) == 2) && {(vehicle _caller != _caller) || {vehicle _target != _target}}}}
diff --git a/addons/medical_menu/functions/fnc_collectActions.sqf b/addons/medical_menu/functions/fnc_collectActions.sqf
index ad189139ea..88f52c417a 100644
--- a/addons/medical_menu/functions/fnc_collectActions.sqf
+++ b/addons/medical_menu/functions/fnc_collectActions.sqf
@@ -20,7 +20,7 @@ _configBasic = (configFile >> "ACE_Medical_Actions" >> "Basic");
_configAdvanced = (configFile >> "ACE_Medical_Actions" >> "Advanced");
_fnc_compileActionsLevel = {
- private ["_entryCount", "_actions", "_displayName", "_condition", "_category", "_statement"];
+ private ["_actions", "_displayName", "_condition", "_category", "_statement"];
params ["_config"];
_actions = [];
@@ -40,3 +40,26 @@ _fnc_compileActionsLevel = {
GVAR(actionsBasic) = [_configBasic] call _fnc_compileActionsLevel;
GVAR(actionsAdvanced) = [_configAdvanced] call _fnc_compileActionsLevel;
+
+//Manually add the drag actions, if dragging exists.
+if (["ace_dragging"] call EFUNC(common,isModLoaded)) then {
+ _condition = {
+ (ACE_player != GVAR(INTERACTION_TARGET)) && {[ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,canDrag)}
+ };
+ _statement = {
+ GVAR(pendingReopen) = false; //No medical_treatmentSuccess event after drag, so don't want this true
+ [ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,startDrag);
+ };
+ GVAR(actionsBasic) pushBack [localize ELSTRING(dragging,Drag), "drag", _condition, _statement];
+ GVAR(actionsAdvanced) pushBack [localize ELSTRING(dragging,Drag), "drag", _condition, _statement];
+
+ _condition = {
+ (ACE_player != GVAR(INTERACTION_TARGET)) && {[ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,canCarry)}
+ };
+ _statement = {
+ GVAR(pendingReopen) = false; //No medical_treatmentSuccess event after drag, so don't want this true
+ [ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,startCarry);
+ };
+ GVAR(actionsBasic) pushBack [localize ELSTRING(dragging,Carry), "drag", _condition, _statement];
+ GVAR(actionsAdvanced) pushBack [localize ELSTRING(dragging,Carry), "drag", _condition, _statement];
+};
diff --git a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf
index 4b03d27970..2bb4499753 100644
--- a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf
+++ b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf
@@ -17,9 +17,10 @@
*/
#include "script_component.hpp"
-private "_actions";
params ["_player", "_target", "_name"];
+private ["_actions", "_collectedActions", "_bodyPart"];
+
if (!([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitwith {[]};
_actions = if (EGVAR(medical,level) == 2) then {
diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf
index dafd72d54d..e5b49e58bc 100644
--- a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf
+++ b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf
@@ -9,7 +9,7 @@
* None
*
* Example:
- * ["some category"] call ace_medical_menu_handleUI_DisplayOptions
+ * ["some category"] call ace_medical_menu_fnc_handleUI_DisplayOptions
*
* Public: No
*/
@@ -21,7 +21,7 @@
if (!hasInterface) exitwith{};
-private ["_entries", "_display", "_newTarget", "_card", "_ctrl", "_code"];
+private ["_entries", "_display", "_newTarget", "_ctrl", "_code"];
params ["_name"];
@@ -31,9 +31,11 @@ _display = uiNamespace getVariable QGVAR(medicalMenu);
if (isNil "_display") exitwith {}; // no valid dialog present
if (_name isEqualTo "toggle") exitwith {
- if (GVAR(INTERACTION_TARGET) != ACE_player) then {
- _newTarget = ACE_player;
- } else {
+ _newTarget = ACE_player;
+ //If we are on the player, and only if our old target is still valid, switch to it:
+ if ((GVAR(INTERACTION_TARGET) == ACE_player) &&
+ {[ACE_player, GVAR(INTERACTION_TARGET_PREVIOUS), ["isNotInside"]] call EFUNC(common,canInteractWith)} &&
+ {[ACE_player, GVAR(INTERACTION_TARGET_PREVIOUS)] call FUNC(canOpenMenu)}) then {
_newTarget = GVAR(INTERACTION_TARGET_PREVIOUS);
};
diff --git a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf
index fb924fc40b..33b82e5d78 100644
--- a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf
+++ b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf
@@ -9,7 +9,7 @@
* None
*
* Example:
- * [] call ace_medical_menu_handleUI_dropDownTriageCard
+ * [] call ace_medical_menu_fnc_handleUI_dropDownTriageCard
*
* Public: No
*/
diff --git a/addons/medical_menu/functions/fnc_module.sqf b/addons/medical_menu/functions/fnc_module.sqf
index d95110c200..666440e208 100644
--- a/addons/medical_menu/functions/fnc_module.sqf
+++ b/addons/medical_menu/functions/fnc_module.sqf
@@ -15,7 +15,7 @@
#include "script_component.hpp"
-params ["_logic", "_units", "_activated"];
+params ["_logic", "", "_activated"];
if !(_activated) exitWith {};
diff --git a/addons/medical_menu/functions/fnc_onMenuClose.sqf b/addons/medical_menu/functions/fnc_onMenuClose.sqf
index 4300089a4a..656336eb4e 100644
--- a/addons/medical_menu/functions/fnc_onMenuClose.sqf
+++ b/addons/medical_menu/functions/fnc_onMenuClose.sqf
@@ -9,7 +9,7 @@
* None
*
* Example:
- * call ace_medical_menu_onMenuClosed
+ * call ace_medical_menu_fnc_onMenuClosed
*
* Public: No
*/
@@ -19,3 +19,4 @@ if (EGVAR(interact_menu,menuBackground)==1) then {[QGVAR(id), false] call EFUNC(
if (EGVAR(interact_menu,menuBackground)==2) then {(uiNamespace getVariable [QEGVAR(interact_menu,menuBackground), displayNull]) closeDisplay 0;};
[GVAR(MenuPFHID)] call CBA_fnc_removePerFrameHandler;
+GVAR(MenuPFHID) = -1;
diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf
index fb64865b89..2b47312453 100644
--- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf
+++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf
@@ -9,7 +9,7 @@
* None
*
* Example:
- * [medical_menu] call ace_medical_menu_onMenuOpen
+ * [medical_menu] call ace_medical_menu_fnc_onMenuOpen
*
* Public: No
*/
@@ -64,6 +64,8 @@ disableSerialization;
(_display displayCtrl 1) ctrlSetText format ["%1", [_target] call EFUNC(common,getName)];
setMousePosition [0.4, 0.4];
+if (GVAR(MenuPFHID) != -1) exitWith {ERROR("PFID already running");};
+
GVAR(MenuPFHID) = [{
(_this select 0) params ["_display"];
@@ -74,15 +76,15 @@ GVAR(MenuPFHID) = [{
[GVAR(INTERACTION_TARGET)] call FUNC(updateIcons);
[GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions);
- _status = [GVAR(INTERACTION_TARGET)] call EFUNC(medical,getTriageStatus);
- (_display displayCtrl 2000) ctrlSetText (_status select 0);
- (_display displayCtrl 2000) ctrlSetBackgroundColor (_status select 2);
-
- if (ACE_player distance _target > MAX_DISTANCE) exitwith {
+ //Check that it's valid to stay open:
+ if !(([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) && {[ACE_player, _target] call FUNC(canOpenMenu)}) then {
closeDialog 314412;
- ["displayTextStructured", [ACE_player], [[ELSTRING(medical,DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player]] call EFUNC(common,targetEvent);
+ //If we failed because of distance check, show UI message:
+ if ((ACE_player distance GVAR(INTERACTION_TARGET)) > GVAR(maxRange)) then {
+ ["displayTextStructured", [ACE_player], [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 1.75, ACE_player]] call EFUNC(common,targetEvent);
+ };
};
}, 0, [_display]] call CBA_fnc_addPerFrameHandler;
- ["Medical_onMenuOpen", [ACE_player, _interactionTarget]] call EFUNC(common,localEvent);
+["Medical_onMenuOpen", [ACE_player, _target]] call EFUNC(common,localEvent);
diff --git a/addons/medical_menu/functions/fnc_openMenu.sqf b/addons/medical_menu/functions/fnc_openMenu.sqf
index 067e7bda13..1c77da6a5a 100644
--- a/addons/medical_menu/functions/fnc_openMenu.sqf
+++ b/addons/medical_menu/functions/fnc_openMenu.sqf
@@ -9,7 +9,7 @@
* If action was taken
*
* Example:
- * [some_player] call ace_medical_menu_openMenu
+ * [some_player] call ace_medical_menu_fnc_openMenu
*
* Public: No
*/
@@ -17,7 +17,7 @@
params ["_interactionTarget"];
-if (dialog || isNull _interactionTarget) exitwith {
+if (dialog || {isNull _interactionTarget}) exitwith {
disableSerialization;
private ["_display", "_handled"];
diff --git a/addons/medical_menu/functions/fnc_updateActivityLog.sqf b/addons/medical_menu/functions/fnc_updateActivityLog.sqf
index 335aea0c58..92e8474b4b 100644
--- a/addons/medical_menu/functions/fnc_updateActivityLog.sqf
+++ b/addons/medical_menu/functions/fnc_updateActivityLog.sqf
@@ -10,7 +10,7 @@
* None
*
* Example:
- * [some_display, log] call ace_medical_menu_updateActivityLog
+ * [some_display, log] call ace_medical_menu_fnc_updateActivityLog
*
* Public: No
*/
@@ -24,7 +24,7 @@ _logCtrl = _display displayCtrl 214;
lbClear _logCtrl;
{
- _x params ["_message", "_moment", "_dummy", "_arguments"];
+ _x params ["_message", "_moment", "", "_arguments"];
if (isLocalized _message) then {
_message = localize _message;
diff --git a/addons/medical_menu/functions/fnc_updateBodyImage.sqf b/addons/medical_menu/functions/fnc_updateBodyImage.sqf
index 34b2f450c8..afe84a59d3 100644
--- a/addons/medical_menu/functions/fnc_updateBodyImage.sqf
+++ b/addons/medical_menu/functions/fnc_updateBodyImage.sqf
@@ -4,22 +4,23 @@
*
* Arguments:
* 0: selection bloodloss
- * 1: display
+ * 1: damaged (array of bools)
+ * 2: display
*
* Return Value:
* None
*
* Example:
- * [0.3, some_display] call ace_medical_menu_updateBodyImage
+ * [0.3, some_display] call ace_medical_menu_fnc_updateBodyImage
*
* Public: No
*/
#include "script_component.hpp"
-params ["_selectionBloodLoss", "_display"];
+params ["_selectionBloodLoss", "_damaged", "_display"];
// Handle the body image coloring
-_availableSelections = [50, 51, 52, 53, 54, 55];
+local _availableSelections = [50, 51, 52, 53, 54, 55];
{
private ["_red", "_green", "_blue"];
diff --git a/addons/medical_menu/functions/fnc_updateIcons.sqf b/addons/medical_menu/functions/fnc_updateIcons.sqf
index f9d3fc5ab4..b309938476 100644
--- a/addons/medical_menu/functions/fnc_updateIcons.sqf
+++ b/addons/medical_menu/functions/fnc_updateIcons.sqf
@@ -9,7 +9,7 @@
* None
*
* Example:
- * [] call ace_medical_menu_updateIcons
+ * [] call ace_medical_menu_fnc_updateIcons
*
* Public: No
*/
@@ -18,7 +18,7 @@
#define START_IDC 111
#define END_IDC 118
-private ["_display", "_idc", "_options", "_name", "_amount"];
+private ["_display", "_idc", "_options", "_amount"];
disableSerialization;
diff --git a/addons/medical_menu/functions/fnc_updateInformationLists.sqf b/addons/medical_menu/functions/fnc_updateInformationLists.sqf
index ecd700e43a..82c0a13746 100644
--- a/addons/medical_menu/functions/fnc_updateInformationLists.sqf
+++ b/addons/medical_menu/functions/fnc_updateInformationLists.sqf
@@ -14,7 +14,7 @@
*/
#include "script_component.hpp"
-private "_lbCtrl";
+private ["_lbCtrl", "_amountOfGeneric"];
params ["_display", "_genericMessages", "_allInjuryTexts"];
@@ -28,7 +28,7 @@ lbClear _lbCtrl;
_amountOfGeneric = count _genericMessages;
{
- _x params ["_add", "_Color"];
+ _x params ["_add", "_color"];
_lbCtrl lbAdd _add;
_lbCtrl lbSetColor [_forEachIndex + _amountOfGeneric, _color];
} forEach _allInjuryTexts;
diff --git a/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf b/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf
index 8ca81f28ed..49da12e7f4 100644
--- a/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf
+++ b/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf
@@ -10,7 +10,7 @@
* None
*
* Example:
- * [some_display, log] call ace_medical_menu_updateQuickViewLog
+ * [some_display, log] call ace_medical_menu_fnc_updateQuickViewLog
*
* Public: No
*/
@@ -24,7 +24,7 @@ _logCtrl = _display displayCtrl 215;
lbClear _logCtrl;
{
- _x params ["_message", "_moment", "_dummy", "_arguments"];
+ _x params ["_message", "_moment", "", "_arguments"];
if (isLocalized _message) then {
_message = localize _message;
diff --git a/addons/medical_menu/functions/fnc_updateUIInfo.sqf b/addons/medical_menu/functions/fnc_updateUIInfo.sqf
index b493b5026e..bcc9811905 100644
--- a/addons/medical_menu/functions/fnc_updateUIInfo.sqf
+++ b/addons/medical_menu/functions/fnc_updateUIInfo.sqf
@@ -10,18 +10,20 @@
* None
*
* Example:
- * [some_player, some_display] call ace_medical_menu_updateUIInfo
+ * [some_player, some_display] call ace_medical_menu_fnc_updateUIInfo
*
* Public: No
*/
#include "script_component.hpp"
-private ["_genericMessages", "_totalIvVolume", "_damaged", "_selectionBloodLoss", "_allInjuryTexts"];
-
params ["_target", "_display"];
+private["_allInjuryTexts", "_bandagedwounds", "_damaged", "_genericMessages", "_logs", "_openWounds", "_part", "_partText", "_pointDamage", "_selectionBloodLoss", "_selectionN", "_severity", "_totalIvVolume", "_triageStatus"];
+
+if (isNil "_display" || {isNull _display}) exitWith {ERROR("No display");};
+
_selectionN = GVAR(selectedBodyPart);
-if (_selectionN < 0 || _selectionN > 5) exitwith {};
+if (_selectionN < 0 || {_selectionN > 5}) exitwith {};
_genericMessages = [];
_partText = [ELSTRING(medical,Head), ELSTRING(medical,Torso), ELSTRING(medical,LeftArm) ,ELSTRING(medical,RightArm) ,ELSTRING(medical,LeftLeg), ELSTRING(medical,RightLeg)] select _selectionN;
@@ -109,7 +111,7 @@ if (EGVAR(medical,level) >= 2) then {
{
_selectionBloodLoss set [_forEachIndex, _x];
- if (_x > 0 && _forEachIndex == _selectionN) then {
+ if ((_x > 0) && {_forEachIndex == _selectionN}) then {
_pointDamage = _x;
_severity = switch (true) do {
case (_pointDamage > 0.5): {localize ELSTRING(medical,HeavilyWounded)};
@@ -129,7 +131,7 @@ if (EGVAR(medical,level) >= 2) then {
} forEach (_target getvariable [QEGVAR(medical,bodyPartStatus), [0,0,0,0,0,0]]);
};
-[_selectionBloodLoss, _display] call FUNC(updateBodyImage);
+[_selectionBloodLoss, _damaged, _display] call FUNC(updateBodyImage);
[_display, _genericMessages, _allInjuryTexts] call FUNC(updateInformationLists);
_logs = _target getVariable [QEGVAR(medical,logFile_activity_view), []];
diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp
index 342f0230a2..29247b6071 100644
--- a/addons/medical_menu/ui/menu.hpp
+++ b/addons/medical_menu/ui/menu.hpp
@@ -325,7 +325,7 @@ class GVAR(medicalMenu) {
animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)";
animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)";
animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)";
- action = QUOTE(GVAR(selectedBodyPart) = 0; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
+ action = QUOTE(GVAR(selectedBodyPart) = 0;);
};
class selectTorso : selectHead {
idc = 302;
@@ -333,7 +333,7 @@ class GVAR(medicalMenu) {
y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "2.2 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "4.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
- action = QUOTE(GVAR(selectedBodyPart) = 1; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
+ action = QUOTE(GVAR(selectedBodyPart) = 1;);
};
class selectLeftArm: selectHead{
idc = 303;
@@ -341,12 +341,12 @@ class GVAR(medicalMenu) {
y = "5.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "4.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
- action = QUOTE(GVAR(selectedBodyPart) = 3; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
+ action = QUOTE(GVAR(selectedBodyPart) = 3;);
};
class selectRightArm: selectLeftArm{
idc = 304;
x = "20.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
- action = QUOTE(GVAR(selectedBodyPart) = 2; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
+ action = QUOTE(GVAR(selectedBodyPart) = 2;);
};
class selectLeftLeg :selectHead {
idc = 305;
@@ -354,12 +354,12 @@ class GVAR(medicalMenu) {
y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
- action = QUOTE(GVAR(selectedBodyPart) = 5; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
+ action = QUOTE(GVAR(selectedBodyPart) = 5;);
};
class selectRightLeg :selectLeftLeg {
idc = 306;
x = "19.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
- action = QUOTE(GVAR(selectedBodyPart) = 4; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
+ action = QUOTE(GVAR(selectedBodyPart) = 4;);
};
diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf
index 518a648601..c918bcf454 100644
--- a/addons/microdagr/XEH_clientInit.sqf
+++ b/addons/microdagr/XEH_clientInit.sqf
@@ -3,9 +3,6 @@
if (!hasInterface) exitWith {};
-//Functions that are called for each draw of the map:
-GVAR(miniMapDrawHandlers) = [];
-
//Add deviceKey entry:
private ["_conditonCode", "_toggleCode", "_closeCode"];
_conditonCode = {
diff --git a/addons/microdagr/XEH_preInit.sqf b/addons/microdagr/XEH_preInit.sqf
index 4e6ed561c3..39a1b313c6 100644
--- a/addons/microdagr/XEH_preInit.sqf
+++ b/addons/microdagr/XEH_preInit.sqf
@@ -23,4 +23,7 @@ PREP(saveCurrentAndSetNewMode);
PREP(showApplicationPage);
PREP(updateDisplay);
+//Functions that are called for each draw of the map:
+GVAR(miniMapDrawHandlers) = [];
+
ADDON = true;
diff --git a/addons/parachute/functions/fnc_showAltimeter.sqf b/addons/parachute/functions/fnc_showAltimeter.sqf
index 28909f19cd..6f4159e85d 100644
--- a/addons/parachute/functions/fnc_showAltimeter.sqf
+++ b/addons/parachute/functions/fnc_showAltimeter.sqf
@@ -15,9 +15,7 @@
*/
#include "script_component.hpp"
-private ["_unit"];
-
-_unit = _this select 0;
+params ["_unit"];
(["ACE_Altimeter"] call BIS_fnc_rscLayer) cutRsc ["ACE_Altimeter", "PLAIN", 0, true];
if (isNull (uiNamespace getVariable ["ACE_Altimeter", displayNull])) exitWith {};
@@ -27,7 +25,7 @@ GVAR(AltimeterActive) = true;
[{
if (!GVAR(AltimeterActive)) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler)};
disableSerialization;
- EXPLODE_4_PVT(_this select 0,_display,_unit,_oldHeight,_prevTime);
+ (_this select 0) params ["_display", "_unit", "_oldHeight", "_prevTime"];
if !("ACE_Altimeter" in assignedItems _unit) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler); call FUNC(hideAltimeter)};
private ["_height", "_hour", "_minute", "_descentRate","_HeightText", "_DecendRate", "_TimeText", "_curTime", "_timeDiff"];
@@ -38,7 +36,7 @@ GVAR(AltimeterActive) = true;
_hour = floor daytime;
_minute = floor ((daytime - _hour) * 60);
- _height = (getPosASL _unit) select 2;
+ _height = ((getPosASL _unit) select 2) + EGVAR(common,mapAltitude);
_curTime = ACE_time;
_timeDiff = _curTime - _prevTime;
_descentRate = if(_timeDiff > 0) then {floor((_oldHeight - _height) / _timeDiff)} else {0};
diff --git a/addons/parachute/script_component.hpp b/addons/parachute/script_component.hpp
index 93a3e0d363..5668220421 100644
--- a/addons/parachute/script_component.hpp
+++ b/addons/parachute/script_component.hpp
@@ -1,4 +1,3 @@
-#define DEBUG_ENABLED_PARACHUTE
#define COMPONENT parachute
#include "\z\ace\addons\main\script_mod.hpp"
diff --git a/addons/realisticnames/CfgWeapons.hpp b/addons/realisticnames/CfgWeapons.hpp
index 83534a1083..2adff28a41 100644
--- a/addons/realisticnames/CfgWeapons.hpp
+++ b/addons/realisticnames/CfgWeapons.hpp
@@ -525,12 +525,14 @@ class CfgWeapons {
class LMG_coax: LMG_RCWS {
displayName = "PKT";
};
-
- class ACE_LMG_coax_MBT_01: LMG_coax {
+ // class ACE_LMG_coax_PKT_mem2: LMG_coax {};
+ class ACE_LMG_coax_MAG58_mem2: LMG_coax {
displayName = "MAG 58";
};
-
- class ACE_LMG_coax_APC_Tracked_03: LMG_coax {
+ class ACE_LMG_coax_MAG58_mem3: LMG_coax {
+ displayName = "MAG 58";
+ };
+ class ACE_LMG_coax_L94A1_mem3: LMG_coax {
displayName = "L94A1";
};
diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml
index d4b9527f09..ddbccb7777 100644
--- a/addons/repair/stringtable.xml
+++ b/addons/repair/stringtable.xml
@@ -1,4 +1,4 @@
-
+
@@ -388,6 +388,7 @@
Ocas
Хвост
Tail
+ Cauda
Pitot Tube
@@ -1000,12 +1001,14 @@
Wym. naprawy kół
Requisitos de reparación de ruedas
Для ремонта колес требуется
+ Requerimentos para reparo de rodas
Items required to remove/replace wheels
Przedmioty potrzebne do wymiany kół
Elementos necesarios para quitar/cambiar ruedas
Предметы, которые требуются для снятия/замены колес
+ Itens requeridos para remover/trocar rodas
-
+
\ No newline at end of file
diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml
index b347c4e2d9..57f03f7600 100644
--- a/addons/tacticalladder/stringtable.xml
+++ b/addons/tacticalladder/stringtable.xml
@@ -1,4 +1,4 @@
-
+
@@ -41,6 +41,7 @@
Extend, +Ctrl tilt
Ausfahren, +Strg kippen
Rozłóż, +Ctrl nachyl
+ Extender, +Ctrl tilt
Position ladder
@@ -67,4 +68,4 @@
Pegar escada
-
+
\ No newline at end of file
diff --git a/addons/vehicles/CfgVehicles.hpp b/addons/vehicles/CfgVehicles.hpp
index a07781a413..8834cc1d4d 100644
--- a/addons/vehicles/CfgVehicles.hpp
+++ b/addons/vehicles/CfgVehicles.hpp
@@ -91,7 +91,7 @@ class CfgVehicles {
class O_APC_Tracked_02_cannon_F: O_APC_Tracked_02_base_F {
class Turrets: Turrets {
class MainTurret: MainTurret {
- weapons[] = {"autocannon_30mm_CTWS","ACE_LMG_coax_MBT_01","missiles_titan"};
+ weapons[] = {"autocannon_30mm_CTWS","ACE_LMG_coax_PKT_mem2","missiles_titan"};
magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Green","60Rnd_30mm_APFSDS_shells_Tracer_Green","2000Rnd_762x51_Belt_Green","2Rnd_GAT_missiles"};
};
};
@@ -101,7 +101,7 @@ class CfgVehicles {
fuelCapacity = 660 * FUEL_FACTOR;
class Turrets: Turrets {
class MainTurret: MainTurret {
- weapons[] = {"autocannon_30mm","ACE_LMG_coax_APC_Tracked_03"};
+ weapons[] = {"autocannon_30mm","ACE_LMG_coax_L94A1_mem3"};
magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Yellow","60Rnd_30mm_APFSDS_shells_Tracer_Yellow","1000Rnd_762x51_Belt_Yellow","1000Rnd_762x51_Belt_Yellow"};
class Turrets: Turrets {
class CommanderOptics: CommanderOptics {};
@@ -114,7 +114,7 @@ class CfgVehicles {
fuelCapacity = 550 * FUEL_FACTOR;
class Turrets: Turrets {
class MainTurret: MainTurret {
- weapons[] = {"cannon_120mm_long","ACE_LMG_coax_MBT_01"};
+ weapons[] = {"cannon_120mm_long","ACE_LMG_coax_MAG58_mem3"};
magazines[] = {"28Rnd_120mm_APFSDS_shells_Tracer_Yellow","14Rnd_120mm_HE_shells_Tracer_Yellow","2000Rnd_762x51_Belt_Yellow","2000Rnd_762x51_Belt_Yellow"};
class Turrets: Turrets {
class CommanderOptics: CommanderOptics {};
@@ -127,8 +127,8 @@ class CfgVehicles {
fuelCapacity = 500 * FUEL_FACTOR;
class Turrets: Turrets {
class MainTurret: MainTurret {
- weapons[] = {"cannon_120mm","ACE_LMG_coax_MBT_01"};
- magazines[] = {"32Rnd_120mm_APFSDS_shells_Tracer_Red","16Rnd_120mm_HE_shells_Tracer_Red","2000Rnd_762x51_Belt_Green","2000Rnd_762x51_Belt_Green"};
+ weapons[] = {"cannon_120mm","ACE_LMG_coax_MAG58_mem2"};
+ magazines[] = {"32Rnd_120mm_APFSDS_shells_Tracer_Red","16Rnd_120mm_HE_shells_Tracer_Red","2000Rnd_762x51_Belt_Red","2000Rnd_762x51_Belt_Red"};
class Turrets: Turrets {
class CommanderOptics: CommanderOptics {};
};
@@ -281,8 +281,8 @@ class CfgVehicles {
class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F {
class Turrets: Turrets {
class MainTurret: MainTurret {
- weapons[] = {"autocannon_40mm_CTWS","ACE_LMG_coax_MBT_01"};
- magazines[] = {"60Rnd_40mm_GPR_Tracer_Red_shells","40Rnd_40mm_APFSDS_Tracer_Red_shells","2000Rnd_762x51_Belt_Green"};
+ weapons[] = {"autocannon_40mm_CTWS","ACE_LMG_coax_MAG58_mem2"};
+ magazines[] = {"60Rnd_40mm_GPR_Tracer_Red_shells","40Rnd_40mm_APFSDS_Tracer_Red_shells","2000Rnd_762x51_Belt_Red"};
};
};
};
@@ -301,8 +301,8 @@ class CfgVehicles {
class B_MBT_01_TUSK_F: B_MBT_01_cannon_F {
class Turrets: Turrets {
class MainTurret: MainTurret {
- weapons[] = {"cannon_105mm","ACE_LMG_coax_MBT_01"};
- magazines[] = {"40Rnd_105mm_APFSDS_T_Red","20Rnd_105mm_HEAT_MP_T_Red","2000Rnd_762x51_Belt_Green","2000Rnd_762x51_Belt_Green"};
+ weapons[] = {"cannon_105mm","ACE_LMG_coax_MAG58_mem2"};
+ magazines[] = {"40Rnd_105mm_APFSDS_T_Red","20Rnd_105mm_HEAT_MP_T_Red","2000Rnd_762x51_Belt_Red","2000Rnd_762x51_Belt_Red"};
class Turrets: Turrets {
class CommanderOptics: CommanderOptics {};
};
@@ -326,7 +326,7 @@ class CfgVehicles {
class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F {
class Turrets: Turrets {
class MainTurret: MainTurret {
- weapons[] = {"autocannon_30mm_CTWS","ACE_LMG_coax_MBT_01","missiles_titan"};
+ weapons[] = {"autocannon_30mm_CTWS","ACE_LMG_coax_MAG58_mem2","missiles_titan"};
magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Yellow","60Rnd_30mm_APFSDS_shells_Tracer_Yellow","2000Rnd_762x51_Belt_Yellow","2Rnd_GAT_missiles"};
};
};
diff --git a/addons/vehicles/CfgWeapons.hpp b/addons/vehicles/CfgWeapons.hpp
index 76feb1818a..5cb30518d9 100644
--- a/addons/vehicles/CfgWeapons.hpp
+++ b/addons/vehicles/CfgWeapons.hpp
@@ -5,8 +5,26 @@ class CfgWeapons {
class LMG_RCWS: MGun {};
class LMG_coax;
- class ACE_LMG_coax_MBT_01: LMG_coax {};
- class ACE_LMG_coax_APC_Tracked_03: LMG_coax {};
+ class ACE_LMG_coax_L94A1_mem3: LMG_coax {};
+ class ACE_LMG_coax_PKT_mem2: LMG_coax {
+ class GunParticles {
+ class effect1 {
+ positionName = "usti hlavne2";
+ directionName = "konec hlavne2";
+ effectName = "MachineGunCloud";
+ };
+ };
+ };
+ class ACE_LMG_coax_MAG58_mem3: LMG_coax {};
+ class ACE_LMG_coax_MAG58_mem2: LMG_coax {
+ class GunParticles {
+ class effect1 {
+ positionName = "usti hlavne2";
+ directionName = "konec hlavne2";
+ effectName = "MachineGunCloud";
+ };
+ };
+ };
class LMG_Minigun: LMG_RCWS {
magazines[] = {"1000Rnd_65x39_Belt","1000Rnd_65x39_Belt_Green","1000Rnd_65x39_Belt_Tracer_Green","1000Rnd_65x39_Belt_Tracer_Red","1000Rnd_65x39_Belt_Tracer_Yellow","1000Rnd_65x39_Belt_Yellow","2000Rnd_65x39_Belt","2000Rnd_65x39_Belt_Green","2000Rnd_65x39_Belt_Tracer_Green","2000Rnd_65x39_Belt_Tracer_Green_Splash","2000Rnd_65x39_Belt_Tracer_Red","2000Rnd_65x39_Belt_Tracer_Yellow","2000Rnd_65x39_Belt_Tracer_Yellow_Splash","2000Rnd_65x39_Belt_Yellow","2000Rnd_762x51_Belt_T_Green","2000Rnd_762x51_Belt_T_Red","2000Rnd_762x51_Belt_T_Yellow","200Rnd_65x39_Belt","200Rnd_65x39_Belt_Tracer_Green","200Rnd_65x39_Belt_Tracer_Red","200Rnd_65x39_Belt_Tracer_Yellow","5000Rnd_762x51_Belt","5000Rnd_762x51_Yellow_Belt"};
diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml
index 6063f5011a..0281f0a5a0 100644
--- a/addons/zeus/stringtable.xml
+++ b/addons/zeus/stringtable.xml
@@ -1,4 +1,4 @@
-
+
@@ -214,15 +214,19 @@
Add Spare Wheel
+ Adicionar roda sobressalente
Adds a Spare Wheel to the vehicle
+ Adiciona uma roda sobressalente ao veículo
Add Spare Track
+ Adicionar esteira sobressalente
Adds a Spare Track to the vehicle
+ Adiciona uma esteira sobressalente ao veículo
Unit must be alive
@@ -264,9 +268,11 @@
Unit must be a vehicle with cargo space
+ Unidade deve ser um veículo com espaço em carga
Unit must have cargo space left
+ Unidade deve conter espaço sobressalente
Unit must not be captive
@@ -317,4 +323,4 @@
Añadir cualquier objeto creado a todos los directores en la misión
-
+
\ No newline at end of file
diff --git a/docs/README_DE.md b/docs/README_DE.md
index 24be427392..a51c562de8 100644
--- a/docs/README_DE.md
+++ b/docs/README_DE.md
@@ -3,25 +3,25 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Benötigt die aktuellste Version von CBA A3 . Besucht uns auf Facebook | YouTube | Twitter | Reddit
@@ -30,30 +30,54 @@
Da die MOD vollkommen als **open-source** Projekt gestaltet ist, steht es jedem frei Änderungen vorzuschlagen, oder seine eigene, modifizierte Version zu erstellen, solange diese ebenfalls der Öffentlichkeit zugänglich ist und mit GNU General Public License übereinstimmt. (Weitere Informationen ist der Lizenzdatei in diesem Projekt entnehmbar)
-Die Mod ist **modular gestaltet** — beinahe jede PBO kann entfernt werden, sodass jede Gemeinschaft ihre eigene Version der Mod unterhalten kann. Dies kann zum Beispiel einige Funktionalitäten ausschließen, da das Feature nicht gewünscht ist, oder es mit einer anderen MOD in Konflikt gerät etc. .Ebenfalls können viele Einstellungen vom Missionsersteller vorgenommen werden (u.a. am medizinischem System), sodass eine individuelle Erfahrung gewährleistet wird.
+Die Mod ist **modular aufgebaut**. Beinahe jede PBO kann entfernt werden, sodass jede Gemeinschaft ihre eigene Version der Mod unterhalten kann. Dies kann zum Beispiel einige Funktionalitäten ausschließen, wenn gewisse Features nicht gewünscht sind, oder es mit einer anderen Mod in Konflikt gerät. Ebenfalls können viele Einstellungen vom Missionsersteller vorgenommen werden (u.a. am Sanitätssystem), sodass eine individuelle Erfahrung gewährleistet werden kann.
-### Features
-- Verbessertes medizinisches System
-- Logistik System: U.a. Transport und Fahrzeugreparatur
-- Sprengstoffsystem mit unterschiedlichen Zündern
+### Hauptmerkmale
+- Vollkommen neues 3D-Interaktionssystem
+- Leistungs- und stabilitätsoptimiert
+- Hauptmerkmal auf Modularität und individuelle Anpassungsmöglichkeiten
+- Neue, flexible Spieler- und Servereinstellungen
+- Verbessertes Sanitätssystem mit unterschiedlichen Stufen (Basis/Erweitert)
+- Echte und stetige Wettersynchronisation
+- Ballistik basierend auf vielen Faktoren u.a. Wetter und Wind
- Gefangenensystem
-- Reale Namen für Arma 3 Fahrzeuge und Waffen
-- Realistisches, ballistisches Verhalten (Wind und Luftfeuchtigkeit)
-- Simulation der Rückstrahlzone
-- Ein Feuerleitsystem für gepanzerte Fahrzeuge und Hubschrauber
-***und noch viel mehr...***
+- Sprengtoffmechaniken mit unterschiedlichen Zündern
+- Kartenverbesserungen – Setzen von Markierungen / Kartenwerkzeuge
+- Erweitertes Raketenlenksystem
+
+#### Weitere Mechaniken
+- Tragen und Ziehen
+- Waffen und Fahrzeuge tragen die Namen ihrer Vorbilder aus der echten Welt
+- Ein Feuerleitsystem (FLS) für Hubschrauber und Panzer
+- Viele Funktionen werden in C/C++ Erweiterungen berechnet
+- Rückstrahlzonen- und Überdrucksimulation
+- Einwegwaffen
+- Realistische G-Kräfte
+- Fahrzeuge abschließen
+- Realistische Nacht- und Thermalsicht
+- Magazine umpacken
+- Realistische Waffen Er- bzw. Überhitzung
+- Temporäre Taubheit bei zu lauten Geräuschen
+- Verbesserte Ragdoll-Physik
+- Verbesserte Interaktionen für MG2s und Munitionsschlepper
+- Einstellbare Zielfernrohre
+- Keine Ruheanimationen bei gesenkter Waffe
+- Über Hindernisse springen, über Mauern klettern, Zäune durchtrennen
+- Kein "sprechender Charkater"
+- Vector IV, MicroDAGR und Kestrel
+***und noch viel viel mehr...***
#### Anleitungen
Du hast ACE3 installiert, hast aber keine Ahnung was und wie alles funktioniert und wo sich was befindet?
- [Erste Schritte](http://ace3mod.com/wiki/user/getting-started.html).
#### Mitwirken
-Wenn du bei der Entwicklung der MOD mithelfen möchtest, so kannst du dies tun, indem du nach Fehlern Ausschau hältst, oder neue Funktionen vorschlägst. Um etwas beizutragen, "Forke" einfach dieses Archiv (bzw. repository) und erstelle deine "Pull-Request", welche von anderen Entwicklern und Beiträgern überprüft wird. Bitte trage dich dabei in [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) mit deinem Nutzernamen und einer gütligen Email-Adresse ein.
+Wenn du bei der Entwicklung von ACE3 mithelfen möchtest, kannst du dies tun, indem du nach Fehlern Ausschau hältst oder neue Funktionen vorschlägst. Um etwas beizutragen, "Forke" dieses Repository und erstelle deine "Pull-Requests", welche von anderen Entwicklern und Beiträgern überprüft werden. Bitte trage dich dabei in [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) mit deinem Nutzernamen und einer gültigen Email-Adresse ein.
-Um einen Fehler oder ein Feature zu melden bzw. ein bereits Bestehendes zu ändern - nutze unseren [Issue Tracker](https://github.com/acemod/ACE3/issues). Besuche auch:
+Um uns einen Fehler, Anregungen oder neue Funktionalitäten mitzuteilen: Nutze unseren [Issue Tracker](https://github.com/acemod/ACE3/issues). Besuche auch:
- [Wie kann ich ein Problem melden](http://ace3mod.com/wiki/user/how-to-report-an-issue.html)
-- [Wie kann ich ein Feature Request erstellen](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html)
+- [Wie kann ich ein Wunsch zu einer neuen Funktion mitteilen?](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html)
-#### Testen & MOD erstellen
-Wenn du die neusten Entwicklungen erleben und uns dabei helfen möchtest bestehende Fehler zu entdecken, lade dir einfach die "Master Branch" herunter. Entweder nutzt du [Git](https://help.github.com/articles/fetching-a-remote/) - wenn die Schritte bekannt sind - oder du lädst es dir direkt über [diesen Link](https://github.com/acemod/ACE3/archive/master.zip) herunter.
-Wie du deine eigene Entwicklungsumgebung und eine Testversion von ACE3 erstellst folge [dieser Anleitung](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md).
+#### Testen & Mod erstellen
+Wenn du die neusten Entwicklungen erleben und uns dabei helfen möchtest bestehende Fehler zu entdecken, lade dir die "Master Branch" herunter. Entweder nutzt du [Git](https://help.github.com/articles/fetching-a-remote/) - wenn die Schritte bekannt sind - oder du lädst es dir direkt über [diesen Link](https://github.com/acemod/ACE3/archive/master.zip) herunter.
+Wie du deine eigene Entwicklungsumgebung und eine Testversion von ACE3 erstellst, folge [dieser Anleitung](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md).
diff --git a/docs/README_PL.md b/docs/README_PL.md
index b12f574b6f..4d7f5d1e09 100644
--- a/docs/README_PL.md
+++ b/docs/README_PL.md
@@ -3,25 +3,25 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Wymaga najnowszej wersji CBA A3 . Odwiedź nas na Facebook | YouTube | Twitter | Reddit
diff --git a/extras/assets/icons/Icon_Module_png/Icon_Module_Make_Unit_Handcuffed_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Make_Unit_Handcuffed_ca.png
new file mode 100644
index 0000000000..e097b6ac7f
Binary files /dev/null and b/extras/assets/icons/Icon_Module_png/Icon_Module_Make_Unit_Handcuffed_ca.png differ
diff --git a/tools/make.py b/tools/make.py
index f8a4c80886..adaecf269e 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -1440,4 +1440,4 @@ if __name__ == "__main__":
main(sys.argv)
d,h,m,s = Fract_Sec(timeit.default_timer() - start_time)
print("\nTotal Program time elapsed: {0:2}h {1:2}m {2:4.5f}s".format(h,m,s))
-input("Press Enter to continue...")
+ input("Press Enter to continue...")