mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'release'
This commit is contained in:
commit
0e740f00c3
@ -4,7 +4,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.6.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.6.1-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||
|
@ -2,15 +2,15 @@
|
||||
<Project name="ACE">
|
||||
<Package name="Attach">
|
||||
<Key ID="STR_ACE_Attach_AttachDetach">
|
||||
<English>Attach item >></English>
|
||||
<German>Gegenstand befestigen >></German>
|
||||
<Spanish>Acoplar objeto >></Spanish>
|
||||
<Polish>Przyczep >></Polish>
|
||||
<French>Attacher l'objet >></French>
|
||||
<Czech>Připnout >></Czech>
|
||||
<Portuguese>Fixar item >></Portuguese>
|
||||
<Italian>Attacca l'oggetto >></Italian>
|
||||
<Hungarian>Tárgy hozzácsatolása >></Hungarian>
|
||||
<English>Attach item</English>
|
||||
<German>Gegenstand befestigen</German>
|
||||
<Spanish>Acoplar objeto</Spanish>
|
||||
<Polish>Przyczep</Polish>
|
||||
<French>Attacher l'objet</French>
|
||||
<Czech>Připnout</Czech>
|
||||
<Portuguese>Fixar item</Portuguese>
|
||||
<Italian>Attacca l'oggetto</Italian>
|
||||
<Hungarian>Tárgy hozzácsatolása</Hungarian>
|
||||
<Russian>Прикрепить предмет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Attach_Attach">
|
||||
|
@ -127,6 +127,7 @@ PREP(numberToString);
|
||||
PREP(onAnswerRequest);
|
||||
PREP(owned);
|
||||
PREP(parseList);
|
||||
PREP(playConfigSound3D);
|
||||
PREP(player);
|
||||
PREP(playerSide);
|
||||
PREP(positionToASL);
|
||||
|
@ -381,7 +381,7 @@ GVAR(OldIsCamera) = false;
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
["isNotDead", {
|
||||
params ["_unit", "_target"];
|
||||
params ["_unit"];
|
||||
alive _unit
|
||||
}] call FUNC(addCanInteractWithCondition);
|
||||
|
||||
@ -400,6 +400,48 @@ GVAR(OldIsCamera) = false;
|
||||
|
||||
["isNotInZeus", {isNull curatorCamera}] call FUNC(addCanInteractWithCondition);
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Set up reload mutex
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
GVAR(isReloading) = false;
|
||||
|
||||
["isNotReloading", {!GVAR(isReloading)}] call FUNC(addCanInteractWithCondition);
|
||||
|
||||
["keyDown", {
|
||||
if ((_this select 1) in actionKeys "ReloadMagazine" && {alive ACE_player}) then {
|
||||
private _weapon = currentWeapon ACE_player;
|
||||
|
||||
if (_weapon != "") then {
|
||||
private _gesture = getText (configfile >> "CfgWeapons" >> _weapon >> "reloadAction");
|
||||
private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"];
|
||||
private _config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher;
|
||||
private _duration = getNumber (configfile >> _config >> "States" >> _gesture >> "speed");
|
||||
|
||||
if (_duration != 0) then {
|
||||
_duration = if (_duration < 0) then { abs _duration } else { 1 / _duration };
|
||||
} else {
|
||||
_duration = 3;
|
||||
};
|
||||
|
||||
TRACE_2("Reloading, blocking gestures",_weapon,_duration);
|
||||
GVAR(reloadingETA) = CBA_missionTime + _duration;
|
||||
|
||||
if (!GVAR(isReloading)) then {
|
||||
GVAR(isReloading) = true;
|
||||
|
||||
[{
|
||||
CBA_missionTime > GVAR(reloadingETA)
|
||||
},{
|
||||
GVAR(isReloading) = false;
|
||||
}] call CBA_fnc_waitUntilAndExecute;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
false
|
||||
}] call CBA_fnc_addDisplayHandler;
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Set up PlayerJIP eventhandler
|
||||
//////////////////////////////////////////////////
|
||||
|
35
addons/common/functions/fnc_playConfigSound3D.sqf
Normal file
35
addons/common/functions/fnc_playConfigSound3D.sqf
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
* Plays a sound defined in CfgSounds using playSound3D, with global effect
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Sound class <STRING>
|
||||
* 1: Position ASL <ARRAY>
|
||||
* 2: Volume <NUMBER>
|
||||
* 3: Distance <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_soundClass", "_posASL", "_volume", "_distance"];
|
||||
|
||||
private _cfgSound = configFile >> "CfgSounds" >> _soundClass;
|
||||
|
||||
if (!isClass _cfgSound) exitWith {
|
||||
ACE_LOGERROR_1("CfgSounds class [%1] does not exist", _soundClass);
|
||||
};
|
||||
|
||||
private _args = getArray (_cfgSound >> "sound");
|
||||
TRACE_1("playConfigSound3D args", _args);
|
||||
private _pitch = (_args select 2);
|
||||
// Strip the first \ from the filename
|
||||
private _fileName = _args select 0;
|
||||
_fileName = _fileName select [1, count _fileName - 1];
|
||||
TRACE_1("playConfigSound3D filename", _fileName);
|
||||
|
||||
playSound3D [_fileName, objNull, false, _posASL, _volume, _pitch, _distance];
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 0: Target <OBJECT>
|
||||
* 0: Target (ACE_DefuseObject) <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Able to defuse <BOOL>
|
||||
@ -19,15 +19,16 @@
|
||||
params ["_unit", "_target"];
|
||||
TRACE_2("params",_unit,_target);
|
||||
|
||||
private ["_isSpecialist"];
|
||||
|
||||
if (isNull(_target getVariable [QGVAR(Explosive),objNull])) exitWith {
|
||||
private _explosive = _target getVariable [QGVAR(Explosive), objNull];
|
||||
if (isNull _explosive) exitWith {
|
||||
deleteVehicle _target;
|
||||
false
|
||||
};
|
||||
if (vehicle _unit != _unit || {!("ACE_DefusalKit" in (items _unit))}) exitWith {false};
|
||||
_isSpecialist = [_unit] call EFUNC(Common,isEOD);
|
||||
|
||||
if (GVAR(RequireSpecialist) && {!_isSpecialist}) exitWith {false};
|
||||
if (GVAR(RequireSpecialist) && {!([_unit] call EFUNC(Common,isEOD))}) exitWith {false};
|
||||
|
||||
//Handle the naval mines (which doens't get turned into items when defused):
|
||||
if ((_explosive isKindOf "UnderwaterMine_Range_Ammo") && {!mineActive _explosive}) exitWith {false};
|
||||
|
||||
true
|
||||
|
@ -63,6 +63,6 @@ if (ACE_player != _unit) then {
|
||||
_isEOD = [_unit] call EFUNC(Common,isEOD);
|
||||
_defuseTime = [_isEOD, _target] call _fnc_DefuseTime;
|
||||
if (_isEOD || {!GVAR(RequireSpecialist)}) then {
|
||||
[_defuseTime, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize LSTRING(DefusingExplosive))] call EFUNC(common,progressBar);
|
||||
[_defuseTime, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize LSTRING(DefusingExplosive)), {true}, ["isNotSwimming"]] call EFUNC(common,progressBar);
|
||||
};
|
||||
};
|
||||
|
@ -16,9 +16,3 @@ class Extended_PostInit_EventHandlers {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_DisplayLoad_EventHandlers {
|
||||
class RscDisplayMission {
|
||||
ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad));
|
||||
};
|
||||
};
|
||||
|
@ -5,7 +5,7 @@ class CfgVehicles {
|
||||
class ACE_SelfActions {
|
||||
class ADDON {
|
||||
displayName = CSTRING(Gestures);
|
||||
condition = QUOTE((canStand _target) && GVAR(ReloadMutex) && {GVAR(showOnInteractionMenu) == 2});
|
||||
condition = QUOTE((canStand _target) && {GVAR(showOnInteractionMenu) == 2});
|
||||
statement = "";
|
||||
showDisabled = 1;
|
||||
priority = 3.5;
|
||||
|
@ -1,32 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
disableSerialization;
|
||||
|
||||
params ["_display"];
|
||||
|
||||
_display displayAddEventHandler ["KeyDown", {
|
||||
if ((_this select 1) in actionKeys "ReloadMagazine") then {
|
||||
if (isNull ACE_player || {!alive ACE_player}) exitWith {false};
|
||||
|
||||
private _weapon = currentWeapon ACE_player;
|
||||
|
||||
if (_weapon != "") then {
|
||||
GVAR(ReloadMutex) = false;
|
||||
|
||||
private _gesture = getText (configfile >> "CfgWeapons" >> _weapon >> "reloadAction");
|
||||
private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"];
|
||||
private _config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher;
|
||||
private _duration = getNumber (configfile >> _config >> "States" >> _gesture >> "speed");
|
||||
|
||||
if (_duration != 0) then {
|
||||
_duration = if (_duration < 0) then { abs _duration } else { 1 / _duration };
|
||||
} else {
|
||||
_duration = 3;
|
||||
};
|
||||
|
||||
TRACE_2("Reloading, blocking gestures",_weapon,_duration);
|
||||
[{GVAR(ReloadMutex) = true;}, [], _duration] call CBA_fnc_waitAndExecute;
|
||||
};
|
||||
};
|
||||
false
|
||||
}];
|
@ -2,9 +2,6 @@
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
// reload mutex, you can't play signal while reloading
|
||||
GVAR(ReloadMutex) = true;
|
||||
|
||||
// Add keybinds
|
||||
{
|
||||
_x params ["_currentName", "_key", ["_vanillaKey", false] ];
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
TRACE_1("params",_this);
|
||||
|
||||
if (!GVAR(ReloadMutex)) exitWith {false};
|
||||
if (EGVAR(common,isReloading)) exitWith {false};
|
||||
if (GVAR(showOnInteractionMenu) == 0) exitWith {false};
|
||||
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
|
||||
class ACE_Settings {
|
||||
/*class GVAR(enable) { // @todo
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
displayName = CSTRING(enable);
|
||||
};*/
|
||||
class GVAR(effects) {
|
||||
displayName = CSTRING(effects_displayName);
|
||||
typeName = "SCALAR";
|
||||
value = 2;
|
||||
values[] = {ECSTRING(common,Disabled), CSTRING(effects_tintOnly), CSTRING(enabled_tintAndEffects)};
|
||||
};
|
||||
class GVAR(showInThirdPerson) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
|
@ -24,11 +24,3 @@ class Extended_Killed_EventHandlers {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_Explosion_EventHandlers {
|
||||
class CAManBase {
|
||||
class ADDON {
|
||||
clientExplosion = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleExplosion)});
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -3,6 +3,7 @@
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
["ACE3 Common", QGVAR(wipeGlasses), localize LSTRING(WipeGlasses), {
|
||||
if (GVAR(effects) != 2) exitWith {false}; //Can only wipe if full effects setting is set
|
||||
if (!(GETVAR(ace_player,ACE_isUnconscious,false))) exitWith {
|
||||
call FUNC(clearGlasses);
|
||||
true
|
||||
@ -12,126 +13,142 @@ if (!hasInterface) exitWith {};
|
||||
{false},
|
||||
[20, [true, true, false]], false] call CBA_fnc_addKeybind;
|
||||
|
||||
// make sure to stack effect layers in correct order
|
||||
GVAR(GogglesEffectsLayer) = QGVAR(GogglesEffectsLayer) call BIS_fnc_RSCLayer;
|
||||
GVAR(GogglesLayer) = QGVAR(GogglesLayer) call BIS_fnc_RSCLayer;
|
||||
|
||||
if (isNil QGVAR(UsePP)) then {
|
||||
GVAR(UsePP) = true;
|
||||
};
|
||||
["ace_settingsInitialized", {
|
||||
TRACE_2("ace_settingsInitialized eh",GVAR(effects),GVAR(showInThirdPerson));
|
||||
|
||||
// init pp effects
|
||||
GVAR(PostProcess) = ppEffectCreate ["ColorCorrections", 1995];
|
||||
GVAR(PostProcessEyes) = ppEffectCreate ["ColorCorrections", 1992];
|
||||
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [1, 1, 1, 0]];
|
||||
GVAR(PostProcessEyes) ppEffectCommit 0;
|
||||
GVAR(PostProcessEyes) ppEffectEnable false;
|
||||
if (GVAR(effects) == 0) exitWith {};
|
||||
|
||||
GVAR(EffectsActive) = false;
|
||||
// ---Add the TINT Effect---
|
||||
|
||||
// make sure to stack effect layers in correct order
|
||||
GVAR(GogglesEffectsLayer) = QGVAR(GogglesEffectsLayer) call BIS_fnc_RSCLayer;
|
||||
GVAR(GogglesLayer) = QGVAR(GogglesLayer) call BIS_fnc_RSCLayer;
|
||||
|
||||
SETGLASSES(ace_player,GLASSESDEFAULT);
|
||||
|
||||
GVAR(FrameEvent) = [false, [false, 20]];
|
||||
GVAR(PostProcessEyes_Enabled) = false;
|
||||
GVAR(DustHandler) = -1;
|
||||
GVAR(RainDrops) = objNull;
|
||||
GVAR(RainActive) = false;
|
||||
GVAR(RainLastLevel) = 0;
|
||||
GVAR(surfaceCache) = "";
|
||||
GVAR(surfaceCacheIsDust) = false;
|
||||
|
||||
// init GlassesChanged eventhandler
|
||||
GVAR(OldGlasses) = "<null>";
|
||||
|
||||
["loadout", {
|
||||
params ["_unit"];
|
||||
|
||||
private _currentGlasses = goggles _unit;
|
||||
|
||||
if (GVAR(OldGlasses) != _currentGlasses) then {
|
||||
["ace_glassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent;
|
||||
GVAR(OldGlasses) = _currentGlasses;
|
||||
if (isNil QGVAR(UsePP)) then {
|
||||
GVAR(UsePP) = true;
|
||||
};
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// add glasses eventhandlers
|
||||
["ace_glassesChanged", {
|
||||
params ["_unit", "_glasses"];
|
||||
// init GlassesChanged eventhandler
|
||||
GVAR(OldGlasses) = "<null>";
|
||||
["loadout", {
|
||||
params ["_unit"];
|
||||
|
||||
SETGLASSES(_unit,GLASSESDEFAULT);
|
||||
private _currentGlasses = goggles _unit;
|
||||
|
||||
if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)};
|
||||
if (GVAR(OldGlasses) != _currentGlasses) then {
|
||||
["ace_glassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent;
|
||||
GVAR(OldGlasses) = _currentGlasses;
|
||||
};
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
if ([_unit] call FUNC(isGogglesVisible)) then {
|
||||
_glasses call FUNC(applyGlassesEffect);
|
||||
} else {
|
||||
call FUNC(removeGlassesEffect);
|
||||
|
||||
// init pp effects
|
||||
GVAR(PostProcess) = ppEffectCreate ["ColorCorrections", 1995];
|
||||
GVAR(EffectsActive) = false;
|
||||
|
||||
// check goggles
|
||||
private _fnc_checkGoggles = {
|
||||
params ["_unit"];
|
||||
|
||||
if (GVAR(EffectsActive)) then {
|
||||
if (call FUNC(externalCamera) || {!([_unit] call FUNC(isGogglesVisible))}) then {
|
||||
call FUNC(removeGlassesEffect);
|
||||
};
|
||||
} else {
|
||||
if (!(call FUNC(externalCamera)) && {[_unit] call FUNC(isGogglesVisible)}) then {
|
||||
[goggles _unit] call FUNC(applyGlassesEffect);
|
||||
};
|
||||
};
|
||||
};
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
["ace_glassesCracked", {
|
||||
params ["_unit"];
|
||||
["cameraView", _fnc_checkGoggles] call CBA_fnc_addPlayerEventHandler;
|
||||
["ace_activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler;
|
||||
|
||||
_unit setVariable ["ACE_EyesDamaged", true];
|
||||
|
||||
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0.5, 0.5, 0.5, 0.5], [1, 1, 1, 0]];
|
||||
GVAR(PostProcessEyes) ppEffectCommit 0;
|
||||
GVAR(PostProcessEyes) ppEffectEnable true;
|
||||
// add glasses eventhandlers
|
||||
["ace_glassesChanged", {
|
||||
params ["_unit", "_glasses"];
|
||||
|
||||
[{
|
||||
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [1, 1, 1, 1], [1, 1, 1, 0]];
|
||||
GVAR(PostProcessEyes) ppEffectCommit 5;
|
||||
SETGLASSES(_unit,GLASSESDEFAULT);
|
||||
|
||||
[{
|
||||
params ["_unit"];
|
||||
if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)};
|
||||
|
||||
GVAR(PostProcessEyes) ppEffectEnable false;
|
||||
|
||||
_unit setVariable ["ACE_EyesDamaged", false];
|
||||
|
||||
}, _this, 5] call CBA_fnc_waitAndExecute;
|
||||
|
||||
}, _unit, 25] call CBA_fnc_waitAndExecute;
|
||||
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
// check goggles
|
||||
private _fnc_checkGoggles = {
|
||||
params ["_unit"];
|
||||
|
||||
if (GVAR(EffectsActive)) then {
|
||||
if (call FUNC(externalCamera) || {!([_unit] call FUNC(isGogglesVisible))}) then {
|
||||
if ([_unit] call FUNC(isGogglesVisible)) then {
|
||||
_glasses call FUNC(applyGlassesEffect);
|
||||
} else {
|
||||
call FUNC(removeGlassesEffect);
|
||||
};
|
||||
} else {
|
||||
if (!(call FUNC(externalCamera)) && {[_unit] call FUNC(isGogglesVisible)}) then {
|
||||
[goggles _unit] call FUNC(applyGlassesEffect);
|
||||
};
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
// // ---Add the Dust/Dirt/Rain Effects---
|
||||
if (GVAR(effects) == 2) then {
|
||||
|
||||
// Register fire event handler
|
||||
["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||
|
||||
//Add Explosion XEH
|
||||
["CAManBase", "explosion", FUNC(handleExplosion)] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
GVAR(PostProcessEyes) = ppEffectCreate ["ColorCorrections", 1992];
|
||||
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [1, 1, 1, 0]];
|
||||
GVAR(PostProcessEyes) ppEffectCommit 0;
|
||||
GVAR(PostProcessEyes) ppEffectEnable false;
|
||||
GVAR(PostProcessEyes_Enabled) = false;
|
||||
|
||||
GVAR(FrameEvent) = [false, [false, 20]];
|
||||
GVAR(DustHandler) = -1;
|
||||
GVAR(RainDrops) = objNull;
|
||||
GVAR(RainActive) = false;
|
||||
GVAR(RainLastLevel) = 0;
|
||||
GVAR(surfaceCache) = "";
|
||||
GVAR(surfaceCacheIsDust) = false;
|
||||
|
||||
["ace_glassesCracked", {
|
||||
params ["_unit"];
|
||||
|
||||
_unit setVariable ["ACE_EyesDamaged", true];
|
||||
|
||||
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0.5, 0.5, 0.5, 0.5], [1, 1, 1, 0]];
|
||||
GVAR(PostProcessEyes) ppEffectCommit 0;
|
||||
GVAR(PostProcessEyes) ppEffectEnable true;
|
||||
|
||||
[{
|
||||
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [1, 1, 1, 1], [1, 1, 1, 0]];
|
||||
GVAR(PostProcessEyes) ppEffectCommit 5;
|
||||
|
||||
[{
|
||||
params ["_unit"];
|
||||
|
||||
GVAR(PostProcessEyes) ppEffectEnable false;
|
||||
|
||||
_unit setVariable ["ACE_EyesDamaged", false];
|
||||
|
||||
}, _this, 5] call CBA_fnc_waitAndExecute;
|
||||
|
||||
}, _unit, 25] call CBA_fnc_waitAndExecute;
|
||||
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
// goggles effects main PFH
|
||||
[{
|
||||
BEGIN_COUNTER(goggles);
|
||||
|
||||
// rain
|
||||
call FUNC(applyRainEffect);
|
||||
|
||||
// auto remove effects under water
|
||||
if (GVAR(EffectsActive) && {underwater ACE_player} && {[goggles ACE_player] call FUNC(isDivingGoggles)}) then {
|
||||
call FUNC(removeRainEffect);
|
||||
call FUNC(removeDirtEffect);
|
||||
call FUNC(removeDustEffect);
|
||||
};
|
||||
|
||||
// rotor wash effect
|
||||
call FUNC(applyRotorWashEffect);
|
||||
|
||||
END_COUNTER(goggles);
|
||||
}, 0.5, []] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
};
|
||||
|
||||
["cameraView", _fnc_checkGoggles] call CBA_fnc_addPlayerEventHandler;
|
||||
["ace_activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler;
|
||||
|
||||
// goggles effects main PFH
|
||||
[{
|
||||
BEGIN_COUNTER(goggles);
|
||||
|
||||
// rain
|
||||
call FUNC(applyRainEffect);
|
||||
|
||||
// auto remove effects under water
|
||||
if (GVAR(EffectsActive) && {underwater ACE_player} && {[goggles ACE_player] call FUNC(isDivingGoggles)}) then {
|
||||
call FUNC(removeRainEffect);
|
||||
call FUNC(removeDirtEffect);
|
||||
call FUNC(removeDustEffect);
|
||||
};
|
||||
|
||||
// rotor wash effect
|
||||
call FUNC(applyRotorWashEffect);
|
||||
|
||||
END_COUNTER(goggles);
|
||||
}, 0.5, []] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
// Register fire event handler
|
||||
["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
@ -46,13 +46,15 @@ if (_imagePath != "") then {
|
||||
(GLASSDISPLAY displayCtrl 10650) ctrlSetText _imagePath;
|
||||
};
|
||||
|
||||
if (GETDIRT) then {
|
||||
call FUNC(applyDirtEffect);
|
||||
};
|
||||
if (GVAR(effects) == 2) then {
|
||||
if (GETDIRT) then {
|
||||
call FUNC(applyDirtEffect);
|
||||
};
|
||||
|
||||
if (GETDUSTT(DACTIVE)) then {
|
||||
SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2));
|
||||
call FUNC(applyDustEffect);
|
||||
if (GETDUSTT(DACTIVE)) then {
|
||||
SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2));
|
||||
call FUNC(applyDustEffect);
|
||||
};
|
||||
};
|
||||
|
||||
GVAR(EffectsActive) = true;
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
// Handle the ThreeDen Editor Camera
|
||||
if ((!isNil {is3DEN}) && {is3DEN}) exitWith {true};
|
||||
if (is3DEN) exitWith {true};
|
||||
|
||||
if (GVAR(showInThirdPerson)) then {
|
||||
cameraView in ["GROUP"] || EFUNC(common,isFeatureCameraActive)
|
||||
|
@ -15,20 +15,21 @@
|
||||
params ["_unit"];
|
||||
|
||||
if (_unit != ACE_player) exitWith {true};
|
||||
|
||||
GVAR(PostProcessEyes) ppEffectEnable false;
|
||||
|
||||
SETGLASSES(_unit,GLASSESDEFAULT);
|
||||
if (GVAR(effects) == 0) exitWith {true};
|
||||
|
||||
call FUNC(removeGlassesEffect);
|
||||
|
||||
GVAR(EffectsActive) = false;
|
||||
if (GVAR(effects) == 2) then {
|
||||
GVAR(PostProcessEyes) ppEffectEnable false;
|
||||
|
||||
_unit setVariable ["ACE_EyesDamaged", false];
|
||||
SETGLASSES(_unit,GLASSESDEFAULT);
|
||||
|
||||
if (GVAR(DustHandler) != -1) then {
|
||||
[GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler;
|
||||
_unit setVariable ["ACE_EyesDamaged", false];
|
||||
|
||||
if (GVAR(DustHandler) != -1) then {
|
||||
[GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
GVAR(DustHandler) = -1;
|
||||
};
|
||||
GVAR(DustHandler) = -1;
|
||||
|
||||
true
|
||||
|
@ -22,6 +22,8 @@ if (!isNull (GLASSDISPLAY)) then {
|
||||
GLASSDISPLAY closeDisplay 0;
|
||||
};
|
||||
|
||||
call FUNC(removeDirtEffect);
|
||||
call FUNC(removeRainEffect);
|
||||
call FUNC(removeDustEffect);
|
||||
if (GVAR(effects) == 2) then {
|
||||
call FUNC(removeDirtEffect);
|
||||
call FUNC(removeRainEffect);
|
||||
call FUNC(removeDustEffect);
|
||||
};
|
||||
|
@ -25,5 +25,14 @@
|
||||
<Portuguese>Limpar Óculos</Portuguese>
|
||||
<Italian>Pulisci gli occhiali</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Goggles_effects_displayName">
|
||||
<English>Goggle Effects</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Goggles_effects_tintOnly">
|
||||
<English>Tint</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Goggles_enabled_tintAndEffects">
|
||||
<English>Tint + Effects</English>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,41 +0,0 @@
|
||||
class CfgWeapons {
|
||||
class Rifle_Long_Base_F;
|
||||
|
||||
/* Long Rifles */
|
||||
|
||||
class GM6_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
|
||||
class LRR_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
|
||||
class DMR_06_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
|
||||
class DMR_05_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
|
||||
class DMR_04_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
|
||||
class DMR_03_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
|
||||
class DMR_02_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
|
||||
class DMR_01_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
|
||||
class EBR_base_F: Rifle_Long_Base_F {
|
||||
GVAR(allowGunbag) = 1;
|
||||
};
|
||||
};
|
@ -7,3 +7,4 @@ PREP(status);
|
||||
PREP(canInteract);
|
||||
PREP(calculateMass);
|
||||
PREP(hasGunbag);
|
||||
PREP(isMachineGun);
|
||||
|
@ -16,4 +16,3 @@ class CfgPatches {
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
|
@ -20,12 +20,13 @@ params ["_unit", "_target"];
|
||||
|
||||
private _result = -1;
|
||||
private _gunbag = backpackContainer _target;
|
||||
private _weapon = primaryWeapon _unit;
|
||||
|
||||
if ((_gunbag getVariable [QGVAR(gunbagWeapon), []]) isEqualTo [] && {primaryWeapon _unit != ""} && {getNumber (configFile >> "CfgWeapons" >> primaryWeapon _unit >> QGVAR(allowGunbag)) == 1}) then {
|
||||
if ((_gunbag getVariable [QGVAR(gunbagWeapon), []]) isEqualTo [] && {_weapon != ""} && {!(_weapon call FUNC(isMachineGun))}) then {
|
||||
_result = 0;
|
||||
};
|
||||
|
||||
if (!((_gunbag getVariable [QGVAR(gunbagWeapon), []]) isEqualTo []) && {primaryWeapon _unit == ""}) then {
|
||||
if (!((_gunbag getVariable [QGVAR(gunbagWeapon), []]) isEqualTo []) && {_weapon == ""}) then {
|
||||
_result = 1;
|
||||
};
|
||||
|
||||
|
29
addons/gunbag/functions/fnc_isMachineGun.sqf
Normal file
29
addons/gunbag/functions/fnc_isMachineGun.sqf
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Reports true if a weapon is a machine gun.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Weapon class name <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Is machine gun <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* (currentWeapon player) call ace_gunbag_fnc_isMachineGun
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_weapon"];
|
||||
|
||||
private _config = _weapon call CBA_fnc_getItemConfig;
|
||||
|
||||
// definition of a machine gun by BIS_fnc_itemType
|
||||
private _cursor = getText (_config >> "cursor");
|
||||
|
||||
if (toLower _cursor in ["", "emptycursor"]) then {
|
||||
_cursor = getText (_config >> "cursorAim");
|
||||
};
|
||||
|
||||
_cursor == "MG"
|
@ -8,7 +8,8 @@ class CfgPatches {
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {
|
||||
// Vanilla
|
||||
"3den",
|
||||
"a3_3den",
|
||||
"a3_3den_language",
|
||||
"a3_air_f",
|
||||
"a3_air_f_beta",
|
||||
"a3_air_f_beta_heli_attack_01",
|
||||
@ -17,10 +18,21 @@ class CfgPatches {
|
||||
"a3_air_f_beta_heli_transport_02",
|
||||
"a3_air_f_beta_parachute_01",
|
||||
"a3_air_f_beta_parachute_02",
|
||||
"a3_air_f_epb",
|
||||
"a3_air_f_epb_heli_light_03",
|
||||
"a3_air_f_epc",
|
||||
"a3_air_f_epc_plane_cas_01",
|
||||
"a3_air_f_epc_plane_cas_02",
|
||||
"a3_air_f_epc_plane_fighter_03",
|
||||
"a3_air_f_exp",
|
||||
"a3_air_f_exp_heli_light_01",
|
||||
"a3_air_f_exp_heli_transport_01",
|
||||
"a3_air_f_exp_plane_civil_01",
|
||||
"a3_air_f_exp_uav_03",
|
||||
"a3_air_f_exp_uav_04",
|
||||
"a3_air_f_exp_vtol_01",
|
||||
"a3_air_f_exp_vtol_02",
|
||||
"a3_air_f_gamma",
|
||||
"a3_air_f_gamma_plane_fighter_03",
|
||||
"a3_air_f_gamma_uav_01",
|
||||
"a3_air_f_gamma_uav_02",
|
||||
@ -38,6 +50,11 @@ class CfgPatches {
|
||||
"a3_air_f_heli_light_02",
|
||||
"a3_animals_f",
|
||||
"a3_animals_f_animconfig",
|
||||
"a3_animals_f_beta",
|
||||
"a3_animals_f_beta_chicken",
|
||||
"a3_animals_f_beta_dog",
|
||||
"a3_animals_f_beta_goat",
|
||||
"a3_animals_f_beta_sheep",
|
||||
"a3_animals_f_chicken",
|
||||
"a3_animals_f_dog",
|
||||
"a3_animals_f_fishes",
|
||||
@ -49,42 +66,75 @@ class CfgPatches {
|
||||
"a3_animals_f_snakes",
|
||||
"a3_animals_f_turtle",
|
||||
"a3_anims_f",
|
||||
"a3_anims_f_bootcamp",
|
||||
"a3_anims_f_config_sdr",
|
||||
"a3_anims_f_config_sdr_weaponswitching",
|
||||
"a3_anims_f_data",
|
||||
"a3_anims_f_epa",
|
||||
"a3_anims_f_epc",
|
||||
"a3_anims_f_exp",
|
||||
"a3_anims_f_exp_a",
|
||||
"a3_anims_f_exp_revive",
|
||||
"a3_anims_f_heli",
|
||||
"a3_anims_f_kart",
|
||||
"a3_anims_f_mark",
|
||||
"a3_anims_f_mark_deployment",
|
||||
"a3_armor_f",
|
||||
"a3_armor_f_amv",
|
||||
"a3_armor_f_apc_wheeled_03",
|
||||
"a3_armor_f_beta",
|
||||
"a3_armor_f_beta_apc_tracked_01",
|
||||
"a3_armor_f_beta_apc_tracked_02",
|
||||
"a3_armor_f_beta_apc_wheeled_01",
|
||||
"a3_armor_f_beta_apc_wheeled_02",
|
||||
"a3_armor_f_epb",
|
||||
"a3_armor_f_epb_apc_tracked_03",
|
||||
"a3_armor_f_epb_mbt_03",
|
||||
"a3_armor_f_epc",
|
||||
"a3_armor_f_epc_mbt_01",
|
||||
"a3_armor_f_exp",
|
||||
"a3_armor_f_exp_apc_tracked_02",
|
||||
"a3_armor_f_exp_apc_wheeled_02",
|
||||
"a3_armor_f_exp_mbt_02",
|
||||
"a3_armor_f_gamma",
|
||||
"a3_armor_f_gamma_apc_wheeled_03",
|
||||
"a3_armor_f_gamma_mbt_01",
|
||||
"a3_armor_f_gamma_mbt_02",
|
||||
"a3_armor_f_marid",
|
||||
"a3_armor_f_panther",
|
||||
"a3_armor_f_slammer",
|
||||
"a3_armor_f_t100k",
|
||||
"a3_baseconfig_f",
|
||||
"a3_boat_f",
|
||||
"a3_boat_f_beta",
|
||||
"a3_boat_f_beta_boat_armed_01",
|
||||
"a3_boat_f_beta_boat_transport_01",
|
||||
"a3_boat_f_beta_sdv_01",
|
||||
"a3_boat_f_boat_armed_01",
|
||||
"a3_boat_f_boat_transport_01",
|
||||
"a3_boat_f_civilian_boat",
|
||||
"a3_boat_f_epc",
|
||||
"a3_boat_f_epc_submarine_01",
|
||||
"a3_boat_f_epc_submarine_01_f",
|
||||
"a3_boat_f_exp",
|
||||
"a3_boat_f_exp_boat_transport_01",
|
||||
"a3_boat_f_exp_boat_transport_02",
|
||||
"a3_boat_f_exp_scooter_transport_01",
|
||||
"a3_boat_f_gamma",
|
||||
"a3_boat_f_gamma_boat_civil_01",
|
||||
"a3_boat_f_gamma_boat_civil_04",
|
||||
"a3_boat_f_gamma_boat_transport_01",
|
||||
"a3_boat_f_heli",
|
||||
"a3_boat_f_heli_boat_armed_01",
|
||||
"a3_boat_f_heli_sdv_01",
|
||||
"a3_boat_f_sdv_01",
|
||||
"a3_boat_f_trawler",
|
||||
"a3_cargoposes_f",
|
||||
"a3_cargoposes_f_exp",
|
||||
"a3_cargoposes_f_heli",
|
||||
"a3_characters_f",
|
||||
"a3_characters_f_beta",
|
||||
"a3_characters_f_beta_indep",
|
||||
"a3_characters_f_blufor",
|
||||
"a3_characters_f_bootcamp",
|
||||
"a3_characters_f_bootcamp_common",
|
||||
@ -94,6 +144,10 @@ class CfgPatches {
|
||||
"a3_characters_f_epb",
|
||||
"a3_characters_f_epb_heads",
|
||||
"a3_characters_f_epc",
|
||||
"a3_characters_f_exp",
|
||||
"a3_characters_f_exp_civil",
|
||||
"a3_characters_f_exp_headgear",
|
||||
"a3_characters_f_exp_vests",
|
||||
"a3_characters_f_gamma",
|
||||
"a3_characters_f_heads",
|
||||
"a3_characters_f_indep",
|
||||
@ -110,22 +164,54 @@ class CfgPatches {
|
||||
"a3_data_f_curator_misc",
|
||||
"a3_data_f_curator_respawn",
|
||||
"a3_data_f_curator_virtual",
|
||||
"a3_data_f_exp",
|
||||
"a3_data_f_exp_a",
|
||||
"a3_data_f_exp_a_virtual",
|
||||
"a3_data_f_exp_b",
|
||||
"a3_data_f_exp_particleeffects",
|
||||
"a3_data_f_heli",
|
||||
"a3_data_f_hook",
|
||||
"a3_data_f_kart",
|
||||
"a3_data_f_kart_particleeffects",
|
||||
"a3_data_f_mark",
|
||||
"a3_data_f_particleeffects",
|
||||
"a3_drones_f",
|
||||
"a3_drones_f_air_f_gamma_uav_01",
|
||||
"a3_drones_f_air_f_gamma_uav_02",
|
||||
"a3_drones_f_characters_f_gamma",
|
||||
"a3_drones_f_soft_f_gamma_ugv_01",
|
||||
"a3_drones_f_weapons_f_gamma_ammoboxes",
|
||||
"a3_drones_f_weapons_f_gamma_items",
|
||||
"a3_dubbing_f",
|
||||
"a3_dubbing_f_beta",
|
||||
"a3_dubbing_f_bootcamp",
|
||||
"a3_dubbing_f_epa",
|
||||
"a3_dubbing_f_epb",
|
||||
"a3_dubbing_f_epc",
|
||||
"a3_dubbing_f_exp",
|
||||
"a3_dubbing_f_gamma",
|
||||
"a3_dubbing_f_heli",
|
||||
"a3_dubbing_f_mark",
|
||||
"a3_dubbing_f_mp_mark",
|
||||
"a3_dubbing_radio_f",
|
||||
"a3_dubbing_radio_f_data_eng",
|
||||
"a3_dubbing_radio_f_data_engb",
|
||||
"a3_dubbing_radio_f_data_gre",
|
||||
"a3_dubbing_radio_f_data_per",
|
||||
"a3_dubbing_radio_f_data_vr",
|
||||
"a3_dubbing_radio_f_exp",
|
||||
"a3_dubbing_radio_f_exp_data_chi",
|
||||
"a3_dubbing_radio_f_exp_data_engfre",
|
||||
"a3_dubbing_radio_f_exp_data_fre",
|
||||
"a3_editor_f",
|
||||
"a3_editorpreviews_f",
|
||||
"a3_editorpreviews_f_exp",
|
||||
"a3_functions_f",
|
||||
"a3_functions_f_bootcamp",
|
||||
"a3_functions_f_curator",
|
||||
"a3_functions_f_epa",
|
||||
"a3_functions_f_epc",
|
||||
"a3_functions_f_exp",
|
||||
"a3_functions_f_exp_a",
|
||||
"a3_functions_f_heli",
|
||||
"a3_functions_f_mark",
|
||||
@ -137,7 +223,9 @@ class CfgPatches {
|
||||
"a3_language_f_epa",
|
||||
"a3_language_f_epb",
|
||||
"a3_language_f_epc",
|
||||
"a3_language_f_exp",
|
||||
"a3_language_f_exp_a",
|
||||
"a3_language_f_exp_b",
|
||||
"a3_language_f_gamma",
|
||||
"a3_language_f_heli",
|
||||
"a3_language_f_kart",
|
||||
@ -145,32 +233,69 @@ class CfgPatches {
|
||||
"a3_language_f_mp_mark",
|
||||
"a3_languagemissions_f",
|
||||
"a3_languagemissions_f_beta",
|
||||
"a3_languagemissions_f_bootcamp",
|
||||
"a3_languagemissions_f_epa",
|
||||
"a3_languagemissions_f_epb",
|
||||
"a3_languagemissions_f_epc",
|
||||
"a3_languagemissions_f_exp",
|
||||
"a3_languagemissions_f_exp_a",
|
||||
"a3_languagemissions_f_gamma",
|
||||
"a3_languagemissions_f_heli",
|
||||
"a3_languagemissions_f_kart",
|
||||
"a3_languagemissions_f_mark",
|
||||
"a3_languagemissions_f_mp_mark",
|
||||
"a3_map_altis",
|
||||
"a3_map_altis_data",
|
||||
"a3_map_altis_data_layers",
|
||||
"a3_map_altis_scenes",
|
||||
"a3_map_altis_scenes_f",
|
||||
"a3_map_data",
|
||||
"a3_map_stratis",
|
||||
"a3_map_stratis_data",
|
||||
"a3_map_stratis_data_layers",
|
||||
"a3_map_stratis_scenes",
|
||||
"a3_map_stratis_scenes_f",
|
||||
"a3_map_vr",
|
||||
"a3_map_vr_scenes",
|
||||
"a3_map_vr_scenes_f",
|
||||
"a3_misc_f",
|
||||
"a3_misc_f_helpers",
|
||||
"a3_missions_f",
|
||||
"a3_missions_f_beta",
|
||||
"a3_missions_f_beta_data",
|
||||
"a3_missions_f_beta_video",
|
||||
"a3_missions_f_bootcamp",
|
||||
"a3_missions_f_bootcamp_data",
|
||||
"a3_missions_f_bootcamp_video",
|
||||
"a3_missions_f_curator",
|
||||
"a3_missions_f_data",
|
||||
"a3_missions_f_epa",
|
||||
"a3_missions_f_epa_data",
|
||||
"a3_missions_f_epa_video",
|
||||
"a3_missions_f_epb",
|
||||
"a3_missions_f_epc",
|
||||
"a3_missions_f_exp",
|
||||
"a3_missions_f_exp_a",
|
||||
"a3_missions_f_exp_a_data",
|
||||
"a3_missions_f_exp_data",
|
||||
"a3_missions_f_exp_video",
|
||||
"a3_missions_f_gamma",
|
||||
"a3_missions_f_gamma_data",
|
||||
"a3_missions_f_gamma_video",
|
||||
"a3_missions_f_heli",
|
||||
"a3_missions_f_heli_data",
|
||||
"a3_missions_f_heli_video",
|
||||
"a3_missions_f_kart",
|
||||
"a3_missions_f_kart_data",
|
||||
"a3_missions_f_mark",
|
||||
"a3_missions_f_mark_data",
|
||||
"a3_missions_f_mark_video",
|
||||
"a3_missions_f_mp_mark",
|
||||
"a3_missions_f_mp_mark_data",
|
||||
"a3_missions_f_video",
|
||||
"a3_modules_f",
|
||||
"a3_modules_f_beta",
|
||||
"a3_modules_f_beta_data",
|
||||
"a3_modules_f_beta_firingdrills",
|
||||
"a3_modules_f_bootcamp",
|
||||
"a3_modules_f_bootcamp_misc",
|
||||
@ -191,18 +316,22 @@ class CfgPatches {
|
||||
"a3_modules_f_curator_ordnance",
|
||||
"a3_modules_f_curator_respawn",
|
||||
"a3_modules_f_curator_smokeshells",
|
||||
"a3_modules_f_data",
|
||||
"a3_modules_f_dyno",
|
||||
"a3_modules_f_effects",
|
||||
"a3_modules_f_epb",
|
||||
"a3_modules_f_epb_misc",
|
||||
"a3_modules_f_events",
|
||||
"a3_modules_f_exp",
|
||||
"a3_modules_f_exp_a",
|
||||
"a3_modules_f_groupmodifiers",
|
||||
"a3_modules_f_hc",
|
||||
"a3_modules_f_heli",
|
||||
"a3_modules_f_heli_misc",
|
||||
"a3_modules_f_heli_spawnai",
|
||||
"a3_modules_f_intel",
|
||||
"a3_modules_f_kart",
|
||||
"a3_modules_f_kart_data",
|
||||
"a3_modules_f_kart_timetrials",
|
||||
"a3_modules_f_livefeed",
|
||||
"a3_modules_f_mark",
|
||||
@ -211,6 +340,7 @@ class CfgPatches {
|
||||
"a3_modules_f_marta",
|
||||
"a3_modules_f_misc",
|
||||
"a3_modules_f_mp_mark",
|
||||
"a3_modules_f_mp_mark_objectives",
|
||||
"a3_modules_f_multiplayer",
|
||||
"a3_modules_f_objectmodifiers",
|
||||
"a3_modules_f_sites",
|
||||
@ -220,65 +350,143 @@ class CfgPatches {
|
||||
"a3_modules_f_uav",
|
||||
"a3_music_f",
|
||||
"a3_music_f_bootcamp",
|
||||
"a3_music_f_bootcamp_music",
|
||||
"a3_music_f_epa",
|
||||
"a3_music_f_epa_music",
|
||||
"a3_music_f_epb",
|
||||
"a3_music_f_epb_music",
|
||||
"a3_music_f_epc",
|
||||
"a3_music_f_epc_music",
|
||||
"a3_music_f_exp",
|
||||
"a3_music_f_exp_music",
|
||||
"a3_music_f_heli",
|
||||
"a3_music_f_heli_music",
|
||||
"a3_music_f_mark",
|
||||
"a3_music_f_mark_music",
|
||||
"a3_music_f_music",
|
||||
"a3_plants_f",
|
||||
"a3_plants_f_bush",
|
||||
"a3_props_f_exp",
|
||||
"a3_props_f_exp_a",
|
||||
"a3_props_f_exp_a_military",
|
||||
"a3_props_f_exp_a_military_equipment",
|
||||
"a3_props_f_exp_civilian",
|
||||
"a3_props_f_exp_civilian_garbage",
|
||||
"a3_props_f_exp_commercial",
|
||||
"a3_props_f_exp_commercial_market",
|
||||
"a3_props_f_exp_industrial",
|
||||
"a3_props_f_exp_industrial_heavyequipment",
|
||||
"a3_props_f_exp_infrastructure",
|
||||
"a3_props_f_exp_infrastructure_railways",
|
||||
"a3_props_f_exp_infrastructure_traffic",
|
||||
"a3_props_f_exp_military",
|
||||
"a3_props_f_exp_military_camps",
|
||||
"a3_props_f_exp_military_oldplanewrecks",
|
||||
"a3_props_f_exp_naval",
|
||||
"a3_props_f_exp_naval_boats",
|
||||
"a3_roads_f",
|
||||
"a3_rocks_f",
|
||||
"a3_rocks_f_blunt",
|
||||
"a3_rocks_f_sharp",
|
||||
"a3_rocks_f_water",
|
||||
"a3_signs_f",
|
||||
"a3_signs_f_ad",
|
||||
"a3_signs_f_signs_ad",
|
||||
"a3_soft_f",
|
||||
"a3_soft_f_beta",
|
||||
"a3_soft_f_beta_mrap_03",
|
||||
"a3_soft_f_beta_quadbike",
|
||||
"a3_soft_f_beta_quadbike_01",
|
||||
"a3_soft_f_beta_truck_01",
|
||||
"a3_soft_f_beta_truck_02",
|
||||
"a3_soft_f_bootcamp",
|
||||
"a3_soft_f_bootcamp_offroad_01",
|
||||
"a3_soft_f_bootcamp_quadbike",
|
||||
"a3_soft_f_bootcamp_quadbike_01",
|
||||
"a3_soft_f_bootcamp_truck",
|
||||
"a3_soft_f_bootcamp_van_01",
|
||||
"a3_soft_f_car",
|
||||
"a3_soft_f_crusher_ugv",
|
||||
"a3_soft_f_epc",
|
||||
"a3_soft_f_epc_truck_03",
|
||||
"a3_soft_f_exp",
|
||||
"a3_soft_f_exp_lsv_01",
|
||||
"a3_soft_f_exp_lsv_02",
|
||||
"a3_soft_f_exp_mrap_02",
|
||||
"a3_soft_f_exp_offroad_01",
|
||||
"a3_soft_f_exp_offroad_02",
|
||||
"a3_soft_f_exp_quadbike_01",
|
||||
"a3_soft_f_exp_truck_03",
|
||||
"a3_soft_f_exp_ugv_01",
|
||||
"a3_soft_f_exp_van_01",
|
||||
"a3_soft_f_gamma",
|
||||
"a3_soft_f_gamma_hatchback_01",
|
||||
"a3_soft_f_gamma_hemtt",
|
||||
"a3_soft_f_gamma_offroad",
|
||||
"a3_soft_f_gamma_offroad_01",
|
||||
"a3_soft_f_gamma_quadbike",
|
||||
"a3_soft_f_gamma_quadbike_01",
|
||||
"a3_soft_f_gamma_suv_01",
|
||||
"a3_soft_f_gamma_truck_01",
|
||||
"a3_soft_f_gamma_truck_02",
|
||||
"a3_soft_f_gamma_truckheavy",
|
||||
"a3_soft_f_gamma_van_01",
|
||||
"a3_soft_f_heli",
|
||||
"a3_soft_f_heli_car",
|
||||
"a3_soft_f_heli_crusher_ugv",
|
||||
"a3_soft_f_heli_hatchback_01",
|
||||
"a3_soft_f_heli_mrap_01",
|
||||
"a3_soft_f_heli_mrap_02",
|
||||
"a3_soft_f_heli_mrap_03",
|
||||
"a3_soft_f_heli_quadbike",
|
||||
"a3_soft_f_heli_quadbike_01",
|
||||
"a3_soft_f_heli_suv",
|
||||
"a3_soft_f_heli_suv_01",
|
||||
"a3_soft_f_heli_truck",
|
||||
"a3_soft_f_heli_ugv_01",
|
||||
"a3_soft_f_heli_van_01",
|
||||
"a3_soft_f_hemtt",
|
||||
"a3_soft_f_kart",
|
||||
"a3_soft_f_kart_kart_01",
|
||||
"a3_soft_f_mrap_01",
|
||||
"a3_soft_f_mrap_02",
|
||||
"a3_soft_f_mrap_03",
|
||||
"a3_soft_f_offroad_01",
|
||||
"a3_soft_f_quadbike",
|
||||
"a3_soft_f_quadbike_01",
|
||||
"a3_soft_f_suv",
|
||||
"a3_soft_f_truck",
|
||||
"a3_soft_f_truckheavy",
|
||||
"a3_sounds_f",
|
||||
"a3_sounds_f_arsenal",
|
||||
"a3_sounds_f_bootcamp",
|
||||
"a3_sounds_f_characters",
|
||||
"a3_sounds_f_environment",
|
||||
"a3_sounds_f_epb",
|
||||
"a3_sounds_f_epc",
|
||||
"a3_sounds_f_exp",
|
||||
"a3_sounds_f_exp_a",
|
||||
"a3_sounds_f_heli",
|
||||
"a3_sounds_f_kart",
|
||||
"a3_sounds_f_mark",
|
||||
"a3_sounds_f_sfx",
|
||||
"a3_sounds_f_vehicles",
|
||||
"a3_static_f",
|
||||
"a3_static_f_aa_01",
|
||||
"a3_static_f_at_01",
|
||||
"a3_static_f_beta",
|
||||
"a3_static_f_beta_mortar_01",
|
||||
"a3_static_f_exp",
|
||||
"a3_static_f_gamma",
|
||||
"a3_static_f_gamma_aa",
|
||||
"a3_static_f_gamma_at",
|
||||
"a3_static_f_gamma_mortar_01",
|
||||
"a3_static_f_mark",
|
||||
"a3_static_f_mark_designator_01",
|
||||
"a3_static_f_mark_designator_02",
|
||||
"a3_static_f_mortar_01",
|
||||
"a3_structures_f",
|
||||
"a3_structures_f_bootcamp",
|
||||
"a3_structures_f_bootcamp_civ_camping",
|
||||
"a3_structures_f_bootcamp_civ_sportsgrounds",
|
||||
"a3_structures_f_bootcamp_ind_cargo",
|
||||
@ -312,6 +520,7 @@ class CfgPatches {
|
||||
"a3_structures_f_civ_sportsgrounds",
|
||||
"a3_structures_f_civ_statues",
|
||||
"a3_structures_f_civ_tourism",
|
||||
"a3_structures_f_data",
|
||||
"a3_structures_f_dominants",
|
||||
"a3_structures_f_dominants_amphitheater",
|
||||
"a3_structures_f_dominants_castle",
|
||||
@ -319,6 +528,7 @@ class CfgPatches {
|
||||
"a3_structures_f_dominants_hospital",
|
||||
"a3_structures_f_dominants_lighthouse",
|
||||
"a3_structures_f_dominants_wip",
|
||||
"a3_structures_f_epa",
|
||||
"a3_structures_f_epa_civ_camping",
|
||||
"a3_structures_f_epa_civ_constructions",
|
||||
"a3_structures_f_epa_items_electronics",
|
||||
@ -328,6 +538,7 @@ class CfgPatches {
|
||||
"a3_structures_f_epa_items_vessels",
|
||||
"a3_structures_f_epa_mil_scrapyard",
|
||||
"a3_structures_f_epa_walls",
|
||||
"a3_structures_f_epb",
|
||||
"a3_structures_f_epb_civ_accessories",
|
||||
"a3_structures_f_epb_civ_camping",
|
||||
"a3_structures_f_epb_civ_dead",
|
||||
@ -340,6 +551,7 @@ class CfgPatches {
|
||||
"a3_structures_f_epb_items_military",
|
||||
"a3_structures_f_epb_items_vessels",
|
||||
"a3_structures_f_epb_naval_fishing",
|
||||
"a3_structures_f_epc",
|
||||
"a3_structures_f_epc_civ_accessories",
|
||||
"a3_structures_f_epc_civ_camping",
|
||||
"a3_structures_f_epc_civ_garbage",
|
||||
@ -357,6 +569,7 @@ class CfgPatches {
|
||||
"a3_structures_f_exp_a_vr_blocks",
|
||||
"a3_structures_f_exp_a_vr_helpers",
|
||||
"a3_structures_f_furniture",
|
||||
"a3_structures_f_heli",
|
||||
"a3_structures_f_heli_civ_accessories",
|
||||
"a3_structures_f_heli_civ_constructions",
|
||||
"a3_structures_f_heli_civ_garbage",
|
||||
@ -410,6 +623,7 @@ class CfgPatches {
|
||||
"a3_structures_f_items_cans",
|
||||
"a3_structures_f_items_documents",
|
||||
"a3_structures_f_items_electronics",
|
||||
"a3_structures_f_items_food",
|
||||
"a3_structures_f_items_gadgets",
|
||||
"a3_structures_f_items_luggage",
|
||||
"a3_structures_f_items_medical",
|
||||
@ -418,9 +632,11 @@ class CfgPatches {
|
||||
"a3_structures_f_items_tools",
|
||||
"a3_structures_f_items_valuables",
|
||||
"a3_structures_f_items_vessels",
|
||||
"a3_structures_f_kart",
|
||||
"a3_structures_f_kart_civ_sportsgrounds",
|
||||
"a3_structures_f_kart_mil_flags",
|
||||
"a3_structures_f_kart_signs_companies",
|
||||
"a3_structures_f_mark",
|
||||
"a3_structures_f_mark_items_military",
|
||||
"a3_structures_f_mark_items_sport",
|
||||
"a3_structures_f_mark_mil_flags",
|
||||
@ -454,6 +670,8 @@ class CfgPatches {
|
||||
"a3_structures_f_training_invisibletarget",
|
||||
"a3_structures_f_walls",
|
||||
"a3_structures_f_wrecks",
|
||||
"a3_supplies_f_exp",
|
||||
"a3_supplies_f_exp_ammoboxes",
|
||||
"a3_supplies_f_heli",
|
||||
"a3_supplies_f_heli_bladders",
|
||||
"a3_supplies_f_heli_cargonets",
|
||||
@ -465,6 +683,8 @@ class CfgPatches {
|
||||
"a3_ui_f",
|
||||
"a3_ui_f_bootcamp",
|
||||
"a3_ui_f_curator",
|
||||
"a3_ui_f_data",
|
||||
"a3_ui_f_exp",
|
||||
"a3_ui_f_exp_a",
|
||||
"a3_ui_f_heli",
|
||||
"a3_ui_f_kart",
|
||||
@ -479,13 +699,18 @@ class CfgPatches {
|
||||
"a3_weapons_f_beta_acc",
|
||||
"a3_weapons_f_beta_ammoboxes",
|
||||
"a3_weapons_f_beta_ebr",
|
||||
"a3_weapons_f_beta_longrangerifles_ebr",
|
||||
"a3_weapons_f_beta_longrangerifles_gm6",
|
||||
"a3_weapons_f_beta_longrangerifles_m320",
|
||||
"a3_weapons_f_beta_rifles_khaybar",
|
||||
"a3_weapons_f_beta_rifles_mx",
|
||||
"a3_weapons_f_beta_rifles_trg20",
|
||||
"a3_weapons_f_bootcamp",
|
||||
"a3_weapons_f_bootcamp_ammoboxes",
|
||||
"a3_weapons_f_bootcamp_longrangerifles_gm6",
|
||||
"a3_weapons_f_bootcamp_longrangerifles_gm6_camo",
|
||||
"a3_weapons_f_bootcamp_longrangerifles_m320",
|
||||
"a3_weapons_f_bootcamp_longrangerifles_m320_camo",
|
||||
"a3_weapons_f_csat",
|
||||
"a3_weapons_f_dummyweapons",
|
||||
"a3_weapons_f_ebr",
|
||||
@ -500,15 +725,35 @@ class CfgPatches {
|
||||
"a3_weapons_f_epb_acc",
|
||||
"a3_weapons_f_epb_ammoboxes",
|
||||
"a3_weapons_f_epb_longrangerifles_gm3",
|
||||
"a3_weapons_f_epb_longrangerifles_gm6",
|
||||
"a3_weapons_f_epb_longrangerifles_m320",
|
||||
"a3_weapons_f_epb_rifles_mx_black",
|
||||
"a3_weapons_f_epc",
|
||||
"a3_weapons_f_exp",
|
||||
"a3_weapons_f_exp_launchers_rpg32",
|
||||
"a3_weapons_f_exp_launchers_rpg7",
|
||||
"a3_weapons_f_exp_launchers_titan",
|
||||
"a3_weapons_f_exp_longrangerifles_dmr_07",
|
||||
"a3_weapons_f_exp_machineguns_lmg_03",
|
||||
"a3_weapons_f_exp_pistols_pistol_01",
|
||||
"a3_weapons_f_exp_rifles_ak12",
|
||||
"a3_weapons_f_exp_rifles_akm",
|
||||
"a3_weapons_f_exp_rifles_aks",
|
||||
"a3_weapons_f_exp_rifles_arx",
|
||||
"a3_weapons_f_exp_rifles_ctar",
|
||||
"a3_weapons_f_exp_rifles_ctars",
|
||||
"a3_weapons_f_exp_rifles_spar_01",
|
||||
"a3_weapons_f_exp_rifles_spar_02",
|
||||
"a3_weapons_f_exp_rifles_spar_03",
|
||||
"a3_weapons_f_exp_smgs_smg_05",
|
||||
"a3_weapons_f_explosives",
|
||||
"a3_weapons_f_fia",
|
||||
"a3_weapons_f_gamma",
|
||||
"a3_weapons_f_gamma_acc",
|
||||
"a3_weapons_f_gamma_ammoboxes",
|
||||
"a3_weapons_f_gamma_items",
|
||||
"a3_weapons_f_gamma_longrangerifles_ebr",
|
||||
"a3_weapons_f_gamma_rifles_mx",
|
||||
"a3_weapons_f_headgear",
|
||||
"a3_weapons_f_itemholders",
|
||||
"a3_weapons_f_items",
|
||||
@ -516,7 +761,10 @@ class CfgPatches {
|
||||
"a3_weapons_f_kart_pistols_pistol_signal_f",
|
||||
"a3_weapons_f_launchers_law",
|
||||
"a3_weapons_f_launchers_nlaw",
|
||||
"a3_weapons_f_launchers_rpg32",
|
||||
"a3_weapons_f_launchers_titan",
|
||||
"a3_weapons_f_longrangerifles_dmr_01",
|
||||
"a3_weapons_f_longrangerifles_ebr",
|
||||
"a3_weapons_f_longrangerifles_gm6",
|
||||
"a3_weapons_f_longrangerifles_m320",
|
||||
"a3_weapons_f_machineguns_m200",
|
||||
@ -530,6 +778,7 @@ class CfgPatches {
|
||||
"a3_weapons_f_mark_longrangerifles_dmr_04",
|
||||
"a3_weapons_f_mark_longrangerifles_dmr_05",
|
||||
"a3_weapons_f_mark_longrangerifles_dmr_06",
|
||||
"a3_weapons_f_mark_longrangerifles_ebr",
|
||||
"a3_weapons_f_mark_longrangerifles_gm6",
|
||||
"a3_weapons_f_mark_longrangerifles_gm6_camo",
|
||||
"a3_weapons_f_mark_longrangerifles_m320",
|
||||
@ -553,19 +802,72 @@ class CfgPatches {
|
||||
"a3_weapons_f_rifles_khaybar",
|
||||
"a3_weapons_f_rifles_mk20",
|
||||
"a3_weapons_f_rifles_mx",
|
||||
"a3_weapons_f_rifles_mx_black",
|
||||
"a3_weapons_f_rifles_sdar",
|
||||
"a3_weapons_f_rifles_smg_02",
|
||||
"a3_weapons_f_rifles_trg20",
|
||||
"a3_weapons_f_rifles_vector",
|
||||
"a3_weapons_f_smgs_pdw2000",
|
||||
"a3_weapons_f_smgs_smg_01",
|
||||
"a3_weapons_f_smgs_smg_02",
|
||||
"a3_weapons_f_uniforms",
|
||||
"a3_weapons_f_vests",
|
||||
"curatoronly_air_f_beta_heli_attack_01",
|
||||
"curatoronly_air_f_beta_heli_attack_02",
|
||||
"curatoronly_air_f_gamma_uav_01",
|
||||
"curatoronly_armor_f_amv",
|
||||
"curatoronly_armor_f_beta_apc_tracked_02",
|
||||
"curatoronly_armor_f_marid",
|
||||
"curatoronly_armor_f_panther",
|
||||
"curatoronly_armor_f_slammer",
|
||||
"curatoronly_armor_f_t100k",
|
||||
"curatoronly_boat_f_boat_armed_01",
|
||||
"curatoronly_characters_f_blufor",
|
||||
"curatoronly_characters_f_common",
|
||||
"curatoronly_characters_f_opfor",
|
||||
"curatoronly_modules_f_curator_animals",
|
||||
"curatoronly_modules_f_curator_chemlights",
|
||||
"curatoronly_modules_f_curator_effects",
|
||||
"curatoronly_modules_f_curator_environment",
|
||||
"curatoronly_modules_f_curator_flares",
|
||||
"curatoronly_modules_f_curator_lightning",
|
||||
"curatoronly_modules_f_curator_mines",
|
||||
"curatoronly_modules_f_curator_objectives",
|
||||
"curatoronly_modules_f_curator_ordnance",
|
||||
"curatoronly_modules_f_curator_smokeshells",
|
||||
"curatoronly_signs_f",
|
||||
"curatoronly_soft_f_crusher_ugv",
|
||||
"curatoronly_soft_f_mrap_01",
|
||||
"curatoronly_soft_f_mrap_02",
|
||||
"curatoronly_soft_f_quadbike",
|
||||
"curatoronly_static_f_gamma",
|
||||
"curatoronly_static_f_mortar_01",
|
||||
"curatoronly_structures_f_civ_ancient",
|
||||
"curatoronly_structures_f_civ_camping",
|
||||
"curatoronly_structures_f_civ_garbage",
|
||||
"curatoronly_structures_f_epa_civ_constructions",
|
||||
"curatoronly_structures_f_epb_civ_dead",
|
||||
"curatoronly_structures_f_ind_cargo",
|
||||
"curatoronly_structures_f_ind_crane",
|
||||
"curatoronly_structures_f_ind_reservoirtank",
|
||||
"curatoronly_structures_f_ind_transmitter_tower",
|
||||
"curatoronly_structures_f_items_vessels",
|
||||
"curatoronly_structures_f_mil_bagbunker",
|
||||
"curatoronly_structures_f_mil_bagfence",
|
||||
"curatoronly_structures_f_mil_cargo",
|
||||
"curatoronly_structures_f_mil_fortification",
|
||||
"curatoronly_structures_f_mil_radar",
|
||||
"curatoronly_structures_f_mil_shelters",
|
||||
"curatoronly_structures_f_research",
|
||||
"curatoronly_structures_f_walls",
|
||||
"curatoronly_structures_f_wrecks",
|
||||
"a3data",
|
||||
"3den",
|
||||
"map_vr",
|
||||
|
||||
// CBA
|
||||
"extended_eventhandlers",
|
||||
"cba_ui",
|
||||
"cba_xeh",
|
||||
"cba_xeh_a3",
|
||||
"cba_jr"
|
||||
};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
|
@ -5,14 +5,14 @@
|
||||
|
||||
#define MAJOR 3
|
||||
#define MINOR 6
|
||||
#define PATCHLVL 0
|
||||
#define PATCHLVL 1
|
||||
#define BUILD 0
|
||||
|
||||
#define VERSION MAJOR.MINOR.PATCHLVL.BUILD
|
||||
#define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD
|
||||
|
||||
// MINIMAL required version for the Mod. Components can specify others..
|
||||
#define REQUIRED_VERSION 1.60
|
||||
#define REQUIRED_VERSION 1.62
|
||||
#define REQUIRED_CBA_VERSION {2,4,1}
|
||||
|
||||
#ifdef COMPONENT_BEAUTIFIED
|
||||
|
@ -22,6 +22,8 @@
|
||||
<Spanish>http://ace3mod.com/</Spanish>
|
||||
<Italian>http://ace3mod.com/</Italian>
|
||||
<French>http://ace3mod.com/</French>
|
||||
<Korean>http://ace3mod.com/</Korean>
|
||||
<Japanese>http://ace3mod.com/</Japanese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -43,7 +43,6 @@ if (!local _unit) exitWith {
|
||||
};
|
||||
|
||||
_unit setVariable ["ACE_isUnconscious", true, true];
|
||||
_unit setUnconscious true;
|
||||
|
||||
if (_unit == ACE_player) then {
|
||||
if (visibleMap) then {openMap false};
|
||||
|
@ -36,7 +36,6 @@ if (!alive _unit) exitWith {
|
||||
[_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set);
|
||||
[_unit, false] call EFUNC(common,disableAI);
|
||||
//_unit setUnitPos _originalPos;
|
||||
_unit setUnconscious false;
|
||||
|
||||
[_unit, "isUnconscious"] call EFUNC(common,unmuteUnit);
|
||||
["ace_unconscious", [_unit, false]] call CBA_fnc_globalEvent;
|
||||
|
@ -1,6 +1,4 @@
|
||||
class ACE_detector {
|
||||
class detectableObjects {
|
||||
};
|
||||
class detectors {
|
||||
class ACE_VMM3 {
|
||||
radius = 2.5;
|
||||
|
@ -5,6 +5,6 @@ class Extended_PreInit_EventHandlers {
|
||||
};
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) );
|
||||
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
|
||||
};
|
||||
};
|
||||
|
@ -1,22 +1,22 @@
|
||||
class CfgSounds {
|
||||
class ace_detector_1 {
|
||||
name = "ace_detector_1";
|
||||
sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wav)), "db+1", 1};
|
||||
sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+3", 1};
|
||||
titles[] = {};
|
||||
};
|
||||
class ace_detector_2 {
|
||||
name = "ace_detector_2";
|
||||
sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wav)), "db+1", 0.9};
|
||||
sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+3", 0.9};
|
||||
titles[] = {};
|
||||
};
|
||||
class ace_detector_3 {
|
||||
name = "ace_detector_3";
|
||||
sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wav)), "db+1", 0.8};
|
||||
sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+3", 0.8};
|
||||
titles[] = {};
|
||||
};
|
||||
class ace_detector_4 {
|
||||
name = "ace_detector_4";
|
||||
sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wav)), "db+1", 0.7};
|
||||
sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+3", 0.7};
|
||||
titles[] = {};
|
||||
};
|
||||
};
|
||||
|
@ -11,23 +11,40 @@ class CfgVehicles {
|
||||
class CAManBase: Man {
|
||||
class ACE_SelfActions {
|
||||
class ACE_Equipment {
|
||||
class GVAR(activate) {
|
||||
displayName = CSTRING(ActivateDetector);
|
||||
condition = QUOTE(call FUNC(canActivateDetector));
|
||||
statement = QUOTE(call FUNC(activateDetector));
|
||||
showDisabled = 0;
|
||||
priority = 0.1;
|
||||
icon = QPATHTOF(ui\icon_mineDetectorOn.paa);
|
||||
exceptions[] = {};
|
||||
};
|
||||
class GVAR(deactivate) {
|
||||
displayName = CSTRING(DeactivateDetector);
|
||||
condition = QUOTE(call FUNC(canDeactivateDetector));
|
||||
statement = QUOTE(call FUNC(deactivateDetector));
|
||||
showDisabled = 0;
|
||||
priority = 0.1;
|
||||
icon = QPATHTOF(ui\icon_mineDetectorOff.paa);
|
||||
class GVAR(metalDetector) {
|
||||
displayName = CSTRING(MetalDetector);
|
||||
condition = QUOTE([ACE_player] call FUNC(hasDetector));
|
||||
statement = "";
|
||||
icon = QPATHTOF(ui\icon_mineDetector.paa);
|
||||
exceptions[] = {};
|
||||
class GVAR(activate) {
|
||||
displayName = CSTRING(ActivateDetector);
|
||||
condition = QUOTE(call FUNC(canActivateDetector));
|
||||
statement = QUOTE(call FUNC(activateDetector));
|
||||
icon = QPATHTOF(ui\icon_mineDetectorOn.paa);
|
||||
exceptions[] = {};
|
||||
};
|
||||
class GVAR(deactivate) {
|
||||
displayName = CSTRING(DeactivateDetector);
|
||||
condition = QUOTE(call FUNC(canDeactivateDetector));
|
||||
statement = QUOTE(call FUNC(deactivateDetector));
|
||||
icon = QPATHTOF(ui\icon_mineDetectorOff.paa);
|
||||
exceptions[] = {};
|
||||
};
|
||||
class GVAR(connectHeadphones) {
|
||||
displayName = CSTRING(ConnectHeadphones);
|
||||
condition = QUOTE(call FUNC(canConnectHeadphones));
|
||||
statement = QUOTE([ARR_2(ACE_player, true)] call FUNC(connectHeadphones));
|
||||
icon = ""; //TODO
|
||||
exceptions[] = {};
|
||||
};
|
||||
class GVAR(disconnectHeadphones) {
|
||||
displayName = CSTRING(DisconnectHeadphones);
|
||||
condition = QUOTE(call FUNC(canDisconnectHeadphones));
|
||||
statement = QUOTE([ARR_2(ACE_player, false)] call FUNC(connectHeadphones));
|
||||
icon = ""; //TODO
|
||||
exceptions[] = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -14,6 +14,8 @@ class CfgWeapons {
|
||||
picture = QUOTE(PATHTOF(data\equip\w_vmm3_ca.paa));
|
||||
magazines[] = { };
|
||||
modes[] = { "Single" };
|
||||
cursor = "EmptyCursor";
|
||||
cursorAim = "EmptyCursor";
|
||||
class Single: Mode_SemiAuto {
|
||||
displayName = "";
|
||||
sounds[] = {};
|
||||
|
@ -1,6 +1,9 @@
|
||||
|
||||
PREP(canActivateDetector);
|
||||
PREP(canConnectHeadphones);
|
||||
PREP(canDeactivateDetector);
|
||||
PREP(canDisconnectHeadphones);
|
||||
PREP(connectHeadphones);
|
||||
PREP(activateDetector);
|
||||
PREP(deactivateDetector);
|
||||
PREP(hasDetector);
|
||||
|
@ -1,27 +1,25 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
// Create a dictionary to store detector configs
|
||||
GVAR(detectorConfigs) = call CBA_fnc_createNamespace;
|
||||
|
||||
[QGVAR(detectorEnabled), {
|
||||
params ["_unit", "_type"];
|
||||
private _config = [_type] call FUNC(getDetectorConfig);
|
||||
|
||||
private _helperObject = "ACE_LogicDummy" createVehicleLocal (getPos _unit);
|
||||
_unit setVariable [QGVAR(helperLogic), _helperObject];
|
||||
|
||||
[FUNC(detectorLoop), 0.01, [_unit, _type, _config, CBA_missionTime, _helperObject]] call CBA_fnc_addPerFrameHandler;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
[QGVAR(detectorDisabled), {
|
||||
params ["_unit", "_type"];
|
||||
private _helperObject = _unit getVariable [QGVAR(helperLogic), objNull];
|
||||
if !(isNull _helperObject) then {
|
||||
deleteVehicle _helperObject;
|
||||
// Create a dictionary of detectable classnames
|
||||
GVAR(detectableClasses) = call CBA_fnc_createNamespace;
|
||||
{
|
||||
if ((getNumber (_x >> QGVAR(detectable))) == 1) then {
|
||||
GVAR(detectableClasses) setVariable [configName _x, true];
|
||||
};
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
} forEach (configProperties [configFile >> "CfgVehicles", "isClass _x", true]);
|
||||
{
|
||||
if ((getNumber (_x >> QGVAR(detectable))) == 1) then {
|
||||
GVAR(detectableClasses) setVariable [configName _x, true];
|
||||
};
|
||||
} forEach (configProperties [configFile >> "CfgAmmo", "isClass _x", true]);
|
||||
|
||||
[QGVAR(enableDetector), FUNC(enableDetector)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(disableDetector), FUNC(disableDetector)] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
//Shows detector and mine posistions in 3d when debug is on
|
||||
// Shows detector and mine posistions in 3d when debug is on
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
GVAR(debugDetector) = [];
|
||||
addMissionEventHandler ["Draw3D", {
|
@ -4,7 +4,4 @@ ADDON = false;
|
||||
|
||||
#include "XEH_PREP.hpp"
|
||||
|
||||
// TODO load from config instead of hardcoded in sqf
|
||||
GVAR(ALL_DETECTABLE_TYPES) = ["ACE_Explosive_Object", "ACE_Explosive_Helper", "ACE_Explosives_Place", "ModuleMine_F", "TimeBombCore", "MineBase", "DirectionalBombBase", "BoundingMineBase", "PipeBombBase"];
|
||||
|
||||
ADDON = true;
|
||||
|
@ -8,7 +8,7 @@ class CfgPatches {
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_explosives"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"Grey", "Glowbal", "Rocko"};
|
||||
authors[] = {"Grey", "Glowbal", "Rocko", "esteldunedain"};
|
||||
url = ECSTRING(main,URL);
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
|
@ -16,4 +16,5 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
([ACE_player] call FUNC(hasDetector)) && !([ACE_player, currentWeapon ACE_player] call FUNC(isDetectorEnabled));
|
||||
([ACE_player] call FUNC(hasDetector)) &&
|
||||
!([ACE_player, currentWeapon ACE_player] call FUNC(isDetectorEnabled));
|
||||
|
20
addons/minedetector/functions/fnc_canConnectHeadphones.sqf
Normal file
20
addons/minedetector/functions/fnc_canConnectHeadphones.sqf
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
* Check if headphones can be connected to the mine detector
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* Can be connected <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_minedetector_fnc_canConnectHeadphones
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
!(ACE_player getVariable [QGVAR(isUsingHeadphones), false]) &&
|
||||
{[ACE_player] call FUNC(hasDetector)};
|
@ -16,4 +16,5 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
([ACE_player] call FUNC(hasDetector)) && {[ACE_player, currentWeapon ACE_player] call FUNC(isDetectorEnabled)};
|
||||
([ACE_player] call FUNC(hasDetector)) &&
|
||||
{[ACE_player, currentWeapon ACE_player] call FUNC(isDetectorEnabled)};
|
||||
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
* Check if headphones can be disconnected from the mine detector
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* Can be disconnected <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_minedetector_fnc_canDisconnectHeadphones
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
(ACE_player getVariable [QGVAR(isUsingHeadphones), false]) &&
|
||||
{[ACE_player] call FUNC(hasDetector)};
|
27
addons/minedetector/functions/fnc_connectHeadphones.sqf
Normal file
27
addons/minedetector/functions/fnc_connectHeadphones.sqf
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
* Connect/disconnect headphones to the mine detector
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Connect? <BOOLEAN>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_unit, true] call ace_minedetector_fnc_connectHeadphones
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit", "_state"];
|
||||
_unit setVariable [QGVAR(isUsingHeadphones), _state];
|
||||
|
||||
if (_state) then {
|
||||
[localize LSTRING(HeadphonesConnected)] call EFUNC(common,displayTextStructured);
|
||||
} else {
|
||||
[localize LSTRING(HeadphonesDisconnected)] call EFUNC(common,displayTextStructured);
|
||||
};
|
@ -17,6 +17,12 @@
|
||||
params ["_args", "_idPFH"];
|
||||
_args params ["_unit", "_type", "_detectorConfig", "_lastPlayed"];
|
||||
|
||||
// If locality switched just turn off the detector
|
||||
if !(local _unit) exitWith {
|
||||
[QGVAR(disableDetector), [_unit, _type], _unit] call CBA_fnc_targetEvent;
|
||||
[_idPFH] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
if !([_unit, _type] call FUNC(hasDetector)) exitWith {
|
||||
// disable detector type
|
||||
[_unit, _type] call FUNC(disableDetector);
|
||||
@ -32,24 +38,35 @@ if !([_unit, _type] call FUNC(isDetectorEnabled)) exitWith {
|
||||
[_idPFH] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
if (ACE_player == _unit && {currentWeapon _unit == _type}) then {
|
||||
private _detected = [_unit, _detectorConfig] call FUNC(getDetectedObject);
|
||||
_detected params ["_hasDetected", "_object", "_distance"];
|
||||
private _distanceTiming = switch (true) do {
|
||||
case (_distance >= 2): {1};
|
||||
case (_distance >= 1.25): {0.85};
|
||||
case (_distance >= 0.75): {0.7};
|
||||
default {0.5};
|
||||
};
|
||||
if (_hasDetected && {(CBA_missionTime - _lastPlayed > _distanceTiming)}) then {
|
||||
_args set [3, CBA_missionTime];
|
||||
_detectorConfig params ["_type", "_radius", "_detectableTypes", "_sounds"];
|
||||
private _sound = switch (true) do {
|
||||
case (_distance >= 2): {_sounds select 3};
|
||||
case (_distance >= 1.25): {_sounds select 2};
|
||||
case (_distance >= 0.5): {_sounds select 1};
|
||||
default {_sounds select 0};
|
||||
};
|
||||
[_unit, _sound, true] call FUNC(playDetectorSound);
|
||||
};
|
||||
if (currentWeapon _unit != _type) exitWith {
|
||||
[_unit, _type] call FUNC(disableDetector);
|
||||
[_idPFH] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
private _detected = [[_unit, _detectorConfig], FUNC(getDetectedObject), _unit, QGVAR(detectedObjects), 0.15] call EFUNC(common,cachedCall);
|
||||
_detected params ["_hasDetected", "_mine", "_distance"];
|
||||
|
||||
if (!_hasDetected) exitWith {};
|
||||
|
||||
// Launch a local event stating which mine was detected for mission purposes
|
||||
[QGVAR(mineDetected), [_unit, _mine, _distance]] call CBA_fnc_localEvent;
|
||||
|
||||
private _distanceTiming = switch (true) do {
|
||||
case (_distance >= 2): {1};
|
||||
case (_distance >= 1.25): {0.85};
|
||||
case (_distance >= 0.75): {0.7};
|
||||
default {0.5};
|
||||
};
|
||||
|
||||
if (CBA_missionTime - _lastPlayed < _distanceTiming) exitWith {};
|
||||
|
||||
_args set [3, CBA_missionTime];
|
||||
_detectorConfig params ["", "", "_soundClasses"];
|
||||
private _soundClass = switch (true) do {
|
||||
case (_distance >= 2): {_soundClasses select 3};
|
||||
case (_distance >= 1.25): {_soundClasses select 2};
|
||||
case (_distance >= 0.5): {_soundClasses select 1};
|
||||
default {_soundClasses select 0};
|
||||
};
|
||||
|
||||
[_unit, _soundClass] call FUNC(playDetectorSound);
|
||||
|
@ -19,6 +19,14 @@
|
||||
|
||||
params ["_unit", "_detectorType"];
|
||||
|
||||
_unit setVariable [format[QGVAR(enable_%1), _detectorType], false];
|
||||
if !(local _unit) then {
|
||||
[QGVAR(disableDetector), [_unit, _detectorType], _unit] call CBA_fnc_targetEvent;
|
||||
};
|
||||
|
||||
_unit setVariable [format[QGVAR(enable_%1), _detectorType], false, true];
|
||||
|
||||
if (_unit == ACE_player && {alive _unit}) then {
|
||||
playSound "ACE_Sound_Click";
|
||||
};
|
||||
|
||||
[QGVAR(detectorDisabled), [_unit, _detectorType]] call CBA_fnc_localEvent;
|
||||
|
@ -19,6 +19,17 @@
|
||||
|
||||
params ["_unit", "_detectorType"];
|
||||
|
||||
_unit setVariable [format[QGVAR(enable_%1), _detectorType], true];
|
||||
if !(local _unit) then {
|
||||
[QGVAR(enableDetector), [_unit, _detectorType], _unit] call CBA_fnc_targetEvent;
|
||||
};
|
||||
|
||||
_unit setVariable [format[QGVAR(enable_%1), _detectorType], true, true];
|
||||
|
||||
if (_unit == ACE_player) then {
|
||||
playSound "ACE_Sound_Click";
|
||||
};
|
||||
|
||||
[QGVAR(detectorEnabled), [_unit, _detectorType]] call CBA_fnc_localEvent;
|
||||
|
||||
private _config = [_detectorType] call FUNC(getDetectorConfig);
|
||||
[FUNC(detectorLoop), 0.05, [_unit, _detectorType, _config, CBA_missionTime - 0.25]] call CBA_fnc_addPerFrameHandler;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Enables the mine detector
|
||||
* Get the distance to the nearest detectable object
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
@ -15,17 +15,18 @@
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#define __DR 1.3
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit", "_detectorConfig"];
|
||||
_detectorConfig params ["_type", "_radius", "_detectableTypes", "_sounds"];
|
||||
_detectorConfig params ["", "_radius"];
|
||||
|
||||
private _worldPosition = _unit modelToWorld (_unit selectionPosition "granat");
|
||||
private _direction = _unit weaponDirection "Put";
|
||||
|
||||
private _detectorPointAGL = _worldPosition vectorAdd (_direction vectorMultiply __DR);
|
||||
private _ref = (_unit weaponDirection currentWeapon _unit) call EFUNC(common,createOrthonormalReference);
|
||||
_ref params ["_v1", "_v2", "_v3"];
|
||||
private _detectorPointAGL = _worldPosition vectorAdd
|
||||
(_v1 vectorMultiply ( 0.9 * __DR)) vectorAdd
|
||||
(_v2 vectorMultiply (-0.2 * __DR)) vectorAdd
|
||||
(_v3 vectorMultiply ( 0.4 * __DR));
|
||||
|
||||
private _nearestObjects = nearestObjects [_detectorPointAGL, [], _radius];
|
||||
|
||||
@ -38,27 +39,19 @@ private _mine = objNull;
|
||||
private _distance = -1;
|
||||
|
||||
{
|
||||
private _object = _x;
|
||||
private _objectType = typeOf _x;
|
||||
|
||||
if ({_object isKindOf _x} count _detectableTypes > 0) then {
|
||||
//Try all unprepared mines in range and use first detectable one:
|
||||
if ((getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> QGVAR(detectable))) == 1) exitWith {
|
||||
_isDetectable = true;
|
||||
_mine = _x;
|
||||
_distance = _detectorPointAGL distance _x;
|
||||
};
|
||||
//Try all prepared mines in range and use first detectable one:
|
||||
if ((getNumber (configFile >> "CfgAmmo" >> (typeOf _x) >> QGVAR(detectable))) == 1) exitWith {
|
||||
_isDetectable = true;
|
||||
_mine = _x;
|
||||
_distance = _detectorPointAGL distance _x;
|
||||
};
|
||||
_isDetectable = GVAR(detectableClasses) getVariable _objectType;
|
||||
if (isNil "_isDetectable") then {
|
||||
_isDetectable = false;
|
||||
};
|
||||
|
||||
if (!isNull _mine) exitWith {};
|
||||
|
||||
// If a nun-null object was detected exit the search
|
||||
if (_isDetectable && {!isNull _x}) exitWith {
|
||||
_distance = _detectorPointAGL distance _x;
|
||||
_mine = _x;
|
||||
TRACE_3("return", _isDetectable, _mine, _distance);
|
||||
};
|
||||
} forEach _nearestObjects;
|
||||
|
||||
TRACE_3("return",_isDetectable,_mine,_distance);
|
||||
|
||||
[_isDetectable, _mine, _distance];
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Get the mine detector configuration from the config file
|
||||
* Get the mine detector configuration from the cache or config file
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Detector class name <STRING>
|
||||
@ -18,14 +18,18 @@
|
||||
|
||||
params ["_detectorType"];
|
||||
|
||||
private _config = (configFile >> "ACE_detector" >> "detectors" >> _detectorType);
|
||||
if (isClass _config) then {
|
||||
[
|
||||
_detectorType,
|
||||
getNumber (_config >> "radius"),
|
||||
GVAR(ALL_DETECTABLE_TYPES), // TODO read from config and use this as a back up value instead
|
||||
getArray (_config >> "sounds")
|
||||
];
|
||||
} else {
|
||||
[];
|
||||
private _detectorConfig = GVAR(detectorConfigs) getVariable _detectorType;
|
||||
if (isNil "_detectorConfig") then {
|
||||
private _cfgEntry = (configFile >> "ACE_detector" >> "detectors" >> _detectorType);
|
||||
if (isClass _cfgEntry) then {
|
||||
_detectorConfig = [
|
||||
_detectorType,
|
||||
getNumber (_cfgEntry >> "radius"),
|
||||
getArray (_cfgEntry >> "sounds")
|
||||
];
|
||||
} else {
|
||||
_detectorConfig = [];
|
||||
};
|
||||
GVAR(detectorConfigs) setVariable [_detectorType, _detectorConfig];
|
||||
};
|
||||
_detectorConfig
|
||||
|
@ -4,20 +4,20 @@
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Sound class name <STRING>
|
||||
* 1: Sound class <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player, "ace_buzz_1"] call ace_minedetector_fnc_playDetectorSound
|
||||
* [player, "ace_buzz_1", 1] call ace_minedetector_fnc_playDetectorSound
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit", "_detectorSound"];
|
||||
params ["_unit", "_soundClass"];
|
||||
|
||||
if (isNull _unit) exitWith {
|
||||
ACE_LOGERROR_1("unit does not exist [%1]",_unit);
|
||||
@ -26,17 +26,9 @@ if (!alive _unit) exitWith {
|
||||
ACE_LOGERROR_1("unit is not alive [%1]",_unit);
|
||||
};
|
||||
|
||||
private _helperObject = _unit getVariable [QGVAR(helperLogic), objNull];
|
||||
if (!isNull _helperObject) then {
|
||||
deleteVehicle _helperObject;
|
||||
};
|
||||
_helperObject = "ACE_LogicDummy" createVehicleLocal (getPos _unit);
|
||||
|
||||
if !(isNull _helperObject) then {
|
||||
_helperObject attachTo [_unit,[0,0,-3],""];
|
||||
_unit setVariable [QGVAR(helperLogic), _helperObject];
|
||||
|
||||
[_helperObject, _unit] say3D _detectorSound;
|
||||
if (_unit getVariable [QGVAR(isUsingHeadphones), false] && {_unit == ACE_player}) then {
|
||||
playSound _soundClass;
|
||||
} else {
|
||||
ACE_LOGERROR_1("helper does not exist [%1]",_helperObject);
|
||||
private _posASL = AGLtoASL (_unit modelToWorld (_unit selectionPosition "granat"));
|
||||
[_soundClass, _posASL, 3, 15] call EFUNC(common,playConfigSound3D);
|
||||
};
|
||||
|
@ -16,3 +16,5 @@
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define __DR 1.3
|
||||
|
Binary file not shown.
BIN
addons/minedetector/sounds/metal_detector.wss
Normal file
BIN
addons/minedetector/sounds/metal_detector.wss
Normal file
Binary file not shown.
@ -5,13 +5,29 @@
|
||||
<English>Metal detector</English>
|
||||
<French>Détecteur de métaux</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MineDetector_MetalDetector">
|
||||
<English>Metal detector</English>
|
||||
<French>Détecteur de métaux</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MineDetector_ActivateDetector">
|
||||
<English>Activate Detector</English>
|
||||
<French>Activer le détecteur</French>
|
||||
<English>Activate</English>
|
||||
<French>Activer</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MineDetector_DeactivateDetector">
|
||||
<English>Deactivate Detector</English>
|
||||
<French>Désactiver le détecteur</French>
|
||||
<English>Deactivate</English>
|
||||
<French>Désactiver</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MineDetector_ConnectHeadphones">
|
||||
<English>Connect Headphones</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MineDetector_DisconnectHeadphones">
|
||||
<English>Disconnect Headphones</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MineDetector_HeadphonesConnected">
|
||||
<English>Headphones Connected</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MineDetector_HeadphonesDisconnected">
|
||||
<English>Headphones Disconnected</English>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
BIN
addons/minedetector/ui/icon_mineDetector.paa
Normal file
BIN
addons/minedetector/ui/icon_mineDetector.paa
Normal file
Binary file not shown.
@ -644,4 +644,39 @@ class CfgVehicles {
|
||||
class Item_acc_flashlight: Item_Base_F {
|
||||
displayName="UTG Defender 126";
|
||||
};
|
||||
|
||||
// APEX/Tanoa
|
||||
|
||||
// Jeep Wrangler
|
||||
class Offroad_02_unarmed_base_F;
|
||||
class C_Offroad_02_unarmed_F: Offroad_02_unarmed_base_F {
|
||||
displayName = CSTRING(C_Offroad_02_unarmed);
|
||||
};
|
||||
class C_Offroad_02_unarmed_F_black: C_Offroad_02_unarmed_F {
|
||||
displayName = CSTRING(C_Offroad_02_unarmed_black);
|
||||
};
|
||||
class C_Offroad_02_unarmed_F_blue: C_Offroad_02_unarmed_F {
|
||||
displayName = CSTRING(C_Offroad_02_unarmed_blue);
|
||||
};
|
||||
class C_Offroad_02_unarmed_F_green: C_Offroad_02_unarmed_F {
|
||||
displayName = CSTRING(C_Offroad_02_unarmed_green);
|
||||
};
|
||||
class C_Offroad_02_unarmed_F_orange: C_Offroad_02_unarmed_F {
|
||||
displayName = CSTRING(C_Offroad_02_unarmed_orange);
|
||||
};
|
||||
|
||||
// Cessna
|
||||
class Plane_Civil_01_base_F;
|
||||
class C_Plane_Civil_01_F: Plane_Civil_01_base_F {
|
||||
displayName = CSTRING(C_Plane_Civil_01);
|
||||
};
|
||||
class C_Plane_Civil_01_racing_F: Plane_Civil_01_base_F {
|
||||
displayName = CSTRING(C_Plane_Civil_01_racing);
|
||||
};
|
||||
|
||||
// Burraq
|
||||
class UAV_04_base_F;
|
||||
class O_T_UAV_04_CAS_F: UAV_04_base_F {
|
||||
displayName = CSTRING(O_T_UAV_04_CAS);
|
||||
};
|
||||
};
|
||||
|
@ -578,4 +578,111 @@ class CfgWeapons {
|
||||
class acc_flashlight: ItemCore {
|
||||
displayName = "UTG Defender 126";
|
||||
};
|
||||
|
||||
// APEX/Tanoa
|
||||
|
||||
// QBZ-95 and variants
|
||||
class arifle_CTAR_base_F;
|
||||
class arifle_CTAR_blk_F: arifle_CTAR_base_F {
|
||||
displayName = CSTRING(arifle_CTAR_blk);
|
||||
};
|
||||
class arifle_CTAR_GL_base_F;
|
||||
class arifle_CTAR_GL_blk_F: arifle_CTAR_GL_base_F {
|
||||
displayName = CSTRING(arifle_CTAR_GL_blk);
|
||||
};
|
||||
class arifle_CTARS_base_F;
|
||||
class arifle_CTARS_blk_F: arifle_CTARS_base_F {
|
||||
displayName = CSTRING(arifle_CTARS_blk);
|
||||
};
|
||||
|
||||
// QBU-88
|
||||
class DMR_07_base_F;
|
||||
class srifle_DMR_07_blk_F: DMR_07_base_F {
|
||||
displayName = CSTRING(srifle_DMR_07_blk);
|
||||
};
|
||||
class srifle_DMR_07_ghex_F: DMR_07_base_F {
|
||||
displayName = CSTRING(srifle_DMR_07_ghex);
|
||||
};
|
||||
class srifle_DMR_07_hex_F: DMR_07_base_F {
|
||||
displayName = CSTRING(srifle_DMR_07_hex);
|
||||
};
|
||||
|
||||
// GM6
|
||||
class srifle_GM6_ghex_F: srifle_GM6_F {
|
||||
displayName = CSTRING(srifle_GM6_ghex);
|
||||
};
|
||||
|
||||
// M249
|
||||
class LMG_03_base_F;
|
||||
class LMG_03_F: LMG_03_base_F {
|
||||
displayName = CSTRING(LMG_03);
|
||||
};
|
||||
|
||||
// Intervention
|
||||
class srifle_LRR_tna_F: srifle_LRR_camo_F {
|
||||
displayName = CSTRING(srifle_LRR_tna);
|
||||
};
|
||||
|
||||
// MP5
|
||||
class SMG_05_base_F;
|
||||
class SMG_05_F: SMG_05_base_F {
|
||||
displayName = CSTRING(SMG_05);
|
||||
};
|
||||
|
||||
// HK416 and variants
|
||||
class arifle_SPAR_01_base_F;
|
||||
class arifle_SPAR_01_blk_F: arifle_SPAR_01_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_01_blk);
|
||||
};
|
||||
class arifle_SPAR_01_khk_F: arifle_SPAR_01_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_01_khk);
|
||||
};
|
||||
class arifle_SPAR_01_snd_F: arifle_SPAR_01_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_01_snd);
|
||||
};
|
||||
class arifle_SPAR_01_GL_base_F;
|
||||
class arifle_SPAR_01_GL_blk_F: arifle_SPAR_01_GL_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_01_GL_blk);
|
||||
};
|
||||
class arifle_SPAR_01_GL_khk_F: arifle_SPAR_01_GL_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_01_GL_khk);
|
||||
};
|
||||
class arifle_SPAR_01_GL_snd_F: arifle_SPAR_01_GL_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_01_GL_snd);
|
||||
};
|
||||
class arifle_SPAR_02_base_F;
|
||||
class arifle_SPAR_02_blk_F: arifle_SPAR_02_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_02_blk);
|
||||
};
|
||||
class arifle_SPAR_02_khk_F: arifle_SPAR_02_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_02_khk);
|
||||
};
|
||||
class arifle_SPAR_02_snd_F: arifle_SPAR_02_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_02_snd);
|
||||
};
|
||||
class arifle_SPAR_03_base_F;
|
||||
class arifle_SPAR_03_blk_F: arifle_SPAR_03_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_03_blk);
|
||||
};
|
||||
class arifle_SPAR_03_khk_F: arifle_SPAR_03_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_03_khk);
|
||||
};
|
||||
class arifle_SPAR_03_snd_F: arifle_SPAR_03_base_F {
|
||||
displayName = CSTRING(arifle_SPAR_03_snd);
|
||||
};
|
||||
|
||||
// RPG-32
|
||||
class launch_RPG32_ghex_F: launch_RPG32_F {
|
||||
displayName = CSTRING(launch_RPG32_ghex);
|
||||
};
|
||||
|
||||
// P99
|
||||
class hgun_P07_khk_F: hgun_P07_F {
|
||||
displayName = CSTRING(hgun_P07_khk);
|
||||
};
|
||||
|
||||
// Makarov
|
||||
class hgun_Pistol_01_F: Pistol_Base_F {
|
||||
displayName = CSTRING(hgun_Pistol_01);
|
||||
};
|
||||
};
|
||||
|
@ -1920,5 +1920,425 @@
|
||||
<Hungarian>LWMMG (Homok)</Hungarian>
|
||||
<Portuguese>LWMMG (Deserto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Offroad_02_unarmed">
|
||||
<English>Jeep Wrangler</English>
|
||||
<Czech>Jeep Wrangler</Czech>
|
||||
<French>Jeep Wrangler</French>
|
||||
<Spanish>Jeep Wrangler</Spanish>
|
||||
<Russian>Jeep Wrangler</Russian>
|
||||
<Polish>Jeep Wrangler</Polish>
|
||||
<German>Jeep Wrangler</German>
|
||||
<Italian>Jeep Wrangler</Italian>
|
||||
<Hungarian>Jeep Wrangler</Hungarian>
|
||||
<Portuguese>Jeep Wrangler</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Offroad_02_unarmed_black">
|
||||
<English>Jeep Wrangler (Black)</English>
|
||||
<Czech>Jeep Wrangler (Černá)</Czech>
|
||||
<French>Jeep Wrangler (Noir)</French>
|
||||
<Spanish>Jeep Wrangler (Negro)</Spanish>
|
||||
<Russian>Jeep Wrangler (Чёрный)</Russian>
|
||||
<Polish>Jeep Wrangler (czarny)</Polish>
|
||||
<German>Jeep Wrangler (Schwarz)</German>
|
||||
<Italian>Jeep Wrangler (Nero)</Italian>
|
||||
<Hungarian>Jeep Wrangler (Fekete)</Hungarian>
|
||||
<Portuguese>Jeep Wrangler (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Offroad_02_unarmed_blue">
|
||||
<English>Jeep Wrangler (Blue)</English>
|
||||
<German>Jeep Wrangler (Blau)</German>
|
||||
<Spanish>Jeep Wrangler (Azul)</Spanish>
|
||||
<Polish>Jeep Wrangler (niebieski)</Polish>
|
||||
<Czech>Jeep Wrangler (Modrý)</Czech>
|
||||
<French>Jeep Wrangler (Bleue)</French>
|
||||
<Russian>Jeep Wrangler (Синий)</Russian>
|
||||
<Italian>Jeep Wrangler (Azul)</Italian>
|
||||
<Hungarian>Jeep Wrangler (Kék)</Hungarian>
|
||||
<Portuguese>Jeep Wrangler (Blu)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Offroad_02_unarmed_green">
|
||||
<English>Jeep Wrangler (Green)</English>
|
||||
<German>Jeep Wrangler (Grün)</German>
|
||||
<Spanish>Jeep Wrangler (Verde)</Spanish>
|
||||
<Polish>Jeep Wrangler (zielony)</Polish>
|
||||
<Czech>Jeep Wrangler (Zelený)</Czech>
|
||||
<French>Jeep Wrangler (Verte)</French>
|
||||
<Russian>Jeep Wrangler (Зелёный)</Russian>
|
||||
<Italian>Jeep Wrangler (Verde)</Italian>
|
||||
<Hungarian>Jeep Wrangler (Zöld)</Hungarian>
|
||||
<Portuguese>Jeep Wrangler (Verde)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Offroad_02_unarmed_orange">
|
||||
<English>Jeep Wrangler (Orange)</English>
|
||||
<German>Jeep Wrangler (Orange)</German>
|
||||
<Spanish>Jeep Wrangler (Naranja)</Spanish>
|
||||
<Polish>Jeep Wrangler (pomarańczowy)</Polish>
|
||||
<Czech>Jeep Wrangler (Oranžový)</Czech>
|
||||
<French>Jeep Wrangler (Orange)</French>
|
||||
<Russian>Jeep Wrangler (Оранжевый)</Russian>
|
||||
<Italian>Jeep Wrangler (Laranja)</Italian>
|
||||
<Hungarian>Jeep Wrangler (Narancssárga)</Hungarian>
|
||||
<Portuguese>Jeep Wrangler (Arancione)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Offroad_02_unarmed_red">
|
||||
<English>Jeep Wrangler (Red)</English>
|
||||
<German>Jeep Wrangler (Rot)</German>
|
||||
<Spanish>Jeep Wrangler (Rojo)</Spanish>
|
||||
<Polish>Jeep Wrangler (czerwony)</Polish>
|
||||
<Czech>Jeep Wrangler (Červený)</Czech>
|
||||
<French>Jeep Wrangler (Rouge)</French>
|
||||
<Russian>Jeep Wrangler (Красный)</Russian>
|
||||
<Italian>Jeep Wrangler (Vermelha)</Italian>
|
||||
<Hungarian>Jeep Wrangler (Piros)</Hungarian>
|
||||
<Portuguese>Jeep Wrangler (Rosso)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Offroad_02_unarmed_white">
|
||||
<English>Jeep Wrangler (White)</English>
|
||||
<German>Jeep Wrangler (Weiß)</German>
|
||||
<Spanish>Jeep Wrangler (Blanco)</Spanish>
|
||||
<Polish>Jeep Wrangler (biały)</Polish>
|
||||
<Czech>Jeep Wrangler (Bílý)</Czech>
|
||||
<French>Jeep Wrangler (Blanche)</French>
|
||||
<Russian>Jeep Wrangler (Белый)</Russian>
|
||||
<Italian>Jeep Wrangler (Branca)</Italian>
|
||||
<Hungarian>Jeep Wrangler (Fehér)</Hungarian>
|
||||
<Portuguese>Jeep Wrangler (Bianco)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Plane_Civil_01">
|
||||
<English>Cessna TTx</English>
|
||||
<Czech>Cessna TTx</Czech>
|
||||
<French>Cessna TTx</French>
|
||||
<Spanish>Cessna TTx</Spanish>
|
||||
<Russian>Cessna TTx</Russian>
|
||||
<Polish>Cessna TTx</Polish>
|
||||
<German>Cessna TTx</German>
|
||||
<Italian>Cessna TTx</Italian>
|
||||
<Hungarian>Cessna TTx</Hungarian>
|
||||
<Portuguese>Cessna TTx</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_C_Plane_Civil_01_racing">
|
||||
<English>Cessna TTx (Racing)</English>
|
||||
<Czech>Cessna TTx (Racing)</Czech>
|
||||
<French>Cessna TTx (Racing)</French>
|
||||
<Spanish>Cessna TTx (Racing)</Spanish>
|
||||
<Russian>Cessna TTx (Racing)</Russian>
|
||||
<Polish>Cessna TTx (Racing)</Polish>
|
||||
<German>Cessna TTx (Racing)</German>
|
||||
<Italian>Cessna TTx (Racing)</Italian>
|
||||
<Hungarian>Cessna TTx (Racing)</Hungarian>
|
||||
<Portuguese>Cessna TTx (Racing)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_O_T_UAV_04_CAS">
|
||||
<English>Burraq UCAV</English>
|
||||
<Czech>Burraq UCAV</Czech>
|
||||
<French>Burraq UCAV</French>
|
||||
<Spanish>Burraq UCAV</Spanish>
|
||||
<Russian>Burraq UCAV</Russian>
|
||||
<Polish>Burraq UCAV</Polish>
|
||||
<German>Burraq UCAV</German>
|
||||
<Italian>Burraq UCAV</Italian>
|
||||
<Hungarian>Burraq UCAV</Hungarian>
|
||||
<Portuguese>Burraq UCAV</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_CTAR_blk">
|
||||
<English>QBZ-95-1 (Black)</English>
|
||||
<Czech>QBZ-95-1 (Černá)</Czech>
|
||||
<French>QBZ-95-1 (Noir)</French>
|
||||
<Spanish>QBZ-95-1 (Negro)</Spanish>
|
||||
<Russian>QBZ-95-1 (Чёрный)</Russian>
|
||||
<Polish>QBZ-95-1 (czarny)</Polish>
|
||||
<German>QBZ-95-1 (Schwarz)</German>
|
||||
<Italian>QBZ-95-1 (Nero)</Italian>
|
||||
<Hungarian>QBZ-95-1 (Fekete)</Hungarian>
|
||||
<Portuguese>QBZ-95-1 (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_CTAR_GL_blk">
|
||||
<English>QBZ-95-1 GL (Black)</English>
|
||||
<Czech>QBZ-95-1 GL (Černá)</Czech>
|
||||
<French>QBZ-95-1 GL (Noir)</French>
|
||||
<Spanish>QBZ-95-1 GL (Negro)</Spanish>
|
||||
<Russian>QBZ-95-1 GL (Чёрный)</Russian>
|
||||
<Polish>QBZ-95-1 GL (czarny)</Polish>
|
||||
<German>QBZ-95-1 GL (Schwarz)</German>
|
||||
<Italian>QBZ-95-1 GL (Nero)</Italian>
|
||||
<Hungarian>QBZ-95-1 GL (Fekete)</Hungarian>
|
||||
<Portuguese>QBZ-95-1 GL (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_CTARS_blk">
|
||||
<English>QBZ-95-1 LSW (Black)</English>
|
||||
<Czech>QBZ-95-1 LSW (Černá)</Czech>
|
||||
<French>QBZ-95-1 LSW (Noir)</French>
|
||||
<Spanish>QBZ-95-1 LSW (Negro)</Spanish>
|
||||
<Russian>QBZ-95-1 LSW (Чёрный)</Russian>
|
||||
<Polish>QBZ-95-1 LSW (czarny)</Polish>
|
||||
<German>QBZ-95-1 LSW (Schwarz)</German>
|
||||
<Italian>QBZ-95-1 LSW (Nero)</Italian>
|
||||
<Hungarian>QBZ-95-1 LSW (Fekete)</Hungarian>
|
||||
<Portuguese>QBZ-95-1 LSW (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_srifle_DMR_07_blk">
|
||||
<English>QBU-88 (Black)</English>
|
||||
<Czech>QBU-88 (Černá)</Czech>
|
||||
<French>QBU-88 (Noir)</French>
|
||||
<Spanish>QBU-88 (Negro)</Spanish>
|
||||
<Russian>QBU-88 (Чёрный)</Russian>
|
||||
<Polish>QBU-88 (czarny)</Polish>
|
||||
<German>QBU-88 (Schwarz)</German>
|
||||
<Italian>QBU-88 (Nero)</Italian>
|
||||
<Hungarian>QBU-88 (Fekete)</Hungarian>
|
||||
<Portuguese>QBU-88 (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_srifle_DMR_07_ghex">
|
||||
<English>QBU-88 (Green Hex)</English>
|
||||
<German>QBU-88 (Hex Grün)</German>
|
||||
<Spanish>QBU-88 (Hex Verde)</Spanish>
|
||||
<Polish>QBU-88 (zielony hex)</Polish>
|
||||
<Czech>QBU-88 (Zelený Hex)</Czech>
|
||||
<French>QBU-88 (Hex Verte)</French>
|
||||
<Russian>QBU-88 (Зелёный Hex)</Russian>
|
||||
<Portuguese>QBU-88 (Verde Hex)</Portuguese>
|
||||
<Hungarian>QBU-88 (Zöld Hex)</Hungarian>
|
||||
<Italian>QBU-88 (Hex Verde)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_srifle_DMR_07_hex">
|
||||
<English>QBU-88 (Hex)</English>
|
||||
<German>QBU-88 (Hex)</German>
|
||||
<Spanish>QBU-88 (Hex)</Spanish>
|
||||
<Polish>QBU-88 (hex)</Polish>
|
||||
<Czech>QBU-88 (Hex)</Czech>
|
||||
<French>QBU-88 (Hex)</French>
|
||||
<Russian>QBU-88 (Hex)</Russian>
|
||||
<Portuguese>QBU-88 (Hex)</Portuguese>
|
||||
<Hungarian>QBU-88 (Hex)</Hungarian>
|
||||
<Italian>QBU-88 (Hex)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_srifle_GM6_ghex">
|
||||
<English>GM6 Lynx (Green Hex)</English>
|
||||
<German>GM6 Lynx (Hex Grün)</German>
|
||||
<Spanish>GM6 Lynx (Hex Verde)</Spanish>
|
||||
<Polish>GM6 Lynx (Zielony hex)</Polish>
|
||||
<Czech>GM6 Lynx (Zelený Hex)</Czech>
|
||||
<French>GM6 Lynx (Hex Verte)</French>
|
||||
<Russian>GM6 Lynx (Зелёный Hex)</Russian>
|
||||
<Portuguese>GM6 Lynx (Verde Hex)</Portuguese>
|
||||
<Hungarian>GM6 Lynx (Zöld Hex)</Hungarian>
|
||||
<Italian>GM6 Lynx (Hex Verde)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_LMG_03">
|
||||
<English>M249 SPW</English>
|
||||
<German>M249 SPW</German>
|
||||
<Spanish>M249 SPW</Spanish>
|
||||
<Polish>M249 SPW</Polish>
|
||||
<Czech>M249 SPW</Czech>
|
||||
<French>M249 SPW</French>
|
||||
<Russian>M249 SPW</Russian>
|
||||
<Portuguese>M249 SPW</Portuguese>
|
||||
<Hungarian>M249 SPW</Hungarian>
|
||||
<Italian>M249 SPW</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_srifle_LRR_tna">
|
||||
<English>M200 Intervention (Tropic)</English>
|
||||
<German>M200 Intervention (Tropisch)</German>
|
||||
<Czech>M200 Intervention (Obratník)</Czech>
|
||||
<Polish>M200 Intervention (zwrotnik)</Polish>
|
||||
<French>M200 Intervention (Tropique)</French>
|
||||
<Hungarian>M200 Intervention (Tropikus)</Hungarian>
|
||||
<Spanish>M200 Intervention (Trópico)</Spanish>
|
||||
<Russian>M200 Intervention (тропик)</Russian>
|
||||
<Portuguese>M200 Intervention (Trópico)</Portuguese>
|
||||
<Italian>M200 Intervention (Tropico)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_SMG_05">
|
||||
<English>MP5K</English>
|
||||
<German>MP5K</German>
|
||||
<Spanish>MP5K</Spanish>
|
||||
<Polish>MP5K</Polish>
|
||||
<Czech>MP5K</Czech>
|
||||
<French>MP5K</French>
|
||||
<Russian>MP5K</Russian>
|
||||
<Portuguese>MP5K</Portuguese>
|
||||
<Hungarian>MP5K</Hungarian>
|
||||
<Italian>MP5K</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_01_blk">
|
||||
<English>HK416A5 10" (Black)</English>
|
||||
<Czech>HK416A5 10" (Černá)</Czech>
|
||||
<French>HK416A5 10" (Noir)</French>
|
||||
<Spanish>HK416A5 10" (Negro)</Spanish>
|
||||
<Russian>HK416A5 10" (Чёрный)</Russian>
|
||||
<Polish>HK416A5 10" (czarny)</Polish>
|
||||
<German>HK416A5 10" (Schwarz)</German>
|
||||
<Italian>HK416A5 10" (Nero)</Italian>
|
||||
<Hungarian>HK416A5 10" (Fekete)</Hungarian>
|
||||
<Portuguese>HK416A5 10" (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_01_khk">
|
||||
<English>HK416A5 10" (Khaki)</English>
|
||||
<Czech>HK416A5 10" (Khaki)</Czech>
|
||||
<French>HK416A5 10" (Kaki)</French>
|
||||
<Spanish>HK416A5 10" (Caqui)</Spanish>
|
||||
<Russian>HK416A5 10" (Хаки)</Russian>
|
||||
<Polish>HK416A5 10" (khaki)</Polish>
|
||||
<German>HK416A5 10" (Khaki)</German>
|
||||
<Italian>HK416A5 10" (Khaki)</Italian>
|
||||
<Hungarian>HK416A5 10" (Khaki)</Hungarian>
|
||||
<Portuguese>HK416A5 10" (Caqui)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_01_snd">
|
||||
<English>HK416A5 10" (Sand)</English>
|
||||
<Czech>HK416A5 10" (Písková)</Czech>
|
||||
<French>HK416A5 10" (Beige)</French>
|
||||
<Spanish>HK416A5 10" (Arena)</Spanish>
|
||||
<Russian>HK416A5 10" (Песочный)</Russian>
|
||||
<German>HK416A5 10" (Sand)</German>
|
||||
<Polish>HK416A5 10" (piaskowy)</Polish>
|
||||
<Italian>HK416A5 10" (Sabbia)</Italian>
|
||||
<Hungarian>HK416A5 10" (Homok)</Hungarian>
|
||||
<Portuguese>HK416A5 10" (Deserto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_01_GL_blk">
|
||||
<English>HK416A5 10" GL (Black)</English>
|
||||
<Czech>HK416A5 10" GL (Černá)</Czech>
|
||||
<French>HK416A5 10" GL (Noir)</French>
|
||||
<Spanish>HK416A5 10" GL (Negro)</Spanish>
|
||||
<Russian>HK416A5 10" GL (Чёрный)</Russian>
|
||||
<Polish>HK416A5 10" GL (czarny)</Polish>
|
||||
<German>HK416A5 10" GL (Schwarz)</German>
|
||||
<Italian>HK416A5 10" GL (Nero)</Italian>
|
||||
<Hungarian>HK416A5 10" GL (Fekete)</Hungarian>
|
||||
<Portuguese>HK416A5 10" GL (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_01_GL_khk">
|
||||
<English>HK416A5 10" GL (Khaki)</English>
|
||||
<Czech>HK416A5 10" GL (Khaki)</Czech>
|
||||
<French>HK416A5 10" GL (Kaki)</French>
|
||||
<Spanish>HK416A5 10" GL (Caqui)</Spanish>
|
||||
<Russian>HK416A5 10" GL (Хаки)</Russian>
|
||||
<Polish>HK416A5 10" GL (khaki)</Polish>
|
||||
<German>HK416A5 10" GL (Khaki)</German>
|
||||
<Italian>HK416A5 10" GL (Khaki)</Italian>
|
||||
<Hungarian>HK416A5 10" GL (Khaki)</Hungarian>
|
||||
<Portuguese>HK416A5 10" GL (Caqui)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_01_GL_snd">
|
||||
<English>HK416A5 10" GL (Sand)</English>
|
||||
<Czech>HK416A5 10" GL (Písková)</Czech>
|
||||
<French>HK416A5 10" GL (Beige)</French>
|
||||
<Spanish>HK416A5 10" GL (Arena)</Spanish>
|
||||
<Russian>HK416A5 10" GL (Песочный)</Russian>
|
||||
<German>HK416A5 10" GL (Sand)</German>
|
||||
<Polish>HK416A5 10" GL (piaskowy)</Polish>
|
||||
<Italian>HK416A5 10" GL (Sabbia)</Italian>
|
||||
<Hungarian>HK416A5 10" GL (Homok)</Hungarian>
|
||||
<Portuguese>HK416A5 10" GL (Deserto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_02_blk">
|
||||
<English>HK416A5 14.5" (Black)</English>
|
||||
<Czech>HK416A5 14.5" (Černá)</Czech>
|
||||
<French>HK416A5 14.5" (Noir)</French>
|
||||
<Spanish>HK416A5 14.5" (Negro)</Spanish>
|
||||
<Russian>HK416A5 14.5" (Чёрный)</Russian>
|
||||
<Polish>HK416A5 14.5" (czarny)</Polish>
|
||||
<German>HK416A5 14.5" (Schwarz)</German>
|
||||
<Italian>HK416A5 14.5" (Nero)</Italian>
|
||||
<Hungarian>HK416A5 14.5" (Fekete)</Hungarian>
|
||||
<Portuguese>HK416A5 14.5" (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_02_khk">
|
||||
<English>HK416A5 14.5" (Khaki)</English>
|
||||
<Czech>HK416A5 14.5" (Khaki)</Czech>
|
||||
<French>HK416A5 14.5" (Kaki)</French>
|
||||
<Spanish>HK416A5 14.5" (Caqui)</Spanish>
|
||||
<Russian>HK416A5 14.5" (Хаки)</Russian>
|
||||
<Polish>HK416A5 14.5" (khaki)</Polish>
|
||||
<German>HK416A5 14.5" (Khaki)</German>
|
||||
<Italian>HK416A5 14.5" (Khaki)</Italian>
|
||||
<Hungarian>HK416A5 14.5" (Khaki)</Hungarian>
|
||||
<Portuguese>HK416A5 14.5" (Caqui)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_02_snd">
|
||||
<English>HK416A5 14.5" (Sand)</English>
|
||||
<Czech>HK416A5 14.5" (Písková)</Czech>
|
||||
<French>HK416A5 14.5" (Beige)</French>
|
||||
<Spanish>HK416A5 14.5" (Arena)</Spanish>
|
||||
<Russian>HK416A5 14.5" (Песочный)</Russian>
|
||||
<German>HK416A5 14.5" (Sand)</German>
|
||||
<Polish>HK416A5 14.5" (piaskowy)</Polish>
|
||||
<Italian>HK416A5 14.5" (Sabbia)</Italian>
|
||||
<Hungarian>HK416A5 14.5" (Homok)</Hungarian>
|
||||
<Portuguese>HK416A5 14.5" (Deserto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_03_blk">
|
||||
<English>HK417A2 20" (Black)</English>
|
||||
<Czech>HK417A2 20" (Černá)</Czech>
|
||||
<French>HK417A2 20" (Noir)</French>
|
||||
<Spanish>HK417A2 20" (Negro)</Spanish>
|
||||
<Russian>HK417A2 20" (Чёрный)</Russian>
|
||||
<Polish>HK417A2 20" (czarny)</Polish>
|
||||
<German>HK417A2 20" (Schwarz)</German>
|
||||
<Italian>HK417A2 20" (Nero)</Italian>
|
||||
<Hungarian>HK417A2 20" (Fekete)</Hungarian>
|
||||
<Portuguese>HK417A2 20" (Preto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_03_khk">
|
||||
<English>HK417A2 20" (Khaki)</English>
|
||||
<Czech>HK417A2 20" (Khaki)</Czech>
|
||||
<French>HK417A2 20" (Kaki)</French>
|
||||
<Spanish>HK417A2 20" (Caqui)</Spanish>
|
||||
<Russian>HK417A2 20" (Хаки)</Russian>
|
||||
<Polish>HK417A2 20" (khaki)</Polish>
|
||||
<German>HK417A2 20" (Khaki)</German>
|
||||
<Italian>HK417A2 20" (Khaki)</Italian>
|
||||
<Hungarian>HK417A2 20" (Khaki)</Hungarian>
|
||||
<Portuguese>HK417A2 20" (Caqui)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_arifle_SPAR_03_snd">
|
||||
<English>HK417A2 20" (Sand)</English>
|
||||
<Czech>HK417A2 20" (Písková)</Czech>
|
||||
<French>HK417A2 20" (Beige)</French>
|
||||
<Spanish>HK417A2 20" (Arena)</Spanish>
|
||||
<Russian>HK417A2 20" (Песочный)</Russian>
|
||||
<German>HK417A2 20" (Sand)</German>
|
||||
<Polish>HK417A2 20" (piaskowy)</Polish>
|
||||
<Italian>HK417A2 20" (Sabbia)</Italian>
|
||||
<Hungarian>HK417A2 20" (Homok)</Hungarian>
|
||||
<Portuguese>HK417A2 20" (Deserto)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_launch_RPG32_ghex">
|
||||
<English>RPG-32 (Green Hex)</English>
|
||||
<German>RPG-32 (Hex Grün)</German>
|
||||
<Spanish>RPG-32 (Hex Verde)</Spanish>
|
||||
<Polish>RPG-32 (zielony hex)</Polish>
|
||||
<Czech>RPG-32 (Zelený Hex)</Czech>
|
||||
<French>RPG-32 (Hex Verte)</French>
|
||||
<Russian>RPG-32 (Зелёный Hex)</Russian>
|
||||
<Portuguese>RPG-32 (Verde Hex)</Portuguese>
|
||||
<Hungarian>RPG-32 (Zöld Hex)</Hungarian>
|
||||
<Italian>RPG-32 (Hex Verde)</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_hgun_P07_khk">
|
||||
<English>P99 (Khaki)</English>
|
||||
<Czech>P99 (Khaki)</Czech>
|
||||
<French>P99 (Kaki)</French>
|
||||
<Spanish>P99 (Caqui)</Spanish>
|
||||
<Russian>P99 (Хаки)</Russian>
|
||||
<Polish>P99 (khaki)</Polish>
|
||||
<German>P99 (Khaki)</German>
|
||||
<Italian>P99 (Khaki)</Italian>
|
||||
<Hungarian>P99 (Khaki)</Hungarian>
|
||||
<Portuguese>P99 (Caqui)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_hgun_Pistol_01">
|
||||
<English>Makarov PM</English>
|
||||
<German>Makarov PM</German>
|
||||
<Spanish>Makarov PM</Spanish>
|
||||
<Polish>Makarowa PM</Polish>
|
||||
<Czech>Makarov PM</Czech>
|
||||
<French>Makarov PM</French>
|
||||
<Russian>Макарова ПМ</Russian>
|
||||
<Portuguese>Makarov PM</Portuguese>
|
||||
<Hungarian>Makarov PM</Hungarian>
|
||||
<Italian>Makarov PM</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -248,16 +248,16 @@
|
||||
<French>Ajouter des pièces de rechage aux véhicules ? (à besoin du système de cargaison)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Repair_Repair">
|
||||
<English>Repair >></English>
|
||||
<German>Reparieren >></German>
|
||||
<Spanish>Reparación >></Spanish>
|
||||
<French>Réparer >></French>
|
||||
<Polish>Napraw >></Polish>
|
||||
<Czech>Opravit >></Czech>
|
||||
<Portuguese>Reparar >></Portuguese>
|
||||
<Italian>Ripara >></Italian>
|
||||
<Hungarian>Szerelés >></Hungarian>
|
||||
<Russian>Ремонт >></Russian>
|
||||
<English>Repair</English>
|
||||
<German>Reparieren</German>
|
||||
<Spanish>Reparación</Spanish>
|
||||
<French>Réparer</French>
|
||||
<Polish>Napraw</Polish>
|
||||
<Czech>Opravit</Czech>
|
||||
<Portuguese>Reparar</Portuguese>
|
||||
<Italian>Ripara</Italian>
|
||||
<Hungarian>Szerelés</Hungarian>
|
||||
<Russian>Ремонт</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Repair_SettingDisplayTextName">
|
||||
<English>Display text on repair</English>
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="https://img.shields.io/badge/Version-3.6.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.6.1-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Fehlermeldungen">
|
||||
|
@ -3,7 +3,7 @@
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="https://img.shields.io/badge/Wersja-3.6.0-blue.svg?style=flat-square" alt="ACE3 Wersja">
|
||||
<img src="https://img.shields.io/badge/Wersja-3.6.1-blue.svg?style=flat-square" alt="ACE3 Wersja">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Zagadnienia&style=flat-square" alt="ACE3 Zagadnienia">
|
||||
|
4
mod.cpp
4
mod.cpp
@ -1,8 +1,8 @@
|
||||
name = "Advanced Combat Environment 3.6.0";
|
||||
name = "Advanced Combat Environment 3.6.1";
|
||||
picture = "logo_ace3_ca.paa";
|
||||
actionName = "GitHub";
|
||||
action = "https://github.com/acemod/ACE3";
|
||||
description = "ACE3 - Version 3.6.0";
|
||||
description = "ACE3 - Version 3.6.1";
|
||||
logo = "logo_ace3_ca.paa";
|
||||
logoOver = "logo_ace3_ca.paa";
|
||||
tooltip = "ACE3";
|
||||
|
@ -6,7 +6,7 @@ class CfgPatches {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"};
|
||||
requiredAddons[] = {"ace_javelin", "rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"};
|
||||
url = ECSTRING(main,URL);
|
||||
|
Loading…
Reference in New Issue
Block a user