Merge branch 'master' into changeHearingDefaults

Conflicts:
	addons/grenades/functions/fnc_flashbangExplosionEH.sqf
This commit is contained in:
esteldunedain 2016-02-20 16:59:00 -03:00
commit 6fd8d8da04
352 changed files with 3908 additions and 2979 deletions

View File

@ -2,7 +2,7 @@
## Before reporting ## 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. 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 ## 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: 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.
```
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.*
```
A video of the issue might be helpful in resolving it faster. A video of the issue might be helpful in resolving it faster.
GitHub uses [Markdown](http://daringfireball.net/projects/markdown/syntax) to style the output. If you want to know more about it (e.g. how to [turn text bold](https://help.github.com/articles/markdown-basics/#styling-text), how to denote [code blocks](https://help.github.com/articles/markdown-basics/#inline-formats) or [inline code](https://help.github.com/articles/markdown-basics/#multiple-lines)) have a look at the [GitHub Markdown Documentation](https://help.github.com/articles/github-flavored-markdown).
# Feature Requests # Feature Requests
## Background ## 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. In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion. Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
# Regarding Pull Requests (PRs)
- 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
View 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
View 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)

View File

@ -39,6 +39,7 @@ Alganthe <alganthe@live.fr>
Anthariel <Contact@storm-simulation.com> Anthariel <Contact@storm-simulation.com>
Arkhir <wonsz666@gmail.com > Arkhir <wonsz666@gmail.com >
Asgar Serran <piechottaf@web.de> Asgar Serran <piechottaf@web.de>
BaerMitUmlaut
Bamse <bamsis@gmail.com> Bamse <bamsis@gmail.com>
Bla1337 Bla1337
BlackPixxel <blackpixxel96@gmail.com> BlackPixxel <blackpixxel96@gmail.com>

View File

@ -64,7 +64,6 @@ The mod is **built modularly**, so almost any included PBO can be easily removed
- Magazine repacking - Magazine repacking
- Realistic weapon overheating mechanic - Realistic weapon overheating mechanic
- Combat deafness (temporary loss of hearing) simulation - Combat deafness (temporary loss of hearing) simulation
- Improved ragdoll physics
- Improved interactions for AARs and ammo bearers - Improved interactions for AARs and ammo bearers
- Adjustable sniper scopes - Adjustable sniper scopes
- No idle animation with lowered weapon - No idle animation with lowered weapon

Binary file not shown.

View File

@ -9,11 +9,3 @@ class Extended_PostInit_EventHandlers {
init = QUOTE( call COMPILE_FILE(XEH_postInit) ); init = QUOTE( call COMPILE_FILE(XEH_postInit) );
}; };
}; };
class Extended_FiredBIS_EventHandlers {
class CAManBase {
class ADDON {
firedBIS = QUOTE(_this call FUNC(handleFired));
};
};
};

View File

@ -22,3 +22,17 @@ if (!GVAR(extensionAvailable)) exitWith {
}; };
*/ */
[] call FUNC(initializeTerrainExtension); [] call FUNC(initializeTerrainExtension);
if (!hasInterface) exitWith {};
["SettingsInitialized", {
//If not enabled, dont't add PFEH
if (!GVAR(enabled)) exitWith {};
// Register fire event handler
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
[] call FUNC(updateTrajectoryPFH);
}] call EFUNC(common,addEventHandler);

View File

@ -22,6 +22,7 @@ private ["_muzzleVelocityTableCount", "_barrelLengthTableCount", "_lowerDataInde
"_upperDataIndex", "_lowerBarrelLength", "_upperBarrelLength", "_lowerMuzzleVelocity", "_upperDataIndex", "_lowerBarrelLength", "_upperBarrelLength", "_lowerMuzzleVelocity",
"_upperMuzzleVelocity", "_interpolationRatio"]; "_upperMuzzleVelocity", "_interpolationRatio"];
params ["_barrelLength", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocity"]; 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 barrel length is not defined, then there is no point in calculating muzzle velocity
if (_barrelLength == 0) exitWith { 0 }; if (_barrelLength == 0) exitWith { 0 };

View File

@ -1,16 +1,10 @@
/* /*
* Author: Glowbal, Ruthberg * Author: Glowbal, Ruthberg
* *
* Handles advanced ballistics for (BulletBase) projectiles * Handles advanced ballistics for (BulletBase) projectiles. Called from the unified fired EH only for players.
* *
* Arguments: * Arguments:
* 0: unit - Object the event handler is assigned to <OBJECT> * None. Parameters inherited from EFUNC(common,firedEH)
* 1: weapon - Fired weapon <STRING>
* 2: muzzle - Muzzle that was used <STRING>
* 3: mode - Current mode of the fired weapon <STRING>
* 4: ammo - Ammo used <STRING>
* 5: magazine - magazine name which was used <STRING>
* 6: projectile - Object of the projectile that was shot <OBJECT>
* *
* Return Value: * Return Value:
* None * None
@ -19,20 +13,16 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
// Early Quiting //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"];
if (!hasInterface) exitWith {}; TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
if (!GVAR(enabled)) exitWith {};
// Parameterization // Parameterization
private ["_abort", "_AmmoCacheEntry", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_bulletMass", "_bulletLength", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletLength", "_barrelTwist", "_stabilityFactor", "_aceTimeSecond", "_barrelVelocityShift", "_ammoTemperatureVelocityShift"]; private ["_abort", "_AmmoCacheEntry", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_bulletMass", "_bulletLength", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletLength", "_barrelTwist", "_stabilityFactor", "_aceTimeSecond", "_barrelVelocityShift", "_ammoTemperatureVelocityShift"];
params ["_unit", "_weapon", "", "_mode", "_ammo", "_magazine", "_bullet"];
_abort = false; _abort = false;
if (!(_ammo isKindOf "BulletBase")) exitWith {}; if (!(_ammo isKindOf "BulletBase")) exitWith {};
if (!alive _bullet) exitWith {}; if (!alive _projectile) exitWith {};
if (!([_unit] call EFUNC(common,isPlayer))) exitWith {};
if (_unit distance ACE_player > GVAR(simulationRadius)) exitWith {}; if (_unit distance ACE_player > GVAR(simulationRadius)) exitWith {};
if (underwater _unit) exitWith {}; if (underwater _unit) exitWith {};
if (!GVAR(simulateForEveryone) && !(local _unit)) then { if (!GVAR(simulateForEveryone) && !(local _unit)) then {
@ -54,7 +44,7 @@ if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "CfgWeapons" >> _wea
if (_abort || !(GVAR(extensionAvailable))) exitWith { if (_abort || !(GVAR(extensionAvailable))) exitWith {
if (missionNamespace getVariable [QEGVAR(windDeflection,enabled), false]) then { if (missionNamespace getVariable [QEGVAR(windDeflection,enabled), false]) then {
EGVAR(windDeflection,trackedBullets) pushBack [_bullet, getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction")]; EGVAR(windDeflection,trackedBullets) pushBack [_projectile, getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction")];
}; };
}; };
@ -72,7 +62,7 @@ _AmmoCacheEntry params ["_airFriction", "_caliber", "_bulletLength", "_bulletMas
_WeaponCacheEntry params ["_barrelTwist", "_twistDirection", "_barrelLength"]; _WeaponCacheEntry params ["_barrelTwist", "_twistDirection", "_barrelLength"];
_bulletVelocity = velocity _bullet; _bulletVelocity = velocity _projectile;
_muzzleVelocity = vectorMagnitude _bulletVelocity; _muzzleVelocity = vectorMagnitude _bulletVelocity;
_barrelVelocityShift = 0; _barrelVelocityShift = 0;
@ -92,7 +82,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then {
if (_muzzleVelocityShift != 0) then { if (_muzzleVelocityShift != 0) then {
_muzzleVelocity = _muzzleVelocity + _muzzleVelocityShift; _muzzleVelocity = _muzzleVelocity + _muzzleVelocityShift;
_bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift)); _bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift));
_bullet setVelocity _bulletVelocity; _projectile setVelocity _bulletVelocity;
}; };
}; };
@ -114,16 +104,16 @@ if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) th
if (isNil "_temperature") then { if (isNil "_temperature") then {
_temperature = ((getPosASL _unit) select 2) call EFUNC(weather,calculateTemperatureAtHeight); _temperature = ((getPosASL _unit) select 2) call EFUNC(weather,calculateTemperatureAtHeight);
}; };
_barometricPressure = ((getPosASL _bullet) select 2) call EFUNC(weather,calculateBarometricPressure); _barometricPressure = ((getPosASL _projectile) select 2) call EFUNC(weather,calculateBarometricPressure);
_stabilityFactor = [_caliber, _bulletLength, _bulletMass, _barrelTwist, _muzzleVelocity, _temperature, _barometricPressure] call FUNC(calculateStabilityFactor); _stabilityFactor = [_caliber, _bulletLength, _bulletMass, _barrelTwist, _muzzleVelocity, _temperature, _barometricPressure] call FUNC(calculateStabilityFactor);
}; };
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000; GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
_aceTimeSecond = floor ACE_time; _aceTimeSecond = floor ACE_time;
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _bullet, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, ACE_time - _aceTimeSecond]; "ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, ACE_time - _aceTimeSecond];
GVAR(allBullets) pushBack [_bullet, _caliber, _bulletTraceVisible, GVAR(currentbulletID)]; GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)];
if (isNil QGVAR(BulletPFH)) then { if (isNil QGVAR(BulletPFH)) then {
GVAR(BulletPFH) = [FUNC(handleFirePFH), GVAR(simulationInterval), []] call CBA_fnc_addPerFrameHandler; GVAR(BulletPFH) = [FUNC(handleFirePFH), GVAR(simulationInterval), []] call CBA_fnc_addPerFrameHandler;

View File

@ -24,6 +24,7 @@
*/ */
#include "script_component.hpp" #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"]; private ["_ammo", "_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_result"];
_ammoConfig = configFile >> "CfgAmmo" >> _this; _ammoConfig = configFile >> "CfgAmmo" >> _this;
@ -49,6 +50,42 @@ _ammoTempMuzzleVelocityShifts = getArray(_ammoConfig >> "ACE_ammoTempMuzzleVeloc
_muzzleVelocityTable = getArray(_ammoConfig >> "ACE_muzzleVelocities"); _muzzleVelocityTable = getArray(_ammoConfig >> "ACE_muzzleVelocities");
_barrelLengthTable = getArray(_ammoConfig >> "ACE_barrelLengths"); _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]; _result = [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable];
uiNamespace setVariable [format[QGVAR(%1), _this], _result]; uiNamespace setVariable [format[QGVAR(%1), _this], _result];

View File

@ -35,6 +35,7 @@
<French>Balistique avancée</French> <French>Balistique avancée</French>
<Hungarian>Fejlett ballisztika</Hungarian> <Hungarian>Fejlett ballisztika</Hungarian>
<Russian>Продвинутая баллистика</Russian> <Russian>Продвинутая баллистика</Russian>
<Italian>Balistica avanzata</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
<English>Advanced Ballistics</English> <English>Advanced Ballistics</English>
@ -46,6 +47,7 @@
<French>Balistique avancée</French> <French>Balistique avancée</French>
<Hungarian>Fejlett ballisztika</Hungarian> <Hungarian>Fejlett ballisztika</Hungarian>
<Russian>Продвинутая баллистика</Russian> <Russian>Продвинутая баллистика</Russian>
<Italian>Balistica avanzata</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description"> <Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
<English>Enables advanced ballistics</English> <English>Enables advanced ballistics</English>
@ -57,6 +59,7 @@
<French>Activer la balistique avancée</French> <French>Activer la balistique avancée</French>
<Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian>
<Russian>Включает продвинутую баллистику</Russian> <Russian>Включает продвинутую баллистику</Russian>
<Italian>Abilita la balistica avanzata</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName">
<English>Enabled For Snipers</English> <English>Enabled For Snipers</English>
@ -68,6 +71,7 @@
<French>Activer pour les snipers</French> <French>Activer pour les snipers</French>
<Hungarian>Mesterlövészeknek engedélyezve</Hungarian> <Hungarian>Mesterlövészeknek engedélyezve</Hungarian>
<Russian>Включена для снайперов</Russian> <Russian>Включена для снайперов</Russian>
<Italian>Attiva per cecchini</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description">
<English>Enables advanced ballistics for non local snipers (when using high power optics)</English> <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> <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> <Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor)</Hungarian>
<Russian>Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики)</Russian> <Russian>Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики)</Russian>
<Italian>Abilita la balistica avanzata per cecchini non locali (quando si usano ottiche telescopiche)</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName">
<English>Enabled For Group Members</English> <English>Enabled For Group Members</English>
@ -90,6 +95,7 @@
<French>Activer pour les membres groupés</French> <French>Activer pour les membres groupés</French>
<Hungarian>Csoporttagoknak engedélyezve</Hungarian> <Hungarian>Csoporttagoknak engedélyezve</Hungarian>
<Russian>Включена для группы</Russian> <Russian>Включена для группы</Russian>
<Italian>Attiva per membri del gruppo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description">
<English>Enables advanced ballistics for non local group members</English> <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> <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> <Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak</Hungarian>
<Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian> <Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian>
<Italian>Abilita la balistica avanzata per membri di gruppi non locali</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName">
<English>Enabled For Everyone</English> <English>Enabled For Everyone</English>
@ -112,6 +119,7 @@
<French>Activer pour tout le monde</French> <French>Activer pour tout le monde</French>
<Hungarian>Mindenkinek engedélyezve</Hungarian> <Hungarian>Mindenkinek engedélyezve</Hungarian>
<Russian>Включена для всех</Russian> <Russian>Включена для всех</Russian>
<Italian>Attiva per tutti</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_Description"> <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> <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> <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> <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> <Russian>Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере)</Russian>
<Italian>Abilita la balistica avanzata per tutti i giocatori non locali (attivarlo può degradare le performance in combattimenti intensivi in multiplayer)</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName">
<English>Always Enabled For Group Members</English> <English>Always Enabled For Group Members</English>
@ -134,6 +143,7 @@
<French>Toujours activer pour les membres groupés</French> <French>Toujours activer pour les membres groupés</French>
<Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian> <Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian>
<Russian>Всегда включена для членов группы</Russian> <Russian>Всегда включена для членов группы</Russian>
<Italian>Sempre attiva per membri del gruppo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description"> <Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description">
<English>Always enables advanced ballistics when a group member fires</English> <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> <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> <Hungarian>Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel</Hungarian>
<Russian>Всегда включает продвинутую баллистику когда стреляет член группы</Russian> <Russian>Всегда включает продвинутую баллистику когда стреляет член группы</Russian>
<Italian>Abilita sempre la balistica avanzata quando spara un membro del gruppo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName">
<English>Disabled In FullAuto Mode</English> <English>Disabled In FullAuto Mode</English>
@ -156,6 +167,7 @@
<French>Désactiver en mode rafale libre</French> <French>Désactiver en mode rafale libre</French>
<Hungarian>Automata módban letiltva</Hungarian> <Hungarian>Automata módban letiltva</Hungarian>
<Russian>Выкл. для автомат. режима</Russian> <Russian>Выкл. для автомат. режима</Russian>
<Italian>Inattivo in fuoco automatico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description"> <Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description">
<English>Disables the advanced ballistics during full auto fire</English> <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> <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> <Hungarian>Letiltja a fejlett ballisztikát automata tüzelés folyamán</Hungarian>
<Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian> <Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian>
<Italian>Disabilita la balistica avanzata in fuoco automatico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
<English>Enable Ammo Temperature Simulation</English> <English>Enable Ammo Temperature Simulation</English>
@ -178,6 +191,7 @@
<French>Activer la simulation de la température</French> <French>Activer la simulation de la température</French>
<Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian> <Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian>
<Russian>Симуляция температуры для боеприпасов</Russian> <Russian>Симуляция температуры для боеприпасов</Russian>
<Italian>Abilita la simulazione della temperature delle munizioni</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description"> <Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description">
<English>Muzzle velocity varies with ammo temperature</English> <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> <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> <Hungarian>A kezdősebesség a lőszer hőmérsékletétől függően változó</Hungarian>
<Russian>Начальная скорость пули зависит от температуры</Russian> <Russian>Начальная скорость пули зависит от температуры</Russian>
<Italian>La velocità iniziale del proiettile varia con la temperatura</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName">
<English>Enable Barrel Length Simulation</English> <English>Enable Barrel Length Simulation</English>
@ -200,6 +215,7 @@
<French>Activer la simulation de la longueur de canon</French> <French>Activer la simulation de la longueur de canon</French>
<Hungarian>Csőhossz-szimuláció engedélyezése</Hungarian> <Hungarian>Csőhossz-szimuláció engedélyezése</Hungarian>
<Russian>Симуляция длины ствола</Russian> <Russian>Симуляция длины ствола</Russian>
<Italian>Abilita la simulazione della lunghezza della canna</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description"> <Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description">
<English>Muzzle velocity varies with barrel length</English> <English>Muzzle velocity varies with barrel length</English>
@ -211,6 +227,7 @@
<French>La longueur du canon influe sur la vélocité initale</French> <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> <Hungarian>A kezdősebesség a cső hosszától függően változó</Hungarian>
<Russian>Начальная скорость пули зависит от длины ствола</Russian> <Russian>Начальная скорость пули зависит от длины ствола</Russian>
<Italian>La velocità iniziale del proiettile varia con la lunghezza della canna</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName">
<English>Enable Bullet Trace Effect</English> <English>Enable Bullet Trace Effect</English>
@ -222,6 +239,7 @@
<French>Activer l'effet traçante</French> <French>Activer l'effet traçante</French>
<Hungarian>Nyomkövető-effekt engedélyezése</Hungarian> <Hungarian>Nyomkövető-effekt engedélyezése</Hungarian>
<Russian>Следы пуль</Russian> <Russian>Следы пуль</Russian>
<Italian>Abilita l'effetto tracciante</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description"> <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> <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> <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> <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> <Russian>Включает эффект следов пуль для больших калибров (видны только через мощную оптику)</Russian>
<Italian>Attiva un effetto tracciante per proiettili di alto calibro (visibile solamente quando si guarda attraverso un'ottica telescopica)</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
<English>Simulation Interval</English> <English>Simulation Interval</English>
@ -244,6 +263,7 @@
<French>Intervalle de simulation</French> <French>Intervalle de simulation</French>
<Hungarian>Szimuláció intervalluma</Hungarian> <Hungarian>Szimuláció intervalluma</Hungarian>
<Russian>Интервал симуляции</Russian> <Russian>Интервал симуляции</Russian>
<Italian>Intervallo di simulazione</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description"> <Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description">
<English>Defines the interval between every calculation step</English> <English>Defines the interval between every calculation step</English>
@ -255,6 +275,7 @@
<French>Défini un intervalle de calcul entre deux simulations</French> <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> <Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian>
<Russian>Определяет временной интервал между вычислениями</Russian> <Russian>Определяет временной интервал между вычислениями</Russian>
<Italian>Definisce l'intervallo di tempo tra ogni calcolo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
<English>Simulation Radius</English> <English>Simulation Radius</English>
@ -266,6 +287,7 @@
<French>Rayon de simulation</French> <French>Rayon de simulation</French>
<Hungarian>Szimuláció hatóköre</Hungarian> <Hungarian>Szimuláció hatóköre</Hungarian>
<Russian>Радиус симуляции</Russian> <Russian>Радиус симуляции</Russian>
<Italian>Raggio della simulazione</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_Description"> <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> <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> <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> <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> <Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
<Italian>Definisce il raggio intorno al giocatore (in metri) per il quale la balistica avanzata viene applicata ai proiettili</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_Description"> <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> <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> <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> <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> <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> <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> <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> <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 di balistica avanzata - significa che la traiettoria del proiettile viene infulenzata da variabili come la temperatura dell'aria, pressione atmosferica, umitidà, gravità, il tipo di munizioni e l'arma dalla quale vengono sparate.</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -30,7 +30,7 @@ private _sounds = [
private _position = AGLToASL (_target modelToWorldVisual (_target selectionPosition "Spine3")); private _position = AGLToASL (_target modelToWorldVisual (_target selectionPosition "Spine3"));
playSound3D [ playSound3D [
_sounds select floor random count _sounds, selectRandom _sounds,
objNull, objNull,
false, false,
_position, _position,

View File

@ -1602,6 +1602,7 @@
<French>[ACE] Caisse de munitions</French> <French>[ACE] Caisse de munitions</French>
<Hungarian>[ACE] Lőszeres láda</Hungarian> <Hungarian>[ACE] Lőszeres láda</Hungarian>
<Russian>[ACE] Ящик с боеприпасами</Russian> <Russian>[ACE] Ящик с боеприпасами</Russian>
<Italian>[ACE] Cassa munizioni</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -34,3 +34,10 @@ if (!hasInterface) exitWith {};
["isNotEscorting", {!(GETVAR(_this select 0,GVAR(isEscorting),false))}] call EFUNC(common,addCanInteractWithCondition); ["isNotEscorting", {!(GETVAR(_this select 0,GVAR(isEscorting),false))}] call EFUNC(common,addCanInteractWithCondition);
["isNotHandcuffed", {!(GETVAR(_this select 0,GVAR(isHandcuffed),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); ["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);

View File

@ -32,4 +32,6 @@ PREP(setSurrendered);
PREP(vehicleCaptiveMoveIn); PREP(vehicleCaptiveMoveIn);
PREP(vehicleCaptiveMoveOut); PREP(vehicleCaptiveMoveOut);
GVAR(captivityEnabled) = false;
ADDON = true; ADDON = true;

View File

@ -22,6 +22,18 @@ TRACE_2("params",_unit,_state);
if (!local _unit) exitWith { if (!local _unit) exitWith {
ERROR("running setHandcuffed on remote unit"); 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 { if ((_unit getVariable [QGVAR(isHandcuffed), false]) isEqualTo _state) exitWith {
ERROR("setHandcuffed: current state same as new"); ERROR("setHandcuffed: current state same as new");
}; };

View File

@ -23,6 +23,17 @@ if (!local _unit) exitWith {
ERROR("running surrender on remote unit"); 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 { if ((_unit getVariable [QGVAR(isSurrendering), false]) isEqualTo _state) exitWith {
ERROR("Surrender: current state same as new"); ERROR("Surrender: current state same as new");
}; };

View File

@ -167,6 +167,7 @@
<French>Faire capituler l'unité</French> <French>Faire capituler l'unité</French>
<Hungarian>Egység kapitulálása</Hungarian> <Hungarian>Egység kapitulálása</Hungarian>
<Russian>Заставить юнита сдаться</Russian> <Russian>Заставить юнита сдаться</Russian>
<Italian>Permette alle unità di arrendersi</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSurrender_Description"> <Key ID="STR_ACE_Captives_ModuleSurrender_Description">
<English>Sync a unit to make them surrender.&lt;br /&gt;Source: ace_captives</English> <English>Sync a unit to make them surrender.&lt;br /&gt;Source: ace_captives</English>
@ -178,9 +179,11 @@
<French>Synchronise une unité pour la rendre captive. &lt;br/&gt;Source: ace_captives</French> <French>Synchronise une unité pour la rendre captive. &lt;br/&gt;Source: ace_captives</French>
<Hungarian>Egység szinkronizálása, hogy kapituláljon.&lt;br /&gt;Forrás: ace_captives</Hungarian> <Hungarian>Egység szinkronizálása, hogy kapituláljon.&lt;br /&gt;Forrás: ace_captives</Hungarian>
<Russian>Синхронизируйте с юнитами, чтобы заставить их сдаться в плен.&lt;br /&gt;Источник: ace_captives</Russian> <Russian>Синхронизируйте с юнитами, чтобы заставить их сдаться в плен.&lt;br /&gt;Источник: ace_captives</Russian>
<Italian>Sincronizza una unità per farla arrendere.&lt;br/&gt;Fonte: ace_captives</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleHandcuffed_DisplayName"> <Key ID="STR_ACE_Captives_ModuleHandcuffed_DisplayName">
<English>Make Unit Handcuffed</English> <English>Make Unit Handcuffed</English>
<German>Einheit in Handschellen legen</German>
<Polish>Skuj jednostkę</Polish> <Polish>Skuj jednostkę</Polish>
<Portuguese>Fazer unidade algemada</Portuguese> <Portuguese>Fazer unidade algemada</Portuguese>
<Russian>Связать юнита</Russian> <Russian>Связать юнита</Russian>
@ -188,6 +191,7 @@
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleHandcuffed_Description"> <Key ID="STR_ACE_Captives_ModuleHandcuffed_Description">
<English>Sync a unit to make them handcuffed.&lt;br /&gt;Source: ace_captives</English> <English>Sync a unit to make them handcuffed.&lt;br /&gt;Source: ace_captives</English>
<German>Synchronisiere eine Einheit um sie in Handschellen zu legen.&lt;br /&gt;Quelle: ace_captives</German>
<Polish>Zsynchronizuj z jednostką, aby została skuta.&lt;br /&gt;Źródło: ace_captives</Polish> <Polish>Zsynchronizuj z jednostką, aby została skuta.&lt;br /&gt;Źródło: ace_captives</Polish>
<Portuguese>Sincronizar uma unidade para deixá-la algemada.&lt;br/&gt;Source: ace_captives</Portuguese> <Portuguese>Sincronizar uma unidade para deixá-la algemada.&lt;br/&gt;Source: ace_captives</Portuguese>
<Russian>Синхронизируйте с юнитами, чтобы сделать их связанными.&lt;br /&gt;Источник: ace_captives</Russian> <Russian>Синхронизируйте с юнитами, чтобы сделать их связанными.&lt;br /&gt;Источник: ace_captives</Russian>
@ -203,6 +207,7 @@
<French>Options de capitulation</French> <French>Options de capitulation</French>
<Hungarian>Fogoly-beállítások</Hungarian> <Hungarian>Fogoly-beállítások</Hungarian>
<Russian>Настройки пленения</Russian> <Russian>Настройки пленения</Russian>
<Italian>Impostazioni prigioneri</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_Description"> <Key ID="STR_ACE_Captives_ModuleSettings_Description">
<English>Controls settings for surrender and cable ties</English> <English>Controls settings for surrender and cable ties</English>
@ -214,6 +219,7 @@
<French>Contrôle les paramètres de la rédition et des Serflex</French> <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> <Hungarian>Szabályozza a kapituláció és bilincselés beállításait</Hungarian>
<Russian>Управляет настройками сдачи в плен и связывания</Russian> <Russian>Управляет настройками сдачи в плен и связывания</Russian>
<Italian>Regola i parametri per la resa e le fascette</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_name"> <Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_name">
<English>Can handcuff own side</English> <English>Can handcuff own side</English>
@ -225,6 +231,7 @@
<French>Peut libérer sa propre faction</French> <French>Peut libérer sa propre faction</French>
<Hungarian>Saját oldal megbilincselhető</Hungarian> <Hungarian>Saját oldal megbilincselhető</Hungarian>
<Russian>Связать союзника</Russian> <Russian>Связать союзника</Russian>
<Italian>Si possono arrestare i compagni</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_description"> <Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_description">
<English>Can players cabletie units on their own side</English> <English>Can players cabletie units on their own side</English>
@ -236,6 +243,7 @@
<French>Les joueurs peuvent utiliser les Serflex sur leur propre camp</French> <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> <Hungarian>A játékosok megkötözhetik-e a saját oldalukon lévő egységeket</Hungarian>
<Russian>Разрешить игрокам связывать юнитов своей стороны</Russian> <Russian>Разрешить игрокам связывать юнитов своей стороны</Russian>
<Italian>I giocatori posso arrestare le unità della propria fazione</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_name"> <Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_name">
<English>Allow surrendering</English> <English>Allow surrendering</English>
@ -247,6 +255,7 @@
<French>Permettre la capitulation</French> <French>Permettre la capitulation</French>
<Hungarian>Kapituláció engedélyezése</Hungarian> <Hungarian>Kapituláció engedélyezése</Hungarian>
<Russian>Сдаться в плен</Russian> <Russian>Сдаться в плен</Russian>
<Italian>Permetti la resa</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_description"> <Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_description">
<English>Players can surrender after holstering their weapon</English> <English>Players can surrender after holstering their weapon</English>
@ -258,6 +267,7 @@
<French>Les joueurs peuvent se rendre après avoir rangé leur arme</French> <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> <Hungarian>A játékosok megadhatják magukat a fegyverük elrakása után</Hungarian>
<Russian>Игроки могут сдаться в плен после того, как уберут оружие</Russian> <Russian>Игроки могут сдаться в плен после того, как уберут оружие</Russian>
<Italian>I giocatori possono arrendersi dopo aver messo l'arma nella fondina</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_name"> <Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_name">
<English>Require surrendering</English> <English>Require surrendering</English>
@ -267,6 +277,7 @@
<Russian>Требовать пленения</Russian> <Russian>Требовать пленения</Russian>
<Spanish>Requiere rendición</Spanish> <Spanish>Requiere rendición</Spanish>
<Czech>Vzdávání vyžadováno</Czech> <Czech>Vzdávání vyžadováno</Czech>
<Italian>Richiede arrendersi</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description"> <Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description">
<English>Require Players to surrender before they can be arrested</English> <English>Require Players to surrender before they can be arrested</English>
@ -276,6 +287,7 @@
<Russian>Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать</Russian> <Russian>Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать</Russian>
<Spanish>Requiere que los Jugadores se rindan antes de arrestarlos</Spanish> <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> <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>
<Key ID="STR_ACE_Captives_SurrenderOnly"> <Key ID="STR_ACE_Captives_SurrenderOnly">
<English>Surrendering only</English> <English>Surrendering only</English>
@ -285,6 +297,7 @@
<Russian>Только сдавшийся в плен</Russian> <Russian>Только сдавшийся в плен</Russian>
<Spanish>Solo rendición</Spanish> <Spanish>Solo rendición</Spanish>
<Czech>Pouze vzdávání</Czech> <Czech>Pouze vzdávání</Czech>
<Italian>Solo arrendersi</Italian>
</Key> </Key>
<Key ID="STR_ACE_Captives_SurrenderOrNoWeapon"> <Key ID="STR_ACE_Captives_SurrenderOrNoWeapon">
<English>Surrendering or No weapon</English> <English>Surrendering or No weapon</English>
@ -294,6 +307,7 @@
<Russian>Сдавшийся или безоружный</Russian> <Russian>Сдавшийся или безоружный</Russian>
<Spanish>Rendición o desarme</Spanish> <Spanish>Rendición o desarme</Spanish>
<Czech>Vzdávání nebo beze zbraně</Czech> <Czech>Vzdávání nebo beze zbraně</Czech>
<Italian>Arrendersi o no armi</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -95,4 +95,9 @@ class Extended_InitPost_EventHandlers {
init = QUOTE(_this call DFUNC(initObject)); init = QUOTE(_this call DFUNC(initObject));
}; };
}; };
class Land_PortableLight_single_F {
class ADDON {
init = QUOTE(_this call DFUNC(initObject));
};
};
}; };

View File

@ -45,7 +45,7 @@ class CfgVehicles {
description = CSTRING(MakeLoadable_description); description = CSTRING(MakeLoadable_description);
typeName = "BOOL"; typeName = "BOOL";
defaultValue = 1; defaultValue = 1;
}; };
class setSize { class setSize {
displayName = CSTRING(makeLoadable_setSize_displayName); displayName = CSTRING(makeLoadable_setSize_displayName);
typeName = "NUMBER"; typeName = "NUMBER";
@ -268,6 +268,13 @@ class CfgVehicles {
GVAR(size) = 6; 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 // objects
class RoadCone_F: ThingX { class RoadCone_F: ThingX {
GVAR(size) = 1; 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;
};
}; };

View File

@ -9,6 +9,7 @@
<Russian>Загрузить</Russian> <Russian>Загрузить</Russian>
<Czech>Naložit</Czech> <Czech>Naložit</Czech>
<Spanish>Cargar</Spanish> <Spanish>Cargar</Spanish>
<Italian>Carica</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_unloadObject"> <Key ID="STR_ACE_Cargo_unloadObject">
<English>Unload</English> <English>Unload</English>
@ -18,6 +19,7 @@
<Russian>Выгрузить</Russian> <Russian>Выгрузить</Russian>
<Czech>Vyložit</Czech> <Czech>Vyložit</Czech>
<Spanish>Descargar</Spanish> <Spanish>Descargar</Spanish>
<Italian>Scarica</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_openMenu"> <Key ID="STR_ACE_Cargo_openMenu">
<English>Cargo</English> <English>Cargo</English>
@ -27,6 +29,7 @@
<Russian>Грузовой отсек</Russian> <Russian>Грузовой отсек</Russian>
<Czech>Náklad</Czech> <Czech>Náklad</Czech>
<Spanish>Carga</Spanish> <Spanish>Carga</Spanish>
<Italian>Carico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_cargoMenu"> <Key ID="STR_ACE_Cargo_cargoMenu">
<English>Cargo Menu</English> <English>Cargo Menu</English>
@ -36,6 +39,7 @@
<Russian>Грузовой отсек</Russian> <Russian>Грузовой отсек</Russian>
<Czech>Menu nákladu</Czech> <Czech>Menu nákladu</Czech>
<Spanish>Menu de carga</Spanish> <Spanish>Menu de carga</Spanish>
<Italian>Menu carico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_labelSpace"> <Key ID="STR_ACE_Cargo_labelSpace">
<English>Cargo space left: %1</English> <English>Cargo space left: %1</English>
@ -45,6 +49,7 @@
<Russian>Осталось мест: %1</Russian> <Russian>Осталось мест: %1</Russian>
<Czech>Zbývající prostor: %1</Czech> <Czech>Zbývající prostor: %1</Czech>
<Spanish>Espacio de carga restante: %1</Spanish> <Spanish>Espacio de carga restante: %1</Spanish>
<Italian>Carico rimasto:%1</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enable"> <Key ID="STR_ACE_Cargo_ModuleSettings_enable">
<English>Enable Cargo</English> <English>Enable Cargo</English>
@ -54,6 +59,7 @@
<Russian>Включить модуль перевозки грузов</Russian> <Russian>Включить модуль перевозки грузов</Russian>
<Czech>Povolit náklad</Czech> <Czech>Povolit náklad</Czech>
<Spanish>Habilitar carga</Spanish> <Spanish>Habilitar carga</Spanish>
<Italian>Abilita carico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description"> <Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description">
<English>Enable the load in cargo module</English> <English>Enable the load in cargo module</English>
@ -63,6 +69,7 @@
<Russian>Включает модуль погрузки и перевозки грузов</Russian> <Russian>Включает модуль погрузки и перевозки грузов</Russian>
<Spanish>Habilitar la carga en el módulo de carga</Spanish> <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> <Czech>Umožňuje naložit předměty do nákladového prostoru vozidla</Czech>
<Italian>Attiva il modulo per caricare</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_SettingsModule_DisplayName"> <Key ID="STR_ACE_Cargo_SettingsModule_DisplayName">
<English>Cargo Settings</English> <English>Cargo Settings</English>
@ -72,6 +79,7 @@
<Russian>Перевозка грузов</Russian> <Russian>Перевозка грузов</Russian>
<Czech>Nastavení nákladu</Czech> <Czech>Nastavení nákladu</Czech>
<Spanish>Ajustes de carga</Spanish> <Spanish>Ajustes de carga</Spanish>
<Italian>Impostazioni cargo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_SettingsModule_Description"> <Key ID="STR_ACE_Cargo_SettingsModule_Description">
<English>Configure the cargo module settings</English> <English>Configure the cargo module settings</English>
@ -81,6 +89,7 @@
<Russian>Конфигурирует настройки модуля перевозки грузов</Russian> <Russian>Конфигурирует настройки модуля перевозки грузов</Russian>
<Spanish>Configure los ajustes del módulo de carga</Spanish> <Spanish>Configure los ajustes del módulo de carga</Spanish>
<Czech>Konfigurace nákladního modulu</Czech> <Czech>Konfigurace nákladního modulu</Czech>
<Italian>Configura le impostazioni del module per il carico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_LoadedItem"> <Key ID="STR_ACE_Cargo_LoadedItem">
<English>%1&lt;br/&gt;loaded into&lt;br/&gt;%2</English> <English>%1&lt;br/&gt;loaded into&lt;br/&gt;%2</English>
@ -108,6 +117,7 @@
</Key> </Key>
<Key ID="STR_ACE_Cargo_LoadingItem"> <Key ID="STR_ACE_Cargo_LoadingItem">
<English>Loading Cargo</English> <English>Loading Cargo</English>
<German>Belade</German>
<Portuguese>Carregando carga</Portuguese> <Portuguese>Carregando carga</Portuguese>
<Polish>Ładowanie cargo</Polish> <Polish>Ładowanie cargo</Polish>
<Czech>Nakládám</Czech> <Czech>Nakládám</Czech>
@ -115,6 +125,7 @@
</Key> </Key>
<Key ID="STR_ACE_Cargo_UnloadingItem"> <Key ID="STR_ACE_Cargo_UnloadingItem">
<English>Unloading Cargo</English> <English>Unloading Cargo</English>
<German>Entlade</German>
<Portuguese>Descarregando carga</Portuguese> <Portuguese>Descarregando carga</Portuguese>
<Polish>Rozładowywanie cargo</Polish> <Polish>Rozładowywanie cargo</Polish>
<Czech>Vykládám</Czech> <Czech>Vykládám</Czech>
@ -122,6 +133,7 @@
</Key> </Key>
<Key ID="STR_ACE_Cargo_LoadingFailed"> <Key ID="STR_ACE_Cargo_LoadingFailed">
<English>%1&lt;br/&gt;could not be loaded</English> <English>%1&lt;br/&gt;could not be loaded</English>
<German>%1&lt;br/&gt;konnte nicht eingeladen werden</German>
<Portuguese>%1&lt;br/&gt;não pode ser carregado</Portuguese> <Portuguese>%1&lt;br/&gt;não pode ser carregado</Portuguese>
<Polish>%1&lt;br/&gt;nie mógł zostać załadowany</Polish> <Polish>%1&lt;br/&gt;nie mógł zostać załadowany</Polish>
<Czech>%1&lt;br/&gt;nemůže být naloženo</Czech> <Czech>%1&lt;br/&gt;nemůže být naloženo</Czech>
@ -129,6 +141,7 @@
</Key> </Key>
<Key ID="STR_ACE_Cargo_UnloadingFailed"> <Key ID="STR_ACE_Cargo_UnloadingFailed">
<English>%1&lt;br/&gt;could not be unloaded</English> <English>%1&lt;br/&gt;could not be unloaded</English>
<German>%1&lt;br/&gt;konnte nicht entladen werden</German>
<Portuguese>%1&lt;br/&gt;não pode ser descarregado</Portuguese> <Portuguese>%1&lt;br/&gt;não pode ser descarregado</Portuguese>
<Polish>%1&lt;br/&gt;nie mógł zostać rozładowany</Polish> <Polish>%1&lt;br/&gt;nie mógł zostać rozładowany</Polish>
<Czech>%1&lt;br/&gt;nemůže být vyloženo</Czech> <Czech>%1&lt;br/&gt;nemůže být vyloženo</Czech>
@ -136,12 +149,17 @@
</Key> </Key>
<Key ID="STR_ACE_Cargo_makeLoadable_displayName"> <Key ID="STR_ACE_Cargo_makeLoadable_displayName">
<English>Make Object Loadable</English> <English>Make Object Loadable</English>
<German>Füge Objekt zum Frachtsystem hinzu</German>
<Polish>Ustaw jako ładowalny</Polish>
</Key> </Key>
<Key ID="STR_ACE_Cargo_makeLoadable_description"> <Key ID="STR_ACE_Cargo_makeLoadable_description">
<English>Sets the synced object as loadable by the cargo system.</English> <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>
</Key> </Key>
<Key ID="STR_ACE_Cargo_makeLoadable_setSize_displayName"> <Key ID="STR_ACE_Cargo_makeLoadable_setSize_displayName">
<English>Object's Size</English> <English>Object's Size</English>
<Polish>Rozmiar obiektu</Polish>
</Key> </Key>
</Package> </Package>
</Project> </Project>

11
addons/common/CfgEden.hpp Normal file
View File

@ -0,0 +1,11 @@
class Cfg3DEN {
class Object {
class AttributeCategories {
class ace_attributes {
displayName = CSTRING(Options);
collapsed = 1;
class Attributes {};
};
};
};
};

View File

@ -59,3 +59,8 @@ class Extended_Local_EventHandlers {
}; };
}; };
class Extended_FiredBIS_EventHandlers {
class All {
ADDON = QUOTE(_this call FUNC(firedEH));
};
};

View File

@ -13,7 +13,7 @@ class CfgWeapons {
}; };
class ACE_FakePrimaryWeapon: Rifle_Base_F { class ACE_FakePrimaryWeapon: Rifle_Base_F {
scope = 2; scope = 1;
scopeCurator = 1; scopeCurator = 1;
scopeArsenal = 1; scopeArsenal = 1;
displayName = ""; displayName = "";

View File

@ -251,7 +251,7 @@ call FUNC(checkFiles);
// Publish all settings data after all configs and modules are read // Publish all settings data after all configs and modules are read
publicVariable QGVAR(settings); publicVariable QGVAR(settings);
}; };
// Load user settings from profile // Load user settings from profile
if (hasInterface) then { if (hasInterface) then {
call FUNC(loadSettingsFromProfile); call FUNC(loadSettingsFromProfile);
@ -476,6 +476,8 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
}; };
}] call FUNC(addEventhandler); }] call FUNC(addEventhandler);
["useItem", DFUNC(useItem)] call FUNC(addEventHandler);
////////////////////////////////////////////////// //////////////////////////////////////////////////
// Add various canInteractWith conditions // Add various canInteractWith conditions

View File

@ -21,7 +21,6 @@ PREP(changeProjectileDirection);
PREP(checkFiles); PREP(checkFiles);
PREP(checkPBOs); PREP(checkPBOs);
PREP(claim); PREP(claim);
PREP(codeToLetter);
PREP(codeToString); PREP(codeToString);
PREP(createOrthonormalReference); PREP(createOrthonormalReference);
PREP(currentChannel); PREP(currentChannel);
@ -47,6 +46,7 @@ PREP(execRemoteFnc);
PREP(executePersistent); PREP(executePersistent);
PREP(filter); PREP(filter);
PREP(findUnloadPosition); PREP(findUnloadPosition);
PREP(firedEH);
PREP(fixCollision); PREP(fixCollision);
PREP(fixFloating); PREP(fixFloating);
PREP(fixLoweredRifleAnimation); PREP(fixLoweredRifleAnimation);
@ -101,12 +101,9 @@ PREP(hasItem);
PREP(hasMagazine); PREP(hasMagazine);
PREP(headBugFix); PREP(headBugFix);
PREP(hideUnit); PREP(hideUnit);
PREP(inheritsFrom);
PREP(insertionSort); PREP(insertionSort);
PREP(interpolateFromArray); PREP(interpolateFromArray);
PREP(inTransitionAnim); PREP(inTransitionAnim);
PREP(inWater);
PREP(isAlive);
PREP(isAutoWind); PREP(isAutoWind);
PREP(isAwake); PREP(isAwake);
PREP(isEngineer); PREP(isEngineer);
@ -115,9 +112,7 @@ PREP(isFeatureCameraActive);
PREP(isInBuilding); PREP(isInBuilding);
PREP(isModLoaded); PREP(isModLoaded);
PREP(isPlayer); PREP(isPlayer);
PREP(isTurnedOut);
PREP(isUnderwater); PREP(isUnderwater);
PREP(letterToCode);
PREP(lightIntensityFromObject); PREP(lightIntensityFromObject);
PREP(loadPerson); PREP(loadPerson);
PREP(loadPersonLocal); PREP(loadPersonLocal);
@ -169,7 +164,6 @@ PREP(setSettingFromConfig);
PREP(setVariableJIP); PREP(setVariableJIP);
PREP(setVariablePublic); PREP(setVariablePublic);
PREP(setVolume); PREP(setVolume);
PREP(sortAlphabeticallyBy);
PREP(showHud); PREP(showHud);
PREP(statusEffect_addType); PREP(statusEffect_addType);
PREP(statusEffect_get); PREP(statusEffect_get);
@ -189,7 +183,6 @@ PREP(toHex);
PREP(toNumber); PREP(toNumber);
PREP(unhideUnit); PREP(unhideUnit);
PREP(uniqueElements); PREP(uniqueElements);
PREP(uniqueElementsOnly);
PREP(unloadPerson); PREP(unloadPerson);
PREP(unloadPersonLocal); PREP(unloadPersonLocal);
PREP(unmuteUnit); PREP(unmuteUnit);
@ -216,8 +209,6 @@ PREP(getWeaponMuzzles);
PREP(getConfigTypeObject); PREP(getConfigTypeObject);
PREP(getConfigGunner); PREP(getConfigGunner);
PREP(getConfigCommander); PREP(getConfigCommander);
PREP(getHitPoints);
PREP(getHitPointsWithSelections);
PREP(getSelectionsWithoutHitPoints); PREP(getSelectionsWithoutHitPoints);
PREP(getReflectorsWithSelections); PREP(getReflectorsWithSelections);
PREP(getLightProperties); PREP(getLightProperties);
@ -256,7 +247,8 @@ PREP(addCuratorUnloadEventhandler);
PREP(fixCrateContent); PREP(fixCrateContent);
//ACE events global variables //ACE events global variables
GVAR(events) = [[],[]]; GVAR(eventsLocation) = createLocation ["ACE_HashLocation", [-10000,-10000,-10000], 0, 0];
GVAR(eventsLocation) setText QGVAR(eventsLocation);
PREP(globalEvent); PREP(globalEvent);
PREP(_handleNetEvent); PREP(_handleNetEvent);

View File

@ -24,6 +24,7 @@ class CfgPatches {
#include "CfgMoves.hpp" #include "CfgMoves.hpp"
#include "CfgVoice.hpp" #include "CfgVoice.hpp"
#include "CfgUnitInsignia.hpp" #include "CfgUnitInsignia.hpp"
#include "CfgEden.hpp"
class ACE_Rsc_Display_Base { class ACE_Rsc_Display_Base {
idd = -1; idd = -1;
@ -79,7 +80,7 @@ class CfgUIGrids {
displayName = "ACE Hint"; displayName = "ACE Hint";
description = "Textual in game feedback to the player."; description = "Textual in game feedback to the player.";
preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa"; preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa";
saveToProfile[] = {0,1}; saveToProfile[] = {0,1};
}; };
}; };
}; };

View File

@ -16,12 +16,9 @@ params ["_eventType", "_event"];
if (_eventType == "ACEg") then { if (_eventType == "ACEg") then {
_event params ["_eventName", "_eventArgs"]; _event params ["_eventName", "_eventArgs"];
GVAR(events) params ["_eventNames"];
private _eventIndex = _eventNames find _eventName; private _eventFunctions = GVAR(eventsLocation) getVariable _eventName;
if (!isNil "_eventFunctions") then {
if (_eventIndex != -1) then {
private _events = (GVAR(events) select 1) select _eventIndex;
#ifdef DEBUG_EVENTS #ifdef DEBUG_EVENTS
ACE_LOGINFO_1("* Net Event %1",_eventName); ACE_LOGINFO_1("* Net Event %1",_eventName);
@ -35,7 +32,7 @@ if (_eventType == "ACEg") then {
ACE_LOGINFO_1(" ID: %1",_forEachIndex); ACE_LOGINFO_1(" ID: %1",_forEachIndex);
#endif #endif
}; };
} forEach _events; } forEach _eventFunctions;
}; };
}; };

View File

@ -15,18 +15,11 @@
params ["_eventName", "_eventCode"]; params ["_eventName", "_eventCode"];
GVAR(events) params ["_eventNames"]; private _eventFunctions = GVAR(eventsLocation) getVariable _eventName;
private _eventFunctions = []; if (isNil "_eventFunctions") then {
private _eventIndex = _eventNames find _eventName; _eventFunctions = [];
GVAR(eventsLocation) setVariable [_eventName, _eventFunctions];
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];
}; };
_eventFunctions pushBack _eventCode // Return event function count _eventFunctions pushBack _eventCode // Return event function count

View File

@ -16,7 +16,7 @@
params ["_unit", "_target", ["_exceptions", []]]; params ["_unit", "_target", ["_exceptions", []]];
_exceptions = [_exceptions, {toLower _this}] call FUNC(map); _exceptions = _exceptions apply {toLower _x};
private _owner = _target getVariable [QGVAR(owner), objNull]; private _owner = _target getVariable [QGVAR(owner), objNull];

View File

@ -21,8 +21,8 @@ ACE_LOGINFO_1("ACE is version %1.",_version);
//private _addons = activatedAddons; // broken with High-Command module, see #2134 //private _addons = activatedAddons; // broken with High-Command module, see #2134
private _addons = "true" configClasses (configFile >> "CfgPatches");// private _addons = "true" configClasses (configFile >> "CfgPatches");//
_addons = [_addons, {toLower configName _this}] call FUNC(map);// _addons = _addons apply {toLower configName _x};//
_addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); _addons = _addons select {_x find "ace_" == 0};
{ {
if (getText (configFile >> "CfgPatches" >> _x >> "versionStr") != _version) then { if (getText (configFile >> "CfgPatches" >> _x >> "versionStr") != _version) then {
@ -63,7 +63,7 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter);
/////////////// ///////////////
if (isMultiplayer) then { if (isMultiplayer) then {
// don't check optional addons // 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 { if (isServer) then {
// send servers version of ACE to all clients // send servers version of ACE to all clients

View File

@ -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

View File

@ -17,6 +17,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
ACE_DEPRECATED("ace_common_fnc_execPersistentFnc","3.7.0","ace_common_fnc_globalEvent");
GVAR(remoteFnc) = _this; GVAR(remoteFnc) = _this;
params ["_arguments", "_function", "_unit", "_name"]; params ["_arguments", "_function", "_unit", "_name"];

View File

@ -20,6 +20,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
ACE_DEPRECATED("ace_common_fnc_execRemoteFnc","3.7.0","ace_common_fnc_globalEvent");
GVAR(remoteFnc) = _this; GVAR(remoteFnc) = _this;
params ["_arguments", "_function", ["_unit", 2]]; params ["_arguments", "_function", ["_unit", 2]];

View File

@ -9,15 +9,16 @@
* Return Value: * Return Value:
* Final array * Final array
* *
* Usage:
* [[0,1,2,3,4], {_this > 2}] call FUNC(filter) ==> [3,4]
*
* Public: Yes * Public: Yes
*
* Deprecated
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params [["_array", [], [[]]], ["_code", {}, [{}]]]; params [["_array", [], [[]]], ["_code", {}, [{}]]];
ACE_DEPRECATED("ace_common_fnc_filter","3.7.0","select CODE");
private _result = []; private _result = [];
{ {

View File

@ -0,0 +1,68 @@
/*
* Author: esteldunedain
* Unfied handling of weapon fire
*
* Argument:
* 0: unit - Object the event handler is assigned to <OBJECT>
* 1: weapon - Fired weapon <STRING>
* 2: muzzle - Muzzle that was used <STRING>
* 3: mode - Current mode of the fired weapon <STRING>
* 4: ammo - Ammo used <STRING>
* 5: magazine - magazine name which was used <STRING>
* 6: projectile - Object of the projectile that was shot <OBJECT>
*
* Return value:
* None
*
* Public: No
*/
#include "script_component.hpp"
BEGIN_COUNTER(firedEH);
params ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile"];
TRACE_7("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile);
if (_unit isKindOf "CAManBase") then {
// The unit it on foot
if (_unit == ACE_player) then {
["firedPlayer", _this] call FUNC(localEvent);
} else {
if ([_unit] call EFUNC(common,isPlayer)) then {
["firedPlayerNonLocal", _this] call FUNC(localEvent);
} else {
["firedNonPlayer", _this] call FUNC(localEvent);
};
};
} else {
// The unit is a vehicle
private _vehicle = _unit;
// Get the gunner and turret path.
// Code based on FUNC(getGunner), extracted for efficency.
private _gunner = objNull;
private _turret = [];
{
if (_weapon in (_unit weaponsTurret _x)) exitWith {
_gunner = _unit turretUnit _x;
_turret = _x;
};
false
} count allTurrets [_unit, true];
// Ensure that at least the pilot is returned if there is no gunner
if (isManualFire _unit && {isNull _gunner}) then {
_gunner = effectiveCommander _unit;
};
if (_gunner == ACE_player) then {
["firedPlayerVehicle", _this] call FUNC(localEvent);
} else {
if ([_gunner] call EFUNC(common,isPlayer)) then {
["firedPlayerVehicleNonLocal", _this] call FUNC(localEvent);
} else {
["firedNonPlayerVehicle", _this] call FUNC(localEvent);
};
};
};
END_COUNTER(firedEH);

View File

@ -16,4 +16,4 @@ params ["_name", "_cfgClass"];
private _classes = format ["configName inheritsFrom _x == '%1'", _name] configClasses (configFile >> _cfgClass); private _classes = format ["configName inheritsFrom _x == '%1'", _name] configClasses (configFile >> _cfgClass);
[_classes, {configName _this}] call FUNC(map) // return _classes apply {configName _x} // return

View File

@ -30,7 +30,7 @@ private _gunner = objNull;
// ensure that at least the pilot is returned if there is no gunner // ensure that at least the pilot is returned if there is no gunner
if (isManualFire _vehicle && {isNull _gunner}) then { if (isManualFire _vehicle && {isNull _gunner}) then {
_gunner = driver _vehicle; _gunner = effectiveCommander _vehicle;
}; };
_gunner _gunner

View File

@ -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) - [""]

View File

@ -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

View File

@ -14,4 +14,4 @@
params [["_vehicle", objNull, [objNull]]]; 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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -15,12 +15,9 @@
params ["_eventName", "_eventArgs"]; params ["_eventName", "_eventArgs"];
GVAR(events) params ["_eventNames", "_eventArray"]; private _eventFunctions = GVAR(eventsLocation) getVariable _eventName;
private _eventIndex = _eventNames find _eventName; if (!isNil "_eventFunctions") then {
if (_eventIndex != -1) then {
private _events = _eventArray select _eventIndex;
#ifdef DEBUG_EVENTS #ifdef DEBUG_EVENTS
ACE_LOGINFO_1("* Local Event: %1",_eventName); ACE_LOGINFO_1("* Local Event: %1",_eventName);
@ -35,5 +32,5 @@ if (_eventIndex != -1) then {
ACE_LOGINFO_1(" ID: %1",_forEachIndex); ACE_LOGINFO_1(" ID: %1",_forEachIndex);
#endif #endif
}; };
} forEach _events; } forEach _eventFunctions;
}; };

View File

@ -1,6 +1,6 @@
/* /*
* Author: KoffeinFlummi, commy2 * 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: * Arguments:
* 0: Array to be thingied. * 0: Array to be thingied.
@ -9,15 +9,16 @@
* Return Value: * Return Value:
* Final array * Final array
* *
* Usage:
* [["2", "gobblecock", "25"], {parseNumber _this}] call FUNC(map) ==> [2, 0, 25]
*
* Public: Yes * Public: Yes
*
* Deprecated
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params [["_array", [], [[]]], ["_code", {}, [{}]]]; params [["_array", [], [[]]], ["_code", {}, [{}]]];
ACE_DEPRECATED("ace_common_fnc_map","3.7.0","apply");
// copy array to not alter the original one // copy array to not alter the original one
_array = + _array; _array = + _array;

View File

@ -14,11 +14,4 @@
params ["_eventName"]; params ["_eventName"];
GVAR(events) params ["_eventNames", "_events"]; GVAR(eventsLocation) setVariable [_eventName, nil];
private _eventFunctions = [];
private _eventIndex = _eventNames find _eventName;
if (_eventIndex != -1) then {
_events set [_eventIndex, []];
};

View File

@ -15,12 +15,9 @@
params ["_eventName", "_eventCodeIndex"]; params ["_eventName", "_eventCodeIndex"];
GVAR(events) params ["_eventNames", "_events"]; private _eventFunctions = GVAR(eventsLocation) getVariable _eventName;
private _eventFunctions = []; if (isNil "_eventFunctions") exitWith {TRACE_1("eventName not found",_eventName);};
private _eventIndex = _eventNames find _eventName; if ((_eventCodeIndex < 0) || {(count _eventFunctions) <= _eventCodeIndex}) exitWith {TRACE_2("index out of bounds",_eventName,_eventCodeIndex);};
if (_eventIndex != -1) then { _eventFunctions set [_eventCodeIndex, nil];
_eventFunctions = _events select _eventIndex;
_eventFunctions set [_eventCodeIndex, nil];
};

View File

@ -19,7 +19,7 @@ params [["_unit", objNull, [objNull]], ["_magazineType", "", [""]], ["_ammoCount
private _isRemoved = false; private _isRemoved = false;
// Check uniform // 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]; private _index = _magazines find [_magazineType, _ammoCount];
if (_index > -1) exitWith { if (_index > -1) exitWith {
@ -39,7 +39,7 @@ if (_index > -1) exitWith {
}; };
// Check vest // 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]; _index = _magazines find [_magazineType, _ammoCount];
if (_index > -1) exitWith { if (_index > -1) exitWith {
@ -59,7 +59,7 @@ if (_index > -1) exitWith {
}; };
// Check backpack // 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]; _index = _magazines find [_magazineType, _ammoCount];
if (_index > -1) exitWith { if (_index > -1) exitWith {

View File

@ -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

View File

@ -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)

View File

@ -480,6 +480,7 @@
<French>Vérifier les PBOs</French> <French>Vérifier les PBOs</French>
<Hungarian>PBO-k ellenőrzése</Hungarian> <Hungarian>PBO-k ellenőrzése</Hungarian>
<Russian>Проверка аддонов</Russian> <Russian>Проверка аддонов</Russian>
<Italian>Verifica i PBO</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Description"> <Key ID="STR_ACE_Common_CheckPBO_Description">
<English>Check addon integrity with server and do selected action if an addon is missing.</English> <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> <Portuguese>Este módulo verifica a integridade dos addons quando iniciamos a simulação</Portuguese>
<Russian>Выполняет проверку версий аддонов ACE у подключаемых игроков</Russian> <Russian>Выполняет проверку версий аддонов ACE у подключаемых игроков</Russian>
<French>Ce module contrôle si les PBOs de chaque joueur sont corrects</French> <French>Ce module contrôle si les PBOs de chaque joueur sont corrects</French>
<Italian>Verifica l'integrità dei singoli file nei mod</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName"> <Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
<English>Action</English> <English>Action</English>
@ -501,6 +503,7 @@
<French>Action</French> <French>Action</French>
<Hungarian>Cselekvés</Hungarian> <Hungarian>Cselekvés</Hungarian>
<Russian>Действие</Russian> <Russian>Действие</Russian>
<Italian>Azione</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_Description"> <Key ID="STR_ACE_Common_CheckPBO_Action_Description">
<English>What to do with people who do not have the right PBOs?</English> <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> <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> <Hungarian>Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k?</Hungarian>
<Russian>Что делать с игроками с неправильными аддонами?</Russian> <Russian>Что делать с игроками с неправильными аддонами?</Russian>
<Italian>Cosa fare quando i giocatori non hanno i PBO verificati?</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnOnce"> <Key ID="STR_ACE_Common_CheckPBO_Action_WarnOnce">
<English>Warn once</English> <English>Warn once</English>
@ -523,6 +527,7 @@
<French>Avertir une fois</French> <French>Avertir une fois</French>
<Hungarian>Egyszeri figyelmeztetés</Hungarian> <Hungarian>Egyszeri figyelmeztetés</Hungarian>
<Russian>Предупредить один раз</Russian> <Russian>Предупредить один раз</Russian>
<Italian>Avvisa una volta</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnPerm"> <Key ID="STR_ACE_Common_CheckPBO_Action_WarnPerm">
<English>Warn (permanent)</English> <English>Warn (permanent)</English>
@ -534,6 +539,7 @@
<French>Avertir (permanent)</French> <French>Avertir (permanent)</French>
<Hungarian>Figyelmeztetés (tartós)</Hungarian> <Hungarian>Figyelmeztetés (tartós)</Hungarian>
<Russian>Предупреждать (постоянно)</Russian> <Russian>Предупреждать (постоянно)</Russian>
<Italian>Mostra un avviso permanente</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_Kick"> <Key ID="STR_ACE_Common_CheckPBO_Action_Kick">
<English>Kick</English> <English>Kick</English>
@ -545,6 +551,7 @@
<French>Ejecter</French> <French>Ejecter</French>
<Hungarian>Kirúgás</Hungarian> <Hungarian>Kirúgás</Hungarian>
<Russian>Кикнуть</Russian> <Russian>Кикнуть</Russian>
<Italian>Espelli</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_DisplayName"> <Key ID="STR_ACE_Common_CheckPBO_CheckAll_DisplayName">
<English>Check all addons</English> <English>Check all addons</English>
@ -556,6 +563,7 @@
<French>Vérifier tous les addons</French> <French>Vérifier tous les addons</French>
<Hungarian>Összes bővítmény ellenőrzése</Hungarian> <Hungarian>Összes bővítmény ellenőrzése</Hungarian>
<Russian>Проверять все аддоны</Russian> <Russian>Проверять все аддоны</Russian>
<Italian>Controlla tutti i mod</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_Description"> <Key ID="STR_ACE_Common_CheckPBO_CheckAll_Description">
<English>Check all addons instead of only those of ACE?</English> <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> <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> <Hungarian>Az összes bővítmény ellenőrzése, csak az ACE helyett?</Hungarian>
<Russian>Проверять все аддоны, а не только ACE?</Russian> <Russian>Проверять все аддоны, а не только ACE?</Russian>
<Italian>Verifica tutti i mod oppure solamente ACE?</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_DisplayName"> <Key ID="STR_ACE_Common_CheckPBO_Whitelist_DisplayName">
<English>Whitelist</English> <English>Whitelist</English>
@ -578,6 +587,7 @@
<French>Liste blanche</French> <French>Liste blanche</French>
<Hungarian>Fehérlista</Hungarian> <Hungarian>Fehérlista</Hungarian>
<Russian>Вайтлист доп. аддонов</Russian> <Russian>Вайтлист доп. аддонов</Russian>
<Italian>Whitelist</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_Description"> <Key ID="STR_ACE_Common_CheckPBO_Whitelist_Description">
<English>What addons are allowed regardless?</English> <English>What addons are allowed regardless?</English>
@ -589,6 +599,7 @@
<French>Quels addons sont tolérés</French> <French>Quels addons sont tolérés</French>
<Hungarian>Milyen bővítmények vannak feltétlenül engedélyezve?</Hungarian> <Hungarian>Milyen bővítmények vannak feltétlenül engedélyezve?</Hungarian>
<Russian>Какие аддоны дополнительно разрешены?</Russian> <Russian>Какие аддоны дополнительно разрешены?</Russian>
<Italian>Quali mod sono comunque permessi?</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_LSDVehicles_DisplayName"> <Key ID="STR_ACE_Common_LSDVehicles_DisplayName">
<English>LSD Vehicles</English> <English>LSD Vehicles</English>
@ -600,6 +611,7 @@
<French>LSD - Véhicules</French> <French>LSD - Véhicules</French>
<Hungarian>LSD járművek</Hungarian> <Hungarian>LSD járművek</Hungarian>
<Russian>Транспорт под LSD</Russian> <Russian>Транспорт под LSD</Russian>
<Italian>Veicoli LSD</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_LSDVehicles_Description"> <Key ID="STR_ACE_Common_LSDVehicles_Description">
<English>Adds LSD effect to synchronized vehicle</English> <English>Adds LSD effect to synchronized vehicle</English>
@ -611,6 +623,7 @@
<French>Ajoute l'effet LSD aux véhicules synchronisés</French> <French>Ajoute l'effet LSD aux véhicules synchronisés</French>
<Hungarian>LSD-effekt hozzáadása a szinkronizált járművekhez</Hungarian> <Hungarian>LSD-effekt hozzáadása a szinkronizált járművekhez</Hungarian>
<Russian>Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам</Russian> <Russian>Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам</Russian>
<Italian>Agguinge effetto LSD ai veicoli sincronizzati</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_toggleHandheldDevice"> <Key ID="STR_ACE_Common_toggleHandheldDevice">
<English>Toggle Handheld Device</English> <English>Toggle Handheld Device</English>
@ -622,6 +635,7 @@
<French>Allumer l'ordinateur de poche</French> <French>Allumer l'ordinateur de poche</French>
<Hungarian>Kézi eszköz kapcsolása</Hungarian> <Hungarian>Kézi eszköz kapcsolása</Hungarian>
<Russian>Включить портативное устройство</Russian> <Russian>Включить портативное устройство</Russian>
<Italian>Seleziona il palmare</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_closeHandheldDevice"> <Key ID="STR_ACE_Common_closeHandheldDevice">
<English>Close Handheld Device</English> <English>Close Handheld Device</English>
@ -633,6 +647,7 @@
<French>Fermer l'ordinateur de poche</French> <French>Fermer l'ordinateur de poche</French>
<Hungarian>Kézi eszköz bezárása</Hungarian> <Hungarian>Kézi eszköz bezárása</Hungarian>
<Russian>Закрыть портативное устройство</Russian> <Russian>Закрыть портативное устройство</Russian>
<Italian>Chiudi il palmare</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_cycleHandheldDevices"> <Key ID="STR_ACE_Common_cycleHandheldDevices">
<English>Cycle Handheld Devices</English> <English>Cycle Handheld Devices</English>
@ -644,6 +659,7 @@
<French>Changer (cycle) d'ordinateur de poche</French> <French>Changer (cycle) d'ordinateur de poche</French>
<Hungarian>Kézi eszköz váltása</Hungarian> <Hungarian>Kézi eszköz váltása</Hungarian>
<Russian>Следующее портативное устройство</Russian> <Russian>Следующее портативное устройство</Russian>
<Italian>Cambia il palmare</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_Disabled"> <Key ID="STR_ACE_Common_Disabled">
<English>Disabled</English> <English>Disabled</English>
@ -699,6 +715,7 @@
<Russian>Только в транспорте</Russian> <Russian>Только в транспорте</Russian>
<Czech>Pouze vozidla</Czech> <Czech>Pouze vozidla</Czech>
<Spanish>Solo vehículos</Spanish> <Spanish>Solo vehículos</Spanish>
<Italian>Solo veicoli</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_DoNotForce"> <Key ID="STR_ACE_Common_DoNotForce">
<English>Do Not Force</English> <English>Do Not Force</English>
@ -708,6 +725,7 @@
<Czech>Nevynucovat</Czech> <Czech>Nevynucovat</Czech>
<Portuguese>Não forçar</Portuguese> <Portuguese>Não forçar</Portuguese>
<Russian>Не обязывать</Russian> <Russian>Не обязывать</Russian>
<Italian>Non forzare</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment"> <Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment">
<English>ACE3 Equipment</English> <English>ACE3 Equipment</English>
@ -716,6 +734,7 @@
<Russian>ACE3 Снаряжение</Russian> <Russian>ACE3 Снаряжение</Russian>
<Czech>ACE3 Vybavení</Czech> <Czech>ACE3 Vybavení</Czech>
<Spanish>ACE3 Equipo</Spanish> <Spanish>ACE3 Equipo</Spanish>
<Italian>ACE3 Equipaggiamento</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryCommon"> <Key ID="STR_ACE_Common_ACEKeybindCategoryCommon">
<English>ACE3 Common</English> <English>ACE3 Common</English>
@ -725,6 +744,7 @@
<Russian>ACE3 Общие</Russian> <Russian>ACE3 Общие</Russian>
<Spanish>ACE3 Común</Spanish> <Spanish>ACE3 Común</Spanish>
<Czech>ACE3 Obecné</Czech> <Czech>ACE3 Obecné</Czech>
<Italian>ACE3 Generico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons"> <Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons">
<English>ACE3 Weapons</English> <English>ACE3 Weapons</English>
@ -734,6 +754,7 @@
<Russian>ACE3 Оружие</Russian> <Russian>ACE3 Оружие</Russian>
<Czech>ACE3 Zbraně</Czech> <Czech>ACE3 Zbraně</Czech>
<Spanish>ACE3 Armas</Spanish> <Spanish>ACE3 Armas</Spanish>
<Italian>ACE3 Armi</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryMovement"> <Key ID="STR_ACE_Common_ACEKeybindCategoryMovement">
<English>ACE3 Movement</English> <English>ACE3 Movement</English>
@ -743,6 +764,7 @@
<Russian>ACE3 Перемещение</Russian> <Russian>ACE3 Перемещение</Russian>
<Spanish>ACE3 Movimiento</Spanish> <Spanish>ACE3 Movimiento</Spanish>
<Czech>ACE3 Pohyb</Czech> <Czech>ACE3 Pohyb</Czech>
<Italian>ACE3 Movimento</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment"> <Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment">
<English>ACE3 Scope Adjustment</English> <English>ACE3 Scope Adjustment</English>
@ -752,6 +774,7 @@
<Russian>ACE3 Прицелы</Russian> <Russian>ACE3 Прицелы</Russian>
<Czech>ACE3 Nastavení optiky</Czech> <Czech>ACE3 Nastavení optiky</Czech>
<Spanish>ACE3 Ajuste de miras</Spanish> <Spanish>ACE3 Ajuste de miras</Spanish>
<Italian>ACE3 Aggiustamento Mirino</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles"> <Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles">
<English>ACE3 Vehicles</English> <English>ACE3 Vehicles</English>
@ -761,9 +784,12 @@
<Russian>ACE3 Транспорт</Russian> <Russian>ACE3 Транспорт</Russian>
<Czech>ACE3 Vozidla</Czech> <Czech>ACE3 Vozidla</Czech>
<Spanish>ACE3 Vehículos</Spanish> <Spanish>ACE3 Vehículos</Spanish>
<Italian>ACE3 Veicoli</Italian>
</Key> </Key>
<Key ID="STR_ACE_Common_NoRoomToUnload"> <Key ID="STR_ACE_Common_NoRoomToUnload">
<English>No Room to unload</English> <English>No Room to unload</English>
<German>Kein Platz zum Entladen</German>
<Polish>Brak miejsca na rozładunek</Polish>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -0,0 +1 @@
#include "\z\ace\addons\common\script_component.hpp"

View 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");

View File

@ -9,7 +9,7 @@
<Spanish>Alambre de espino</Spanish> <Spanish>Alambre de espino</Spanish>
<French>Fill barbelé</French> <French>Fill barbelé</French>
<Czech>Ostnatý drát</Czech> <Czech>Ostnatý drát</Czech>
<Italian>Concertina wire</Italian> <Italian>Filo spinato di concertina</Italian>
<Hungarian>Concertina wire</Hungarian> <Hungarian>Concertina wire</Hungarian>
<Portuguese>Arame farpado</Portuguese> <Portuguese>Arame farpado</Portuguese>
</Key> </Key>
@ -21,7 +21,7 @@
<Spanish>Bobina de alambre de espino</Spanish> <Spanish>Bobina de alambre de espino</Spanish>
<French>Bobine de fil barbelé</French> <French>Bobine de fil barbelé</French>
<Czech>Svitek ostnatého drátu</Czech> <Czech>Svitek ostnatého drátu</Czech>
<Italian>Concertina wire coil</Italian> <Italian>Bobina di concertina</Italian>
<Hungarian>Concertina wire coil</Hungarian> <Hungarian>Concertina wire coil</Hungarian>
<Portuguese>Bobina de arame farpado</Portuguese> <Portuguese>Bobina de arame farpado</Portuguese>
</Key> </Key>
@ -33,7 +33,7 @@
<Spanish>Desmontar alambre de espino</Spanish> <Spanish>Desmontar alambre de espino</Spanish>
<French>Descendre le fil barbelé</French> <French>Descendre le fil barbelé</French>
<Czech>Svinout ostnatý drát</Czech> <Czech>Svinout ostnatý drát</Czech>
<Italian>Dismount Concertina wire</Italian> <Italian>Smonta la concertina</Italian>
<Hungarian>Dismount Concertina wire</Hungarian> <Hungarian>Dismount Concertina wire</Hungarian>
<Portuguese>Desmontar arame farpado</Portuguese> <Portuguese>Desmontar arame farpado</Portuguese>
</Key> </Key>
@ -45,7 +45,7 @@
<Spanish>Desplegar alambre de espino</Spanish> <Spanish>Desplegar alambre de espino</Spanish>
<French>Mettre en place le fil barbelé</French> <French>Mettre en place le fil barbelé</French>
<Czech>Rozvinout ostnatý drát</Czech> <Czech>Rozvinout ostnatý drát</Czech>
<Italian>Deploy Concertina wire</Italian> <Italian>Posa il filo di concertina</Italian>
<Hungarian>Deploy Concertina wire</Hungarian> <Hungarian>Deploy Concertina wire</Hungarian>
<Portuguese>Colocar arame farpado</Portuguese> <Portuguese>Colocar arame farpado</Portuguese>
</Key> </Key>

View File

@ -9,6 +9,7 @@
<Russian>DAGR</Russian> <Russian>DAGR</Russian>
<Portuguese>DAGR</Portuguese> <Portuguese>DAGR</Portuguese>
<Czech>DAGR</Czech> <Czech>DAGR</Czech>
<Italian>DAGR</Italian>
</Key> </Key>
<Key ID="STR_ACE_DAGR_ConfigureDAGR"> <Key ID="STR_ACE_DAGR_ConfigureDAGR">
<English>Configure DAGR</English> <English>Configure DAGR</English>
@ -18,6 +19,7 @@
<Russian>Настроить DAGR</Russian> <Russian>Настроить DAGR</Russian>
<Portuguese>Configurar DAGR</Portuguese> <Portuguese>Configurar DAGR</Portuguese>
<Czech>Konfigurovat DAGR</Czech> <Czech>Konfigurovat DAGR</Czech>
<Italian>Configura il DAGR</Italian>
</Key> </Key>
<Key ID="STR_ACE_DAGR_ToggleDAGR"> <Key ID="STR_ACE_DAGR_ToggleDAGR">
<English>Toggle DAGR</English> <English>Toggle DAGR</English>
@ -27,6 +29,7 @@
<Russian>Вкл./выкл. DAGR</Russian> <Russian>Вкл./выкл. DAGR</Russian>
<Portuguese>Mostrar DAGR</Portuguese> <Portuguese>Mostrar DAGR</Portuguese>
<Czech>Přepnout DAGR</Czech> <Czech>Přepnout DAGR</Czech>
<Italian>Mostra il DAGR</Italian>
</Key> </Key>
<Key ID="STR_ACE_DAGR_Description"> <Key ID="STR_ACE_DAGR_Description">
<English>Defense Advanced GPS Receiver</English> <English>Defense Advanced GPS Receiver</English>
@ -36,6 +39,7 @@
<Russian>Военный многофункциональный GPS-приёмник</Russian> <Russian>Военный многофункциональный GPS-приёмник</Russian>
<Portuguese>Defense Advanced GPS Receiver</Portuguese> <Portuguese>Defense Advanced GPS Receiver</Portuguese>
<Czech>Defense Advanced GPS Receiver</Czech> <Czech>Defense Advanced GPS Receiver</Czech>
<Italian>Defense Advanced GPS Receiver</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -10,14 +10,6 @@ class Extended_PostInit_EventHandlers {
}; };
}; };
class Extended_FiredBIS_EventHandlers {
class CAManBase {
class ADDON {
firedBIS = QUOTE(_this call FUNC(replaceATWeapon));
};
};
};
// handle preloaded missile // handle preloaded missile
class Extended_InitPost_EventHandlers { class Extended_InitPost_EventHandlers {
class CAManBase { class CAManBase {

View File

@ -12,3 +12,8 @@ if (!hasInterface) exitWith {};
[_unit] call FUNC(takeLoadedATWeapon); [_unit] call FUNC(takeLoadedATWeapon);
[_unit] call FUNC(updateInventoryDisplay); [_unit] call FUNC(updateInventoryDisplay);
}] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler);
// Register fire event handler
// Only for the local player and for AI. Non-local players will handle it themselves
["firedPlayer", DFUNC(replaceATWeapon)] call EFUNC(common,addEventHandler);
["firedNonPlayer", DFUNC(replaceATWeapon)] call EFUNC(common,addEventHandler);

View File

@ -1,15 +1,9 @@
/* /*
* Author: bux, commy2 * Author: bux, commy2
* Replace the disposable launcher with the used dummy. * Replace the disposable launcher with the used dummy. Called from the unified fired EH.
* *
* Arguments: * Arguments:
* 0: unit - Object the event handler is assigned to <OBJECT> * None. Parameters inherited from EFUNC(common,firedEH)
* 1: weapon - Fired weapon <STRING>
* 2: muzzle - Muzzle that was used <STRING>
* 3: mode - Current mode of the fired weapon <STRING>
* 4: ammo - Ammo used <STRING>
* 5: magazine - magazine name which was used <STRING>
* 6: projectile - Object of the projectile that was shot <OBJECT>
* *
* Return Value: * Return Value:
* Nothing * Nothing
@ -21,8 +15,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_unit", "_weapon", "", "", "", "", "_projectile"]; //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"];
TRACE_3("params",_unit,_weapon,_projectile); TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
if (!local _unit || {_weapon != secondaryWeapon _unit}) exitWith {}; if (!local _unit || {_weapon != secondaryWeapon _unit}) exitWith {};

View File

@ -27,6 +27,11 @@ class Extended_Init_EventHandlers {
init = QUOTE(_this call DFUNC(initObject)); init = QUOTE(_this call DFUNC(initObject));
}; };
}; };
class Land_PortableLight_single_F {
class ADDON {
init = QUOTE(_this call DFUNC(initObject));
};
};
}; };
class Extended_Killed_EventHandlers { class Extended_Killed_EventHandlers {

View File

@ -32,7 +32,6 @@ class CfgVehicles {
// ammo boxes // ammo boxes
class ThingX; class ThingX;
class ReammoBox_F: ThingX { class ReammoBox_F: ThingX {
XEH_ENABLED;
GVAR(canCarry) = 0; GVAR(canCarry) = 0;
GVAR(carryPosition[]) = {0,1,1}; GVAR(carryPosition[]) = {0,1,1};
GVAR(carryDirection) = 0; GVAR(carryDirection) = 0;
@ -113,4 +112,15 @@ class CfgVehicles {
GVAR(carryPosition[]) = {0,1,1}; GVAR(carryPosition[]) = {0,1,1};
GVAR(carryDirection) = 0; 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;
};
}; };

View File

@ -56,6 +56,7 @@
<Portuguese>Levantar/Abaixar</Portuguese> <Portuguese>Levantar/Abaixar</Portuguese>
<Russian>Поднять/Опустить</Russian> <Russian>Поднять/Опустить</Russian>
<Czech>Zvýšit/Snížit</Czech> <Czech>Zvýšit/Snížit</Czech>
<Italian>Solleva/Abbassa</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -51,22 +51,103 @@ _explosivesList = [];
}; };
}; };
} forEach _result; } forEach _result;
if (_detonator != "ACE_DeadManSwitch") then {
// Add action to detonate all explosives tied to the detonator // Add action to detonate all explosives tied to the detonator
if (count _explosivesList > 0) then { if (count _explosivesList > 0) then {
_children pushBack [ _children pushBack [
[ [
"Explosive_All", "Explosive_All",
localize LSTRING(DetonateAll), localize LSTRING(DetonateAll),
getText(ConfigFile >> "CfgWeapons" >> _detonator >> "picture"), getText(ConfigFile >> "CfgWeapons" >> _detonator >> "picture"),
{(_this select 2) call FUNC(detonateExplosiveAll);}, {(_this select 2) call FUNC(detonateExplosiveAll);},
{true}, {true},
{}, {},
[_unit,_range,_explosivesList] [_unit,_range,_explosivesList]
] call EFUNC(interact_menu,createAction), ] call EFUNC(interact_menu,createAction),
[], [],
_unit _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 _children

View File

@ -19,16 +19,7 @@
params ["_unit"]; params ["_unit"];
TRACE_1("params",_unit); TRACE_1("params",_unit);
private ["_items", "_result", "_config"]; private _result = (items _unit) select {getNumber (ConfigFile >> "CfgWeapons" >> _x >> QGVAR(Detonator)) == 1};
_result = _result arrayIntersect _result;
_items = (items _unit);
_result = [];
{
_config = ConfigFile >> "CfgWeapons" >> _x;
if (getNumber (_config >> QGVAR(Detonator)) == 1 && {!(_x in _result)}) then {
_result pushBack _x;
};
} forEach _items;
_result _result

View File

@ -25,3 +25,24 @@ _deadman = [_unit, "DeadManSwitch"] call FUNC(getPlacedExplosives);
{ {
[_unit, -1, _x, true] call FUNC(detonateExplosive); [_unit, -1, _x, true] call FUNC(detonateExplosive);
} forEach _deadman; } 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
};

View File

@ -43,6 +43,7 @@
<Spanish>Detonar Todo</Spanish> <Spanish>Detonar Todo</Spanish>
<Russian>Подрыв всех</Russian> <Russian>Подрыв всех</Russian>
<Czech>Odpálit VŠE</Czech> <Czech>Odpálit VŠE</Czech>
<Polish>Detonuj wszystkie</Polish>
</Key> </Key>
<Key ID="STR_ACE_Explosives_DetonateCode"> <Key ID="STR_ACE_Explosives_DetonateCode">
<English>Explosive code: %1</English> <English>Explosive code: %1</English>
@ -87,6 +88,7 @@
<Russian>Заблокировано</Russian> <Russian>Заблокировано</Russian>
<Czech>Blokováno</Czech> <Czech>Blokováno</Czech>
<Polish>Zablokowany</Polish> <Polish>Zablokowany</Polish>
<Italian>Bloccato</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_CancelAction"> <Key ID="STR_ACE_Explosives_CancelAction">
<English>Cancel</English> <English>Cancel</English>
@ -542,6 +544,7 @@
<French>Module explosifs</French> <French>Module explosifs</French>
<Hungarian>Robbanóanyag-rendszer</Hungarian> <Hungarian>Robbanóanyag-rendszer</Hungarian>
<Russian>Взрывные устройства</Russian> <Russian>Взрывные устройства</Russian>
<Italian>Sistema esplosivi</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_RequireSpecialist_DisplayName"> <Key ID="STR_ACE_Explosives_RequireSpecialist_DisplayName">
<English>Require specialists?</English> <English>Require specialists?</English>
@ -553,6 +556,7 @@
<French>Requiert un spécialiste?</French> <French>Requiert un spécialiste?</French>
<Hungarian>Specialisták igénylése?</Hungarian> <Hungarian>Specialisták igénylése?</Hungarian>
<Russian>Требуется специалист?</Russian> <Russian>Требуется специалист?</Russian>
<Italian>Richiede lo specialista?</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_RequireSpecialist_Description"> <Key ID="STR_ACE_Explosives_RequireSpecialist_Description">
<English>Require explosive specialists to disable explosives? Default: No</English> <English>Require explosive specialists to disable explosives? Default: No</English>
@ -564,6 +568,7 @@
<French>Le désarmoçage d'explosif requiert un spécialiste? Défaut: non</French> <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> <Hungarian>Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem</Hungarian>
<Russian>Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет</Russian> <Russian>Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет</Russian>
<Italian>Si richiede lo specialista esplosivi per disabilitare esplosivi? Default: No</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_PunishNonSpecialists_DisplayName"> <Key ID="STR_ACE_Explosives_PunishNonSpecialists_DisplayName">
<English>Punish non-specialists?</English> <English>Punish non-specialists?</English>
@ -575,6 +580,7 @@
<French>Punir les non-spécialistes?</French> <French>Punir les non-spécialistes?</French>
<Hungarian>Nem-specialisták büntetése?</Hungarian> <Hungarian>Nem-specialisták büntetése?</Hungarian>
<Russian>Штраф не-специалистам?</Russian> <Russian>Штраф не-специалистам?</Russian>
<Italian>Penalizza i non-specialisti?</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_PunishNonSpecialists_Description"> <Key ID="STR_ACE_Explosives_PunishNonSpecialists_Description">
<English>Increase the time it takes to complete actions for non-specialists? Default: Yes</English> <English>Increase the time it takes to complete actions for non-specialists? Default: Yes</English>
@ -586,6 +592,7 @@
<French>Augmenter le temps nécessaire au désarmoçage pour les non-spécialistes? Défaut: oui</French> <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> <Hungarian>Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen</Hungarian>
<Russian>Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет</Russian> <Russian>Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет</Russian>
<Italian>Aumenta il tempo necessario per completare le azioni per i non-specialisti? Default:Sì</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_ExplodeOnDefuse_DisplayName"> <Key ID="STR_ACE_Explosives_ExplodeOnDefuse_DisplayName">
<English>Explode on defusal?</English> <English>Explode on defusal?</English>
@ -597,6 +604,7 @@
<French>Explosion si désamorçage?</French> <French>Explosion si désamorçage?</French>
<Hungarian>Robbanás hatástalanításkor?</Hungarian> <Hungarian>Robbanás hatástalanításkor?</Hungarian>
<Russian>Взрыв при разминир.?</Russian> <Russian>Взрыв при разминир.?</Russian>
<Italian>Esplode al disinnesco?</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_ExplodeOnDefuse_Description"> <Key ID="STR_ACE_Explosives_ExplodeOnDefuse_Description">
<English>Enable certain explosives to explode on defusal? Default: Yes</English> <English>Enable certain explosives to explode on defusal? Default: Yes</English>
@ -608,6 +616,7 @@
<French>Permet à certains explosifs d'exploser au désamorçage? Défaut: oui</French> <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> <Hungarian>Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen</Hungarian>
<Russian>Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да</Russian> <Russian>Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да</Russian>
<Italian>Abilita certi esplosivi ad esplodere al disinnesco? Default:Sì</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_Module_Description"> <Key ID="STR_ACE_Explosives_Module_Description">
<English>This module adjusts the settings related to explosives.</English> <English>This module adjusts the settings related to explosives.</English>
@ -619,28 +628,31 @@
<Hungarian>Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza.</Hungarian> <Hungarian>Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza.</Hungarian>
<Russian>Этот модуль управляет настройками, связанными со взрывными устройствами</Russian> <Russian>Этот модуль управляет настройками, связанными со взрывными устройствами</Russian>
<Spanish>Este módulo ajusta las configuraciones relacionadas con explosivos.</Spanish> <Spanish>Este módulo ajusta las configuraciones relacionadas con explosivos.</Spanish>
<Italian>Questo modulo permette di personlalizzare i parametri del modulo esplosivi.</Italian>
</Key> </Key>
<Key ID="STR_ACE_Explosives_Module_SLAMBottomAttack_DisplayName"> <Key ID="STR_ACE_Explosives_Module_SLAMBottomAttack_DisplayName">
<English>M6 SLAM Mine (Bottom Attack)</English> <English>M6 SLAM Mine (Bottom Attack)</English>
<!-- <Czech>Mina M6 SLAM</Czech> --> <!-- <Czech>Mina M6 SLAM</Czech> -->
<!-- <French>Mine M6 SLAM</French> --> <!-- <French>Mine M6 SLAM</French> -->
<!-- <German>M6-SLAM-Mine</German> --> <!-- <German>M6-SLAM-Mine</German> -->
<!-- <Italian>Mina M6 SLAM</Italian> --> <!-- <Italian>Mina M6 SLAM</Italian> -->
<!-- <Polish>Mina M6 SLAM</Polish> --> <!-- <Polish>Mina M6 SLAM</Polish> -->
<!-- <Portuguese>Mina SLAM M6</Portuguese> --> <!-- <Portuguese>Mina SLAM M6</Portuguese> -->
<!-- <Russian>ПТ-мина M6 SLAM</Russian> --> <!-- <Russian>ПТ-мина M6 SLAM</Russian> -->
<!-- <Spanish>Mina M6 SLAM</Spanish> --> <!-- <Spanish>Mina M6 SLAM</Spanish> -->
<Polish>Mina M6 SLAM (atak od dołu)</Polish>
</Key> </Key>
<Key ID="STR_ACE_Explosives_Module_SLAMSideAttack_DisplayName"> <Key ID="STR_ACE_Explosives_Module_SLAMSideAttack_DisplayName">
<English>M6 SLAM Mine (Side Attack)</English> <English>M6 SLAM Mine (Side Attack)</English>
<!-- <Czech>Mina M6 SLAM</Czech> --> <!-- <Czech>Mina M6 SLAM</Czech> -->
<!-- <French>Mine M6 SLAM</French> --> <!-- <French>Mine M6 SLAM</French> -->
<!-- <German>M6-SLAM-Mine</German> --> <!-- <German>M6-SLAM-Mine</German> -->
<!-- <Italian>Mina M6 SLAM</Italian> --> <!-- <Italian>Mina M6 SLAM</Italian> -->
<!-- <Polish>Mina M6 SLAM</Polish> --> <!-- <Polish>Mina M6 SLAM</Polish> -->
<!-- <Portuguese>Mina SLAM M6</Portuguese> --> <!-- <Portuguese>Mina SLAM M6</Portuguese> -->
<!-- <Russian>ПТ-мина M6 SLAM</Russian> --> <!-- <Russian>ПТ-мина M6 SLAM</Russian> -->
<!-- <Spanish>Mina M6 SLAM</Spanish> --> <!-- <Spanish>Mina M6 SLAM</Spanish> -->
<Polish>Mina M6 SLAM (atak od boku)</Polish>
</Key> </Key>
<Key ID="STR_ACE_Explosives_Module_IEDUrbanBig_Range_DisplayName"> <Key ID="STR_ACE_Explosives_Module_IEDUrbanBig_Range_DisplayName">
<English>Large IED (Urban, Pressure Plate)</English> <English>Large IED (Urban, Pressure Plate)</English>
@ -652,6 +664,7 @@
<!-- <Portuguese>AEI grande (urbano)</Portuguese> --> <!-- <Portuguese>AEI grande (urbano)</Portuguese> -->
<!-- <Russian>Большое СВУ (городское)</Russian> --> <!-- <Russian>Большое СВУ (городское)</Russian> -->
<!-- <Spanish>IED grande (Urbano)</Spanish> --> <!-- <Spanish>IED grande (Urbano)</Spanish> -->
<Polish>Duży IED (miejski, płyta naciskowa)</Polish>
</Key> </Key>
<Key ID="STR_ACE_Explosives_Module_IEDLandBig_Range_DisplayName"> <Key ID="STR_ACE_Explosives_Module_IEDLandBig_Range_DisplayName">
<English>Large IED (Dug-in, Pressure Plate)</English> <English>Large IED (Dug-in, Pressure Plate)</English>
@ -663,6 +676,7 @@
<!-- <Portuguese>AEI grande (entrincheirado)</Portuguese> --> <!-- <Portuguese>AEI grande (entrincheirado)</Portuguese> -->
<!-- <Russian>Большое СВУ (зарытое)</Russian> --> <!-- <Russian>Большое СВУ (зарытое)</Russian> -->
<!-- <Spanish>IED grande (Enterrado)</Spanish> --> <!-- <Spanish>IED grande (Enterrado)</Spanish> -->
<Polish>Duży IED (zakopany, płyta naciskowa)</Polish>
</Key> </Key>
<Key ID="STR_ACE_Explosives_Module_IEDUrbanSmall_Range_DisplayName"> <Key ID="STR_ACE_Explosives_Module_IEDUrbanSmall_Range_DisplayName">
<English>Small IED (Urban, Pressure Plate)</English> <English>Small IED (Urban, Pressure Plate)</English>
@ -674,6 +688,7 @@
<!-- <Portuguese>AEI pequeno (urbano)</Portuguese> --> <!-- <Portuguese>AEI pequeno (urbano)</Portuguese> -->
<!-- <Russian>Малое СВУ (городское)</Russian> --> <!-- <Russian>Малое СВУ (городское)</Russian> -->
<!-- <Spanish>IED pequeño (Urbano)</Spanish> --> <!-- <Spanish>IED pequeño (Urbano)</Spanish> -->
<Polish>Mały IED (miejski, płyta naciskowa)</Polish>
</Key> </Key>
<Key ID="STR_ACE_Explosives_Module_IEDLandSmall_Range_DisplayName"> <Key ID="STR_ACE_Explosives_Module_IEDLandSmall_Range_DisplayName">
<English>Small IED (Dug-in, Pressure Plate)</English> <English>Small IED (Dug-in, Pressure Plate)</English>
@ -685,6 +700,19 @@
<!-- <Portuguese>AEI pequeno (entrincheirado)</Portuguese> --> <!-- <Portuguese>AEI pequeno (entrincheirado)</Portuguese> -->
<!-- <Russian>Малое СВУ (зарытое)</Russian> --> <!-- <Russian>Малое СВУ (зарытое)</Russian> -->
<!-- <Spanish>IED pequeño (Enterrado)</Spanish> --> <!-- <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> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -76,36 +76,3 @@ class Extended_Respawn_EventHandlers {
}; };
}; };
}; };
class Extended_FiredBIS_EventHandlers {
class Tank {
class ADDON {
firedBIS = QUOTE(_this call FUNC(firedEH));
};
};
class Car {
class ADDON {
firedBIS = QUOTE(_this call FUNC(firedEH));
};
};
class Helicopter {
class ADDON {
firedBIS = QUOTE(_this call FUNC(firedEH));
};
};
class Plane {
class ADDON {
firedBIS = QUOTE(_this call FUNC(firedEH));
};
};
class Ship_F {
class ADDON {
firedBIS = QUOTE(_this call FUNC(firedEH));
};
};
class StaticWeapon {
class ADDON {
firedBIS = QUOTE(_this call FUNC(firedEH));
};
};
};

View File

@ -15,5 +15,9 @@ if (!hasInterface) exitWith {};
}; };
}] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler);
// Register fire event handler
["firedPlayerVehicle", DFUNC(firedEH)] call EFUNC(common,addEventHandler);
["firedPlayerVehicleNonLocal", DFUNC(firedEH)] call EFUNC(common,addEventHandler);
// Register event for global updates // Register event for global updates
[QGVAR(forceUpdate), {[ACE_player] call FUNC(onForceUpdate)}] call EFUNC(common,addEventHandler); [QGVAR(forceUpdate), {[ACE_player] call FUNC(onForceUpdate)}] call EFUNC(common,addEventHandler);

View File

@ -43,10 +43,7 @@ private _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret
} count _muzzles; } count _muzzles;
// Fix the `in` operator being case sensitive and BI fucking up the spelling of their own classnames // Fix the `in` operator being case sensitive and BI fucking up the spelling of their own classnames
private _weaponMagazinesCheck = []; private _weaponMagazinesCheck = _weaponMagazines apply {toLower _x};
{
_weaponMagazinesCheck pushBack (toLower _x);
} forEach _weaponMagazines;
// Another BIS fix: ShotBullet simulation uses weapon initSpeed, others ignore it // Another BIS fix: ShotBullet simulation uses weapon initSpeed, others ignore it
if (toLower _magazine in _weaponMagazinesCheck && {_bulletSimulation == "shotBullet"}) exitWith { if (toLower _magazine in _weaponMagazinesCheck && {_bulletSimulation == "shotBullet"}) exitWith {

View File

@ -1,9 +1,9 @@
/* /*
* Author: KoffeinFlummi * Author: KoffeinFlummi
* Adjusts the direction of a shell. * Adjusts the direction of a shell. Called from the unified fired EH only if the gunner is a player.
* *
* Arguments: * Arguments:
* -> arguments of the FiredBIS EH * None. Parameters inherited from EFUNC(common,firedEH)
* *
* Return Value: * Return Value:
* None * None
@ -12,13 +12,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_vehicle", "_weapon", "", "", "_ammo", "_magazine", "_projectile"]; //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"];
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
private _gunner = [_vehicle, _weapon] call EFUNC(common,getGunner);
private _turret = _gunner call EFUNC(common,getTurretIndex);
// Exit if the unit isn't a player
if !([_gunner] call EFUNC(common,isPlayer)) exitWith {};
private _FCSMagazines = _vehicle getVariable [format ["%1_%2", QGVAR(Magazines), _turret], []]; private _FCSMagazines = _vehicle getVariable [format ["%1_%2", QGVAR(Magazines), _turret], []];
private _FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret]; private _FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret];
@ -36,7 +31,7 @@ private _offset = 0;
[_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, 0] call EFUNC(common,changeProjectileDirection); [_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, 0] call EFUNC(common,changeProjectileDirection);
// Remove the platform velocity // Remove the platform velocity
if (vectorMagnitude velocity _vehicle > 2) then { if (vectorMagnitude velocity _vehicle > 2) then {
private _sumVelocity = (velocity _projectile) vectorDiff (velocity _vehicle); private _sumVelocity = (velocity _projectile) vectorDiff (velocity _vehicle);

View File

@ -10,6 +10,7 @@
<Portuguese>Mostrar indicador para si mesmo</Portuguese> <Portuguese>Mostrar indicador para si mesmo</Portuguese>
<Spanish>Mostrar el indicador de señalado a uno mismo</Spanish> <Spanish>Mostrar el indicador de señalado a uno mismo</Spanish>
<Czech>Zobrazit ukázání směru pro sebe</Czech> <Czech>Zobrazit ukázání směru pro sebe</Czech>
<Italian>Mostra l'indicatore a se stessi</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_indicatorForSelf_description"> <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> <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> <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> <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> <Czech>Zobrazit infikátor, když ukážete prstem. Tato volba nemá vliv, zda ostatní hráči uvidí indikátor nebo ne.</Czech>
<Italian>Mostra l'indicatore al giocatore che sta puntando. Questa opzione non influenza se gli altri giocatori vedranno o no l'indicatore.</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_indicatorColor_name"> <Key ID="STR_ACE_finger_indicatorColor_name">
<English>Pointing indicator</English> <English>Pointing indicator</English>
@ -30,6 +32,7 @@
<Portuguese>Indicador de apontamento</Portuguese> <Portuguese>Indicador de apontamento</Portuguese>
<Spanish>Indicador de señalado</Spanish> <Spanish>Indicador de señalado</Spanish>
<Czech>Ukazování směru</Czech> <Czech>Ukazování směru</Czech>
<Italian>Indicatore di puntamento</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_indicatorColor_description"> <Key ID="STR_ACE_finger_indicatorColor_description">
<English>Color of the pointing indicator circle</English> <English>Color of the pointing indicator circle</English>
@ -40,6 +43,7 @@
<Portuguese>Cor do círculo de indicação</Portuguese> <Portuguese>Cor do círculo de indicação</Portuguese>
<Spanish>Color del círculo indicador que señala</Spanish> <Spanish>Color del círculo indicador que señala</Spanish>
<Czech>Barva kruhu pro ukázání směru</Czech> <Czech>Barva kruhu pro ukázání směru</Czech>
<Italian>Colore del cerchio dell'inidicatore di puntamento</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_keyComb"> <Key ID="STR_ACE_finger_keyComb">
<English>Action "point a finger at"</English> <English>Action "point a finger at"</English>
@ -50,6 +54,7 @@
<Portuguese>Ação "Apontar um dedo para"</Portuguese> <Portuguese>Ação "Apontar um dedo para"</Portuguese>
<Spanish>Acción "apuntar con el dedo a"</Spanish> <Spanish>Acción "apuntar con el dedo a"</Spanish>
<Czech>Akce "ukázat prstem na"</Czech> <Czech>Akce "ukázat prstem na"</Czech>
<Italian>Azione "punta il dito a"</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_keyComb_description"> <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> <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> <Russian>Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать.</Russian>
<Spanish>Señala y muestra un marcador virtual donde ustás apuntando para las unidades cercanas. Puede ser mantenido.</Spanish> <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> <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 evidenziatore virtuale di dove stai guardando alle unità vicine. Può essere tenuto a lungo.</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_moduleSettings_displayName"> <Key ID="STR_ACE_finger_moduleSettings_displayName">
<English>Pointing Settings</English> <English>Pointing Settings</English>
@ -70,6 +76,7 @@
<Russian>Настройки указания пальцем</Russian> <Russian>Настройки указания пальцем</Russian>
<Spanish>Ajustes de señalado</Spanish> <Spanish>Ajustes de señalado</Spanish>
<Czech>Nastavení ukázování směru</Czech> <Czech>Nastavení ukázování směru</Czech>
<Italian>Impostazioni indicatore</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_enabled_displayName"> <Key ID="STR_ACE_finger_enabled_displayName">
<English>Pointing Enabled</English> <English>Pointing Enabled</English>
@ -80,6 +87,7 @@
<Russian>Указание пальцем включено</Russian> <Russian>Указание пальцем включено</Russian>
<Spanish>Señalado habilitado</Spanish> <Spanish>Señalado habilitado</Spanish>
<Czech>Ukazování povoleno</Czech> <Czech>Ukazování povoleno</Czech>
<Italian>Indicatore abilitato</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_maxRange_displayName"> <Key ID="STR_ACE_finger_maxRange_displayName">
<English>Pointing Max Range</English> <English>Pointing Max Range</English>
@ -90,6 +98,7 @@
<Russian>Макс. дальность</Russian> <Russian>Макс. дальность</Russian>
<Spanish>Distancia máxima de señalado</Spanish> <Spanish>Distancia máxima de señalado</Spanish>
<Czech>Maximální dosah pro ukazování směru</Czech> <Czech>Maximální dosah pro ukazování směru</Czech>
<Italian>Massima distanza del puntatore</Italian>
</Key> </Key>
<Key ID="STR_ACE_finger_maxRange_description"> <Key ID="STR_ACE_finger_maxRange_description">
<English>Max range between players to show the pointing indicator [default: 4 meters]</English> <English>Max range between players to show the pointing indicator [default: 4 meters]</English>
@ -100,6 +109,7 @@
<Russian>Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра]</Russian> <Russian>Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра]</Russian>
<Spanish>Distancia máxima entre los jugadores para mostrar el indicador que señala [por defecto: 4 metros]</Spanish> <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> <Czech>Maximální vzdálenost mezi hráči pro ukázání směru [výchozí: 4 metry]</Czech>
<Italian>Massima distanza delle unità a cui mostrare l'indicatore [default: 4 metri]</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -3,51 +3,63 @@
<Package name="Flashlights"> <Package name="Flashlights">
<Key ID="STR_ACE_Flashlights_MX991_DisplayName"> <Key ID="STR_ACE_Flashlights_MX991_DisplayName">
<English>Fulton MX-991</English> <English>Fulton MX-991</English>
<German>Fulton MX-991</German>
<Polish>Fulton MX-991</Polish> <Polish>Fulton MX-991</Polish>
<Portuguese>Fulton MX-991</Portuguese> <Portuguese>Fulton MX-991</Portuguese>
<Russian>Fulton MX-991</Russian> <Russian>Fulton MX-991</Russian>
<Czech>Fulton MX-991</Czech> <Czech>Fulton MX-991</Czech>
<Spanish>Fulton MX-991</Spanish> <Spanish>Fulton MX-991</Spanish>
<Italian>Fulton MX-911</Italian>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_MX991_Description"> <Key ID="STR_ACE_Flashlights_MX991_Description">
<English>Flashlight with red filter. For use on map.</English> <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> <Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish>
<Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese> <Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese>
<Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian> <Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian>
<Czech>Svítilna s červeným filtrem. Pro nahlédnutí do mapy.</Czech> <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> <Spanish>Linterna con filtro rojo. Para su uso en el mapa.</Spanish>
<Italian>Torcia con filtro rosso. Da usare sulla mappa.</Italian>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_XL50_DisplayName"> <Key ID="STR_ACE_Flashlights_XL50_DisplayName">
<English>Maglite XL50</English> <English>Maglite XL50</English>
<German>Maglite XL50</German>
<Polish>Maglite XL50</Polish> <Polish>Maglite XL50</Polish>
<Portuguese>Maglite XL50</Portuguese> <Portuguese>Maglite XL50</Portuguese>
<Russian>Maglite XL50</Russian> <Russian>Maglite XL50</Russian>
<Czech>Maglite XL50</Czech> <Czech>Maglite XL50</Czech>
<Spanish>Maglite XL50</Spanish> <Spanish>Maglite XL50</Spanish>
<Italian>Maglite XL50</Italian>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_XL50_Description"> <Key ID="STR_ACE_Flashlights_XL50_Description">
<English>White mini flashlight. For use on map.</English> <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> <Polish>Mini latarka. Światło białe. Używana do podświetlania mapy.</Polish>
<Portuguese>Mini lanterna branca. Para uso no mapa.</Portuguese> <Portuguese>Mini lanterna branca. Para uso no mapa.</Portuguese>
<Russian>Небольшой фонарик белого света. Для использования на карте.</Russian> <Russian>Небольшой фонарик белого света. Для использования на карте.</Russian>
<Czech>Bílá mini svítilna. Pro nahlédnutí do mapy.</Czech> <Czech>Bílá mini svítilna. Pro nahlédnutí do mapy.</Czech>
<Spanish>Mini linterna blanca. Para su uso en el mapa.</Spanish> <Spanish>Mini linterna blanca. Para su uso en el mapa.</Spanish>
<Italian>Torcia bianca. Da usare sulla mappa.</Italian>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_KSF1_DisplayName"> <Key ID="STR_ACE_Flashlights_KSF1_DisplayName">
<English>KSF-1</English> <English>KSF-1</English>
<German>KSF-1</German>
<Polish>KSF-1</Polish> <Polish>KSF-1</Polish>
<Portuguese>KSF-1</Portuguese> <Portuguese>KSF-1</Portuguese>
<Russian>KSF-1</Russian> <Russian>KSF-1</Russian>
<Czech>KSF-1</Czech> <Czech>KSF-1</Czech>
<Spanish>KSF-1</Spanish> <Spanish>KSF-1</Spanish>
<Italian>KSF-1</Italian>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_KSF1_Description"> <Key ID="STR_ACE_Flashlights_KSF1_Description">
<English>Flashlight with red filter. For use on map.</English> <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> <Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish>
<Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese> <Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese>
<Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian> <Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian>
<Czech>Svítilna s červeným filtrem. Pro nahlédnutí do mapy.</Czech> <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> <Spanish>Linterna con filtro rojo. Para su uso en el mapa.</Spanish>
<Italian>Torcia con filtro rosso. Da usare sulla mappa.</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,30 +1,42 @@
class ACE_Settings { class ACE_Settings {
class GVAR(Enabled) { class GVAR(Enabled) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableFrag); displayName = CSTRING(EnableFrag);
description = CSTRING(EnableFrag_Desc); description = CSTRING(EnableFrag_Desc);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(SpallEnabled) { class GVAR(SpallEnabled) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableSpall); displayName = CSTRING(EnableSpall);
description = CSTRING(EnableSpall_Desc); description = CSTRING(EnableSpall_Desc);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(ReflectionsEnabled) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableReflections);
description = CSTRING(EnableReflections_Desc);
typeName = "BOOL";
value = 0;
};
class GVAR(maxTrack) { class GVAR(maxTrack) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(MaxTrack); displayName = CSTRING(MaxTrack);
description = CSTRING(MaxTrack_Desc); description = CSTRING(MaxTrack_Desc);
typeName = "SCALAR"; typeName = "SCALAR";
value = 500; value = 500;
}; };
class GVAR(MaxTrackPerFrame) { class GVAR(MaxTrackPerFrame) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(MaxTrackPerFrame); displayName = CSTRING(MaxTrackPerFrame);
description = CSTRING(MaxTrackPerFrame_Desc); description = CSTRING(MaxTrackPerFrame_Desc);
typeName = "SCALAR"; typeName = "SCALAR";
value = 50; value = 50;
}; };
class GVAR(EnableDebugTrace) { class GVAR(EnableDebugTrace) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableDebugTrace); displayName = CSTRING(EnableDebugTrace);
description = CSTRING(EnableDebugTrace_Desc); description = CSTRING(EnableDebugTrace_Desc);
typeName = "BOOL"; typeName = "BOOL";

View File

@ -9,9 +9,3 @@ class Extended_PostInit_EventHandlers {
init = QUOTE(call COMPILE_FILE(XEH_postInit)); init = QUOTE(call COMPILE_FILE(XEH_postInit));
}; };
}; };
class Extended_FiredBIS_EventHandlers {
class AllVehicles {
ADDON = QUOTE(_this call FUNC(fired));
};
};

View File

@ -9,7 +9,21 @@ if(isServer) then {
[QGVAR(frag_eh), { _this call FUNC(frago); }] call EFUNC(common,addEventHandler); [QGVAR(frag_eh), { _this call FUNC(frago); }] call EFUNC(common,addEventHandler);
}; };
[FUNC(masterPFH), 0, []] call CBA_fnc_addPerFrameHandler; ["SettingsInitialized", {
//If not enabled, exit
if (!GVAR(enabled)) exitWith {};
// Register fire event handler
["firedPlayer", DFUNC(fired)] call EFUNC(common,addEventHandler);
["firedPlayerNonLocal", DFUNC(fired)] call EFUNC(common,addEventHandler);
["firedNonPlayer", DFUNC(fired)] call EFUNC(common,addEventHandler);
["firedPlayerVehicle", DFUNC(fired)] call EFUNC(common,addEventHandler);
["firedPlayerVehicleNonLocal", DFUNC(fired)] call EFUNC(common,addEventHandler);
["firedNonPlayerVehicle", DFUNC(fired)] call EFUNC(common,addEventHandler);
[FUNC(masterPFH), 0, []] call CBA_fnc_addPerFrameHandler;
}] call EFUNC(common,addEventHandler);
//Cache for ammo type configs //Cache for ammo type configs
GVAR(cacheRoundsTypesToTrack) = createLocation ["ACE_HashLocation", [-10000,-10000,-10000], 0, 0]; GVAR(cacheRoundsTypesToTrack) = createLocation ["ACE_HashLocation", [-10000,-10000,-10000], 0, 0];

View File

@ -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"]; 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; _params = _this select 0;
_pos = _params select 0; _pos = _params select 0;
_explosiveInfo = _params select 1; _explosiveInfo = _params select 1;
@ -124,3 +125,4 @@ if(_zIndex < 5) then {
[DFUNC(doExplosions), 0, [_explosions, 0]] call CBA_fnc_addPerFrameHandler; [DFUNC(doExplosions), 0, [_explosions, 0]] call CBA_fnc_addPerFrameHandler;
[(_this select 1)] call CBA_fnc_removePerFrameHandler; [(_this select 1)] call CBA_fnc_removePerFrameHandler;
}; };
END_COUNTER(fnc_findReflections);

View File

@ -1,12 +1,10 @@
/* /*
* Author: nou, jaynus, PabstMirror * Author: nou, jaynus, PabstMirror
* Called from FiredBIS event on AllVehicles * Called from the unified fired EH for all.
* If spall is not enabled (default), then cache and only track those that will actually trigger fragmentation. * If spall is not enabled (default), then cache and only track those that will actually trigger fragmentation.
* *
* Arguments: * Arguments:
* 0: gun - Object the event handler is assigned to <OBJECT> * None. Parameters inherited from EFUNC(common,firedEH)
* 4: type - Ammo used <STRING>
* 6: round - Object of the projectile that was shot <OBJECT>
* *
* Return Value: * Return Value:
* Nothing * Nothing
@ -19,38 +17,39 @@
// #define DEBUG_ENABLED_FRAG // #define DEBUG_ENABLED_FRAG
#include "script_component.hpp" #include "script_component.hpp"
params ["_gun", "", "", "", "_type", "", "_round"]; //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"];
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
private _shouldAdd = GVAR(cacheRoundsTypesToTrack) getVariable _type; private _shouldAdd = GVAR(cacheRoundsTypesToTrack) getVariable _ammo;
if (isNil "_shouldAdd") then { if (isNil "_shouldAdd") then {
TRACE_1("no cache for round",_type); TRACE_1("no cache for round",_ammo);
if (!EGVAR(common,settingsInitFinished)) exitWith { if (!EGVAR(common,settingsInitFinished)) exitWith {
//Just incase fired event happens before settings init, don't want to set cache wrong if spall setting changes //Just incase fired event happens before settings init, don't want to set cache wrong if spall setting changes
TRACE_1("Settings not init yet - exit without setting cache",_type); TRACE_1("Settings not init yet - exit without setting cache",_ammo);
_shouldAdd = false; _shouldAdd = false;
}; };
if (GVAR(SpallEnabled)) exitWith { if (GVAR(SpallEnabled)) exitWith {
//Always want to run whenever spall is enabled? //Always want to run whenever spall is enabled?
_shouldAdd = true; _shouldAdd = true;
TRACE_2("SettingCache[spallEnabled]",_type,_shouldAdd); TRACE_2("SettingCache[spallEnabled]",_ammo,_shouldAdd);
GVAR(cacheRoundsTypesToTrack) setVariable [_type, _shouldAdd]; GVAR(cacheRoundsTypesToTrack) setVariable [_ammo, _shouldAdd];
}; };
//Read configs and test if it would actually cause a frag, using same logic as FUNC(pfhRound) //Read configs and test if it would actually cause a frag, using same logic as FUNC(pfhRound)
private _skip = getNumber (configFile >> "CfgAmmo" >> _type >> QGVAR(skip)); private _skip = getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(skip));
private _explosive = getNumber (configFile >> "CfgAmmo" >> _type >> "explosive"); private _explosive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosive");
private _indirectRange = getNumber (configFile >> "CfgAmmo" >> _type >> "indirectHitRange"); private _indirectRange = getNumber (configFile >> "CfgAmmo" >> _ammo >> "indirectHitRange");
private _force = getNumber (configFile >> "CfgAmmo" >> _type >> QGVAR(force)); private _force = getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(force));
private _fragPower = getNumber(configFile >> "CfgAmmo" >> _type >> "indirecthit")*(sqrt((getNumber (configFile >> "CfgAmmo" >> _type >> "indirectHitRange")))); private _fragPower = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirecthit")*(sqrt((getNumber (configFile >> "CfgAmmo" >> _ammo >> "indirectHitRange"))));
_shouldAdd = (_skip == 0) && {(_force == 1) || {_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}}}; _shouldAdd = (_skip == 0) && {(_force == 1) || {_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}}};
TRACE_6("SettingCache[willFrag?]",_skip,_explosive,_indirectRange,_force,_fragPower,_shouldAdd); TRACE_6("SettingCache[willFrag?]",_skip,_explosive,_indirectRange,_force,_fragPower,_shouldAdd);
GVAR(cacheRoundsTypesToTrack) setVariable [_type, _shouldAdd]; GVAR(cacheRoundsTypesToTrack) setVariable [_ammo, _shouldAdd];
}; };
if (_shouldAdd) then { if (_shouldAdd) then {
TRACE_3("Running Frag Tracking",_gun,_type,_round); TRACE_3("Running Frag Tracking",_unit,_ammo,_projectile);
[_gun, _type, _round] call FUNC(addPfhRound); [_unit, _ammo, _projectile] call FUNC(addPfhRound);
}; };

View File

@ -8,6 +8,7 @@
if(!isServer) exitWith { }; if(!isServer) exitWith { };
BEGIN_COUNTER(frago);
// _startTime = ACE_diagTime; // _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"]; 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 #endif
_doRandom = true; _doRandom = true;
if(_isArmed && (count _objects) > 0) then { 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 { //if(random(1) > 0.5) then {
_target = _x; _target = _x;
@ -212,3 +215,4 @@ if(_isArmed && (count _objects) > 0) then {
// ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))]; // ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
// #endif // #endif
// _endTime = ACE_diagTime; // _endTime = ACE_diagTime;
END_COUNTER(frago);

View File

@ -1,6 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Frag"> <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>
</Key>
<Key ID="STR_ACE_Frag_EnableFrag"> <Key ID="STR_ACE_Frag_EnableFrag">
<English>Fragmentation Simulation</English> <English>Fragmentation Simulation</English>
<Polish>Symulacja fragmentacji</Polish> <Polish>Symulacja fragmentacji</Polish>
@ -11,6 +22,7 @@
<French>Simulation de la fragmentation</French> <French>Simulation de la fragmentation</French>
<Hungarian>Repesz-szimuláció</Hungarian> <Hungarian>Repesz-szimuláció</Hungarian>
<Russian>Симуляция осколков</Russian> <Russian>Симуляция осколков</Russian>
<Italian>Simulazione della frammentazione</Italian>
</Key> </Key>
<Key ID="STR_ACE_Frag_EnableFrag_Desc"> <Key ID="STR_ACE_Frag_EnableFrag_Desc">
<English>Enable the ACE Fragmentation Simulation</English> <English>Enable the ACE Fragmentation Simulation</English>
@ -22,6 +34,7 @@
<French>Active la simulation ACE de la fragmentation</French> <French>Active la simulation ACE de la fragmentation</French>
<Hungarian>Az ACE repesz-szimuláció engedélyezése</Hungarian> <Hungarian>Az ACE repesz-szimuláció engedélyezése</Hungarian>
<Russian>Включить симуляцию осколков ACE</Russian> <Russian>Включить симуляцию осколков ACE</Russian>
<Italian>Attiva la simulazione della frammentazione di ACE</Italian>
</Key> </Key>
<Key ID="STR_ACE_Frag_EnableSpall"> <Key ID="STR_ACE_Frag_EnableSpall">
<English>Spalling Simulation</English> <English>Spalling Simulation</English>
@ -33,6 +46,7 @@
<French>Simulation d'éclat</French> <French>Simulation d'éclat</French>
<Hungarian>Pattogzás-szimuláció</Hungarian> <Hungarian>Pattogzás-szimuláció</Hungarian>
<Russian>Симуляция обломков</Russian> <Russian>Симуляция обломков</Russian>
<Italian>Simulazione delle scheggiature</Italian>
</Key> </Key>
<Key ID="STR_ACE_Frag_EnableSpall_Desc"> <Key ID="STR_ACE_Frag_EnableSpall_Desc">
<English>Enable the ACE Spalling Simulation</English> <English>Enable the ACE Spalling Simulation</English>
@ -44,6 +58,15 @@
<French>Active la simulation d'éclat ACE</French> <French>Active la simulation d'éclat ACE</French>
<Hungarian>Az ACE pattogzás-szimuláció engedélyezése</Hungarian> <Hungarian>Az ACE pattogzás-szimuláció engedélyezése</Hungarian>
<Russian>Включить симуляцию обломков ACE</Russian> <Russian>Включить симуляцию обломков ACE</Russian>
<Italian>Attiva la simulazione delle scheggiature di ACE</Italian>
</Key>
<Key ID="STR_ACE_Frag_EnableReflections">
<English>Explosion Reflections Simulation</English>
<Polish>Symulacja odbicia eksplozji</Polish>
</Key>
<Key ID="STR_ACE_Frag_EnableReflections_Desc">
<English>Enable the ACE Explosion Reflection Simulation</English>
<Polish>Włącz symulację odbicia eksplozji ACE</Polish>
</Key> </Key>
<Key ID="STR_ACE_Frag_MaxTrack"> <Key ID="STR_ACE_Frag_MaxTrack">
<English>Maximum Projectiles Tracked</English> <English>Maximum Projectiles Tracked</English>
@ -55,6 +78,7 @@
<French>Nombre maximum de projectile suivis</French> <French>Nombre maximum de projectile suivis</French>
<Hungarian>Maximum követett repeszek</Hungarian> <Hungarian>Maximum követett repeszek</Hungarian>
<Russian>Макс. количество отслеживаемых снарядов</Russian> <Russian>Макс. количество отслеживаемых снарядов</Russian>
<Italian>Massimo numero di proiettili tracciati</Italian>
</Key> </Key>
<Key ID="STR_ACE_Frag_MaxTrack_Desc"> <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 ( &gt;200 rounds in the air at once)</English> <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 ( &gt;200 rounds in the air at once)</English>
@ -66,6 +90,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 (&gt;200 éclats en même temps)</French> <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 (&gt;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> <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 при большом количестве снарядов в одной перестрелке (&gt; 200 одновременно летящих снарядов)</Russian> <Russian>Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (&gt; 200 одновременно летящих снарядов)</Russian>
<Italian>Questa impostazione controlla l'ammontare massimo di proiettili che verranno tracciati ad ogni istante dai sistemi di frammentazione e scheggiatura. Abbasa questa impostazione se non vuoi cali di FPS in scenari con altri numeri di proiettili (più di 200 colpi in aria per volta)</Italian>
</Key> </Key>
<Key ID="STR_ACE_Frag_MaxTrackPerFrame"> <Key ID="STR_ACE_Frag_MaxTrackPerFrame">
<English>Maximum Projectiles Per Frame</English> <English>Maximum Projectiles Per Frame</English>
@ -77,6 +102,7 @@
<French>Nombre maximal de projectile par image</French> <French>Nombre maximal de projectile par image</French>
<Hungarian>Maximum repesz/képkocka</Hungarian> <Hungarian>Maximum repesz/képkocka</Hungarian>
<Russian>Макс. количество снарядов за кадр</Russian> <Russian>Макс. количество снарядов за кадр</Russian>
<Italian>Massimo numero di proiettili per frame</Italian>
</Key> </Key>
<Key ID="STR_ACE_Frag_MaxTrackPerFrame_Desc"> <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> <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 +114,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> <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> <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> <Russian>Число обрабатываемых осколков за кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS.</Russian>
<Italian>Il numero di calcoli da eseguire per tracciare le scheggiature in ogni frame. Questo aiuta a dispensare l'impatto sugli FPS delle scheggiature su più frame multipli, limitandone maggiormente l'impatto.</Italian>
</Key> </Key>
<Key ID="STR_ACE_Frag_EnableDebugTrace"> <Key ID="STR_ACE_Frag_EnableDebugTrace">
<English>(SP Only) Frag/Spall Debug Tracing</English> <English>(SP Only) Frag/Spall Debug Tracing</English>
@ -99,6 +126,7 @@
<French>(SP uniquement) Fragmentation/éclat debug</French> <French>(SP uniquement) Fragmentation/éclat debug</French>
<Hungarian>(Csak SP) Repesz/Pattogzás debug követés</Hungarian> <Hungarian>(Csak SP) Repesz/Pattogzás debug követés</Hungarian>
<Russian>(Только для одиночной игры) Отслеживаение/отладка осколков</Russian> <Russian>(Только для одиночной игры) Отслеживаение/отладка осколков</Russian>
<Italian>(Solo SP) debug delle frammentazioni e scheggiature</Italian>
</Key> </Key>
<Key ID="STR_ACE_Frag_EnableDebugTrace_Desc"> <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> <English>(SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only.</English>
@ -110,6 +138,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> <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> <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> <Russian>(Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры.</Russian>
<Italian>(Solo SP) Richiede un riavvio della missione/editor. Abilia una traccia visiva della frammentazione e scheggiatura solo in modalità SP.</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -113,11 +113,12 @@
<Key ID="STR_ACE_Gestures_stop"> <Key ID="STR_ACE_Gestures_stop">
<English>Stop</English> <English>Stop</English>
<French>Stop</French> <French>Stop</French>
<German>Stop</German> <German>Halt</German>
<Polish>Stop</Polish> <Polish>Stop</Polish>
<Russian>Стоп</Russian> <Russian>Стоп</Russian>
<Portuguese>Parar</Portuguese> <Portuguese>Parar</Portuguese>
<Czech>Stop</Czech> <Czech>Stop</Czech>
<Italian>Stop</Italian>
</Key> </Key>
<!-- COVER --> <!-- COVER -->
<Key ID="STR_ACE_Gestures_cover"> <Key ID="STR_ACE_Gestures_cover">
@ -155,6 +156,7 @@
<!-- ENGAGE --> <!-- ENGAGE -->
<Key ID="STR_ACE_Gestures_engage"> <Key ID="STR_ACE_Gestures_engage">
<English>Engage</English> <English>Engage</English>
<German>Angriff</German>
<French>Engager</French> <French>Engager</French>
<Polish>Atak</Polish> <Polish>Atak</Polish>
<Russian>Открыть огонь</Russian> <Russian>Открыть огонь</Russian>
@ -217,19 +219,27 @@
</Key> </Key>
<Key ID="STR_ACE_Gestures_showOnInteractionMenu_displayName"> <Key ID="STR_ACE_Gestures_showOnInteractionMenu_displayName">
<English>Show Gestures On Interaction Menu</English> <English>Show Gestures On Interaction Menu</English>
<German>Zeige Gesten im Interaktionsmenü</German>
<Czech>Zobrazit posunky v interakčním menu</Czech> <Czech>Zobrazit posunky v interakčním menu</Czech>
<Polish>Pokaż gesty w menu interakcji</Polish>
</Key> </Key>
<Key ID="STR_ACE_Gestures_showOnInteractionMenu_description"> <Key ID="STR_ACE_Gestures_showOnInteractionMenu_description">
<English>Show gestures on the self interaction menu, or just use keybinds, or disable completely</English> <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> <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>
</Key> </Key>
<Key ID="STR_ACE_Gestures_justKeybinds"> <Key ID="STR_ACE_Gestures_justKeybinds">
<English>Just Keybinds</English> <English>Just Keybinds</English>
<German>Nur Schnelltasten</German>
<Czech>Pouze klávesové zkratky</Czech> <Czech>Pouze klávesové zkratky</Czech>
<Polish>Tylko skróty klaw.</Polish>
</Key> </Key>
<Key ID="STR_ACE_Gestures_keysAndInteractionMenu"> <Key ID="STR_ACE_Gestures_keysAndInteractionMenu">
<English>Keybinds + Interaction Menu</English> <English>Keybinds + Interaction Menu</English>
<German>Schnelltasten+ Interaktionsmenü</German>
<Czech>Klávesové zkratky + interakční menu</Czech> <Czech>Klávesové zkratky + interakční menu</Czech>
<Polish>Skróty klaw. + menu interakcji</Polish>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -19,14 +19,6 @@ class Extended_Killed_EventHandlers {
}; };
}; };
class Extended_FiredBIS_EventHandlers {
class CAManBase {
class ADDON {
clientFiredBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleFired)});
};
};
};
class Extended_Explosion_EventHandlers { class Extended_Explosion_EventHandlers {
class CAManBase { class CAManBase {
class ADDON { class ADDON {

View File

@ -131,3 +131,6 @@ private _fnc_checkGoggles = {
END_COUNTER(goggles); END_COUNTER(goggles);
}, 0.5, []] call CBA_fnc_addPerFrameHandler; }, 0.5, []] call CBA_fnc_addPerFrameHandler;
// Register fire event handler
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);

View File

@ -1,10 +1,9 @@
/* /*
* Author: Garth 'L-H' de Wet, commy2 * Author: Garth 'L-H' de Wet, commy2
* Determines whether to place dust on the goggles, based on calibre of weapon fired and other requirements. * Determines whether to place dust on the goggles, based on calibre of weapon fired and other requirements. Called from the unified fired EH only for the local player.
* *
* Arguments: * Arguments:
* 0: Unit <OBJECT> * None. Parameters inherited from EFUNC(common,firedEH)
* 1: Weapon <STRING>
* *
* Return Value: * Return Value:
* Function is handled? <BOOL> * Function is handled? <BOOL>
@ -13,9 +12,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_unit", "_weapon"]; //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"];
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
if (_unit != ACE_player) exitWith {true};
// no dust in rain // no dust in rain
if (rain > 0.1) exitWith {true}; if (rain > 0.1) exitWith {true};

View File

@ -10,11 +10,3 @@ class Extended_PostInit_EventHandlers {
init = QUOTE(call COMPILE_FILE(XEH_postInit)); init = QUOTE(call COMPILE_FILE(XEH_postInit));
}; };
}; };
class Extended_FiredBIS_EventHandlers {
class CAManBase {
class ADDON {
firedBIS = QUOTE(_this call FUNC(throwGrenade));
};
};
};

View File

@ -22,3 +22,9 @@ GVAR(flashbangPPEffectCC) ppEffectForceInNVG true;
}, },
{false}, {false},
[9, [false, false, false]], false] call CBA_fnc_addKeybind; //8 Key [9, [false, false, false]], false] call CBA_fnc_addKeybind; //8 Key
// Register fire event handler
["firedPlayer", DFUNC(throwGrenade)] call EFUNC(common,addEventHandler);
["firedPlayerNonLocal", DFUNC(throwGrenade)] call EFUNC(common,addEventHandler);
["firedNonPlayer", DFUNC(throwGrenade)] call EFUNC(common,addEventHandler);

View File

@ -18,105 +18,124 @@
params ["_grenadePosASL"]; params ["_grenadePosASL"];
TRACE_1("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 { if (local _x && {alive _x}) then {
private _strength = 1 - (((getPosASL _x) vectorDistance _grenadePosASL) min 20) / 20;
private _strength = 1 - (((getPosASL _x) vectorDistance _grenadePosASL) min 15) / 15;
TRACE_3("FlashBangEffect Start",_x,((getPosASL _x) vectorDistance _grenadePosASL),_strength); TRACE_3("FlashBangEffect Start",_x,((getPosASL _x) vectorDistance _grenadePosASL),_strength);
if (_x != ACE_player) then { [_x, true] call EFUNC(common,disableAI);
//must be AI
[_x, true] call EFUNC(common,disableAI);
_x setSkill (skill _x / 50); _x setSkill (skill _x / 50);
[{ if (_strength > 0.2) then {
params ["_unit"]; _x setVectorDir ((getPosASL _x) vectorDiff _grenadePosASL);
//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 {
[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);
};
}; };
[{
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; } 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

View File

@ -21,8 +21,5 @@ TRACE_1("params",_projectile);
if (alive _projectile) then { if (alive _projectile) then {
playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400];
private _affected = _projectile nearEntities ["CAManBase", 20]; ["flashbangExplosion", [getPosASL _projectile]] call EFUNC(common,globalEvent);
TRACE_2("people hit",_affected,getPosASL _projectile);
["flashbangExplosion", _affected, [getPosASL _projectile]] call EFUNC(common,targetEvent);
}; };

View File

@ -1,15 +1,9 @@
/* /*
* Author: commy2 * Author: commy2
* Adjust the grenades throwing direction and speed to the selected throwing mode. * Adjust the grenades throwing direction and speed to the selected throwing mode. Called from the unified fired EH only for CAManBase
* *
* Arguments: * Arguments:
* 0: unit - Object the event handler is assigned to <OBJECT> * None. Parameters inherited from EFUNC(common,firedEH)
* 1: weapon - Fired weapon <STRING>
* 2: muzzle - Muzzle that was used <STRING>
* 3: mode - Current mode of the fired weapon <STRING>
* 4: ammo - Ammo used <STRING>
* 5: magazine - magazine name which was used <STRING>
* 6: projectile - Object of the projectile that was shot <OBJECT>
* *
* Return Value: * Return Value:
* None * None
@ -21,7 +15,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_unit", "_weapon", "", "", "_ammo", "", "_projectile"]; //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"];
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
if (_weapon != "Throw") exitWith {}; if (_weapon != "Throw") exitWith {};

View File

@ -4,30 +4,37 @@
<Key ID="STR_ACE_Headless_Module"> <Key ID="STR_ACE_Headless_Module">
<English>Headless</English> <English>Headless</English>
<German>Headless</German> <German>Headless</German>
<Polish>Headless</Polish>
</Key> </Key>
<Key ID="STR_ACE_Headless_ModuleDesc"> <Key ID="STR_ACE_Headless_ModuleDesc">
<English>This module allows you to setup automatic transferring of AI to Headless Clients. (Default: No)</English> <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> <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>
</Key> </Key>
<Key ID="STR_ACE_Headless_EnabledDesc"> <Key ID="STR_ACE_Headless_EnabledDesc">
<English>Enables transferring of AI to Headless Clients.</English> <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>
</Key> </Key>
<Key ID="STR_ACE_Headless_Delay"> <Key ID="STR_ACE_Headless_Delay">
<English>Delay</English> <English>Delay</English>
<German>Verzögerung</German> <German>Verzögerung</German>
<Polish>Opóźnienie</Polish>
</Key> </Key>
<Key ID="STR_ACE_Headless_DelayDesc"> <Key ID="STR_ACE_Headless_DelayDesc">
<English>Minimal delay between transfers, in seconds. (Default: 15)</English> <English>Minimal delay between transfers, in seconds. (Default: 15)</English>
<German>Minimale Verzögerung zwischen Transfers in Sekunden. (Standard: 15)</German> <German>Minimale Verzögerung zwischen Transfers in Sekunden. (Standard: 15)</German>
<Polish>Minimalne opóźnienie w sekundach pomiędzy transferami. (Domyślnie: 15)</Polish>
</Key> </Key>
<Key ID="STR_ACE_Headless_Log"> <Key ID="STR_ACE_Headless_Log">
<English>Log</English> <English>Log</English>
<German>Protokolldatei anlegen</German> <German>Protokolldatei anlegen</German>
<Polish>Dziennik</Polish>
</Key> </Key>
<Key ID="STR_ACE_Headless_LogDesc"> <Key ID="STR_ACE_Headless_LogDesc">
<English>Log transfer statistics and Headless Client (dis)connections to RPT. (Default: No)</English> <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> <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>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -122,6 +122,7 @@
<French>Audition</French> <French>Audition</French>
<Hungarian>Hallás</Hungarian> <Hungarian>Hallás</Hungarian>
<Russian>Слух</Russian> <Russian>Слух</Russian>
<Italian>Udito</Italian>
</Key> </Key>
<Key ID="STR_ACE_Hearing_EnableCombatDeafness_DisplayName"> <Key ID="STR_ACE_Hearing_EnableCombatDeafness_DisplayName">
<English>Enable Combat Deafness</English> <English>Enable Combat Deafness</English>
@ -133,15 +134,17 @@
<French>Activer la surdité au combat?</French> <French>Activer la surdité au combat?</French>
<Hungarian>Harci süketség engedélyezése?</Hungarian> <Hungarian>Harci süketség engedélyezése?</Hungarian>
<Russian>Оглушение</Russian> <Russian>Оглушение</Russian>
<Italian>Sordità in combattimento</Italian>
</Key> </Key>
<Key ID="STR_ACE_Hearing_EnableCombatDeafness_Description"> <Key ID="STR_ACE_Hearing_EnableCombatDeafness_Description">
<English>Reduces the hearing ability as the player takes hearing damage</English> <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> <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> <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> <Czech>Snižuje schopnost sluchu pokud dojde k jeho poškození hlasitou a blízkou střelbou</Czech>
<Portuguese>Ativar surdez em combate?</Portuguese> <Portuguese>Ativar surdez em combate?</Portuguese>
<Russian>Уменьшает возможность игрока слышать звуки при повреждении органов слуха</Russian> <Russian>Уменьшает возможность игрока слышать звуки при повреждении органов слуха</Russian>
<Italian>Riduce la capacità audio quando il giocatore riceve danni all'udito</Italian>
</Key> </Key>
<Key ID="STR_ACE_Hearing_Module_Description"> <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> <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>
@ -153,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> <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> <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> <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à in combattimento e il tintinnio all'orecchio. I giocatori possono essere assordati quando una pistola viene sparata nelle vicinanze oppure capita una esplosione senza protezione audio.</Italian>
</Key> </Key>
<Key ID="STR_ACE_Hearing_enabledForZeusUnits_DisplayName"> <Key ID="STR_ACE_Hearing_enabledForZeusUnits_DisplayName">
<English>Effect Zeus RC</English> <English>Effect Zeus RC</English>
@ -162,6 +166,7 @@
<Portuguese>Afeta Zeus CR</Portuguese> <Portuguese>Afeta Zeus CR</Portuguese>
<Spanish>Efecto Zeus RC</Spanish> <Spanish>Efecto Zeus RC</Spanish>
<Czech>Vliv na Zeus RC</Czech> <Czech>Vliv na Zeus RC</Czech>
<Italian>Effetto Zeus RC</Italian>
</Key> </Key>
<Key ID="STR_ACE_Hearing_enabledForZeusUnits_Description"> <Key ID="STR_ACE_Hearing_enabledForZeusUnits_Description">
<English>Allow zeus remote controlled units to be able to take hearing damage.</English> <English>Allow zeus remote controlled units to be able to take hearing damage.</English>
@ -171,20 +176,25 @@
<Portuguese>Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos.</Portuguese> <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> <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> <Czech>Aktivovat efekt ztráty sluchu pro vzdáleně ovládané jednotky.</Czech>
<Italian>Abilita le unità controllate remotamente da Zeus a ricevere danni auditivi.</Italian>
</Key> </Key>
<Key ID="STR_ACE_Hearing_autoAddEarplugsToUnits_DisplayName"> <Key ID="STR_ACE_Hearing_autoAddEarplugsToUnits_DisplayName">
<English>Add earplugs to units</English> <English>Add earplugs to units</English>
<German>Füge Ohrenstöpsel zu Einheiten hinzu</German>
<Polish>Dodaj stopery dla jednostek</Polish> <Polish>Dodaj stopery dla jednostek</Polish>
<Russian>Добавлять юнитам беруши</Russian> <Russian>Добавлять юнитам беруши</Russian>
<Portuguese>Adiciona protetores de ouvido as unidades</Portuguese> <Portuguese>Adiciona protetores de ouvido as unidades</Portuguese>
<Czech>Přidat špunty jednotce</Czech> <Czech>Přidat špunty jednotce</Czech>
<Italian>Aggiunge i tappi auricolari</Italian>
</Key> </Key>
<Key ID="STR_ACE_Hearing_autoAddEarplugsToUnits_Description"> <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> <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> <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> <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> <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> <Czech>Přidat `ACE_EarPlugs` všem jednotkám které mají zbraň. Můžete vypnout, pokud používáte vlastní výbavu.</Czech>
<Italian>Le unità in possesso di armi assordanti ricevono gli `ACE_EarPlugs`. Si può disabilitare in caso di equipaggiamenti personalizzati.</Italian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -9,11 +9,3 @@ class Extended_PostInit_EventHandlers {
init = QUOTE( call COMPILE_FILE(XEH_postInit) ); init = QUOTE( call COMPILE_FILE(XEH_postInit) );
}; };
}; };
class Extended_FiredBIS_EventHandlers {
class CAManBase {
class ADDON {
clientFiredBIS = QUOTE(_this call FUNC(handleFired));
};
};
};

View File

@ -7,3 +7,8 @@ GVAR(TI) = 0;
GVAR(cur_cam) = 0; GVAR(cur_cam) = 0;
GVAR(ROTATE) = 0; GVAR(ROTATE) = 0;
GVAR(ELEVAT) = 0.01; GVAR(ELEVAT) = 0.01;
// Register fire event handler
// Don't run for non players, as they are too dumb to launch huntirs anyway
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler);

View File

@ -1,16 +1,10 @@
/* /*
* Author: Norrin, Rocko, Ruthberg * Author: Norrin, Rocko, Ruthberg
* *
* Handles HuntIR projectiles * Handles HuntIR projectiles. Called from the unified fired EH for all CAManBase.
* *
* Arguments: * Arguments:
* 0: unit - Object the event handler is assigned to <OBJECT> * None. Parameters inherited from EFUNC(common,firedEH)
* 1: weapon - Fired weapon <STRING>
* 2: muzzle - Muzzle that was used <STRING>
* 3: mode - Current mode of the fired weapon <STRING>
* 4: ammo - Ammo used <STRING>
* 5: magazine - magazine name which was used <STRING>
* 6: projectile - Object of the projectile that was shot <OBJECT>
* *
* Return Value: * Return Value:
* None * None
@ -19,10 +13,13 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile"]; //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"];
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
if (_ammo != "F_HuntIR") exitWith {}; if (_ammo != "F_HuntIR") exitWith {};
if (!hasInterface) exitWith {};
[{ [{
params ["_projectile"]; params ["_projectile"];

View File

@ -171,7 +171,7 @@
</Key> </Key>
<Key ID="STR_ACE_HUNTIR_HELP_RES"> <Key ID="STR_ACE_HUNTIR_HELP_RES">
<English>R - Reset camera</English> <English>R - Reset camera</English>
<German>R - Reset</German> <German>R - Kamera zurücksetzen</German>
<Spanish>R - Reiniciar camara</Spanish> <Spanish>R - Reiniciar camara</Spanish>
<Czech>R - Reset kamery</Czech> <Czech>R - Reset kamery</Czech>
<Russian>R - Сбросить настройки камеры</Russian> <Russian>R - Сбросить настройки камеры</Russian>
@ -194,4 +194,4 @@
<Portuguese>Esc - Sai do Ajuda</Portuguese> <Portuguese>Esc - Sai do Ajuda</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -76,28 +76,3 @@ GVAR(ParsedTextCached) = [];
if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);}; if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);};
if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;}; if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;};
}] call EFUNC(common,addEventHandler); }] 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

View File

@ -41,8 +41,8 @@ if ((GVAR(openedMenuType) == 0) && {vehicle ACE_player == ACE_player} && {isNull
if (_distanceToBasePoint > _distance) exitWith {true}; if (_distanceToBasePoint > _distance) exitWith {true};
if ((_distanceToBasePoint > 1.5) && {!(_params select 4)}) exitWith { if ((_distanceToBasePoint > 1.2) && {!(_params select 4)}) exitWith {
// If distance to action is greater than 1.5 m and check isn't disabled in params, check LOS // 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] lineIntersects [AGLtoASL _headPos, AGLtoASL _pos, _object, ACE_player]
}; };
false false

View File

@ -3,14 +3,14 @@
<Package name="Interact_Menu"> <Package name="Interact_Menu">
<Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction"> <Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction">
<English>Always display cursor for self interaction</English> <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> <Spanish>Mostrar siempre el cursor para la interacción propia</Spanish>
<Russian>Показывать курсор (взаимодействия с собой)</Russian> <Russian>Показывать курсор (взаимодействия с собой)</Russian>
<Czech>Zobrazit kurzor v menu pro vlastní interakci</Czech> <Czech>Zobrazit kurzor v menu pro vlastní interakci</Czech>
<Polish>Zawsze wyświetlaj kursor dla własnej interakcji</Polish> <Polish>Zawsze wyświetlaj kursor dla własnej interakcji</Polish>
<French>Toujours afficher le curseur pour les interactions sur soi-même</French> <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> <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> <Portuguese>Sempre mostrar cursor para interação pessoal</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorInteraction"> <Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorInteraction">
@ -21,7 +21,7 @@
<Polish>Zawsze wyświetlaj kursor dla interakcji</Polish> <Polish>Zawsze wyświetlaj kursor dla interakcji</Polish>
<Russian>Показывать курсор (взаимодействие)</Russian> <Russian>Показывать курсор (взаимодействие)</Russian>
<Czech>Zobrazit kurzor v menu pro interakci</Czech> <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> <Hungarian>Mindig legyen a cselekvés kurzorja látható</Hungarian>
<Portuguese>Sempre mostrar cursor para interação</Portuguese> <Portuguese>Sempre mostrar cursor para interação</Portuguese>
</Key> </Key>
@ -87,6 +87,7 @@
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_ZeusActionsRoot"> <Key ID="STR_ACE_Interact_Menu_ZeusActionsRoot">
<English>Zeus Actions</English> <English>Zeus Actions</English>
<German>Zeus-Aktionen</German>
<Polish>Akcje Zeusa</Polish> <Polish>Akcje Zeusa</Polish>
<Czech>Akce Zeuse</Czech> <Czech>Akce Zeuse</Czech>
<Spanish>Acciones Zeus</Spanish> <Spanish>Acciones Zeus</Spanish>
@ -94,6 +95,7 @@
<Hungarian>Zeus cselekvések</Hungarian> <Hungarian>Zeus cselekvések</Hungarian>
<Portuguese>Ações do Zeus</Portuguese> <Portuguese>Ações do Zeus</Portuguese>
<Russian>Действия Зевса</Russian> <Russian>Действия Зевса</Russian>
<Italian>Azioni Zeus</Italian>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_ColorTextMax"> <Key ID="STR_ACE_Interact_Menu_ColorTextMax">
<English>Interaction - Text Max</English> <English>Interaction - Text Max</English>
@ -147,7 +149,7 @@
<English>Keep cursor centered</English> <English>Keep cursor centered</English>
<French>Garder le curseur au centre</French> <French>Garder le curseur au centre</French>
<Russian>Центрировать курсор</Russian> <Russian>Центрировать курсор</Russian>
<German>Cursor zentriert halten</German> <German>Mauszeiger zentriert halten</German>
<Hungarian>Kurzor középen tartása</Hungarian> <Hungarian>Kurzor középen tartása</Hungarian>
<Polish>Utrzymaj kursor wyśrodkowany</Polish> <Polish>Utrzymaj kursor wyśrodkowany</Polish>
<Spanish>Mantener el cursor centrado</Spanish> <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> <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> <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> <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> <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> <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> <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> <French>Arrière plan du menu d'interaction</French>
<Hungarian>Cselekvő menü háttere</Hungarian> <Hungarian>Cselekvő menü háttere</Hungarian>
<Russian>Фон меню взаимодействия</Russian> <Russian>Фон меню взаимодействия</Russian>
<Italian>Sfondo del menu interazioni</Italian>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_blurScreenDesc"> <Key ID="STR_ACE_Interact_Menu_blurScreenDesc">
<English>Blur the background while the interaction menu is open.</English> <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> <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> <Hungarian>A háttér elmosása a cselekvő menü használata alatt.</Hungarian>
<Russian>Размыть фон, пока открыто меню взаимодействия.</Russian> <Russian>Размыть фон, пока открыто меню взаимодействия.</Russian>
<Italian>Sfoca lo sfondo mentre il menu interazioni è aperto.</Italian>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_backgroundBlur"> <Key ID="STR_ACE_Interact_Menu_backgroundBlur">
<English>Blur screen</English> <English>Blur screen</English>
@ -259,6 +263,7 @@
<French>Flouter l'écran</French> <French>Flouter l'écran</French>
<Hungarian>Kép elmosása</Hungarian> <Hungarian>Kép elmosása</Hungarian>
<Russian>Размытый</Russian> <Russian>Размытый</Russian>
<Italian>Sfoca lo schermo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_backgroundBlack"> <Key ID="STR_ACE_Interact_Menu_backgroundBlack">
<English>Black</English> <English>Black</English>
@ -270,9 +275,11 @@
<French>Noir</French> <French>Noir</French>
<Hungarian>Fekete</Hungarian> <Hungarian>Fekete</Hungarian>
<Russian>Черный</Russian> <Russian>Черный</Russian>
<Italian>Nero</Italian>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_addBuildingActions"> <Key ID="STR_ACE_Interact_Menu_addBuildingActions">
<English>Show actions for buildings</English> <English>Show actions for buildings</English>
<German>Zeige Aktionen für Gebäude</German>
<Polish>Pokazuj akcje dla budynków</Polish> <Polish>Pokazuj akcje dla budynków</Polish>
<Czech>Zobrazit akci pro budovy</Czech> <Czech>Zobrazit akci pro budovy</Czech>
<Spanish>Mostrar acciones para edificios</Spanish> <Spanish>Mostrar acciones para edificios</Spanish>
@ -280,9 +287,11 @@
<Hungarian>Cselekvések mutatása épületeknél</Hungarian> <Hungarian>Cselekvések mutatása épületeknél</Hungarian>
<Portuguese>Mostrar ações para edifícios</Portuguese> <Portuguese>Mostrar ações para edifícios</Portuguese>
<Russian>Показывать действия для зданий</Russian> <Russian>Показывать действия для зданий</Russian>
<Italian>Mostra azioni per edifici</Italian>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_addBuildingActionsDescription"> <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> <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> <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> <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> <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,17 +299,21 @@
<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> <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> <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> <Russian>Добавляет действия открывания дверей и залезания на лестницы для зданий. (Примечание: возможно падение производительности при открытии меню взаимодействия, особенно в городах)</Russian>
<Italian>Aggiunge azioni di interazioni per aprire porte e montare scale agli edifici. (Nota: c'è un costo in performance quando si apre il menu, specialmente nei paesi)</Italian>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_Category_InteractionMenu"> <Key ID="STR_ACE_Interact_Menu_Category_InteractionMenu">
<English>Interaction Menu</English> <English>Interaction Menu</English>
<German>Interaktionsmenü</German>
<Polish>Menu interakcji</Polish> <Polish>Menu interakcji</Polish>
<Portuguese>Menu de interação</Portuguese> <Portuguese>Menu de interação</Portuguese>
<Russian>Меню взаимодействия</Russian> <Russian>Меню взаимодействия</Russian>
<Czech>Menu interakce</Czech> <Czech>Menu interakce</Czech>
<Spanish>Menú de interacción</Spanish> <Spanish>Menú de interacción</Spanish>
<Italian>Menu interazione</Italian>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_menuAnimationSpeed"> <Key ID="STR_ACE_Interact_Menu_menuAnimationSpeed">
<English>Interaction Animation Speed</English> <English>Interaction Animation Speed</English>
<German>Interaktionsmenü Animationsgeschwindigkeit</German>
<Polish>Szybkość animacji interakcji</Polish> <Polish>Szybkość animacji interakcji</Polish>
<Russian>Скорость анимации меню взаимодействия</Russian> <Russian>Скорость анимации меню взаимодействия</Russian>
<Portuguese>Velocidade da animação de interação</Portuguese> <Portuguese>Velocidade da animação de interação</Portuguese>
@ -308,10 +321,11 @@
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_menuAnimationSpeed_Description"> <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> <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> <Polish>Przyśpiesza animacje menu interakcji oraz czas wymagany do pokazania podmenu</Polish>
<Russian>Ускоряет анимацию меню и уменьшает задержку при наведении мыши для раскрытия подменю</Russian> <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> <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> <Czech>Zrychlí animaci menu a sníží tak čas potřebný pro plné zobrazení podmenu</Czech>
</Key> </Key>
</Package> </Package>
</Project> </Project>

Some files were not shown because too many files have changed in this diff Show More