Merge remote-tracking branch 'refs/remotes/acemod/master' into Translations03

This commit is contained in:
Jonathan Pereira 2015-11-07 11:31:49 -02:00
commit f0fa9875d1
76 changed files with 396 additions and 170 deletions

View File

@ -44,6 +44,7 @@ BlackPixxel <blackpixxel96@gmail.com>
BlackQwar BlackQwar
Brakoviejo Brakoviejo
Brisse <brisse@outlook.com> Brisse <brisse@outlook.com>
Brostrom.A | Evul <andreas.brostrom.ce@gmail.com>
BullHorn <bullhorn7@gmail.com> BullHorn <bullhorn7@gmail.com>
Clon1998 <ps.patti1998@gmail.com> Clon1998 <ps.patti1998@gmail.com>
Codingboy Codingboy

View File

@ -14,7 +14,7 @@ Indicate if the issue appears on stable or development version. In case it is th
## Reporting the issue ## Reporting the issue
Head over to the <a href="{{ site.githubUrl }}/issues" target="_blank">ACE3 GitHub issue tracker</a> and press the <a href="{{ site.githubUrl }}/issues/new" target="_blank">"New issue"</a> 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 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. 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 <a href="http://daringfireball.net/projects/markdown/syntax" target="_blank">"Markdown"</a> to style the output. If you want to know more about it (e.g. how to <a href="https://help.github.com/articles/markdown-basics/#styling-text" target="_blank">turn text bold</a>, how to denote <a href="https://help.github.com/articles/markdown-basics/#inline-formats" target="_blank">code blocks</a> or <a href="https://help.github.com/articles/markdown-basics/#multiple-lines" target="_blank">inline code</a>) have a look at the <a href="https://help.github.com/articles/github-flavored-markdown/" target="_blank">GitHub markdown documentation</a>.
# Feature Requests # 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. 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 <a href="{{ site.githubUrl }}/issues/414/" target="_blank">ACE 3 Feature requests</a>. 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. Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
# Regarding Pull Requests (PRs) # 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 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) - [Make sure to respect the coding guidelines](http://ace3mod.com/wiki/development/coding-guidelines.html)

View File

@ -153,16 +153,32 @@ class CfgVehicles {
class GVAR(ModuleSurrender): Module_F { class GVAR(ModuleSurrender): Module_F {
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
category = "ACE"; category = "ACE";
displayName = CSTRING(ModuleSurrender_DisplayName); //Make Unit Surrender displayName = CSTRING(ModuleSurrender_DisplayName);
function = QFUNC(moduleSurrender); function = QFUNC(moduleSurrender);
scope = 2; //show in editor scope = 2; //show in editor
isGlobal = 1; //run global isGlobal = 0; //run on server
isTriggerActivated = 1; //Wait for triggers isTriggerActivated = 1; //Wait for triggers
icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa)); icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa));
functionPriority = 0; functionPriority = 0;
class Arguments {}; class Arguments {};
class ModuleDescription: ModuleDescription { class ModuleDescription: ModuleDescription {
description = CSTRING(ModuleSurrender_Description); //Sync a unit to make them surrender.<br/>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"}; sync[] = {"AnyAI"};
}; };
}; };

View File

@ -24,6 +24,7 @@ PREP(handlePlayerChanged);
PREP(handleRespawn); PREP(handleRespawn);
PREP(handleUnitInitPost); PREP(handleUnitInitPost);
PREP(handleZeusDisplayChanged); PREP(handleZeusDisplayChanged);
PREP(moduleHandcuffed);
PREP(moduleSettings); PREP(moduleSettings);
PREP(moduleSurrender); PREP(moduleSurrender);
PREP(setHandcuffed); PREP(setHandcuffed);

View File

@ -2,7 +2,7 @@
class CfgPatches { class CfgPatches {
class ADDON { class ADDON {
units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender)}; units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender), QGVAR(ModuleHandcuffed)};
weapons[] = {"ACE_CableTie"}; weapons[] = {"ACE_CableTie"};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"}; requiredAddons[] = {"ACE_Interaction"};

View File

@ -20,11 +20,12 @@ params ["_unit", "_target"];
//Check sides, Player has cableTie, target is alive and not already handcuffed //Check sides, Player has cableTie, target is alive and not already handcuffed
(GVAR(allowHandcuffOwnSide) || {(side _unit) != (side _target)}) && (GVAR(allowHandcuffOwnSide) || {(side _unit) != (side _target)}) &&
("ACE_CableTie" in (items _unit)) && {"ACE_CableTie" in (items _unit)} &&
{alive _target} && {alive _target} &&
{!(_target getVariable [QGVAR(isHandcuffed), false])} && {!(_target getVariable [QGVAR(isHandcuffed), false])} &&
{ {
(_target getVariable ["ACE_isUnconscious", false]) || //isUnconscious (_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 {GVAR(requireSurrender) == 0} || //or don't require surrendering
{_target getVariable [QGVAR(isSurrendering), false]} || //or is surrendering {_target getVariable [QGVAR(isSurrendering), false]} || //or is surrendering
{(GVAR(requireSurrender) == 2) && {(currentWeapon _target) == ""}} //or "SurrenderOrNoWeapon" and no weapon {(GVAR(requireSurrender) == 2) && {(currentWeapon _target) == ""}} //or "SurrenderOrNoWeapon" and no weapon

View File

@ -0,0 +1,35 @@
/*
* Author: PabstMirror
* Module Function to make a unit handcuffed (can be called from editor)
*
* Arguments:
* 0: The Module Logic <OBJECT>
* 1: synced objects <ARRAY>
* 2: Activated <BOOL>
*
* 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;

View File

@ -1,9 +1,9 @@
/* /*
* Author: PabstMirror * 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: * Arguments:
* 0: The Module Logic Object <OBJECT> * 0: The Module Logic <OBJECT>
* 1: synced objects <ARRAY> * 1: synced objects <ARRAY>
* 2: Activated <BOOL> * 2: Activated <BOOL>
* *
@ -17,20 +17,19 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_bisMouseOver", "_mouseOverObject"];
params ["_logic", "_units", "_activated"]; params ["_logic", "_units", "_activated"];
TRACE_3("params",_logic,_units,_activated);
if (!_activated) exitWith {}; 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
//Modules run before postInit can instal the event handler, so we need to wait a little bit [{
[{ params ["_units"];
params ["_units"]; {
{ ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent); } forEach _units;
} forEach _units; }, [_units], 0.05] call EFUNC(common,waitAndExecute);
}, [_units], 0.05]call EFUNC(common,waitAndExecute);
deleteVehicle _logic; deleteVehicle _logic;
};

View File

@ -56,8 +56,11 @@ if (_state) then {
//Adds an animation changed eh //Adds an animation changed eh
//If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) //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", { _animChangedEHID = _unit addEventHandler ["AnimChanged", {
params ["_unit", "_newAnimation"]; params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_unit,_newAnimation); TRACE_2("AnimChanged",_unit,_newAnimation);
@ -67,7 +70,6 @@ if (_state) then {
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
}; };
} else { } else {
_turretPath = []; _turretPath = [];
{ {
_x params ["_xUnit", "", "", "_xTurretPath"]; _x params ["_xUnit", "", "", "_xTurretPath"];
@ -90,8 +92,7 @@ if (_state) then {
[_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus); [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus);
//remove AnimChanged EH //remove AnimChanged EH
private "_animChangedEHID"; local _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
_animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
TRACE_1("removing animChanged EH",_animChangedEHID); TRACE_1("removing animChanged EH",_animChangedEHID);
_unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(handcuffAnimEHID), -1]; _unit setVariable [QGVAR(handcuffAnimEHID), -1];

View File

@ -48,7 +48,11 @@ if (_state) then {
if (_unit getVariable [QGVAR(isSurrendering), false] && {(vehicle _unit) == _unit}) then { if (_unit getVariable [QGVAR(isSurrendering), false] && {(vehicle _unit) == _unit}) then {
//Adds an animation changed eh //Adds an animation changed eh
//If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) //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", { _animChangedEHID = _unit addEventHandler ["AnimChanged", {
params ["_unit", "_newAnimation"]; params ["_unit", "_newAnimation"];
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { 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); [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus);
//remove AnimChanged EH //remove AnimChanged EH
private "_animChangedEHID"; local _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
_animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
_unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(surrenderAnimEHID), -1]; _unit setVariable [QGVAR(surrenderAnimEHID), -1];

View File

@ -179,6 +179,12 @@
<Hungarian>Egység szinkronizálása, hogy kapituláljon.&lt;br /&gt;Forrás: ace_captives</Hungarian> <Hungarian>Egység szinkronizálása, hogy kapituláljon.&lt;br /&gt;Forrás: ace_captives</Hungarian>
<Russian>Синхронизируйте с юнитами, чтобы сделать их пленными.&lt;br /&gt;Источник: ace_captives</Russian> <Russian>Синхронизируйте с юнитами, чтобы сделать их пленными.&lt;br /&gt;Источник: ace_captives</Russian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleHandcuffed_DisplayName">
<English>Make Unit Handcuffed</English>
</Key>
<Key ID="STR_ACE_Captives_ModuleHandcuffed_Description">
<English>Sync a unit to make them handcuffed.&lt;br /&gt;Source: ace_captives</English>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName"> <Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
<English>Captives Settings</English> <English>Captives Settings</English>
<Polish>Ustawienia więźniów</Polish> <Polish>Ustawienia więźniów</Polish>

View File

@ -171,6 +171,13 @@ class CfgVehicles {
GVAR(hasCargo) = 0; GVAR(hasCargo) = 0;
}; };
// autonomus
class Helicopter_Base_F;
class UAV_01_base_F: Helicopter_Base_F {
GVAR(space) = 0;
GVAR(hasCargo) = 0;
};
// boats // boats
class Ship; class Ship;
class Ship_F: Ship { class Ship_F: Ship {

View File

@ -223,6 +223,7 @@ PREP(getTurretCopilot);
PREP(getDoorTurrets); PREP(getDoorTurrets);
PREP(getTurretsFFV); PREP(getTurretsFFV);
PREP(getTurretsOther); PREP(getTurretsOther);
PREP(hasHatch);
// missing inventory commands // missing inventory commands
PREP(binocularMagazine); PREP(binocularMagazine);

View File

@ -1,6 +1,6 @@
/* /*
* Author: commy2 * Author: commy2
* Add an event handler that executes every ACE_time the scroll wheel is used. This is needed, because adding a MouseZ display event handler to display 46 will break in save games. * Add an event handler that executes every time the scroll wheel is used. This is needed, because adding a MouseZ display event handler to display 46 will break in save games.
* _this will be [Interval] where 'Interval' is a number. * _this will be [Interval] where 'Interval' is a number.
* *
* Arguments: * Arguments:

View File

@ -1,6 +1,6 @@
/* /*
* Author: esteldunedain, Jaynus * Author: esteldunedain, Jaynus
* Returns the result of the function and caches it up to a given ACE_time or event * Returns the result of the function and caches it up to a given time or event
* *
* Arguments: * Arguments:
* 0: Parameters <ARRAY> * 0: Parameters <ARRAY>

View File

@ -1,6 +1,6 @@
/* /*
* Author: Glowbal, PabstMirror * Author: Glowbal, PabstMirror
* Get the death animation for the unit at current ACE_time * Get the death animation for the unit at current time
* *
* Arguments: * Arguments:
* 0: unit <OBJECT> * 0: unit <OBJECT>

View File

@ -0,0 +1,35 @@
/*
* Author: commy2
* Check if unit is in a vehicle position where it can turn in or out.
*
* Arguments:
* 0: Unit <OBJECT>
*
* Return Value:
* Unit has a hatch? <BOOL>
*
* 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

View File

@ -4,7 +4,7 @@
* Finish/Failure/Conditional are all passed [_args, _elapsedTime, _totalTime, _errorCode] * Finish/Failure/Conditional are all passed [_args, _elapsedTime, _totalTime, _errorCode]
* *
* Arguments: * Arguments:
* 0: NUMBER - Total Time (in game "ACE_time" seconds) * 0: NUMBER - Total Time (in game "time" seconds)
* 1: ARRAY - Arguments, passed to condition, fail and finish * 1: ARRAY - Arguments, passed to condition, fail and finish
* 2: CODE or STRING - On Finish: Code called or STRING raised as event. * 2: CODE or STRING - On Finish: Code called or STRING raised as event.
* 3: CODE or STRING - On Failure: Code called or STRING raised as event. * 3: CODE or STRING - On Failure: Code called or STRING raised as event.

View File

@ -1,12 +1,12 @@
/* /*
* Author: commy2 and joko // Jonas * Author: commy2 and joko // Jonas
* Sets a public variable, but wait a certain amount of ACE_time to transfer the value over the network. Changing the value by calling this function again resets the windup timer. * Sets a public variable, but wait a certain amount of time to transfer the value over the network. Changing the value by calling this function again resets the windup timer.
* *
* Arguments: * Arguments:
* 0: Object the variable should be assigned to <OBJECT> * 0: Object the variable should be assigned to <OBJECT>
* 1: Name of the variable <STRING> * 1: Name of the variable <STRING>
* 2: Value of the variable <ANY> * 2: Value of the variable <ANY>
* 3: Windup ACE_time <NUMBER> (default: 1) * 3: Windup time <NUMBER> (default: 1)
* *
* Return Value: * Return Value:
* None * None

View File

@ -19,7 +19,7 @@
params ["_unit", "_varName", "_maxDelay"]; params ["_unit", "_varName", "_maxDelay"];
// Create the publish scheduler PFH the first ACE_time // Create the publish scheduler PFH the first time
if (isNil QGVAR(publishSchedId)) then { if (isNil QGVAR(publishSchedId)) then {
GVAR(publishVarNames) = []; GVAR(publishVarNames) = [];
GVAR(publishNextTime) = 1e7; GVAR(publishNextTime) = 1e7;

View File

@ -1,6 +1,6 @@
/* /*
* Author: esteldunedain * Author: esteldunedain
* Executes a code once with a given game ACE_time delay, using a PFH * Executes a code once with a given game time delay, using a PFH
* *
* Arguments: * Arguments:
* 0: Code to execute <CODE> * 0: Code to execute <CODE>

View File

@ -11,7 +11,7 @@
* None * None
* *
* Example: * 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 * Public: No
*/ */

View File

@ -6,24 +6,28 @@
<Polish>DAGR</Polish> <Polish>DAGR</Polish>
<Spanish>DAGR</Spanish> <Spanish>DAGR</Spanish>
<Russian>DAGR</Russian> <Russian>DAGR</Russian>
<Portuguese>DAGR</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_DAGR_ConfigureDAGR"> <Key ID="STR_ACE_DAGR_ConfigureDAGR">
<English>Configure DAGR</English> <English>Configure DAGR</English>
<Polish>Konfiguruj DAGR</Polish> <Polish>Konfiguruj DAGR</Polish>
<Spanish>Configurar DAGR</Spanish> <Spanish>Configurar DAGR</Spanish>
<Russian>Настроить DAGR</Russian> <Russian>Настроить DAGR</Russian>
<Portuguese>Configurar DAGR</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_DAGR_ToggleDAGR"> <Key ID="STR_ACE_DAGR_ToggleDAGR">
<English>Toggle DAGR</English> <English>Toggle DAGR</English>
<Polish>Przełącz DAGR</Polish> <Polish>Przełącz DAGR</Polish>
<Spanish>Mostrar DAGR</Spanish> <Spanish>Mostrar DAGR</Spanish>
<Russian>Вкл./выкл. DAGR</Russian> <Russian>Вкл./выкл. DAGR</Russian>
<Portuguese>Mostrar DAGR</Portuguese>
</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>
<Polish>Defense Advanced GPS Receiver</Polish> <Polish>Defense Advanced GPS Receiver</Polish>
<Spanish>Defense Advanced GPS Receiver</Spanish> <Spanish>Defense Advanced GPS Receiver</Spanish>
<Russian>Военный многофункциональный GPS-приёмник</Russian> <Russian>Военный многофункциональный GPS-приёмник</Russian>
<Portuguese>Defense Advanced GPS Receiver</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -63,7 +63,7 @@ if (isNull _holder) then {
if (isNull _holder) exitWith { if (isNull _holder) exitWith {
[_caller, _target, "Debug: Null Holder"] call FUNC(eventTargetFinish); [_caller, _target, "Debug: Null Holder"] call FUNC(eventTargetFinish);
}; };
//Make sure only one drop operation at a ACE_time (using PFEH system as a queue) //Make sure only one drop operation at a time (using PFEH system as a queue)
if (_holder getVariable [QGVAR(holderInUse), false]) exitWith { if (_holder getVariable [QGVAR(holderInUse), false]) exitWith {
[{ [{
_this call FUNC(disarmDropItems); _this call FUNC(disarmDropItems);

View File

@ -61,7 +61,7 @@ if (_target isKindOf "CAManBase") then {
[_unit, _target, true] call EFUNC(common,claim); [_unit, _target, true] call EFUNC(common,claim);
// prevents draging and carrying at the same ACE_time // prevents draging and carrying at the same time
_unit setVariable [QGVAR(isCarrying), true, true]; _unit setVariable [QGVAR(isCarrying), true, true];
// required for aborting animation // required for aborting animation

View File

@ -45,7 +45,7 @@ if (_target isKindOf "CAManBase") then {
[_target, "AinjPpneMrunSnonWnonDb_grab", 2, true] call EFUNC(common,doAnimation); [_target, "AinjPpneMrunSnonWnonDb_grab", 2, true] call EFUNC(common,doAnimation);
}; };
// prevents draging and carrying at the same ACE_time // prevents draging and carrying at the same time
_unit setVariable [QGVAR(isDragging), true, true]; _unit setVariable [QGVAR(isDragging), true, true];
[FUNC(startDragPFH), 0.2, [_unit, _target, ACE_time + 5]] call CBA_fnc_addPerFrameHandler; [FUNC(startDragPFH), 0.2, [_unit, _target, ACE_time + 5]] call CBA_fnc_addPerFrameHandler;

View File

@ -31,7 +31,7 @@ if (!alive _target || {_unit distance _target > 10}) then {
[_idPFH] call CBA_fnc_removePerFrameHandler; [_idPFH] call CBA_fnc_removePerFrameHandler;
}; };
// timeout. Do nothing. Quit. ACE_time, because anim length is linked to ingame ACE_time. // timeout. Do nothing. Quit. ACE_time, because anim length is linked to ingame time.
if (ACE_time > _timeOut) exitWith { if (ACE_time > _timeOut) exitWith {
[_idPFH] call CBA_fnc_removePerFrameHandler; [_idPFH] call CBA_fnc_removePerFrameHandler;

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="Dragging"> <Package name="Dragging">
<Key ID="STR_ACE_Dragging_Drag"> <Key ID="STR_ACE_Dragging_Drag">
@ -53,6 +53,7 @@
<English>Raise/Lower</English> <English>Raise/Lower</English>
<German>Heben/Senken</German> <German>Heben/Senken</German>
<Polish>Wyżej/Niżej</Polish> <Polish>Wyżej/Niżej</Polish>
<Portuguese>Levantar/Abaixar</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -7,7 +7,7 @@
* 1: Max range (-1 to ignore) <NUMBER> * 1: Max range (-1 to ignore) <NUMBER>
* 2: Explosive <ARRAY> * 2: Explosive <ARRAY>
* 0: Explosive <OBJECT> * 0: Explosive <OBJECT>
* 1: Fuse ACE_time <NUMBER> * 1: Fuse time <NUMBER>
* *
* Return Value: * Return Value:
* None * None

View File

@ -75,7 +75,7 @@ if (ACE_time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then {
private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef", "_velocityMagnitude"]; private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef", "_velocityMagnitude"];
// estimate ACE_time to target // estimate time to target
_magazineType = _vehicle currentMagazineTurret _turret; _magazineType = _vehicle currentMagazineTurret _turret;
_ammoType = getText (configFile >> "CfgMagazines" >> _magazineType >> "ammo"); _ammoType = getText (configFile >> "CfgMagazines" >> _magazineType >> "ammo");
_initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineType >> "initSpeed"); _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineType >> "initSpeed");

View File

@ -19,7 +19,7 @@ EXPLODE_2_PVT(_this,_params,_pfhId);
_interval = ACE_time - GVAR(lastUpdateTime); _interval = ACE_time - GVAR(lastUpdateTime);
// Update the g-forces at constant game ACE_time intervals // Update the g-forces at constant game time intervals
if (_interval < INTERVAL) exitWith {}; if (_interval < INTERVAL) exitWith {};
if (isNull ACE_player) exitWith {}; if (isNull ACE_player) exitWith {};

View File

@ -103,7 +103,7 @@ _affected = _grenade nearEntities ["CAManBase", 20];
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,(0.8 + _strength) min 1,[1,1,1,0],[0,0,0,1],[0,0,0,0]]; GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,(0.8 + _strength) min 1,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
GVAR(flashbangPPEffectCC) ppEffectCommit 0.01; GVAR(flashbangPPEffectCC) ppEffectCommit 0.01;
//PARTIALRECOVERY - start decreasing effect over ACE_time //PARTIALRECOVERY - start decreasing effect over time
[{ [{
params ["_strength"]; params ["_strength"];

View File

@ -29,12 +29,9 @@ GVAR(isOpeningDoor) = false;
if (_unit == ACE_player) then { if (_unit == ACE_player) then {
addCamShake [4, 0.5, 5]; addCamShake [4, 0.5, 5];
local _message = parseText format ([["%1 &gt;", localize LSTRING(YouWereTappedRight)], ["&lt; %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 0));
[_message] call FUNC(displayTextStructured);
}; };
private "_message";
_message = parseText format ([["%1 &gt;", localize LSTRING(YouWereTappedRight)], ["&lt; %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 0));
["displayTextStructured", _message] call EFUNC(common,targetEvent);
}] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler);
// restore global fire teams for JIP // restore global fire teams for JIP

View File

@ -2,7 +2,7 @@
#include "script_component.hpp" #include "script_component.hpp"
TRACE_1("enter", _this); TRACE_1("enter", _this);
#define __LOCKONTIMERANDOM 2 // Deviation in lock on ACE_time #define __LOCKONTIMERANDOM 2 // Deviation in lock on time
if((count _this) > 0) then { if((count _this) > 0) then {
uiNameSpace setVariable ['ACE_RscOptics_javelin',_this select 0]; uiNameSpace setVariable ['ACE_RscOptics_javelin',_this select 0];
@ -29,7 +29,7 @@ uiNameSpace setVariable [QGVAR(arguments),
0, // Run Time 0, // Run Time
0, // Lock Time 0, // Lock Time
0, // Sound timer 0, // Sound timer
(random __LOCKONTIMERANDOM), // random lock ACE_time addition (random __LOCKONTIMERANDOM), // random lock time addition
-1 -1
] ]
]; ];

View File

@ -11,16 +11,16 @@ class CfgVehicles {
class Land_Net_Fence_4m_F: Wall_F { GVAR(isFence) = 1; }; class Land_Net_Fence_4m_F: Wall_F { GVAR(isFence) = 1; };
class Land_Net_Fence_8m_F: Wall_F { GVAR(isFence) = 1; }; class Land_Net_Fence_8m_F: Wall_F { GVAR(isFence) = 1; };
class Land_Net_FenceD_8m_F: Wall_F { GVAR(isFence) = 1; };
class Land_New_WiredFence_5m_F: Wall_F { GVAR(isFence) = 1; }; class Land_New_WiredFence_5m_F: Wall_F { GVAR(isFence) = 1; };
class Land_New_WiredFence_10m_Dam_F: Wall_F { GVAR(isFence) = 1; };
class Land_New_WiredFence_10m_F: Wall_F { GVAR(isFence) = 1; }; class Land_New_WiredFence_10m_F: Wall_F { GVAR(isFence) = 1; };
class Land_Pipe_fence_4m_F: Wall_F { GVAR(isFence) = 1; };
class Land_Pipe_fence_4mNoLC_F: Wall_F { GVAR(isFence) = 1; };
class Land_SportGround_fence_F: Wall_F { GVAR(isFence) = 1; }; class Land_SportGround_fence_F: Wall_F { GVAR(isFence) = 1; };
class Land_Wired_Fence_4m_F: Wall_F { GVAR(isFence) = 1; }; class Land_Wired_Fence_4m_F: Wall_F { GVAR(isFence) = 1; };
class Land_Wired_Fence_4mD_F: Wall_F { GVAR(isFence) = 1; };
class Land_Wired_Fence_8m_F: Wall_F { GVAR(isFence) = 1; }; class Land_Wired_Fence_8m_F: Wall_F { GVAR(isFence) = 1; };
class Land_Wired_Fence_8mD_F: Wall_F { GVAR(isFence) = 1; }; class Land_SportGround_fence_noLC_F: Wall_F { GVAR(isFence) = 1; };
class Land_Mil_WiredFence_F: Wall_F { GVAR(isFence) = 1; };
class Land_IndFnc_Corner_F: Wall_F { GVAR(isFence) = 1; };
class Land_IndFnc_9_F: Wall_F { GVAR(isFence) = 1; };
class Land_IndFnc_3_Hole_F: Wall_F { GVAR(isFence) = 1; };
class Land_IndFnc_3_F: Wall_F { GVAR(isFence) = 1; };
class Land_Razorwire_F: NonStrategic { GVAR(isFence) = 1; }; class Land_Razorwire_F: NonStrategic { GVAR(isFence) = 1; };
}; };

View File

@ -56,7 +56,7 @@ TRACE_1("Starting wire-cut action PFEH",_interactionType);
if ([_x] call FUNC(isFence)) then { if ([_x] call FUNC(isFence)) then {
_fencesHelped pushBack _x; _fencesHelped pushBack _x;
_helper = "ACE_LogicDummy" createVehicleLocal (getpos _x); _helper = "ACE_LogicDummy" createVehicleLocal (getpos _x);
_action = [QGVAR(helperCutFence), (localize LSTRING(CutFence)), QUOTE(PATHTOF(ui\wirecutter_ca.paa)), _fncStatement, _fncCondition, {}, _x, [0,0,0], 5] call EFUNC(interact_menu,createAction); _action = [QGVAR(helperCutFence), (localize LSTRING(CutFence)), QUOTE(PATHTOF(ui\wirecutter_ca.paa)), _fncStatement, _fncCondition, {}, _x, {[0,0,0]}, 5.5] call EFUNC(interact_menu,createAction);
[_helper, 0, [],_action] call EFUNC(interact_menu,addActionToObject); [_helper, 0, [],_action] call EFUNC(interact_menu,addActionToObject);
_helper setPosASL ((getPosASL _x) vectorAdd [0,0,1.25]); _helper setPosASL ((getPosASL _x) vectorAdd [0,0,1.25]);
_addedHelpers pushBack _helper; _addedHelpers pushBack _helper;

View File

@ -19,23 +19,14 @@
params ["_object"]; params ["_object"];
TRACE_1("params",_object); TRACE_1("params",_object);
private ["_typeOf", "_returnValue"]; local _typeOf = typeOf _object;
_typeOf = typeOf _object; local _returnValue = if (_typeOf != "") then {
_returnValue = false;
if (_typeOf != "") then {
//If the fence has configEntry we can check it directly //If the fence has configEntry we can check it directly
_returnValue = (1 == (getNumber (configFile >> "CfgVehicles" >> _typeOf >> QGVAR(isFence)))); (1 == (getNumber (configFile >> "CfgVehicles" >> _typeOf >> QGVAR(isFence))));
} else { } else {
//TODO: 1.50 use getModelInfo //Check the p3d name against list (in script_component.hpp)
_typeOf = toLower (str _object); //something like "123201: wall_indfnc_9.p3d" ((getModelInfo _object) select 0) in FENCE_P3DS;
{
if ((_typeOf find _x) != -1) exitWith {
_returnValue = true;
};
nil
} count FENCE_P3DS;
}; };
_returnValue _returnValue

View File

@ -9,7 +9,7 @@
* 2: Magazine is a belt <BOOL> * 2: Magazine is a belt <BOOL>
* *
* Return Value: * Return Value:
* Array in format [ACE_time, isBullet, array of ammo counts] <ARRAY> * Array in format [time, isBullet, array of ammo counts] <ARRAY>
* *
* Example: * Example:
* [10, [1,2,3,8], false] call ace_magazinerepack_fnc_simulateRepackEvents = * [10, [1,2,3,8], false] call ace_magazinerepack_fnc_simulateRepackEvents =

View File

@ -6,22 +6,16 @@ STACK TRACING
//#define DEBUG_EVENTS //#define DEBUG_EVENTS
#ifdef ENABLE_CALLSTACK #ifdef ENABLE_CALLSTACK
#define CALLSTACK(function) {private ['_ret']; if(ACE_IS_ERRORED) then { ['AUTO','AUTO'] call ACE_DUMPSTACK_FNC; ACE_IS_ERRORED = false; }; ACE_IS_ERRORED = true; ACE_STACK_TRACE set [ACE_STACK_DEPTH, [diag_tickTime, __FILE__, __LINE__, ACE_CURRENT_FUNCTION, 'ANON', _this]]; ACE_STACK_DEPTH = ACE_STACK_DEPTH + 1; ACE_CURRENT_FUNCTION = 'ANON'; _ret = _this call ##function; ACE_STACK_DEPTH = ACE_STACK_DEPTH - 1; ACE_IS_ERRORED = false; _ret;}
#define CALLSTACK_NAMED(function, functionName) {private ['_ret']; if(ACE_IS_ERRORED) then { ['AUTO','AUTO'] call ACE_DUMPSTACK_FNC; ACE_IS_ERRORED = false; }; ACE_IS_ERRORED = true; ACE_STACK_TRACE set [ACE_STACK_DEPTH, [diag_tickTime, __FILE__, __LINE__, ACE_CURRENT_FUNCTION, functionName, _this]]; ACE_STACK_DEPTH = ACE_STACK_DEPTH + 1; ACE_CURRENT_FUNCTION = functionName; _ret = _this call ##function; ACE_STACK_DEPTH = ACE_STACK_DEPTH - 1; ACE_IS_ERRORED = false; _ret;}
#define DUMPSTACK ([__FILE__, __LINE__] call ACE_DUMPSTACK_FNC)
#define CALLSTACK(function) {private ['_ret']; if(ACE_IS_ERRORED) then { ['AUTO','AUTO'] call ACE_DUMPSTACK_FNC; ACE_IS_ERRORED = false; }; ACE_IS_ERRORED = true; ACE_STACK_TRACE set [ACE_STACK_DEPTH, [diag_tickTime, __FILE__, __LINE__, ACE_CURRENT_FUNCTION, 'ANON', _this]]; ACE_STACK_DEPTH = ACE_STACK_DEPTH + 1; ACE_CURRENT_FUNCTION = 'ANON'; _ret = _this call ##function; ACE_STACK_DEPTH = ACE_STACK_DEPTH - 1; ACE_IS_ERRORED = false; _ret;} #define FUNC(var1) {private ['_ret']; if(ACE_IS_ERRORED) then { ['AUTO','AUTO'] call ACE_DUMPSTACK_FNC; ACE_IS_ERRORED = false; }; ACE_IS_ERRORED = true; ACE_STACK_TRACE set [ACE_STACK_DEPTH, [diag_tickTime, __FILE__, __LINE__, ACE_CURRENT_FUNCTION, 'TRIPLES(ADDON,fnc,var1)', _this]]; ACE_STACK_DEPTH = ACE_STACK_DEPTH + 1; ACE_CURRENT_FUNCTION = 'TRIPLES(ADDON,fnc,var1)'; _ret = _this call TRIPLES(ADDON,fnc,var1); ACE_STACK_DEPTH = ACE_STACK_DEPTH - 1; ACE_IS_ERRORED = false; _ret;}
#define CALLSTACK_NAMED(function, functionName) {private ['_ret']; if(ACE_IS_ERRORED) then { ['AUTO','AUTO'] call ACE_DUMPSTACK_FNC; ACE_IS_ERRORED = false; }; ACE_IS_ERRORED = true; ACE_STACK_TRACE set [ACE_STACK_DEPTH, [diag_tickTime, __FILE__, __LINE__, ACE_CURRENT_FUNCTION, functionName, _this]]; ACE_STACK_DEPTH = ACE_STACK_DEPTH + 1; ACE_CURRENT_FUNCTION = functionName; _ret = _this call ##function; ACE_STACK_DEPTH = ACE_STACK_DEPTH - 1; ACE_IS_ERRORED = false; _ret;} #define EFUNC(var1,var2) {private ['_ret']; if(ACE_IS_ERRORED) then { ['AUTO','AUTO'] call ACE_DUMPSTACK_FNC; ACE_IS_ERRORED = false; }; ACE_IS_ERRORED = true; ACE_STACK_TRACE set [ACE_STACK_DEPTH, [diag_tickTime, __FILE__, __LINE__, ACE_CURRENT_FUNCTION, 'TRIPLES(DOUBLES(PREFIX,var1),fnc,var2)', _this]]; ACE_STACK_DEPTH = ACE_STACK_DEPTH + 1; ACE_CURRENT_FUNCTION = 'TRIPLES(DOUBLES(PREFIX,var1),fnc,var2)'; _ret = _this call TRIPLES(DOUBLES(PREFIX,var1),fnc,var2); ACE_STACK_DEPTH = ACE_STACK_DEPTH - 1; ACE_IS_ERRORED = false; _ret;}
#define DUMPSTACK ([__FILE__, __LINE__] call ACE_DUMPSTACK_FNC)
#define FUNC(var1) {private ['_ret']; if(ACE_IS_ERRORED) then { ['AUTO','AUTO'] call ACE_DUMPSTACK_FNC; ACE_IS_ERRORED = false; }; ACE_IS_ERRORED = true; ACE_STACK_TRACE set [ACE_STACK_DEPTH, [diag_tickTime, __FILE__, __LINE__, ACE_CURRENT_FUNCTION, 'TRIPLES(ADDON,fnc,var1)', _this]]; ACE_STACK_DEPTH = ACE_STACK_DEPTH + 1; ACE_CURRENT_FUNCTION = 'TRIPLES(ADDON,fnc,var1)'; _ret = _this call TRIPLES(ADDON,fnc,var1); ACE_STACK_DEPTH = ACE_STACK_DEPTH - 1; ACE_IS_ERRORED = false; _ret;}
#define EFUNC(var1,var2) {private ['_ret']; if(ACE_IS_ERRORED) then { ['AUTO','AUTO'] call ACE_DUMPSTACK_FNC; ACE_IS_ERRORED = false; }; ACE_IS_ERRORED = true; ACE_STACK_TRACE set [ACE_STACK_DEPTH, [diag_tickTime, __FILE__, __LINE__, ACE_CURRENT_FUNCTION, 'TRIPLES(DOUBLES(PREFIX,var1),fnc,var2)', _this]]; ACE_STACK_DEPTH = ACE_STACK_DEPTH + 1; ACE_CURRENT_FUNCTION = 'TRIPLES(DOUBLES(PREFIX,var1),fnc,var2)'; _ret = _this call TRIPLES(DOUBLES(PREFIX,var1),fnc,var2); ACE_STACK_DEPTH = ACE_STACK_DEPTH - 1; ACE_IS_ERRORED = false; _ret;}
#else #else
#define CALLSTACK(function) function #define CALLSTACK(function) function
#define CALLSTACK_NAMED(function, functionName) function #define CALLSTACK_NAMED(function, functionName) function
#define DUMPSTACK #define DUMPSTACK
#define FUNC(var1) TRIPLES(ADDON,fnc,var1)
#define EFUNC(var1,var2) TRIPLES(DOUBLES(PREFIX,var1),fnc,var2)
#endif #endif

View File

@ -1,17 +1,9 @@
#include "\x\cba\addons\main\script_macros_common.hpp" #include "\x\cba\addons\main\script_macros_common.hpp"
#include "\x\cba\addons\xeh\script_xeh.hpp" #include "\x\cba\addons\xeh\script_xeh.hpp"
//Faster Array Unwraping (skips the IS_ARRAY check normaly found in EXPLODE_1_SYS)
#undef EXPLODE_2_SYS
#define EXPLODE_1_SYS_FAST(ARRAY,A) A =(ARRAY) select 0
#define EXPLODE_2_SYS(ARRAY,A,B) EXPLODE_1_SYS_FAST(ARRAY,A); B = (ARRAY) select 1
// Default versioning level // Default versioning level
#define DEFAULT_VERSIONING_LEVEL 2 #define DEFAULT_VERSIONING_LEVEL 2
#define EGVAR(module,var) TRIPLES(PREFIX,module,var)
#define QEGVAR(module,var) QUOTE(EGVAR(module,var))
#define DGVAR(varName) if(isNil "ACE_DEBUG_NAMESPACE") then { ACE_DEBUG_NAMESPACE = []; }; if(!(QUOTE(GVAR(varName)) in ACE_DEBUG_NAMESPACE)) then { PUSH(ACE_DEBUG_NAMESPACE, QUOTE(GVAR(varName))); }; GVAR(varName) #define DGVAR(varName) if(isNil "ACE_DEBUG_NAMESPACE") then { ACE_DEBUG_NAMESPACE = []; }; if(!(QUOTE(GVAR(varName)) in ACE_DEBUG_NAMESPACE)) then { PUSH(ACE_DEBUG_NAMESPACE, QUOTE(GVAR(varName))); }; GVAR(varName)
#define DVAR(varName) if(isNil "ACE_DEBUG_NAMESPACE") then { ACE_DEBUG_NAMESPACE = []; }; if(!(QUOTE(varName) in ACE_DEBUG_NAMESPACE)) then { PUSH(ACE_DEBUG_NAMESPACE, QUOTE(varName)); }; varName #define DVAR(varName) if(isNil "ACE_DEBUG_NAMESPACE") then { ACE_DEBUG_NAMESPACE = []; }; if(!(QUOTE(varName) in ACE_DEBUG_NAMESPACE)) then { PUSH(ACE_DEBUG_NAMESPACE, QUOTE(varName)); }; varName
#define DFUNC(var1) TRIPLES(ADDON,fnc,var1) #define DFUNC(var1) TRIPLES(ADDON,fnc,var1)
@ -22,14 +14,6 @@
#define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2) #define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2)
#ifndef STRING_MACROS_GUARD
#define STRING_MACROS_GUARD
#define LSTRING(var1) QUOTE(TRIPLES(STR,ADDON,var1))
#define ELSTRING(var1,var2) QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2))
#define CSTRING(var1) QUOTE(TRIPLES($STR,ADDON,var1))
#define ECSTRING(var1,var2) QUOTE(TRIPLES($STR,DOUBLES(PREFIX,var1),var2))
#endif
#define GETVAR_SYS(var1,var2) getVariable [ARR_2(QUOTE(var1),var2)] #define GETVAR_SYS(var1,var2) getVariable [ARR_2(QUOTE(var1),var2)]
#define SETVAR_SYS(var1,var2) setVariable [ARR_2(QUOTE(var1),var2)] #define SETVAR_SYS(var1,var2) setVariable [ARR_2(QUOTE(var1),var2)]
#define SETPVAR_SYS(var1,var2) setVariable [ARR_3(QUOTE(var1),var2,true)] #define SETPVAR_SYS(var1,var2) setVariable [ARR_3(QUOTE(var1),var2,true)]

View File

@ -5,13 +5,11 @@
#define MAJOR 3 #define MAJOR 3
#define MINOR 3 #define MINOR 3
#define PATCHLVL 2 #define PATCHLVL 3
#define BUILD 0 #define BUILD 0
#define VERSION MAJOR.MINOR.PATCHLVL.BUILD #define VERSION MAJOR.MINOR.PATCHLVL.BUILD
#define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD
#define ACE_TAG A.C.E.
// MINIMAL required version for the Mod. Components can specify others.. // MINIMAL required version for the Mod. Components can specify others..
#define REQUIRED_VERSION 0.5 #define REQUIRED_VERSION 1.52

View File

@ -26,7 +26,7 @@ _fnc_blendColor = {
(_c1 select 3) * (1 - _alpha) + (_c2 select 3) * _alpha] (_c1 select 3) * (1 - _alpha) + (_c2 select 3) * _alpha]
}; };
// Ambient light tint depending on ACE_time of day // Ambient light tint depending on time of day
_lightTint = switch (true) do { _lightTint = switch (true) do {
case (sunOrMoon == 1.0) : { [0.5,0.5,0.5,1] }; case (sunOrMoon == 1.0) : { [0.5,0.5,0.5,1] };
case (sunOrMoon > 0.80) : {[[1.0 - overcast,0.2,0,1], [1,1,1,1], (sunOrMoon - 0.8)/0.2] call _fnc_blendColor}; case (sunOrMoon > 0.80) : {[[1.0 - overcast,0.2,0,1], [1,1,1,1], (sunOrMoon - 0.8)/0.2] call _fnc_blendColor};

View File

@ -259,10 +259,12 @@
<Key ID="STR_ACE_Map_DefaultChannel_DisplayName"> <Key ID="STR_ACE_Map_DefaultChannel_DisplayName">
<English>Set Channel At Start</English> <English>Set Channel At Start</English>
<Polish>Ust. domyślny kanał</Polish> <Polish>Ust. domyślny kanał</Polish>
<Portuguese>Definir canal no início</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Map_DefaultChannel_Description"> <Key ID="STR_ACE_Map_DefaultChannel_Description">
<English>Change the starting marker channel at mission start</English> <English>Change the starting marker channel at mission start</English>
<Polish>Ustaw domyślny kanał dla markerów przy starcie misji</Polish> <Polish>Ustaw domyślny kanał dla markerów przy starcie misji</Polish>
<Portuguese>Muda o canal do marcador no início da missão</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -3,96 +3,127 @@
<Package name="map_gestures"> <Package name="map_gestures">
<Key ID="STR_ACE_map_gestures_moduleSettings_displayName"> <Key ID="STR_ACE_map_gestures_moduleSettings_displayName">
<English>Map Gestures</English> <English>Map Gestures</English>
<Portuguese>Gestos no mapa</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_enabled_displayName"> <Key ID="STR_ACE_map_gestures_enabled_displayName">
<English>Enabled</English> <English>Enabled</English>
<Portuguese>Ativado</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_maxRange_displayName"> <Key ID="STR_ACE_map_gestures_maxRange_displayName">
<English>Map Gesture Max Range</English> <English>Map Gesture Max Range</English>
<Portuguese>Distância para gestos no mapa</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_maxRange_description"> <Key ID="STR_ACE_map_gestures_maxRange_description">
<English>Max range between players to show the map gesture indicator [default: 7 meters]</English> <English>Max range between players to show the map gesture indicator [default: 7 meters]</English>
<Portuguese>Distância max. entre os jogadores para mostrar o indicador de gesto no mapa [padrão: 7 metros]</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultLeadAlpha_displayName"> <Key ID="STR_ACE_map_gestures_defaultLeadAlpha_displayName">
<English>Lead Default Alpha</English> <English>Lead Default Alpha</English>
<Portuguese>Transparência padrão do líder</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultLeadAlpha_description"> <Key ID="STR_ACE_map_gestures_defaultLeadAlpha_description">
<English>Fallback Alpha value for group leaders.</English> <English>Fallback Alpha value for group leaders.</English>
<Portuguese>Valor de transparência alternativo para líderes de grupo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultAlpha_displayName"> <Key ID="STR_ACE_map_gestures_defaultAlpha_displayName">
<English>Default Alpha</English> <English>Default Alpha</English>
<Portuguese>Transparência padrão</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultAlpha_descriptions"> <Key ID="STR_ACE_map_gestures_defaultAlpha_descriptions">
<English>Fallback Alpha value.</English> <English>Fallback Alpha value.</English>
<Portuguese>Valor alternativo de transparência</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultLeadColor_displayName"> <Key ID="STR_ACE_map_gestures_defaultLeadColor_displayName">
<English>Lead Default Color</English> <English>Lead Default Color</English>
<Portuguese>Cor padrão para o líder</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultLeadColor_description"> <Key ID="STR_ACE_map_gestures_defaultLeadColor_description">
<English>Fallback Color value for group leaders.</English> <English>Fallback Color value for group leaders.</English>
<Portuguese>Valor de cor alternativa para líderes de grupo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultColor_displayName"> <Key ID="STR_ACE_map_gestures_defaultColor_displayName">
<English>Default Color</English> <English>Default Color</English>
<Portuguese>Cor padrão</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultColor_description"> <Key ID="STR_ACE_map_gestures_defaultColor_description">
<English>Fallback Color value.</English> <English>Fallback Color value.</English>
<Portuguese>Valor alternativo de cor</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_leadAlpha_displayName"> <Key ID="STR_ACE_map_gestures_leadAlpha_displayName">
<English>Lead Alpha</English> <English>Lead Alpha</English>
<Portuguese>Transparência do líder</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_leadAlpha_description"> <Key ID="STR_ACE_map_gestures_leadAlpha_description">
<English>Alpha value for group leaders of groups synced with this module.</English> <English>Alpha value for group leaders of groups synced with this module.</English>
<Portuguese>Valor de transparência para líderes de grupo sincronizados com este módulo.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_alpha_displayName"> <Key ID="STR_ACE_map_gestures_alpha_displayName">
<English>Alpha</English> <English>Alpha</English>
<Portuguese>Transparência</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_alpha_description"> <Key ID="STR_ACE_map_gestures_alpha_description">
<English>Alpha value for group members of groups synced with this module.</English> <English>Alpha value for group members of groups synced with this module.</English>
<Portuguese>Valor de transparência para membros de grupo sincronizados com este módulo.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_leadColor_displayName"> <Key ID="STR_ACE_map_gestures_leadColor_displayName">
<English>Lead Color</English> <English>Lead Color</English>
<Portuguese>Cor do líder</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_leadColor_description"> <Key ID="STR_ACE_map_gestures_leadColor_description">
<English>Color value for group leaders of groups synced with this module.</English> <English>Color value for group leaders of groups synced with this module.</English>
<Portuguese>Valor de cor para líderes de grupo sincronizados com este módulo.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_color_displayName"> <Key ID="STR_ACE_map_gestures_color_displayName">
<English>Color</English> <English>Color</English>
<Portuguese>Cor</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_color_description"> <Key ID="STR_ACE_map_gestures_color_description">
<English>Color value for group members of groups synced with this module.</English> <English>Color value for group members of groups synced with this module.</English>
<Portuguese>Valor de cor para membros de grupo sincronizados com este módulo.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_moduleGroupSettings_displayName"> <Key ID="STR_ACE_map_gestures_moduleGroupSettings_displayName">
<English>Map Gestures - Group Settings</English> <English>Map Gestures - Group Settings</English>
<Portuguese>Gestos no mapa - Definições de Grupo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_interval_displayName"> <Key ID="STR_ACE_map_gestures_interval_displayName">
<English>Update Interval</English> <English>Update Interval</English>
<Portuguese>Intervalo de atualizações</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_interval_description"> <Key ID="STR_ACE_map_gestures_interval_description">
<English>Time between data updates.</English> <English>Time between data updates.</English>
<Portuguese>Tempo entre atualização de dados</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_displayName"> <Key ID="STR_ACE_map_gestures_GroupColorConfigurations_displayName">
<English>Group color configurations</English> <English>Group color configurations</English>
<Portuguese>Configurações de cores de grupo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_description"> <Key ID="STR_ACE_map_gestures_GroupColorConfigurations_description">
<English>Group color configuration containing arrays of color pairs ([leadColor, color]).</English> <English>Group color configuration containing arrays of color pairs ([leadColor, color]).</English>
<Portuguese>Configuração de cores de grupo contendo arrays com pares de cores ([leadColor, color]).</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_description"> <Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_description">
<English>Hash of Group ID mapped to the Group color configuration index.</English> <English>Hash of Group ID mapped to the Group color configuration index.</English>
<Portuguese>Hashes de ID de grupos mapeados para o índice de configuração de cor de grupos.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_displayName"> <Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_displayName">
<English>GroupID Color configuration mapping</English> <English>GroupID Color configuration mapping</English>
<Portuguese>Mapeamento de configuração para cores de GroupID</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_enabled_description"> <Key ID="STR_ACE_map_gestures_enabled_description">
<English>Enables the Map Gestures.</English> <English>Enables the Map Gestures.</English>
<Portuguese>Ativa os gestos no mapa</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_nameTextColor_displayName"> <Key ID="STR_ACE_map_gestures_nameTextColor_displayName">
<English>Name Text Color</English> <English>Name Text Color</English>
<Portuguese>Cor do texto do nome</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_nameTextColor_description"> <Key ID="STR_ACE_map_gestures_nameTextColor_description">
<English>Color of the name tag text besides the map gestures mark.</English> <English>Color of the name tag text besides the map gestures mark.</English>
<Portuguese>Cor do texto da etiqueta de nome que fica embaixo da marcação de gestos no mapa.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_mapGestures_category"> <Key ID="STR_ACE_map_gestures_mapGestures_category">
<English>Map Gestures</English> <English>Map Gestures</English>
<Portuguese>Gestos no mapa</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -70,6 +70,7 @@ PREP(setDead);
PREP(setHitPointDamage); PREP(setHitPointDamage);
PREP(setStructuralDamage); PREP(setStructuralDamage);
PREP(setUnconscious); PREP(setUnconscious);
PREP(translateSelections);
PREP(treatment); PREP(treatment);
PREP(treatment_failure); PREP(treatment_failure);
PREP(treatment_success); PREP(treatment_success);

View File

@ -10,7 +10,7 @@ if (!(_unit getVariable ["ACE_isUnconscious", false])) then {
[_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus); [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
}; };
// Remove maximum unconsciousness ACE_time handler // Remove maximum unconsciousness time handler
_maxUnconHandle = _unit getVariable [QGVAR(maxUnconTimeHandle), -1]; _maxUnconHandle = _unit getVariable [QGVAR(maxUnconTimeHandle), -1];
if (_maxUnconHandle > 0) then { if (_maxUnconHandle > 0) then {
[_maxUnconHandle] call CBA_fnc_removePerFrameHandler; [_maxUnconHandle] call CBA_fnc_removePerFrameHandler;

View File

@ -5,7 +5,7 @@
* Arguments: * Arguments:
* 0: The unit <OBJECT> * 0: The unit <OBJECT>
* 1: value <NUMBER> * 1: value <NUMBER>
* 2: ACE_time in seconds <NUMBER> * 2: time in seconds <NUMBER>
* 3: callback <CODE> * 3: callback <CODE>
* *
* Return Value: * Return Value:

View File

@ -16,7 +16,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_unit", "_selection", "_damage", "_shooter", "_projectile"]; params ["_unit", "_selection", "_damage", "_shooter", "_projectile", "_hitPointIndex"];
TRACE_5("ACE_DEBUG: HandleDamage Called",_unit, _selection, _damage, _shooter, _projectile); TRACE_5("ACE_DEBUG: HandleDamage Called",_unit, _selection, _damage, _shooter, _projectile);
// bug, apparently can fire for remote units in special cases // bug, apparently can fire for remote units in special cases
@ -39,6 +39,13 @@ TRACE_3("ACE_DEBUG: HandleDamage",_selection,_damage,_unit);
if (_selection == "hands") exitWith {_unit getHit "hands"}; if (_selection == "hands") exitWith {_unit getHit "hands"};
if (_selection == "legs") exitWith {_unit getHit "legs"}; 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 = [_unit, _selection, _hitPointIndex] 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 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" if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@todo "neck", "pelvis", "spine1", "spine2", "spine3"

View File

@ -7,7 +7,7 @@
* 1: Medication Treatment classname <STRING> * 1: Medication Treatment classname <STRING>
* 2: The medication treatment variablename <STRING> * 2: The medication treatment variablename <STRING>
* 3: Max dosage <NUMBER> * 3: Max dosage <NUMBER>
* 4: The ACE_time in the system <NUMBER> * 4: The time in the system <NUMBER>
* 5: Incompatable medication <ARRAY<STRING>> * 5: Incompatable medication <ARRAY<STRING>>
* *
* Return Value: * Return Value:

View File

@ -1,7 +1,7 @@
/* /*
* Author: Glowbal * Author: Glowbal
* Play the injured sound for a unit if the unit is damaged. The sound broadcasted across MP. * Play the injured sound for a unit if the unit is damaged. The sound broadcasted across MP.
* Will not play if the unit has already played a sound within to close a ACE_time frame. * Will not play if the unit has already played a sound within to close a time frame.
* Delay: With minimal damage (below 1), the delay is (10 + random(50)) seconds. Otherwise it is 60 seconds / damage. * Delay: With minimal damage (below 1), the delay is (10 + random(50)) seconds. Otherwise it is 60 seconds / damage.
* *
* Arguments: * Arguments:

View File

@ -5,7 +5,7 @@
* Arguments: * Arguments:
* 0: The unit that will be put in an unconscious state <OBJECT> * 0: The unit that will be put in an unconscious state <OBJECT>
* 1: Set unconsciouns <BOOL> (default: true) * 1: Set unconsciouns <BOOL> (default: true)
* 2: Minimum unconscious ACE_time <NUMBER> (default: (round(random(10)+5))) * 2: Minimum unconscious time <NUMBER> (default: (round(random(10)+5)))
* 3: Force AI Unconscious (skip random death chance) <BOOL> (default: false) * 3: Force AI Unconscious (skip random death chance) <BOOL> (default: false)
* *
* ReturnValue: * ReturnValue:

View File

@ -0,0 +1,63 @@
/*
* 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: Unit <OBJECT>
* 1: selection name <STRING>
* 2: HitPoint Index <SCALAR>
*
* Return Value:
* translated selection name <STRING>
*
* Example:
* [bob, "pelvis", 4] call ace_medical_fnc_translateSelections
* Returns "body"
*
* Public: No
*/
#include "script_component.hpp"
#define HEAD_SELECTIONS ["face_hub", "neck", "head"]
#define HEAD_HITPOINTS ["hitface", "hitneck", "hithead"]
#define TORSO_SELECTIONS ["pelvis", "spine1", "spine2", "spine3", "body"]
#define TORSO_HITPOINTS ["hitpelvis", "hitabdomen", "hitdiaphragm", "hitchest", "hitbody"]
#define L_ARM_SELECTIONS ["hand_l"]
#define L_ARM_HITPOINTS ["hitleftarm", "hand_l"]
#define R_ARM_SELECTIONS ["hand_r"]
#define R_ARM_HITPOINTS ["hitrightarm", "hand_r"]
#define L_LEG_SELECTIONS ["leg_l"]
#define L_LEG_HITPOINTS ["hitleftleg", "leg_l"]
#define R_LEG_SELECTIONS ["leg_r"]
#define R_LEG_HITPOINTS ["hitrightleg", "leg_r"]
params ["_unit", "_selection", "_hitPointIndex"];
if (_selection == "") exitWith {""};
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"};*/
//Backup method to detect weird selections/hitpoints
if ((_selection == "?") || {!(_selection in GVAR(SELECTIONS))}) exitWith {
if (_hitPointIndex < 0) exitWith {_selection};
local _hitPoint = toLower configName ((configProperties [(configFile >> "CfgVehicles" >> (typeOf _unit) >> "HitPoints")]) select _hitPointIndex);
TRACE_4("Weird sel/hit", _unit, _selection, _hitPointIndex, _hitPoint);
if (_hitPoint in HEAD_HITPOINTS) exitWith {"head"};
if (_hitPoint in TORSO_HITPOINTS) exitWith {"body"};
if (_hitPoint in L_ARM_HITPOINTS) exitWith {"hand_l"};
if (_hitPoint in R_ARM_HITPOINTS) exitWith {"hand_r"};
if (_hitPoint in L_LEG_HITPOINTS) exitWith {"leg_l"};
if (_hitPoint in R_LEG_HITPOINTS) exitWith {"leg_r"};
_selection
};
_selection;

View File

@ -84,7 +84,7 @@ _resistance = _target getvariable [QGVAR(peripheralResistance), 100];
_resistance = _resistance + _viscosityChange; _resistance = _resistance + _viscosityChange;
_target setvariable [QGVAR(peripheralResistance), _resistance max 0]; _target setvariable [QGVAR(peripheralResistance), _resistance max 0];
// Call back to ensure that the medication is decreased over ACE_time // Call back to ensure that the medication is decreased over time
[_target, _classname, _varName, _maxDose, _timeInSystem, _inCompatableMedication, _viscosityChange, _painReduce] call FUNC(onMedicationUsage); [_target, _classname, _varName, _maxDose, _timeInSystem, _inCompatableMedication, _viscosityChange, _painReduce] call FUNC(onMedicationUsage);
true true

View File

@ -2105,10 +2105,12 @@
<Polish>%1 wykonał cykl RKO</Polish> <Polish>%1 wykonał cykl RKO</Polish>
<Russian>%1 провел сердечно-легочную реанимацию</Russian> <Russian>%1 провел сердечно-легочную реанимацию</Russian>
<Spanish>%1 realicó RCP</Spanish> <Spanish>%1 realicó RCP</Spanish>
<Portuguese>%1 realizou RCP</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_Activity_fullHeal"> <Key ID="STR_ACE_Medical_Activity_fullHeal">
<English>%1 used Personal Aid Kit</English> <English>%1 used Personal Aid Kit</English>
<Polish>%1 użył apteczki</Polish> <Polish>%1 użył apteczki</Polish>
<Portuguese>%1 utilizou KPS</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_HeavilyWounded"> <Key ID="STR_ACE_Medical_HeavilyWounded">
<English>Heavily wounded</English> <English>Heavily wounded</English>
@ -2223,6 +2225,7 @@
<Polish>Lecz w pełni zabandażowane hitpointy</Polish> <Polish>Lecz w pełni zabandażowane hitpointy</Polish>
<Spanish>Curar miembros totalmente vendados</Spanish> <Spanish>Curar miembros totalmente vendados</Spanish>
<Russian>Исцелять полностью перебинтованные части тела</Russian> <Russian>Исцелять полностью перебинтованные части тела</Russian>
<Portuguese>Curar hitpoints totalmente enfaixados</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_painIsOnlySuppressed"> <Key ID="STR_ACE_Medical_painIsOnlySuppressed">
<English>Pain is only temporarily suppressed</English> <English>Pain is only temporarily suppressed</English>
@ -3441,12 +3444,14 @@
<Polish>Lecz hitpointy</Polish> <Polish>Lecz hitpointy</Polish>
<Spanish>Curar puntos de vida</Spanish> <Spanish>Curar puntos de vida</Spanish>
<Russian>Исцелять части тела</Russian> <Russian>Исцелять части тела</Russian>
<Portuguese>Curar hitpoints</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description"> <Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description">
<English>Heal fully bandaged hitpoints</English> <English>Heal fully bandaged hitpoints</English>
<Polish>Po bandażowaniu ulecz hitpointy, usuwając z nich ślady krwi i przywracając im pełną sprawność.</Polish> <Polish>Po bandażowaniu ulecz hitpointy, usuwając z nich ślady krwi i przywracając im pełną sprawność.</Polish>
<Spanish>Curar miembros totalmente vendados</Spanish> <Spanish>Curar miembros totalmente vendados</Spanish>
<Russian>Исцелять полностью перебинтованные части тела</Russian> <Russian>Исцелять полностью перебинтованные части тела</Russian>
<Portuguese>Curar totalmente hitpoints enfaixados</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName"> <Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName">
<English>Pain suppression</English> <English>Pain suppression</English>
@ -3844,12 +3849,14 @@
<Polish>Ta osoba (%1) jest przytomna i nie może zostać załadowana</Polish> <Polish>Ta osoba (%1) jest przytomna i nie może zostać załadowana</Polish>
<Spanish>Esta persona (%1) está despierto y no puede ser cargado</Spanish> <Spanish>Esta persona (%1) está despierto y no puede ser cargado</Spanish>
<Russian>Боец (%1) в сознании и не может быть погружен</Russian> <Russian>Боец (%1) в сознании и не может быть погружен</Russian>
<Portuguese>Esta pessoa (%1) está acordada e não pode ser carregada</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_noTourniquetOnBodyPart"> <Key ID="STR_ACE_Medical_noTourniquetOnBodyPart">
<English>There is no tourniquet on this body part!</English> <English>There is no tourniquet on this body part!</English>
<Polish>Na tej części ciała nie ma stazy!</Polish> <Polish>Na tej części ciała nie ma stazy!</Polish>
<Spanish>No hay torniquete en esta parte del cuerpo!</Spanish> <Spanish>No hay torniquete en esta parte del cuerpo!</Spanish>
<Russian>Нет жгута на этой части тела!</Russian> <Russian>Нет жгута на этой части тела!</Russian>
<Portuguese>Não existe nenhum torniquete nesta parte do corpo!</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -3,9 +3,6 @@
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
//Functions that are called for each draw of the map:
GVAR(miniMapDrawHandlers) = [];
//Add deviceKey entry: //Add deviceKey entry:
private ["_conditonCode", "_toggleCode", "_closeCode"]; private ["_conditonCode", "_toggleCode", "_closeCode"];
_conditonCode = { _conditonCode = {

View File

@ -23,4 +23,7 @@ PREP(saveCurrentAndSetNewMode);
PREP(showApplicationPage); PREP(showApplicationPage);
PREP(updateDisplay); PREP(updateDisplay);
//Functions that are called for each draw of the map:
GVAR(miniMapDrawHandlers) = [];
ADDON = true; ADDON = true;

View File

@ -51,5 +51,5 @@ while {(_numberOfAttempts < MAX_ATTEMPTS) && {(abs _error) > 0.2}} do {
}; };
if (_numberOfAttempts >= MAX_ATTEMPTS) exitWith {[]}; if (_numberOfAttempts >= MAX_ATTEMPTS) exitWith {[]};
//return the elevation and ACE_time required //return the elevation and time required
[_solutionElevation, (_lastTestResult select 1)] [_solutionElevation, (_lastTestResult select 1)]

View File

@ -45,7 +45,7 @@ _currentVelocity = [0, (_muzzleVelocity * cos _angleDeg), (_muzzleVelocity * sin
_currentTime = 0; _currentTime = 0;
_lastPos = _currentPos; _lastPos = _currentPos;
_kCoefficent = -1 * _relDensity * _airFriction; //save ACE_time in the loop and compute once _kCoefficent = -1 * _relDensity * _airFriction; //save time in the loop and compute once
while {((_currentVelocity select 2) > 0) || ((_currentPos select 2) >= _heightOfTarget)} do { while {((_currentVelocity select 2) > 0) || ((_currentPos select 2) >= _heightOfTarget)} do {
_lastPos = _currentPos; _lastPos = _currentPos;
@ -64,7 +64,7 @@ _linConversion = linearConversion [(_lastPos select 2), (_currentPos select 2),
_middlePos = (_lastPos vectorMultiply (1 - _linConversion)) vectorAdd (_currentPos vectorMultiply (_linConversion)); _middlePos = (_lastPos vectorMultiply (1 - _linConversion)) vectorAdd (_currentPos vectorMultiply (_linConversion));
// _middlePosOld = (_lastPos vectorAdd _currentPos) vectorMultiply 0.5; // _middlePosOld = (_lastPos vectorAdd _currentPos) vectorMultiply 0.5;
//Same to find travel ACE_time //Same to find travel time
_middleTotalTravelTime = _currentTime - (_timeStep * (1-_linConversion)); _middleTotalTravelTime = _currentTime - (_timeStep * (1-_linConversion));
//Find shot offset (from crosswind), in degrees //Find shot offset (from crosswind), in degrees

View File

@ -41,7 +41,7 @@ if (isClass (configFile >> "cfgPatches" >> "acre_api")) then {
ACE_LOGINFO("ACRE Detected."); ACE_LOGINFO("ACRE Detected.");
DFUNC(isSpeaking) = { DFUNC(isSpeaking) = {
params ["_unit"]; params ["_unit"];
(([_unit] call acre_api_fnc_isSpeaking) || {[ACE_player] call acre_api_fnc_isBroadcasting}) && {!(_unit getVariable ["ACE_isUnconscious", false])} ([_unit] call acre_api_fnc_isSpeaking) && {!(_unit getVariable ["ACE_isUnconscious", false])}
}; };
} else { } else {
if (isClass (configFile >> "cfgPatches" >> "task_force_radio")) then { if (isClass (configFile >> "cfgPatches" >> "task_force_radio")) then {

View File

@ -16,7 +16,7 @@
EXPLODE_3_PVT(_this,_temperature,_barrelMass,_totalTime); EXPLODE_3_PVT(_this,_temperature,_barrelMass,_totalTime);
// If a long ACE_time passed since the last shot, there's no need to calculate anything; the weapon should be cool // If a long time passed since the last shot, there's no need to calculate anything; the weapon should be cool
if (_totalTime > 1800) exitWith {0}; if (_totalTime > 1800) exitWith {0};
private ["_barrelSurface", "_time", "_deltaTime"]; private ["_barrelSurface", "_time", "_deltaTime"];

View File

@ -24,9 +24,9 @@ private ["_array", "_type", "_return", "_config" /*, "_priority"*/];
// get Priority Array from Config // get Priority Array from Config
_array = [ _array = [
getNumber (configFile >> "CfgWeapons" >> QGVAR(priority)), getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(priority)),
getNumber (configFile >> "CfgMagazines" >> QGVAR(priority)), getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(priority)),
getNumber (configFile >> "CfgAmmo" >> QGVAR(priority)) getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(priority))
]; ];
TRACE_1("Proiroity Array",_array); TRACE_1("Proiroity Array",_array);

View File

@ -525,12 +525,14 @@ class CfgWeapons {
class LMG_coax: LMG_RCWS { class LMG_coax: LMG_RCWS {
displayName = "PKT"; displayName = "PKT";
}; };
// class ACE_LMG_coax_PKT_mem2: LMG_coax {};
class ACE_LMG_coax_MBT_01: LMG_coax { class ACE_LMG_coax_MAG58_mem2: LMG_coax {
displayName = "MAG 58"; displayName = "MAG 58";
}; };
class ACE_LMG_coax_MAG58_mem3: LMG_coax {
class ACE_LMG_coax_APC_Tracked_03: LMG_coax { displayName = "MAG 58";
};
class ACE_LMG_coax_L94A1_mem3: LMG_coax {
displayName = "L94A1"; displayName = "L94A1";
}; };

View File

@ -21,5 +21,5 @@ _target selectWeapon _weapon;
if (currentWeapon _target != _weapon) exitWith {}; if (currentWeapon _target != _weapon) exitWith {};
if (currentMagazine _target != "") exitWith {}; if (currentMagazine _target != "") exitWith {};
// command is wip, reload ACE_time for launchers is not intended. // command is wip, reload time for launchers is not intended.
_target addWeaponItem [_weapon, _magazine]; _target addWeaponItem [_weapon, _magazine];

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="repair"> <Package name="repair">
<Key ID="STR_ACE_Repair_SpareTrack"> <Key ID="STR_ACE_Repair_SpareTrack">
@ -388,6 +388,7 @@
<Czech>Ocas</Czech> <Czech>Ocas</Czech>
<Russian>Хвост</Russian> <Russian>Хвост</Russian>
<Spanish>Tail</Spanish> <Spanish>Tail</Spanish>
<Portuguese>Cauda</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Repair_HitPitotTube"> <Key ID="STR_ACE_Repair_HitPitotTube">
<English>Pitot Tube</English> <English>Pitot Tube</English>
@ -1000,12 +1001,14 @@
<Polish>Wym. naprawy kół</Polish> <Polish>Wym. naprawy kół</Polish>
<Spanish>Requisitos de reparación de ruedas</Spanish> <Spanish>Requisitos de reparación de ruedas</Spanish>
<Russian>Для ремонта колес требуется</Russian> <Russian>Для ремонта колес требуется</Russian>
<Portuguese>Requerimentos para reparo de rodas</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Repair_wheelRepairRequiredItems_description"> <Key ID="STR_ACE_Repair_wheelRepairRequiredItems_description">
<English>Items required to remove/replace wheels</English> <English>Items required to remove/replace wheels</English>
<Polish>Przedmioty potrzebne do wymiany kół</Polish> <Polish>Przedmioty potrzebne do wymiany kół</Polish>
<Spanish>Elementos necesarios para quitar/cambiar ruedas</Spanish> <Spanish>Elementos necesarios para quitar/cambiar ruedas</Spanish>
<Russian>Предметы, которые требуются для снятия/замены колес</Russian> <Russian>Предметы, которые требуются для снятия/замены колес</Russian>
<Portuguese>Itens requeridos para remover/trocar rodas</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -44,7 +44,7 @@ _horizontal = _display displayCtrl 13;
_vertical ctrlSetText (str _elevation); _vertical ctrlSetText (str _elevation);
_horizontal ctrlSetText (str _windage); _horizontal ctrlSetText (str _windage);
// Set the ACE_time when to hide the knobs // Set the time when to hide the knobs
GVAR(timeToHide) = ACE_diagTime + 3.0; GVAR(timeToHide) = ACE_diagTime + 3.0;
if !(isNil QGVAR(fadePFH)) exitWith {}; if !(isNil QGVAR(fadePFH)) 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="tacticalladder"> <Package name="tacticalladder">
<Key ID="STR_ACE_TacticalLadder_DisplayName"> <Key ID="STR_ACE_TacticalLadder_DisplayName">
@ -41,6 +41,7 @@
<English>Extend, +Ctrl tilt</English> <English>Extend, +Ctrl tilt</English>
<German>Ausfahren, +Strg kippen</German> <German>Ausfahren, +Strg kippen</German>
<Polish>Rozłóż, +Ctrl nachyl</Polish> <Polish>Rozłóż, +Ctrl nachyl</Polish>
<Portuguese>Extender, +Ctrl tilt</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_TacticalLadder_Position"> <Key ID="STR_ACE_TacticalLadder_Position">
<English>Position ladder</English> <English>Position ladder</English>

View File

@ -91,7 +91,7 @@ class CfgVehicles {
class O_APC_Tracked_02_cannon_F: O_APC_Tracked_02_base_F { class O_APC_Tracked_02_cannon_F: O_APC_Tracked_02_base_F {
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { 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"}; 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; fuelCapacity = 660 * FUEL_FACTOR;
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { 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"}; 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 Turrets: Turrets {
class CommanderOptics: CommanderOptics {}; class CommanderOptics: CommanderOptics {};
@ -114,7 +114,7 @@ class CfgVehicles {
fuelCapacity = 550 * FUEL_FACTOR; fuelCapacity = 550 * FUEL_FACTOR;
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { 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"}; 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 Turrets: Turrets {
class CommanderOptics: CommanderOptics {}; class CommanderOptics: CommanderOptics {};
@ -127,8 +127,8 @@ class CfgVehicles {
fuelCapacity = 500 * FUEL_FACTOR; fuelCapacity = 500 * FUEL_FACTOR;
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"cannon_120mm","ACE_LMG_coax_MBT_01"}; weapons[] = {"cannon_120mm","ACE_LMG_coax_MAG58_mem2"};
magazines[] = {"32Rnd_120mm_APFSDS_shells_Tracer_Red","16Rnd_120mm_HE_shells_Tracer_Red","2000Rnd_762x51_Belt_Green","2000Rnd_762x51_Belt_Green"}; 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 Turrets: Turrets {
class CommanderOptics: CommanderOptics {}; class CommanderOptics: CommanderOptics {};
}; };
@ -281,8 +281,8 @@ class CfgVehicles {
class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F {
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"autocannon_40mm_CTWS","ACE_LMG_coax_MBT_01"}; 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_Green"}; 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 B_MBT_01_TUSK_F: B_MBT_01_cannon_F {
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"cannon_105mm","ACE_LMG_coax_MBT_01"}; weapons[] = {"cannon_105mm","ACE_LMG_coax_MAG58_mem2"};
magazines[] = {"40Rnd_105mm_APFSDS_T_Red","20Rnd_105mm_HEAT_MP_T_Red","2000Rnd_762x51_Belt_Green","2000Rnd_762x51_Belt_Green"}; magazines[] = {"40Rnd_105mm_APFSDS_T_Red","20Rnd_105mm_HEAT_MP_T_Red","2000Rnd_762x51_Belt_Red","2000Rnd_762x51_Belt_Red"};
class Turrets: Turrets { class Turrets: Turrets {
class CommanderOptics: CommanderOptics {}; class CommanderOptics: CommanderOptics {};
}; };
@ -326,7 +326,7 @@ class CfgVehicles {
class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F { class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F {
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { 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"}; magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Yellow","60Rnd_30mm_APFSDS_shells_Tracer_Yellow","2000Rnd_762x51_Belt_Yellow","2Rnd_GAT_missiles"};
}; };
}; };

View File

@ -5,8 +5,26 @@ class CfgWeapons {
class LMG_RCWS: MGun {}; class LMG_RCWS: MGun {};
class LMG_coax; class LMG_coax;
class ACE_LMG_coax_MBT_01: LMG_coax {}; class ACE_LMG_coax_L94A1_mem3: LMG_coax {};
class ACE_LMG_coax_APC_Tracked_03: 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 { 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"}; 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"};

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="Zeus"> <Package name="Zeus">
<Key ID="STR_ACE_Zeus_Settings_DisplayName"> <Key ID="STR_ACE_Zeus_Settings_DisplayName">
@ -214,15 +214,19 @@
</Key> </Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_DisplayName"> <Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_DisplayName">
<English>Add Spare Wheel</English> <English>Add Spare Wheel</English>
<Portuguese>Adicionar roda sobressalente</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_Description"> <Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_Description">
<English>Adds a Spare Wheel to the vehicle</English> <English>Adds a Spare Wheel to the vehicle</English>
<Portuguese>Adiciona uma roda sobressalente ao veículo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_DisplayName"> <Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_DisplayName">
<English>Add Spare Track</English> <English>Add Spare Track</English>
<Portuguese>Adicionar esteira sobressalente</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_Description"> <Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_Description">
<English>Adds a Spare Track to the vehicle</English> <English>Adds a Spare Track to the vehicle</English>
<Portuguese>Adiciona uma esteira sobressalente ao veículo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_OnlyAlive"> <Key ID="STR_ACE_Zeus_OnlyAlive">
<English>Unit must be alive</English> <English>Unit must be alive</English>
@ -264,9 +268,11 @@
</Key> </Key>
<Key ID="STR_ACE_Zeus_OnlyVehiclesWithCargo"> <Key ID="STR_ACE_Zeus_OnlyVehiclesWithCargo">
<English>Unit must be a vehicle with cargo space</English> <English>Unit must be a vehicle with cargo space</English>
<Portuguese>Unidade deve ser um veículo com espaço em carga</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_OnlyEnoughCargoSpace"> <Key ID="STR_ACE_Zeus_OnlyEnoughCargoSpace">
<English>Unit must have cargo space left</English> <English>Unit must have cargo space left</English>
<Portuguese>Unidade deve conter espaço sobressalente</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_OnlyNonCaptive"> <Key ID="STR_ACE_Zeus_OnlyNonCaptive">
<English>Unit must not be captive</English> <English>Unit must not be captive</English>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,8 +1,8 @@
name = "Advanced Combat Environment 3.3.2"; name = "Advanced Combat Environment 3.3.3";
picture = "logo_ace3_ca.paa"; picture = "logo_ace3_ca.paa";
actionName = "GitHub"; actionName = "GitHub";
action = "https://github.com/acemod/ACE3"; action = "https://github.com/acemod/ACE3";
description = "ACE3 - Version 3.3.2"; description = "ACE3 - Version 3.3.3";
logo = "logo_ace3_ca.paa"; logo = "logo_ace3_ca.paa";
logoOver = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa";
tooltip = "ACE3"; tooltip = "ACE3";

View File

@ -199,7 +199,7 @@ Parameters:
Example: Example:
(begin example) (begin example)
ERROR("Value not found","value of frog not found in config ...yada...yada..."); ERROR("value of frog not found in config ...yada...yada...");
(end) (end)
Author: Author:
@ -674,8 +674,9 @@ Author:
Sickboy Sickboy
------------------------------------------- */ ------------------------------------------- */
#define GVAR(var1) DOUBLES(ADDON,var1) #define GVAR(var1) DOUBLES(ADDON,var1)
#define EGVAR(var1,var2) DOUBLES(DOUBLES(PREFIX,var1),var2) #define EGVAR(var1,var2) TRIPLES(PREFIX,var1,var2)
#define QGVAR(var1) QUOTE(GVAR(var1)) #define QGVAR(var1) QUOTE(GVAR(var1))
#define QEGVAR(var1,var2) QUOTE(EGVAR(var1,var2))
/* ------------------------------------------- /* -------------------------------------------
Macro: GVARMAIN() Macro: GVARMAIN()
@ -694,6 +695,7 @@ Author:
Sickboy Sickboy
------------------------------------------- */ ------------------------------------------- */
#define GVARMAIN(var1) GVARMAINS(PREFIX,var1) #define GVARMAIN(var1) GVARMAINS(PREFIX,var1)
#define QGVARMAIN(var1) QUOTE(GVARMAIN(var1))
// TODO: What's this? // TODO: What's this?
#define SETTINGS DOUBLES(PREFIX,settings) #define SETTINGS DOUBLES(PREFIX,settings)
#define CREATELOGIC CREATELOGICS(PREFIX,COMPONENT) #define CREATELOGIC CREATELOGICS(PREFIX,COMPONENT)

View File

@ -356,5 +356,11 @@ SLX_XEH_STR spawn {
*/ */
{ (_x/SLX_XEH_STR_PreInit) call FUNC(init_once) } forEach SLX_XEH_CONFIG_FILES; { (_x/SLX_XEH_STR_PreInit) call FUNC(init_once) } forEach SLX_XEH_CONFIG_FILES;
private "_s";
XEH_LOG("XEH: PreInit Finished. " + PFORMAT_3("CACHE DISABLED? (Disable caching with cba_cache_disable.pbo)",SLX_XEH_RECOMPILE,CBA_COMPILE_RECOMPILE,CBA_FUNC_RECOMPILE)); // Normally, full caching is enabled. If not, log an informative message.
_s = if (SLX_XEH_RECOMPILE || CBA_COMPILE_RECOMPILE || CBA_FUNC_RECOMPILE) then {
PFORMAT_3(" CACHE DISABLED? (Disable caching with cba_cache_disable.pbo)",SLX_XEH_RECOMPILE,CBA_COMPILE_RECOMPILE,CBA_FUNC_RECOMPILE)
} else {
""
};
XEH_LOG("XEH: PreInit Finished." + _s);

View File

@ -40,6 +40,7 @@ local = "_this call SLX_XEH_EH_Local"; \
respawn = "_this call SLX_XEH_EH_Respawn"; \ respawn = "_this call SLX_XEH_EH_Respawn"; \
put = "_this call SLX_XEH_EH_Put"; \ put = "_this call SLX_XEH_EH_Put"; \
take = "_this call SLX_XEH_EH_Take"; \ take = "_this call SLX_XEH_EH_Take"; \
seatSwitched = "_this call SLX_XEH_EH_SeatSwitched"; \
soundPlayed = "_this call SLX_XEH_EH_SoundPlayed"; \ soundPlayed = "_this call SLX_XEH_EH_SoundPlayed"; \
weaponAssembled = "_this call SLX_XEH_EH_WeaponAssembled"; \ weaponAssembled = "_this call SLX_XEH_EH_WeaponAssembled"; \
weaponDisAssembled = "_this call SLX_XEH_EH_WeaponDisassembled"; weaponDisAssembled = "_this call SLX_XEH_EH_WeaponDisassembled";
@ -103,6 +104,7 @@ delete local; \
delete respawn; \ delete respawn; \
delete put; \ delete put; \
delete take; \ delete take; \
delete seatSwitched; \
delete soundPlayed; \ delete soundPlayed; \
delete weaponAssembled; \ delete weaponAssembled; \
delete weaponDisAssembled; delete weaponDisAssembled;

View File

@ -1440,4 +1440,4 @@ if __name__ == "__main__":
main(sys.argv) main(sys.argv)
d,h,m,s = Fract_Sec(timeit.default_timer() - start_time) 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)) 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...")