mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge remote-tracking branch 'refs/remotes/acemod/master' into Translations03
This commit is contained in:
commit
f0fa9875d1
@ -44,6 +44,7 @@ BlackPixxel <blackpixxel96@gmail.com>
|
||||
BlackQwar
|
||||
Brakoviejo
|
||||
Brisse <brisse@outlook.com>
|
||||
Brostrom.A | Evul <andreas.brostrom.ce@gmail.com>
|
||||
BullHorn <bullhorn7@gmail.com>
|
||||
Clon1998 <ps.patti1998@gmail.com>
|
||||
Codingboy
|
||||
|
@ -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 <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
|
||||
@ -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 <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
|
||||
|
||||
@ -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 <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.
|
||||
|
||||
# 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)
|
||||
|
@ -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.<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"};
|
||||
};
|
||||
};
|
||||
|
BIN
addons/captives/UI/Icon_Module_Make_Unit_Handcuffed_ca.paa
Normal file
BIN
addons/captives/UI/Icon_Module_Make_Unit_Handcuffed_ca.paa
Normal file
Binary file not shown.
@ -24,6 +24,7 @@ PREP(handlePlayerChanged);
|
||||
PREP(handleRespawn);
|
||||
PREP(handleUnitInitPost);
|
||||
PREP(handleZeusDisplayChanged);
|
||||
PREP(moduleHandcuffed);
|
||||
PREP(moduleSettings);
|
||||
PREP(moduleSurrender);
|
||||
PREP(setHandcuffed);
|
||||
|
@ -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"};
|
||||
|
@ -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
|
||||
|
35
addons/captives/functions/fnc_moduleHandcuffed.sqf
Normal file
35
addons/captives/functions/fnc_moduleHandcuffed.sqf
Normal 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;
|
@ -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 <OBJECT>
|
||||
* 0: The Module Logic <OBJECT>
|
||||
* 1: synced objects <ARRAY>
|
||||
* 2: Activated <BOOL>
|
||||
*
|
||||
@ -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;
|
||||
|
@ -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];
|
||||
|
@ -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];
|
||||
|
||||
|
@ -179,6 +179,12 @@
|
||||
<Hungarian>Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives</Hungarian>
|
||||
<Russian>Синхронизируйте с юнитами, чтобы сделать их пленными.<br />Источник: ace_captives</Russian>
|
||||
</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.<br />Source: ace_captives</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
|
||||
<English>Captives Settings</English>
|
||||
<Polish>Ustawienia więźniów</Polish>
|
||||
|
@ -171,6 +171,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 {
|
||||
|
@ -223,6 +223,7 @@ PREP(getTurretCopilot);
|
||||
PREP(getDoorTurrets);
|
||||
PREP(getTurretsFFV);
|
||||
PREP(getTurretsOther);
|
||||
PREP(hasHatch);
|
||||
|
||||
// missing inventory commands
|
||||
PREP(binocularMagazine);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* 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:
|
||||
* 0: Parameters <ARRAY>
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* 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:
|
||||
* 0: unit <OBJECT>
|
||||
|
35
addons/common/functions/fnc_hasHatch.sqf
Normal file
35
addons/common/functions/fnc_hasHatch.sqf
Normal 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
|
@ -4,7 +4,7 @@
|
||||
* Finish/Failure/Conditional are all passed [_args, _elapsedTime, _totalTime, _errorCode]
|
||||
*
|
||||
* 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
|
||||
* 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.
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* 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:
|
||||
* 0: Object the variable should be assigned to <OBJECT>
|
||||
* 1: Name of the variable <STRING>
|
||||
* 2: Value of the variable <ANY>
|
||||
* 3: Windup ACE_time <NUMBER> (default: 1)
|
||||
* 3: Windup time <NUMBER> (default: 1)
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
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 {
|
||||
GVAR(publishVarNames) = [];
|
||||
GVAR(publishNextTime) = 1e7;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* 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:
|
||||
* 0: Code to execute <CODE>
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -6,24 +6,28 @@
|
||||
<Polish>DAGR</Polish>
|
||||
<Spanish>DAGR</Spanish>
|
||||
<Russian>DAGR</Russian>
|
||||
<Portuguese>DAGR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_ConfigureDAGR">
|
||||
<English>Configure DAGR</English>
|
||||
<Polish>Konfiguruj DAGR</Polish>
|
||||
<Spanish>Configurar DAGR</Spanish>
|
||||
<Russian>Настроить DAGR</Russian>
|
||||
<Portuguese>Configurar DAGR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_ToggleDAGR">
|
||||
<English>Toggle DAGR</English>
|
||||
<Polish>Przełącz DAGR</Polish>
|
||||
<Spanish>Mostrar DAGR</Spanish>
|
||||
<Russian>Вкл./выкл. DAGR</Russian>
|
||||
<Portuguese>Mostrar DAGR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_Description">
|
||||
<English>Defense Advanced GPS Receiver</English>
|
||||
<Polish>Defense Advanced GPS Receiver</Polish>
|
||||
<Spanish>Defense Advanced GPS Receiver</Spanish>
|
||||
<Russian>Военный многофункциональный GPS-приёмник</Russian>
|
||||
<Portuguese>Defense Advanced GPS Receiver</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -63,7 +63,7 @@ if (isNull _holder) then {
|
||||
if (isNull _holder) exitWith {
|
||||
[_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 {
|
||||
[{
|
||||
_this call FUNC(disarmDropItems);
|
||||
|
@ -61,7 +61,7 @@ if (_target isKindOf "CAManBase") then {
|
||||
[_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];
|
||||
|
||||
// required for aborting animation
|
||||
|
@ -45,7 +45,7 @@ if (_target isKindOf "CAManBase") then {
|
||||
[_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];
|
||||
|
||||
[FUNC(startDragPFH), 0.2, [_unit, _target, ACE_time + 5]] call CBA_fnc_addPerFrameHandler;
|
||||
|
@ -31,7 +31,7 @@ if (!alive _target || {_unit distance _target > 10}) then {
|
||||
[_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 {
|
||||
[_idPFH] call CBA_fnc_removePerFrameHandler;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Dragging">
|
||||
<Key ID="STR_ACE_Dragging_Drag">
|
||||
@ -53,6 +53,7 @@
|
||||
<English>Raise/Lower</English>
|
||||
<German>Heben/Senken</German>
|
||||
<Polish>Wyżej/Niżej</Polish>
|
||||
<Portuguese>Levantar/Abaixar</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -7,7 +7,7 @@
|
||||
* 1: Max range (-1 to ignore) <NUMBER>
|
||||
* 2: Explosive <ARRAY>
|
||||
* 0: Explosive <OBJECT>
|
||||
* 1: Fuse ACE_time <NUMBER>
|
||||
* 1: Fuse time <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
|
@ -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"];
|
||||
|
||||
// estimate ACE_time to target
|
||||
// estimate time to target
|
||||
_magazineType = _vehicle currentMagazineTurret _turret;
|
||||
_ammoType = getText (configFile >> "CfgMagazines" >> _magazineType >> "ammo");
|
||||
_initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineType >> "initSpeed");
|
||||
|
@ -19,7 +19,7 @@ EXPLODE_2_PVT(_this,_params,_pfhId);
|
||||
|
||||
_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 (isNull ACE_player) exitWith {};
|
||||
|
@ -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) ppEffectCommit 0.01;
|
||||
|
||||
//PARTIALRECOVERY - start decreasing effect over ACE_time
|
||||
//PARTIALRECOVERY - start decreasing effect over time
|
||||
[{
|
||||
params ["_strength"];
|
||||
|
||||
|
@ -29,12 +29,9 @@ GVAR(isOpeningDoor) = false;
|
||||
|
||||
if (_unit == ACE_player) then {
|
||||
addCamShake [4, 0.5, 5];
|
||||
local _message = parseText format ([["%1 >", localize LSTRING(YouWereTappedRight)], ["< %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 0));
|
||||
[_message] call FUNC(displayTextStructured);
|
||||
};
|
||||
|
||||
private "_message";
|
||||
_message = parseText format ([["%1 >", localize LSTRING(YouWereTappedRight)], ["< %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 0));
|
||||
|
||||
["displayTextStructured", _message] call EFUNC(common,targetEvent);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
// restore global fire teams for JIP
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include "script_component.hpp"
|
||||
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 {
|
||||
uiNameSpace setVariable ['ACE_RscOptics_javelin',_this select 0];
|
||||
@ -29,7 +29,7 @@ uiNameSpace setVariable [QGVAR(arguments),
|
||||
0, // Run Time
|
||||
0, // Lock Time
|
||||
0, // Sound timer
|
||||
(random __LOCKONTIMERANDOM), // random lock ACE_time addition
|
||||
(random __LOCKONTIMERANDOM), // random lock time addition
|
||||
-1
|
||||
]
|
||||
];
|
||||
|
@ -11,16 +11,16 @@ class CfgVehicles {
|
||||
|
||||
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_FenceD_8m_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_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_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_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; };
|
||||
};
|
||||
|
@ -56,7 +56,7 @@ TRACE_1("Starting wire-cut action PFEH",_interactionType);
|
||||
if ([_x] call FUNC(isFence)) then {
|
||||
_fencesHelped pushBack _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 setPosASL ((getPosASL _x) vectorAdd [0,0,1.25]);
|
||||
_addedHelpers pushBack _helper;
|
||||
|
@ -19,23 +19,14 @@
|
||||
params ["_object"];
|
||||
TRACE_1("params",_object);
|
||||
|
||||
private ["_typeOf", "_returnValue"];
|
||||
local _typeOf = typeOf _object;
|
||||
|
||||
_typeOf = typeOf _object;
|
||||
_returnValue = false;
|
||||
|
||||
if (_typeOf != "") then {
|
||||
local _returnValue = if (_typeOf != "") then {
|
||||
//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 {
|
||||
//TODO: 1.50 use getModelInfo
|
||||
_typeOf = toLower (str _object); //something like "123201: wall_indfnc_9.p3d"
|
||||
{
|
||||
if ((_typeOf find _x) != -1) exitWith {
|
||||
_returnValue = true;
|
||||
};
|
||||
nil
|
||||
} count FENCE_P3DS;
|
||||
//Check the p3d name against list (in script_component.hpp)
|
||||
((getModelInfo _object) select 0) in FENCE_P3DS;
|
||||
};
|
||||
|
||||
_returnValue
|
||||
|
@ -9,7 +9,7 @@
|
||||
* 2: Magazine is a belt <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* Array in format [ACE_time, isBullet, array of ammo counts] <ARRAY>
|
||||
* Array in format [time, isBullet, array of ammo counts] <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [10, [1,2,3,8], false] call ace_magazinerepack_fnc_simulateRepackEvents =
|
||||
|
@ -6,22 +6,16 @@ STACK TRACING
|
||||
//#define DEBUG_EVENTS
|
||||
|
||||
#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 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 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;}
|
||||
|
||||
#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
|
||||
#define CALLSTACK(function) function
|
||||
#define CALLSTACK_NAMED(function, functionName) function
|
||||
#define DUMPSTACK
|
||||
|
||||
#define FUNC(var1) TRIPLES(ADDON,fnc,var1)
|
||||
#define EFUNC(var1,var2) TRIPLES(DOUBLES(PREFIX,var1),fnc,var2)
|
||||
|
||||
#define CALLSTACK(function) function
|
||||
#define CALLSTACK_NAMED(function, functionName) function
|
||||
#define DUMPSTACK
|
||||
#endif
|
||||
|
||||
|
||||
@ -32,7 +26,7 @@ PERFORMANCE COUNTERS SECTION
|
||||
|
||||
#ifdef ENABLE_PERFORMANCE_COUNTERS
|
||||
#define CBA_fnc_addPerFrameHandler { _ret = [(_this select 0), (_this select 1), (_this select 2), #function] call CBA_fnc_addPerFrameHandler; if(isNil "ACE_PFH_COUNTER" ) then { ACE_PFH_COUNTER=[]; }; ACE_PFH_COUNTER pushBack [[_ret, __FILE__, __LINE__], [(_this select 0), (_this select 1), (_this select 2)]]; _ret }
|
||||
|
||||
|
||||
#define CREATE_COUNTER(x) if(isNil "ACE_COUNTERS" ) then { ACE_COUNTERS=[]; }; GVAR(DOUBLES(x,counter))=[]; GVAR(DOUBLES(x,counter)) set[0, QUOTE(GVAR(DOUBLES(x,counter)))]; GVAR(DOUBLES(x,counter)) set[1, diag_tickTime]; ACE_COUNTERS pushBack GVAR(DOUBLES(x,counter));
|
||||
#define BEGIN_COUNTER(x) if(isNil QUOTE(GVAR(DOUBLES(x,counter)))) then { CREATE_COUNTER(x) }; GVAR(DOUBLES(x,counter)) set[2, diag_tickTime];
|
||||
#define END_COUNTER(x) GVAR(DOUBLES(x,counter)) pushBack [(GVAR(DOUBLES(x,counter)) select 2), diag_tickTime];
|
||||
@ -43,4 +37,4 @@ PERFORMANCE COUNTERS SECTION
|
||||
#define BEGIN_COUNTER(x) /* disabled */
|
||||
#define END_COUNTER(x) /* disabled */
|
||||
#define DUMP_COUNTERS /* disabled */
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1,17 +1,9 @@
|
||||
#include "\x\cba\addons\main\script_macros_common.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
|
||||
#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 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)
|
||||
@ -22,14 +14,6 @@
|
||||
|
||||
#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 SETVAR_SYS(var1,var2) setVariable [ARR_2(QUOTE(var1),var2)]
|
||||
#define SETPVAR_SYS(var1,var2) setVariable [ARR_3(QUOTE(var1),var2,true)]
|
||||
|
@ -5,13 +5,11 @@
|
||||
|
||||
#define MAJOR 3
|
||||
#define MINOR 3
|
||||
#define PATCHLVL 2
|
||||
#define PATCHLVL 3
|
||||
#define BUILD 0
|
||||
|
||||
#define VERSION 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..
|
||||
#define REQUIRED_VERSION 0.5
|
||||
#define REQUIRED_VERSION 1.52
|
||||
|
@ -26,7 +26,7 @@ _fnc_blendColor = {
|
||||
(_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 {
|
||||
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};
|
||||
|
@ -259,10 +259,12 @@
|
||||
<Key ID="STR_ACE_Map_DefaultChannel_DisplayName">
|
||||
<English>Set Channel At Start</English>
|
||||
<Polish>Ust. domyślny kanał</Polish>
|
||||
<Portuguese>Definir canal no início</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_DefaultChannel_Description">
|
||||
<English>Change the starting marker channel at mission start</English>
|
||||
<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>
|
||||
</Package>
|
||||
</Project>
|
@ -3,96 +3,127 @@
|
||||
<Package name="map_gestures">
|
||||
<Key ID="STR_ACE_map_gestures_moduleSettings_displayName">
|
||||
<English>Map Gestures</English>
|
||||
<Portuguese>Gestos no mapa</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_enabled_displayName">
|
||||
<English>Enabled</English>
|
||||
<Portuguese>Ativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_maxRange_displayName">
|
||||
<English>Map Gesture Max Range</English>
|
||||
<Portuguese>Distância para gestos no mapa</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_maxRange_description">
|
||||
<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 ID="STR_ACE_map_gestures_defaultLeadAlpha_displayName">
|
||||
<English>Lead Default Alpha</English>
|
||||
<Portuguese>Transparência padrão do líder</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultLeadAlpha_description">
|
||||
<English>Fallback Alpha value for group leaders.</English>
|
||||
<Portuguese>Valor de transparência alternativo para líderes de grupo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultAlpha_displayName">
|
||||
<English>Default Alpha</English>
|
||||
<Portuguese>Transparência padrão</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultAlpha_descriptions">
|
||||
<English>Fallback Alpha value.</English>
|
||||
<Portuguese>Valor alternativo de transparência</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultLeadColor_displayName">
|
||||
<English>Lead Default Color</English>
|
||||
<Portuguese>Cor padrão para o líder</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultLeadColor_description">
|
||||
<English>Fallback Color value for group leaders.</English>
|
||||
<Portuguese>Valor de cor alternativa para líderes de grupo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultColor_displayName">
|
||||
<English>Default Color</English>
|
||||
<Portuguese>Cor padrão</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultColor_description">
|
||||
<English>Fallback Color value.</English>
|
||||
<Portuguese>Valor alternativo de cor</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_leadAlpha_displayName">
|
||||
<English>Lead Alpha</English>
|
||||
<Portuguese>Transparência do líder</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_leadAlpha_description">
|
||||
<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 ID="STR_ACE_map_gestures_alpha_displayName">
|
||||
<English>Alpha</English>
|
||||
<Portuguese>Transparência</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_alpha_description">
|
||||
<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 ID="STR_ACE_map_gestures_leadColor_displayName">
|
||||
<English>Lead Color</English>
|
||||
<Portuguese>Cor do líder</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_leadColor_description">
|
||||
<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 ID="STR_ACE_map_gestures_color_displayName">
|
||||
<English>Color</English>
|
||||
<Portuguese>Cor</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_color_description">
|
||||
<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 ID="STR_ACE_map_gestures_moduleGroupSettings_displayName">
|
||||
<English>Map Gestures - Group Settings</English>
|
||||
<Portuguese>Gestos no mapa - Definições de Grupo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_interval_displayName">
|
||||
<English>Update Interval</English>
|
||||
<Portuguese>Intervalo de atualizações</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_interval_description">
|
||||
<English>Time between data updates.</English>
|
||||
<Portuguese>Tempo entre atualização de dados</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_displayName">
|
||||
<English>Group color configurations</English>
|
||||
<Portuguese>Configurações de cores de grupo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_description">
|
||||
<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 ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_description">
|
||||
<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 ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_displayName">
|
||||
<English>GroupID Color configuration mapping</English>
|
||||
<Portuguese>Mapeamento de configuração para cores de GroupID</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_enabled_description">
|
||||
<English>Enables the Map Gestures.</English>
|
||||
<Portuguese>Ativa os gestos no mapa</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_nameTextColor_displayName">
|
||||
<English>Name Text Color</English>
|
||||
<Portuguese>Cor do texto do nome</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_nameTextColor_description">
|
||||
<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 ID="STR_ACE_map_gestures_mapGestures_category">
|
||||
<English>Map Gestures</English>
|
||||
<Portuguese>Gestos no mapa</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -70,6 +70,7 @@ PREP(setDead);
|
||||
PREP(setHitPointDamage);
|
||||
PREP(setStructuralDamage);
|
||||
PREP(setUnconscious);
|
||||
PREP(translateSelections);
|
||||
PREP(treatment);
|
||||
PREP(treatment_failure);
|
||||
PREP(treatment_success);
|
||||
|
@ -10,7 +10,7 @@ if (!(_unit getVariable ["ACE_isUnconscious", false])) then {
|
||||
[_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];
|
||||
if (_maxUnconHandle > 0) then {
|
||||
[_maxUnconHandle] call CBA_fnc_removePerFrameHandler;
|
||||
|
@ -5,7 +5,7 @@
|
||||
* Arguments:
|
||||
* 0: The unit <OBJECT>
|
||||
* 1: value <NUMBER>
|
||||
* 2: ACE_time in seconds <NUMBER>
|
||||
* 2: time in seconds <NUMBER>
|
||||
* 3: callback <CODE>
|
||||
*
|
||||
* Return Value:
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
#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);
|
||||
|
||||
// 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 == "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 (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@todo "neck", "pelvis", "spine1", "spine2", "spine3"
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
* 1: Medication Treatment classname <STRING>
|
||||
* 2: The medication treatment variablename <STRING>
|
||||
* 3: Max dosage <NUMBER>
|
||||
* 4: The ACE_time in the system <NUMBER>
|
||||
* 4: The time in the system <NUMBER>
|
||||
* 5: Incompatable medication <ARRAY<STRING>>
|
||||
*
|
||||
* Return Value:
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* 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.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -5,7 +5,7 @@
|
||||
* Arguments:
|
||||
* 0: The unit that will be put in an unconscious state <OBJECT>
|
||||
* 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)
|
||||
*
|
||||
* ReturnValue:
|
||||
|
63
addons/medical/functions/fnc_translateSelections.sqf
Normal file
63
addons/medical/functions/fnc_translateSelections.sqf
Normal 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;
|
@ -84,7 +84,7 @@ _resistance = _target getvariable [QGVAR(peripheralResistance), 100];
|
||||
_resistance = _resistance + _viscosityChange;
|
||||
_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);
|
||||
|
||||
true
|
||||
|
@ -2105,10 +2105,12 @@
|
||||
<Polish>%1 wykonał cykl RKO</Polish>
|
||||
<Russian>%1 провел сердечно-легочную реанимацию</Russian>
|
||||
<Spanish>%1 realicó RCP</Spanish>
|
||||
<Portuguese>%1 realizou RCP</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Activity_fullHeal">
|
||||
<English>%1 used Personal Aid Kit</English>
|
||||
<Polish>%1 użył apteczki</Polish>
|
||||
<Portuguese>%1 utilizou KPS</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_HeavilyWounded">
|
||||
<English>Heavily wounded</English>
|
||||
@ -2223,6 +2225,7 @@
|
||||
<Polish>Lecz w pełni zabandażowane hitpointy</Polish>
|
||||
<Spanish>Curar miembros totalmente vendados</Spanish>
|
||||
<Russian>Исцелять полностью перебинтованные части тела</Russian>
|
||||
<Portuguese>Curar hitpoints totalmente enfaixados</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_painIsOnlySuppressed">
|
||||
<English>Pain is only temporarily suppressed</English>
|
||||
@ -3441,12 +3444,14 @@
|
||||
<Polish>Lecz hitpointy</Polish>
|
||||
<Spanish>Curar puntos de vida</Spanish>
|
||||
<Russian>Исцелять части тела</Russian>
|
||||
<Portuguese>Curar hitpoints</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description">
|
||||
<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>
|
||||
<Spanish>Curar miembros totalmente vendados</Spanish>
|
||||
<Russian>Исцелять полностью перебинтованные части тела</Russian>
|
||||
<Portuguese>Curar totalmente hitpoints enfaixados</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName">
|
||||
<English>Pain suppression</English>
|
||||
@ -3844,12 +3849,14 @@
|
||||
<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>
|
||||
<Russian>Боец (%1) в сознании и не может быть погружен</Russian>
|
||||
<Portuguese>Esta pessoa (%1) está acordada e não pode ser carregada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_noTourniquetOnBodyPart">
|
||||
<English>There is no tourniquet on this body part!</English>
|
||||
<Polish>Na tej części ciała nie ma stazy!</Polish>
|
||||
<Spanish>No hay torniquete en esta parte del cuerpo!</Spanish>
|
||||
<Russian>Нет жгута на этой части тела!</Russian>
|
||||
<Portuguese>Não existe nenhum torniquete nesta parte do corpo!</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -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 = {
|
||||
|
@ -23,4 +23,7 @@ PREP(saveCurrentAndSetNewMode);
|
||||
PREP(showApplicationPage);
|
||||
PREP(updateDisplay);
|
||||
|
||||
//Functions that are called for each draw of the map:
|
||||
GVAR(miniMapDrawHandlers) = [];
|
||||
|
||||
ADDON = true;
|
||||
|
@ -51,5 +51,5 @@ while {(_numberOfAttempts < MAX_ATTEMPTS) && {(abs _error) > 0.2}} do {
|
||||
};
|
||||
if (_numberOfAttempts >= MAX_ATTEMPTS) exitWith {[]};
|
||||
|
||||
//return the elevation and ACE_time required
|
||||
//return the elevation and time required
|
||||
[_solutionElevation, (_lastTestResult select 1)]
|
||||
|
@ -45,7 +45,7 @@ _currentVelocity = [0, (_muzzleVelocity * cos _angleDeg), (_muzzleVelocity * sin
|
||||
_currentTime = 0;
|
||||
_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 {
|
||||
_lastPos = _currentPos;
|
||||
@ -64,7 +64,7 @@ _linConversion = linearConversion [(_lastPos select 2), (_currentPos select 2),
|
||||
_middlePos = (_lastPos vectorMultiply (1 - _linConversion)) vectorAdd (_currentPos vectorMultiply (_linConversion));
|
||||
// _middlePosOld = (_lastPos vectorAdd _currentPos) vectorMultiply 0.5;
|
||||
|
||||
//Same to find travel ACE_time
|
||||
//Same to find travel time
|
||||
_middleTotalTravelTime = _currentTime - (_timeStep * (1-_linConversion));
|
||||
|
||||
//Find shot offset (from crosswind), in degrees
|
||||
|
@ -41,7 +41,7 @@ if (isClass (configFile >> "cfgPatches" >> "acre_api")) then {
|
||||
ACE_LOGINFO("ACRE Detected.");
|
||||
DFUNC(isSpeaking) = {
|
||||
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 {
|
||||
if (isClass (configFile >> "cfgPatches" >> "task_force_radio")) then {
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
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};
|
||||
|
||||
private ["_barrelSurface", "_time", "_deltaTime"];
|
||||
|
@ -24,9 +24,9 @@ private ["_array", "_type", "_return", "_config" /*, "_priority"*/];
|
||||
|
||||
// get Priority Array from Config
|
||||
_array = [
|
||||
getNumber (configFile >> "CfgWeapons" >> QGVAR(priority)),
|
||||
getNumber (configFile >> "CfgMagazines" >> QGVAR(priority)),
|
||||
getNumber (configFile >> "CfgAmmo" >> QGVAR(priority))
|
||||
getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(priority)),
|
||||
getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(priority)),
|
||||
getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(priority))
|
||||
];
|
||||
|
||||
TRACE_1("Proiroity Array",_array);
|
||||
|
@ -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";
|
||||
};
|
||||
|
||||
|
@ -21,5 +21,5 @@ _target selectWeapon _weapon;
|
||||
if (currentWeapon _target != _weapon) 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];
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="repair">
|
||||
<Key ID="STR_ACE_Repair_SpareTrack">
|
||||
@ -388,6 +388,7 @@
|
||||
<Czech>Ocas</Czech>
|
||||
<Russian>Хвост</Russian>
|
||||
<Spanish>Tail</Spanish>
|
||||
<Portuguese>Cauda</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Repair_HitPitotTube">
|
||||
<English>Pitot Tube</English>
|
||||
@ -1000,12 +1001,14 @@
|
||||
<Polish>Wym. naprawy kół</Polish>
|
||||
<Spanish>Requisitos de reparación de ruedas</Spanish>
|
||||
<Russian>Для ремонта колес требуется</Russian>
|
||||
<Portuguese>Requerimentos para reparo de rodas</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Repair_wheelRepairRequiredItems_description">
|
||||
<English>Items required to remove/replace wheels</English>
|
||||
<Polish>Przedmioty potrzebne do wymiany kół</Polish>
|
||||
<Spanish>Elementos necesarios para quitar/cambiar ruedas</Spanish>
|
||||
<Russian>Предметы, которые требуются для снятия/замены колес</Russian>
|
||||
<Portuguese>Itens requeridos para remover/trocar rodas</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -44,7 +44,7 @@ _horizontal = _display displayCtrl 13;
|
||||
_vertical ctrlSetText (str _elevation);
|
||||
_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;
|
||||
|
||||
if !(isNil QGVAR(fadePFH)) exitWith {};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="tacticalladder">
|
||||
<Key ID="STR_ACE_TacticalLadder_DisplayName">
|
||||
@ -41,6 +41,7 @@
|
||||
<English>Extend, +Ctrl tilt</English>
|
||||
<German>Ausfahren, +Strg kippen</German>
|
||||
<Polish>Rozłóż, +Ctrl nachyl</Polish>
|
||||
<Portuguese>Extender, +Ctrl tilt</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_TacticalLadder_Position">
|
||||
<English>Position ladder</English>
|
||||
@ -67,4 +68,4 @@
|
||||
<Portuguese>Pegar escada</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -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"};
|
||||
};
|
||||
};
|
||||
|
@ -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"};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Zeus">
|
||||
<Key ID="STR_ACE_Zeus_Settings_DisplayName">
|
||||
@ -214,15 +214,19 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_DisplayName">
|
||||
<English>Add Spare Wheel</English>
|
||||
<Portuguese>Adicionar roda sobressalente</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_Description">
|
||||
<English>Adds a Spare Wheel to the vehicle</English>
|
||||
<Portuguese>Adiciona uma roda sobressalente ao veículo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_DisplayName">
|
||||
<English>Add Spare Track</English>
|
||||
<Portuguese>Adicionar esteira sobressalente</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_Description">
|
||||
<English>Adds a Spare Track to the vehicle</English>
|
||||
<Portuguese>Adiciona uma esteira sobressalente ao veículo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_OnlyAlive">
|
||||
<English>Unit must be alive</English>
|
||||
@ -264,9 +268,11 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_OnlyVehiclesWithCargo">
|
||||
<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 ID="STR_ACE_Zeus_OnlyEnoughCargoSpace">
|
||||
<English>Unit must have cargo space left</English>
|
||||
<Portuguese>Unidade deve conter espaço sobressalente</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_OnlyNonCaptive">
|
||||
<English>Unit must not be captive</English>
|
||||
@ -317,4 +323,4 @@
|
||||
<Spanish>Añadir cualquier objeto creado a todos los directores en la misión</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
4
mod.cpp
4
mod.cpp
@ -1,8 +1,8 @@
|
||||
name = "Advanced Combat Environment 3.3.2";
|
||||
name = "Advanced Combat Environment 3.3.3";
|
||||
picture = "logo_ace3_ca.paa";
|
||||
actionName = "GitHub";
|
||||
action = "https://github.com/acemod/ACE3";
|
||||
description = "ACE3 - Version 3.3.2";
|
||||
description = "ACE3 - Version 3.3.3";
|
||||
logo = "logo_ace3_ca.paa";
|
||||
logoOver = "logo_ace3_ca.paa";
|
||||
tooltip = "ACE3";
|
||||
|
@ -199,7 +199,7 @@ Parameters:
|
||||
|
||||
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)
|
||||
|
||||
Author:
|
||||
@ -674,8 +674,9 @@ Author:
|
||||
Sickboy
|
||||
------------------------------------------- */
|
||||
#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 QEGVAR(var1,var2) QUOTE(EGVAR(var1,var2))
|
||||
|
||||
/* -------------------------------------------
|
||||
Macro: GVARMAIN()
|
||||
@ -694,6 +695,7 @@ Author:
|
||||
Sickboy
|
||||
------------------------------------------- */
|
||||
#define GVARMAIN(var1) GVARMAINS(PREFIX,var1)
|
||||
#define QGVARMAIN(var1) QUOTE(GVARMAIN(var1))
|
||||
// TODO: What's this?
|
||||
#define SETTINGS DOUBLES(PREFIX,settings)
|
||||
#define CREATELOGIC CREATELOGICS(PREFIX,COMPONENT)
|
||||
|
@ -356,5 +356,11 @@ SLX_XEH_STR spawn {
|
||||
*/
|
||||
{ (_x/SLX_XEH_STR_PreInit) call FUNC(init_once) } forEach SLX_XEH_CONFIG_FILES;
|
||||
|
||||
|
||||
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));
|
||||
private "_s";
|
||||
// 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);
|
||||
|
@ -40,6 +40,7 @@ local = "_this call SLX_XEH_EH_Local"; \
|
||||
respawn = "_this call SLX_XEH_EH_Respawn"; \
|
||||
put = "_this call SLX_XEH_EH_Put"; \
|
||||
take = "_this call SLX_XEH_EH_Take"; \
|
||||
seatSwitched = "_this call SLX_XEH_EH_SeatSwitched"; \
|
||||
soundPlayed = "_this call SLX_XEH_EH_SoundPlayed"; \
|
||||
weaponAssembled = "_this call SLX_XEH_EH_WeaponAssembled"; \
|
||||
weaponDisAssembled = "_this call SLX_XEH_EH_WeaponDisassembled";
|
||||
@ -51,11 +52,11 @@ weaponDisAssembled = "_this call SLX_XEH_EH_WeaponDisassembled";
|
||||
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
MACRO: DELETE_EVENTHANDLERS
|
||||
|
||||
Removes all event handlers.
|
||||
|
||||
|
||||
Example:
|
||||
(begin example)
|
||||
class DefaultEventhandlers;
|
||||
@ -103,6 +104,7 @@ delete local; \
|
||||
delete respawn; \
|
||||
delete put; \
|
||||
delete take; \
|
||||
delete seatSwitched; \
|
||||
delete soundPlayed; \
|
||||
delete weaponAssembled; \
|
||||
delete weaponDisAssembled;
|
||||
|
@ -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...")
|
||||
|
Loading…
Reference in New Issue
Block a user