mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into medical-focus-feature
Conflicts: addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf
This commit is contained in:
commit
7d063d4dee
37
CONTRIBUTING.md → .github/CONTRIBUTING.md
vendored
37
CONTRIBUTING.md → .github/CONTRIBUTING.md
vendored
@ -2,7 +2,7 @@
|
||||
|
||||
## Before reporting
|
||||
|
||||
If you have found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only `@CBA_A3` and `@ace` on a newly created mission.
|
||||
If you have found an issue with ACE3 please make sure that ACE3 really is the cause of the problem. To do this try to reproduce the issue with using only `@CBA_A3` and `@ace` on a newly created mission.
|
||||
|
||||
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.
|
||||
|
||||
@ -14,38 +14,10 @@ Indicate if the issue appears on stable or development version. In case it is th
|
||||
|
||||
## Reporting the issue
|
||||
|
||||
Head over to the [ACE3 GitHub issue tracker](https://github.com/acemod/ACE3/issues) and press the [New issue](https://github.com/acemod/ACE3/issues/new) button in the top right corner. Add a descriptive title and copy the following issue template in to the text area:
|
||||
|
||||
```
|
||||
ACE3 Version: 3.x.x
|
||||
(indicate if stable or dev, if dev indicate the commit the version is based on)
|
||||
|
||||
**Mods:**
|
||||
* `@CBA_A3`
|
||||
* `@ace`
|
||||
|
||||
**Placed ACE3 Modules:**
|
||||
* *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.*
|
||||
* You can also press the `Debug to` button in the ACE3 option menu (escape -> ACE3 options -> Debug to) and add a link (pastebin.com) to the results.
|
||||
|
||||
**Description:**
|
||||
* 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.*
|
||||
|
||||
**Where did the issue occur?**
|
||||
* A possible answer might be "Multiplayer", "Editor" or "Singleplayer"*
|
||||
|
||||
**RPT log file:**
|
||||
* Add a link (pastebin.com) to the client or server RPT file.*
|
||||
```
|
||||
Head over to the [ACE3 GitHub issue tracker](https://github.com/acemod/ACE3/issues) and press the [New issue](https://github.com/acemod/ACE3/issues/new) button in the top right corner. Add a descriptive title and complete the issue template.
|
||||
|
||||
A video of the issue might be helpful in resolving it faster.
|
||||
|
||||
GitHub uses [Markdown](http://daringfireball.net/projects/markdown/syntax) to style the output. If you want to know more about it (e.g. how to [turn text bold](https://help.github.com/articles/markdown-basics/#styling-text), how to denote [code blocks](https://help.github.com/articles/markdown-basics/#inline-formats) or [inline code](https://help.github.com/articles/markdown-basics/#multiple-lines)) have a look at the [GitHub Markdown Documentation](https://help.github.com/articles/github-flavored-markdown).
|
||||
|
||||
|
||||
# Feature Requests
|
||||
|
||||
## Background
|
||||
@ -57,8 +29,3 @@ Please refrain from making requests for any planned or existing features from ei
|
||||
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
|
||||
|
||||
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
|
||||
|
||||
# Regarding Pull Requests (PRs)
|
||||
- You want to help but don't know where to start? Check the wiki entry for [setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html)
|
||||
- [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)
|
25
.github/ISSUE_TEMPLATE.md
vendored
Normal file
25
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
**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)*
|
||||
|
||||
**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.*
|
||||
|
||||
**Description:**
|
||||
* *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.*
|
||||
|
||||
**Where did the issue occur?**
|
||||
* *A possible answer might be "Dedicated Server", "Local Multiplayer", "Editor", or "Singleplayer"*
|
||||
|
||||
**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)*
|
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
### 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)
|
@ -39,6 +39,7 @@ Alganthe <alganthe@live.fr>
|
||||
Anthariel <Contact@storm-simulation.com>
|
||||
Arkhir <wonsz666@gmail.com >
|
||||
Asgar Serran <piechottaf@web.de>
|
||||
BaerMitUmlaut
|
||||
Bamse <bamsis@gmail.com>
|
||||
Bla1337
|
||||
BlackPixxel <blackpixxel96@gmail.com>
|
||||
|
@ -64,7 +64,6 @@ The mod is **built modularly**, so almost any included PBO can be easily removed
|
||||
- Magazine repacking
|
||||
- Realistic weapon overheating mechanic
|
||||
- Combat deafness (temporary loss of hearing) simulation
|
||||
- Improved ragdoll physics
|
||||
- Improved interactions for AARs and ammo bearers
|
||||
- Adjustable sniper scopes
|
||||
- No idle animation with lowered weapon
|
||||
|
BIN
ace_medical.dll
BIN
ace_medical.dll
Binary file not shown.
@ -36,3 +36,7 @@ if (!hasInterface) exitWith {};
|
||||
[] call FUNC(updateTrajectoryPFH);
|
||||
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
call FUNC(diagnoseWeapons);
|
||||
#endif
|
@ -7,6 +7,7 @@ PREP(calculateAtmosphericCorrection);
|
||||
PREP(calculateBarrelLengthVelocityShift);
|
||||
PREP(calculateRetardation);
|
||||
PREP(calculateStabilityFactor);
|
||||
PREP(diagnoseWeapons);
|
||||
PREP(displayProtractor);
|
||||
PREP(handleFired);
|
||||
PREP(initializeTerrainExtension);
|
||||
|
@ -22,6 +22,7 @@ private ["_muzzleVelocityTableCount", "_barrelLengthTableCount", "_lowerDataInde
|
||||
"_upperDataIndex", "_lowerBarrelLength", "_upperBarrelLength", "_lowerMuzzleVelocity",
|
||||
"_upperMuzzleVelocity", "_interpolationRatio"];
|
||||
params ["_barrelLength", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocity"];
|
||||
TRACE_4("params",_barrelLength,_muzzleVelocityTable,_barrelLengthTable,_muzzleVelocity);
|
||||
|
||||
// If barrel length is not defined, then there is no point in calculating muzzle velocity
|
||||
if (_barrelLength == 0) exitWith { 0 };
|
||||
|
59
addons/advanced_ballistics/functions/fnc_diagnoseWeapons.sqf
Normal file
59
addons/advanced_ballistics/functions/fnc_diagnoseWeapons.sqf
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
*
|
||||
* This function diagnoses all primary weapons to find cases in which the initial
|
||||
* velocity of shots with and without AB significantly mismatch
|
||||
*
|
||||
* Arguments:
|
||||
* None. Parameters inherited from EFUNC(common,firedEH)
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
private _cfgWeapons = configFile >> "CfgWeapons";
|
||||
for "_i" from 0 to (count _cfgWeapons)-1 do {
|
||||
private _weaponConfig = _cfgWeapons select _i;
|
||||
if (isClass _weaponConfig) then {
|
||||
private _weapon = configName _weaponConfig;
|
||||
private _weaponType = getNumber (_weaponConfig >> "Type");
|
||||
if (_weaponType == 1) then {
|
||||
// The weapon is a primary weapon
|
||||
|
||||
private _weaponInitSpeed = getNumber (_weaponConfig >> "initSpeed");
|
||||
private _magazines = getArray (_weaponConfig >> "magazines");
|
||||
{
|
||||
private _magazine = _x;
|
||||
private _magazineInitSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed");
|
||||
private _ammo = getText (configFile >> "CfgMagazines" >> _magazine >> "ammo");
|
||||
|
||||
// Vanilla initial speed --------------------------
|
||||
private _vanillaInitialSpeed = _magazineInitSpeed;
|
||||
if (_weaponInitSpeed > 0) then {
|
||||
_vanillaInitialSpeed = _weaponInitSpeed;
|
||||
} else {
|
||||
if (_weaponInitSpeed < 0) then {
|
||||
_vanillaInitialSpeed = _vanillaInitialSpeed * (-_weaponInitSpeed);
|
||||
};
|
||||
};
|
||||
// --------------------------------------------------
|
||||
|
||||
// AB initial speed --------------------------------
|
||||
// Get Weapon and Ammo Configurations
|
||||
private _AmmoCacheEntry = _ammo call FUNC(readAmmoDataFromConfig);
|
||||
private _WeaponCacheEntry = _weapon call FUNC(readWeaponDataFromConfig);
|
||||
_AmmoCacheEntry params ["_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable"];
|
||||
_WeaponCacheEntry params ["_barrelTwist", "_twistDirection", "_barrelLength"];
|
||||
|
||||
private _barrelVelocityShift = [_barrelLength, _muzzleVelocityTable, _barrelLengthTable, _vanillaInitialSpeed] call FUNC(calculateBarrelLengthVelocityShift);
|
||||
private _abInitialSpeed = _vanillaInitialSpeed + _barrelVelocityShift;
|
||||
// --------------------------------------------------
|
||||
diag_log text format ["ABDiagnose,%1,%2,%3,%4,%5,%6,%7",_weapon,_magazine,_ammo,_magazineInitSpeed,_weaponInitSpeed,_vanillaInitialSpeed,_abInitialSpeed];
|
||||
} forEach _magazines;
|
||||
};
|
||||
};
|
||||
};
|
@ -24,6 +24,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
TRACE_1("Reading Ammo Config",_this);
|
||||
private ["_ammo", "_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_result"];
|
||||
_ammoConfig = configFile >> "CfgAmmo" >> _this;
|
||||
|
||||
@ -49,6 +50,42 @@ _ammoTempMuzzleVelocityShifts = getArray(_ammoConfig >> "ACE_ammoTempMuzzleVeloc
|
||||
_muzzleVelocityTable = getArray(_ammoConfig >> "ACE_muzzleVelocities");
|
||||
_barrelLengthTable = getArray(_ammoConfig >> "ACE_barrelLengths");
|
||||
|
||||
//Handle subsonic ammo that would have a huge muzzle velocity shift (when ballistic configs not explicitly defined)
|
||||
private _typicalSpeed = getNumber (_ammoConfig >> "typicalSpeed");
|
||||
if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
|
||||
private _inheritedBarrelConfig = (!(_muzzleVelocityTable isEqualTo [])) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo []};
|
||||
private _inheritedTempConfig = (!(_ammoTempMuzzleVelocityShifts isEqualTo [])) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo []};
|
||||
TRACE_3("subsonic",_typicalSpeed,_inheritedBarrelConfig,_inheritedTempConfig);
|
||||
if (_inheritedBarrelConfig || _inheritedTempConfig) then {
|
||||
private _parentConfig = inheritsFrom _ammoConfig;
|
||||
private _parentSpeed = getNumber (_parentConfig >> "typicalSpeed");
|
||||
ACE_LOGWARNING_4("Subsonic Ammo %1 (%2 m/s) missing `ACE_muzzleVelocities` or `ACE_ammoTempMuzzleVelocityShifts` configs, attempting to use parent %3 (%4m/s)",_this,_typicalSpeed,configName _parentConfig, _parentSpeed);
|
||||
if (_parentSpeed <= 0) exitWith {//Handle weird or null parent
|
||||
_muzzleVelocityTable = [];
|
||||
_ammoTempMuzzleVelocityShifts = [];
|
||||
};
|
||||
private _linearMuliplier = _typicalSpeed / _parentSpeed;
|
||||
if (_inheritedBarrelConfig) then {
|
||||
if (!((configProperties [_parentConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo [])) then {
|
||||
TRACE_2("Parent Has Defined Barrel MV",_linearMuliplier,_muzzleVelocityTable);
|
||||
{ _muzzleVelocityTable set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _muzzleVelocityTable;
|
||||
} else {
|
||||
TRACE_2("Parent DOES NOT Have Defined Barrel MV",_linearMuliplier,_muzzleVelocityTable);
|
||||
_muzzleVelocityTable = [];
|
||||
};
|
||||
};
|
||||
if (_inheritedTempConfig) then {
|
||||
if (!((configProperties [_parentConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo [])) then {
|
||||
TRACE_2("Parent Has Defined Ammo Temp Shifts",_linearMuliplier,_muzzleVelocityTable);
|
||||
{ _ammoTempMuzzleVelocityShifts set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _ammoTempMuzzleVelocityShifts;
|
||||
} else {
|
||||
TRACE_2("Parent DOES NOT Have Defined Ammo Temp Shifts",_linearMuliplier,_muzzleVelocityTable);
|
||||
_ammoTempMuzzleVelocityShifts = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_result = [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable];
|
||||
|
||||
uiNamespace setVariable [format[QGVAR(%1), _this], _result];
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Advanced_Ballistics">
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey">
|
||||
@ -35,6 +35,7 @@
|
||||
<French>Balistique avancée</French>
|
||||
<Hungarian>Fejlett ballisztika</Hungarian>
|
||||
<Russian>Продвинутая баллистика</Russian>
|
||||
<Italian>Balistica Avanzata</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
|
||||
<English>Advanced Ballistics</English>
|
||||
@ -46,6 +47,7 @@
|
||||
<French>Balistique avancée</French>
|
||||
<Hungarian>Fejlett ballisztika</Hungarian>
|
||||
<Russian>Продвинутая баллистика</Russian>
|
||||
<Italian>Balistica Avanzata</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
|
||||
<English>Enables advanced ballistics</English>
|
||||
@ -57,6 +59,7 @@
|
||||
<French>Activer la balistique avancée</French>
|
||||
<Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian>
|
||||
<Russian>Включает продвинутую баллистику</Russian>
|
||||
<Italian>Abilita Balistica Avanzata</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName">
|
||||
<English>Enabled For Snipers</English>
|
||||
@ -68,6 +71,7 @@
|
||||
<French>Activer pour les snipers</French>
|
||||
<Hungarian>Mesterlövészeknek engedélyezve</Hungarian>
|
||||
<Russian>Включена для снайперов</Russian>
|
||||
<Italian>Abilita per Tiratori Scelti</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description">
|
||||
<English>Enables advanced ballistics for non local snipers (when using high power optics)</English>
|
||||
@ -79,6 +83,7 @@
|
||||
<French>Active la balistique avancée pour les snipers non locaux (en utilisant les optiques avancées)</French>
|
||||
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor)</Hungarian>
|
||||
<Russian>Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики)</Russian>
|
||||
<Italian>Abilita Balistica Avanzata per Tiratori Scelti non locali (con ottiche ad alto potenziale)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName">
|
||||
<English>Enabled For Group Members</English>
|
||||
@ -90,6 +95,7 @@
|
||||
<French>Activer pour les membres groupés</French>
|
||||
<Hungarian>Csoporttagoknak engedélyezve</Hungarian>
|
||||
<Russian>Включена для группы</Russian>
|
||||
<Italian>Abilita per Membri del Gruppo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description">
|
||||
<English>Enables advanced ballistics for non local group members</English>
|
||||
@ -101,6 +107,7 @@
|
||||
<French>Active la balistique avancée pour les membres groupés non locaux</French>
|
||||
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak</Hungarian>
|
||||
<Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian>
|
||||
<Italian>Abilita Balistica Avanzata per Membri non locali del Gruppo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName">
|
||||
<English>Enabled For Everyone</English>
|
||||
@ -112,6 +119,7 @@
|
||||
<French>Activer pour tout le monde</French>
|
||||
<Hungarian>Mindenkinek engedélyezve</Hungarian>
|
||||
<Russian>Включена для всех</Russian>
|
||||
<Italian>Abilita per tutti</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_Description">
|
||||
<English>Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer)</English>
|
||||
@ -123,6 +131,7 @@
|
||||
<French>Active la balistique avancé pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs)</French>
|
||||
<Hungarian>Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt)</Hungarian>
|
||||
<Russian>Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере)</Russian>
|
||||
<Italian>Abilita Balistica Avanzata per tutti i giocatori non locali (abilitare questo parametro potrebbe degradare le prestazioni durante scontri intensi in multiplayer)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName">
|
||||
<English>Always Enabled For Group Members</English>
|
||||
@ -134,6 +143,7 @@
|
||||
<French>Toujours activer pour les membres groupés</French>
|
||||
<Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian>
|
||||
<Russian>Всегда включена для членов группы</Russian>
|
||||
<Italian>Sempre abilitato per Membri del Gruppo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description">
|
||||
<English>Always enables advanced ballistics when a group member fires</English>
|
||||
@ -145,6 +155,7 @@
|
||||
<French>Active tout le temps la balistique avancée quand un membre du groupe ouvre le feu</French>
|
||||
<Hungarian>Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel</Hungarian>
|
||||
<Russian>Всегда включает продвинутую баллистику когда стреляет член группы</Russian>
|
||||
<Italian>Abilita sempre Balistica Avanzata quando un Membro del Gruppo spara</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName">
|
||||
<English>Disabled In FullAuto Mode</English>
|
||||
@ -156,6 +167,7 @@
|
||||
<French>Désactiver en mode rafale libre</French>
|
||||
<Hungarian>Automata módban letiltva</Hungarian>
|
||||
<Russian>Выкл. для автомат. режима</Russian>
|
||||
<Italian>Disabilita in modalità di fuoco automatico</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description">
|
||||
<English>Disables the advanced ballistics during full auto fire</English>
|
||||
@ -167,6 +179,7 @@
|
||||
<French>Désactive la balistique avancée pour les tirs en rafale libre</French>
|
||||
<Hungarian>Letiltja a fejlett ballisztikát automata tüzelés folyamán</Hungarian>
|
||||
<Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian>
|
||||
<Italian>Disabilita Balistica Avanzata durante fuoco automatico</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
|
||||
<English>Enable Ammo Temperature Simulation</English>
|
||||
@ -178,6 +191,7 @@
|
||||
<French>Activer la simulation de la température</French>
|
||||
<Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian>
|
||||
<Russian>Симуляция температуры для боеприпасов</Russian>
|
||||
<Italian>Abilita simulazione della temperatura delle munizioni</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description">
|
||||
<English>Muzzle velocity varies with ammo temperature</English>
|
||||
@ -189,6 +203,7 @@
|
||||
<French>La température de la munition influe sur la vélocité intiale</French>
|
||||
<Hungarian>A kezdősebesség a lőszer hőmérsékletétől függően változó</Hungarian>
|
||||
<Russian>Начальная скорость пули зависит от температуры</Russian>
|
||||
<Italian>Velocità alla volata varia con la temperatura delle munizioni</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName">
|
||||
<English>Enable Barrel Length Simulation</English>
|
||||
@ -200,6 +215,7 @@
|
||||
<French>Activer la simulation de la longueur de canon</French>
|
||||
<Hungarian>Csőhossz-szimuláció engedélyezése</Hungarian>
|
||||
<Russian>Симуляция длины ствола</Russian>
|
||||
<Italian>Abilita simulazione della lunghezza della canna</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description">
|
||||
<English>Muzzle velocity varies with barrel length</English>
|
||||
@ -211,6 +227,7 @@
|
||||
<French>La longueur du canon influe sur la vélocité initale</French>
|
||||
<Hungarian>A kezdősebesség a cső hosszától függően változó</Hungarian>
|
||||
<Russian>Начальная скорость пули зависит от длины ствола</Russian>
|
||||
<Italian>Velocità alla volata varia con la lunghezza della canna</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName">
|
||||
<English>Enable Bullet Trace Effect</English>
|
||||
@ -222,6 +239,7 @@
|
||||
<French>Activer l'effet traçante</French>
|
||||
<Hungarian>Nyomkövető-effekt engedélyezése</Hungarian>
|
||||
<Russian>Следы пуль</Russian>
|
||||
<Italian>Abilita effetto di tracciatura dei proiettili</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description">
|
||||
<English>Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)</English>
|
||||
@ -233,6 +251,7 @@
|
||||
<French>Active une tracante pour les munitions de gros calibre (seulement visible en utilisant des optiques avancées)</French>
|
||||
<Hungarian>Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható)</Hungarian>
|
||||
<Russian>Включает эффект следов пуль для больших калибров (видны только через мощную оптику)</Russian>
|
||||
<Italian>Abilita effetto di tracciatura per proiettili di alto calibro (visibile solo attraverso ottiche ad alto potenziale)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
|
||||
<English>Simulation Interval</English>
|
||||
@ -244,6 +263,7 @@
|
||||
<French>Intervalle de simulation</French>
|
||||
<Hungarian>Szimuláció intervalluma</Hungarian>
|
||||
<Russian>Интервал симуляции</Russian>
|
||||
<Italian>Intervallo Simulazione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description">
|
||||
<English>Defines the interval between every calculation step</English>
|
||||
@ -255,6 +275,7 @@
|
||||
<French>Défini un intervalle de calcul entre deux simulations</French>
|
||||
<Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian>
|
||||
<Russian>Определяет временной интервал между вычислениями</Russian>
|
||||
<Italian>Definisce l'intervallo tra ogni step di calcolo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
|
||||
<English>Simulation Radius</English>
|
||||
@ -266,6 +287,7 @@
|
||||
<French>Rayon de simulation</French>
|
||||
<Hungarian>Szimuláció hatóköre</Hungarian>
|
||||
<Russian>Радиус симуляции</Russian>
|
||||
<Italian>Raggio Simulazione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_Description">
|
||||
<English>Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles</English>
|
||||
@ -277,9 +299,11 @@
|
||||
<French>Défini le rayon autour du joueur (en mètres) d'application de la balistique avancée</French>
|
||||
<Hungarian>Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak</Hungarian>
|
||||
<Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
|
||||
<Italian>Definisce il raggio attorno al giocatore (in metri) per cui la Balistica Avanzata è applicata ai proiettili</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_Description">
|
||||
<English>This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired.</English>
|
||||
<German>Dieses Modul aktiviert die Erweiterte Ballisitk. Die Flugbahn eines Geschosses wird nun von Einflüssen wie z.B Temperatur, Luftdruck, Luftfeuchtigkeit, Schwerkraft, Geschossart sowie der Waffe aus dem es gefeuert wird, beeinflusst.</German>
|
||||
<Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish>
|
||||
<Czech>Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice.</Czech>
|
||||
<Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa.</Portuguese>
|
||||
@ -287,6 +311,7 @@
|
||||
<Hungarian>Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket.</Hungarian>
|
||||
<Russian>Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел.</Russian>
|
||||
<Spanish>Este módulo permite la simulación balística avanzada - es decir, la trayectoria de los proyectiles está influenciada por variables como la temperatura del aire, la presión atmosférica, la humedad, la gravedad, el tipo de municiones y el arma desde el que fue disparada.</Spanish>
|
||||
<Italian>Questo modulo abilita la simulazione della Balistica Avanzata - cioè la traiettoria dei proiettili è influenzata da variabili come la temperatura dell'aria, pressione atmosferica, umidità, gravità, il tipo di munizione e l'arma da cui è sparata</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Attach">
|
||||
<Key ID="STR_ACE_Attach_AttachDetach">
|
||||
|
@ -30,7 +30,7 @@ private _sounds = [
|
||||
private _position = AGLToASL (_target modelToWorldVisual (_target selectionPosition "Spine3"));
|
||||
|
||||
playSound3D [
|
||||
_sounds select floor random count _sounds,
|
||||
selectRandom _sounds,
|
||||
objNull,
|
||||
false,
|
||||
_position,
|
||||
|
@ -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 -->
|
||||
@ -1602,6 +1602,7 @@
|
||||
<French>[ACE] Caisse de munitions</French>
|
||||
<Hungarian>[ACE] Lőszeres láda</Hungarian>
|
||||
<Russian>[ACE] Ящик с боеприпасами</Russian>
|
||||
<Italian>[ACE] Cassa munizioni</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -34,3 +34,10 @@ 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);
|
||||
|
@ -32,4 +32,6 @@ PREP(setSurrendered);
|
||||
PREP(vehicleCaptiveMoveIn);
|
||||
PREP(vehicleCaptiveMoveOut);
|
||||
|
||||
GVAR(captivityEnabled) = false;
|
||||
|
||||
ADDON = true;
|
||||
|
@ -22,6 +22,18 @@ TRACE_2("params",_unit,_state);
|
||||
if (!local _unit) exitWith {
|
||||
ERROR("running setHandcuffed on remote unit");
|
||||
};
|
||||
|
||||
if !(missionNamespace getVariable [QGVAR(captivityEnabled), false]) exitWith {
|
||||
// It's to soon to call this function, delay it
|
||||
if (EGVAR(common,settingsInitFinished)) then {
|
||||
// Settings are already initialized, but the small wait isn't over
|
||||
[DFUNC(setHandCuffed), _this, 0.05] call EFUNC(common,waitAndExecute);
|
||||
} else {
|
||||
// Settings are not initialized yet
|
||||
[DFUNC(setHandCuffed), _this] call EFUNC(common,runAfterSettingsInit);
|
||||
};
|
||||
};
|
||||
|
||||
if ((_unit getVariable [QGVAR(isHandcuffed), false]) isEqualTo _state) exitWith {
|
||||
ERROR("setHandcuffed: current state same as new");
|
||||
};
|
||||
|
@ -23,6 +23,17 @@ if (!local _unit) exitWith {
|
||||
ERROR("running surrender on remote unit");
|
||||
};
|
||||
|
||||
if !(missionNamespace getVariable [QGVAR(captivityEnabled), false]) exitWith {
|
||||
// It's to soon to call this function, delay it
|
||||
if (EGVAR(common,settingsInitFinished)) then {
|
||||
// Settings are already initialized, but the small wait isn't over
|
||||
[DFUNC(setSurrendered), _this, 0.05] call EFUNC(common,waitAndExecute);
|
||||
} else {
|
||||
// Settings are not initialized yet
|
||||
[DFUNC(setSurrendered), _this] call EFUNC(common,runAfterSettingsInit);
|
||||
};
|
||||
};
|
||||
|
||||
if ((_unit getVariable [QGVAR(isSurrendering), false]) isEqualTo _state) exitWith {
|
||||
ERROR("Surrender: current state same as new");
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Captives">
|
||||
<Key ID="STR_ACE_Captives_SetCaptive">
|
||||
@ -167,6 +167,7 @@
|
||||
<French>Faire capituler l'unité</French>
|
||||
<Hungarian>Egység kapitulálása</Hungarian>
|
||||
<Russian>Заставить юнита сдаться</Russian>
|
||||
<Italian>Fai arrendere l'unità</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSurrender_Description">
|
||||
<English>Sync a unit to make them surrender.<br />Source: ace_captives</English>
|
||||
@ -178,20 +179,25 @@
|
||||
<French>Synchronise une unité pour la rendre captive. <br/>Source: ace_captives</French>
|
||||
<Hungarian>Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives</Hungarian>
|
||||
<Russian>Синхронизируйте с юнитами, чтобы заставить их сдаться в плен.<br />Источник: ace_captives</Russian>
|
||||
<Italian>Sincronizza una unità per farla arrendere.<br/>Fonte: ace_captives</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleHandcuffed_DisplayName">
|
||||
<English>Make Unit Handcuffed</English>
|
||||
<German>Einheit in Handschellen legen</German>
|
||||
<Polish>Skuj jednostkę</Polish>
|
||||
<Portuguese>Fazer unidade algemada</Portuguese>
|
||||
<Russian>Связать юнита</Russian>
|
||||
<Czech>Spoutat jednotku</Czech>
|
||||
<Italian>Metti manette all'unità</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleHandcuffed_Description">
|
||||
<English>Sync a unit to make them handcuffed.<br />Source: ace_captives</English>
|
||||
<German>Synchronisiere eine Einheit um sie in Handschellen zu legen.<br />Quelle: ace_captives</German>
|
||||
<Polish>Zsynchronizuj z jednostką, aby została skuta.<br />Źródło: ace_captives</Polish>
|
||||
<Portuguese>Sincronizar uma unidade para deixá-la algemada.<br/>Source: ace_captives</Portuguese>
|
||||
<Russian>Синхронизируйте с юнитами, чтобы сделать их связанными.<br />Источник: ace_captives</Russian>
|
||||
<Czech>Synchronizovat s jednotkou, která má být v poutech.<br />Zdroj: ace_captives</Czech>
|
||||
<Italian>Sincronizza un'unità per metterle le manette.<br/>Fonte: ace_captives</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
|
||||
<English>Captives Settings</English>
|
||||
@ -203,6 +209,7 @@
|
||||
<French>Options de capitulation</French>
|
||||
<Hungarian>Fogoly-beállítások</Hungarian>
|
||||
<Russian>Настройки пленения</Russian>
|
||||
<Italian>Impostazioni Prigionieri</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_Description">
|
||||
<English>Controls settings for surrender and cable ties</English>
|
||||
@ -214,6 +221,7 @@
|
||||
<French>Contrôle les paramètres de la rédition et des Serflex</French>
|
||||
<Hungarian>Szabályozza a kapituláció és bilincselés beállításait</Hungarian>
|
||||
<Russian>Управляет настройками сдачи в плен и связывания</Russian>
|
||||
<Italian>Controlla le impostazioni per la resa e le manette</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_name">
|
||||
<English>Can handcuff own side</English>
|
||||
@ -225,6 +233,7 @@
|
||||
<French>Peut libérer sa propre faction</French>
|
||||
<Hungarian>Saját oldal megbilincselhető</Hungarian>
|
||||
<Russian>Связать союзника</Russian>
|
||||
<Italian>Puoi ammanettare unità alleate</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_description">
|
||||
<English>Can players cabletie units on their own side</English>
|
||||
@ -236,6 +245,7 @@
|
||||
<French>Les joueurs peuvent utiliser les Serflex sur leur propre camp</French>
|
||||
<Hungarian>A játékosok megkötözhetik-e a saját oldalukon lévő egységeket</Hungarian>
|
||||
<Russian>Разрешить игрокам связывать юнитов своей стороны</Russian>
|
||||
<Italian>I giocatori possono ammanettare unità alleate</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_name">
|
||||
<English>Allow surrendering</English>
|
||||
@ -247,6 +257,7 @@
|
||||
<French>Permettre la capitulation</French>
|
||||
<Hungarian>Kapituláció engedélyezése</Hungarian>
|
||||
<Russian>Сдаться в плен</Russian>
|
||||
<Italian>Permetti Resa</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_description">
|
||||
<English>Players can surrender after holstering their weapon</English>
|
||||
@ -258,6 +269,7 @@
|
||||
<French>Les joueurs peuvent se rendre après avoir rangé leur arme</French>
|
||||
<Hungarian>A játékosok megadhatják magukat a fegyverük elrakása után</Hungarian>
|
||||
<Russian>Игроки могут сдаться в плен после того, как уберут оружие</Russian>
|
||||
<Italian>I giocatori possono arrendersi dopo aver messo via le proprie armi</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_name">
|
||||
<English>Require surrendering</English>
|
||||
@ -267,6 +279,7 @@
|
||||
<Russian>Требовать пленения</Russian>
|
||||
<Spanish>Requiere rendición</Spanish>
|
||||
<Czech>Vzdávání vyžadováno</Czech>
|
||||
<Italian>Richiedi Resa</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description">
|
||||
<English>Require Players to surrender before they can be arrested</English>
|
||||
@ -276,6 +289,7 @@
|
||||
<Russian>Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать</Russian>
|
||||
<Spanish>Requiere que los Jugadores se rindan antes de arrestarlos</Spanish>
|
||||
<Czech>Vyžaduje, aby se hráč nejdříve vzdal, poté může být spoután</Czech>
|
||||
<Italian>I giocatori devono arrendersi prima che possano essere arrestati</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_SurrenderOnly">
|
||||
<English>Surrendering only</English>
|
||||
@ -285,6 +299,7 @@
|
||||
<Russian>Только сдавшийся в плен</Russian>
|
||||
<Spanish>Solo rendición</Spanish>
|
||||
<Czech>Pouze vzdávání</Czech>
|
||||
<Italian>Solo Resa</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_SurrenderOrNoWeapon">
|
||||
<English>Surrendering or No weapon</English>
|
||||
@ -294,6 +309,7 @@
|
||||
<Russian>Сдавшийся или безоружный</Russian>
|
||||
<Spanish>Rendición o desarme</Spanish>
|
||||
<Czech>Vzdávání nebo beze zbraně</Czech>
|
||||
<Italian>Resa o senza armi</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -95,4 +95,9 @@ class Extended_InitPost_EventHandlers {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class Land_PortableLight_single_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -45,7 +45,7 @@ class CfgVehicles {
|
||||
description = CSTRING(MakeLoadable_description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
};
|
||||
class setSize {
|
||||
displayName = CSTRING(makeLoadable_setSize_displayName);
|
||||
typeName = "NUMBER";
|
||||
@ -268,6 +268,13 @@ class CfgVehicles {
|
||||
GVAR(size) = 6;
|
||||
};
|
||||
|
||||
class Slingload_base_F: ReammoBox_F {};
|
||||
class CargoNet_01_base_F: Slingload_base_F { //Slingload pallets
|
||||
GVAR(size) = 6;
|
||||
};
|
||||
class Slingload_01_Base_F: Slingload_base_F { //Huron 20ft containers
|
||||
GVAR(canLoad) = 0;
|
||||
};
|
||||
// objects
|
||||
class RoadCone_F: ThingX {
|
||||
GVAR(size) = 1;
|
||||
@ -485,4 +492,10 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Lamps_base_F;
|
||||
class Land_PortableLight_single_F: Lamps_base_F {
|
||||
GVAR(size) = 1;
|
||||
GVAR(canLoad) = 1;
|
||||
};
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Cargo">
|
||||
<Key ID="STR_ACE_Cargo_loadObject">
|
||||
@ -9,6 +9,7 @@
|
||||
<Russian>Загрузить</Russian>
|
||||
<Czech>Naložit</Czech>
|
||||
<Spanish>Cargar</Spanish>
|
||||
<Italian>Carica</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_unloadObject">
|
||||
<English>Unload</English>
|
||||
@ -18,6 +19,7 @@
|
||||
<Russian>Выгрузить</Russian>
|
||||
<Czech>Vyložit</Czech>
|
||||
<Spanish>Descargar</Spanish>
|
||||
<Italian>Scarica</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_openMenu">
|
||||
<English>Cargo</English>
|
||||
@ -27,6 +29,7 @@
|
||||
<Russian>Грузовой отсек</Russian>
|
||||
<Czech>Náklad</Czech>
|
||||
<Spanish>Carga</Spanish>
|
||||
<Italian>Cargo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_cargoMenu">
|
||||
<English>Cargo Menu</English>
|
||||
@ -36,6 +39,7 @@
|
||||
<Russian>Грузовой отсек</Russian>
|
||||
<Czech>Menu nákladu</Czech>
|
||||
<Spanish>Menu de carga</Spanish>
|
||||
<Italian>Menù Cargo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_labelSpace">
|
||||
<English>Cargo space left: %1</English>
|
||||
@ -45,6 +49,7 @@
|
||||
<Russian>Осталось мест: %1</Russian>
|
||||
<Czech>Zbývající prostor: %1</Czech>
|
||||
<Spanish>Espacio de carga restante: %1</Spanish>
|
||||
<Italian>Spazio cargo rimanente: %1</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_ModuleSettings_enable">
|
||||
<English>Enable Cargo</English>
|
||||
@ -54,6 +59,7 @@
|
||||
<Russian>Включить модуль перевозки грузов</Russian>
|
||||
<Czech>Povolit náklad</Czech>
|
||||
<Spanish>Habilitar carga</Spanish>
|
||||
<Italian>Abilita Cargo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description">
|
||||
<English>Enable the load in cargo module</English>
|
||||
@ -63,6 +69,7 @@
|
||||
<Russian>Включает модуль погрузки и перевозки грузов</Russian>
|
||||
<Spanish>Habilitar la carga en el módulo de carga</Spanish>
|
||||
<Czech>Umožňuje naložit předměty do nákladového prostoru vozidla</Czech>
|
||||
<Italian>Abilita il modulo di caricamento in cargo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_SettingsModule_DisplayName">
|
||||
<English>Cargo Settings</English>
|
||||
@ -72,6 +79,7 @@
|
||||
<Russian>Перевозка грузов</Russian>
|
||||
<Czech>Nastavení nákladu</Czech>
|
||||
<Spanish>Ajustes de carga</Spanish>
|
||||
<Italian>Impostazioni Cargo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_SettingsModule_Description">
|
||||
<English>Configure the cargo module settings</English>
|
||||
@ -81,6 +89,7 @@
|
||||
<Russian>Конфигурирует настройки модуля перевозки грузов</Russian>
|
||||
<Spanish>Configure los ajustes del módulo de carga</Spanish>
|
||||
<Czech>Konfigurace nákladního modulu</Czech>
|
||||
<Italian>Configura le impostazioni del modulo cargo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_LoadedItem">
|
||||
<English>%1<br/>loaded into<br/>%2</English>
|
||||
@ -108,40 +117,56 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_LoadingItem">
|
||||
<English>Loading Cargo</English>
|
||||
<German>Belade</German>
|
||||
<Portuguese>Carregando carga</Portuguese>
|
||||
<Polish>Ładowanie cargo</Polish>
|
||||
<Czech>Nakládám</Czech>
|
||||
<Russian>Погрузка</Russian>
|
||||
<Italian>Caricando</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_UnloadingItem">
|
||||
<English>Unloading Cargo</English>
|
||||
<German>Entlade</German>
|
||||
<Portuguese>Descarregando carga</Portuguese>
|
||||
<Polish>Rozładowywanie cargo</Polish>
|
||||
<Czech>Vykládám</Czech>
|
||||
<Russian>Выгрузка</Russian>
|
||||
<Italian>Scaricando</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_LoadingFailed">
|
||||
<English>%1<br/>could not be loaded</English>
|
||||
<German>%1<br/>konnte nicht eingeladen werden</German>
|
||||
<Portuguese>%1<br/>não pode ser carregado</Portuguese>
|
||||
<Polish>%1<br/>nie mógł zostać załadowany</Polish>
|
||||
<Czech>%1<br/>nemůže být naloženo</Czech>
|
||||
<Russian>%1<br/>не может быть погружен</Russian>
|
||||
<Italian>%1<br/>non può essere caricato</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_UnloadingFailed">
|
||||
<English>%1<br/>could not be unloaded</English>
|
||||
<German>%1<br/>konnte nicht entladen werden</German>
|
||||
<Portuguese>%1<br/>não pode ser descarregado</Portuguese>
|
||||
<Polish>%1<br/>nie mógł zostać rozładowany</Polish>
|
||||
<Czech>%1<br/>nemůže být vyloženo</Czech>
|
||||
<Russian>%1<br/>не может быть выгружен</Russian>
|
||||
<Italian>%1<br/>non può essere scaricato</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_makeLoadable_displayName">
|
||||
<English>Make Object Loadable</English>
|
||||
<German>Füge Objekt zum Frachtsystem hinzu</German>
|
||||
<Polish>Ustaw jako ładowalny</Polish>
|
||||
<Italian>Rendi oggetto caricabile</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_makeLoadable_description">
|
||||
<English>Sets the synced object as loadable by the cargo system.</English>
|
||||
<German>Das synchronisierte Objekt wird dem Frachtsystem hinzugefügt und ist be- und entladbar.</German>
|
||||
<Polish>Ustawia zsynchronizowany obiekt jako możliwy do załadowania poprzez system cargo</Polish>
|
||||
<Italian>Imposta l'oggetto sincronizzato come caricabile dal sistema cargo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_makeLoadable_setSize_displayName">
|
||||
<English>Object's Size</English>
|
||||
<Polish>Rozmiar obiektu</Polish>
|
||||
<Italian>Dimensioni dell'oggetto</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
11
addons/common/CfgEden.hpp
Normal file
11
addons/common/CfgEden.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
class Cfg3DEN {
|
||||
class Object {
|
||||
class AttributeCategories {
|
||||
class ace_attributes {
|
||||
displayName = CSTRING(Options);
|
||||
collapsed = 1;
|
||||
class Attributes {};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -13,7 +13,7 @@ class CfgWeapons {
|
||||
};
|
||||
|
||||
class ACE_FakePrimaryWeapon: Rifle_Base_F {
|
||||
scope = 2;
|
||||
scope = 1;
|
||||
scopeCurator = 1;
|
||||
scopeArsenal = 1;
|
||||
displayName = "";
|
||||
|
@ -251,7 +251,7 @@ call FUNC(checkFiles);
|
||||
// Publish all settings data after all configs and modules are read
|
||||
publicVariable QGVAR(settings);
|
||||
};
|
||||
|
||||
|
||||
// Load user settings from profile
|
||||
if (hasInterface) then {
|
||||
call FUNC(loadSettingsFromProfile);
|
||||
@ -476,6 +476,8 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
||||
};
|
||||
}] call FUNC(addEventhandler);
|
||||
|
||||
["useItem", DFUNC(useItem)] call FUNC(addEventHandler);
|
||||
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Add various canInteractWith conditions
|
||||
|
@ -21,7 +21,6 @@ PREP(changeProjectileDirection);
|
||||
PREP(checkFiles);
|
||||
PREP(checkPBOs);
|
||||
PREP(claim);
|
||||
PREP(codeToLetter);
|
||||
PREP(codeToString);
|
||||
PREP(createOrthonormalReference);
|
||||
PREP(currentChannel);
|
||||
@ -102,12 +101,9 @@ PREP(hasItem);
|
||||
PREP(hasMagazine);
|
||||
PREP(headBugFix);
|
||||
PREP(hideUnit);
|
||||
PREP(inheritsFrom);
|
||||
PREP(insertionSort);
|
||||
PREP(interpolateFromArray);
|
||||
PREP(inTransitionAnim);
|
||||
PREP(inWater);
|
||||
PREP(isAlive);
|
||||
PREP(isAutoWind);
|
||||
PREP(isAwake);
|
||||
PREP(isEngineer);
|
||||
@ -116,9 +112,7 @@ PREP(isFeatureCameraActive);
|
||||
PREP(isInBuilding);
|
||||
PREP(isModLoaded);
|
||||
PREP(isPlayer);
|
||||
PREP(isTurnedOut);
|
||||
PREP(isUnderwater);
|
||||
PREP(letterToCode);
|
||||
PREP(lightIntensityFromObject);
|
||||
PREP(loadPerson);
|
||||
PREP(loadPersonLocal);
|
||||
@ -170,7 +164,6 @@ PREP(setSettingFromConfig);
|
||||
PREP(setVariableJIP);
|
||||
PREP(setVariablePublic);
|
||||
PREP(setVolume);
|
||||
PREP(sortAlphabeticallyBy);
|
||||
PREP(showHud);
|
||||
PREP(statusEffect_addType);
|
||||
PREP(statusEffect_get);
|
||||
@ -190,7 +183,6 @@ PREP(toHex);
|
||||
PREP(toNumber);
|
||||
PREP(unhideUnit);
|
||||
PREP(uniqueElements);
|
||||
PREP(uniqueElementsOnly);
|
||||
PREP(unloadPerson);
|
||||
PREP(unloadPersonLocal);
|
||||
PREP(unmuteUnit);
|
||||
@ -217,8 +209,6 @@ PREP(getWeaponMuzzles);
|
||||
PREP(getConfigTypeObject);
|
||||
PREP(getConfigGunner);
|
||||
PREP(getConfigCommander);
|
||||
PREP(getHitPoints);
|
||||
PREP(getHitPointsWithSelections);
|
||||
PREP(getSelectionsWithoutHitPoints);
|
||||
PREP(getReflectorsWithSelections);
|
||||
PREP(getLightProperties);
|
||||
@ -257,7 +247,8 @@ PREP(addCuratorUnloadEventhandler);
|
||||
PREP(fixCrateContent);
|
||||
|
||||
//ACE events global variables
|
||||
GVAR(events) = [[],[]];
|
||||
GVAR(eventsLocation) = createLocation ["ACE_HashLocation", [-10000,-10000,-10000], 0, 0];
|
||||
GVAR(eventsLocation) setText QGVAR(eventsLocation);
|
||||
|
||||
PREP(globalEvent);
|
||||
PREP(_handleNetEvent);
|
||||
|
@ -24,6 +24,7 @@ class CfgPatches {
|
||||
#include "CfgMoves.hpp"
|
||||
#include "CfgVoice.hpp"
|
||||
#include "CfgUnitInsignia.hpp"
|
||||
#include "CfgEden.hpp"
|
||||
|
||||
class ACE_Rsc_Display_Base {
|
||||
idd = -1;
|
||||
@ -79,7 +80,7 @@ class CfgUIGrids {
|
||||
displayName = "ACE Hint";
|
||||
description = "Textual in game feedback to the player.";
|
||||
preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa";
|
||||
saveToProfile[] = {0,1};
|
||||
saveToProfile[] = {0,1};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -16,12 +16,9 @@ params ["_eventType", "_event"];
|
||||
|
||||
if (_eventType == "ACEg") then {
|
||||
_event params ["_eventName", "_eventArgs"];
|
||||
GVAR(events) params ["_eventNames"];
|
||||
|
||||
private _eventIndex = _eventNames find _eventName;
|
||||
|
||||
if (_eventIndex != -1) then {
|
||||
private _events = (GVAR(events) select 1) select _eventIndex;
|
||||
private _eventFunctions = GVAR(eventsLocation) getVariable _eventName;
|
||||
if (!isNil "_eventFunctions") then {
|
||||
|
||||
#ifdef DEBUG_EVENTS
|
||||
ACE_LOGINFO_1("* Net Event %1",_eventName);
|
||||
@ -35,7 +32,7 @@ if (_eventType == "ACEg") then {
|
||||
ACE_LOGINFO_1(" ID: %1",_forEachIndex);
|
||||
#endif
|
||||
};
|
||||
} forEach _events;
|
||||
} forEach _eventFunctions;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -15,18 +15,11 @@
|
||||
|
||||
params ["_eventName", "_eventCode"];
|
||||
|
||||
GVAR(events) params ["_eventNames"];
|
||||
private _eventFunctions = GVAR(eventsLocation) getVariable _eventName;
|
||||
|
||||
private _eventFunctions = [];
|
||||
private _eventIndex = _eventNames find _eventName;
|
||||
|
||||
if (_eventIndex != -1) then {
|
||||
_eventFunctions = (GVAR(events) select 1) select _eventIndex;
|
||||
} else {
|
||||
private _eventNameCount = count _eventNames;
|
||||
|
||||
_eventNames set [_eventNameCount, _eventName];
|
||||
(GVAR(events) select 1) set [_eventNameCount, _eventFunctions];
|
||||
if (isNil "_eventFunctions") then {
|
||||
_eventFunctions = [];
|
||||
GVAR(eventsLocation) setVariable [_eventName, _eventFunctions];
|
||||
};
|
||||
|
||||
_eventFunctions pushBack _eventCode // Return event function count
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
params ["_unit", "_target", ["_exceptions", []]];
|
||||
|
||||
_exceptions = [_exceptions, {toLower _this}] call FUNC(map);
|
||||
_exceptions = _exceptions apply {toLower _x};
|
||||
|
||||
private _owner = _target getVariable [QGVAR(owner), objNull];
|
||||
|
||||
|
@ -21,8 +21,8 @@ ACE_LOGINFO_1("ACE is version %1.",_version);
|
||||
|
||||
//private _addons = activatedAddons; // broken with High-Command module, see #2134
|
||||
private _addons = "true" configClasses (configFile >> "CfgPatches");//
|
||||
_addons = [_addons, {toLower configName _this}] call FUNC(map);//
|
||||
_addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter);
|
||||
_addons = _addons apply {toLower configName _x};//
|
||||
_addons = _addons select {_x find "ace_" == 0};
|
||||
|
||||
{
|
||||
if (getText (configFile >> "CfgPatches" >> _x >> "versionStr") != _version) then {
|
||||
@ -63,7 +63,7 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter);
|
||||
///////////////
|
||||
if (isMultiplayer) then {
|
||||
// don't check optional addons
|
||||
_addons = [_addons, {getNumber (configFile >> "CfgPatches" >> _this >> "ACE_isOptional") != 1}] call FUNC(filter);
|
||||
_addons = _addons select {getNumber (configFile >> "CfgPatches" >> _x >> "ACE_isOptional") != 1};
|
||||
|
||||
if (isServer) then {
|
||||
// send servers version of ACE to all clients
|
||||
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Converts some keys to an Arma Dik Code.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Key <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Dik Code <NUMBER>
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_codeToLetter","3.5.0","-");
|
||||
|
||||
["", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] select ([2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38, 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 44, 21] find (_this select 0)) + 1
|
@ -17,6 +17,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_execPersistentFnc","3.7.0","ace_common_fnc_globalEvent");
|
||||
|
||||
GVAR(remoteFnc) = _this;
|
||||
|
||||
params ["_arguments", "_function", "_unit", "_name"];
|
||||
|
@ -20,6 +20,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_execRemoteFnc","3.7.0","ace_common_fnc_globalEvent");
|
||||
|
||||
GVAR(remoteFnc) = _this;
|
||||
|
||||
params ["_arguments", "_function", ["_unit", 2]];
|
||||
|
@ -9,15 +9,16 @@
|
||||
* Return Value:
|
||||
* Final array
|
||||
*
|
||||
* Usage:
|
||||
* [[0,1,2,3,4], {_this > 2}] call FUNC(filter) ==> [3,4]
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params [["_array", [], [[]]], ["_code", {}, [{}]]];
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_filter","3.7.0","select CODE");
|
||||
|
||||
private _result = [];
|
||||
|
||||
{
|
||||
|
@ -16,4 +16,4 @@ params ["_name", "_cfgClass"];
|
||||
|
||||
private _classes = format ["configName inheritsFrom _x == '%1'", _name] configClasses (configFile >> _cfgClass);
|
||||
|
||||
[_classes, {configName _this}] call FUNC(map) // return
|
||||
_classes apply {configName _x} // return
|
||||
|
@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Returns all hitpoints and their selections of any vehicle. Might contain duplicates if the turrets contain non unique hitpoints with different selection names.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Hitpoints <ARRAY>
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_getHitPoints","3.5.0","getAllHitPointsDamage");
|
||||
|
||||
params ["_vehicle"];
|
||||
|
||||
private _hitPointsWithSelections = getAllHitPointsDamage _vehicle;
|
||||
|
||||
// get correct format on vehicles without any hitpoints
|
||||
if (_hitPointsWithSelections isEqualTo []) then {
|
||||
_hitPointsWithSelections = [[],[],[]];
|
||||
};
|
||||
|
||||
(_hitPointsWithSelections select 0) - [""]
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Returns all hitpoints and their respective selections of any vehicle. Might contain duplicates for non unique hitpoints in turrets.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* 0: Hitpoints <ARRAY>
|
||||
* 1: Selections <ARRAY>
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_getHitPointsWithSelections","3.5.0","getAllHitPointsDamage");
|
||||
|
||||
params ["_vehicle"];
|
||||
|
||||
private _hitPointsWithSelections = getAllHitPointsDamage _vehicle;
|
||||
|
||||
// get correct format on vehicles without any hitpoints
|
||||
if (_hitPointsWithSelections isEqualTo []) then {
|
||||
_hitPointsWithSelections = [[],[],[]];
|
||||
};
|
||||
|
||||
_hitPointsWithSelections resize 2;
|
||||
|
||||
_hitPointsWithSelections
|
@ -14,4 +14,4 @@
|
||||
|
||||
params [["_vehicle", objNull, [objNull]]];
|
||||
|
||||
[crew _vehicle, {getText (configFile >> "CfgVehicles" >> typeOf _this >> "simulation") == "UAVPilot"}] call FUNC(filter) // return
|
||||
crew _vehicle select {getText (configFile >> "CfgVehicles" >> typeOf _x >> "simulation") == "UAVPilot"} // return
|
||||
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Check if unit's head is underwater
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* If unit's head is underwater <BOOL>
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_inWater","3.5.0","ace_common_fnc_isUnderwater");
|
||||
|
||||
_this call FUNC(isUnderwater)
|
@ -1,37 +0,0 @@
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
* Checks whether a given configuration name appears in the inheritance tree of a specific configuration entry.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: configEntry (CONFIG)
|
||||
* 1: configname (STING)
|
||||
*
|
||||
* Return Value:
|
||||
* BOOLEAN
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Note: Not to be confused with the inheritsFrom scripting command.
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_inheritsFrom","3.5.0","inheritsFrom ARRAY");
|
||||
|
||||
params ["_configEntry", "_configMatch"];
|
||||
|
||||
if (configName _configEntry == _configMatch) exitWith {true};
|
||||
if (configName _configEntry == ",") exitWith {false};
|
||||
|
||||
private _match = false;
|
||||
|
||||
while {configName _configEntry != ""} do {
|
||||
if (configName _configEntry == _configMatch) exitWith {
|
||||
_match = true;
|
||||
};
|
||||
|
||||
_configEntry = inheritsFrom _configEntry;
|
||||
};
|
||||
|
||||
_match
|
@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Check if the object still exists and is alive. This function exists because 'alive objNull' actually returns true.
|
||||
*
|
||||
* Argument:
|
||||
* 0: Any object <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* The object exists and is alive <BOOL>.
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_isAlive","3.5.0","alive");
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
!isNull _unit && {alive _unit} // return
|
@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Check if the unit is in a vehicle and turned out.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit, not the vehicle <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Is the unit turned out or not? Will return false if there is no option to turn out in the first place. <BOOL>
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_isTurnedOut","3.5.0","isTurnedOut");
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
isTurnedOut _unit // return
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Converts some Arma Dik Codes to a key.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Dik Code <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Key <STRING>
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_letterToCode","3.5.0","-");
|
||||
|
||||
[-1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38, 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 44, 21] select (["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] find toUpper (_this select 0)) + 1
|
@ -15,12 +15,9 @@
|
||||
|
||||
params ["_eventName", "_eventArgs"];
|
||||
|
||||
GVAR(events) params ["_eventNames", "_eventArray"];
|
||||
private _eventFunctions = GVAR(eventsLocation) getVariable _eventName;
|
||||
|
||||
private _eventIndex = _eventNames find _eventName;
|
||||
|
||||
if (_eventIndex != -1) then {
|
||||
private _events = _eventArray select _eventIndex;
|
||||
if (!isNil "_eventFunctions") then {
|
||||
|
||||
#ifdef DEBUG_EVENTS
|
||||
ACE_LOGINFO_1("* Local Event: %1",_eventName);
|
||||
@ -35,5 +32,5 @@ if (_eventIndex != -1) then {
|
||||
ACE_LOGINFO_1(" ID: %1",_forEachIndex);
|
||||
#endif
|
||||
};
|
||||
} forEach _events;
|
||||
} forEach _eventFunctions;
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Author: KoffeinFlummi, commy2
|
||||
* Applies given code to every element in an array, LIKE SOMETHING SQF SHOULD HAVE BY DEFAULT.
|
||||
* Applies given code to every element in an array, LIKE SOMETHING SQF SHOULD HAVE BY DEFAULT. <- :kappa:
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Array to be thingied.
|
||||
@ -9,15 +9,16 @@
|
||||
* Return Value:
|
||||
* Final array
|
||||
*
|
||||
* Usage:
|
||||
* [["2", "gobblecock", "25"], {parseNumber _this}] call FUNC(map) ==> [2, 0, 25]
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params [["_array", [], [[]]], ["_code", {}, [{}]]];
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_map","3.7.0","apply");
|
||||
|
||||
// copy array to not alter the original one
|
||||
_array = + _array;
|
||||
|
||||
|
@ -14,11 +14,4 @@
|
||||
|
||||
params ["_eventName"];
|
||||
|
||||
GVAR(events) params ["_eventNames", "_events"];
|
||||
|
||||
private _eventFunctions = [];
|
||||
private _eventIndex = _eventNames find _eventName;
|
||||
|
||||
if (_eventIndex != -1) then {
|
||||
_events set [_eventIndex, []];
|
||||
};
|
||||
GVAR(eventsLocation) setVariable [_eventName, nil];
|
||||
|
@ -15,12 +15,9 @@
|
||||
|
||||
params ["_eventName", "_eventCodeIndex"];
|
||||
|
||||
GVAR(events) params ["_eventNames", "_events"];
|
||||
private _eventFunctions = GVAR(eventsLocation) getVariable _eventName;
|
||||
|
||||
private _eventFunctions = [];
|
||||
private _eventIndex = _eventNames find _eventName;
|
||||
if (isNil "_eventFunctions") exitWith {TRACE_1("eventName not found",_eventName);};
|
||||
if ((_eventCodeIndex < 0) || {(count _eventFunctions) <= _eventCodeIndex}) exitWith {TRACE_2("index out of bounds",_eventName,_eventCodeIndex);};
|
||||
|
||||
if (_eventIndex != -1) then {
|
||||
_eventFunctions = _events select _eventIndex;
|
||||
_eventFunctions set [_eventCodeIndex, nil];
|
||||
};
|
||||
_eventFunctions set [_eventCodeIndex, nil];
|
||||
|
@ -19,7 +19,7 @@ params [["_unit", objNull, [objNull]], ["_magazineType", "", [""]], ["_ammoCount
|
||||
private _isRemoved = false;
|
||||
|
||||
// Check uniform
|
||||
private _magazines = [magazinesAmmoCargo uniformContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter);
|
||||
private _magazines = magazinesAmmoCargo uniformContainer _unit select {_x select 0 == _magazineType};
|
||||
private _index = _magazines find [_magazineType, _ammoCount];
|
||||
|
||||
if (_index > -1) exitWith {
|
||||
@ -39,7 +39,7 @@ if (_index > -1) exitWith {
|
||||
};
|
||||
|
||||
// Check vest
|
||||
_magazines = [magazinesAmmoCargo vestContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter);
|
||||
_magazines = magazinesAmmoCargo vestContainer _unit select {_x select 0 == _magazineType};
|
||||
_index = _magazines find [_magazineType, _ammoCount];
|
||||
|
||||
if (_index > -1) exitWith {
|
||||
@ -59,7 +59,7 @@ if (_index > -1) exitWith {
|
||||
};
|
||||
|
||||
// Check backpack
|
||||
_magazines = [magazinesAmmoCargo backpackContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter);
|
||||
_magazines = magazinesAmmoCargo backpackContainer _unit select {_x select 0 == _magazineType};
|
||||
_index = _magazines find [_magazineType, _ammoCount];
|
||||
|
||||
if (_index > -1) exitWith {
|
||||
|
@ -1,49 +0,0 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* ?
|
||||
*
|
||||
* Arguments:
|
||||
* ?
|
||||
*
|
||||
* Return Value:
|
||||
* ?
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_sortAlphabeticallyBy","3.5.0","sort");
|
||||
|
||||
params ["_array", "_elementN"];
|
||||
|
||||
private _indices = [];
|
||||
private _elements = [];
|
||||
|
||||
{
|
||||
private _theElement = toArray (_x select _elementN);
|
||||
_indices pushBack _forEachIndex;
|
||||
_elements pushBack _theElement;
|
||||
} forEach _array;
|
||||
|
||||
for "_i" from 1 to (count _elements) - 1 do {
|
||||
private _tmp = _elements select _i;
|
||||
private _tempIndex = _indices select _i;
|
||||
_j = _i;
|
||||
while {_j >= 1 && {_tmp < _elements select (_j - 1)}} do {
|
||||
_elements set [_j, _elements select (_j - 1)];
|
||||
_indices set [_j, _indices select (_j - 1)];
|
||||
_j = _j - 1;
|
||||
};
|
||||
_elements set[_j, _tmp];
|
||||
_indices set [_j, _tempIndex];
|
||||
};
|
||||
|
||||
private _returnArray = [];
|
||||
|
||||
{
|
||||
_returnArray pushBack (_array select _x);
|
||||
} forEach _indices;
|
||||
|
||||
_returnArray
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Make a copy of an array with only the unique elements.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: array <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* Copy of original array <ARRAY>
|
||||
*
|
||||
* Public: Yes
|
||||
*
|
||||
* Deprecated
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_uniqueElementsOnly","3.5.0","ace_common_fnc_uniqueElements");
|
||||
|
||||
_this call FUNC(uniqueElements)
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Common">
|
||||
<Key ID="STR_ACE_Common_ACETeam">
|
||||
@ -480,6 +480,7 @@
|
||||
<French>Vérifier les PBOs</French>
|
||||
<Hungarian>PBO-k ellenőrzése</Hungarian>
|
||||
<Russian>Проверка аддонов</Russian>
|
||||
<Italian>Controlla PBO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Description">
|
||||
<English>Check addon integrity with server and do selected action if an addon is missing.</English>
|
||||
@ -490,6 +491,7 @@
|
||||
<Portuguese>Este módulo verifica a integridade dos addons quando iniciamos a simulação</Portuguese>
|
||||
<Russian>Выполняет проверку версий аддонов ACE у подключаемых игроков</Russian>
|
||||
<French>Ce module contrôle si les PBOs de chaque joueur sont corrects</French>
|
||||
<Italian>Controlla l'integrità degli addon con il server ed esegui l'azione selezionata se un addon è mancante</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
|
||||
<English>Action</English>
|
||||
@ -501,6 +503,7 @@
|
||||
<French>Action</French>
|
||||
<Hungarian>Cselekvés</Hungarian>
|
||||
<Russian>Действие</Russian>
|
||||
<Italian>Azione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_Description">
|
||||
<English>What to do with people who do not have the right PBOs?</English>
|
||||
@ -512,6 +515,7 @@
|
||||
<French>Que faire avec les personnes n'ayant pas les bon PBOs</French>
|
||||
<Hungarian>Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k?</Hungarian>
|
||||
<Russian>Что делать с игроками с неправильными аддонами?</Russian>
|
||||
<Italian>Cosa fare con giocatori che non hanno i PBO corretti?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnOnce">
|
||||
<English>Warn once</English>
|
||||
@ -523,6 +527,7 @@
|
||||
<French>Avertir une fois</French>
|
||||
<Hungarian>Egyszeri figyelmeztetés</Hungarian>
|
||||
<Russian>Предупредить один раз</Russian>
|
||||
<Italian>Avverti una volta</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnPerm">
|
||||
<English>Warn (permanent)</English>
|
||||
@ -534,6 +539,7 @@
|
||||
<French>Avertir (permanent)</French>
|
||||
<Hungarian>Figyelmeztetés (tartós)</Hungarian>
|
||||
<Russian>Предупреждать (постоянно)</Russian>
|
||||
<Italian>Avverti (permanente)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_Kick">
|
||||
<English>Kick</English>
|
||||
@ -545,6 +551,7 @@
|
||||
<French>Ejecter</French>
|
||||
<Hungarian>Kirúgás</Hungarian>
|
||||
<Russian>Кикнуть</Russian>
|
||||
<Italian>Kick</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_DisplayName">
|
||||
<English>Check all addons</English>
|
||||
@ -556,6 +563,7 @@
|
||||
<French>Vérifier tous les addons</French>
|
||||
<Hungarian>Összes bővítmény ellenőrzése</Hungarian>
|
||||
<Russian>Проверять все аддоны</Russian>
|
||||
<Italian>Controlla tutti gli addon</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_Description">
|
||||
<English>Check all addons instead of only those of ACE?</English>
|
||||
@ -567,6 +575,7 @@
|
||||
<French>Vérifie tous les addons, même ceux qui ne sont pas liés à ACE</French>
|
||||
<Hungarian>Az összes bővítmény ellenőrzése, csak az ACE helyett?</Hungarian>
|
||||
<Russian>Проверять все аддоны, а не только ACE?</Russian>
|
||||
<Italian>Controlla tutti gli addon invece dei soli addon ACE?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_DisplayName">
|
||||
<English>Whitelist</English>
|
||||
@ -578,6 +587,7 @@
|
||||
<French>Liste blanche</French>
|
||||
<Hungarian>Fehérlista</Hungarian>
|
||||
<Russian>Вайтлист доп. аддонов</Russian>
|
||||
<Italian>Lista Bianca</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_Description">
|
||||
<English>What addons are allowed regardless?</English>
|
||||
@ -589,6 +599,7 @@
|
||||
<French>Quels addons sont tolérés</French>
|
||||
<Hungarian>Milyen bővítmények vannak feltétlenül engedélyezve?</Hungarian>
|
||||
<Russian>Какие аддоны дополнительно разрешены?</Russian>
|
||||
<Italian>Quali addon sono permessi in ogni caso?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_LSDVehicles_DisplayName">
|
||||
<English>LSD Vehicles</English>
|
||||
@ -600,6 +611,7 @@
|
||||
<French>LSD - Véhicules</French>
|
||||
<Hungarian>LSD járművek</Hungarian>
|
||||
<Russian>Транспорт под LSD</Russian>
|
||||
<Italian>Veicoli LSD</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_LSDVehicles_Description">
|
||||
<English>Adds LSD effect to synchronized vehicle</English>
|
||||
@ -611,6 +623,7 @@
|
||||
<French>Ajoute l'effet LSD aux véhicules synchronisés</French>
|
||||
<Hungarian>LSD-effekt hozzáadása a szinkronizált járművekhez</Hungarian>
|
||||
<Russian>Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам</Russian>
|
||||
<Italian>Aggiunge effetti LSD ai veicoli sincronizzati</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_toggleHandheldDevice">
|
||||
<English>Toggle Handheld Device</English>
|
||||
@ -622,6 +635,7 @@
|
||||
<French>Allumer l'ordinateur de poche</French>
|
||||
<Hungarian>Kézi eszköz kapcsolása</Hungarian>
|
||||
<Russian>Включить портативное устройство</Russian>
|
||||
<Italian>Apri dispositivo palmare</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_closeHandheldDevice">
|
||||
<English>Close Handheld Device</English>
|
||||
@ -633,6 +647,7 @@
|
||||
<French>Fermer l'ordinateur de poche</French>
|
||||
<Hungarian>Kézi eszköz bezárása</Hungarian>
|
||||
<Russian>Закрыть портативное устройство</Russian>
|
||||
<Italian>Chiudi dispositivo palmare</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_cycleHandheldDevices">
|
||||
<English>Cycle Handheld Devices</English>
|
||||
@ -644,6 +659,7 @@
|
||||
<French>Changer (cycle) d'ordinateur de poche</French>
|
||||
<Hungarian>Kézi eszköz váltása</Hungarian>
|
||||
<Russian>Следующее портативное устройство</Russian>
|
||||
<Italian>Cicla tra dispositivi palmari</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Disabled">
|
||||
<English>Disabled</English>
|
||||
@ -699,6 +715,7 @@
|
||||
<Russian>Только в транспорте</Russian>
|
||||
<Czech>Pouze vozidla</Czech>
|
||||
<Spanish>Solo vehículos</Spanish>
|
||||
<Italian>Solo veicoli</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_DoNotForce">
|
||||
<English>Do Not Force</English>
|
||||
@ -708,6 +725,7 @@
|
||||
<Czech>Nevynucovat</Czech>
|
||||
<Portuguese>Não forçar</Portuguese>
|
||||
<Russian>Не обязывать</Russian>
|
||||
<Italian>Non forzare</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment">
|
||||
<English>ACE3 Equipment</English>
|
||||
@ -716,6 +734,7 @@
|
||||
<Russian>ACE3 Снаряжение</Russian>
|
||||
<Czech>ACE3 Vybavení</Czech>
|
||||
<Spanish>ACE3 Equipo</Spanish>
|
||||
<Italian>Equipaggiamento ACE3</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryCommon">
|
||||
<English>ACE3 Common</English>
|
||||
@ -725,6 +744,7 @@
|
||||
<Russian>ACE3 Общие</Russian>
|
||||
<Spanish>ACE3 Común</Spanish>
|
||||
<Czech>ACE3 Obecné</Czech>
|
||||
<Italian>Comune ACE3</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons">
|
||||
<English>ACE3 Weapons</English>
|
||||
@ -734,6 +754,7 @@
|
||||
<Russian>ACE3 Оружие</Russian>
|
||||
<Czech>ACE3 Zbraně</Czech>
|
||||
<Spanish>ACE3 Armas</Spanish>
|
||||
<Italian>Armi ACE3</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryMovement">
|
||||
<English>ACE3 Movement</English>
|
||||
@ -743,6 +764,7 @@
|
||||
<Russian>ACE3 Перемещение</Russian>
|
||||
<Spanish>ACE3 Movimiento</Spanish>
|
||||
<Czech>ACE3 Pohyb</Czech>
|
||||
<Italian>Movimento ACE3</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment">
|
||||
<English>ACE3 Scope Adjustment</English>
|
||||
@ -752,6 +774,7 @@
|
||||
<Russian>ACE3 Прицелы</Russian>
|
||||
<Czech>ACE3 Nastavení optiky</Czech>
|
||||
<Spanish>ACE3 Ajuste de miras</Spanish>
|
||||
<Italian>Regolazione Ottiche ACE3</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles">
|
||||
<English>ACE3 Vehicles</English>
|
||||
@ -761,9 +784,13 @@
|
||||
<Russian>ACE3 Транспорт</Russian>
|
||||
<Czech>ACE3 Vozidla</Czech>
|
||||
<Spanish>ACE3 Vehículos</Spanish>
|
||||
<Italian>Veicoli ACE3</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NoRoomToUnload">
|
||||
<English>No Room to unload</English>
|
||||
<German>Kein Platz zum Entladen</German>
|
||||
<Polish>Brak miejsca na rozładunek</Polish>
|
||||
<Italian>Non c'è spazio per scaricare</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
1
addons/common/tests/script_component.hpp
Normal file
1
addons/common/tests/script_component.hpp
Normal file
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\common\script_component.hpp"
|
78
addons/common/tests/test_eventHandlers.sqf
Normal file
78
addons/common/tests/test_eventHandlers.sqf
Normal file
@ -0,0 +1,78 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
#ifndef TEST_DEFINED_AND_OP
|
||||
if (true) exitWith {};
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
LOG('Testing EventHandlers');
|
||||
|
||||
TEST_DEFINED(QFUNC(_handleNetEvent),"");
|
||||
TEST_DEFINED(QFUNC(addEventHandler),"");
|
||||
TEST_DEFINED(QFUNC(localEvent),"");
|
||||
TEST_DEFINED(QFUNC(targetEvent),"");
|
||||
TEST_DEFINED(QFUNC(globalEvent),"");
|
||||
TEST_DEFINED(QFUNC(serverEvent),"");
|
||||
TEST_DEFINED(QFUNC(removeAllEventHandlers),"");
|
||||
TEST_DEFINED(QFUNC(removeEventHandler),"");
|
||||
|
||||
private _result = ["A", {}] call ace_common_fnc_addEventHandler;
|
||||
private _expected = 0;
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Adding first A EH");
|
||||
|
||||
_result = ["A", {GVAR(test_A2) = _this}] call ace_common_fnc_addEventHandler;
|
||||
_expected = 1;
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Adding second A EH");
|
||||
|
||||
_result = ["A", {GVAR(test_A3) = _this}] call ace_common_fnc_addEventHandler;
|
||||
_expected = 2;
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Adding third A EH");
|
||||
|
||||
GVAR(test_A2) = -1;
|
||||
["A", 11] call FUNC(localEvent);
|
||||
_expected = 11;
|
||||
_result = GVAR(test_A2);
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Test Local Event");
|
||||
|
||||
//Remove 2nd EH
|
||||
["A", 1] call FUNC(removeEventHandler);
|
||||
|
||||
GVAR(test_A2) = -1;
|
||||
GVAR(test_A3) = -1;
|
||||
["A", 22] call FUNC(localEvent);
|
||||
_expected = -1;
|
||||
_result = GVAR(test_A2);
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Test 2nd (removed) EH");
|
||||
_expected = 22;
|
||||
_result = GVAR(test_A3);
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Test 3rd Event");
|
||||
|
||||
//Remove All EH:
|
||||
["A"] call FUNC(removeAllEventHandlers);
|
||||
|
||||
GVAR(test_A3) = -1;
|
||||
["A", 77] call FUNC(localEvent);
|
||||
_expected = -1;
|
||||
_result = GVAR(test_A3);
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Test 3rd is removed after removeAll");
|
||||
|
||||
//Much harder to test network events
|
||||
TRACE_2("testing network events",isServer,isDedicated);
|
||||
|
||||
["B", {GVAR(test_B) = _this}] call ace_common_fnc_addEventHandler;
|
||||
|
||||
GVAR(test_B) = -1;
|
||||
["B", 33] call FUNC(globalEvent);
|
||||
_expected = 33;
|
||||
_result = GVAR(test_B);
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Test globalEvent");
|
||||
|
||||
GVAR(test_B) = -1;
|
||||
["B", 44] call FUNC(serverEvent);
|
||||
_expected = if (isServer) then {44} else {-1};
|
||||
_result = GVAR(test_B);
|
||||
TEST_DEFINED_AND_OP(_result,==,_expected,"Test serverEvent");
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="concertina_wire">
|
||||
<Key ID="STR_ACE_CONCERTINA_WIRE">
|
||||
@ -9,7 +9,7 @@
|
||||
<Spanish>Alambre de espino</Spanish>
|
||||
<French>Fill barbelé</French>
|
||||
<Czech>Ostnatý drát</Czech>
|
||||
<Italian>Concertina wire</Italian>
|
||||
<Italian>Filo spinato di concertina</Italian>
|
||||
<Hungarian>Concertina wire</Hungarian>
|
||||
<Portuguese>Arame farpado</Portuguese>
|
||||
</Key>
|
||||
@ -21,7 +21,7 @@
|
||||
<Spanish>Bobina de alambre de espino</Spanish>
|
||||
<French>Bobine de fil barbelé</French>
|
||||
<Czech>Svitek ostnatého drátu</Czech>
|
||||
<Italian>Concertina wire coil</Italian>
|
||||
<Italian>Bobina di concertina</Italian>
|
||||
<Hungarian>Concertina wire coil</Hungarian>
|
||||
<Portuguese>Bobina de arame farpado</Portuguese>
|
||||
</Key>
|
||||
@ -33,7 +33,7 @@
|
||||
<Spanish>Desmontar alambre de espino</Spanish>
|
||||
<French>Descendre le fil barbelé</French>
|
||||
<Czech>Svinout ostnatý drát</Czech>
|
||||
<Italian>Dismount Concertina wire</Italian>
|
||||
<Italian>Smonta la concertina</Italian>
|
||||
<Hungarian>Dismount Concertina wire</Hungarian>
|
||||
<Portuguese>Desmontar arame farpado</Portuguese>
|
||||
</Key>
|
||||
@ -45,7 +45,7 @@
|
||||
<Spanish>Desplegar alambre de espino</Spanish>
|
||||
<French>Mettre en place le fil barbelé</French>
|
||||
<Czech>Rozvinout ostnatý drát</Czech>
|
||||
<Italian>Deploy Concertina wire</Italian>
|
||||
<Italian>Posa il filo di concertina</Italian>
|
||||
<Hungarian>Deploy Concertina wire</Hungarian>
|
||||
<Portuguese>Colocar arame farpado</Portuguese>
|
||||
</Key>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="DAGR">
|
||||
<Key ID="STR_ACE_DAGR_Name">
|
||||
@ -9,6 +9,7 @@
|
||||
<Russian>DAGR</Russian>
|
||||
<Portuguese>DAGR</Portuguese>
|
||||
<Czech>DAGR</Czech>
|
||||
<Italian>DAGR</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_ConfigureDAGR">
|
||||
<English>Configure DAGR</English>
|
||||
@ -18,6 +19,7 @@
|
||||
<Russian>Настроить DAGR</Russian>
|
||||
<Portuguese>Configurar DAGR</Portuguese>
|
||||
<Czech>Konfigurovat DAGR</Czech>
|
||||
<Italian>Configura DAGR</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_ToggleDAGR">
|
||||
<English>Toggle DAGR</English>
|
||||
@ -27,6 +29,7 @@
|
||||
<Russian>Вкл./выкл. DAGR</Russian>
|
||||
<Portuguese>Mostrar DAGR</Portuguese>
|
||||
<Czech>Přepnout DAGR</Czech>
|
||||
<Italian>Apri DAGR</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_DAGR_Description">
|
||||
<English>Defense Advanced GPS Receiver</English>
|
||||
@ -36,6 +39,7 @@
|
||||
<Russian>Военный многофункциональный GPS-приёмник</Russian>
|
||||
<Portuguese>Defense Advanced GPS Receiver</Portuguese>
|
||||
<Czech>Defense Advanced GPS Receiver</Czech>
|
||||
<Italian>Defense Advanced GPS Receiver</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -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">
|
||||
|
@ -27,6 +27,11 @@ class Extended_Init_EventHandlers {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class Land_PortableLight_single_F {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_Killed_EventHandlers {
|
||||
|
@ -32,7 +32,6 @@ class CfgVehicles {
|
||||
// ammo boxes
|
||||
class ThingX;
|
||||
class ReammoBox_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
GVAR(canCarry) = 0;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
@ -113,4 +112,15 @@ class CfgVehicles {
|
||||
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(carryDirection) = 180;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragDirection) = 180;
|
||||
};
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Dragging">
|
||||
<Key ID="STR_ACE_Dragging_Drag">
|
||||
@ -56,6 +56,7 @@
|
||||
<Portuguese>Levantar/Abaixar</Portuguese>
|
||||
<Russian>Поднять/Опустить</Russian>
|
||||
<Czech>Zvýšit/Snížit</Czech>
|
||||
<Italian>Alza/Abbassa</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -51,22 +51,103 @@ _explosivesList = [];
|
||||
};
|
||||
};
|
||||
} forEach _result;
|
||||
|
||||
// Add action to detonate all explosives tied to the detonator
|
||||
if (count _explosivesList > 0) then {
|
||||
_children pushBack [
|
||||
if (_detonator != "ACE_DeadManSwitch") then {
|
||||
// Add action to detonate all explosives tied to the detonator
|
||||
if (count _explosivesList > 0) then {
|
||||
_children pushBack [
|
||||
[
|
||||
"Explosive_All",
|
||||
localize LSTRING(DetonateAll),
|
||||
localize LSTRING(DetonateAll),
|
||||
getText(ConfigFile >> "CfgWeapons" >> _detonator >> "picture"),
|
||||
{(_this select 2) call FUNC(detonateExplosiveAll);},
|
||||
{true},
|
||||
{},
|
||||
[_unit,_range,_explosivesList]
|
||||
] call EFUNC(interact_menu,createAction),
|
||||
[],
|
||||
_unit
|
||||
] call EFUNC(interact_menu,createAction),
|
||||
[],
|
||||
_unit
|
||||
];
|
||||
};
|
||||
} else {
|
||||
//Add action to detonate all explosives (including the inventory explosive):
|
||||
_children pushBack [
|
||||
[
|
||||
"Explosive_All_Deadman",
|
||||
localize LSTRING(DetonateAll),
|
||||
getText(ConfigFile >> "CfgWeapons" >> _detonator >> "picture"),
|
||||
{[_player] call FUNC(onIncapacitated)},
|
||||
{true}
|
||||
] call EFUNC(interact_menu,createAction),
|
||||
[],
|
||||
_unit
|
||||
];
|
||||
|
||||
//Adds actions for the explosives you can connect to the deadman switch.
|
||||
private _connectedInventoryExplosive = _unit getVariable [QGVAR(deadmanInvExplosive), ""];
|
||||
if ((_connectedInventoryExplosive != "") && {!(_connectedInventoryExplosive in (magazines _unit))}) then {
|
||||
TRACE_1("set, but missing in inventory",_connectedInventoryExplosive);
|
||||
_unit setVariable [QGVAR(deadmanInvExplosive), "", true];
|
||||
};
|
||||
|
||||
_connectedInventoryExplosive = _unit getVariable [QGVAR(deadmanInvExplosive), ""];
|
||||
if (_connectedInventoryExplosive != "") then {
|
||||
//Add the disconect action
|
||||
private _magConfig = configFile >> "CfgMagazines" >> _connectedInventoryExplosive;
|
||||
private _name = if ((getText (_magConfig >> "displayNameShort")) != "") then {
|
||||
getText (_magConfig >> "displayNameShort")
|
||||
} else {
|
||||
getText(_magConfig >> "displayName")
|
||||
};
|
||||
private _picture = getText (_magConfig >> "picture");
|
||||
|
||||
_children pushBack [
|
||||
([
|
||||
"Deadman_disconnect",
|
||||
format ["%1 %2", localize "str_disp_disconnect", _name],
|
||||
_picture,
|
||||
{
|
||||
params ["_player"];
|
||||
TRACE_1("clear",_player);
|
||||
_player setVariable [QGVAR(deadmanInvExplosive), "", true];
|
||||
},
|
||||
{true}
|
||||
] call EFUNC(interact_menu,createAction)), [], _unit];
|
||||
|
||||
} else {
|
||||
//Add all magazines that would work with the deadman switch
|
||||
private _procressedMags = [];
|
||||
{
|
||||
private _mag = _x;
|
||||
if (!(_mag in _procressedMags)) then {
|
||||
_procressedMags pushBack _x;
|
||||
private _magConfig = configFile >> "CfgMagazines" >> _mag;
|
||||
private _supportedTriggers = getArray (_magConfig >> "ACE_Triggers" >> "SupportedTriggers");
|
||||
if (({_x == "DeadmanSwitch"} count _supportedTriggers) == 1) then { //case insensitive search
|
||||
private _name = if ((getText (_magConfig >> "displayNameShort")) != "") then {
|
||||
getText (_magConfig >> "displayNameShort")
|
||||
} else {
|
||||
getText(_magConfig >> "displayName")
|
||||
};
|
||||
private _picture = getText (_magConfig >> "picture");
|
||||
|
||||
_children pushBack [
|
||||
([
|
||||
format ["Deadman_exp_%1", _mag],
|
||||
format [localize LSTRING(connectInventoryExplosiveToDeadman), _name],
|
||||
_picture,
|
||||
{
|
||||
params ["_player", "", "_mag"];
|
||||
TRACE_2("set new",_player,_mag);
|
||||
_player setVariable [QGVAR(deadmanInvExplosive), _mag, true];
|
||||
},
|
||||
{(_this select 2) in (magazines _player)},
|
||||
{},
|
||||
(_mag)
|
||||
] call EFUNC(interact_menu,createAction)), [], _unit];
|
||||
};
|
||||
};
|
||||
} forEach (magazines _unit);
|
||||
};
|
||||
};
|
||||
|
||||
_children
|
||||
|
@ -19,16 +19,7 @@
|
||||
params ["_unit"];
|
||||
TRACE_1("params",_unit);
|
||||
|
||||
private ["_items", "_result", "_config"];
|
||||
|
||||
_items = (items _unit);
|
||||
_result = [];
|
||||
|
||||
{
|
||||
_config = ConfigFile >> "CfgWeapons" >> _x;
|
||||
if (getNumber (_config >> QGVAR(Detonator)) == 1 && {!(_x in _result)}) then {
|
||||
_result pushBack _x;
|
||||
};
|
||||
} forEach _items;
|
||||
private _result = (items _unit) select {getNumber (ConfigFile >> "CfgWeapons" >> _x >> QGVAR(Detonator)) == 1};
|
||||
_result = _result arrayIntersect _result;
|
||||
|
||||
_result
|
||||
|
@ -25,3 +25,24 @@ _deadman = [_unit, "DeadManSwitch"] call FUNC(getPlacedExplosives);
|
||||
{
|
||||
[_unit, -1, _x, true] call FUNC(detonateExplosive);
|
||||
} forEach _deadman;
|
||||
|
||||
//Handle deadman connected to explosive in inventory
|
||||
private _connectedInventoryExplosive = _unit getVariable [QGVAR(deadmanInvExplosive), ""];
|
||||
if (_connectedInventoryExplosive != "") then {
|
||||
if (!(_connectedInventoryExplosive in (magazines _unit))) exitWith {};
|
||||
|
||||
//Remove mag and reset variable
|
||||
_unit removeMagazine _connectedInventoryExplosive;
|
||||
_unit setVariable [QGVAR(deadmanInvExplosive), "", true];
|
||||
|
||||
private _ammo = getText (configFile >> "CfgMagazines" >> _connectedInventoryExplosive >> "ammo");
|
||||
TRACE_2("deadman inventory",_connectedInventoryExplosive,_ammo);
|
||||
private _magazineTrigger = configFile >> "CfgMagazines" >> _connectedInventoryExplosive >> "ACE_Triggers" >> "DeadmanSwitch";
|
||||
if (isText (_magazineTrigger >> "ammo")) then {
|
||||
_ammo = getText (_magazineTrigger >> "ammo");
|
||||
};
|
||||
|
||||
private _explosive = createVehicle [_ammo, (getPos _unit), [], 0, "NONE"];
|
||||
_explosive setPosASL (getPosASL _unit);
|
||||
[_unit, -1, [_explosive, -1]] call FUNC(detonateExplosive); //Explode, ignoring range, with a random 0-1 second delay
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Explosives">
|
||||
<Key ID="STR_ACE_Explosives_Menu">
|
||||
@ -43,6 +43,8 @@
|
||||
<Spanish>Detonar Todo</Spanish>
|
||||
<Russian>Подрыв всех</Russian>
|
||||
<Czech>Odpálit VŠE</Czech>
|
||||
<Polish>Detonuj wszystkie</Polish>
|
||||
<Italian>Detona Tutti</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DetonateCode">
|
||||
<English>Explosive code: %1</English>
|
||||
@ -87,6 +89,7 @@
|
||||
<Russian>Заблокировано</Russian>
|
||||
<Czech>Blokováno</Czech>
|
||||
<Polish>Zablokowany</Polish>
|
||||
<Italian>Bloccato</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_CancelAction">
|
||||
<English>Cancel</English>
|
||||
@ -542,6 +545,7 @@
|
||||
<French>Module explosifs</French>
|
||||
<Hungarian>Robbanóanyag-rendszer</Hungarian>
|
||||
<Russian>Взрывные устройства</Russian>
|
||||
<Italian>Sistema Esplosivi</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_RequireSpecialist_DisplayName">
|
||||
<English>Require specialists?</English>
|
||||
@ -553,6 +557,7 @@
|
||||
<French>Requiert un spécialiste?</French>
|
||||
<Hungarian>Specialisták igénylése?</Hungarian>
|
||||
<Russian>Требуется специалист?</Russian>
|
||||
<Italian>Richiedi specialisti?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_RequireSpecialist_Description">
|
||||
<English>Require explosive specialists to disable explosives? Default: No</English>
|
||||
@ -564,6 +569,7 @@
|
||||
<French>Le désarmoçage d'explosif requiert un spécialiste? Défaut: non</French>
|
||||
<Hungarian>Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem</Hungarian>
|
||||
<Russian>Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет</Russian>
|
||||
<Italian>Richiedi specialisti esplosivi per disabilitare esplosivi? Default: No</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PunishNonSpecialists_DisplayName">
|
||||
<English>Punish non-specialists?</English>
|
||||
@ -575,6 +581,7 @@
|
||||
<French>Punir les non-spécialistes?</French>
|
||||
<Hungarian>Nem-specialisták büntetése?</Hungarian>
|
||||
<Russian>Штраф не-специалистам?</Russian>
|
||||
<Italian>Punisci non-specialisti?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PunishNonSpecialists_Description">
|
||||
<English>Increase the time it takes to complete actions for non-specialists? Default: Yes</English>
|
||||
@ -586,6 +593,7 @@
|
||||
<French>Augmenter le temps nécessaire au désarmoçage pour les non-spécialistes? Défaut: oui</French>
|
||||
<Hungarian>Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen</Hungarian>
|
||||
<Russian>Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет</Russian>
|
||||
<Italian>Aumenta il tempo richiesto per completare azioni per non-specialisti? Default: Si</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_ExplodeOnDefuse_DisplayName">
|
||||
<English>Explode on defusal?</English>
|
||||
@ -597,6 +605,7 @@
|
||||
<French>Explosion si désamorçage?</French>
|
||||
<Hungarian>Robbanás hatástalanításkor?</Hungarian>
|
||||
<Russian>Взрыв при разминир.?</Russian>
|
||||
<Italian>Fai esplodere quando disarmato?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_ExplodeOnDefuse_Description">
|
||||
<English>Enable certain explosives to explode on defusal? Default: Yes</English>
|
||||
@ -608,6 +617,7 @@
|
||||
<French>Permet à certains explosifs d'exploser au désamorçage? Défaut: oui</French>
|
||||
<Hungarian>Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen</Hungarian>
|
||||
<Russian>Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да</Russian>
|
||||
<Italian>Abilita alcuni esplosivi per esplosione al disarmo? Default: Si</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_Description">
|
||||
<English>This module adjusts the settings related to explosives.</English>
|
||||
@ -619,28 +629,31 @@
|
||||
<Hungarian>Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza.</Hungarian>
|
||||
<Russian>Этот модуль управляет настройками, связанными со взрывными устройствами</Russian>
|
||||
<Spanish>Este módulo ajusta las configuraciones relacionadas con explosivos.</Spanish>
|
||||
<Italian>Questo modulo cambia le impostazioni relative agli esplosivi</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_SLAMBottomAttack_DisplayName">
|
||||
<English>M6 SLAM Mine (Bottom Attack)</English>
|
||||
<!-- <Czech>Mina M6 SLAM</Czech> -->
|
||||
<!-- <French>Mine M6 SLAM</French> -->
|
||||
<!-- <German>M6-SLAM-Mine</German> -->
|
||||
<!-- <Italian>Mina M6 SLAM</Italian> -->
|
||||
<!-- <Polish>Mina M6 SLAM</Polish> -->
|
||||
<!-- <Portuguese>Mina SLAM M6</Portuguese> -->
|
||||
<!-- <Russian>ПТ-мина M6 SLAM</Russian> -->
|
||||
<!-- <Spanish>Mina M6 SLAM</Spanish> -->
|
||||
<English>M6 SLAM Mine (Bottom Attack)</English>
|
||||
<!-- <Czech>Mina M6 SLAM</Czech> -->
|
||||
<!-- <French>Mine M6 SLAM</French> -->
|
||||
<!-- <German>M6-SLAM-Mine</German> -->
|
||||
<!-- <Italian>Mina M6 SLAM</Italian> -->
|
||||
<!-- <Polish>Mina M6 SLAM</Polish> -->
|
||||
<!-- <Portuguese>Mina SLAM M6</Portuguese> -->
|
||||
<!-- <Russian>ПТ-мина M6 SLAM</Russian> -->
|
||||
<!-- <Spanish>Mina M6 SLAM</Spanish> -->
|
||||
<Polish>Mina M6 SLAM (atak od dołu)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_SLAMSideAttack_DisplayName">
|
||||
<English>M6 SLAM Mine (Side Attack)</English>
|
||||
<!-- <Czech>Mina M6 SLAM</Czech> -->
|
||||
<!-- <French>Mine M6 SLAM</French> -->
|
||||
<!-- <German>M6-SLAM-Mine</German> -->
|
||||
<!-- <Italian>Mina M6 SLAM</Italian> -->
|
||||
<!-- <Polish>Mina M6 SLAM</Polish> -->
|
||||
<!-- <Portuguese>Mina SLAM M6</Portuguese> -->
|
||||
<!-- <Russian>ПТ-мина M6 SLAM</Russian> -->
|
||||
<!-- <Spanish>Mina M6 SLAM</Spanish> -->
|
||||
<English>M6 SLAM Mine (Side Attack)</English>
|
||||
<!-- <Czech>Mina M6 SLAM</Czech> -->
|
||||
<!-- <French>Mine M6 SLAM</French> -->
|
||||
<!-- <German>M6-SLAM-Mine</German> -->
|
||||
<!-- <Italian>Mina M6 SLAM</Italian> -->
|
||||
<!-- <Polish>Mina M6 SLAM</Polish> -->
|
||||
<!-- <Portuguese>Mina SLAM M6</Portuguese> -->
|
||||
<!-- <Russian>ПТ-мина M6 SLAM</Russian> -->
|
||||
<!-- <Spanish>Mina M6 SLAM</Spanish> -->
|
||||
<Polish>Mina M6 SLAM (atak od boku)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDUrbanBig_Range_DisplayName">
|
||||
<English>Large IED (Urban, Pressure Plate)</English>
|
||||
@ -652,6 +665,7 @@
|
||||
<!-- <Portuguese>AEI grande (urbano)</Portuguese> -->
|
||||
<!-- <Russian>Большое СВУ (городское)</Russian> -->
|
||||
<!-- <Spanish>IED grande (Urbano)</Spanish> -->
|
||||
<Polish>Duży IED (miejski, płyta naciskowa)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDLandBig_Range_DisplayName">
|
||||
<English>Large IED (Dug-in, Pressure Plate)</English>
|
||||
@ -663,6 +677,7 @@
|
||||
<!-- <Portuguese>AEI grande (entrincheirado)</Portuguese> -->
|
||||
<!-- <Russian>Большое СВУ (зарытое)</Russian> -->
|
||||
<!-- <Spanish>IED grande (Enterrado)</Spanish> -->
|
||||
<Polish>Duży IED (zakopany, płyta naciskowa)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDUrbanSmall_Range_DisplayName">
|
||||
<English>Small IED (Urban, Pressure Plate)</English>
|
||||
@ -674,6 +689,7 @@
|
||||
<!-- <Portuguese>AEI pequeno (urbano)</Portuguese> -->
|
||||
<!-- <Russian>Малое СВУ (городское)</Russian> -->
|
||||
<!-- <Spanish>IED pequeño (Urbano)</Spanish> -->
|
||||
<Polish>Mały IED (miejski, płyta naciskowa)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDLandSmall_Range_DisplayName">
|
||||
<English>Small IED (Dug-in, Pressure Plate)</English>
|
||||
@ -685,6 +701,19 @@
|
||||
<!-- <Portuguese>AEI pequeno (entrincheirado)</Portuguese> -->
|
||||
<!-- <Russian>Малое СВУ (зарытое)</Russian> -->
|
||||
<!-- <Spanish>IED pequeño (Enterrado)</Spanish> -->
|
||||
<Polish>Mały IED (zakopany, płyta naciskowa)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_connectInventoryExplosiveToDeadman">
|
||||
<English>Connect to %1</English>
|
||||
<Spanish>Conectar a %1</Spanish>
|
||||
<Russian>Подключиться к %1</Russian>
|
||||
<German>Verbinde mit %1</German>
|
||||
<Czech>Připojit k %1</Czech>
|
||||
<Polish>Podłącz do %1</Polish>
|
||||
<French>Connecter %1</French>
|
||||
<Hungarian>Csatlakozás %1</Hungarian>
|
||||
<Italian>Collega a %1</Italian>
|
||||
<Portuguese>Conectar à %1</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -43,10 +43,7 @@ private _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret
|
||||
} count _muzzles;
|
||||
|
||||
// Fix the `in` operator being case sensitive and BI fucking up the spelling of their own classnames
|
||||
private _weaponMagazinesCheck = [];
|
||||
{
|
||||
_weaponMagazinesCheck pushBack (toLower _x);
|
||||
} forEach _weaponMagazines;
|
||||
private _weaponMagazinesCheck = _weaponMagazines apply {toLower _x};
|
||||
|
||||
// Another BIS fix: ShotBullet simulation uses weapon initSpeed, others ignore it
|
||||
if (toLower _magazine in _weaponMagazinesCheck && {_bulletSimulation == "shotBullet"}) exitWith {
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="FCS">
|
||||
<Key ID="STR_ACE_FCS_LaseTarget">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="finger">
|
||||
<Key ID="STR_ACE_finger_indicatorForSelf_name">
|
||||
@ -10,6 +10,7 @@
|
||||
<Portuguese>Mostrar indicador para si mesmo</Portuguese>
|
||||
<Spanish>Mostrar el indicador de señalado a uno mismo</Spanish>
|
||||
<Czech>Zobrazit ukázání směru pro sebe</Czech>
|
||||
<Italian>Mostra puntatore per te stesso</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_indicatorForSelf_description">
|
||||
<English>Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator</English>
|
||||
@ -20,6 +21,7 @@
|
||||
<Portuguese>Renderizar o indicador para o jogador que está apontando. Esta opção não afeta se os outros jogadores verão ou não o indicador</Portuguese>
|
||||
<Spanish>Muestra el indicador para el jugador que apunta. Esta opción no afecta si los otros jugadores verían el indicador</Spanish>
|
||||
<Czech>Zobrazit infikátor, když ukážete prstem. Tato volba nemá vliv, zda ostatní hráči uvidí indikátor nebo ne.</Czech>
|
||||
<Italian>Mostra puntatore per il giocatore indicato. Questa opzione non influisce la possibilità che gli altri giocatori vedano il puntatore</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_indicatorColor_name">
|
||||
<English>Pointing indicator</English>
|
||||
@ -30,6 +32,7 @@
|
||||
<Portuguese>Indicador de apontamento</Portuguese>
|
||||
<Spanish>Indicador de señalado</Spanish>
|
||||
<Czech>Ukazování směru</Czech>
|
||||
<Italian>Indicatore di puntamento</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_indicatorColor_description">
|
||||
<English>Color of the pointing indicator circle</English>
|
||||
@ -40,6 +43,7 @@
|
||||
<Portuguese>Cor do círculo de indicação</Portuguese>
|
||||
<Spanish>Color del círculo indicador que señala</Spanish>
|
||||
<Czech>Barva kruhu pro ukázání směru</Czech>
|
||||
<Italian>Colore del cerchio dell'indicatore di puntamento</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_keyComb">
|
||||
<English>Action "point a finger at"</English>
|
||||
@ -50,6 +54,7 @@
|
||||
<Portuguese>Ação "Apontar um dedo para"</Portuguese>
|
||||
<Spanish>Acción "apuntar con el dedo a"</Spanish>
|
||||
<Czech>Akce "ukázat prstem na"</Czech>
|
||||
<Italian>Azione "punta il dito a"</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_keyComb_description">
|
||||
<English>Points, and shows a virtual marker of where you are looking to nearby units. Can be held down.</English>
|
||||
@ -60,6 +65,7 @@
|
||||
<Russian>Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать.</Russian>
|
||||
<Spanish>Señala y muestra un marcador virtual donde ustás apuntando para las unidades cercanas. Puede ser mantenido.</Spanish>
|
||||
<Czech>Ukazuje virtuální značku kruhu ve směru, kterým se díváte pro všechny blízké jednotky.</Czech>
|
||||
<Italian>Punta e mostra un marker virtuale di dove stai guardando alle unità vicine. Può essere tenuto premuto.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_moduleSettings_displayName">
|
||||
<English>Pointing Settings</English>
|
||||
@ -70,6 +76,7 @@
|
||||
<Russian>Настройки указания пальцем</Russian>
|
||||
<Spanish>Ajustes de señalado</Spanish>
|
||||
<Czech>Nastavení ukázování směru</Czech>
|
||||
<Italian>Impostazioni puntamento</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_enabled_displayName">
|
||||
<English>Pointing Enabled</English>
|
||||
@ -80,6 +87,7 @@
|
||||
<Russian>Указание пальцем включено</Russian>
|
||||
<Spanish>Señalado habilitado</Spanish>
|
||||
<Czech>Ukazování povoleno</Czech>
|
||||
<Italian>Puntamento abilitato</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_maxRange_displayName">
|
||||
<English>Pointing Max Range</English>
|
||||
@ -90,6 +98,7 @@
|
||||
<Russian>Макс. дальность</Russian>
|
||||
<Spanish>Distancia máxima de señalado</Spanish>
|
||||
<Czech>Maximální dosah pro ukazování směru</Czech>
|
||||
<Italian>Raggio massimo puntamento</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_maxRange_description">
|
||||
<English>Max range between players to show the pointing indicator [default: 4 meters]</English>
|
||||
@ -100,6 +109,7 @@
|
||||
<Russian>Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра]</Russian>
|
||||
<Spanish>Distancia máxima entre los jugadores para mostrar el indicador que señala [por defecto: 4 metros]</Spanish>
|
||||
<Czech>Maximální vzdálenost mezi hráči pro ukázání směru [výchozí: 4 metry]</Czech>
|
||||
<Italian>Distanza massima tra giocatori per mostrare l'indicatore di puntamento [default: 4 metri]</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,53 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Flashlights">
|
||||
<Key ID="STR_ACE_Flashlights_MX991_DisplayName">
|
||||
<English>Fulton MX-991</English>
|
||||
<German>Fulton MX-991</German>
|
||||
<Polish>Fulton MX-991</Polish>
|
||||
<Portuguese>Fulton MX-991</Portuguese>
|
||||
<Russian>Fulton MX-991</Russian>
|
||||
<Czech>Fulton MX-991</Czech>
|
||||
<Spanish>Fulton MX-991</Spanish>
|
||||
<Italian>Fulton MX-991</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_MX991_Description">
|
||||
<English>Flashlight with red filter. For use on map.</English>
|
||||
<German>Taschenlampe mit rotem Filter zum Kartenlesen.</German>
|
||||
<Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish>
|
||||
<Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese>
|
||||
<Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian>
|
||||
<Czech>Svítilna s červeným filtrem. Pro nahlédnutí do mapy.</Czech>
|
||||
<Spanish>Linterna con filtro rojo. Para su uso en el mapa.</Spanish>
|
||||
<Italian>Torcia con filtro rosso. Da usare in mappa.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_XL50_DisplayName">
|
||||
<English>Maglite XL50</English>
|
||||
<German>Maglite XL50</German>
|
||||
<Polish>Maglite XL50</Polish>
|
||||
<Portuguese>Maglite XL50</Portuguese>
|
||||
<Russian>Maglite XL50</Russian>
|
||||
<Czech>Maglite XL50</Czech>
|
||||
<Spanish>Maglite XL50</Spanish>
|
||||
<Italian>Maglite XL50</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_XL50_Description">
|
||||
<English>White mini flashlight. For use on map.</English>
|
||||
<German>Mini-Taschenlampe mit weißem Licht zum Kartenlesen.</German>
|
||||
<Polish>Mini latarka. Światło białe. Używana do podświetlania mapy.</Polish>
|
||||
<Portuguese>Mini lanterna branca. Para uso no mapa.</Portuguese>
|
||||
<Russian>Небольшой фонарик белого света. Для использования на карте.</Russian>
|
||||
<Czech>Bílá mini svítilna. Pro nahlédnutí do mapy.</Czech>
|
||||
<Spanish>Mini linterna blanca. Para su uso en el mapa.</Spanish>
|
||||
<Italian>Mini-torcia bianca. Da usare in mappa.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_KSF1_DisplayName">
|
||||
<English>KSF-1</English>
|
||||
<German>KSF-1</German>
|
||||
<Polish>KSF-1</Polish>
|
||||
<Portuguese>KSF-1</Portuguese>
|
||||
<Russian>KSF-1</Russian>
|
||||
<Czech>KSF-1</Czech>
|
||||
<Spanish>KSF-1</Spanish>
|
||||
<Italian>KSF-1</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_KSF1_Description">
|
||||
<English>Flashlight with red filter. For use on map.</English>
|
||||
<German>Tachenlampe mit rotem Filter zum Kartenlesen.</German>
|
||||
<Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish>
|
||||
<Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese>
|
||||
<Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian>
|
||||
<Czech>Svítilna s červeným filtrem. Pro nahlédnutí do mapy.</Czech>
|
||||
<Spanish>Linterna con filtro rojo. Para su uso en el mapa.</Spanish>
|
||||
<Italian>Torcia con filtro rosso. Da usare in mappa.</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="FlashSuppressors">
|
||||
<Key ID="STR_ACE_FlashSuppressors_muzzle_mzls_H">
|
||||
|
@ -1,30 +1,42 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(Enabled) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
displayName = CSTRING(EnableFrag);
|
||||
description = CSTRING(EnableFrag_Desc);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(SpallEnabled) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
displayName = CSTRING(EnableSpall);
|
||||
description = CSTRING(EnableSpall_Desc);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(ReflectionsEnabled) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
displayName = CSTRING(EnableReflections);
|
||||
description = CSTRING(EnableReflections_Desc);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(maxTrack) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
displayName = CSTRING(MaxTrack);
|
||||
description = CSTRING(MaxTrack_Desc);
|
||||
typeName = "SCALAR";
|
||||
value = 500;
|
||||
};
|
||||
class GVAR(MaxTrackPerFrame) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
displayName = CSTRING(MaxTrackPerFrame);
|
||||
description = CSTRING(MaxTrackPerFrame_Desc);
|
||||
typeName = "SCALAR";
|
||||
value = 50;
|
||||
};
|
||||
|
||||
|
||||
class GVAR(EnableDebugTrace) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
displayName = CSTRING(EnableDebugTrace);
|
||||
description = CSTRING(EnableDebugTrace_Desc);
|
||||
typeName = "BOOL";
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
private ["_split", "_radi", "_params", "_pos", "_explosiveInfo", "_los", "_nlos", "_zIndex", "_depth", "_indirectHitRange", "_indirectHit", "_distanceCount", "_lastPos", "_test", "_vec", "_testPos", "_buckets", "_excludes", "_bucketIndex", "_bucketPos", "_bucketList", "_c", "_index", "_blist", "_avgX", "_avgY", "_avgZ", "_bpos", "_distance", "_hitFactor", "_hit", "_range", "_refExp", "_rand", "_i", "_x", "_res", "_forEachIndex", "_explosions", "_can", "_dirvec", "_zAng"];
|
||||
|
||||
BEGIN_COUNTER(fnc_findReflections);
|
||||
_params = _this select 0;
|
||||
_pos = _params select 0;
|
||||
_explosiveInfo = _params select 1;
|
||||
@ -124,3 +125,4 @@ if(_zIndex < 5) then {
|
||||
[DFUNC(doExplosions), 0, [_explosions, 0]] call CBA_fnc_addPerFrameHandler;
|
||||
[(_this select 1)] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
END_COUNTER(fnc_findReflections);
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
if(!isServer) exitWith { };
|
||||
|
||||
BEGIN_COUNTER(frago);
|
||||
// _startTime = ACE_diagTime;
|
||||
|
||||
private ["_startTime", "_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed", "_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom", "_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_boundingBox", "_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir", "_currentCount", "_count", "_vecVar", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount", "_sectorSize", "_sectorOffset", "_i", "_randomDir", "_endTime", "_target"];
|
||||
@ -108,7 +109,9 @@ _fragArcs set[360, 0];
|
||||
#endif
|
||||
_doRandom = true;
|
||||
if(_isArmed && (count _objects) > 0) then {
|
||||
[_lastPos, _shellType] call FUNC(doReflections);
|
||||
if (GVAR(ReflectionsEnabled)) then {
|
||||
[_lastPos, _shellType] call FUNC(doReflections);
|
||||
};
|
||||
{
|
||||
//if(random(1) > 0.5) then {
|
||||
_target = _x;
|
||||
@ -212,3 +215,4 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
// ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
|
||||
// #endif
|
||||
// _endTime = ACE_diagTime;
|
||||
END_COUNTER(frago);
|
@ -1,6 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Frag">
|
||||
<Key ID="STR_ACE_Frag_Module_DisplayName">
|
||||
<English>Fragmentation Simulation</English>
|
||||
<Polish>Symulacja fragmentacji</Polish>
|
||||
<Spanish>Simulación de fragmentación</Spanish>
|
||||
<German>Splittersimulation</German>
|
||||
<Czech>Simulace fragmentů</Czech>
|
||||
<Portuguese>Simulação de fragmentação</Portuguese>
|
||||
<French>Simulation de la fragmentation</French>
|
||||
<Hungarian>Repesz-szimuláció</Hungarian>
|
||||
<Russian>Симуляция осколков</Russian>
|
||||
<Italian>Simulazione Frammentazione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableFrag">
|
||||
<English>Fragmentation Simulation</English>
|
||||
<Polish>Symulacja fragmentacji</Polish>
|
||||
@ -11,6 +23,7 @@
|
||||
<French>Simulation de la fragmentation</French>
|
||||
<Hungarian>Repesz-szimuláció</Hungarian>
|
||||
<Russian>Симуляция осколков</Russian>
|
||||
<Italian>Simulazione Frammentazione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableFrag_Desc">
|
||||
<English>Enable the ACE Fragmentation Simulation</English>
|
||||
@ -22,6 +35,7 @@
|
||||
<French>Active la simulation ACE de la fragmentation</French>
|
||||
<Hungarian>Az ACE repesz-szimuláció engedélyezése</Hungarian>
|
||||
<Russian>Включить симуляцию осколков ACE</Russian>
|
||||
<Italian>Abilita la Simulazione Frammentazione di ACE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableSpall">
|
||||
<English>Spalling Simulation</English>
|
||||
@ -33,6 +47,7 @@
|
||||
<French>Simulation d'éclat</French>
|
||||
<Hungarian>Pattogzás-szimuláció</Hungarian>
|
||||
<Russian>Симуляция обломков</Russian>
|
||||
<Italian>Simulazione Spalling</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableSpall_Desc">
|
||||
<English>Enable the ACE Spalling Simulation</English>
|
||||
@ -44,6 +59,17 @@
|
||||
<French>Active la simulation d'éclat ACE</French>
|
||||
<Hungarian>Az ACE pattogzás-szimuláció engedélyezése</Hungarian>
|
||||
<Russian>Включить симуляцию обломков ACE</Russian>
|
||||
<Italian>Abilita la Simulazione Spalling di ACE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableReflections">
|
||||
<English>Explosion Reflections Simulation</English>
|
||||
<Polish>Symulacja odbicia eksplozji</Polish>
|
||||
<Italian>Simulazione Riflessi Esplosioni</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableReflections_Desc">
|
||||
<English>Enable the ACE Explosion Reflection Simulation</English>
|
||||
<Polish>Włącz symulację odbicia eksplozji ACE</Polish>
|
||||
<Italian>Abilita la Simulazione Riflessi Esplosioni di ACE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrack">
|
||||
<English>Maximum Projectiles Tracked</English>
|
||||
@ -55,6 +81,7 @@
|
||||
<French>Nombre maximum de projectile suivis</French>
|
||||
<Hungarian>Maximum követett repeszek</Hungarian>
|
||||
<Russian>Макс. количество отслеживаемых снарядов</Russian>
|
||||
<Italian>Numero massimo di Proiettili Tracciati</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrack_Desc">
|
||||
<English>This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once)</English>
|
||||
@ -66,6 +93,7 @@
|
||||
<French>Cette option controle le nombre maximum de projectile et d'éclat résultant de la fragmentation que le système suivra à un moment T. Si plus de projectiles sont générés, ils ne seront pas pris en compte. Baisser cette option si vous ne voulez pas de baisse de FPS en cas d'un nombre important de projectiles (>200 éclats en même temps)</French>
|
||||
<Hungarian>Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre)</Hungarian>
|
||||
<Russian>Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов)</Russian>
|
||||
<Italian>Questo parametro controlla il numero massimo di proiettili che la frammentazione e il sistema di spalling tracciano in ogni momento. Se più proiettili sono sparati, non verranno tracciati. Abbassa questo parametro se non vuoi cali di FPS in scenari con molti proiettili (>200 proiettili in aria contemporaneamente)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrackPerFrame">
|
||||
<English>Maximum Projectiles Per Frame</English>
|
||||
@ -77,6 +105,7 @@
|
||||
<French>Nombre maximal de projectile par image</French>
|
||||
<Hungarian>Maximum repesz/képkocka</Hungarian>
|
||||
<Russian>Макс. количество снарядов за кадр</Russian>
|
||||
<Italian>Numero massimo di proiettili per Frame</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrackPerFrame_Desc">
|
||||
<English>The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further.</English>
|
||||
@ -88,6 +117,7 @@
|
||||
<French>Le nombre d'éclat à calculer dans chaque images. Ceci permet de diffuser l'impact sur les FPS dans de multiples images, le limitant d'autant plus.</French>
|
||||
<Hungarian>A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát.</Hungarian>
|
||||
<Russian>Число обрабатываемых осколков за кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS.</Russian>
|
||||
<Italian>Il numero di calcoli per tracciamento di spalling ad ogni frame. Questo aiuta a distribuire l'impatto del tracciamento dello spalling su più frame, limitando ancora di più l'impatto.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableDebugTrace">
|
||||
<English>(SP Only) Frag/Spall Debug Tracing</English>
|
||||
@ -99,6 +129,7 @@
|
||||
<French>(SP uniquement) Fragmentation/éclat debug</French>
|
||||
<Hungarian>(Csak SP) Repesz/Pattogzás debug követés</Hungarian>
|
||||
<Russian>(Только для одиночной игры) Отслеживаение/отладка осколков</Russian>
|
||||
<Italian>(Solo SP) Debug Tracciamento Frag/Spall</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableDebugTrace_Desc">
|
||||
<English>(SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only.</English>
|
||||
@ -110,6 +141,7 @@
|
||||
<French>(SP seulement) Requiert un redémarrage de mission ou de l'éditeur. Active les traceurs visuels de fragmentation et d'éclats en mode solo seulement</French>
|
||||
<Hungarian>(Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt.</Hungarian>
|
||||
<Russian>(Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры.</Russian>
|
||||
<Italian>(Solo SP) Richiede un restart editor/missione. Abilita il tracciamento visivo di schegge da frammentazione/spalling in modalità Giocatore Singolo.</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Gestures">
|
||||
<Key ID="STR_ACE_Gestures_Name">
|
||||
@ -113,11 +113,12 @@
|
||||
<Key ID="STR_ACE_Gestures_stop">
|
||||
<English>Stop</English>
|
||||
<French>Stop</French>
|
||||
<German>Stop</German>
|
||||
<German>Halt</German>
|
||||
<Polish>Stop</Polish>
|
||||
<Russian>Стоп</Russian>
|
||||
<Portuguese>Parar</Portuguese>
|
||||
<Czech>Stop</Czech>
|
||||
<Italian>Stop</Italian>
|
||||
</Key>
|
||||
<!-- COVER -->
|
||||
<Key ID="STR_ACE_Gestures_cover">
|
||||
@ -141,6 +142,7 @@
|
||||
<Russian>Собраться</Russian>
|
||||
<Portuguese>Reagrupar</Portuguese>
|
||||
<Czech>Přeskupit</Czech>
|
||||
<Italian>Raggruppare</Italian>
|
||||
</Key>
|
||||
<!-- FORWARD -->
|
||||
<Key ID="STR_ACE_Gestures_forward">
|
||||
@ -151,15 +153,18 @@
|
||||
<Russian>Вперед</Russian>
|
||||
<Portuguese>Mover em frente</Portuguese>
|
||||
<Czech>Kupředu</Czech>
|
||||
<Italian>Muovere avanti</Italian>
|
||||
</Key>
|
||||
<!-- ENGAGE -->
|
||||
<Key ID="STR_ACE_Gestures_engage">
|
||||
<English>Engage</English>
|
||||
<German>Angriff</German>
|
||||
<French>Engager</French>
|
||||
<Polish>Atak</Polish>
|
||||
<Russian>Открыть огонь</Russian>
|
||||
<Portuguese>Engajar</Portuguese>
|
||||
<Czech>Útok</Czech>
|
||||
<Italian>Ingaggiare</Italian>
|
||||
</Key>
|
||||
<!-- POINT -->
|
||||
<Key ID="STR_ACE_Gestures_point">
|
||||
@ -170,6 +175,7 @@
|
||||
<Russian>Показать направление</Russian>
|
||||
<Portuguese>Ponta</Portuguese>
|
||||
<Czech>Ukázat</Czech>
|
||||
<Italian>Puntare</Italian>
|
||||
</Key>
|
||||
<!-- HOLD -->
|
||||
<Key ID="STR_ACE_Gestures_hold">
|
||||
@ -180,6 +186,7 @@
|
||||
<Russian>Ждать</Russian>
|
||||
<Portuguese>Esperar</Portuguese>
|
||||
<Czech>Čekej</Czech>
|
||||
<Italian>Mantenere</Italian>
|
||||
</Key>
|
||||
<!-- WARNING -->
|
||||
<Key ID="STR_ACE_Gestures_warning">
|
||||
@ -190,6 +197,7 @@
|
||||
<Russian>Внимание</Russian>
|
||||
<Portuguese>Aviso</Portuguese>
|
||||
<Czech>Pozor</Czech>
|
||||
<Italian>Attenzione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_Hi">
|
||||
<English>Hi</English>
|
||||
@ -217,19 +225,31 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_showOnInteractionMenu_displayName">
|
||||
<English>Show Gestures On Interaction Menu</English>
|
||||
<German>Zeige Gesten im Interaktionsmenü</German>
|
||||
<Czech>Zobrazit posunky v interakčním menu</Czech>
|
||||
<Polish>Pokaż gesty w menu interakcji</Polish>
|
||||
<Italian>Mostra Gesti su Menù Interazione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_showOnInteractionMenu_description">
|
||||
<English>Show gestures on the self interaction menu, or just use keybinds, or disable completely</English>
|
||||
<German>Zeige Gesten im Selbst-Interkationsmenü, lege sie auf Schnelltasten, oder deaktiviere sie vollständig.</German>
|
||||
<Czech>Zobrazit posunky pro vlastní interakční menu, nebo prostě použít klávesové zkratky, nebo to zakázat úplně</Czech>
|
||||
<Polish>Pokaż listę gestów w menu własnej interakcji, użyj tylko skrótów na klawiaturze lub wyłącz całkowicie</Polish>
|
||||
<Italian>Mostra Gesti nel Menù Interazione Personale, o usa solamente Hotkey, o disabilita completamente</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_justKeybinds">
|
||||
<English>Just Keybinds</English>
|
||||
<German>Nur Schnelltasten</German>
|
||||
<Czech>Pouze klávesové zkratky</Czech>
|
||||
<Polish>Tylko skróty klaw.</Polish>
|
||||
<Italian>Solo Hotkey</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_keysAndInteractionMenu">
|
||||
<English>Keybinds + Interaction Menu</English>
|
||||
<German>Schnelltasten+ Interaktionsmenü</German>
|
||||
<Czech>Klávesové zkratky + interakční menu</Czech>
|
||||
<Polish>Skróty klaw. + menu interakcji</Polish>
|
||||
<Italian>Hotkey + Menù Interazione</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Goggles">
|
||||
<Key ID="STR_ACE_Goggles_ShowInThirdPerson">
|
||||
|
@ -18,105 +18,124 @@
|
||||
params ["_grenadePosASL"];
|
||||
TRACE_1("params",_grenadePosASL);
|
||||
|
||||
private _affected = (ASLtoAGL _grenadePosASL) nearEntities ["CAManBase", 20];
|
||||
// Create flash to illuminate environment
|
||||
if (hasInterface) then {
|
||||
private _light = "#lightpoint" createVehicleLocal ASLtoAGL _grenadePosASL;
|
||||
_light setPosASL _grenadePosASL;
|
||||
|
||||
_light setLightBrightness 20;
|
||||
_light setLightAmbient [1,1,1];
|
||||
_light setLightColor [1,1,1];
|
||||
_light setLightDayLight true;
|
||||
|
||||
// Reduce the light after 0.1 seconds
|
||||
[{
|
||||
params ["_light"];
|
||||
_light setLightBrightness 5;
|
||||
// Delete the light after 0.2 more seconds
|
||||
[{
|
||||
params ["_light"];
|
||||
deleteVehicle _light;
|
||||
}, [_light], 0.2] call EFUNC(common,waitAndExecute);
|
||||
}, [_light], 0.1] call EFUNC(common,waitAndExecute);
|
||||
};
|
||||
|
||||
// Affect local AI
|
||||
// @todo: Affect units in static weapons, turned out, etc
|
||||
private _affected = (ASLtoAGL _grenadePosASL) nearEntities ["CAManBase", 20];
|
||||
_affected = _affected - [ACE_player];
|
||||
{
|
||||
if (local _x && {alive _x}) then {
|
||||
|
||||
private _strength = 1 - (((getPosASL _x) vectorDistance _grenadePosASL) min 15) / 15;
|
||||
private _strength = 1 - (((getPosASL _x) vectorDistance _grenadePosASL) min 20) / 20;
|
||||
|
||||
TRACE_3("FlashBangEffect Start",_x,((getPosASL _x) vectorDistance _grenadePosASL),_strength);
|
||||
|
||||
if (_x != ACE_player) then {
|
||||
//must be AI
|
||||
[_x, true] call EFUNC(common,disableAI);
|
||||
[_x, true] call EFUNC(common,disableAI);
|
||||
|
||||
_x setSkill (skill _x / 50);
|
||||
_x setSkill (skill _x / 50);
|
||||
|
||||
[{
|
||||
params ["_unit"];
|
||||
|
||||
//Make sure we don't enable AI for unconscious units
|
||||
if !(_unit getVariable ["ace_isUnconscious", false]) then {
|
||||
[_unit, false] call EFUNC(common,disableAI);
|
||||
};
|
||||
|
||||
_unit setSkill (skill _unit * 50);
|
||||
}, [_x], 7 * _strength] call EFUNC(common,waitAndExecute);
|
||||
} else {
|
||||
//Do effects for player
|
||||
// is there line of sight to the grenade?
|
||||
private _eyePos = eyePos ACE_player; //PositionASL
|
||||
_posGrenade set [2, (_posGrenade select 2) + 0.2]; // compensate for grenade glitching into ground
|
||||
|
||||
//Check for line of sight (check 4 points in case grenade is stuck in an object or underground)
|
||||
private _losCount = {
|
||||
!lineIntersects [_grenadePosASL vectorAdd _x, _eyePos, ACE_player]
|
||||
} count [[0,0,0], [0,0,0.2], [0.1, 0.1, 0.1], [-0.1, -0.1, 0.1]];
|
||||
|
||||
TRACE_1("Line of sight count (out of 4)",_losCount);
|
||||
if (_losCount <= 1) then {
|
||||
_strength = _strength / 10;
|
||||
};
|
||||
|
||||
// add ace_hearing ear ringing sound effect
|
||||
if (isClass (configFile >> "CfgPatches" >> "ACE_Hearing") && {_strength > 0}) then {
|
||||
[_x, 20 * _strength] call EFUNC(hearing,earRinging);
|
||||
};
|
||||
|
||||
// account for people looking away by slightly
|
||||
// reducing the effect for visual effects.
|
||||
private _eyeDir = (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]);
|
||||
private _dirToUnitVector = _eyePos vectorFromTo _posGrenade;
|
||||
private _angleDiff = acos (_eyeDir vectorDotProduct _dirToUnitVector);
|
||||
|
||||
// from 0-45deg, full effect
|
||||
if (_angleDiff > 45) then {
|
||||
_strength = _strength - _strength * ((_angleDiff - 45) / 120);
|
||||
};
|
||||
|
||||
TRACE_1("Final strength for player",_strength);
|
||||
|
||||
// add ace_medical pain effect:
|
||||
if (isClass (configFile >> "CfgPatches" >> "ACE_Medical") && {_strength > 0.1}) then {
|
||||
[ACE_player, _strength / 2] call EFUNC(medical,adjustPainLevel);
|
||||
};
|
||||
|
||||
// create flash to illuminate environment
|
||||
private _light = "#lightpoint" createVehicleLocal _grenadePosASL;
|
||||
_light setPosASL _grenadePosASL;
|
||||
|
||||
_light setLightBrightness 200;
|
||||
_light setLightAmbient [1,1,1];
|
||||
_light setLightColor [1,1,1];
|
||||
_light setLightDayLight true;
|
||||
|
||||
// delete the light after 0.1 seconds
|
||||
[{
|
||||
params ["_light"];
|
||||
deleteVehicle _light;
|
||||
}, [_light], 0.1] call EFUNC(common,waitAndExecute);
|
||||
|
||||
// blind player
|
||||
if (hasInterface && {_strength > 0.1}) then {
|
||||
GVAR(flashbangPPEffectCC) ppEffectEnable true;
|
||||
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,(0.8 + _strength) min 1,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
|
||||
GVAR(flashbangPPEffectCC) ppEffectCommit 0.01;
|
||||
|
||||
//PARTIALRECOVERY - start decreasing effect over time
|
||||
[{
|
||||
params ["_strength"];
|
||||
|
||||
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
|
||||
GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength);
|
||||
}, [_strength], 7 * _strength] call EFUNC(common,waitAndExecute);
|
||||
|
||||
//FULLRECOVERY - end effect
|
||||
[{
|
||||
GVAR(flashbangPPEffectCC) ppEffectEnable false;
|
||||
}, [], 17 * _strength] call EFUNC(common,waitAndExecute);
|
||||
};
|
||||
if (_strength > 0.2) then {
|
||||
_x setVectorDir ((getPosASL _x) vectorDiff _grenadePosASL);
|
||||
};
|
||||
|
||||
[{
|
||||
params ["_unit"];
|
||||
|
||||
//Make sure we don't enable AI for unconscious units
|
||||
if !(_unit getVariable ["ace_isUnconscious", false]) then {
|
||||
[_unit, false] call EFUNC(common,disableAI);
|
||||
};
|
||||
|
||||
_unit setSkill (skill _unit * 50);
|
||||
}, [_x], 7 * _strength] call EFUNC(common,waitAndExecute);
|
||||
};
|
||||
true
|
||||
} count _affected;
|
||||
|
||||
// Affect local player, independently of distance
|
||||
if (hasInterface && {!isNull ACE_player} && {alive ACE_player}) then {
|
||||
// Do effects for player
|
||||
// is there line of sight to the grenade?
|
||||
private _eyePos = eyePos ACE_player; //PositionASL
|
||||
_grenadePosASL set [2, (_grenadePosASL select 2) + 0.2]; // compensate for grenade glitching into ground
|
||||
|
||||
private _strength = 1 - ((_eyePos vectorDistance _grenadePosASL) min 20) / 20;
|
||||
|
||||
// Check for line of sight (check 4 points in case grenade is stuck in an object or underground)
|
||||
private _losCoefficient = 1;
|
||||
private _losCount = {
|
||||
!lineIntersects [_grenadePosASL vectorAdd _x, _eyePos, ACE_player]
|
||||
} count [[0,0,0], [0,0,0.2], [0.1, 0.1, 0.1], [-0.1, -0.1, 0.1]];
|
||||
TRACE_1("Line of sight count (out of 4)",_losCount);
|
||||
if (_losCount <= 1) then {
|
||||
_losCoefficient = 0.1;
|
||||
};
|
||||
_strength = _strength * _losCoefficient;
|
||||
|
||||
// Add ace_hearing ear ringing sound effect
|
||||
if (isClass (configFile >> "CfgPatches" >> "ACE_Hearing") && {_strength > 0}) then {
|
||||
[40 * _strength] call EFUNC(hearing,earRinging);
|
||||
};
|
||||
|
||||
// add ace_medical pain effect:
|
||||
if (isClass (configFile >> "CfgPatches" >> "ACE_Medical") && {_strength > 0.1}) then {
|
||||
[ACE_player, _strength / 2] call EFUNC(medical,adjustPainLevel);
|
||||
};
|
||||
|
||||
// Effect on vision has a wider range, with a higher falloff
|
||||
_strength = 1 - (((_eyePos vectorDistance _grenadePosASL) min 25) / 25) ^ 0.4;
|
||||
_strength = _strength * _losCoefficient;
|
||||
// Account for people looking away by slightly reducing the effect for visual effects.
|
||||
private _eyeDir = ((AGLtoASL positionCameraToWorld [0,0,1]) vectorDiff (AGLtoASL positionCameraToWorld [0,0,0]));
|
||||
private _dirToUnitVector = _eyePos vectorFromTo _grenadePosASL;
|
||||
private _angleDiff = acos (_eyeDir vectorDotProduct _dirToUnitVector);
|
||||
TRACE_2("",_angleDiff,((1 - (_angleDiff - 45) / (120 - 45)) max 0));
|
||||
// from 0-45deg, full effect
|
||||
if (_angleDiff > 45) then {
|
||||
_strength = _strength * ((1 - (_angleDiff - 45) / (120 - 45)) max 0);
|
||||
};
|
||||
|
||||
// Blind player
|
||||
if (_strength > 0.1) then {
|
||||
GVAR(flashbangPPEffectCC) ppEffectEnable true;
|
||||
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,(0.8 + _strength) min 1,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
|
||||
GVAR(flashbangPPEffectCC) ppEffectCommit 0.01;
|
||||
|
||||
//PARTIALRECOVERY - start decreasing effect over time
|
||||
[{
|
||||
params ["_strength"];
|
||||
|
||||
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
|
||||
GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength);
|
||||
}, [_strength], 7 * _strength] call EFUNC(common,waitAndExecute);
|
||||
|
||||
//FULLRECOVERY - end effect
|
||||
[{
|
||||
GVAR(flashbangPPEffectCC) ppEffectEnable false;
|
||||
}, [], 17 * _strength] call EFUNC(common,waitAndExecute);
|
||||
};
|
||||
|
||||
if (_strength > 0.2) then {
|
||||
ACE_player setVectorDir (_eyePos vectorDiff _grenadePosASL);
|
||||
};
|
||||
};
|
||||
true
|
||||
|
@ -21,8 +21,5 @@ TRACE_1("params",_projectile);
|
||||
if (alive _projectile) then {
|
||||
playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400];
|
||||
|
||||
private _affected = _projectile nearEntities ["CAManBase", 20];
|
||||
TRACE_2("people hit",_affected,getPosASL _projectile);
|
||||
|
||||
["flashbangExplosion", _affected, [getPosASL _projectile]] call EFUNC(common,targetEvent);
|
||||
["flashbangExplosion", [getPosASL _projectile]] call EFUNC(common,globalEvent);
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Grenades">
|
||||
<Key ID="STR_ACE_Grenades_SwitchGrenadeMode">
|
||||
|
@ -1,33 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Headless">
|
||||
<Key ID="STR_ACE_Headless_Module">
|
||||
<English>Headless</English>
|
||||
<German>Headless</German>
|
||||
<Polish>Headless</Polish>
|
||||
<Italian>Headless</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Headless_ModuleDesc">
|
||||
<English>This module allows you to setup automatic transferring of AI to Headless Clients. (Default: No)</English>
|
||||
<German>Dieses Modul erlaubt es dir, die KI automatisch auf einen Headless Client zu transferieren. (Standard: Nein) </German>
|
||||
<Polish>Moduł ten pozwala ustawić automatyczne przenoszenie AI do Headless Clientów. (Domyślnie: Nie)</Polish>
|
||||
<Italian>Questo modulo ti consente di impostare il trasferimento automatico di IA all'Headless Client (Default: No)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Headless_EnabledDesc">
|
||||
<English>Enables transferring of AI to Headless Clients.</English>
|
||||
<German>Aktiviert denTransfer der KI auf Headless Clients.</German>
|
||||
<German>Aktiviert den Transfer der KI auf Headless Clients.</German>
|
||||
<Polish>Aktywuje przenoszenie AI do Headless Clientów</Polish>
|
||||
<Italian>Abilita trasferimento di IA a Headless Client</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Headless_Delay">
|
||||
<English>Delay</English>
|
||||
<German>Verzögerung</German>
|
||||
<Polish>Opóźnienie</Polish>
|
||||
<Italian>Ritardo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Headless_DelayDesc">
|
||||
<English>Minimal delay between transfers, in seconds. (Default: 15)</English>
|
||||
<German>Minimale Verzögerung zwischen Transfers in Sekunden. (Standard: 15)</German>
|
||||
<Polish>Minimalne opóźnienie w sekundach pomiędzy transferami. (Domyślnie: 15)</Polish>
|
||||
<Italian>Ritardo minimo tra trasferimenti, in secondi. (Default: 15)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Headless_Log">
|
||||
<English>Log</English>
|
||||
<German>Protokolldatei anlegen</German>
|
||||
<Polish>Dziennik</Polish>
|
||||
<Italian>Log</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Headless_LogDesc">
|
||||
<English>Log transfer statistics and Headless Client (dis)connections to RPT. (Default: No)</English>
|
||||
<German>Zeichnet Transferstatistiken, Verbindungen und Verbindungsabbrüche in einer RPT-Datei auf. (Standard: Nein)</German>
|
||||
<Polish>Zapisuj statystyki transferów oraz status Headless Clienta do RPT. (Domyślnie: Nie)</Polish>
|
||||
<Italian>Logga statistiche trasferimenti e (dis)connessioni di Headless Client su RPT. (Default: No)</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -1,31 +1,38 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(EnableCombatDeafness) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(CombatDeafness_DisplayName);
|
||||
description = CSTRING(CombatDeafness_Description);
|
||||
displayName = CSTRING(EnableCombatDeafness_DisplayName);
|
||||
description = CSTRING(EnableCombatDeafness_Description);
|
||||
};
|
||||
class GVAR(EarplugsVolume) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 0.5;
|
||||
typeName = "SCALAR";
|
||||
};
|
||||
class GVAR(UnconsciousnessVolume) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 0.4;
|
||||
typeName = "SCALAR";
|
||||
};
|
||||
class GVAR(DisableEarRinging) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
displayName = CSTRING(DisableEarRinging);
|
||||
displayName = CSTRING(DisableEarRinging_DisplayName);
|
||||
description = CSTRING(DisableEarRinging_Description);
|
||||
};
|
||||
class GVAR(enabledForZeusUnits) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(enabledForZeusUnits_DisplayName);
|
||||
description = CSTRING(enabledForZeusUnits_Description);
|
||||
};
|
||||
class GVAR(autoAddEarplugsToUnits) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(autoAddEarplugsToUnits_DisplayName);
|
||||
|
@ -11,9 +11,21 @@ class CfgSounds {
|
||||
sound[] = {QUOTE(PATHTOF(sounds\ACE_earringing_heavy.wav)),8,1.7};
|
||||
titles[] = {};
|
||||
};
|
||||
class ACE_Combat_Deafness {
|
||||
class ACE_Combat_Deafness_Heavy {
|
||||
sound[] = {QUOTE(PATHTOF(sounds\deafness.ogg)),8,1};
|
||||
titles[] = {};
|
||||
};
|
||||
class ACE_Combat_Deafness_Medium {
|
||||
sound[] = {QUOTE(PATHTOF(sounds\deafness.ogg)),3,1};
|
||||
titles[] = {};
|
||||
};
|
||||
class ACE_Combat_Deafness_Heavy_NoRing {
|
||||
sound[] = {QUOTE(PATHTOF(sounds\deafness_noring.ogg)),8,1};
|
||||
titles[] = {};
|
||||
};
|
||||
class ACE_Combat_Deafness_Medium_NoRing {
|
||||
sound[] = {QUOTE(PATHTOF(sounds\deafness_noring.ogg)),3,1};
|
||||
titles[] = {};
|
||||
};
|
||||
class ACE_Ring_Backblast {
|
||||
sound[] = {QUOTE(PATHTOF(sounds\backblast_ring.ogg)),1,1};
|
||||
|
@ -103,13 +103,14 @@ class CfgVehicles {
|
||||
icon = PATHTOF(UI\Icon_Module_Hearing_ca.paa);
|
||||
class Arguments {
|
||||
class EnableCombatDeafness {
|
||||
displayName = CSTRING(CombatDeafness_DisplayName);
|
||||
description = CSTRING(CombatDeafness_Description);
|
||||
displayName = CSTRING(EnableCombatDeafness_DisplayName);
|
||||
description = CSTRING(EnableCombatDeafness_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class DisableEarRinging {
|
||||
displayName = CSTRING(DisableEarRinging);
|
||||
displayName = CSTRING(DisableEarRinging_DisplayName);
|
||||
description = CSTRING(DisableEarRinging_Description);
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class DoNotForce {
|
||||
|
@ -2,38 +2,40 @@
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(cacheAmmoLoudness) = createLocation ["ACE_HashLocation", [-10000,-10000,-10000], 0, 0];
|
||||
GVAR(cacheAmmoLoudness) setText QGVAR(cacheAmmoLoudness);
|
||||
GVAR(cacheAmmoLoudness) = call CBA_fnc_createNamespace;
|
||||
|
||||
GVAR(deafnessDV) = 0;
|
||||
GVAR(deafnessPrior) = 0;
|
||||
GVAR(volume) = 1;
|
||||
GVAR(playerVehAttenuation) = 1;
|
||||
|
||||
GVAR(beep) = false;
|
||||
GVAR(beep2) = false;
|
||||
GVAR(time2) = 0;
|
||||
GVAR(time3) = 0;
|
||||
GVAR(time4) = 0;
|
||||
GVAR(damageCoefficent) = 1;
|
||||
GVAR(volumeAttenuation) = 1;
|
||||
|
||||
["SettingsInitialized", {
|
||||
TRACE_1("settingInit",GVAR(EnableCombatDeafness));
|
||||
// Only run PFEH and install event handlers if combat deafness is enabled
|
||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
||||
|
||||
// Update hearing protection now:
|
||||
[] call FUNC(updateHearingProtection);
|
||||
|
||||
// Spawn volume updating process
|
||||
[FUNC(updateVolume), 1, [false]] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
// Update veh attunation when player veh changes
|
||||
["playerVehicleChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call EFUNC(common,addEventHandler);
|
||||
["playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call EFUNC(common,addEventHandler);
|
||||
|
||||
// Reset deafness on respawn (or remote control player switch)
|
||||
["playerChanged", {
|
||||
GVAR(deafnessDV) = 0;
|
||||
GVAR(deafnessPrior) = 0;
|
||||
ACE_player setVariable [QGVAR(deaf), false];
|
||||
GVAR(time3) = 0;
|
||||
[] call FUNC(updateHearingProtection);
|
||||
}] call EFUNC(common,addEventhandler);
|
||||
|
||||
// Update protection on possible helmet change
|
||||
["playerInventoryChanged", {[] call FUNC(updateHearingProtection);}] call EFUNC(common,addEventhandler);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
//Update veh attunation when player veh changes
|
||||
["playerVehicleChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call EFUNC(common,addEventHandler);
|
||||
["playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call EFUNC(common,addEventHandler);
|
||||
|
||||
//Reset deafness on respawn (or remote control player switch)
|
||||
["playerChanged", {
|
||||
GVAR(deafnessDV) = 0;
|
||||
GVAR(deafnessPrior) = 0;
|
||||
ACE_player setVariable [QGVAR(deaf), false];
|
||||
|
||||
GVAR(beep) = false;
|
||||
GVAR(beep2) = false;
|
||||
GVAR(time2) = 0;
|
||||
GVAR(time3) = 0;
|
||||
GVAR(time4) = 0;
|
||||
}] call EFUNC(common,addEventhandler);
|
||||
|
@ -11,6 +11,7 @@ PREP(hasEarPlugsIn);
|
||||
PREP(moduleHearing);
|
||||
PREP(putInEarPlugs);
|
||||
PREP(removeEarPlugs);
|
||||
PREP(updateHearingProtection);
|
||||
PREP(updatePlayerVehAttenuation);
|
||||
PREP(updateVolume);
|
||||
|
||||
|
@ -1,39 +1,25 @@
|
||||
/*
|
||||
* Author: KoffeinFlummi, commy2, Rocko, Rommel, Ruthberg
|
||||
* Ear ringing PFH
|
||||
* Handle new sound souce near ace_player and apply hearing damage
|
||||
*
|
||||
* Arguments:
|
||||
* 0: unit <OBJECT>
|
||||
* 1: strength of ear ringing (Number between 0 and 1) <NUMBER>
|
||||
* 0: strength of ear ringing <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_unit, _strength] call ace_hearing_fnc_earRinging
|
||||
* [_strength] call ace_hearing_fnc_earRinging
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
params ["_unit", "_strength"];
|
||||
params ["_strength"];
|
||||
|
||||
if (_unit != ACE_player) exitWith {};
|
||||
if (_strength < 0.05) exitWith {};
|
||||
if (!isNull curatorCamera) exitWith {};
|
||||
if ((!GVAR(enabledForZeusUnits)) && {player != ACE_player}) exitWith {};
|
||||
|
||||
if (_unit getVariable ["ACE_hasEarPlugsin", false]) then {
|
||||
_strength = _strength / 4;
|
||||
};
|
||||
TRACE_2("adding",_strength * GVAR(damageCoefficent),GVAR(deafnessDV));
|
||||
|
||||
//headgear hearing protection
|
||||
if(headgear _unit != "") then {
|
||||
private _protection = (getNumber (configFile >> "CfgWeapons" >> (headgear _unit) >> QGVAR(protection))) min 1;
|
||||
if(_protection > 0) then {
|
||||
_strength = _strength * (1 - _protection);
|
||||
};
|
||||
};
|
||||
|
||||
TRACE_2("adding",_strength,GVAR(deafnessDV));
|
||||
|
||||
GVAR(deafnessDV) = GVAR(deafnessDV) + _strength;
|
||||
GVAR(deafnessDV) = GVAR(deafnessDV) + (_strength * GVAR(damageCoefficent));
|
||||
|
@ -16,8 +16,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
//Only run if deafness or ear ringing is enabled:
|
||||
if ((!GVAR(enableCombatDeafness)) && GVAR(DisableEarRinging)) exitWith {};
|
||||
// Only run if combat deafness is enabled
|
||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
||||
|
||||
params ["_unit", "_damage"];
|
||||
|
||||
@ -29,4 +29,5 @@ private ["_strength"];
|
||||
_strength = (0 max _damage) * 30;
|
||||
if (_strength < 0.01) exitWith {};
|
||||
|
||||
[{_this call FUNC(earRinging)}, [_unit, _strength], 0.2] call EFUNC(common,waitAndExecute);
|
||||
// Call inmediately, as it will get pick up later anyway by the update thread
|
||||
[_strength] call FUNC(earRinging);
|
||||
|
@ -22,8 +22,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
//Only run if deafness or ear ringing is enabled:
|
||||
if ((!GVAR(enableCombatDeafness)) && GVAR(DisableEarRinging)) exitWith {};
|
||||
// Only run if combat deafness is enabled
|
||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
||||
|
||||
params ["_object", "_firer", "_distance", "_weapon", "", "", "_ammo"];
|
||||
|
||||
@ -97,4 +97,5 @@ TRACE_1("result",_strength);
|
||||
|
||||
if (_strength < 0.01) exitWith {};
|
||||
|
||||
[{_this call FUNC(earRinging)}, [ACE_player, _strength], 0.2] call EFUNC(common,waitAndExecute);
|
||||
// Call inmediately, as it will get pick up later anyway by the update thread
|
||||
[_strength] call FUNC(earRinging);
|
||||
|
@ -12,13 +12,12 @@
|
||||
|
||||
params ["_logic"];
|
||||
|
||||
[_logic, QGVAR(enableCombatDeafness), "EnableCombatDeafness"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(EnableCombatDeafness), "EnableCombatDeafness"] call EFUNC(common,readSettingFromModule);
|
||||
|
||||
// Do Not Force - read module setting only non-default is set due to using SCALAR
|
||||
if ((_logic getVariable "DisableEarRinging") != -1) then {
|
||||
[_logic, QGVAR(DisableEarRinging), "DisableEarRinging"] call EFUNC(common,readSettingFromModule);
|
||||
};
|
||||
|
||||
[_logic, QGVAR(enabledForZeusUnits), "enabledForZeusUnits"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(autoAddEarplugsToUnits), "autoAddEarplugsToUnits"] call EFUNC(common,readSettingFromModule);
|
||||
ACE_LOGINFO("Hearing Module Initialized.");
|
||||
|
@ -29,3 +29,5 @@ _player setVariable ["ACE_hasEarPlugsIn", true, true];
|
||||
|
||||
/*// No Earplugs in inventory, telling user
|
||||
[localize LSTRING(NoPlugs)] call EFUNC(common,displayTextStructured);*/
|
||||
|
||||
[] call FUNC(updateHearingProtection);
|
||||
|
@ -30,3 +30,5 @@ _player setVariable ["ACE_hasEarPlugsIn", false, true];
|
||||
|
||||
//Force an immediate fast volume update:
|
||||
[[true]] call FUNC(updateVolume);
|
||||
|
||||
[] call FUNC(updateHearingProtection);
|
||||
|
36
addons/hearing/functions/fnc_updateHearingProtection.sqf
Normal file
36
addons/hearing/functions/fnc_updateHearingProtection.sqf
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Updates the hearing protection and volume attenuation for player on earbuds/helmet change
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_hearing_fnc_updateHearingProtection
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
TRACE_1("params",_this);
|
||||
|
||||
if (isNull ACE_player) exitWith {
|
||||
GVAR(damageCoefficent) = 0;
|
||||
GVAR(volumeAttenuation) = 1;
|
||||
};
|
||||
|
||||
// Handle Earplugs
|
||||
private _hasEarPlugsIn = [ACE_player] call FUNC(hasEarPlugsIn);
|
||||
GVAR(damageCoefficent) = [1, 0.25] select _hasEarPlugsIn;
|
||||
GVAR(volumeAttenuation) = [1, GVAR(EarplugsVolume)] select _hasEarPlugsIn;
|
||||
|
||||
// Handle Headgear
|
||||
if (headgear ACE_player != "") then {
|
||||
private _protection = (getNumber (configFile >> "CfgWeapons" >> (headgear ACE_player) >> QGVAR(protection))) min 1;
|
||||
GVAR(damageCoefficent) = GVAR(damageCoefficent) * (1 - _protection);
|
||||
private _attenuation = (getNumber (configFile >> "CfgWeapons" >> (headgear ACE_player) >> QGVAR(lowerVolume))) min 1;
|
||||
GVAR(volumeAttenuation) = GVAR(volumeAttenuation) * (1 - _attenuation);
|
||||
};
|
@ -16,75 +16,38 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
//Only run if deafness or ear ringing is enabled:
|
||||
if ((!GVAR(enableCombatDeafness)) && GVAR(DisableEarRinging)) exitWith {};
|
||||
|
||||
(_this select 0) params ["_justUpdateVolume"];
|
||||
|
||||
|
||||
GVAR(deafnessDV) = (GVAR(deafnessDV) min 20) max 0;
|
||||
GVAR(volume) = (1 - (GVAR(deafnessDV) / 20)) max 0;
|
||||
GVAR(volume) = (1 - (GVAR(deafnessDV) / 20)) max 0.05;
|
||||
TRACE_3("",GVAR(volume),GVAR(deafnessDV),GVAR(deafnessDV) - GVAR(deafnessPrior));
|
||||
|
||||
if (!_justUpdateVolume) then {
|
||||
//If we got a big increase in the last second:
|
||||
if ((GVAR(deafnessDV) - GVAR(deafnessPrior)) > 2) then {
|
||||
if (ACE_time > GVAR(time3)) then {
|
||||
GVAR(beep2) = false;
|
||||
};
|
||||
if ((!GVAR(DisableEarRinging)) && {!GVAR(beep2)}) then {
|
||||
playSound "ACE_Combat_Deafness";
|
||||
GVAR(beep2) = true;
|
||||
GVAR(time3) = ACE_time + 5;
|
||||
// Ring if we got a big increase in the last second or enough accumulated damage
|
||||
if (GVAR(deafnessDV) - GVAR(deafnessPrior) > 1 ||
|
||||
GVAR(deafnessDV) > 10) then {
|
||||
|
||||
if (ACE_time - GVAR(time3) < 3) exitWith {};
|
||||
GVAR(time3) = ACE_time;
|
||||
|
||||
if (GVAR(deafnessDV) > 19.75) then {
|
||||
playSound (["ACE_Combat_Deafness_Heavy", "ACE_Combat_Deafness_Heavy_NoRing"] select GVAR(DisableEarRinging));
|
||||
} else {
|
||||
playSound (["ACE_Combat_Deafness_Medium", "ACE_Combat_Deafness_Medium_NoRing"] select GVAR(DisableEarRinging));
|
||||
};
|
||||
};
|
||||
|
||||
GVAR(deafnessPrior) = GVAR(deafnessDV);
|
||||
|
||||
if (GVAR(deafnessDV) > 19.75) then {
|
||||
ACE_player setVariable [QGVAR(deaf), true];
|
||||
if ((!GVAR(DisableEarRinging)) && {ACE_time > GVAR(time4)}) then {
|
||||
playSound "ACE_Combat_Deafness";
|
||||
GVAR(beep2) = true;
|
||||
GVAR(time3) = ACE_time + 10;
|
||||
GVAR(time4) = ACE_time + 30;
|
||||
};
|
||||
} else {
|
||||
ACE_player setVariable [QGVAR(deaf), false];
|
||||
};
|
||||
|
||||
if (GVAR(deafnessDV) > 10) then {
|
||||
//check if the ringing is already being played
|
||||
if (ACE_time > GVAR(time2)) then {
|
||||
GVAR(beep) = false;
|
||||
};
|
||||
if ((!GVAR(DisableEarRinging)) && {!GVAR(beep)}) then {
|
||||
playSound "ACE_Ring_Backblast";
|
||||
GVAR(time2) = ACE_time + 22;
|
||||
GVAR(beep) = true;
|
||||
};
|
||||
};
|
||||
|
||||
// Hearing takes longer to return to normal after it hits rock bottom
|
||||
GVAR(deafnessDV) = (GVAR(deafnessDV) - (0.5 * (GVAR(volume) max 0.1))) max 0;
|
||||
};
|
||||
|
||||
if ((missionNameSpace getVariable [QGVAR(disableVolumeUpdate), false]) || {!GVAR(enableCombatDeafness)}) exitWith {};
|
||||
if (missionNameSpace getVariable [QGVAR(disableVolumeUpdate), false]) exitWith {};
|
||||
|
||||
private _volume = GVAR(volume);
|
||||
|
||||
// Earplugs reduce hearing 50%
|
||||
if ([ACE_player] call FUNC(hasEarPlugsIn)) then {
|
||||
_volume = _volume min GVAR(EarplugsVolume);
|
||||
};
|
||||
|
||||
// Headgear can reduce hearing
|
||||
if(headgear ACE_player != "") then {
|
||||
private ["_lowerVolume"];
|
||||
_lowerVolume = (getNumber (configFile >> "CfgWeapons" >> (headgear ACE_player) >> QGVAR(lowerVolume))) min 1;
|
||||
if(_lowerVolume > 0) then {
|
||||
_volume = _volume min (1 - _lowerVolume);
|
||||
};
|
||||
};
|
||||
// Earplugs and headgear can attenuate hearing
|
||||
_volume = _volume min GVAR(volumeAttenuation);
|
||||
|
||||
// Reduce volume if player is unconscious
|
||||
if (ACE_player getVariable ["ACE_isUnconscious", false]) then {
|
||||
|
BIN
addons/hearing/sounds/deafness_noring.ogg
Normal file
BIN
addons/hearing/sounds/deafness_noring.ogg
Normal file
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Hearing">
|
||||
<Key ID="STR_ACE_Hearing_EarPlugs_Name">
|
||||
@ -97,7 +97,7 @@
|
||||
<Hungarian>Nincs több hely</Hungarian>
|
||||
<Russian>Нет места в инвентаре</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_DisableEarRinging">
|
||||
<Key ID="STR_ACE_Hearing_DisableEarRinging_DisplayName">
|
||||
<English>Disable ear ringing</English>
|
||||
<French>Désactiver le bourdonnement</French>
|
||||
<Spanish>Desactivar zumbido de oídos</Spanish>
|
||||
@ -109,6 +109,9 @@
|
||||
<Italian>Disabilita i fischi nelle orecchie</Italian>
|
||||
<Portuguese>Desabilitar zumbido de ouvidos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_DisableEarRinging_Description">
|
||||
<English>Remove tinnitus effect when the player takes hearing damage</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_Module_DisplayName">
|
||||
<English>Hearing</English>
|
||||
<Polish>Słuch</Polish>
|
||||
@ -119,26 +122,29 @@
|
||||
<French>Audition</French>
|
||||
<Hungarian>Hallás</Hungarian>
|
||||
<Russian>Слух</Russian>
|
||||
<Italian>Udito</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_CombatDeafness_DisplayName">
|
||||
<English>Combat Deafness</English>
|
||||
<Key ID="STR_ACE_Hearing_EnableCombatDeafness_DisplayName">
|
||||
<English>Enable Combat Deafness</English>
|
||||
<Polish>Wł. głuchotę bojową</Polish>
|
||||
<Spanish>¿Habilitar sordera de combate?</Spanish>
|
||||
<Spanish>Habilitar sordera de combate</Spanish>
|
||||
<German>Aktiviere Taubheit im Gefecht?</German>
|
||||
<Czech>Povolit ztrátu sluchu?</Czech>
|
||||
<Portuguese>Ativar surdez em combate?</Portuguese>
|
||||
<French>Activer la surdité au combat?</French>
|
||||
<Hungarian>Harci süketség engedélyezése?</Hungarian>
|
||||
<Russian>Оглушение</Russian>
|
||||
<Italian>Sordità da combattimento</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_CombatDeafness_Description">
|
||||
<Key ID="STR_ACE_Hearing_EnableCombatDeafness_Description">
|
||||
<English>Reduces the hearing ability as the player takes hearing damage</English>
|
||||
<Polish>Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów</Polish>
|
||||
<Spanish>Habilita la sordera de combate</Spanish>
|
||||
<German>Aktiviere Taubheit im Gefecht?</German>
|
||||
<German>Verringert das Hörvermögen wenn der Spieler einen Hörschaden davonträg</German>
|
||||
<Czech>Snižuje schopnost sluchu pokud dojde k jeho poškození hlasitou a blízkou střelbou</Czech>
|
||||
<Portuguese>Ativar surdez em combate?</Portuguese>
|
||||
<Russian>Уменьшает возможность игрока слышать звуки при повреждении органов слуха</Russian>
|
||||
<Italian>Riduci l'abilità uditiva quando il giocatore riceve danno uditivo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_Module_Description">
|
||||
<English>Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection</English>
|
||||
@ -150,6 +156,7 @@
|
||||
<Portuguese>Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva.</Portuguese>
|
||||
<French>Ce module active / désactivé la surdité au combat. Si active, des joueurs peuvent devenir sourds sans protection d'oreille, si une arme est utilisée ou une explosion a lieu à proximité</French>
|
||||
<Spanish>Controles de sordera de combate y zumbido en los oídos. Al activarlo, los jugadores pueden ser ensordecidos cuando un arma se dispara cerca o una explosión tiene lugar sin protección auditiva</Spanish>
|
||||
<Italian>Controlla la sordità da combattimento e fischio alle orecchie. Quando attivato, i giocatori possono essere assordati quando un'arma spara vicino o avviene un'esplosione senza protezione uditiva</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_enabledForZeusUnits_DisplayName">
|
||||
<English>Effect Zeus RC</English>
|
||||
@ -159,6 +166,7 @@
|
||||
<Portuguese>Afeta Zeus CR</Portuguese>
|
||||
<Spanish>Efecto Zeus RC</Spanish>
|
||||
<Czech>Vliv na Zeus RC</Czech>
|
||||
<Italian>Effetto Zeus RC</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_enabledForZeusUnits_Description">
|
||||
<English>Allow zeus remote controlled units to be able to take hearing damage.</English>
|
||||
@ -168,20 +176,25 @@
|
||||
<Portuguese>Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos.</Portuguese>
|
||||
<Spanish>Permitir a las unidades por control remoto de zeus que puedan tener daños auditivos.</Spanish>
|
||||
<Czech>Aktivovat efekt ztráty sluchu pro vzdáleně ovládané jednotky.</Czech>
|
||||
<Italian>Consenti alle unità controllate in remoto da Zeus di ricevere danni all'udito.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_autoAddEarplugsToUnits_DisplayName">
|
||||
<English>Add earplugs to units</English>
|
||||
<German>Füge Ohrenstöpsel zu Einheiten hinzu</German>
|
||||
<Polish>Dodaj stopery dla jednostek</Polish>
|
||||
<Russian>Добавлять юнитам беруши</Russian>
|
||||
<Portuguese>Adiciona protetores de ouvido as unidades</Portuguese>
|
||||
<Czech>Přidat špunty jednotce</Czech>
|
||||
<Italian>Aggiungi Tappi per Orecchie alle unità</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_autoAddEarplugsToUnits_Description">
|
||||
<English>Add the `ACE_EarPlugs` item to all units that have loud weapons. Can disable if using custom loadouts.</English>
|
||||
<German>Fügt die "ACE_EarPlugs" zu allen Einheiten mit lauten Waffen hinzu. Wird deaktiviert wenn eine eigene Inventarkonfiguration vorgenommen wurde.</German>
|
||||
<Polish>Dodaje `ACE_EarPlugs` - stopery - do wszystkich jednostek, które posiadają głośną broń. Można wyłaczyć w przypadku korzystania z niestandardowych loadoutów.</Polish>
|
||||
<Russian>Добавляет предмет `ACE_EarPlugs` всем юнитам, которые имеют громкое оружие. Можно отключить при ручной настройке снаряжения.</Russian>
|
||||
<Portuguese>Adicionar o item `ACE_EarPlugs` a todas as unidades que tenham armas barulhentas. Pode ser desabilitado com carregamentos customizados.</Portuguese>
|
||||
<Czech>Přidat `ACE_EarPlugs` všem jednotkám které mají zbraň. Můžete vypnout, pokud používáte vlastní výbavu.</Czech>
|
||||
<Italian>Aggiungi l'oggetto 'ACE_EarPlugs' a tutte le unità che hanno armi rumorose. Può essere disabilitato se vengono usati loadout personalizzati.</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="HuntIR">
|
||||
<Key ID="STR_DN_ACE_HUNTIRBOX">
|
||||
@ -171,7 +171,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP_RES">
|
||||
<English>R - Reset camera</English>
|
||||
<German>R - Reset</German>
|
||||
<German>R - Kamera zurücksetzen</German>
|
||||
<Spanish>R - Reiniciar camara</Spanish>
|
||||
<Czech>R - Reset kamery</Czech>
|
||||
<Russian>R - Сбросить настройки камеры</Russian>
|
||||
@ -194,4 +194,4 @@
|
||||
<Portuguese>Esc - Sai do Ajuda</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -76,28 +76,3 @@ GVAR(ParsedTextCached) = [];
|
||||
if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);};
|
||||
if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;};
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
//Debug to help end users identify mods that break CBA's XEH
|
||||
[{
|
||||
private _badClassnames = [];
|
||||
{
|
||||
//Only check Land objects (WeaponHolderSimulated show up in `vehicles` for some reason)
|
||||
if ((_x isKindOf "Land") && {(isNil (format [QGVAR(Act_%1), typeOf _x])) || {isNil (format [QGVAR(SelfAct_%1), typeOf _x])}}) then {
|
||||
if (!((typeOf _x) in _badClassnames)) then {
|
||||
_badClassnames pushBack (typeOf _x);
|
||||
ACE_LOGERROR_3("Compile checks bad for (classname: %1)(addon: %2) %3", (typeOf _x), (unitAddons (typeOf _x)), _x);
|
||||
};
|
||||
};
|
||||
} forEach (allUnits + allDeadMen + vehicles);
|
||||
if ((count _badClassnames) == 0) then {
|
||||
ACE_LOGINFO("All compile checks passed");
|
||||
} else {
|
||||
ACE_LOGERROR_1("%1 Classnames failed compile check!!! (bad XEH / missing cba_enable_auto_xeh.pbo)", (count _badClassnames));
|
||||
|
||||
//Only show visual error if they are actually missing the pbo:
|
||||
#define SUPMON configFile>>"CfgSettings">>"CBA">>"XEH">>"supportMonitor"
|
||||
if ((!isNumber(SUPMON)) || {getNumber(SUPMON) != 1}) then {
|
||||
["ACE Interaction failed to compile for some units (try adding cba_enable_auto_xeh.pbo)"] call BIS_fnc_error;
|
||||
};
|
||||
};
|
||||
}, [], 5] call EFUNC(common,waitAndExecute); //ensure CBASupMon has time to run first
|
||||
|
@ -41,8 +41,8 @@ if ((GVAR(openedMenuType) == 0) && {vehicle ACE_player == ACE_player} && {isNull
|
||||
|
||||
if (_distanceToBasePoint > _distance) exitWith {true};
|
||||
|
||||
if ((_distanceToBasePoint > 1.5) && {!(_params select 4)}) exitWith {
|
||||
// If distance to action is greater than 1.5 m and check isn't disabled in params, check LOS
|
||||
if ((_distanceToBasePoint > 1.2) && {!(_params select 4)}) exitWith {
|
||||
// If distance to action is greater than 1.2 m and check isn't disabled in params, check LOS
|
||||
lineIntersects [AGLtoASL _headPos, AGLtoASL _pos, _object, ACE_player]
|
||||
};
|
||||
false
|
||||
|
@ -1,16 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Interact_Menu">
|
||||
<Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction">
|
||||
<English>Always display cursor for self interaction</English>
|
||||
<German>Immer den Cursor für Selbst-Interaktionen anzeigen.</German>
|
||||
<German>Immer den Mauszeiger für Selbst-Interaktionen anzeigen.</German>
|
||||
<Spanish>Mostrar siempre el cursor para la interacción propia</Spanish>
|
||||
<Russian>Показывать курсор (взаимодействия с собой)</Russian>
|
||||
<Czech>Zobrazit kurzor v menu pro vlastní interakci</Czech>
|
||||
<Polish>Zawsze wyświetlaj kursor dla własnej interakcji</Polish>
|
||||
<French>Toujours afficher le curseur pour les interactions sur soi-même</French>
|
||||
<Hungarian>Mindig legyen a saját cselekvés kurzorja látható</Hungarian>
|
||||
<Italian>Mostra sempre il cursore per le interazioni su se stessi</Italian>
|
||||
<Italian>Mostra sempre il cursore delle autointerazioni</Italian>
|
||||
<Portuguese>Sempre mostrar cursor para interação pessoal</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorInteraction">
|
||||
@ -21,7 +21,7 @@
|
||||
<Polish>Zawsze wyświetlaj kursor dla interakcji</Polish>
|
||||
<Russian>Показывать курсор (взаимодействие)</Russian>
|
||||
<Czech>Zobrazit kurzor v menu pro interakci</Czech>
|
||||
<German>Immer den Cursor für Fremd-Interaktionen anzeigen</German>
|
||||
<German>Immer den Mauszeiger für Fremd-Interaktionen anzeigen</German>
|
||||
<Hungarian>Mindig legyen a cselekvés kurzorja látható</Hungarian>
|
||||
<Portuguese>Sempre mostrar cursor para interação</Portuguese>
|
||||
</Key>
|
||||
@ -87,6 +87,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_ZeusActionsRoot">
|
||||
<English>Zeus Actions</English>
|
||||
<German>Zeus-Aktionen</German>
|
||||
<Polish>Akcje Zeusa</Polish>
|
||||
<Czech>Akce Zeuse</Czech>
|
||||
<Spanish>Acciones Zeus</Spanish>
|
||||
@ -94,6 +95,7 @@
|
||||
<Hungarian>Zeus cselekvések</Hungarian>
|
||||
<Portuguese>Ações do Zeus</Portuguese>
|
||||
<Russian>Действия Зевса</Russian>
|
||||
<Italian>Azioni Zeus</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_ColorTextMax">
|
||||
<English>Interaction - Text Max</English>
|
||||
@ -147,7 +149,7 @@
|
||||
<English>Keep cursor centered</English>
|
||||
<French>Garder le curseur au centre</French>
|
||||
<Russian>Центрировать курсор</Russian>
|
||||
<German>Cursor zentriert halten</German>
|
||||
<German>Mauszeiger zentriert halten</German>
|
||||
<Hungarian>Kurzor középen tartása</Hungarian>
|
||||
<Polish>Utrzymaj kursor wyśrodkowany</Polish>
|
||||
<Spanish>Mantener el cursor centrado</Spanish>
|
||||
@ -160,7 +162,7 @@
|
||||
<Czech>Udržuje kurzor na středu. Užitečné, pokud je velikost obrazovky omezena.</Czech>
|
||||
<French>Garde le curseur au milieu et dispose le menu des options autour. Utile si la taille de l'écran est limitée.</French>
|
||||
<Russian>Центрирует курсор и двигает само меню опций. Полезно при ограниченном размере экрана.</Russian>
|
||||
<German>Hält den Cursor zentriert und verschiebt das Menü beim Bewegen. Nützlich bei kleinen Bildschirmen.</German>
|
||||
<German>Hält den Mauszeiger zentriert und verschiebt das Menü beim Bewegen. Nützlich bei kleinen Bildschirmen.</German>
|
||||
<Hungarian>Középen tartja a kurzort, és a menüelemeket mozgatja. Hasznos lehetőség korlátozott képméretnél.</Hungarian>
|
||||
<Polish>Utrzymuje kursor na środku ekranu, zamiast tego ruch myszą powoduje przesuwanie menu interakcji. Użyteczne w przypadku kiedy rozmiar ekranu jest ograniczony.</Polish>
|
||||
<Spanish>Mantiene el cursor centrado y despliega los menús alrededor. Útil si el tamaño de la pantalla es limitado.</Spanish>
|
||||
@ -237,6 +239,7 @@
|
||||
<French>Arrière plan du menu d'interaction</French>
|
||||
<Hungarian>Cselekvő menü háttere</Hungarian>
|
||||
<Russian>Фон меню взаимодействия</Russian>
|
||||
<Italian>Sfondo Menù Interazioni</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_blurScreenDesc">
|
||||
<English>Blur the background while the interaction menu is open.</English>
|
||||
@ -248,6 +251,7 @@
|
||||
<French>Flouter l'arrière plan durant l'ouverture du menu d'interaction</French>
|
||||
<Hungarian>A háttér elmosása a cselekvő menü használata alatt.</Hungarian>
|
||||
<Russian>Размыть фон, пока открыто меню взаимодействия.</Russian>
|
||||
<Italian>Sfoca lo sfondo mentre il Menù Interazioni è aperto.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_backgroundBlur">
|
||||
<English>Blur screen</English>
|
||||
@ -259,6 +263,7 @@
|
||||
<French>Flouter l'écran</French>
|
||||
<Hungarian>Kép elmosása</Hungarian>
|
||||
<Russian>Размытый</Russian>
|
||||
<Italian>Sfoca schermo</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_backgroundBlack">
|
||||
<English>Black</English>
|
||||
@ -270,9 +275,11 @@
|
||||
<French>Noir</French>
|
||||
<Hungarian>Fekete</Hungarian>
|
||||
<Russian>Черный</Russian>
|
||||
<Italian>Nero</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_addBuildingActions">
|
||||
<English>Show actions for buildings</English>
|
||||
<German>Zeige Aktionen für Gebäude</German>
|
||||
<Polish>Pokazuj akcje dla budynków</Polish>
|
||||
<Czech>Zobrazit akci pro budovy</Czech>
|
||||
<Spanish>Mostrar acciones para edificios</Spanish>
|
||||
@ -280,9 +287,11 @@
|
||||
<Hungarian>Cselekvések mutatása épületeknél</Hungarian>
|
||||
<Portuguese>Mostrar ações para edifícios</Portuguese>
|
||||
<Russian>Показывать действия для зданий</Russian>
|
||||
<Italian>Mostra azioni per edifici</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_addBuildingActionsDescription">
|
||||
<English>Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns)</English>
|
||||
<German>Fügt Aktionen zum Türöffnen oder für eine Leiter zum Besteigen von Gebäuden hinzu. (Hinweis: Verschlechtert die Leistung wenn das Interaktionsmenü geöffnet wird. Insbesondere in Städten) </German>
|
||||
<Polish>Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach.</Polish>
|
||||
<Czech>Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) </Czech>
|
||||
<Spanish>Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades)</Spanish>
|
||||
@ -290,28 +299,35 @@
|
||||
<Hungarian>Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban)</Hungarian>
|
||||
<Portuguese>Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades)</Portuguese>
|
||||
<Russian>Добавляет действия открывания дверей и залезания на лестницы для зданий. (Примечание: возможно падение производительности при открытии меню взаимодействия, особенно в городах)</Russian>
|
||||
<Italian>Aggiunge azioni interattive per l'apertura delle porte e piazzamento scale su edifici. (Nota: C'è un costo in performance quando si apre il Menù Interazioni, soprattutto in città)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_Category_InteractionMenu">
|
||||
<English>Interaction Menu</English>
|
||||
<German>Interaktionsmenü</German>
|
||||
<Polish>Menu interakcji</Polish>
|
||||
<Portuguese>Menu de interação</Portuguese>
|
||||
<Russian>Меню взаимодействия</Russian>
|
||||
<Czech>Menu interakce</Czech>
|
||||
<Spanish>Menú de interacción</Spanish>
|
||||
<Italian>Menù Interazioni</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_menuAnimationSpeed">
|
||||
<English>Interaction Animation Speed</English>
|
||||
<German>Interaktionsmenü Animationsgeschwindigkeit</German>
|
||||
<Polish>Szybkość animacji interakcji</Polish>
|
||||
<Russian>Скорость анимации меню взаимодействия</Russian>
|
||||
<Portuguese>Velocidade da animação de interação</Portuguese>
|
||||
<Czech>Rychlost animace interakce</Czech>
|
||||
<Italian>Velocità Animazioni Interazioni</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_menuAnimationSpeed_Description">
|
||||
<English>Makes menu animations faster and decreases the time needed to hover to show sub actions</English>
|
||||
<German>Beschleunigt die Menüanmimationen und folglich das Öffnen eines Submenüs. </German>
|
||||
<Polish>Przyśpiesza animacje menu interakcji oraz czas wymagany do pokazania podmenu</Polish>
|
||||
<Russian>Ускоряет анимацию меню и уменьшает задержку при наведении мыши для раскрытия подменю</Russian>
|
||||
<Portuguese>Faz com que as animações do menu de interação sejam mais rápidas, dimiuindo a necessidade de esperar para mostrar as ações</Portuguese>
|
||||
<Czech>Zrychlí animaci menu a sníží tak čas potřebný pro plné zobrazení podmenu</Czech>
|
||||
<Italian>Rende le animazioni Menù più veloci e diminuisce il tempo richiesto per mostrare sotto-azioni</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
class CfgVehicles {
|
||||
class ACE_Module;
|
||||
class ACE_ModuleInteraction: ACE_Module {
|
||||
@ -10,7 +9,6 @@ class CfgVehicles {
|
||||
isGlobal = 1;
|
||||
isSingular = 1;
|
||||
icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa);
|
||||
|
||||
class Arguments {
|
||||
class EnableTeamManagement {
|
||||
displayName = CSTRING(EnableTeamManagement_DisplayName);
|
||||
@ -19,7 +17,6 @@ class CfgVehicles {
|
||||
defaultValue = 1;
|
||||
};
|
||||
};
|
||||
|
||||
class ModuleDescription {
|
||||
description = CSTRING(Module_Description);
|
||||
};
|
||||
@ -289,6 +286,7 @@ class CfgVehicles {
|
||||
icon = PATHTOF(UI\team\team_management_ca.paa);
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_Equipment {
|
||||
displayName = CSTRING(Equipment);
|
||||
condition = QUOTE(true);
|
||||
@ -539,6 +537,41 @@ class CfgVehicles {
|
||||
class ACE_SelfActions {};
|
||||
};
|
||||
|
||||
class Lamps_base_F;
|
||||
class Land_PortableLight_single_F: Lamps_base_F {
|
||||
scope = 2;
|
||||
XEH_ENABLED;
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
displayName = CSTRING(MainAction);
|
||||
selection = "";
|
||||
distance = 2;
|
||||
condition = "true";
|
||||
class ACE_LampTurnOn {
|
||||
displayName = CSTRING(TurnOn);
|
||||
condition = QUOTE(alive _target && !(_target getVariable [ARR_2('ACE_lampOn',true)]));
|
||||
statement = QUOTE(_target call DFUNC(switchLamp));
|
||||
selection = "";
|
||||
distance = 2;
|
||||
};
|
||||
class ACE_LampTurnOff {
|
||||
displayName = CSTRING(TurnOff);
|
||||
condition = QUOTE(alive _target && _target getVariable [ARR_2('ACE_lampOn',true)]);
|
||||
statement = QUOTE(_target call DFUNC(switchLamp));
|
||||
selection = "";
|
||||
distance = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class Land_PortableLight_single_off_F: Land_PortableLight_single_F {
|
||||
scope = 1;
|
||||
};
|
||||
class Land_PortableLight_double_F: Land_PortableLight_single_F {};
|
||||
class Land_PortableLight_double_off_F: Land_PortableLight_double_F {
|
||||
scope = 1;
|
||||
};
|
||||
|
||||
class RoadCone_F: ThingX {
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user