mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
manual merge
This commit is contained in:
commit
da70854568
10
.github/CONTRIBUTING.md
vendored
10
.github/CONTRIBUTING.md
vendored
@ -6,11 +6,9 @@ If you have found an issue with ACE3 please make sure that ACE3 really is the ca
|
||||
|
||||
Indicate if the issue appears on stable or development version. In case it is the development version, please also include the commit SHA-1 hash.
|
||||
|
||||
<div class="panel callout">
|
||||
<h5>Please note:</h5>
|
||||
<p>It's not a valid to simply remove <code>@ace</code> from the mod list to confirm that ACE3 is the culprit.</p>
|
||||
<p>If the error happens when using a <b>third-party mod</b> contact the author of the appropriate mod and report the issue there.</p>
|
||||
</div>
|
||||
**Please note:**
|
||||
- It's not a valid to simply remove <code>@ace</code> from the mod list to confirm that ACE3 is the culprit.
|
||||
- If the error happens when using a <b>third-party mod</b> contact the author of the appropriate mod and report the issue there.
|
||||
|
||||
## Reporting the issue
|
||||
|
||||
@ -26,6 +24,6 @@ ACE2, AGM and CSE had a lot of features implemented or planned. All of them are
|
||||
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
|
||||
|
||||
## Requesting a feature
|
||||
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
|
||||
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/3594). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
|
||||
|
||||
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
|
||||
|
28
.github/ISSUE_TEMPLATE.md
vendored
28
.github/ISSUE_TEMPLATE.md
vendored
@ -1,25 +1,23 @@
|
||||
**Arma 3 Version:** `x.xx`
|
||||
*(indicate if stable, rc or dev*)
|
||||
|
||||
**ACE3 Version:** `3.x.x`
|
||||
*(indicate if stable or dev, if dev indicate the commit the version is based on)*
|
||||
**Arma 3 Version:** `x.xx` (stable / rc / dev)
|
||||
**CBA Version:** `2.x.x` (stable / dev + commit hash)
|
||||
**ACE3 Version:** `3.x.x` (stable / dev + commit hash)
|
||||
|
||||
**Mods:**
|
||||
* `@CBA_A3`
|
||||
* `@ace`
|
||||
* ...
|
||||
|
||||
**Placed Modules:**
|
||||
* *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.*
|
||||
- `@CBA_A3`
|
||||
- `@ace`
|
||||
|
||||
**Description:**
|
||||
* *Add a detailed description of the error. This makes it easier for us to fix the issue.*
|
||||
- Add a detailed description of the error. This makes it easier for us to fix the issue.
|
||||
|
||||
**Steps to reproduce:**
|
||||
* *Add the steps needed to reproduce the issue.*
|
||||
- Add the steps needed to reproduce the issue.
|
||||
|
||||
**Where did the issue occur?**
|
||||
* *A possible answer might be "Dedicated Server", "Local Multiplayer", "Editor", or "Singleplayer"*
|
||||
- Dedicated / Self-Hosted Multiplayer / Singleplayer / Editor (Singleplayer) / Editor (Multiplayer) / Virtual Arsenal
|
||||
|
||||
**Placed Modules:**
|
||||
- Add the list of modules you have placed on the map. Use 'None' if the error occurs without any modules.
|
||||
|
||||
**RPT log file:**
|
||||
* *Add a link (pastebin.com) to the client and/or server RPT file. An instruction to find your RPT files can be [found here](https://community.bistudio.com/wiki/Crash_Files#Arma_3)*
|
||||
- Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3).
|
||||
- If possible at the time the bug is encountered, go to ACE Options and select "Debug To Clipboard", this will print extensive debug information to the RPT file.
|
||||
|
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,10 +1,4 @@
|
||||
### When merged this pull request will:
|
||||
|
||||
1. *Describe what this pull request will do*
|
||||
2. *Each change in a seperate line*
|
||||
|
||||
---
|
||||
*Delete this line and everything below*
|
||||
|
||||
- [Make sure to respect the file structure](http://ace3mod.com/wiki/development/modularity-and-pbo-structure.html)
|
||||
- [Make sure to respect the coding guidelines](http://ace3mod.com/wiki/development/coding-guidelines.html)
|
||||
**When merged this pull request will:**
|
||||
- Describe what this pull request will do
|
||||
- Each change in a separate line
|
||||
- Respect the [Development Guidelines](http://ace3mod.com/wiki/development/)
|
||||
|
@ -12,6 +12,7 @@ before_script:
|
||||
fi
|
||||
script:
|
||||
- python3 tools/sqf_validator.py
|
||||
- python3 tools/config_style_checker.py
|
||||
- if [ -n "${GH_TOKEN}" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
|
||||
python3 tools/deploy.py;
|
||||
fi
|
||||
|
@ -65,6 +65,7 @@ F3 Project <alanr@ferstaberinde.com>
|
||||
Falke75
|
||||
Ferenczi
|
||||
Ferenzi
|
||||
FFAAMOD <modffaa@gmail.com>
|
||||
Filip Basara <filip.basara93@googlemail.com>
|
||||
fr89k <kaschitoku@web.de>
|
||||
FreeZbe <freeseb@gmail.com>
|
||||
@ -74,6 +75,7 @@ Gianmarco Varriale (TeamNuke) <admin@forhost.org>
|
||||
GieNkoV <gienkov.grzegorz@gmail.com>
|
||||
GitHawk <githawk@gmx.net>
|
||||
gpgpgpgp
|
||||
Grey-Soldierman <gungamer101@hotmail.com>
|
||||
Grzegorz
|
||||
Hamburger SV
|
||||
Harakhti <shadowdragonphd@gmail.com>
|
||||
@ -110,6 +112,7 @@ Sniperwolf572 <tenga6@gmail.com>
|
||||
System98
|
||||
SzwedzikPL <szwedzikpl@gmail.com>
|
||||
Tachi <zaveruha007@gmail.com>
|
||||
Tessa Elieff <Fastroping Sound - CreativeCommons Attributions 3.0>
|
||||
Toaster <jonathan.pereira@gmail.com>
|
||||
Tonic
|
||||
Tourorist <tourorist@gmail.com>
|
||||
@ -118,4 +121,3 @@ voiper
|
||||
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
|
||||
Winter <simon@agius-muscat.net>
|
||||
zGuba
|
||||
Grey-Soldierman <gungamer101@hotmail.com>
|
||||
|
2
LICENSE
2
LICENSE
@ -26,6 +26,8 @@ Some folders of this project may contain a separate LICENSE file. Should
|
||||
that be the case, everything in that folder and all subfolders is subject
|
||||
to that license instead.
|
||||
|
||||
- ARMA PUBLIC LICENSE (\addons\apl)
|
||||
- CreativeCommons Attributions 3.0 (\addons\fastroping\data\sounds)
|
||||
|
||||
============================================================================
|
||||
Full GNU General Public License Text
|
||||
|
10
README.md
10
README.md
@ -3,15 +3,15 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="https://img.shields.io/badge/Version-3.5.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/releases/download/v3.5.0/ace3_3.5.0.zip">
|
||||
<img src="https://img.shields.io/badge/Download-72.6_MB-green.svg?style=flat-square" alt="ACE3 Download">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.5.1-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="https://img.shields.io/github/downloads/acemod/ACE3/total.svg?style=flat-square&label=Downloads" alt="ACE3 Downloads">
|
||||
</a>
|
||||
<a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670">
|
||||
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat-square" alt="BIF Thread">
|
||||
</a>
|
||||
|
@ -1,29 +1,34 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(enabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(enabled_DisplayName);
|
||||
description = CSTRING(enabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(simulateForSnipers) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulateForSnipers_DisplayName);
|
||||
description = CSTRING(simulateForSnipers_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(simulateForGroupMembers) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulateForGroupMembers_DisplayName);
|
||||
description = CSTRING(simulateForGroupMembers_Description);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(simulateForEveryone) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulateForEveryone_DisplayName);
|
||||
description = CSTRING(simulateForEveryone_Description);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(disabledInFullAutoMode) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(disabledInFullAutoMod_DisplayName);
|
||||
description = CSTRING(disabledInFullAutoMod_Description);
|
||||
typeName = "BOOL";
|
||||
@ -31,6 +36,7 @@ class ACE_Settings {
|
||||
};
|
||||
/* // TODO: We currently do not have firedEHs on vehicles
|
||||
class GVAR(vehicleGunnerEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = "Enabled For Vehicle Gunners";
|
||||
description = "Enables advanced ballistics for vehicle gunners";
|
||||
typeName = "BOOL";
|
||||
@ -38,30 +44,35 @@ class ACE_Settings {
|
||||
};
|
||||
*/
|
||||
class GVAR(ammoTemperatureEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
|
||||
description = CSTRING(ammoTemperatureEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(barrelLengthInfluenceEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
|
||||
description = CSTRING(barrelLengthInfluenceEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(bulletTraceEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(bulletTraceEnabled_DisplayName);
|
||||
description = CSTRING(bulletTraceEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(simulationInterval) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulationInterval_DisplayName);
|
||||
description = CSTRING(simulationInterval_Description);
|
||||
typeName = "SCALAR";
|
||||
value = 0.0;
|
||||
};
|
||||
class GVAR(simulationRadius) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulationRadius_DisplayName);
|
||||
description = CSTRING(simulationRadius_Description);
|
||||
typeName = "SCALAR";
|
||||
|
@ -21,7 +21,6 @@ if (!GVAR(extensionAvailable)) exitWith {
|
||||
};
|
||||
};
|
||||
*/
|
||||
[] call FUNC(initializeTerrainExtension);
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
@ -29,10 +28,28 @@ if (!hasInterface) exitWith {};
|
||||
//If not enabled, dont't add PFEH
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
//Run the terrain processor
|
||||
[] call FUNC(initializeTerrainExtension);
|
||||
|
||||
// Register fire event handler
|
||||
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
|
||||
["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
|
||||
|
||||
//Add warnings for missing compat PBOs (only if AB is on)
|
||||
{
|
||||
_x params ["_modPBO", "_compatPBO"];
|
||||
if ((isClass (configFile >> "CfgPatches" >> _modPBO)) && {!isClass (configFile >> "CfgPatches" >> _compatPBO)}) then {
|
||||
ACE_LOGWARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO);
|
||||
};
|
||||
} forEach [
|
||||
["RH_acc","ace_compat_rh_acc"],
|
||||
["RH_de_cfg","ace_compat_rh_de"],
|
||||
["RH_m4_cfg","ace_compat_rh_m4"],
|
||||
["RH_PDW","ace_compat_rh_pdw"],
|
||||
["RKSL_PMII","ace_compat_rksl_pm_ii"],
|
||||
["iansky_opt","ace_compat_sma3_iansky"],
|
||||
["R3F_Armes","ace_compat_r3f"]
|
||||
];
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
|
@ -47,7 +47,7 @@ GVAR(Protractor) = true;
|
||||
__ctrl1 ctrlSetTextColor [1, 1, 1, 1];
|
||||
|
||||
__ctrl2 ctrlSetScale 1;
|
||||
__ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY + 0.001 - 0.0012 * (-58 max (asin((ACE_player weaponDirection currentWeapon ACE_player) select 2)) min 58), 0.2, 0.2 * 4/3];
|
||||
__ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY - 0.001 - 0.1074 * (-0.86 max ((ACE_player weaponDirection currentWeapon ACE_player) select 2) min 0.86), 0.2, 0.2 * 4/3];
|
||||
__ctrl2 ctrlCommit 0;
|
||||
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));
|
||||
__ctrl2 ctrlSetTextColor [1, 1, 1, 1];
|
||||
|
@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then {
|
||||
|
||||
_bulletTraceVisible = false;
|
||||
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then {
|
||||
if (currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]) then {
|
||||
if (currentWeapon ACE_player == binocular ACE_player) then {
|
||||
_bulletTraceVisible = true;
|
||||
} else {
|
||||
if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then {
|
||||
|
@ -24,7 +24,7 @@ _mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
|
||||
if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
systemChat "AdvancedBallistics: Terrain already initialized";
|
||||
#endIf
|
||||
#endif
|
||||
};
|
||||
|
||||
_mapGrids = ceil(_mapSize / 50) + 1;
|
||||
|
@ -42,31 +42,14 @@
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"];
|
||||
_scopeBaseAngle = _this select 0;
|
||||
_bulletMass = _this select 1;
|
||||
_boreHeight = _this select 2;
|
||||
_airFriction = _this select 3;
|
||||
_muzzleVelocity = _this select 4;
|
||||
_temperature = _this select 5;
|
||||
_barometricPressure = _this select 6;
|
||||
_relativeHumidity = _this select 7;
|
||||
_simSteps = _this select 8;
|
||||
_windSpeed1 = (_this select 9) select 0;
|
||||
_windSpeed2 = (_this select 9) select 1;
|
||||
_windDirection = _this select 10;
|
||||
_inclinationAngle = _this select 11;
|
||||
_targetSpeed = _this select 12;
|
||||
_targetRange = _this select 13;
|
||||
_bc = _this select 14;
|
||||
_dragModel = _this select 15;
|
||||
_atmosphereModel = _this select 16;
|
||||
_storeRangeCardData = _this select 17;
|
||||
_stabilityFactor = _this select 18;
|
||||
_twistDirection = _this select 19;
|
||||
_latitude = _this select 20;
|
||||
_directionOfFire = _this select 21;
|
||||
params [
|
||||
"_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity",
|
||||
"_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed",
|
||||
"_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel",
|
||||
"_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude",
|
||||
"_directionOfFire"
|
||||
];
|
||||
_windSpeed params ["_windSpeed1", "_windSpeed2"];
|
||||
|
||||
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
|
||||
_bulletPos = [0, 0, 0];
|
||||
@ -142,7 +125,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
_drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
||||
private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
||||
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
|
||||
} else {
|
||||
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation))
|
||||
|
@ -17,10 +17,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_gunID", "_restoreMemory", "_updateDisplay"];
|
||||
_gunID = _this select 0;
|
||||
_restoreMemory = _this select 1;
|
||||
_updateDisplay = _this select 2;
|
||||
params ["_gunID", "_restoreMemory", "_updateDisplay"];
|
||||
|
||||
if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {};
|
||||
|
||||
|
@ -21,6 +21,5 @@ GVAR(showGunList) = _this;
|
||||
|
||||
if (_this) then {
|
||||
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 6002);
|
||||
|
||||
lbSetCurSel [6000, GVAR(currentGun)];
|
||||
};
|
||||
|
@ -21,7 +21,6 @@ GVAR(showTargetRangeAssist) = _this;
|
||||
|
||||
if (_this) then {
|
||||
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 7018);
|
||||
|
||||
ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
|
||||
ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
|
||||
|
||||
|
@ -17,10 +17,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_slopeDistance", "_azimuth", "_inclination"];
|
||||
_slopeDistance = _this select 0;
|
||||
_azimuth = _this select 1;
|
||||
_inclination = _this select 2;
|
||||
params ["_slopeDistance", "_azimuth", "_inclination"];
|
||||
|
||||
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
|
||||
GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)];
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="ATragMX">
|
||||
<Key ID="STR_ACE_ATragMX_Name">
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params [["_backpack", objNull, [objNull]]];
|
||||
params [["_backpack", objNull, [objNull, ""]]];
|
||||
|
||||
if (_backpack isEqualType objNull) then {
|
||||
_backpack = typeOf _backpack;
|
||||
|
@ -285,6 +285,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -305,6 +307,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -320,6 +324,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -335,6 +341,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -356,6 +364,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -371,6 +381,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
@ -386,6 +398,8 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"30Rnd_556x45_Stanag_red",
|
||||
"30Rnd_556x45_Stanag_green",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Ballistics">
|
||||
<!-- MX -->
|
||||
|
@ -1,5 +1,11 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
["SettingsInitialized", {
|
||||
// Hold on a little bit longer to ensure anims will work
|
||||
[{
|
||||
GVAR(captivityEnabled) = true;
|
||||
}, [], 0.05] call EFUNC(common,waitAndExecute);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
//Handles when someone starts escorting and then disconnects, leaving the captive attached
|
||||
//This is normaly handled by the PFEH in doEscortCaptive, but that won't be running if they DC
|
||||
@ -33,10 +39,3 @@ if (!hasInterface) exitWith {};
|
||||
["isNotEscorting", {!(GETVAR(_this select 0,GVAR(isEscorting),false))}] call EFUNC(common,addCanInteractWithCondition);
|
||||
["isNotHandcuffed", {!(GETVAR(_this select 0,GVAR(isHandcuffed),false))}] call EFUNC(common,addCanInteractWithCondition);
|
||||
["isNotSurrendering", {!(GETVAR(_this select 0,GVAR(isSurrendering),false))}] call EFUNC(common,addCanInteractWithCondition);
|
||||
|
||||
["SettingsInitialized", {
|
||||
// Hold on a little bit longer to ensure anims will work
|
||||
[{
|
||||
GVAR(captivityEnabled) = true;
|
||||
}, [], 0.05] call EFUNC(common,waitAndExecute);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
@ -27,27 +27,7 @@ class Extended_Killed_EventHandlers {
|
||||
|
||||
//Need initPost or we have problems with setVariable with 'ACE_Cargo'
|
||||
class Extended_InitPost_EventHandlers {
|
||||
class StaticWeapon {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class ReammoBox_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class Cargo_base_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class CargoNet_01_box_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Land_CargoBox_V1_F {
|
||||
class ThingX {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
@ -57,27 +37,17 @@ class Extended_InitPost_EventHandlers {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class RoadCone_F {
|
||||
class PlasticCase_01_base_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Car {
|
||||
class LandVehicle {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Tank {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Helicopter {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class Plane {
|
||||
class Air {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
@ -87,16 +57,6 @@ class Extended_InitPost_EventHandlers {
|
||||
init = QUOTE(_this call DFUNC(initVehicle));
|
||||
};
|
||||
};
|
||||
class ACE_RepairItem_Base {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class ACE_bodyBagObject {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class ACE_ConcertinaWireCoil {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
|
@ -194,12 +194,69 @@ class CfgVehicles {
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class Heli_Transport_02_base_F;
|
||||
class I_Heli_Transport_02_F: Heli_Transport_02_base_F {
|
||||
class Helicopter_Base_H;
|
||||
class Heli_Light_01_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
};
|
||||
|
||||
class Heli_Light_02_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 4;
|
||||
};
|
||||
|
||||
class Helicopter_Base_F;
|
||||
class Heli_light_03_base_F: Helicopter_Base_F {
|
||||
GVAR(space) = 4;
|
||||
};
|
||||
|
||||
class Heli_Transport_01_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 8;
|
||||
};
|
||||
|
||||
class Heli_Transport_02_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 20;
|
||||
};
|
||||
|
||||
class Heli_Transport_03_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 40;
|
||||
};
|
||||
|
||||
class Heli_Transport_04_base_F: Helicopter_Base_H {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
};
|
||||
|
||||
class O_Heli_Transport_04_box_F: Heli_Transport_04_base_F {
|
||||
GVAR(space) = 20;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class O_Heli_Transport_04_repair_F: Heli_Transport_04_base_F {
|
||||
GVAR(space) = 12;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class O_Heli_Transport_04_ammo_F: Heli_Transport_04_base_F {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class O_Heli_Transport_04_fuel_F: Heli_Transport_04_base_F {};
|
||||
|
||||
class O_Heli_Transport_04_medevac_F: Heli_Transport_04_base_F {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class Heli_Attack_01_base_F: Helicopter_Base_F {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
};
|
||||
|
||||
class Heli_Attack_02_base_F: Helicopter_Base_F {
|
||||
GVAR(space) = 4;
|
||||
};
|
||||
|
||||
// jets
|
||||
class Plane: Air {
|
||||
GVAR(space) = 0;
|
||||
@ -207,7 +264,6 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
// autonomus
|
||||
class Helicopter_Base_F;
|
||||
class UAV_01_base_F: Helicopter_Base_F {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
@ -248,6 +304,25 @@ class CfgVehicles {
|
||||
GVAR(canLoad) = 1;
|
||||
};
|
||||
|
||||
// Taru pods
|
||||
class Pod_Heli_Transport_04_base_F;
|
||||
class Land_Pod_Heli_Transport_04_ammo_F: Pod_Heli_Transport_04_base_F {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
class Land_Pod_Heli_Transport_04_box_F: Pod_Heli_Transport_04_base_F {
|
||||
GVAR(space) = 20;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
class Land_Pod_Heli_Transport_04_medevac_F: Pod_Heli_Transport_04_base_F {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
class Land_Pod_Heli_Transport_04_repair_F: Pod_Heli_Transport_04_base_F {
|
||||
GVAR(space) = 12;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class StaticMortar;
|
||||
class Mortar_01_base_F: StaticMortar {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
@ -256,6 +331,7 @@ class CfgVehicles {
|
||||
|
||||
// Ammo boxes
|
||||
class ThingX;
|
||||
class Items_base_F;
|
||||
class ReammoBox_F: ThingX {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
GVAR(canLoad) = 1;
|
||||
@ -278,6 +354,23 @@ class CfgVehicles {
|
||||
class Slingload_01_Base_F: Slingload_base_F { //Huron 20ft containers
|
||||
GVAR(canLoad) = 0;
|
||||
};
|
||||
|
||||
//Plastic and metal case
|
||||
class PlasticCase_01_base_F: Items_base_F {
|
||||
GVAR(size) = 1; // 1 = small, 2 = large
|
||||
GVAR(canLoad) = 1;
|
||||
};
|
||||
class Land_PlasticCase_01_large_F: PlasticCase_01_base_F {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
};
|
||||
class MetalCase_01_base_F: Items_base_F {
|
||||
GVAR(size) = 1; // 1 = small, 2 = large
|
||||
GVAR(canLoad) = 1;
|
||||
};
|
||||
class Land_MetalCase_01_large_F: MetalCase_01_base_F {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
};
|
||||
|
||||
// objects
|
||||
class RoadCone_F: ThingX {
|
||||
GVAR(size) = 1;
|
||||
|
@ -20,6 +20,8 @@ TRACE_1("params", _vehicle);
|
||||
|
||||
private _type = typeOf _vehicle;
|
||||
|
||||
if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
|
||||
|
||||
if (isServer) then {
|
||||
{
|
||||
if (isClass _x) then {
|
||||
@ -38,7 +40,6 @@ if (_type in GVAR(initializedVehicleClasses)) exitWith {};
|
||||
GVAR(initializedVehicleClasses) pushBack _type;
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
|
||||
|
||||
TRACE_1("Adding unload cargo action to class", _type);
|
||||
|
||||
|
@ -175,6 +175,7 @@
|
||||
<Italian>Rendi oggetto caricabile</Italian>
|
||||
<Spanish>Hacer objeto cargable</Spanish>
|
||||
<French>Rendre l'objet chargeable</French>
|
||||
<Czech>Vytvořit objekt nakladatelným</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_makeLoadable_description">
|
||||
<English>Sets the synced object as loadable by the cargo system.</English>
|
||||
@ -183,6 +184,7 @@
|
||||
<Italian>Imposta l'oggetto sincronizzato come caricabile dal sistema cargo</Italian>
|
||||
<Spanish>Sincronizar un objecto para hacerlo cargable.</Spanish>
|
||||
<French>Rend l'objet synchronisé comme chargeable par le système de cargaison.</French>
|
||||
<Czech>Nastaví synchronizované objekty nakladatelnými za pomocí Nákladního systému.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_makeLoadable_setSize_displayName">
|
||||
<English>Object's Size</English>
|
||||
@ -191,6 +193,7 @@
|
||||
<Italian>Dimensioni dell'oggetto</Italian>
|
||||
<Spanish>Tamaño del objeto</Spanish>
|
||||
<French>Taille de l'objet</French>
|
||||
<Czech>Velikost objektu</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -49,7 +49,7 @@ class ACE_Settings {
|
||||
description = CSTRING(SettingFeedbackIconsDesc);
|
||||
values[] = {ECSTRING(optionsmenu,Hide), ECSTRING(optionsmenu,TopRightDown), ECSTRING(optionsmenu,TopRightLeft), ECSTRING(optionsmenu,TopLeftDown), ECSTRING(optionsmenu,TopLeftRight)};
|
||||
};
|
||||
class GVAR(SettingProgressBarLocation) {
|
||||
class GVAR(settingProgressBarLocation) {
|
||||
value = 0;
|
||||
typeName = "SCALAR";
|
||||
force = 0;
|
||||
|
@ -33,7 +33,7 @@ class Extended_InitPost_EventHandlers {
|
||||
};
|
||||
class CAManBase {
|
||||
class GVAR(setName) {
|
||||
init = QUOTE(if (local (_this select 0)) then {_this call FUNC(setName)};);
|
||||
init = QUOTE(if (local (_this select 0)) then {[ARR_2(FUNC(setName),_this)] call FUNC(execNextFrame)};);
|
||||
};
|
||||
class GVAR(muteUnit) {
|
||||
init = QUOTE(_this call FUNC(muteUnitHandleInitPost));
|
||||
@ -76,3 +76,9 @@ class Extended_FiredBIS_EventHandlers {
|
||||
ADDON = QUOTE(_this call FUNC(firedEH));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_Engine_EventHandlers {
|
||||
class All {
|
||||
ADDON = QUOTE(_this call FUNC(handleEngine));
|
||||
};
|
||||
};
|
||||
|
@ -87,6 +87,7 @@ PREP(getWindDirection);
|
||||
PREP(getZoom);
|
||||
PREP(goKneeling);
|
||||
PREP(hadamardProduct);
|
||||
PREP(handleEngine);
|
||||
PREP(handleModifierKey);
|
||||
PREP(handleModifierKeyUp);
|
||||
PREP(handleScrollWheel);
|
||||
|
@ -64,6 +64,7 @@
|
||||
["blockSprint", false, []] call FUNC(statusEffect_addType);
|
||||
["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] call FUNC(statusEffect_addType);
|
||||
["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType);
|
||||
["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType);
|
||||
|
||||
["forceWalk", {
|
||||
params ["_object", "_set"];
|
||||
@ -90,6 +91,11 @@
|
||||
_object allowDamage (_set == 0);
|
||||
};
|
||||
}] call FUNC(addEventHandler);
|
||||
["blockEngine", {
|
||||
params ["_vehicle", "_set"];
|
||||
_vehicle setVariable [QGVAR(blockEngine), _set > 0, true];
|
||||
_vehicle engineOn false;
|
||||
}] call FUNC(addEventHandler);
|
||||
|
||||
//Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit
|
||||
//This variable is used for isPlayer checks
|
||||
@ -133,6 +139,7 @@ if (isServer) then {
|
||||
["fixFloating", FUNC(fixFloating)] call FUNC(addEventhandler);
|
||||
["fixPosition", FUNC(fixPosition)] call FUNC(addEventhandler);
|
||||
|
||||
["loadPersonEvent", FUNC(loadPersonLocal)] call FUNC(addEventhandler);
|
||||
["unloadPersonEvent", FUNC(unloadPersonLocal)] call FUNC(addEventhandler);
|
||||
|
||||
["lockVehicle", {
|
||||
@ -146,12 +153,15 @@ if (isServer) then {
|
||||
|
||||
["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler);
|
||||
["setFuel", {(_this select 0) setFuel (_this select 1)}] call FUNC(addEventhandler);
|
||||
["engineOn", {(_this select 0) engineOn (_this select 1)}] call FUNC(addEventhandler);
|
||||
["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler);
|
||||
["selectLeader", {(_this select 0) selectLeader (_this select 1)}] call FUNC(addEventHandler);
|
||||
["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call FUNC(addEventHandler);
|
||||
["playMove", {(_this select 0) playMove (_this select 1)}] call FUNC(addEventHandler);
|
||||
["playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call FUNC(addEventHandler);
|
||||
["switchMove", {(_this select 0) switchMove (_this select 1)}] call FUNC(addEventHandler);
|
||||
["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call FUNC(addEventHandler);
|
||||
["setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler);
|
||||
|
||||
if (isServer) then {
|
||||
["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler);
|
||||
@ -323,19 +333,13 @@ enableCamShake true;
|
||||
GVAR(OldPlayerVehicle) = vehicle objNull;
|
||||
GVAR(OldPlayerTurret) = [objNull] call FUNC(getTurretIndex);
|
||||
GVAR(OldPlayerWeapon) = currentWeapon objNull;
|
||||
GVAR(OldPlayerInventory) = [objNull] call FUNC(getAllGear);
|
||||
GVAR(OldPlayerInventory) = [];
|
||||
GVAR(OldPlayerVisionMode) = currentVisionMode objNull;
|
||||
GVAR(OldCameraView) = "";
|
||||
GVAR(OldVisibleMap) = false;
|
||||
GVAR(OldInventoryDisplayIsOpen) = nil; //@todo check this
|
||||
GVAR(OldIsCamera) = false;
|
||||
|
||||
// clean up playerChanged eventhandler from preinit and put it in the same PFH as the other events to reduce overhead and guarantee advantageous execution order
|
||||
if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
||||
[GVAR(PreInit_playerChanged_PFHID)] call CBA_fnc_removePerFrameHandler;
|
||||
GVAR(PreInit_playerChanged_PFHID) = nil;
|
||||
};
|
||||
|
||||
// PFH to raise varios events
|
||||
[{
|
||||
BEGIN_COUNTER(stateChecker);
|
||||
@ -377,11 +381,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
||||
};
|
||||
|
||||
// "playerInventoryChanged" event
|
||||
_data = [ACE_player] call FUNC(getAllGear);
|
||||
_data = getUnitLoadout ACE_player;
|
||||
if !(_data isEqualTo GVAR(OldPlayerInventory)) then {
|
||||
// Raise ACE event locally
|
||||
GVAR(OldPlayerInventory) = _data;
|
||||
["playerInventoryChanged", [ACE_player, _data]] call FUNC(localEvent);
|
||||
["playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear) ]] call FUNC(localEvent);
|
||||
};
|
||||
|
||||
// "playerVisionModeChanged" event
|
||||
@ -442,6 +446,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
||||
// Add various canInteractWith conditions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
["isNotDead", {
|
||||
params ["_unit", "_target"];
|
||||
alive _unit
|
||||
}] call FUNC(addCanInteractWithCondition);
|
||||
|
||||
["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition);
|
||||
|
||||
["isNotInside", {
|
||||
|
@ -47,7 +47,7 @@ GVAR(statusEffect_Names) = [];
|
||||
GVAR(statusEffect_isGlobal) = [];
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Set up PlayerChanged eventhandler for pre init
|
||||
// Set up PlayerChanged eventhandler for pre init (EH is installed in postInit)
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
ACE_player = objNull;
|
||||
|
@ -23,7 +23,7 @@ if (isServer) then {
|
||||
params ["_eventName", "_client"];
|
||||
|
||||
if (!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith {
|
||||
ACE_LOGERROR("Request for synced event - key not found.");
|
||||
ACE_LOGERROR_1("Request for synced event - key [%1] not found.", _eventName);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
params ["_name", "_args", "_ttl"];
|
||||
|
||||
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
ACE_LOGERROR("Synced event key not found.");
|
||||
ACE_LOGERROR_1("Synced event key [%1] not found (_handleSyncedEvent).", _name);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -45,7 +45,7 @@ if (_actionID == -1) then {
|
||||
private _addAction = call compile format [
|
||||
"[
|
||||
'',
|
||||
{if (inputAction '%1' == 0) exitWith {}; {if (_this call (_x select 0)) then {_this call (_x select 1)}} forEach (((_this select 0) getVariable '%2') select 1 select 2)},
|
||||
{[{if (inputAction '%1' == 0) exitWith {}; {if (_this call (_x select 0)) then {_this call (_x select 1)}} forEach (((_this select 0) getVariable '%2') select 1 select 2)}, _this] call CBA_fnc_directCall},
|
||||
nil,
|
||||
-1,
|
||||
false,
|
||||
|
@ -52,7 +52,7 @@ _actionIDs pushBack _id;
|
||||
private _addAction = call compile format [
|
||||
"[
|
||||
'%2',
|
||||
{if (inputAction '%1' == 0) then {if (_this call (%3 select 2)) then {_this call (%3 select 3)}} else {_this call (%3 select 1)}},
|
||||
{[{if (inputAction '%1' == 0) then {if (_this call (%3 select 2)) then {_this call (%3 select 3)}} else {_this call (%3 select 1)}}, _this] call CBA_fnc_directCall},
|
||||
nil,
|
||||
%4,
|
||||
false,
|
||||
|
@ -15,6 +15,8 @@
|
||||
|
||||
params ["_statement"];
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_addScrollWheelEventHandler", "3.8.0", "'MouseZChanged' Display EventHandler");
|
||||
|
||||
if (_statement isEqualType "") then {
|
||||
_statement = compile _statement;
|
||||
};
|
||||
|
@ -10,6 +10,9 @@
|
||||
* Return Value:
|
||||
* Boolean of success <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* ["myEvent", {_this call x}, 0] call ace_common_fnc_addSyncedEventHandler
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
@ -17,7 +20,7 @@
|
||||
params ["_name", "_handler", ["_ttl", 0]];
|
||||
|
||||
if (HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
ACE_LOGERROR("Duplicate synced event creation.");
|
||||
ACE_LOGERROR_1("Duplicate synced event [%1] creation.",_name);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -29,39 +29,17 @@ GVAR(AssignedItemsShownItems) = [
|
||||
];
|
||||
|
||||
["playerInventoryChanged", {
|
||||
params ["_unit", "_assignedItems"];
|
||||
params ["_unit"];
|
||||
|
||||
_assignedItems = _assignedItems select 17;
|
||||
private _assignedItems = getUnitLoadout _unit param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"]
|
||||
|
||||
GVAR(AssignedItemsShownItems) = [true, true, true, true, true];
|
||||
|
||||
{
|
||||
if !(_x in GVAR(AssignedItems)) then {
|
||||
GVAR(AssignedItems) pushBack _x;
|
||||
GVAR(AssignedItemsInfo) pushBack toLower getText (configFile >> "CfgWeapons" >> _x >> "ACE_hideItemType");
|
||||
};
|
||||
|
||||
switch (GVAR(AssignedItemsInfo) select (GVAR(AssignedItems) find _x)) do {
|
||||
case ("map"): {
|
||||
GVAR(AssignedItemsShownItems) set [0, false];
|
||||
};
|
||||
case ("compass"): {
|
||||
GVAR(AssignedItemsShownItems) set [1, false];
|
||||
};
|
||||
case ("watch"): {
|
||||
GVAR(AssignedItemsShownItems) set [2, false];
|
||||
};
|
||||
case ("radio"): {
|
||||
GVAR(AssignedItemsShownItems) set [3, false];
|
||||
};
|
||||
case ("gps"): {
|
||||
GVAR(AssignedItemsShownItems) set [4, false];
|
||||
};
|
||||
};
|
||||
false
|
||||
} count _assignedItems;
|
||||
|
||||
//systemChat str GVAR(AssignedItemsShownItems);
|
||||
GVAR(AssignedItemsShownItems) = [
|
||||
!((_assignedItems select 0) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 0 >> "ACE_hideItemType") != "map"},
|
||||
!((_assignedItems select 3) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 3 >> "ACE_hideItemType") != "compass"},
|
||||
!((_assignedItems select 4) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 4 >> "ACE_hideItemType") != "watch"},
|
||||
!((_assignedItems select 2) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 2 >> "ACE_hideItemType") != "radio"},
|
||||
!((_assignedItems select 1) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 1 >> "ACE_hideItemType") != "gps"}
|
||||
];
|
||||
|
||||
GVAR(AssignedItemsShownItems) params ["_showMap", "_showCompass", "_showWatch", "_showRadio", "_showGPS"];
|
||||
|
||||
|
@ -19,6 +19,18 @@ private _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "version
|
||||
|
||||
ACE_LOGINFO_1("ACE is version %1.",_version);
|
||||
|
||||
//CBA Versioning check - close main display if using incompatible version
|
||||
private _cbaVersionAr = getArray (configFile >> "CfgPatches" >> "cba_main" >> "versionAr");
|
||||
private _cbaRequiredAr = (getArray (configFile >> "CfgSettings" >> "CBA" >> "Versioning" >> "ACE" >> "dependencies" >> "CBA")) select 1;
|
||||
ACE_LOGINFO_2("CBA is version %1 [min required %2]",_cbaVersionAr,_cbaRequiredAr);
|
||||
if ([_cbaRequiredAr, _cbaVersionAr] call cba_versioning_fnc_version_compare) then {
|
||||
private _errorMsg = format ["CBA Version [%1] is outdated [required %2]", _cbaVersionAr, _cbaRequiredAr];
|
||||
ACE_LOGERROR(_errorMsg);
|
||||
if (hasInterface) then {
|
||||
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
|
||||
};
|
||||
};
|
||||
|
||||
//private _addons = activatedAddons; // broken with High-Command module, see #2134
|
||||
private _addons = "true" configClasses (configFile >> "CfgPatches");//
|
||||
_addons = _addons apply {toLower configName _x};//
|
||||
|
@ -12,12 +12,11 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_function"];
|
||||
params ["_code"];
|
||||
if (_code isEqualType "") exitWith {_code};
|
||||
|
||||
if (_function isEqualType "") exitWith {_function};
|
||||
_code = str(_code);
|
||||
_code = _code select [1, count _code - 2];
|
||||
|
||||
_function = toArray str _function;
|
||||
_function deleteAt 0;
|
||||
_function deleteAt (count _function - 1);
|
||||
_code
|
||||
|
||||
toString _function // return
|
||||
|
@ -92,6 +92,15 @@ while {_rangeToCheck < _maxDistance} do {
|
||||
private _point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.1];
|
||||
private _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, (_radiusOfItem + 0.5)];
|
||||
private _testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL];
|
||||
if (((count _testIntersections) == 1) && {isNull ((_testIntersections select 0) select 2)}) then {
|
||||
private _hitGroundASL = (_testIntersections select 0) select 0;
|
||||
private _hitHeightOffset = ((AGLtoASL _roundAGL) select 2) - (_hitGroundASL select 2);
|
||||
private _hit2dOffset = _roundAGL distance2D _hitGroundASL;
|
||||
private _slope = _hitHeightOffset atan2 _hit2dOffset;
|
||||
if (_slope < 25) then { //Ignore ground hit if slope is reasonable
|
||||
_testIntersections = [];
|
||||
};
|
||||
};
|
||||
if (!(_testIntersections isEqualTo [])) exitWith {
|
||||
TRACE_2("collision low/high",_roundAGL,_testIntersections);
|
||||
_roundPointIsValid = false;
|
||||
|
@ -16,6 +16,16 @@
|
||||
// setVectorUp requires local object
|
||||
if (!local _this) exitWith {};
|
||||
|
||||
if ((getText (configFile >> "CfgVehicles" >> (typeOf _this) >> "simulation")) == "house") then {
|
||||
//Houses don't have gravity/physics, so make sure they are not floating
|
||||
private _posAbove = (getPos _this) select 2;
|
||||
TRACE_2("house",_this,_posAbove);
|
||||
if (_posAbove > 0.1) then {
|
||||
private _newPosASL = (getPosASL _this) vectorDiff [0,0,_posAbove];
|
||||
_this setPosASL _newPosASL;
|
||||
};
|
||||
};
|
||||
|
||||
private _position = getPos _this;
|
||||
|
||||
// don't place the object below the ground
|
||||
|
@ -33,7 +33,11 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit"];
|
||||
params ["_unit", ["_showDeprecated", true]];
|
||||
|
||||
if (_showDeprecated) then {
|
||||
ACE_DEPRECATED("ace_common_fnc_getAllGear","3.7.0","getUnitLoadout");
|
||||
};
|
||||
|
||||
if (isNull _unit) exitWith {[
|
||||
"",
|
||||
|
@ -22,27 +22,81 @@ private _long = getNumber (configFile >> "CfgWorlds" >> _map >> "longitude");
|
||||
private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude");
|
||||
private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset");
|
||||
|
||||
if (_map in ["Chernarus", "Bootcamp_ACR", "Woodland_ACR", "utes"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["Altis", "Stratis"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["Takistan", "Zargabad", "Mountains_ACR"]) then { _lat = 35; _altitude = 2000; };
|
||||
if (_map in ["Shapur_BAF", "ProvingGrounds_PMC"]) then { _lat = 35; _altitude = 100; };
|
||||
_map = toLower _map;
|
||||
if (_map in ["abbottabad"]) then { _lat = 34; _altitude = 1256; }; //Abbottabad elevation 1256m (Wikipedia)
|
||||
if (_map in ["abramia"]) then { _lat = 60; _altitude = 0; };
|
||||
if (_map in ["af_kandahar_province"]) then { _lat = 42; _altitude = 0; };
|
||||
if (_map in ["altis"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["angel"]) then { _lat = 38; _altitude = 0; };
|
||||
if (_map in ["anim_helvantis_v2"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["australia"]) then { _lat = -25; _altitude = 0; };
|
||||
if (_map in ["bootcamp_acr"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["bornholm"]) then { _lat = 55; _altitude = 0; };
|
||||
if (_map in ["bozcaada"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["caribou"]) then { _lat = 68; _altitude = 0; };
|
||||
if (_map in ["catalina"]) then { _lat = 33; _altitude = 0; };
|
||||
if (_map in ["chernarus", "chernarus_summer", "chernarus_winter"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["chernobylzone", "chernobylzonea2"]) then { _lat = 51; _altitude = 0; };
|
||||
if (_map in ["clafghan"]) then { _lat = 34; _altitude = 640; };
|
||||
if (_map in ["dakrong"]) then { _lat = 17; _altitude = 0; }; //Unsung Mod
|
||||
if (_map in ["desert_e"]) then { _lat = 40; _altitude = 800; };
|
||||
if (_map in ["dya"]) then { _lat = 34; _altitude = 110; }; //Diyala Iraq - default elevationOffset
|
||||
if (_map in ["esseker"]) then { _lat = 43; _altitude = 2000; };
|
||||
if (_map in ["evergreen"]) then { _lat = 41; _altitude = 0; }; //Burgazada, Turkey - default elevationOffset
|
||||
if (_map in ["fallujah"]) then { _lat = 33; _altitude = 0; };
|
||||
if (_map in ["fata", "Abbottabad"]) then { _lat = 30; _altitude = 1000; };
|
||||
if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; };
|
||||
if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; };
|
||||
if (_map in ["Bornholm"]) then { _lat = 55; _altitude = 0; };
|
||||
if (_map in ["Imrali"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["Caribou"]) then { _lat = 68; _altitude = 0; };
|
||||
if (_map in ["Namalsk"]) then { _lat = 65; _altitude = 0; };
|
||||
if (_map in ["MCN_Aliabad"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["Clafghan"]) then { _lat = 34; _altitude = 640; };
|
||||
if (_map in ["Sangin", "hellskitchen"]) then { _lat = 32; _altitude = 0; };
|
||||
if (_map in ["Sara"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["fata"]) then { _lat = 33; _altitude = 1347; };
|
||||
if (_map in ["gorgona"]) then { _lat = 43; _altitude = 0; };
|
||||
if (_map in ["hellskitchen", "hellskitchens"]) then { _lat = 32; _altitude = 900; }; //Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia)
|
||||
if (_map in ["hindukush"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["imrali", "imralispring"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["intro"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["isladuala3"]) then { _lat = -19; _altitude = 0; };
|
||||
if (_map in ["jacobi"]) then { _lat = 34; _altitude = 2000; }; //default elevationOffset
|
||||
if (_map in ["kapaulio"]) then { _lat = 0; _altitude = 0; };
|
||||
if (_map in ["kerama"]) then { _lat = 26; _altitude = 0; }; //Kerama Islands, Japan - default elevationOffset
|
||||
if (_map in ["kholm"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["koplic"]) then { _lat = 42; _altitude = 0; };
|
||||
if (_map in ["kunduz"]) then { _lat = 37; _altitude = 0; };
|
||||
if (_map in ["lingor", "lingor3"]) then { _lat = -4; _altitude = 0; };
|
||||
if (_map in ["lost", "lostw"]) then { _lat = 60; _altitude = 0; };
|
||||
if (_map in ["mcn_aliabad"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["malvinas"]) then { _lat = -52; _altitude = 0; };
|
||||
if (_map in ["namalsk"]) then { _lat = 65; _altitude = 0; };
|
||||
if (_map in ["mef_alaska"]) then { _lat = 60; _altitude = 5; };
|
||||
if (_map in ["mountains_acr"]) then { _lat = 35; _altitude = 2000; };
|
||||
if (_map in ["napf", "napfwinter"]) then { _lat = 47; _altitude = 0; };
|
||||
if (_map in ["panthera3"]) then { _lat = 46; _altitude = 0; };
|
||||
if (_map in ["pianosa_aut"]) then { _lat = 43; _altitude = 0; }; //Pianosa, Italy - default elevationOffset
|
||||
if (_map in ["pja305"]) then { _lat = 0; _altitude = 0; }; //G.O.S N'Ziwasogo
|
||||
if (_map in ["pja306"]) then { _lat = 35; _altitude = 0; }; //G.O.S Kalu Khan
|
||||
if (_map in ["pja307"]) then { _lat = 17; _altitude = 0; }; //F.S.F Daryah
|
||||
if (_map in ["pja308"]) then { _lat = 36; _altitude = 0; }; //G.O.S Gunkizli
|
||||
if (_map in ["pja310"]) then { _lat = 36; _altitude = 0; }; //G.O.S Al Rayak
|
||||
if (_map in ["pja312"]) then { _lat = 16; _altitude = 0; }; //G.O.S Song Bin Tanh
|
||||
if (_map in ["porquerolles"]) then { _lat = 43; _altitude = 0; };
|
||||
if (_map in ["porto"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["provinggrounds_pmc"]) then { _lat = 35; _altitude = 100; };
|
||||
if (_map in ["reshmaan"]) then { _lat = 35; _altitude = 2000; };
|
||||
if (_map in ["Thirsk"]) then { _lat = 65; _altitude = 0; };
|
||||
if (_map in ["lingor"]) then { _lat = -4; _altitude = 0; };
|
||||
if (_map in ["Panthera3"]) then { _lat = 46; _altitude = 0; };
|
||||
if (_map in ["Kunduz"]) then { _lat = 37; _altitude = 400; };
|
||||
if (_map in ["sara", "sara_dbe1"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["saralite"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["sb3"]) then { _lat = 53; _altitude = 25; }; //TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset
|
||||
if (_map in ["shapur_baf"]) then { _lat = 35; _altitude = 100; };
|
||||
if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; };
|
||||
if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; };
|
||||
if (_map in ["stratis"]) then { _lat = 40; _altitude = 0; };
|
||||
if (_map in ["sugarlake"]) then { _lat = 29; _altitude = 0; };
|
||||
if (_map in ["takistan"]) then { _lat = 35; _altitude = 2000; };
|
||||
if (_map in ["thirsk"]) then { _lat = 65; _altitude = 0; };
|
||||
if (_map in ["tilos"]) then { _lat = 36; _altitude = 0; };
|
||||
if (_map in ["utes"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["vt5"]) then { _lat = 61; _altitude = 100; }; //Vt5, Suomi Finland - default elevationOffset
|
||||
if (_map in ["wake"]) then { _lat = 19; _altitude = 0; };
|
||||
if (_map in ["waziristan"]) then { _lat = 33; _altitude = 0; };
|
||||
if (_map in ["wintermap"]) then { _lat = 61; _altitude = 0; }; //Nordkvingo - default elevationOffset
|
||||
if (_map in ["wintertown", "wintertowna3"]) then { _lat = 39; _altitude = 600; }; //U.S. state Kansas mean elevation 610m (Wikipedia)
|
||||
if (_map in ["woodland_acr"]) then { _lat = 50; _altitude = 0; };
|
||||
if (_map in ["xcam_prototype"]) then { _lat = 35; _altitude = 0; };
|
||||
if (_map in ["zargabad"]) then { _lat = 35; _altitude = 2000; };
|
||||
|
||||
private _UTM = [_long,_lat] call BIS_fnc_posDegToUTM;
|
||||
private _easting = _UTM select 0;
|
||||
|
@ -18,7 +18,7 @@ private _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles")
|
||||
|
||||
{
|
||||
if (_x == "this") then {
|
||||
_muzzles set [_forEachIndex, _weapon];
|
||||
_muzzles set [_forEachIndex, configName (configFile >> "CfgWeapons" >> _weapon)];
|
||||
};
|
||||
} forEach _muzzles;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* Arguments:
|
||||
* 0: unit <OBJECT>
|
||||
* 1: weapon <STRING>
|
||||
* 1: weapon (optional, default: units current weapon) <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* 0: Attachements <ARRAY>
|
||||
@ -16,21 +16,19 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit", "_weapon"];
|
||||
params [["_unit", objNull, [objNull]], ["_weapon", nil, [""]]];
|
||||
|
||||
if (isNil "_weapon") then {
|
||||
_weapon = currentWeapon _unit;
|
||||
};
|
||||
|
||||
private _attachments = [_unit weaponAccessories _weapon] param [0, ["","","",""]];
|
||||
|
||||
private _muzzles = _weapon call FUNC(getWeaponMuzzles);
|
||||
|
||||
private _weaponInfo = [["","","",""], primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit] select ((["", primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] find _weapon) max 0);
|
||||
|
||||
// get loaded magazines and ammo
|
||||
private _magazines = [];
|
||||
private _ammo = [];
|
||||
|
||||
{
|
||||
_magazines pushBack "";
|
||||
_ammo pushBack 0;
|
||||
false
|
||||
} count _muzzles;
|
||||
private _magazines = _muzzles apply {""};
|
||||
private _ammo = _muzzles apply {0};
|
||||
|
||||
{
|
||||
if (_x select 2) then {
|
||||
@ -44,6 +42,4 @@ private _ammo = [];
|
||||
false
|
||||
} count magazinesAmmoFull _unit;
|
||||
|
||||
_weaponInfo append [_muzzles, _magazines, _ammo];
|
||||
|
||||
_weaponInfo
|
||||
[_attachments, _muzzles, _magazines, _ammo];
|
||||
|
19
addons/common/functions/fnc_handleEngine.sqf
Normal file
19
addons/common/functions/fnc_handleEngine.sqf
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Blocks turning on the vehicles engine if set by the status effect handler.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
* 1: Engine state <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle", "_engineOn"];
|
||||
|
||||
if (local _vehicle && {_engineOn} && {_vehicle getVariable [QGVAR(blockEngine), false]}) then {
|
||||
_vehicle engineOn false;
|
||||
};
|
@ -21,33 +21,18 @@ private _vehicle = objNull;
|
||||
|
||||
if (!([_caller, _unit, ["isNotDragging", "isNotCarrying"]] call FUNC(canInteractWith)) || {_caller == _unit}) exitWith {_vehicle};
|
||||
|
||||
private _loadcar = nearestObject [_unit, "Car"];
|
||||
private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F"], 10];
|
||||
|
||||
if (_unit distance _loadcar <= 10) then {
|
||||
_vehicle = _loadcar;
|
||||
} else {
|
||||
private _loadair = nearestObject [_unit, "Air"];
|
||||
|
||||
if (_unit distance _loadair <= 10) then {
|
||||
_vehicle = _loadair;
|
||||
} else {
|
||||
private _loadtank = nearestObject [_unit, "Tank"];
|
||||
|
||||
if (_unit distance _loadtank <= 10) then {
|
||||
_vehicle = _loadtank;
|
||||
} else {
|
||||
private _loadboat = nearestObject [_unit, "Ship_F"];
|
||||
|
||||
if (_unit distance _loadboat <= 10) then {
|
||||
_vehicle = _loadboat;
|
||||
{
|
||||
TRACE_1("",_x);
|
||||
if ((_x emptyPositions "cargo" > 0) || {_x emptyPositions "gunner" > 0}) exitWith {
|
||||
_vehicle = _x;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _nearVehicles;
|
||||
|
||||
if (!isNull _vehicle) then {
|
||||
[_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide);
|
||||
[[_unit, _vehicle, _caller], QFUNC(loadPersonLocal), _unit, false] call FUNC(execRemoteFnc);
|
||||
["loadPersonEvent", _unit, [_unit, _vehicle, _caller]] call FUNC(objectEvent);
|
||||
};
|
||||
|
||||
_vehicle
|
||||
|
@ -34,7 +34,7 @@ createDialog QGVAR(ProgressBar_Dialog);
|
||||
|
||||
//Adjust position based on user setting:
|
||||
private _ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle));
|
||||
_ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
|
||||
_ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
|
||||
|
||||
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlSetPosition _ctrlPos;
|
||||
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlCommit 0;
|
||||
|
@ -15,7 +15,7 @@
|
||||
params ["_name"];
|
||||
|
||||
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
ACE_LOGERROR("Synced event key not found.");
|
||||
ACE_LOGERROR_1("Synced event key [%1] not found (removeSyncedEventHandler).", _name);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_setAllGear","3.7.0","setUnitLoadout");
|
||||
|
||||
params ["_unit", "_allGear", ["_clearAttachments", false], ["_clearBackpack", false]];
|
||||
|
||||
if (!local _unit) exitWith {
|
||||
|
@ -54,5 +54,5 @@ private _lowestVolume = 1;
|
||||
0 fadeMusic _lowestVolume;
|
||||
|
||||
// Set Radio mod variables.
|
||||
player setVariable ["tf_globalVolume", _lowestVolume];
|
||||
ACE_player setVariable ["tf_globalVolume", _lowestVolume];
|
||||
if (!isNil "acre_api_fnc_setGlobalVolume") then { [_lowestVolume^0.33] call acre_api_fnc_setGlobalVolume; };
|
||||
|
@ -20,12 +20,6 @@ if (_unit isKindOf "CAManBase") then {
|
||||
private _sanitizedName = [name _unit, true] call FUNC(sanitizeString);
|
||||
private _rawName = [name _unit, false] call FUNC(sanitizeString);
|
||||
|
||||
//Debug Testing Code (with html tags):
|
||||
// private _sanitizedName = ["<TAG>Name", true] call FUNC(sanitizeString);
|
||||
// private _rawName = ["<TAG>Name", false] call FUNC(sanitizeString);
|
||||
|
||||
//if (_name != _unit getVariable ["ACE_Name", ""]) then {
|
||||
_unit setVariable ["ACE_Name", _sanitizedName, true];
|
||||
_unit setVariable ["ACE_NameRaw", _rawName, true];
|
||||
//};
|
||||
};
|
||||
|
@ -17,7 +17,7 @@
|
||||
params ["_name", "_args", ["_ttl", 0]];
|
||||
|
||||
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
ACE_LOGERROR("Synced event key not found.");
|
||||
ACE_LOGERROR_1("Synced event key [%1] not found (syncedEvent).", _name);
|
||||
false
|
||||
};
|
||||
|
||||
|
@ -12,9 +12,17 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
disableSerialization;
|
||||
_this spawn {//
|
||||
waitUntil {!isNull findDisplay 46};//
|
||||
sleep 2;//
|
||||
|
||||
params ["_display"];
|
||||
disableSerialization;
|
||||
|
||||
_display displayAddEventHandler ["KeyDown", FUNC(handleModifierKey)];
|
||||
_display displayAddEventHandler ["KeyUp", FUNC(handleModifierKeyUp)];
|
||||
params ["_display"];
|
||||
|
||||
_display displayAddEventHandler ["KeyDown", {_this call FUNC(handleModifierKey)}];
|
||||
_display displayAddEventHandler ["KeyUp", {_this call FUNC(handleModifierKeyUp)}];
|
||||
};//
|
||||
|
||||
//@todo, remove all lines with comments after CBA update, events rewrite branch
|
||||
// note 2, will break in save games after ~ 10 seconds thanks to CBA, fixed with above
|
||||
|
@ -802,6 +802,7 @@
|
||||
<Italian>Non c'è spazio per scaricare</Italian>
|
||||
<Spanish>No hay espacio para descargar.</Spanish>
|
||||
<French>Pas de place pour décharger</French>
|
||||
<Czech>Nedostatek místa k vyložení</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -86,7 +86,7 @@ class CfgVehicles {
|
||||
selection = "";
|
||||
displayName = "$STR_ACE_UNROLLWIRE";
|
||||
distance = 5;
|
||||
condition = "true";
|
||||
condition = "alive _target";
|
||||
statement = QUOTE([ARR_2(_target,_player)] call FUNC(dismount));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
@ -119,7 +119,7 @@ class CfgVehicles {
|
||||
accuracy = 1000;
|
||||
autocenter = 0;
|
||||
EGVAR(dragging,canDrag) = 1;
|
||||
EGVAR(dragging,dragPosition[]) = {0,0.5,0.5};
|
||||
EGVAR(dragging,dragPosition)[] = {0,0.5,0.5};
|
||||
EGVAR(dragging,dragDirection) = 0;
|
||||
EGVAR(cargo,size) = 1;
|
||||
EGVAR(cargo,canLoad) = 1;
|
||||
|
@ -14,13 +14,17 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
params ["_wire", "_killer"];
|
||||
TRACE_2("params",_wire,_killer);
|
||||
|
||||
private ["_distance", "_vehicle"];
|
||||
|
||||
if (isNull _killer) then {
|
||||
_killer = _wire getVariable ["ace_concertina_wire_lastDamager", objNull];
|
||||
if (isNull _killer) then {
|
||||
_killer = nearestObject [_wire, "car"];
|
||||
private _midPoint = ((_wire selectionPosition "start") vectorAdd (_wire selectionPosition "deploy")) vectorMultiply 0.5;
|
||||
{
|
||||
if ((vectorMagnitude velocity _x) > 0) exitWith {_killer = _x};
|
||||
} forEach (nearestObjects [(_wire modelToWorld _midPoint), ["Car"], 8]);
|
||||
};
|
||||
};
|
||||
if (isNull _killer || {_killer == _wire} || {_killer == gunner (vehicle _killer)}) exitWith {};
|
||||
|
@ -522,7 +522,7 @@ GVAR(menuRun) = true;
|
||||
(__dsp displayCtrl __mainText) ctrlSetText "Connecting...";
|
||||
};
|
||||
if (CBA_missionTime - GVAR(busyTimer) > 0.6) then {
|
||||
if (ACE_player hasWeapon "ACE_Vector") then {
|
||||
if (({_x isKindOf ["ACE_Vector", configFile >> "CfgWeapons"]} count (weapons ACE_player)) > 0) then {
|
||||
GVAR(displaySelection) = "VECTOR";
|
||||
(__dsp displayCtrl __mainText) ctrlSetText "Vector Connected";
|
||||
GVAR(vectorConnected) = true;
|
||||
|
@ -1 +0,0 @@
|
||||
z\ace\addons\difficulties
|
@ -1,33 +0,0 @@
|
||||
|
||||
class CfgDifficulties {
|
||||
class Mercenary {
|
||||
class Flags {
|
||||
armor[] = {0,0};
|
||||
friendlyTag[] = {0,0};
|
||||
enemyTag[] = {0,0};
|
||||
mineTag[] = {0,0};
|
||||
hud[] = {0,1};//{1,1};
|
||||
hudPerm[] = {0,0};
|
||||
hudWp[] = {0,0};
|
||||
hudWpPerm[] = {0,0};
|
||||
autoSpot[] = {0,1};
|
||||
map[] = {0,0};
|
||||
weaponCursor[] = {0,1};//{1,1};
|
||||
autoGuideAT[] = {0,0};
|
||||
clockIndicator[] = {0,0};
|
||||
3rdPersonView[] = {0,0};
|
||||
autoAim[] = {0,0};
|
||||
unlimitedSaves[] = {0,0};
|
||||
deathMessages[] = {0,1};//{1,1};
|
||||
netStats[] = {0,1};//{1,1};
|
||||
vonID[] = {0,1};
|
||||
cameraShake[] = {1,0};
|
||||
hudGroupInfo[] = {0,0};
|
||||
extendetInfoType[] = {0,0};
|
||||
roughLanding[] = {0,0};
|
||||
windEnabled[] = {1,0};
|
||||
autoTrimEnabled[] = {0,0};
|
||||
stressDamageEnabled[] = {1,0};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,15 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author[] = {"commy2"};
|
||||
authorUrl = "https://github.com/commy2/";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgDifficulties.hpp"
|
@ -1,17 +0,0 @@
|
||||
#define COMPONENT difficulties
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
// #define DEBUG_MODE_FULL
|
||||
// #define DISABLE_COMPILE_CACHE
|
||||
// #define CBA_DEBUG_SYNCHRONOUS
|
||||
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||
|
||||
#ifdef DEBUG_ENABLED_DIFFICULTIES
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_ENABLED_DIFFICULTIES
|
||||
#define DEBUG_SETTINGS DEBUG_ENABLED_DIFFICULTIES
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Disarming">
|
||||
<Key ID="STR_ACE_Disarming_OpenInventory">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Disposable">
|
||||
<Key ID="STR_ACE_Disposable_UsedTube">
|
||||
|
@ -55,3 +55,9 @@ class Extended_AnimChanged_EventHandlers {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_DisplayLoad_EventHandlers {
|
||||
class RscDisplayMission {
|
||||
ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad));
|
||||
};
|
||||
};
|
||||
|
@ -6,14 +6,19 @@ class CfgVehicles {
|
||||
class LandVehicle;
|
||||
class StaticWeapon: LandVehicle {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1.2,0};
|
||||
GVAR(carryPosition)[] = {0,1.2,0};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
class StaticCannon: StaticWeapon {
|
||||
GVAR(canCarry) = 0;
|
||||
GVAR(canDrag) = 0;
|
||||
};
|
||||
|
||||
//remove actions from Taru Pods
|
||||
class Pod_Heli_Transport_04_base_F: StaticWeapon {
|
||||
GVAR(canCarry) = 0;
|
||||
@ -23,23 +28,24 @@ class CfgVehicles {
|
||||
class StaticMortar;
|
||||
class Mortar_01_base_F: StaticMortar {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1.2,0};
|
||||
GVAR(carryPosition)[] = {0,1.2,0};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
// ammo boxes
|
||||
class ThingX;
|
||||
class Items_base_F;
|
||||
class ReammoBox_F: ThingX {
|
||||
GVAR(canCarry) = 0;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 0;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
@ -85,6 +91,32 @@ class CfgVehicles {
|
||||
GVAR(canDrag) = 0;
|
||||
};
|
||||
|
||||
//Plastic and metal case
|
||||
class PlasticCase_01_base_F: Items_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 270;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
class MetalCase_01_base_F: Items_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 270;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
// Barrier
|
||||
class RoadCone_F: ThingX {
|
||||
class EventHandlers {
|
||||
@ -92,40 +124,40 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
class RoadBarrier_F: RoadCone_F {
|
||||
GVAR(carryPosition[]) = {0,1,0.300671};
|
||||
GVAR(carryPosition)[] = {0,1,0.300671};
|
||||
};
|
||||
|
||||
class ACE_RepairItem_Base: ThingX {};
|
||||
|
||||
class ACE_Track: ACE_RepairItem_Base {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
};
|
||||
|
||||
class ACE_Wheel: ACE_RepairItem_Base {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
};
|
||||
|
||||
class Lamps_base_F;
|
||||
class Land_PortableLight_single_F: Lamps_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1.2,0};
|
||||
GVAR(carryPosition)[] = {0,1.2,0};
|
||||
GVAR(carryDirection) = 180;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 180;
|
||||
};
|
||||
};
|
||||
|
BIN
addons/dragging/UI/icons/box_carry.paa
Normal file
BIN
addons/dragging/UI/icons/box_carry.paa
Normal file
Binary file not shown.
BIN
addons/dragging/UI/icons/box_drag.paa
Normal file
BIN
addons/dragging/UI/icons/box_drag.paa
Normal file
Binary file not shown.
BIN
addons/dragging/UI/icons/person_carry.paa
Normal file
BIN
addons/dragging/UI/icons/person_carry.paa
Normal file
Binary file not shown.
BIN
addons/dragging/UI/icons/person_drag.paa
Normal file
BIN
addons/dragging/UI/icons/person_drag.paa
Normal file
Binary file not shown.
5
addons/dragging/XEH_missionDisplayLoad.sqf
Normal file
5
addons/dragging/XEH_missionDisplayLoad.sqf
Normal file
@ -0,0 +1,5 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_display"];
|
||||
|
||||
_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}];
|
@ -8,8 +8,6 @@ if (isServer) then {
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler);
|
||||
|
||||
if (isNil "ACE_maxWeightDrag") then {
|
||||
ACE_maxWeightDrag = 800;
|
||||
};
|
||||
|
@ -40,4 +40,8 @@ detach _carriedItem;
|
||||
_carriedItem setPosATL _position;
|
||||
_carriedItem attachTo [_unit];
|
||||
|
||||
//reset the carry direction
|
||||
private _direction = _carriedItem getVariable [QGVAR(carryDirection), 0];
|
||||
["setDir", _carriedItem, [_carriedItem, _direction]] call EFUNC(common,targetEvent);
|
||||
|
||||
true
|
||||
|
@ -43,7 +43,9 @@ if (_type in _initializedClasses) exitWith {};
|
||||
_initializedClasses pushBack _type;
|
||||
GVAR(initializedClasses_carry) = _initializedClasses;
|
||||
|
||||
private _carryAction = [QGVAR(carry), localize LSTRING(Carry), "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction);
|
||||
private _icon = [QUOTE(PATHTOF(UI\icons\box_carry.paa)), QUOTE(PATHTOF(UI\icons\person_carry.paa))] select (_object isKindOf "Man");
|
||||
|
||||
private _carryAction = [QGVAR(carry), localize LSTRING(Carry), _icon, {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction);
|
||||
private _dropAction = [QGVAR(drop_carry), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction);
|
||||
|
||||
[_type, 0, ["ACE_MainActions"], _carryAction] call EFUNC(interact_menu,addActionToClass);
|
||||
|
@ -44,7 +44,9 @@ if (_type in _initializedClasses) exitWith {};
|
||||
_initializedClasses pushBack _type;
|
||||
GVAR(initializedClasses) = _initializedClasses;
|
||||
|
||||
private _dragAction = [QGVAR(drag), localize LSTRING(Drag), "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction);
|
||||
private _icon = [QUOTE(PATHTOF(UI\icons\box_drag.paa)), QUOTE(PATHTOF(UI\icons\person_drag.paa))] select (_object isKindOf "Man");
|
||||
|
||||
private _dragAction = [QGVAR(drag), localize LSTRING(Drag), _icon, {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction);
|
||||
private _dropAction = [QGVAR(drop), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction);
|
||||
|
||||
[_type, 0, ["ACE_MainActions"], _dragAction] call EFUNC(interact_menu,addActionToClass);
|
||||
|
@ -1,13 +1,17 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(RequireSpecialist) {
|
||||
class GVAR(requireSpecialist) {
|
||||
displayName = CSTRING(RequireSpecialist_DisplayName);
|
||||
description = CSTRING(RequireSpecialist_Description);
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(PunishNonSpecialists) {
|
||||
class GVAR(punishNonSpecialists) {
|
||||
displayName = CSTRING(PunishNonSpecialists_DisplayName);
|
||||
description = CSTRING(PunishNonSpecialists_Description);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(ExplodeOnDefuse) {
|
||||
class GVAR(explodeOnDefuse) {
|
||||
displayName = CSTRING(ExplodeOnDefuse_DisplayName);
|
||||
description = CSTRING(ExplodeOnDefuse_Description);
|
||||
value = 1;
|
||||
|
@ -31,14 +31,14 @@ class CfgAmmo {
|
||||
class ClaymoreDirectionalMine_Remote_Ammo: DirectionalBombBase {
|
||||
GVAR(magazine) = "ClaymoreDirectionalMine_Remote_Mag";
|
||||
GVAR(Explosive) = "ClaymoreDirectionalMine_Remote_Ammo_Scripted";
|
||||
GVAR(defuseObjectPosition[]) = {0, 0, 0.038};
|
||||
GVAR(defuseObjectPosition)[] = {0, 0, 0.038};
|
||||
soundActivation[] = {"", 0, 0, 0};
|
||||
soundDeactivation[] = {"", 0, 0, 0};
|
||||
};
|
||||
// class ClaymoreDirectionalMine_Remote_Ammo_Scripted: ClaymoreDirectionalMine_Remote_Ammo {};
|
||||
|
||||
class APERSTripMine_Wire_Ammo: DirectionalBombBase {
|
||||
GVAR(defuseObjectPosition[]) = {-1.415, 0, 0.12};
|
||||
GVAR(defuseObjectPosition)[] = {-1.415, 0, 0.12};
|
||||
};
|
||||
|
||||
class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase {
|
||||
@ -66,7 +66,7 @@ class CfgAmmo {
|
||||
class DemoCharge_Remote_Ammo: PipeBombBase {
|
||||
GVAR(magazine) = "DemoCharge_Remote_Mag";
|
||||
GVAR(Explosive) = "DemoCharge_Remote_Ammo_Scripted";
|
||||
GVAR(defuseObjectPosition[]) = {0.07, 0, 0.055};
|
||||
GVAR(defuseObjectPosition)[] = {0.07, 0, 0.055};
|
||||
soundActivation[] = {"", 0, 0, 0};
|
||||
soundDeactivation[] = {"", 0, 0, 0};
|
||||
hit = 500;
|
||||
@ -76,7 +76,7 @@ class CfgAmmo {
|
||||
class SatchelCharge_Remote_Ammo: PipeBombBase {
|
||||
GVAR(magazine) = "SatchelCharge_Remote_Mag";
|
||||
GVAR(Explosive) = "SatchelCharge_Remote_Ammo_Scripted";
|
||||
GVAR(defuseObjectPosition[]) = {0.1, 0.1, 0.05};
|
||||
GVAR(defuseObjectPosition)[] = {0.1, 0.1, 0.05};
|
||||
soundActivation[] = {"", 0, 0, 0};
|
||||
soundDeactivation[] = {"", 0, 0, 0};
|
||||
};
|
||||
|
@ -32,3 +32,9 @@ class Extended_Put_EventHandlers {
|
||||
GVAR(takeHandler) = QUOTE([ARR_3(_this select 1, _this select 0, _this select 2)] call FUNC(onInventoryChanged));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_DisplayLoad_EventHandlers {
|
||||
class RscDisplayMission {
|
||||
ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad));
|
||||
};
|
||||
};
|
||||
|
@ -50,8 +50,7 @@ class CfgVehicles {
|
||||
mapSize = 0.2;
|
||||
icon = "iconObject_1x2";
|
||||
model = "\A3\Weapons_f\dummyweapon.p3d";
|
||||
scope = 2;
|
||||
scopeCurator = 1;
|
||||
scope = 1;
|
||||
vehicleClass = "Cargo";
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
@ -66,7 +65,6 @@ class CfgVehicles {
|
||||
showDisabled = 0;
|
||||
icon = PATHTOF(UI\Defuse_ca.paa);
|
||||
priority = 0.8;
|
||||
distance = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -82,18 +80,16 @@ class CfgVehicles {
|
||||
mapSize = 0.2;
|
||||
icon = "iconObject_1x2";
|
||||
model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d";
|
||||
scope = 2;
|
||||
scopeCurator = 1;
|
||||
scope = 1;
|
||||
vehicleClass = "Cargo";
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
selection = "";
|
||||
distance = 1;
|
||||
distance = 1.5;
|
||||
condition = "true";
|
||||
class ACE_SetTrigger {
|
||||
selection = "";
|
||||
displayName = CSTRING(TriggerMenu);
|
||||
distance = 1;
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions););
|
||||
@ -105,7 +101,6 @@ class CfgVehicles {
|
||||
class ACE_PickUp {
|
||||
selection = "";
|
||||
displayName = CSTRING(Pickup);
|
||||
distance = 1;
|
||||
condition = "true";
|
||||
statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;);
|
||||
showDisabled = 0;
|
||||
|
@ -6,6 +6,7 @@ PREP(addExplosiveActions);
|
||||
PREP(addToSpeedDial);
|
||||
PREP(addTransmitterActions);
|
||||
PREP(addTriggerActions);
|
||||
PREP(cancelPlacement);
|
||||
PREP(canDefuse);
|
||||
PREP(canDetonate);
|
||||
PREP(connectExplosive);
|
||||
|
6
addons/explosives/XEH_missionDisplayLoad.sqf
Normal file
6
addons/explosives/XEH_missionDisplayLoad.sqf
Normal file
@ -0,0 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_display"];
|
||||
|
||||
_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}];
|
||||
_display displayAddEventHandler ["MouseButtonDown", {[ACE_player, _this select 1] call FUNC(cancelPlacement)}];
|
@ -27,18 +27,7 @@ if (isServer) then {
|
||||
TRACE_1("Knocked Out, Doing Deadman", _unit);
|
||||
[_unit] call FUNC(onIncapacitated);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
};
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(PlacedCount) = 0;
|
||||
GVAR(Setup) = objNull;
|
||||
GVAR(pfeh_running) = false;
|
||||
GVAR(CurrentSpeedDial) = 0;
|
||||
|
||||
// In case we are a JIP client, ask the server for orientation of any previously
|
||||
// placed mine.
|
||||
if (isServer) then {
|
||||
["clientRequestsOrientations", {
|
||||
params ["_logic"];
|
||||
TRACE_1("clientRequestsOrientations received:",_logic);
|
||||
@ -50,7 +39,18 @@ if (isServer) then {
|
||||
TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations));
|
||||
["serverSendsOrientations", _logic, [GVAR(explosivesOrientations)]] call EFUNC(common,targetEvent);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
} else {
|
||||
};
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(PlacedCount) = 0;
|
||||
GVAR(Setup) = objNull;
|
||||
GVAR(pfeh_running) = false;
|
||||
GVAR(CurrentSpeedDial) = 0;
|
||||
|
||||
// In case we are a JIP client, ask the server for orientation of any previously
|
||||
// placed mine.
|
||||
if (didJIP) then {
|
||||
["serverSendsOrientations", {
|
||||
params ["_explosivesOrientations"];
|
||||
TRACE_1("serverSendsOrientations received:",_explosivesOrientations);
|
||||
@ -59,14 +59,12 @@ if (isServer) then {
|
||||
TRACE_3("orientation set:",_explosive,_direction,_pitch);
|
||||
[_explosive, _direction, _pitch] call FUNC(setPosition);
|
||||
} forEach _explosivesOrientations;
|
||||
private _group = group GVAR(localLogic);
|
||||
deleteVehicle GVAR(localLogic);
|
||||
GVAR(localLogic) = nil;
|
||||
deleteGroup _group;
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
// Create a logic to get the client ID
|
||||
GVAR(localLogic) = (createGroup sideLogic) createUnit ["Logic", [0,0,0], [], 0, "NONE"];
|
||||
GVAR(localLogic) = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["Logic", [0,0,0], [], 0, "NONE"];
|
||||
TRACE_1("clientRequestsOrientations sent:",GVAR(localLogic));
|
||||
["clientRequestsOrientations", [GVAR(localLogic)]] call EFUNC(common,serverEvent);
|
||||
};
|
||||
@ -81,5 +79,3 @@ if (isServer) then {
|
||||
_this call FUNC(interactEH);
|
||||
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
[{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(common,addScrollWheelEventHandler);
|
||||
|
23
addons/explosives/functions/fnc_cancelPlacement.sqf
Normal file
23
addons/explosives/functions/fnc_cancelPlacement.sqf
Normal file
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Author: Garth 'L-H' de Wet
|
||||
* Cancels explosives placement.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Key <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [unit, 1] call ace_explosives_fnc_cancelPlacement
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit", "_key"];
|
||||
|
||||
if (_key != 1 || {!GVAR(pfeh_running)}) exitWith {};
|
||||
|
||||
GVAR(placeAction) = PLACE_CANCEL;
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
if ((!GVAR(pfeh_running)) || {ACE_Modifier == 0}) exitWith {false};
|
||||
if (!GVAR(pfeh_running)) exitWith {false};
|
||||
|
||||
GVAR(TweakedAngle) = ((GVAR(TweakedAngle) + 7.2 * _this) + 360) % 360;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* detonate editor-placed explosives.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Explosives objects to detonate <ARRAY>
|
||||
* 0: Explosives objects to detonate <OBJECT or ARRAY>
|
||||
* 1: Fuze delay (for each explosive; use negative number for random time up to value) <NUMBER> <OPTIONAL>
|
||||
*
|
||||
* Return Value:
|
||||
@ -18,10 +18,13 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_explosiveArr",["_fuzeTime",0]];
|
||||
params [["_explosiveArr", [], [[], objNull]], ["_fuzeTime", 0, [0]]];
|
||||
|
||||
if (_explosiveArr isEqualType objNull) then {
|
||||
_explosiveArr = [_explosiveArr];
|
||||
};
|
||||
|
||||
private _detTime;
|
||||
{
|
||||
_detTime = if (_fuzeTime < 0) then {random abs _fuzeTime} else {_fuzeTime};
|
||||
private _detTime = if (_fuzeTime < 0) then {random abs _fuzeTime} else {_fuzeTime};
|
||||
[objNull, -1, [_x, _detTime]] call FUNC(detonateExplosive);
|
||||
} forEach _explosiveArr;
|
||||
|
@ -14,8 +14,7 @@
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#include "script_component.hpp"
|
||||
private ["_speedDial", "_amount"];
|
||||
|
||||
_speedDial = ace_player getVariable [QGVAR(SpeedDial), []];
|
||||
|
@ -141,10 +141,10 @@ GVAR(TweakedAngle) = 0;
|
||||
//Don't allow placing in a bad position:
|
||||
if (_badPosition && {GVAR(placeAction) == PLACE_APPROVE}) then {GVAR(placeAction) = PLACE_WAITING;};
|
||||
|
||||
if (((inputAction "zoomTemp") > 0) || //Cancel on RMB, For some reason this works (when held) but AddActionEventHandler doesn't
|
||||
{_unit != ACE_player} ||
|
||||
if (_unit != ACE_player ||
|
||||
{!([_unit, objNull, ["isNotSwimming"]] call EFUNC(common,canInteractWith))} ||
|
||||
{!(_magClassname in (magazines _unit))}) then {
|
||||
{!(_magClassname in (magazines _unit))}
|
||||
) then {
|
||||
GVAR(placeAction) = PLACE_CANCEL;
|
||||
};
|
||||
|
||||
|
@ -107,16 +107,16 @@
|
||||
<Russian>Отмена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_ScrollAction">
|
||||
<English>+Ctrl rotate</English>
|
||||
<German>+Strg drehen</German>
|
||||
<Spanish>+Ctrl girar</Spanish>
|
||||
<French>+Ctrl tourner</French>
|
||||
<Italian>+Ctrl rotazione</Italian>
|
||||
<Czech>+Ctrl otočit</Czech>
|
||||
<Hungarian>+Ctrl forgatás</Hungarian>
|
||||
<Polish>+Ctrl obrót</Polish>
|
||||
<Portuguese>+Ctrl rotaciona</Portuguese>
|
||||
<Russian>+Ctrl Bращать</Russian>
|
||||
<English>Rotate</English>
|
||||
<German>Drehen</German>
|
||||
<Spanish>Girar</Spanish>
|
||||
<French>Tourner</French>
|
||||
<Italian>Rotazione</Italian>
|
||||
<Czech>Otočit</Czech>
|
||||
<Hungarian>Forgatás</Hungarian>
|
||||
<Polish>Obrót</Polish>
|
||||
<Portuguese>Rotaciona</Portuguese>
|
||||
<Russian>Bращать</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Jammer_TurnOn">
|
||||
<English>Turn On Thor III</English>
|
||||
@ -647,6 +647,8 @@
|
||||
<Polish>Mina M6 SLAM (atak od dołu)</Polish>
|
||||
<Spanish>Mina M6 SLAM (Ataque Inferior)</Spanish>
|
||||
<French>Mine M6 SLAM (par le bas)</French>
|
||||
<Italian>Mina M6 SLAM (base)</Italian>
|
||||
<Czech>M6 SLAM (Útok zespoda)</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_SLAMSideAttack_DisplayName">
|
||||
<English>M6 SLAM Mine (Side Attack)</English>
|
||||
@ -661,6 +663,8 @@
|
||||
<Polish>Mina M6 SLAM (atak od boku)</Polish>
|
||||
<Spanish>Mina M6 SLAM (Ataque Lateral)</Spanish>
|
||||
<French>Mine M6 SLAM (de flanc)</French>
|
||||
<Italian> STR_ACE_Explosives_Module_SLAMBottomAttack_DisplayName M6 SLAM Mine (Bottom Attack) Mine M6 SLAM (par le bas) M6-SLAM-Mine (Bodenangriff) Mina M6 SLAM (base) Mina M6 SLAM (atak od dołu) Mina M6 SLAM (Laterale)</Italian>
|
||||
<Czech>M6 SLAM (Útok do strany)</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDUrbanBig_Range_DisplayName">
|
||||
<English>Large IED (Urban, Pressure Plate)</English>
|
||||
@ -675,6 +679,8 @@
|
||||
<Polish>Duży IED (miejski, płyta naciskowa)</Polish>
|
||||
<Spanish>IED Grande (Urbano, Placa de presión)</Spanish>
|
||||
<French>Grand EEI (Urbain, plaque de pression)</French>
|
||||
<Italian>IED grande (urbano, a pressione)</Italian>
|
||||
<Czech>IED, Velké (Městské, Nášlapné)</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDLandBig_Range_DisplayName">
|
||||
<English>Large IED (Dug-in, Pressure Plate)</English>
|
||||
@ -689,6 +695,8 @@
|
||||
<Polish>Duży IED (zakopany, płyta naciskowa)</Polish>
|
||||
<Spanish>IED Grande (Enterrado, Placa de presión)</Spanish>
|
||||
<French>Grand EEI (Enterré, plaque de pression)</French>
|
||||
<Italian>IED grande (interrato, a pressione)</Italian>
|
||||
<Czech>IED, Velké (Zakopané, Nášlapné)</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDUrbanSmall_Range_DisplayName">
|
||||
<English>Small IED (Urban, Pressure Plate)</English>
|
||||
@ -703,6 +711,8 @@
|
||||
<Polish>Mały IED (miejski, płyta naciskowa)</Polish>
|
||||
<Spanish>IED Pequeño (Urbano, Placa de presión)</Spanish>
|
||||
<French>Petit EEI (Urbain, plaque de pression)</French>
|
||||
<Italian>IED piccolo (urbano, a pressione)</Italian>
|
||||
<Czech>IED, Malé (Městské, Nášlapné)</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDLandSmall_Range_DisplayName">
|
||||
<English>Small IED (Dug-in, Pressure Plate)</English>
|
||||
@ -717,6 +727,8 @@
|
||||
<Polish>Mały IED (zakopany, płyta naciskowa)</Polish>
|
||||
<Spanish>IED Pequeño (Enterrado, Placa de presión)</Spanish>
|
||||
<French>Petit EEI (Enterré, plaque de pression)</French>
|
||||
<Italian>IED piccolo (interrato, a pressione)</Italian>
|
||||
<Czech>IED, Malé (Zakopané, Nášlapné)</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_connectInventoryExplosiveToDeadman">
|
||||
<English>Connect to %1</English>
|
||||
|
@ -1,3 +1,9 @@
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
|
12
addons/fastroping/CfgSounds.hpp
Normal file
12
addons/fastroping/CfgSounds.hpp
Normal file
@ -0,0 +1,12 @@
|
||||
class CfgSounds {
|
||||
class GVAR(Rope) {
|
||||
name = "ACE_Fastroping_Rope";
|
||||
sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_rope.ogg)), 10, 1.0};
|
||||
titles[] = {};
|
||||
};
|
||||
class GVAR(Thud) {
|
||||
name = "ACE_Fastroping_Thud";
|
||||
sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_thud.ogg)), 10, 1.0};
|
||||
titles[] = {};
|
||||
};
|
||||
};
|
@ -4,7 +4,7 @@
|
||||
control = "Checkbox"; \
|
||||
displayName = CSTRING(Eden_equipFRIES); \
|
||||
tooltip = CSTRING(Eden_equipFRIES_Tooltip); \
|
||||
expression = [_this] call FUNC(equipFRIES); \
|
||||
expression = QUOTE([_this] call FUNC(equipFRIES)); \
|
||||
typeName = "BOOL"; \
|
||||
condition = "objectVehicle"; \
|
||||
defaultValue = false; \
|
||||
@ -12,74 +12,6 @@
|
||||
}
|
||||
|
||||
class CfgVehicles {
|
||||
class Building;
|
||||
class NonStrategic: Building {
|
||||
class AnimationSources;
|
||||
};
|
||||
class ACE_friesBase: NonStrategic {
|
||||
destrType = "";
|
||||
};
|
||||
class ACE_friesAnchorBar: ACE_friesBase {
|
||||
author = "jokoho48";
|
||||
scope = 1;
|
||||
model = PATHTOF(data\friesAnchorBar.p3d);
|
||||
animated = 1;
|
||||
class AnimationSources: AnimationSources {
|
||||
class extendHookRight {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 1.5;
|
||||
};
|
||||
class extendHookLeft {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 1.5;
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_friesGantry: ACE_friesBase {
|
||||
author = "jokoho48";
|
||||
scope = 1;
|
||||
model = PATHTOF(data\friesGantry.p3d);
|
||||
animated = 1;
|
||||
class AnimationSources: AnimationSources {
|
||||
class adjustWidth {
|
||||
source = "user";
|
||||
initPhase = 0.211;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryLeft {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryRight {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_friesGantryReverse: ACE_friesGantry {
|
||||
class AnimationSources: AnimationSources {
|
||||
class adjustWidth {
|
||||
source = "user";
|
||||
initPhase = 0.213;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryLeft {
|
||||
source = "user";
|
||||
initPhase = 0.5;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryRight {
|
||||
source = "user";
|
||||
initPhase = 0.5;
|
||||
animPeriod = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Logic;
|
||||
class Module_F: Logic {
|
||||
class ModuleDescription;
|
||||
@ -108,15 +40,15 @@ class CfgVehicles {
|
||||
class ACE_SelfActions {
|
||||
class ACE_prepareFRIES {
|
||||
displayName = CSTRING(Interaction_prepareFRIES);
|
||||
condition = [vehicle _player] call FUNC(canPrepareFRIES);
|
||||
statement = [vehicle _player] call FUNC(prepareFRIES);
|
||||
condition = QUOTE([vehicle _player] call FUNC(canPrepareFRIES));
|
||||
statement = QUOTE([vehicle _player] call FUNC(prepareFRIES));
|
||||
showDisabled = 0;
|
||||
priority = 1;
|
||||
};
|
||||
class ACE_deployRopes {
|
||||
displayName = CSTRING(Interaction_deployRopes);
|
||||
condition = [_player, vehicle _player] call FUNC(canDeployRopes);
|
||||
statement = [QGVAR(deployRopes), [vehicle _player]] call EFUNC(common,serverEvent);
|
||||
condition = QUOTE([ARR_2(_player, vehicle _player)] call FUNC(canDeployRopes));
|
||||
statement = QUOTE([ARR_2(QUOTE(QGVAR(deployRopes)), [vehicle _player])] call EFUNC(common,serverEvent));
|
||||
showDisabled = 0;
|
||||
priority = 1;
|
||||
};
|
||||
@ -137,71 +69,174 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
|
||||
class Helicopter_Base_H;
|
||||
class Helicopter_Base_F;
|
||||
class ACE_friesBase: Helicopter_Base_F {
|
||||
destrType = "";
|
||||
class Turrets {};
|
||||
class ACE_Actions {};
|
||||
class ACE_SelfActions {};
|
||||
EGVAR(cargo,hasCargo) = 0;
|
||||
EGVAR(cargo,space) = 0;
|
||||
};
|
||||
class ACE_friesAnchorBar: ACE_friesBase {
|
||||
author = "jokoho48";
|
||||
scope = 1;
|
||||
model = QUOTE(PATHTOF(data\friesAnchorBar.p3d));
|
||||
animated = 1;
|
||||
class AnimationSources {
|
||||
class extendHookRight {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 1.5;
|
||||
};
|
||||
class extendHookLeft {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 1.5;
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_friesGantry: ACE_friesBase {
|
||||
author = "jokoho48";
|
||||
scope = 1;
|
||||
model = QUOTE(PATHTOF(data\friesGantry.p3d));
|
||||
animated = 1;
|
||||
class AnimationSources {
|
||||
class adjustWidth {
|
||||
source = "user";
|
||||
initPhase = 0.211;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryLeft {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryRight {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class hideGantryLeft {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class hideGantryRight {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_friesGantryReverse: ACE_friesGantry {
|
||||
class AnimationSources: AnimationSources {
|
||||
class adjustWidth {
|
||||
source = "user";
|
||||
initPhase = 0.213;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryLeft {
|
||||
source = "user";
|
||||
initPhase = 0.5;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryRight {
|
||||
source = "user";
|
||||
initPhase = 0.5;
|
||||
animPeriod = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class GVAR(helper): Helicopter_Base_F {
|
||||
author = "KoffeinFlummi";
|
||||
scope = 1;
|
||||
model = PATHTOF(data\helper.p3d);
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
condition = "false";
|
||||
};
|
||||
};
|
||||
class ACE_Actions {};
|
||||
class Turrets {};
|
||||
};
|
||||
|
||||
class Helicopter_Base_H;
|
||||
class Heli_Light_02_base_F: Helicopter_Base_H {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{1.41, 1.38, 0}, {-1.41, 1.38, 0}};
|
||||
GVAR(ropeOrigins)[] = {{1.41, 1.38, 0}, {-1.41, 1.38, 0}};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
};
|
||||
class Heli_Attack_02_base_F: Helicopter_Base_F {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{1.25, 1.5, -0.6}, {-1.1, 1.5, -0.6}};
|
||||
GVAR(ropeOrigins)[] = {{1.25, 1.5, -0.6}, {-1.1, 1.5, -0.6}};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
};
|
||||
class Heli_Transport_01_base_F: Helicopter_Base_H {
|
||||
GVAR(enabled) = 2;
|
||||
GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(friesType) = "ACE_friesAnchorBar";
|
||||
GVAR(friesAttachmentPoint[]) = {0.065, 2.2, -0.15};
|
||||
GVAR(friesAttachmentPoint)[] = {0.065, 2.2, -0.15};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
EQUIP_FRIES_ATTRIBUTE;
|
||||
};
|
||||
class Heli_Transport_02_base_F: Helicopter_Base_H {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{0.94, -4.82, -1.16}, {-0.94, -4.82, -1.16}};
|
||||
GVAR(ropeOrigins)[] = {{0.94, -4.82, -1.16}, {-0.94, -4.82, -1.16}};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
|
||||
class UserActions {
|
||||
class Ramp_Open;
|
||||
class Ramp_Close: Ramp_Open {
|
||||
condition = QUOTE([ARR_5(this,'CargoRamp_Open',[[0],[1],[2]])] call FUNC(canCloseRamp));
|
||||
};
|
||||
};
|
||||
};
|
||||
class Heli_Transport_03_base_F: Helicopter_Base_H {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{0.75, -5.29, -0.11}, {-0.87, -5.29, -0.11}};
|
||||
GVAR(ropeOrigins)[] = {{0.75, -5.29, -0.11}, {-0.87, -5.29, -0.11}};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
|
||||
class UserActions {
|
||||
class Ramp_Open;
|
||||
class Ramp_Close: Ramp_Open {
|
||||
condition = QUOTE([ARR_5(this,'Door_rear_source',[[0],[3],[4]])] call FUNC(canCloseRamp));
|
||||
};
|
||||
};
|
||||
};
|
||||
class Heli_light_03_base_F: Helicopter_Base_F {
|
||||
GVAR(enabled) = 2;
|
||||
GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(friesType) = "ACE_friesGantryReverse";
|
||||
GVAR(friesAttachmentPoint[]) = {1.04, 2.5, -0.34};
|
||||
GVAR(friesAttachmentPoint)[] = {-1.04, 2.5, -0.34};
|
||||
EQUIP_FRIES_ATTRIBUTE;
|
||||
};
|
||||
class Heli_light_03_unarmed_base_F: Heli_light_03_base_F {
|
||||
GVAR(enabled) = 2;
|
||||
GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(friesType) = "ACE_friesGantry";
|
||||
GVAR(friesAttachmentPoint[]) = {-1.07, 3.26, -0.5};
|
||||
GVAR(friesAttachmentPoint)[] = {-1.07, 3.26, -0.5};
|
||||
EQUIP_FRIES_ATTRIBUTE;
|
||||
};
|
||||
class Heli_Transport_04_base_F;
|
||||
class Heli_Transport_04_base_F: Helicopter_Base_H {
|
||||
class UserActions;
|
||||
};
|
||||
class O_Heli_Transport_04_bench_F: Heli_Transport_04_base_F {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{1.03, 1.6, -0.23}, {1.03, -1.36, -0.23}, {-1.23, 1.6, -0.23}, {-1.23, -1.36, -0.23}};
|
||||
GVAR(ropeOrigins)[] = {{1.03, 1.6, -0.23}, {1.03, -1.36, -0.23}, {-1.23, 1.6, -0.23}, {-1.23, -1.36, -0.23}};
|
||||
};
|
||||
class O_Heli_Transport_04_covered_F: Heli_Transport_04_base_F {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{0.83, -4.7, -0.03}, {-1.02, -4.7, -0.03}};
|
||||
GVAR(ropeOrigins)[] = {{0.83, -4.7, -0.03}, {-1.02, -4.7, -0.03}};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
|
||||
class UserActions: UserActions {
|
||||
class CloseDoor_6;
|
||||
class Ramp_Close: CloseDoor_6 {
|
||||
condition = QUOTE([ARR_6(this,'Door_6_source',[[0],[1],[2],[3]])] call FUNC(canCloseRamp));
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
11
addons/fastroping/CfgWaypoints.hpp
Normal file
11
addons/fastroping/CfgWaypoints.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
class CfgWaypoints {
|
||||
class ACE {
|
||||
displayName = "ACE";
|
||||
class Fastrope {
|
||||
displayName = CSTRING(Waypoint_Fastrope);
|
||||
displayNameDebug = "Fastrope";
|
||||
file = QUOTE(PATHTOF(functions\fnc_deployAIWaypoint.sqf));
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Waypoint.paa));
|
||||
};
|
||||
};
|
||||
};
|
@ -1,12 +1,11 @@
|
||||
ace_difficulties
|
||||
================
|
||||
|
||||
Changes the elite difficulty setting to more closely resemble Arma 2.
|
||||
ace_fastroping
|
||||
==========
|
||||
|
||||
Introducing the ability to fastrope out of heliocopters.
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [BaerMitUmlaut](https://github.com/BaerMitUmlaut)
|
||||
- [KoffeinFlummi](https://github.com/KoffeinFlummi)
|
||||
- [commy2](https://github.com/commy2)
|
BIN
addons/fastroping/UI/Icon_Waypoint.paa
Normal file
BIN
addons/fastroping/UI/Icon_Waypoint.paa
Normal file
Binary file not shown.
18
addons/fastroping/XEH_PREP.hpp
Normal file
18
addons/fastroping/XEH_PREP.hpp
Normal file
@ -0,0 +1,18 @@
|
||||
PREP(canCloseRamp);
|
||||
PREP(canCutRopes);
|
||||
PREP(canDeployRopes);
|
||||
PREP(canFastRope);
|
||||
PREP(canPrepareFRIES);
|
||||
PREP(checkVehicleThread);
|
||||
PREP(cutRopes);
|
||||
PREP(deployAI);
|
||||
PREP(deployRopes);
|
||||
PREP(equipFRIES);
|
||||
PREP(fastRope);
|
||||
PREP(fastRopeLocalPFH);
|
||||
PREP(fastRopeServerPFH);
|
||||
PREP(moduleEquipFRIES);
|
||||
PREP(onCutCommon);
|
||||
PREP(onPrepareCommon);
|
||||
PREP(onRopeBreak);
|
||||
PREP(prepareFRIES);
|
@ -7,8 +7,3 @@
|
||||
[QGVAR(startFastRope), {
|
||||
[FUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler;
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
[QGVAR(ropeDetach), {
|
||||
params ["_object", "_rope"];
|
||||
_object ropeDetach _rope;
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
@ -2,21 +2,6 @@
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(canCutRopes);
|
||||
PREP(canDeployRopes);
|
||||
PREP(canFastRope);
|
||||
PREP(canPrepareFRIES);
|
||||
PREP(checkVehicleThread);
|
||||
PREP(cutRopes);
|
||||
PREP(deployRopes);
|
||||
PREP(equipFRIES);
|
||||
PREP(fastRope);
|
||||
PREP(fastRopeLocalPFH);
|
||||
PREP(fastRopeServerPFH);
|
||||
PREP(moduleEquipFRIES);
|
||||
PREP(onCutCommon);
|
||||
PREP(onPrepareCommon);
|
||||
PREP(onRopeBreak);
|
||||
PREP(prepareFRIES);
|
||||
#include "XEH_PREP.hpp"
|
||||
|
||||
ADDON = true;
|
||||
|
3
addons/fastroping/XEH_preStart.sqf
Normal file
3
addons/fastroping/XEH_preStart.sqf
Normal file
@ -0,0 +1,3 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
#include "XEH_PREP.hpp"
|
@ -14,4 +14,6 @@ class CfgPatches {
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgMoves.hpp"
|
||||
#include "CfgSounds.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWaypoints.hpp"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user