mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
commit
4778c716cb
12
AUTHORS.txt
12
AUTHORS.txt
@ -26,7 +26,7 @@ Walter Pearce <jaynus@gmail.com>
|
||||
# CONTRIBUTORS
|
||||
11RDP-LoupVert <loupvert@11rdp.fr>
|
||||
[BIG]Bull
|
||||
ACCtomeek
|
||||
ACCtomeek <tomeek99@gmail.com>
|
||||
Adanteh
|
||||
aeroson
|
||||
Aggr094 <bastards4glory@gmail.com>
|
||||
@ -40,9 +40,10 @@ Falke75
|
||||
Ferenczi
|
||||
Ferenzi
|
||||
Filip Basara <filip.basara93@googlemail.com> (Logo)
|
||||
FreeZbe <freeseb@gmail.com>
|
||||
geraldbolso1899
|
||||
Ghost
|
||||
gienkov
|
||||
GieNkoV <gienkov.grzegorz@gmail.com>
|
||||
gpgpgpgp
|
||||
Grzegorz
|
||||
Hamburger SV
|
||||
@ -50,8 +51,8 @@ havena <silveredenis@gmail.com>
|
||||
Hawkins
|
||||
jokoho48
|
||||
Jonpas <jonpas33@gmail.com>
|
||||
Legolasindar
|
||||
licht-im-Norden87
|
||||
Legolasindar "Viper" <legolasindar@gmail.com>
|
||||
licht-im-Norden87 <lichtimnorden87@gmail.com>
|
||||
MarcBook
|
||||
Michail Nikolaev
|
||||
nic547 <nic547@outlook.com>
|
||||
@ -62,6 +63,9 @@ Raspu86
|
||||
Riccardo Petricca <petriccarcc@gmail.com>
|
||||
Robert Boklahánics <bokirobi@gmail.com>
|
||||
simon84
|
||||
Sniperwolf572 <tenga6@gmail.com>
|
||||
Tonic
|
||||
Tourorist <tourorist@gmail.com>
|
||||
Valentin Torikian <valentin.torikian@gmail.com>
|
||||
zGuba
|
||||
Aleksey EpMAK Yermakov <epmak777@gmail.com>
|
||||
|
@ -1,9 +1,7 @@
|
||||
|
||||
class CfgAmmo {
|
||||
class BulletBase;
|
||||
class B_20mm;
|
||||
|
||||
class ACE_20mm_HEDP : B_20mm {
|
||||
class B_20mm : BulletBase {
|
||||
hit = 80;
|
||||
indirectHit = 12;
|
||||
indirectHitRange = 2; //2;
|
||||
@ -11,8 +9,22 @@ class CfgAmmo {
|
||||
tracerStartTime = 0.02;
|
||||
timeToLive = 40;
|
||||
explosive = 1.8;
|
||||
tracersEvery = 3;
|
||||
tracerEndTime = 3.5;
|
||||
|
||||
CraterEffects = "ExploAmmoCrater";
|
||||
explosionEffects = "ExploAmmoExplosion";
|
||||
model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
|
||||
};
|
||||
class ACE_20mm_HEDP : B_20mm {};
|
||||
class ACE_20mm_AP : B_20mm {
|
||||
hit = 50;
|
||||
indirectHit = 12;
|
||||
indirectHitRange = 0.3; //2;
|
||||
explosive = 0;
|
||||
CraterEffects = "";
|
||||
explosionEffects = "";
|
||||
};
|
||||
|
||||
|
||||
// adjust minigun caliber and deflection to other ammo
|
||||
class SubmunitionBullet;
|
||||
|
@ -903,7 +903,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
|
||||
initFov = 0.466;
|
||||
minFov = 0.466;
|
||||
maxFov = 0.466;
|
||||
visionMode[] = {"Normal","NVG","Ti"};
|
||||
visionMode[] = {"Normal","Ti"};
|
||||
thermalMode[] = {0,1};
|
||||
gunnerOpticsColor[] = {0,0,0,1};
|
||||
directionStabilized = 1;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
units[] = {"ACE_Comanche_Test"};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2015-01-31 -->
|
||||
<!-- Edited with tabler - 2015-04-10 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Attach">
|
||||
<Key ID="STR_ACE_Attach_AttachDetach">
|
||||
@ -48,7 +48,7 @@
|
||||
<Portuguese>Marcador IV Acoplado</Portuguese>
|
||||
<Italian>Strobo IR attaccata</Italian>
|
||||
<Hungarian>Infravörös jeladó hozzácsatolva</Hungarian>
|
||||
<Russian>ИК строб присоединён</Russian>
|
||||
<Russian>ИК-маяк присоединён</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Attach_IrStrobe_Detached">
|
||||
<English>IR Strobe Detached</English>
|
||||
@ -60,7 +60,7 @@
|
||||
<Portuguese>Marcador IV Separado</Portuguese>
|
||||
<Italian>Strobo IR staccata</Italian>
|
||||
<Hungarian>Infravörös jeladó lecsatolva</Hungarian>
|
||||
<Russian>ИК строб отсоединён</Russian>
|
||||
<Russian>ИК-маяк отсоединён</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Attach_IrGrenade_Attached">
|
||||
<English>IR Grenade Attached</English>
|
||||
@ -72,7 +72,7 @@
|
||||
<Portuguese>Granada IV Acoplada</Portuguese>
|
||||
<Italian>Granata IR attaccata</Italian>
|
||||
<Hungarian>Infravörös gránát hozzácsatolva</Hungarian>
|
||||
<Russian>ИК граната присоединена</Russian>
|
||||
<Russian>ИК-граната присоединена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Attach_IrGrenade_Detached">
|
||||
<English>IR Grenade Detached</English>
|
||||
@ -84,7 +84,7 @@
|
||||
<Portuguese>Granada IV Separada</Portuguese>
|
||||
<Italian>Granata IR staccata</Italian>
|
||||
<Hungarian>Infravörös gránát lecsatolva</Hungarian>
|
||||
<Russian>ИК граната отсоединена</Russian>
|
||||
<Russian>ИК-граната отсоединена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Attach_Chemlight_Attached">
|
||||
<English>Chemlight Attached</English>
|
||||
@ -132,7 +132,7 @@
|
||||
<Portuguese>Marcador IV</Portuguese>
|
||||
<Italian>Strobo IR</Italian>
|
||||
<Hungarian>Infravörös jeladó</Hungarian>
|
||||
<Russian>ИК строб</Russian>
|
||||
<Russian>ИК-маяк</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_IrStrobe_Description">
|
||||
<English>IR Strobe allows you to signal your position through a pulsating beacon only visible with NVGs.</English>
|
||||
@ -144,7 +144,7 @@
|
||||
<Portuguese>O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna.</Portuguese>
|
||||
<Italian>La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni.</Italian>
|
||||
<Hungarian>Az infravörös jeladóval megjelölheted a helyzetedet úgy, hogy annak pulzáló fénye csak éjjellátó készülékkel látható.</Hungarian>
|
||||
<Russian>ИК строб позволяет сигнализировать свое местоположение через пульсирующий маяк, видимый только через ПНВ.</Russian>
|
||||
<Russian>ИК-маяк позволяет сигнализировать о своём местоположении через пульсирующий свет, видимый только через ПНВ.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Attach_PlaceAction">
|
||||
<English>Place</English>
|
||||
@ -156,6 +156,7 @@
|
||||
<Portuguese>Colocar</Portuguese>
|
||||
<Italian>Posiziona</Italian>
|
||||
<Hungarian>Elhelyez</Hungarian>
|
||||
<Russian>Установить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Attach_CancelAction">
|
||||
<English>Cancel</English>
|
||||
@ -167,13 +168,14 @@
|
||||
<Portuguese>Cancelar</Portuguese>
|
||||
<Italian>Annulla</Italian>
|
||||
<Hungarian>Mégse</Hungarian>
|
||||
<Russian>Отмена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Attach_Failed">
|
||||
<English>Attach Failed</English>
|
||||
<French>Échec du Attacher</French>
|
||||
<German>Befestigen Fehlgeschlagen</German>
|
||||
<Russian>Присоединить Ошибка</Russian>
|
||||
<Spanish>Error en Acoplar</Spanish>
|
||||
<German>Befestigen fehlgeschlagen</German>
|
||||
<Russian>Соединение прервано</Russian>
|
||||
<Spanish>Error al acoplar</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -38,7 +38,7 @@ if (local _logic) then {
|
||||
["STR_ACE_Captives_Zeus_OnlyAlive"] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
} else {
|
||||
["STR_ACE_Captives_Zeus_OnlyInfentry"] call EFUNC(common,displayTextStructured);
|
||||
["STR_ACE_Captives_Zeus_OnlyInfantry"] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
} else {
|
||||
["STR_ACE_Captives_Zeus_NothingSelected"] call EFUNC(common,displayTextStructured);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2015-02-24 -->
|
||||
<!-- Edited with tabler - 2015-04-10 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Captives">
|
||||
<Key ID="STR_ACE_Captives_SetCaptive">
|
||||
@ -52,7 +52,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_NoCaptive">
|
||||
<English>You need to take him as prisoner first!</English>
|
||||
<German>Du must ihn zuerst gefangen nehmen.</German>
|
||||
<German>Du musst ihn zuerst gefangen nehmen.</German>
|
||||
<Spanish>Necesitas hacerle prisionero primero!</Spanish>
|
||||
<Polish>Najpierw musisz wziąć go jako więźnia!</Polish>
|
||||
<French>Vous devez d'abord le capturer!</French>
|
||||
@ -132,18 +132,33 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_StartSurrendering">
|
||||
<English>Surrender</English>
|
||||
<German>Kapitulieren</German>
|
||||
<Spanish>Rendirse</Spanish>
|
||||
<Russian>Сдаться</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_StopSurrendering">
|
||||
<English>Stop Surrendering</English>
|
||||
<German>Den Kampf erneut aufnehmen</German>
|
||||
<Spanish>Dejar de rendirse</Spanish>
|
||||
<Russian>Остановить сдачу</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_Zeus_OnlyAlive">
|
||||
<English>Only use on alive units</English>
|
||||
<German>Nur bei lebenden Einheiten verwendbar</German>
|
||||
<Spanish>Utilizar solo en unidades vivas</Spanish>
|
||||
<Russian>Только для живых юнитов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_Zeus_OnlyInfentry">
|
||||
<Key ID="STR_ACE_Captives_Zeus_OnlyInfantry">
|
||||
<English>Only use on dismounted inf</English>
|
||||
<German>Nur bei abgesessener Infanterie verwendbar</German>
|
||||
<Spanish>Utilizar solo en infanteria desmontada</Spanish>
|
||||
<Russian>Только для спеш. солдат</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_Zeus_NothingSelected">
|
||||
<English>Nothing under mouse</English>
|
||||
<German>Es wurde nichts ausgewählt</German>
|
||||
<Spanish>Nada bajo el ratón</Spanish>
|
||||
<Russian>Объекты под мышью отсутствуют</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -15,7 +15,7 @@ class CfgWeapons {
|
||||
class ACE_FakePrimaryWeapon: Rifle_Base_F {
|
||||
scope = 2;
|
||||
displayName = "";
|
||||
model = "";
|
||||
model = "\A3\Weapons_f\empty";
|
||||
picture = "";
|
||||
magazines[] = {"ACE_FakeMagazine"};
|
||||
discreteDistance[] = {};
|
||||
|
@ -39,6 +39,7 @@ PREP(displayText);
|
||||
PREP(displayTextPicture);
|
||||
PREP(displayTextStructured);
|
||||
PREP(doAnimation);
|
||||
PREP(dropBackpack);
|
||||
PREP(endRadioTransmission);
|
||||
PREP(eraseCache);
|
||||
PREP(execNextFrame);
|
||||
@ -107,6 +108,7 @@ PREP(isAutoWind);
|
||||
PREP(isAwake);
|
||||
PREP(isEngineer);
|
||||
PREP(isEOD);
|
||||
PREP(isFeatureCameraActive);
|
||||
PREP(isInBuilding);
|
||||
PREP(isModLoaded);
|
||||
PREP(isPlayer);
|
||||
@ -177,6 +179,12 @@ PREP(useItem);
|
||||
PREP(useMagazine);
|
||||
PREP(waitAndExecute);
|
||||
|
||||
PREP(translateToWeaponSpace);
|
||||
PREP(translateToModelSpace);
|
||||
|
||||
// Model and drawing helpers
|
||||
PREP(worldToScreenBounds);
|
||||
|
||||
// config items
|
||||
PREP(getConfigType);
|
||||
PREP(getItemType);
|
||||
|
@ -1,23 +1,37 @@
|
||||
/**
|
||||
* fn_disableAI_f.sqf
|
||||
* @Descr: N/A
|
||||
* @Author: Glowbal
|
||||
/*
|
||||
* Author: Glowbal, KoffeinFlummi
|
||||
* Disables/Enables AI
|
||||
*
|
||||
* @Arguments: []
|
||||
* @Return:
|
||||
* @PublicAPI: false
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Disable AI <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [bob, true] call ace_common_fnc_disableAI;
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
private ["_unit","_disable"];
|
||||
_unit = [_this, 0,ObjNull,[ObjNull]] call BIS_fnc_Param;
|
||||
_disable = [_this, 1,false,[false]] call BIS_fnc_Param;
|
||||
|
||||
if (local _unit && !(IsPlayer _unit)) then {
|
||||
PARAMS_2(_unit,_disable);
|
||||
|
||||
if ((local _unit) && {!([_unit] call EFUNC(common,isPlayer))}) then {
|
||||
if (_disable) then {
|
||||
_unit disableAI "Move";
|
||||
_unit disableAI "MOVE";
|
||||
_unit disableAI "TARGET";
|
||||
_unit disableAI "AUTOTARGET";
|
||||
_unit disableAI "FSM";
|
||||
_unit disableConversation true;
|
||||
} else {
|
||||
_unit enableAI "Move";
|
||||
//Sanity check to make sure we don't enable unconsious AI
|
||||
if (_unit getVariable ["ace_isunconscious", false]) exitWith {ERROR("Enabling AI for unconsious unit");};
|
||||
_unit enableAI "MOVE";
|
||||
_unit enableAI "TARGET";
|
||||
_unit enableAI "AUTOTARGET";
|
||||
_unit enableAI "FSM";
|
||||
_unit disableConversation false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
34
addons/common/functions/fnc_dropBackpack.sqf
Normal file
34
addons/common/functions/fnc_dropBackpack.sqf
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
*
|
||||
* Drops a backback. Also returns the ground wepaon holder object of the dropped backpack.
|
||||
*
|
||||
* Argument:
|
||||
* 0: Unit that has a backpack (Object)
|
||||
*
|
||||
* Return value:
|
||||
* Ground wepaon holder with backpack (Object)
|
||||
*
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private "_unit";
|
||||
|
||||
_unit = _this select 0;
|
||||
|
||||
private "_backpackObject";
|
||||
_backpackObject = backpackContainer _unit;
|
||||
|
||||
_unit addBackpack "Bag_Base";
|
||||
removeBackpack _unit;
|
||||
|
||||
private "_holder";
|
||||
_holder = objNull;
|
||||
|
||||
{
|
||||
if (_backpackObject in everyBackpack _x) exitWith {
|
||||
_holder = _x;
|
||||
};
|
||||
} forEach (position _unit nearObjects ["WeaponHolder", 5]);
|
||||
|
||||
_holder
|
@ -14,10 +14,10 @@
|
||||
|
||||
// ACRE
|
||||
if (isClass (configFile >> "CfgPatches" >> "acre_main")) then {
|
||||
[-1] call acre_core_fnc_handleMultiPttKeyPressUp;
|
||||
[0] call acre_core_fnc_handleMultiPttKeyPressUp;
|
||||
[1] call acre_core_fnc_handleMultiPttKeyPressUp;
|
||||
[2] call acre_core_fnc_handleMultiPttKeyPressUp;
|
||||
[-1] call acre_sys_core_fnc_handleMultiPttKeyPressUp;
|
||||
[0] call acre_sys_core_fnc_handleMultiPttKeyPressUp;
|
||||
[1] call acre_sys_core_fnc_handleMultiPttKeyPressUp;
|
||||
[2] call acre_sys_core_fnc_handleMultiPttKeyPressUp;
|
||||
};
|
||||
|
||||
// TFAR
|
||||
|
@ -16,8 +16,10 @@ private ["_vehicle", "_weapon"];
|
||||
_vehicle = _this select 0;
|
||||
_weapon = _this select 1;
|
||||
|
||||
if (gunner _vehicle == _vehicle && {_weapon in weapons _vehicle}) exitWith {gunner _vehicle};
|
||||
// on foot
|
||||
if (gunner _vehicle == _vehicle && {_weapon in weapons _vehicle || {toLower _weapon in ["throw", "put"]}}) exitWith {gunner _vehicle};
|
||||
|
||||
// inside vehicle
|
||||
private "_gunner";
|
||||
_gunner = objNull;
|
||||
|
||||
@ -27,4 +29,9 @@ _gunner = objNull;
|
||||
};
|
||||
} forEach allTurrets [_vehicle, true];
|
||||
|
||||
// ensure that at least the pilot is returned if there is no gunner
|
||||
if (isManualFire _vehicle && {isNull _gunner}) then {
|
||||
_gunner = driver _vehicle;
|
||||
};
|
||||
|
||||
_gunner
|
||||
|
31
addons/common/functions/fnc_isFeatureCameraActive.sqf
Normal file
31
addons/common/functions/fnc_isFeatureCameraActive.sqf
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Author: Sniperwolf572
|
||||
*
|
||||
* Checks if one of the following BI feature cameras are active:
|
||||
*
|
||||
* - Classic camera (BIS_fnc_cameraOld)
|
||||
* - Splendid camera (BIS_fnc_camera)
|
||||
* - Arsenal camera (BIS_fnc_arsenal)
|
||||
* - Animation viewer (BIS_fnc_animViewer)
|
||||
* - Establishing shot (BIS_fnc_establishingShot)
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* Is BI feature camera active (bool)
|
||||
*
|
||||
* Example:
|
||||
* call ace_common_fnc_isFeatureCameraActive;
|
||||
*
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
(
|
||||
!isNull (missionNamespace getVariable ["BIS_DEBUG_CAM", objNull]) || // Classic camera
|
||||
{!isNull (missionNamespace getVariable ["BIS_fnc_camera_cam", objNull])} || // Splendid camera
|
||||
{!isNull (uiNamespace getVariable ["BIS_fnc_arsenal_cam", objNull])} || // Arsenal camera
|
||||
{!isNull (uiNamespace getVariable ["BIS_fnc_animViewer_cam", objNull])} || // Animation viewer camera
|
||||
{!isNull (missionNamespace getVariable ["BIS_fnc_establishingShot_fakeUAV", objNull])} // Establishing shot camera
|
||||
)
|
@ -27,7 +27,7 @@ if (_setVolume) then {
|
||||
player setVariable ["tf_unable_to_use_radio", false];
|
||||
|
||||
// ACRE2
|
||||
player setVariable ["acre_sys_core_globalVolume", NORMAL_LEVEL];
|
||||
[NORMAL_LEVEL] call acre_api_fnc_setGlobalVolume;
|
||||
player setVariable ["acre_sys_core_isDisabled", false, true];
|
||||
|
||||
} else {
|
||||
@ -40,7 +40,7 @@ if (_setVolume) then {
|
||||
player setVariable ["tf_unable_to_use_radio", true];
|
||||
|
||||
// ACRE2
|
||||
player setVariable ["acre_sys_core_globalVolume", MUTED_LEVEL];
|
||||
[MUTED_LEVEL] call acre_api_fnc_setGlobalVolume;
|
||||
player setVariable ["acre_sys_core_isDisabled", true, true];
|
||||
|
||||
};
|
||||
|
52
addons/common/functions/fnc_worldToScreenBounds.sqf
Normal file
52
addons/common/functions/fnc_worldToScreenBounds.sqf
Normal file
@ -0,0 +1,52 @@
|
||||
// (c) zGuba 2011
|
||||
// Function helper for framing objects on screen.
|
||||
// Input: [_object,_margins3D,_offset3D] (object, 3 * float array, 3 * float array)
|
||||
// Output: [_minX,_minY,_minY,_maxY] (4 * float)
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_minX","_minY","_maxX","_maxY"];
|
||||
|
||||
PARAMS_3(_object,_margins,_offsets);
|
||||
|
||||
_minX = 10;
|
||||
_minY = 10;
|
||||
_maxX = -10;
|
||||
_maxY = -10;
|
||||
|
||||
if (true) then {
|
||||
_bounds = boundingBox _object;
|
||||
|
||||
_boundsMin = _bounds select 0;
|
||||
_boundsMinX = (_boundsMin select 0) - (_margins select 0) + (_offsets select 0);
|
||||
_boundsMinY = (_boundsMin select 1) - (_margins select 1) + (_offsets select 1);
|
||||
_boundsMinZ = (_boundsMin select 2) - (_margins select 2) + (_offsets select 2);
|
||||
_boundsMax = _bounds select 1;
|
||||
_boundsMaxX = (_boundsMax select 0) + (_margins select 0) + (_offsets select 0);
|
||||
_boundsMaxY = (_boundsMax select 1) + (_margins select 1) + (_offsets select 1);
|
||||
_boundsMaxZ = (_boundsMax select 2) + (_margins select 2) + (_offsets select 2);
|
||||
|
||||
_boundsCorners = [
|
||||
[_boundsMinX,_boundsMinY,_boundsMinZ],
|
||||
[_boundsMinX,_boundsMinY,_boundsMaxZ],
|
||||
[_boundsMinX,_boundsMaxY,_boundsMinZ],
|
||||
[_boundsMinX,_boundsMaxY,_boundsMaxZ],
|
||||
[_boundsMaxX,_boundsMinY,_boundsMinZ],
|
||||
[_boundsMaxX,_boundsMinY,_boundsMaxZ],
|
||||
[_boundsMaxX,_boundsMaxY,_boundsMinZ],
|
||||
[_boundsMaxX,_boundsMaxY,_boundsMaxZ]
|
||||
];
|
||||
|
||||
|
||||
{
|
||||
_ppos = worldToScreen (_object modelToWorld _x);
|
||||
_pposX = _ppos select 0;
|
||||
_pposY = _ppos select 1;
|
||||
if (_pposX < _minX) then {_minX = _pposX};
|
||||
if (_pposX > _maxX) then {_maxX = _pposX};
|
||||
if (_pposY < _minY) then {_minY = _pposY};
|
||||
if (_pposY > _maxY) then {_maxY = _pposY};
|
||||
} forEach _boundsCorners;
|
||||
};
|
||||
|
||||
[_minX,_minY,_maxX,_maxY]
|
@ -1,19 +1,62 @@
|
||||
// by commy2
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (isNil "ACE_itemFix") then {
|
||||
ACE_isMapEnabled = call {_config = missionConfigFile >> "showMap"; !isNumber _config || {getNumber _config == 1}};
|
||||
ACE_isCompassEnabled = call {_config = missionConfigFile >> "showCompass"; !isNumber _config || {getNumber _config == 1}};
|
||||
ACE_isWatchEnabled = call {_config = missionConfigFile >> "showWatch"; !isNumber _config || {getNumber _config == 1}};
|
||||
ACE_isRadioEnabled = call {_config = missionConfigFile >> "showRadio"; !isNumber _config || {getNumber _config == 1}};
|
||||
ACE_isGPSEnabled = call {_config = missionConfigFile >> "showGPS"; !isNumber _config || {getNumber _config == 1}};
|
||||
ACE_isMapEnabled = call {_config = missionConfigFile >> "showMap"; !isNumber _config || {getNumber _config == 1}}; // default value is 1, so do isNumber check first
|
||||
ACE_isCompassEnabled = call {_config = missionConfigFile >> "showCompass"; !isNumber _config || {getNumber _config == 1}};
|
||||
ACE_isWatchEnabled = call {_config = missionConfigFile >> "showWatch"; !isNumber _config || {getNumber _config == 1}};
|
||||
ACE_isRadioEnabled = call {_config = missionConfigFile >> "showRadio"; !isNumber _config || {getNumber _config == 1}};
|
||||
ACE_isGPSEnabled = call {_config = missionConfigFile >> "showGPS"; !isNumber _config || {getNumber _config == 1}};
|
||||
|
||||
ACE_itemFix = ["ACE_itemFix", "onEachFrame", {
|
||||
_items = assignedItems ACE_player;
|
||||
showMap (ACE_isMapEnabled && {"ItemMap" in _items});
|
||||
showCompass (ACE_isCompassEnabled && {"ItemCompass" in _items});
|
||||
showWatch (ACE_isWatchEnabled && {"ItemWatch" in _items});
|
||||
//showRadio (ACE_isRadioEnabled && {"ItemRadio" in _items});
|
||||
showGPS (ACE_isGPSEnabled && {"ItemGPS" in _items || {cameraOn == getConnectedUAV ACE_player}}); //If player is activly controling a UAV, showGPS controls showing the map (m key)
|
||||
}] call BIS_fnc_addStackedEventHandler;
|
||||
};
|
||||
GVAR(AssignedItems) = [];
|
||||
GVAR(AssignedItemsInfo) = [];
|
||||
|
||||
["playerInventoryChanged", {
|
||||
private ["_unit", "_assignedItems", "_shownItems"];
|
||||
|
||||
_unit = _this select 0;
|
||||
_assignedItems = _this select 1 select 17;
|
||||
|
||||
_shownItems = [
|
||||
ACE_isMapEnabled,
|
||||
ACE_isCompassEnabled,
|
||||
ACE_isWatchEnabled,
|
||||
ACE_isRadioEnabled,
|
||||
ACE_isGPSEnabled
|
||||
];
|
||||
|
||||
{
|
||||
if !(_x in GVAR(AssignedItems)) then {
|
||||
GVAR(AssignedItems) pushBack _x;
|
||||
GVAR(AssignedItemsInfo) pushBack toLower getText (configFile >> "CfgWeapons" >> _x >> "ACE_hideItemType")
|
||||
};
|
||||
|
||||
private "_hideItemType";
|
||||
_hideItemType = GVAR(AssignedItemsInfo) select (GVAR(AssignedItems) find _x);
|
||||
|
||||
switch (_hideItemType) do {
|
||||
case ("map"): {
|
||||
_shownItems set [0, false];
|
||||
};
|
||||
case ("compass"): {
|
||||
_shownItems set [1, false];
|
||||
};
|
||||
case ("watch"): {
|
||||
_shownItems set [2, false];
|
||||
};
|
||||
case ("radio"): {
|
||||
_shownItems set [3, false];
|
||||
};
|
||||
case ("gps"): {
|
||||
_shownItems set [4, false];
|
||||
};
|
||||
};
|
||||
} forEach _assignedItems;
|
||||
|
||||
//systemChat str _shownItems;
|
||||
|
||||
showMap (_shownItems select 0);
|
||||
showCompass (_shownItems select 1);
|
||||
showWatch (_shownItems select 2);
|
||||
showRadio (_shownItems select 3);
|
||||
showGPS (_shownItems select 4 || {cameraOn == getConnectedUAV _unit}); //If player is activly controling a UAV, showGPS controls showing the map (m key)
|
||||
}] call FUNC(addEventHandler);
|
||||
|
@ -1,349 +1,405 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2015-04-06 -->
|
||||
<!-- Edited with tabler. -->
|
||||
<Project name="ACE">
|
||||
<Package name="Common">
|
||||
<Key ID="STR_ACE_Common_ACETeam">
|
||||
<English>ACE-Team</English>
|
||||
<German>ACE-Team</German>
|
||||
<Spanish>ACE-Team</Spanish>
|
||||
<Polish>ACE-Team</Polish>
|
||||
<Czech>ACE-Team</Czech>
|
||||
<French>ACE-Team</French>
|
||||
<Russian>Команда ACE</Russian>
|
||||
<Portuguese>ACE-Team</Portuguese>
|
||||
<Hungarian>ACE-Team</Hungarian>
|
||||
<Italian>ACE-Team</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Save">
|
||||
<English>Save</English>
|
||||
<German>Speichern</German>
|
||||
<Spanish>Guardar</Spanish>
|
||||
<Polish>Zapisz</Polish>
|
||||
<Czech>Uložit</Czech>
|
||||
<French>Sauvegarder</French>
|
||||
<Russian>Сохранить</Russian>
|
||||
<Portuguese>Salvar</Portuguese>
|
||||
<Hungarian>Mentés</Hungarian>
|
||||
<Italian>Salva</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Cancel">
|
||||
<English>Cancel</English>
|
||||
<German>Abbrechen</German>
|
||||
<Spanish>Cancelar</Spanish>
|
||||
<Polish>Anuluj</Polish>
|
||||
<Czech>Zrušit</Czech>
|
||||
<French>Annuler</French>
|
||||
<Russian>Отмена</Russian>
|
||||
<Portuguese>Cancelar</Portuguese>
|
||||
<Hungarian>Mégse</Hungarian>
|
||||
<Italian>Annulla</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Options">
|
||||
<English>ACE Options</English>
|
||||
<German>ACE Optionen</German>
|
||||
<Spanish>Opciones ACE</Spanish>
|
||||
<Polish>Opcje ACE</Polish>
|
||||
<Czech>ACE Nastavení</Czech>
|
||||
<French>ACE Options</French>
|
||||
<Russian>ACE Настройки</Russian>
|
||||
<Portuguese>Opções do ACE</Portuguese>
|
||||
<Hungarian>ACE Opciók</Hungarian>
|
||||
<Italian>Opzioni ACE</Italian>
|
||||
</Key>
|
||||
<!-- These are cardinal directions, in case you didn't guess. -->
|
||||
<Key ID="STR_ACE_Common_N">
|
||||
<English>N</English>
|
||||
<German>N</German>
|
||||
<Spanish>N</Spanish>
|
||||
<Polish>N</Polish>
|
||||
<Czech>S</Czech>
|
||||
<French>N</French>
|
||||
<Russian>С</Russian>
|
||||
<Portuguese>N</Portuguese>
|
||||
<Hungarian>É</Hungarian>
|
||||
<Italian>N</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NNE">
|
||||
<English>NNE</English>
|
||||
<German>NNO</German>
|
||||
<Spanish>NNE</Spanish>
|
||||
<Polish>NNE</Polish>
|
||||
<Czech>SSV</Czech>
|
||||
<French>NNE</French>
|
||||
<Russian>ССВ</Russian>
|
||||
<Portuguese>NNE</Portuguese>
|
||||
<Hungarian>ÉÉK</Hungarian>
|
||||
<Italian>NNE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NE">
|
||||
<English>NE</English>
|
||||
<German>NO</German>
|
||||
<Spanish>NE</Spanish>
|
||||
<Polish>NE</Polish>
|
||||
<Czech>SV</Czech>
|
||||
<French>NE</French>
|
||||
<Russian>СВ</Russian>
|
||||
<Portuguese>NE</Portuguese>
|
||||
<Hungarian>ÉK</Hungarian>
|
||||
<Italian>NE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ENE">
|
||||
<English>ENE</English>
|
||||
<German>ONO</German>
|
||||
<Spanish>ENE</Spanish>
|
||||
<Polish>ENE</Polish>
|
||||
<Czech>VSV</Czech>
|
||||
<French>ENE</French>
|
||||
<Russian>ВСВ</Russian>
|
||||
<Portuguese>LNE</Portuguese>
|
||||
<Hungarian>KÉK</Hungarian>
|
||||
<Italian>ENE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_E">
|
||||
<English>E</English>
|
||||
<German>O</German>
|
||||
<Spanish>E</Spanish>
|
||||
<Polish>E</Polish>
|
||||
<Czech>V</Czech>
|
||||
<French>E</French>
|
||||
<Russian>В</Russian>
|
||||
<Portuguese>L</Portuguese>
|
||||
<Hungarian>K</Hungarian>
|
||||
<Italian>E</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ESE">
|
||||
<English>ESE</English>
|
||||
<German>OSO</German>
|
||||
<Spanish>ESE</Spanish>
|
||||
<Polish>ESE</Polish>
|
||||
<Czech>VJV</Czech>
|
||||
<French>ESE</French>
|
||||
<Russian>ВЮВ</Russian>
|
||||
<Portuguese>LSE</Portuguese>
|
||||
<Hungarian>KDK</Hungarian>
|
||||
<Italian>ESE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SE">
|
||||
<English>SE</English>
|
||||
<German>SO</German>
|
||||
<Spanish>SE</Spanish>
|
||||
<Polish>SE</Polish>
|
||||
<Czech>JV</Czech>
|
||||
<French>SE</French>
|
||||
<Russian>ЮВ</Russian>
|
||||
<Portuguese>SE</Portuguese>
|
||||
<Hungarian>DK</Hungarian>
|
||||
<Italian>SE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SSE">
|
||||
<English>SSE</English>
|
||||
<German>SSO</German>
|
||||
<Spanish>SSE</Spanish>
|
||||
<Polish>SSE</Polish>
|
||||
<Czech>JJV</Czech>
|
||||
<French>SSE</French>
|
||||
<Russian>ЮЮВ</Russian>
|
||||
<Portuguese>SSE</Portuguese>
|
||||
<Hungarian>DDK</Hungarian>
|
||||
<Italian>SSE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_S">
|
||||
<English>S</English>
|
||||
<German>S</German>
|
||||
<Spanish>S</Spanish>
|
||||
<Polish>S</Polish>
|
||||
<Czech>J</Czech>
|
||||
<French>S</French>
|
||||
<Russian>Ю</Russian>
|
||||
<Portuguese>S</Portuguese>
|
||||
<Hungarian>D</Hungarian>
|
||||
<Italian>S</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SSW">
|
||||
<English>SSW</English>
|
||||
<German>SSW</German>
|
||||
<Spanish>SSO</Spanish>
|
||||
<Polish>SSW</Polish>
|
||||
<Czech>JJZ</Czech>
|
||||
<French>SSO</French>
|
||||
<Russian>ЮЮЗ</Russian>
|
||||
<Portuguese>SSO</Portuguese>
|
||||
<Hungarian>DDNy</Hungarian>
|
||||
<Italian>SSO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SW">
|
||||
<English>SW</English>
|
||||
<German>SW</German>
|
||||
<Spanish>SO</Spanish>
|
||||
<Polish>SW</Polish>
|
||||
<Czech>JZ</Czech>
|
||||
<French>SO</French>
|
||||
<Russian>ЮЗ</Russian>
|
||||
<Portuguese>SO</Portuguese>
|
||||
<Hungarian>DNy</Hungarian>
|
||||
<Italian>SO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_WSW">
|
||||
<English>WSW</English>
|
||||
<German>WSW</German>
|
||||
<Spanish>OSO</Spanish>
|
||||
<Polish>WSW</Polish>
|
||||
<Czech>ZJZ</Czech>
|
||||
<French>OSO</French>
|
||||
<Russian>ЗЮЗ</Russian>
|
||||
<Portuguese>OSO</Portuguese>
|
||||
<Hungarian>NyDNy</Hungarian>
|
||||
<Italian>OSO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_W">
|
||||
<English>W</English>
|
||||
<German>W</German>
|
||||
<Spanish>O</Spanish>
|
||||
<Polish>W</Polish>
|
||||
<Czech>Z</Czech>
|
||||
<French>O</French>
|
||||
<Russian>З</Russian>
|
||||
<Portuguese>O</Portuguese>
|
||||
<Hungarian>Ny</Hungarian>
|
||||
<Italian>O</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_WNW">
|
||||
<English>WNW</English>
|
||||
<German>WNW</German>
|
||||
<Spanish>ONO</Spanish>
|
||||
<Polish>WNW</Polish>
|
||||
<Czech>ZSZ</Czech>
|
||||
<French>ONO</French>
|
||||
<Russian>ЗСЗ</Russian>
|
||||
<Portuguese>ONO</Portuguese>
|
||||
<Hungarian>NyÉNy</Hungarian>
|
||||
<Italian>ONO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NW">
|
||||
<English>NW</English>
|
||||
<German>NW</German>
|
||||
<Spanish>NO</Spanish>
|
||||
<Polish>NW</Polish>
|
||||
<Czech>SZ</Czech>
|
||||
<French>NO</French>
|
||||
<Russian>СЗ</Russian>
|
||||
<Portuguese>NO</Portuguese>
|
||||
<Hungarian>ÉNy</Hungarian>
|
||||
<Italian>NO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NNW">
|
||||
<English>NNW</English>
|
||||
<German>NNW</German>
|
||||
<Spanish>NNO</Spanish>
|
||||
<Polish>NNW</Polish>
|
||||
<Czech>SSZ</Czech>
|
||||
<French>NNO</French>
|
||||
<Russian>ССЗ</Russian>
|
||||
<Portuguese>NNO</Portuguese>
|
||||
<Hungarian>ÉÉNy</Hungarian>
|
||||
<Italian>NNO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ActionAborted">
|
||||
<English>Action cancelled.</English>
|
||||
<German>Aktion abgebrochen.</German>
|
||||
<Spanish>Acción cancelada.</Spanish>
|
||||
<Polish>Przerwano czynność</Polish>
|
||||
<Czech>Akce přerušena</Czech>
|
||||
<French>Action annulée.</French>
|
||||
<Russian>Действие отменено.</Russian>
|
||||
<Portuguese>Ação cancelada.</Portuguese>
|
||||
<Hungarian>Művelet megszakítva.</Hungarian>
|
||||
<Italian>Azione cancellata.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_MiscItems">
|
||||
<English>[ACE] Miscellaneous Items</English>
|
||||
<German>[ACE] Verschiedenes</German>
|
||||
<Spanish>[ACE] Objetos varios</Spanish>
|
||||
<Polish>[ACE] Różne przedmioty</Polish>
|
||||
<Czech>[ACE] Ostatní předměty</Czech>
|
||||
<French>[ACE] Objets divers</French>
|
||||
<Russian>[ACE] Различные предметы</Russian>
|
||||
<Portuguese>[ACE] Itens diversos</Portuguese>
|
||||
<Hungarian>[ACE] Egyéb tárgyak</Hungarian>
|
||||
<Italian>[ACE] Oggetti vari</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_EnableNumberHotkeys">
|
||||
<English>Disable Command Menu</English>
|
||||
<German>Befehlsmenü ausschalten</German>
|
||||
<Spanish>Desactivar menú de mando</Spanish>
|
||||
<Polish>Wyłącz menu dowodzenia</Polish>
|
||||
<Czech>Vypnout velící menu</Czech>
|
||||
<French>Désactiver Menu Commande</French>
|
||||
<Russian>Выключить командное меню</Russian>
|
||||
<Hungarian>Parancsnoki menü kikapcsolása</Hungarian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Unknown">
|
||||
<English>Unknown</English>
|
||||
<German>Unbekannt</German>
|
||||
<Spanish>Desconocido</Spanish>
|
||||
<Polish>Nieznany</Polish>
|
||||
<Czech>Neznámý</Czech>
|
||||
<Russian>Неизвестно</Russian>
|
||||
<Hungarian>Ismeretlen</Hungarian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NoVoice">
|
||||
<English>No Voice</English>
|
||||
<German>Keine Stimme</German>
|
||||
<Spanish>Sin voz</Spanish>
|
||||
<Polish>Brak głosu</Polish>
|
||||
<Czech>Žádný hlas</Czech>
|
||||
<Russian>Без голоса</Russian>
|
||||
<Hungarian>Nincs hang</Hungarian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ACTION_ACCEPT_REQUEST_KEY_TITLE">
|
||||
<Polish>Akceptuj prośby</Polish>
|
||||
<Spanish>Aceptar Peticiones</Spanish>
|
||||
<English>Accept Requests</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TITLE">
|
||||
<Polish>Ignoruj prośby</Polish>
|
||||
<Spanish>Rechazar Peticiones</Spanish>
|
||||
<English>Decline Requests</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ACTION_ACCEPT_REQUEST_KEY_TOOLTIP">
|
||||
<Polish>Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.</Polish>
|
||||
<Spanish>Acepta Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.</Spanish>
|
||||
<English>Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions.</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TOOLTIP">
|
||||
<Polish>Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.</Polish>
|
||||
<Spanish>Rechazar Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.</Spanish>
|
||||
<English>Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions.</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingFeedbackIconsName">
|
||||
<English>Feedback icons</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingFeedbackIconsDesc">
|
||||
<English>Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed.</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingProgressbarLocationName">
|
||||
<English>Progress bar location</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingProgressbarLocationDesc">
|
||||
<English>Set the desired location of the progress bar on your screen.</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingDisplayTextColorName">
|
||||
<English>Hint Background color</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingDisplayTextColorDesc">
|
||||
<English>The color of the background from the ACE hints.</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorName">
|
||||
<English>Hint text font color</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorDesc">
|
||||
<English>The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified.</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_bananaDisplayName">
|
||||
<English>Banana</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_bananaDescr">
|
||||
<English>A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa.</English>
|
||||
</Key>
|
||||
</Package>
|
||||
<Package name="Common">
|
||||
<Key ID="STR_ACE_Common_ACETeam">
|
||||
<English>ACE-Team</English>
|
||||
<German>ACE-Team</German>
|
||||
<Spanish>ACE-Team</Spanish>
|
||||
<Polish>ACE-Team</Polish>
|
||||
<Czech>ACE-Team</Czech>
|
||||
<French>ACE-Team</French>
|
||||
<Russian>Команда ACE</Russian>
|
||||
<Portuguese>ACE-Team</Portuguese>
|
||||
<Hungarian>ACE-Team</Hungarian>
|
||||
<Italian>ACE-Team</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Save">
|
||||
<English>Save</English>
|
||||
<German>Speichern</German>
|
||||
<Spanish>Guardar</Spanish>
|
||||
<Polish>Zapisz</Polish>
|
||||
<Czech>Uložit</Czech>
|
||||
<French>Sauvegarder</French>
|
||||
<Russian>Сохранить</Russian>
|
||||
<Portuguese>Salvar</Portuguese>
|
||||
<Hungarian>Mentés</Hungarian>
|
||||
<Italian>Salva</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Cancel">
|
||||
<English>Cancel</English>
|
||||
<German>Abbrechen</German>
|
||||
<Spanish>Cancelar</Spanish>
|
||||
<Polish>Anuluj</Polish>
|
||||
<Czech>Zrušit</Czech>
|
||||
<French>Annuler</French>
|
||||
<Russian>Отмена</Russian>
|
||||
<Portuguese>Cancelar</Portuguese>
|
||||
<Hungarian>Mégse</Hungarian>
|
||||
<Italian>Annulla</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Options">
|
||||
<English>ACE Options</English>
|
||||
<German>ACE Optionen</German>
|
||||
<Spanish>Opciones ACE</Spanish>
|
||||
<Polish>Opcje ACE</Polish>
|
||||
<Czech>ACE Nastavení</Czech>
|
||||
<French>ACE Options</French>
|
||||
<Russian>ACE Настройки</Russian>
|
||||
<Portuguese>Opções do ACE</Portuguese>
|
||||
<Hungarian>ACE Opciók</Hungarian>
|
||||
<Italian>Opzioni ACE</Italian>
|
||||
</Key>
|
||||
<!-- These are cardinal directions, in case you didn't guess. -->
|
||||
<Key ID="STR_ACE_Common_N">
|
||||
<English>N</English>
|
||||
<German>N</German>
|
||||
<Spanish>N</Spanish>
|
||||
<Polish>N</Polish>
|
||||
<Czech>S</Czech>
|
||||
<French>N</French>
|
||||
<Russian>С</Russian>
|
||||
<Portuguese>N</Portuguese>
|
||||
<Hungarian>É</Hungarian>
|
||||
<Italian>N</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NNE">
|
||||
<English>NNE</English>
|
||||
<German>NNO</German>
|
||||
<Spanish>NNE</Spanish>
|
||||
<Polish>NNE</Polish>
|
||||
<Czech>SSV</Czech>
|
||||
<French>NNE</French>
|
||||
<Russian>ССВ</Russian>
|
||||
<Portuguese>NNE</Portuguese>
|
||||
<Hungarian>ÉÉK</Hungarian>
|
||||
<Italian>NNE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NE">
|
||||
<English>NE</English>
|
||||
<German>NO</German>
|
||||
<Spanish>NE</Spanish>
|
||||
<Polish>NE</Polish>
|
||||
<Czech>SV</Czech>
|
||||
<French>NE</French>
|
||||
<Russian>СВ</Russian>
|
||||
<Portuguese>NE</Portuguese>
|
||||
<Hungarian>ÉK</Hungarian>
|
||||
<Italian>NE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ENE">
|
||||
<English>ENE</English>
|
||||
<German>ONO</German>
|
||||
<Spanish>ENE</Spanish>
|
||||
<Polish>ENE</Polish>
|
||||
<Czech>VSV</Czech>
|
||||
<French>ENE</French>
|
||||
<Russian>ВСВ</Russian>
|
||||
<Portuguese>LNE</Portuguese>
|
||||
<Hungarian>KÉK</Hungarian>
|
||||
<Italian>ENE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_E">
|
||||
<English>E</English>
|
||||
<German>O</German>
|
||||
<Spanish>E</Spanish>
|
||||
<Polish>E</Polish>
|
||||
<Czech>V</Czech>
|
||||
<French>E</French>
|
||||
<Russian>В</Russian>
|
||||
<Portuguese>L</Portuguese>
|
||||
<Hungarian>K</Hungarian>
|
||||
<Italian>E</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ESE">
|
||||
<English>ESE</English>
|
||||
<German>OSO</German>
|
||||
<Spanish>ESE</Spanish>
|
||||
<Polish>ESE</Polish>
|
||||
<Czech>VJV</Czech>
|
||||
<French>ESE</French>
|
||||
<Russian>ВЮВ</Russian>
|
||||
<Portuguese>LSE</Portuguese>
|
||||
<Hungarian>KDK</Hungarian>
|
||||
<Italian>ESE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SE">
|
||||
<English>SE</English>
|
||||
<German>SO</German>
|
||||
<Spanish>SE</Spanish>
|
||||
<Polish>SE</Polish>
|
||||
<Czech>JV</Czech>
|
||||
<French>SE</French>
|
||||
<Russian>ЮВ</Russian>
|
||||
<Portuguese>SE</Portuguese>
|
||||
<Hungarian>DK</Hungarian>
|
||||
<Italian>SE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SSE">
|
||||
<English>SSE</English>
|
||||
<German>SSO</German>
|
||||
<Spanish>SSE</Spanish>
|
||||
<Polish>SSE</Polish>
|
||||
<Czech>JJV</Czech>
|
||||
<French>SSE</French>
|
||||
<Russian>ЮЮВ</Russian>
|
||||
<Portuguese>SSE</Portuguese>
|
||||
<Hungarian>DDK</Hungarian>
|
||||
<Italian>SSE</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_S">
|
||||
<English>S</English>
|
||||
<German>S</German>
|
||||
<Spanish>S</Spanish>
|
||||
<Polish>S</Polish>
|
||||
<Czech>J</Czech>
|
||||
<French>S</French>
|
||||
<Russian>Ю</Russian>
|
||||
<Portuguese>S</Portuguese>
|
||||
<Hungarian>D</Hungarian>
|
||||
<Italian>S</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SSW">
|
||||
<English>SSW</English>
|
||||
<German>SSW</German>
|
||||
<Spanish>SSO</Spanish>
|
||||
<Polish>SSW</Polish>
|
||||
<Czech>JJZ</Czech>
|
||||
<French>SSO</French>
|
||||
<Russian>ЮЮЗ</Russian>
|
||||
<Portuguese>SSO</Portuguese>
|
||||
<Hungarian>DDNy</Hungarian>
|
||||
<Italian>SSO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SW">
|
||||
<English>SW</English>
|
||||
<German>SW</German>
|
||||
<Spanish>SO</Spanish>
|
||||
<Polish>SW</Polish>
|
||||
<Czech>JZ</Czech>
|
||||
<French>SO</French>
|
||||
<Russian>ЮЗ</Russian>
|
||||
<Portuguese>SO</Portuguese>
|
||||
<Hungarian>DNy</Hungarian>
|
||||
<Italian>SO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_WSW">
|
||||
<English>WSW</English>
|
||||
<German>WSW</German>
|
||||
<Spanish>OSO</Spanish>
|
||||
<Polish>WSW</Polish>
|
||||
<Czech>ZJZ</Czech>
|
||||
<French>OSO</French>
|
||||
<Russian>ЗЮЗ</Russian>
|
||||
<Portuguese>OSO</Portuguese>
|
||||
<Hungarian>NyDNy</Hungarian>
|
||||
<Italian>OSO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_W">
|
||||
<English>W</English>
|
||||
<German>W</German>
|
||||
<Spanish>O</Spanish>
|
||||
<Polish>W</Polish>
|
||||
<Czech>Z</Czech>
|
||||
<French>O</French>
|
||||
<Russian>З</Russian>
|
||||
<Portuguese>O</Portuguese>
|
||||
<Hungarian>Ny</Hungarian>
|
||||
<Italian>O</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_WNW">
|
||||
<English>WNW</English>
|
||||
<German>WNW</German>
|
||||
<Spanish>ONO</Spanish>
|
||||
<Polish>WNW</Polish>
|
||||
<Czech>ZSZ</Czech>
|
||||
<French>ONO</French>
|
||||
<Russian>ЗСЗ</Russian>
|
||||
<Portuguese>ONO</Portuguese>
|
||||
<Hungarian>NyÉNy</Hungarian>
|
||||
<Italian>ONO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NW">
|
||||
<English>NW</English>
|
||||
<German>NW</German>
|
||||
<Spanish>NO</Spanish>
|
||||
<Polish>NW</Polish>
|
||||
<Czech>SZ</Czech>
|
||||
<French>NO</French>
|
||||
<Russian>СЗ</Russian>
|
||||
<Portuguese>NO</Portuguese>
|
||||
<Hungarian>ÉNy</Hungarian>
|
||||
<Italian>NO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NNW">
|
||||
<English>NNW</English>
|
||||
<German>NNW</German>
|
||||
<Spanish>NNO</Spanish>
|
||||
<Polish>NNW</Polish>
|
||||
<Czech>SSZ</Czech>
|
||||
<French>NNO</French>
|
||||
<Russian>ССЗ</Russian>
|
||||
<Portuguese>NNO</Portuguese>
|
||||
<Hungarian>ÉÉNy</Hungarian>
|
||||
<Italian>NNO</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ActionAborted">
|
||||
<English>Action cancelled.</English>
|
||||
<German>Aktion abgebrochen.</German>
|
||||
<Spanish>Acción cancelada.</Spanish>
|
||||
<Polish>Przerwano czynność</Polish>
|
||||
<Czech>Akce přerušena</Czech>
|
||||
<French>Action annulée.</French>
|
||||
<Russian>Действие отменено.</Russian>
|
||||
<Portuguese>Ação cancelada.</Portuguese>
|
||||
<Hungarian>Művelet megszakítva.</Hungarian>
|
||||
<Italian>Azione cancellata.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_MiscItems">
|
||||
<English>[ACE] Miscellaneous Items</English>
|
||||
<German>[ACE] Verschiedenes</German>
|
||||
<Spanish>[ACE] Objetos varios</Spanish>
|
||||
<Polish>[ACE] Różne przedmioty</Polish>
|
||||
<Czech>[ACE] Ostatní předměty</Czech>
|
||||
<French>[ACE] Objets divers</French>
|
||||
<Russian>[ACE] Различные предметы</Russian>
|
||||
<Portuguese>[ACE] Itens diversos</Portuguese>
|
||||
<Hungarian>[ACE] Egyéb tárgyak</Hungarian>
|
||||
<Italian>[ACE] Oggetti vari</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_EnableNumberHotkeys">
|
||||
<English>Disable Command Menu</English>
|
||||
<German>Befehlsmenü ausschalten</German>
|
||||
<Spanish>Desactivar menú de mando</Spanish>
|
||||
<Polish>Wyłącz menu dowodzenia</Polish>
|
||||
<Czech>Vypnout velící menu</Czech>
|
||||
<French>Désactiver Menu Commande</French>
|
||||
<Russian>Выключить командное меню</Russian>
|
||||
<Hungarian>Parancsnoki menü kikapcsolása</Hungarian>
|
||||
<Italian>Disabilita Menù di comando</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Unknown">
|
||||
<English>Unknown</English>
|
||||
<German>Unbekannt</German>
|
||||
<Spanish>Desconocido</Spanish>
|
||||
<Polish>Nieznany</Polish>
|
||||
<Czech>Neznámý</Czech>
|
||||
<Russian>Неизвестно</Russian>
|
||||
<Hungarian>Ismeretlen</Hungarian>
|
||||
<Italian>Sconosciuto</Italian>
|
||||
<French>Inconnu</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_NoVoice">
|
||||
<English>No Voice</English>
|
||||
<German>Keine Stimme</German>
|
||||
<Spanish>Sin voz</Spanish>
|
||||
<Polish>Brak głosu</Polish>
|
||||
<Czech>Žádný hlas</Czech>
|
||||
<Russian>Без голоса</Russian>
|
||||
<Hungarian>Nincs hang</Hungarian>
|
||||
<Italian>Senza voce</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ACTION_ACCEPT_REQUEST_KEY_TITLE">
|
||||
<English>Accept Requests</English>
|
||||
<German>Anfrage akzeptieren</German>
|
||||
<Spanish>Aceptar peticiones</Spanish>
|
||||
<Polish>Akceptuj prośby</Polish>
|
||||
<Italian>Accetta Richieste</Italian>
|
||||
<Russian>Подтвердить запросы</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TITLE">
|
||||
<English>Decline Requests</English>
|
||||
<German>Anfrage ablehnen</German>
|
||||
<Spanish>Rechazar peticiones</Spanish>
|
||||
<Polish>Ignoruj prośby</Polish>
|
||||
<Italian>Rifiuta Richieste</Italian>
|
||||
<Russian>Отклонить запросы</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ACTION_ACCEPT_REQUEST_KEY_TOOLTIP">
|
||||
<English>Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions.</English>
|
||||
<German>Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. </German>
|
||||
<Spanish>Acepta peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.</Spanish>
|
||||
<Polish>Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.</Polish>
|
||||
<Italian>Accetta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni.</Italian>
|
||||
<Russian>Подтвердить запросы, посланные другими игроками. Это могут быть просьбы о передаче снаряжения или выполнении определённых действий.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TOOLTIP">
|
||||
<English>Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions.</English>
|
||||
<German>Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. </German>
|
||||
<Spanish>Rechazar peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.</Spanish>
|
||||
<Polish>Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.</Polish>
|
||||
<Italian>Rifiuta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni.</Italian>
|
||||
<Russian>Отклонить запросы, посланные другими игроками. Это могут быть просьбы о передаче снаряжения или выполнении определённых действий.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingFeedbackIconsName">
|
||||
<English>Feedback icons</English>
|
||||
<German>Rückmeldungssymbole</German>
|
||||
<Spanish>Iconos de respuesta</Spanish>
|
||||
<Italian>Icone informative</Italian>
|
||||
<Russian>Иконки состояний</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingFeedbackIconsDesc">
|
||||
<English>Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed.</English>
|
||||
<German>Wähle die Position der Rückmeldungssymbole, oder deaktiviere sie. Diese Symbole stellen eine zusätzliche Rückmeldung über die Lage und Handlungen deines Soldaten dar.</German>
|
||||
<Spanish>Seleccionar la posición de o desactivar los íconos de respuesta en la pantalla. Estos iconos se mostrarán para proporcionar información adicional sobre el estado de su personaje y las acciones a realizar.</Spanish>
|
||||
<Italian>Seleziona la posizione o disabilita le icone informative sul tuo schermo. Queste saranno mostrate per fornire informazioni aggiuntive sullo stato o sulle azioni del giocatore.</Italian>
|
||||
<Russian>Выберите положение или или отключите отображение иконок состояний на Вашем экране. Эти иконки предоставят дополнительную информацию о состоянии персонажа и выполняемых действиях.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingProgressbarLocationName">
|
||||
<English>Progress bar location</English>
|
||||
<German>Position der Fortschrittsanzeige</German>
|
||||
<Spanish>Ubicación de la barra de progreso</Spanish>
|
||||
<Italian>Posizione della barra di avanzamento</Italian>
|
||||
<Russian>Положение прогресс-бара</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingProgressbarLocationDesc">
|
||||
<English>Set the desired location of the progress bar on your screen.</English>
|
||||
<German>Setze die gewünschte Position der Fortschrittsanzeige fest</German>
|
||||
<Spanish>Seleccionar la ubicación deseada de la barra de progreso en tu pantalla</Spanish>
|
||||
<Italian>Modifica la posizione su schermo della barra di avanzamento.</Italian>
|
||||
<Russian>Установите желаемое положение строки состояния на экране.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingDisplayTextColorName">
|
||||
<English>Hint Background color</English>
|
||||
<German>Hintergrundfarbe der Hinweise</German>
|
||||
<Spanish>Color de fondo de las notificaciones</Spanish>
|
||||
<Italian>Sfondo dei Suggerimenti</Italian>
|
||||
<Russian>Цвет фона всплывающих подсказок</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingDisplayTextColorDesc">
|
||||
<English>The color of the background from the ACE hints.</English>
|
||||
<German>Die Hintergrundfarbe der ACE-Hinweise.</German>
|
||||
<Spanish>El color de fondo de las notificaciones del ACE</Spanish>
|
||||
<Italian>Il colore di sfondo dei suggerimenti dell'ACE.</Italian>
|
||||
<Russian>Цвет фона всплывающий подсказок АСЕ.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorName">
|
||||
<English>Hint text font color</English>
|
||||
<German>Textfarbe der Hinweise</German>
|
||||
<Spanish>Color del texto de las notificaciones</Spanish>
|
||||
<Italian>Testo dei Suggerimenti</Italian>
|
||||
<Russian>Цвет шрифта всплывающих подсказок</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorDesc">
|
||||
<English>The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified.</English>
|
||||
<German>Wähle die Textfarbe für ACE-Hinweise. </German>
|
||||
<Spanish>El color del texto de las notificaciones del ACE. Este es el color predeterminado para todo el texto que se muestra a través del sistema de notificaciones del ACE, si el texto de notificación no tiene otro color especificado.</Spanish>
|
||||
<Italian>Il colore del testo dei suggerimenti dell'ACE. Questo è il colore standard per tutti i caratteri mostrati dal sistema di suggerimenti dell'ACE, se questo non è altrimenti specificato.</Italian>
|
||||
<Russian>Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_bananaDisplayName">
|
||||
<English>Banana</English>
|
||||
<German>Banane</German>
|
||||
<Spanish>Banana</Spanish>
|
||||
<Italian>Banana</Italian>
|
||||
<Russian>Банан</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_bananaDescr">
|
||||
<English>A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa.</English>
|
||||
<German>Die Banane ist eine essbare Frucht, biologisch betrachtet jedoch eine Beere. Sie wächst an unterschiedlichen, krautartigen Gewächsen aus der Familie der Musa.</German>
|
||||
<Spanish>Una banana es una fruta comestible, botanicamente una baya, producida por varios tipos de grandes plantas herbáceas del género Musa.</Spanish>
|
||||
<Italian>Una banana è un frutto commestibile, nello specifico una bacca cuoiosa, prodotto da un gran numero di grandi pianti erbacee dotate di fiori, della famiglia delle Musaceae.</Italian>
|
||||
<Russian>Банан - это съедобный фрукт, ягода с ботанической точки зрения, произрастающий на нескольких видах травянистых растениях рода Банан (Musa).</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
1
addons/disarming/$PBOPREFIX$
Normal file
1
addons/disarming/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\disarming
|
11
addons/disarming/CfgEventHandlers.hpp
Normal file
11
addons/disarming/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
17
addons/disarming/CfgVehicles.hpp
Normal file
17
addons/disarming/CfgVehicles.hpp
Normal file
@ -0,0 +1,17 @@
|
||||
class CfgVehicles {
|
||||
class Man;
|
||||
class CAManBase: Man {
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
class ACE_DisarmInventory {
|
||||
displayName = "$STR_ACE_Disarming_OpenInventory";
|
||||
distance = 3.5;
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPlayerDisarmUnit));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog));
|
||||
icon = "\a3\Modules_F_Curator\Data\portraitRespawnInventory_ca.paa";
|
||||
exceptions[] = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
14
addons/disarming/CfgWeapons.hpp
Normal file
14
addons/disarming/CfgWeapons.hpp
Normal file
@ -0,0 +1,14 @@
|
||||
class CfgWeapons {
|
||||
class ACE_ItemCore;
|
||||
class InventoryItem_Base_F;
|
||||
|
||||
class ACE_DebugPotato: ACE_ItemCore {
|
||||
displayName = "ACE Potato (debug)";
|
||||
descriptionShort = "Glorious Potato<br/>If you see this in game it means someone fucked up";
|
||||
picture = QUOTE(PATHTOF(UI\potato_ca.paa));
|
||||
scope = 1;
|
||||
class ItemInfo: InventoryItem_Base_F {
|
||||
mass = 1;
|
||||
};
|
||||
};
|
||||
};
|
11
addons/disarming/README.md
Normal file
11
addons/disarming/README.md
Normal file
@ -0,0 +1,11 @@
|
||||
ace_disarming
|
||||
============
|
||||
|
||||
Adds ability to make units drop items/weapons/magazines.
|
||||
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [PabstMirror](https://github.com/PabstMirror)
|
BIN
addons/disarming/UI/potato_ca.paa
Normal file
BIN
addons/disarming/UI/potato_ca.paa
Normal file
Binary file not shown.
4
addons/disarming/XEH_postInit.sqf
Normal file
4
addons/disarming/XEH_postInit.sqf
Normal file
@ -0,0 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
["DisarmDropItems", {_this call FUNC(eventTargetStart)}] call EFUNC(common,addEventHandler);
|
||||
["DisarmDebugCallback", {_this call FUNC(eventCallerFinish)}] call EFUNC(common,addEventHandler);
|
17
addons/disarming/XEH_preInit.sqf
Normal file
17
addons/disarming/XEH_preInit.sqf
Normal file
@ -0,0 +1,17 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(canBeDisarmed);
|
||||
PREP(canPlayerDisarmUnit);
|
||||
PREP(disarmDropItems);
|
||||
PREP(eventCallerFinish);
|
||||
PREP(eventTargetFinish);
|
||||
PREP(eventTargetStart);
|
||||
PREP(getAllGearContainer);
|
||||
PREP(getAllGearUnit);
|
||||
PREP(openDisarmDialog);
|
||||
PREP(showItemsInListbox);
|
||||
PREP(verifyMagazinesMoved);
|
||||
|
||||
ADDON = true;
|
19
addons/disarming/config.cpp
Normal file
19
addons/disarming/config.cpp
Normal file
@ -0,0 +1,19 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {"ACE_DebugPotato"};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ACE_Interaction"};
|
||||
author[] = {"PabstMirror"};
|
||||
authorUrl = "https://github.com/PabstMirror/";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
|
||||
#include "gui_disarm.hpp"
|
34
addons/disarming/functions/fnc_canBeDisarmed.sqf
Normal file
34
addons/disarming/functions/fnc_canBeDisarmed.sqf
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Checks the conditions for being able to disarm a unit
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Target <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Can Be Disarmed <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [cursorTarget] call ace_disarming_fnc_canBeDisarmed
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_target);
|
||||
|
||||
//Check animationState for putDown anim
|
||||
//This ensures the unit doesn't have to actualy do any animation to drop something
|
||||
//This should always be true for the 3 possible status effects that allow disarming
|
||||
_animationStateCfgMoves = getText (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _target) >> "actions");
|
||||
if (_animationStateCfgMoves == "") exitWith {false};
|
||||
_putDownAnim = getText (configFile >> "CfgMovesBasic" >> "Actions" >> _animationStateCfgMoves >> "PutDown");
|
||||
if (_putDownAnim != "") exitWith {false};
|
||||
|
||||
|
||||
(alive _target) &&
|
||||
{(abs (speed _target)) < 1} &&
|
||||
{(vehicle _target) == _target} &&
|
||||
{(_target getVariable ["ACE_isUnconscious", false]) ||
|
||||
{_target getVariable [QEGVAR(captives,isHandcuffed), false]} ||
|
||||
{_target getVariable [QEGVAR(captives,isSurrendering), false]}}
|
22
addons/disarming/functions/fnc_canPlayerDisarmUnit.sqf
Normal file
22
addons/disarming/functions/fnc_canPlayerDisarmUnit.sqf
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Checks the conditions for being able to disarm a unit
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Player <OBJECT>
|
||||
* 1: Target <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Can Be Disarm Target <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [player, cursorTarget] call ace_disarming_fnc_canPlayerDisarmUnit
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_2(_player,_target);
|
||||
|
||||
([_target] call FUNC(canBeDisarmed)) &&
|
||||
{([_player, _target, []] call EFUNC(common,canInteractWith))}
|
252
addons/disarming/functions/fnc_disarmDropItems.sqf
Normal file
252
addons/disarming/functions/fnc_disarmDropItems.sqf
Normal file
@ -0,0 +1,252 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Makes a unit drop items
|
||||
*
|
||||
* Arguments:
|
||||
* 0: caller (player) <OBJECT>
|
||||
* 1: target <OBJECT>
|
||||
* 2: classnamess <ARRAY>
|
||||
* 3: Do Not Drop Ammo <BOOL><OPTIONAL>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [player, cursorTarget, ["ace_bandage"]] call ace_disarming_fnc_disarmDropItems
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define TIME_MAX_WAIT 5
|
||||
|
||||
PARAMS_3(_caller,_target,_listOfItemsToRemove);
|
||||
DEFAULT_PARAM(3,_doNotDropAmmo,false); //By default units drop all weapon mags when dropping a weapon
|
||||
|
||||
_fncSumArray = {
|
||||
_return = 0;
|
||||
{_return = _return + _x;} forEach (_this select 0);
|
||||
_return
|
||||
};
|
||||
|
||||
//Sanity Checks
|
||||
if (!([_target] call FUNC(canBeDisarmed))) exitWith {
|
||||
[_caller, _target, "Debug: Cannot disarm target"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
if (_doNotDropAmmo && {({_x in _listOfItemsToRemove} count (magazines _target)) > 0}) exitWith {
|
||||
[_caller, _target, "Debug: Trying to drop magazine with _doNotDropAmmo flag"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
|
||||
_holder = objNull;
|
||||
|
||||
//If not dropping ammo, don't use an existing container
|
||||
if (!_doNotDropAmmo) then {
|
||||
{
|
||||
if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith {
|
||||
_holder = _x;
|
||||
};
|
||||
} forEach ((getpos _target) nearObjects [DISARM_CONTAINER, 3]);
|
||||
};
|
||||
|
||||
//Create a new weapon holder
|
||||
if (isNull _holder) then {
|
||||
_dropPos = _target modelToWorld [0.4, 0.75, 0]; //offset someone unconscious isn't lying over it
|
||||
_dropPos set [2, ((getPosASL _target) select 2)];
|
||||
_holder = createVehicle [DISARM_CONTAINER, _dropPos, [], 0, "CAN_COLLIDE"];
|
||||
_holder setPosASL _dropPos;
|
||||
_holder setVariable [QGVAR(disarmUnit), _target, true];
|
||||
};
|
||||
|
||||
//Verify holder created
|
||||
if (isNull _holder) exitWith {
|
||||
[_caller, _target, "Debug: Null Holder"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
//Make sure only one drop operation at a time (using PFEH system as a queue)
|
||||
if (_holder getVariable [QGVAR(holderInUse), false]) exitWith {
|
||||
[{
|
||||
_this call FUNC(disarmDropItems);
|
||||
}, _this, 0, 0] call EFUNC(common,waitAndExecute);
|
||||
};
|
||||
_holder setVariable [QGVAR(holderInUse), true];
|
||||
|
||||
|
||||
//Remove Magazines
|
||||
_targetMagazinesStart = magazinesAmmo _target;
|
||||
_holderMagazinesStart = magazinesAmmoCargo _holder;
|
||||
|
||||
{
|
||||
EXPLODE_2_PVT(_x,_xClassname,_xAmmo);
|
||||
if ((_xClassname in _listOfItemsToRemove) && {!(_xClassname in UNIQUE_MAGAZINES)}) then {
|
||||
_holder addMagazineAmmoCargo [_xClassname, 1, _xAmmo];
|
||||
_target removeMagazine _xClassname;
|
||||
};
|
||||
} forEach _targetMagazinesStart;
|
||||
|
||||
_targetMagazinesEnd = magazinesAmmo _target;
|
||||
_holderMagazinesEnd = magazinesAmmoCargo _holder;
|
||||
|
||||
//Verify Mags dropped from unit:
|
||||
if ( ({((_x select 0) in _listOfItemsToRemove) && {!((_x select 0) in UNIQUE_MAGAZINES)}} count _targetMagazinesEnd) != 0) exitWith {
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Didn't Remove Magazines"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
//Verify holder has mags unit had
|
||||
if (!([_targetMagazinesStart, _targetMagazinesEnd, _holderMagazinesStart, _holderMagazinesEnd] call FUNC(verifyMagazinesMoved))) then {
|
||||
ERR = [_targetMagazinesStart, _targetMagazinesEnd, _holderMagazinesStart, _holderMagazinesEnd];
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Crate Magazines not in holder"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
|
||||
//Remove Items, Assigned Items and NVG
|
||||
_holderItemsStart = getitemCargo _holder;
|
||||
_targetItemsStart = (assignedItems _target) + (items _target);
|
||||
if ((headgear _target) != "") then {_targetItemsStart pushBack (headgear _target);};
|
||||
if ((goggles _target) != "") then {_targetItemsStart pushBack (goggles _target);};
|
||||
|
||||
|
||||
_addToCrateClassnames = [];
|
||||
_addToCrateCount = [];
|
||||
{
|
||||
if (_x in _listOfItemsToRemove) then {
|
||||
if (_x in (items _target)) then {
|
||||
_target removeItem _x;
|
||||
} else {
|
||||
_target unlinkItem _x;
|
||||
};
|
||||
_index = _addToCrateClassnames find _x;
|
||||
if (_index != -1) then {
|
||||
_addToCrateCount set [_index, ((_addToCrateCount select _index) + 1)];
|
||||
} else {
|
||||
_addToCrateClassnames pushBack _x;
|
||||
_addToCrateCount pushBack 1;
|
||||
};
|
||||
};
|
||||
} forEach _targetItemsStart;
|
||||
|
||||
//Add the items to the holder (combined to reduce addItemCargoGlobal calls)
|
||||
{
|
||||
_holder addItemCargoGlobal [(_addToCrateClassnames select _forEachIndex), (_addToCrateCount select _forEachIndex)];
|
||||
} forEach _addToCrateClassnames;
|
||||
|
||||
_holderItemsEnd = getitemCargo _holder;
|
||||
_targetItemsEnd = (assignedItems _target) + (items _target);
|
||||
if ((headgear _target) != "") then {_targetItemsEnd pushBack (headgear _target);};
|
||||
if ((goggles _target) != "") then {_targetItemsEnd pushBack (goggles _target);};
|
||||
|
||||
//Verify Items Added
|
||||
if (((count _targetItemsStart) - (count _targetItemsEnd)) != ([_addToCrateCount] call _fncSumArray)) exitWith {
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Items Not Removed From Player"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
if ((([_holderItemsEnd select 1] call _fncSumArray) - ([_holderItemsStart select 1] call _fncSumArray)) != ([_addToCrateCount] call _fncSumArray)) exitWith {
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Items Not Added to Holder"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
|
||||
|
||||
//If holder is still empty, it will be 'garbage collected' while we wait for the drop 'action' to take place
|
||||
//So add a dummy item and just remove at the end
|
||||
_holderIsEmpty = ([_holder] call FUNC(getAllGearContainer)) isEqualTo [[],[]];
|
||||
if (_holderIsEmpty) then {
|
||||
TRACE_1("Debug: adding dummy item to holder",_holder);
|
||||
_holder addItemCargoGlobal [DUMMY_ITEM, 1];
|
||||
};
|
||||
|
||||
//Start the PFEH to do the actions (which could take >1 frame)
|
||||
[{
|
||||
PARAMS_2(_args,_pfID);
|
||||
EXPLODE_8_PVT(_args,_caller,_target,_listOfItemsToRemove,_holder,_holderIsEmpty,_maxWaitTime,_doNotDropAmmo,_startingMagazines);
|
||||
|
||||
_needToRemoveWeapon = ({_x in _listOfItemsToRemove} count (weapons _target)) > 0;
|
||||
_needToRemoveMagazines = ({_x in _listOfItemsToRemove} count (magazines _target)) > 0;
|
||||
_needToRemoveBackpack = ((backPack _target) != "") && {(backPack _target) in _listOfItemsToRemove};
|
||||
_needToRemoveVest = ((vest _target) != "") && {(vest _target) in _listOfItemsToRemove};
|
||||
_needToRemoveUniform = ((uniform _target) != "") && {(uniform _target) in _listOfItemsToRemove};
|
||||
|
||||
if ((time < _maxWaitTime) && {[_target] call FUNC(canBeDisarmed)} && {_needToRemoveWeapon || _needToRemoveMagazines || _needToRemoveBackpack}) then {
|
||||
//action drop weapons (keeps loaded magazine and attachements)
|
||||
{
|
||||
if (_x in _listOfItemsToRemove) then {
|
||||
_target action ["DropWeapon", _holder, _x];
|
||||
};
|
||||
} forEach (weapons _target);
|
||||
|
||||
//Drop magazine (keeps unique ID)
|
||||
{
|
||||
if (_x in _listOfItemsToRemove) then {
|
||||
_target action ["DropMagazine", _holder, _x];
|
||||
};
|
||||
} forEach (magazines _target);
|
||||
|
||||
//Drop backpack (Keeps variables for ACRE/TFR)
|
||||
if (_needToRemoveBackpack) then {_target action ["DropBag", _holder, (backPack _target)];};
|
||||
} else {
|
||||
[_pfID] call CBA_fnc_removePerFrameHandler;
|
||||
|
||||
if (_doNotDropAmmo) then {
|
||||
_error = false;
|
||||
|
||||
_magsToPickup = +_startingMagazines;
|
||||
{
|
||||
_index = _magsToPickup find _x;
|
||||
if (_index == -1) exitWith {_error = true; ERROR("More mags than when we started?")};
|
||||
_magsToPickup deleteAt _index;
|
||||
} forEach (magazinesAmmo _target);
|
||||
|
||||
_magazinesInHolder = magazinesAmmoCargo _holder;
|
||||
{
|
||||
_index = _magazinesInHolder find _x;
|
||||
if (_index == -1) exitWith {_error = true; ERROR("Missing mag not in holder")};
|
||||
_magazinesInHolder deleteAt _index;
|
||||
} forEach _magsToPickup;
|
||||
|
||||
//No Error (all the ammo in the container is ammo we should have);
|
||||
if ((!_error) && {_magazinesInHolder isEqualTo []}) then {
|
||||
{
|
||||
_target addMagazine _x;
|
||||
} forEach (magazinesAmmoCargo _holder);
|
||||
clearMagazineCargoGlobal _holder;
|
||||
};
|
||||
};
|
||||
|
||||
//If we added a dummy item, remove it now
|
||||
if (_holderIsEmpty && {!((getItemCargo _holder) isEqualTo [[DUMMY_ITEM],[1]])}) exitWith {
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Holder should only have dummy item"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
if (_holderIsEmpty) then {
|
||||
TRACE_1("Debug: removing dummy item from holder",_holder);
|
||||
clearItemCargoGlobal _holder;
|
||||
};
|
||||
//Verify we didn't timeout waiting on drop action
|
||||
if (time >= _maxWaitTime) exitWith {
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Drop Actions Timeout"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
//If target lost disarm status:
|
||||
if (!([_target] call FUNC(canBeDisarmed))) exitWith {
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Target cannot be disarmed"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
if (_needToRemoveVest && {!((vestItems _target) isEqualTo [])}) exitWith {
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Vest Not Empty"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
if (_needToRemoveVest) then {
|
||||
_holder addItemCargoGlobal [(vest _target), 1];
|
||||
removeVest _target;
|
||||
};
|
||||
if (_needToRemoveUniform && {!((uniformItems _target) isEqualTo [])}) exitWith {
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Uniform Not Empty"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
if (_needToRemoveUniform) then {
|
||||
_holder addItemCargoGlobal [(uniform _target), 1];
|
||||
removeUniform _target;
|
||||
};
|
||||
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, ""] call FUNC(eventTargetFinish);
|
||||
};
|
||||
|
||||
}, 0.0, [_caller,_target, _listOfItemsToRemove, _holder, _holderIsEmpty, (time + TIME_MAX_WAIT), _doNotDropAmmo, _targetMagazinesEnd]] call CBA_fnc_addPerFrameHandler;
|
25
addons/disarming/functions/fnc_eventCallerFinish.sqf
Normal file
25
addons/disarming/functions/fnc_eventCallerFinish.sqf
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Recieves a possible error code from FUNC(eventTargetFinish)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: caller (player) <OBJECT>
|
||||
* 1: target <OBJECT>
|
||||
* 2: error message <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player1, player2, "Someting fucked up"] call ace_disarming_fnc_eventCallerFinish
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_3(_caller,_target,_errorMsg);
|
||||
|
||||
if (_caller != ACE_player) exitWith {};
|
||||
|
||||
systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg];
|
||||
diag_log text format ["[ACE_Disarming] %1 - eventCallerFinish: %2", time, _this];
|
26
addons/disarming/functions/fnc_eventTargetFinish.sqf
Normal file
26
addons/disarming/functions/fnc_eventTargetFinish.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* After FUNC(disarmDropItems) has completed, passing a possible error code.
|
||||
* Passes that error back to orginal caller.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: caller <OBJECT>
|
||||
* 1: target <OBJECT>
|
||||
* 2: errorMsg <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [player1, player2, "Someting fucked up"] call ace_disarming_fnc_eventTargetFinish
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_3(_caller,_target,_errorMsg);
|
||||
|
||||
if (_errorMsg != "") then {
|
||||
diag_log text format ["[ACE_Disarming] %1 - eventTargetFinish: %2", time, _this];
|
||||
["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent);
|
||||
};
|
39
addons/disarming/functions/fnc_eventTargetStart.sqf
Normal file
39
addons/disarming/functions/fnc_eventTargetStart.sqf
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Disarm Event Handler, Starting func, called on the target.
|
||||
* If target has to remove uniform/vest, this will add all uniform/vest items to the drop list.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: caller (player) <OBJECT>
|
||||
* 1: target <OBJECT>
|
||||
* 2: type of disarm <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* eventTargetStart
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_3(_caller,_target,_listOfObjectsToRemove);
|
||||
|
||||
_itemsToAdd = [];
|
||||
{
|
||||
if (_x == (uniform _target)) then {
|
||||
_itemsToAdd = _itemsToAdd + (uniformItems _target);
|
||||
};
|
||||
if (_x == (vest _target)) then {
|
||||
_itemsToAdd = _itemsToAdd + (vestItems _target);
|
||||
};
|
||||
} forEach _listOfObjectsToRemove;
|
||||
|
||||
{
|
||||
if (!(_x in _listOfObjectsToRemove)) then {
|
||||
_listOfObjectsToRemove pushBack _x;
|
||||
};
|
||||
} forEach _itemsToAdd;
|
||||
|
||||
[_caller, _target, _listOfObjectsToRemove] call FUNC(disarmDropItems);
|
29
addons/disarming/functions/fnc_getAllGearContainer.sqf
Normal file
29
addons/disarming/functions/fnc_getAllGearContainer.sqf
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Helper function to get all gear of a container
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Container <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Array of 2 arrays, classnames and count<ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [["ace_bandage"],[2]] = [box] call ace_disarming_fnc_getAllGearContainer
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_target);
|
||||
|
||||
private ["_allGear"];
|
||||
|
||||
_allGear = [[],[]];
|
||||
|
||||
{
|
||||
(_allGear select 0) append (_x select 0);
|
||||
(_allGear select 1) append (_x select 1);
|
||||
} forEach [(getWeaponCargo _target), (getItemCargo _target), (getMagazineCargo _target), (getBackpackCargo _target)];
|
||||
|
||||
_allGear
|
52
addons/disarming/functions/fnc_getAllGearUnit.sqf
Normal file
52
addons/disarming/functions/fnc_getAllGearUnit.sqf
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Helper function to get all gear of a unit.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Target <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Array of 2 arrays, classnames and count<ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [["ace_bandage"],[2]] = [bob] call ace_disarming_fnc_getAllGearUnit
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_target);
|
||||
|
||||
_allItems = ((weapons _target) + (magazines _target) + (items _target) + (assignedItems _target));
|
||||
|
||||
if ((backpack _target) != "") then {
|
||||
_allItems pushBack (backpack _target);
|
||||
};
|
||||
if ((vest _target) != "") then {
|
||||
_allItems pushBack (vest _target);
|
||||
};
|
||||
if ((uniform _target) != "") then {
|
||||
_allItems pushBack (uniform _target);
|
||||
};
|
||||
if ((headgear _target) != "") then {
|
||||
_allItems pushBack (headgear _target);
|
||||
};
|
||||
//What kind of asshole takes a man's glasses?
|
||||
if ((goggles _target) != "") then {
|
||||
_allItems pushBack (goggles _target);
|
||||
};
|
||||
|
||||
_uniqueClassnames = [];
|
||||
_classnamesCount = [];
|
||||
//Filter unique and count
|
||||
{
|
||||
_index = _uniqueClassnames find _x;
|
||||
if (_index != -1) then {
|
||||
_classnamesCount set [_index, ((_classnamesCount select _index) + 1)];
|
||||
} else {
|
||||
_uniqueClassnames pushBack _x;
|
||||
_classnamesCount pushBack 1;
|
||||
};
|
||||
} forEach _allItems;
|
||||
|
||||
[_uniqueClassnames, _classnamesCount]
|
106
addons/disarming/functions/fnc_openDisarmDialog.sqf
Normal file
106
addons/disarming/functions/fnc_openDisarmDialog.sqf
Normal file
@ -0,0 +1,106 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Opens the disarm dialog (allowing a person to remove items)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Caller (player) <OBJECT>
|
||||
* 1: Target <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player, bob] call ace_disarming_fnc_openDisarmDialog
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define TEXTURES_RANKS [ \
|
||||
"", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\private_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\corporal_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\sergeant_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\lieutenant_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\captain_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\major_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\colonel_gs.paa" \
|
||||
]
|
||||
|
||||
PARAMS_2(_caller,_target);
|
||||
|
||||
//Sanity Checks
|
||||
if (_caller != ACE_player) exitwith {ERROR("Player isn't caller?");};
|
||||
if (!([_player, _target] call FUNC(canPlayerDisarmUnit))) exitWith {ERROR("Can't Disarm Unit");};
|
||||
if (dialog) then {ERROR("Dialog open when trying to open disarm dialog"); closeDialog 0;};
|
||||
|
||||
disableSerialization;
|
||||
|
||||
createDialog QGVAR(remoteInventory);
|
||||
|
||||
_display = uiNamespace getVariable ["ACE_remoteInventory", displayNull];
|
||||
if (isNull _display) exitWith {ERROR("Display is Null");};
|
||||
|
||||
GVAR(disarmTarget) = _target;
|
||||
|
||||
//Setup Drop Event (on right pannel)
|
||||
(_display displayCtrl 632) ctrlAddEventHandler ["LBDrop", {
|
||||
if (isNull GVAR(disarmTarget)) exitWith {};
|
||||
PARAMS_5(_ctrl,_xPos,_yPos,_idc,_itemInfo);
|
||||
EXPLODE_3_PVT((_itemInfo select 0),_displayText,_value,_data);
|
||||
|
||||
if (isNull GVAR(disarmTarget)) exitWith {ERROR("disarmTarget is null");};
|
||||
|
||||
TRACE_2("Debug: Droping %1 from %2",_data,GVAR(disarmTarget));
|
||||
["DisarmDropItems", [GVAR(disarmTarget)], [ACE_player, GVAR(disarmTarget), [_data]]] call EFUNC(common,targetEvent);
|
||||
|
||||
false //not sure what this does
|
||||
}];
|
||||
|
||||
//Setup PFEH
|
||||
[{
|
||||
disableSerialization;
|
||||
EXPLODE_2_PVT(_this,_args,_pfID);
|
||||
EXPLODE_3_PVT(_args,_player,_target,_display);
|
||||
|
||||
if ((!([_player, _target] call FUNC(canPlayerDisarmUnit))) ||
|
||||
{isNull _display} ||
|
||||
{_player != ACE_player}) then {
|
||||
|
||||
[_pfID] call CBA_fnc_removePerFrameHandler;
|
||||
GVAR(disarmTarget) = objNull;
|
||||
if (!isNull _display) then {closeDialog 0;}; //close dialog if still open
|
||||
} else {
|
||||
_groundContainer = _display displayCtrl 632;
|
||||
_targetContainer = _display displayCtrl 633;
|
||||
_playerName = _display displayCtrl 111;
|
||||
_rankPicture = _display displayCtrl 1203;
|
||||
|
||||
//Show rank and name (just like BIS's inventory)
|
||||
_rankIndex = ((["PRIVATE", "CORPORAL", "SERGEANT", "LIEUTENANT", "CAPTAIN", "MAJOR", "COLONEL"] find (rank _target)) + 1);
|
||||
_rankPicture ctrlSetText (TEXTURES_RANKS select _rankIndex);
|
||||
_playerName ctrlSetText ([GVAR(disarmTarget)] call EFUNC(common,getName));
|
||||
|
||||
//Clear both inventory lists:
|
||||
lbClear _groundContainer;
|
||||
lbClear _targetContainer;
|
||||
|
||||
//Show the items in the ground disarmTarget's inventory
|
||||
_targetUniqueItems = [GVAR(disarmTarget)] call FUNC(getAllGearUnit);
|
||||
[_targetContainer, _targetUniqueItems] call FUNC(showItemsInListbox);
|
||||
|
||||
//Try to find a holder that the target is using to drop items into:
|
||||
_holder = objNull;
|
||||
{
|
||||
if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith {
|
||||
_holder = _x;
|
||||
};
|
||||
} forEach ((getpos _target) nearObjects [DISARM_CONTAINER, 3]);
|
||||
|
||||
//If a holder exists, show it's inventory
|
||||
if (!isNull _holder) then {
|
||||
_holderUniqueItems = [_holder] call FUNC(getAllGearContainer);
|
||||
[_groundContainer, _holderUniqueItems] call FUNC(showItemsInListbox);
|
||||
};
|
||||
};
|
||||
}, 0, [_caller, _target, _display]] call CBA_fnc_addPerFrameHandler;
|
60
addons/disarming/functions/fnc_showItemsInListbox.sqf
Normal file
60
addons/disarming/functions/fnc_showItemsInListbox.sqf
Normal file
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Shows a list of inventory items in a listBox control.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: RscListBox <CONTROL>
|
||||
* 1: ItemArray [["itemClassnames"],[counts]] <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [theListBox, [["ace_bandage"],[2]]] call ace_disarming_fnc_showItemsInListbox
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
disableSerialization;
|
||||
PARAMS_2(_listBoxCtrl,_itemsCountArray);
|
||||
|
||||
private "_classname";
|
||||
|
||||
{
|
||||
_displayName = "";
|
||||
_picture = "";
|
||||
|
||||
_classname = _x;
|
||||
_count = (_itemsCountArray select 1) select _forEachIndex;
|
||||
|
||||
if (_classname != DUMMY_ITEM) then { //Don't show the dummy potato
|
||||
|
||||
switch (true) do {
|
||||
case (isClass (configFile >> "CfgWeapons" >> _classname)): {
|
||||
_displayName = getText (configFile >> "CfgWeapons" >> _classname >> "displayName");
|
||||
_picture = getText (configFile >> "CfgWeapons" >> _classname >> "picture");
|
||||
};
|
||||
case (isClass (configFile >> "CfgMagazines" >> _classname)): {
|
||||
_displayName = getText (configFile >> "CfgMagazines" >> _classname >> "displayName");
|
||||
_picture = getText (configFile >> "CfgMagazines" >> _classname >> "picture");
|
||||
};
|
||||
case (isClass (configFile >> "CfgVehicles" >> _classname)): {
|
||||
_displayName = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
|
||||
_picture = getText (configFile >> "CfgVehicles" >> _classname >> "picture");
|
||||
};
|
||||
case (isClass (configFile >> "CfgGlasses" >> _classname)): {
|
||||
_displayName = getText (configFile >> "CfgGlasses" >> _classname >> "displayName");
|
||||
_picture = getText (configFile >> "CfgGlasses" >> _classname >> "picture");
|
||||
};
|
||||
default {
|
||||
ERROR(format ["[%1] - bad classname", _classname]);
|
||||
};
|
||||
};
|
||||
|
||||
_listBoxCtrl lbAdd format ["%1", _displayName];
|
||||
_listBoxCtrl lbSetData [_forEachIndex, _classname];
|
||||
_listBoxCtrl lbSetPicture [_forEachIndex, _picture];
|
||||
_listBoxCtrl lbSetTextRight [_forEachIndex, str _count];
|
||||
};
|
||||
} forEach (_itemsCountArray select 0);
|
41
addons/disarming/functions/fnc_verifyMagazinesMoved.sqf
Normal file
41
addons/disarming/functions/fnc_verifyMagazinesMoved.sqf
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Verifies magazines moved with exact ammo counts preserved.
|
||||
* Arrays will be in format from magazinesAmmo/magazinesAmmoCargo
|
||||
* e.g.: [["30Rnd_65x39_caseless_mag",15], ["30Rnd_65x39_caseless_mag",30]]
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Start on container A <ARRAY>
|
||||
* 1: End on container A <ARRAY>
|
||||
* 2: Start on container B <ARRAY>
|
||||
* 3: End on container B <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* Verified Good <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [stuff] call ace_disarming_fnc_verifyMagazinesMoved
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_problem", "_beginingArray"];
|
||||
|
||||
PARAMS_4(_startA,_endA,_startB,_endB);
|
||||
|
||||
//Quick Lazy Count Check
|
||||
if (((count _startA) + (count _startB)) != ((count _endA) + (count _endB))) exitWith {
|
||||
false
|
||||
};
|
||||
|
||||
_beginingArray = (_startA + _startB);
|
||||
|
||||
_problem = false;
|
||||
{
|
||||
_index = _beginingArray find _x;
|
||||
if (_index == -1) exitWith {_problem = true;};
|
||||
_beginingArray deleteAt _index;
|
||||
} forEach (_endA + _endB);
|
||||
|
||||
(!_problem) && {_beginingArray isEqualTo []}
|
1
addons/disarming/functions/script_component.hpp
Normal file
1
addons/disarming/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\disarming\script_component.hpp"
|
162
addons/disarming/gui_disarm.hpp
Normal file
162
addons/disarming/gui_disarm.hpp
Normal file
@ -0,0 +1,162 @@
|
||||
//The disarming dialog
|
||||
//Meant to mimic the real BIS inventory (so people understand how to use it)
|
||||
|
||||
class RscText;
|
||||
class RscPicture;
|
||||
class RscActiveText;
|
||||
class RscListBox;
|
||||
|
||||
//Use the definese from
|
||||
#define X_BIS(num) (num * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2))
|
||||
#define Y_BIS(num) (num * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))
|
||||
#define W_BIS(num) (num * (((safezoneW / safezoneH) min 1.2) / 40))
|
||||
#define H_BIS(num) (num * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))
|
||||
|
||||
#define X_MAKEITBIGGA(num) (num * (safeZoneH / 40) + (safezoneX + (safezoneW - safeZoneH)/2))
|
||||
#define Y_MAKEITBIGGA(num) (num * (safeZoneH / 30) + (safezoneY + (safezoneH - (safeZoneH / 1.2))/2))
|
||||
#define W_MAKEITBIGGA(num) (num * (safeZoneH / 40))
|
||||
#define H_MAKEITBIGGA(num) (num * (safeZoneH / 30))
|
||||
|
||||
#define X_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), X_BIS(num), X_MAKEITBIGGA(num))])
|
||||
#define Y_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), Y_BIS(num), Y_MAKEITBIGGA(num))])
|
||||
#define W_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), W_BIS(num), W_MAKEITBIGGA(num))])
|
||||
#define H_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), H_BIS(num), H_MAKEITBIGGA(num))])
|
||||
|
||||
class GVAR(remoteInventory) {
|
||||
idd = -1;
|
||||
movingEnable = 0;
|
||||
enableSimulation = 1;
|
||||
enableDisplay = 1;
|
||||
onLoad = "uiNamespace setVariable ['ACE_remoteInventory', _this select 0];";
|
||||
duration = 2147483647;
|
||||
fadein = 0;
|
||||
fadeout = 0;
|
||||
|
||||
class Colors {
|
||||
dragValidBgr[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])",0.5};
|
||||
dragInvalidBgr[] = {"(profilenamespace getvariable ['IGUI_ERROR_RGB_R',0.8])","(profilenamespace getvariable ['IGUI_ERROR_RGB_G',0.0])","(profilenamespace getvariable ['IGUI_ERROR_RGB_B',0.0])",0.5};
|
||||
dragValidBar[] = {"(profilenamespace getvariable ['IGUI_WARNING_RGB_R',0.8])","(profilenamespace getvariable ['IGUI_WARNING_RGB_G',0.5])","(profilenamespace getvariable ['IGUI_WARNING_RGB_B',0.0])",0.5};
|
||||
dragInvalidBar[] = {"(profilenamespace getvariable ['IGUI_ERROR_RGB_R',0.8])","(profilenamespace getvariable ['IGUI_ERROR_RGB_G',0.0])","(profilenamespace getvariable ['IGUI_ERROR_RGB_B',0.0])",0.5};
|
||||
progressBar[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])",1};
|
||||
progressBarBgr[] = {"(profilenamespace getvariable ['IGUI_BCG_RGB_R',0])","(profilenamespace getvariable ['IGUI_BCG_RGB_G',1])","(profilenamespace getvariable ['IGUI_BCG_RGB_B',1])",0.75};
|
||||
highlight[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])",0.5};
|
||||
};
|
||||
|
||||
class controlsBackground {};
|
||||
|
||||
class controls {
|
||||
class CA_ContainerBackground: RscText {
|
||||
idc = -1;
|
||||
x = X_PART(1);
|
||||
y = Y_PART(1);
|
||||
w = W_PART(12);
|
||||
h = H_PART(22.5);
|
||||
colorBackground[] = {0.05,0.05,0.05,0.7};
|
||||
};
|
||||
class CA_PlayerBackground: RscText {
|
||||
idc = -1;
|
||||
x = X_PART(14.6);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(24.4);
|
||||
h = H_PART(21.5);
|
||||
colorBackground[] = {0.05,0.05,0.05,0.7};
|
||||
};
|
||||
class TitleBackground: RscText {
|
||||
idc = -1;
|
||||
x = X_PART(14.6);
|
||||
y = Y_PART(1);
|
||||
w = W_PART(24.4);
|
||||
h = H_PART(1);
|
||||
colorBackground[] = {0.1,0.1,0.1,1};
|
||||
};
|
||||
class PlayersName: RscText {
|
||||
idc = 111;
|
||||
// text = "Player name here:";
|
||||
x = X_PART(15.6);
|
||||
y = Y_PART(1);
|
||||
w = W_PART(19.8);
|
||||
h = H_PART(1);
|
||||
};
|
||||
class RankBackground: RscText {
|
||||
idc = -1;
|
||||
x = X_PART(15.1);
|
||||
y = Y_PART(1.25);
|
||||
w = W_PART(0.6);
|
||||
h = H_PART(0.6);
|
||||
colorBackground[] = {1,1,1,0.2};
|
||||
};
|
||||
class RankPicture: RscPicture {
|
||||
idc = 1203;
|
||||
// text = "\A3\Ui_f\data\GUI\Cfg\Ranks\corporal_gs.paa";
|
||||
x = X_PART(15.1);
|
||||
y = Y_PART(1.25);
|
||||
w = W_PART(0.6);
|
||||
h = H_PART(0.6);
|
||||
};
|
||||
class ButtonBack: RscActiveText {
|
||||
idc = -1;
|
||||
style = 48;
|
||||
color[] = {1,1,1,0.7};
|
||||
text = "\A3\Ui_f\data\GUI\Rsc\RscDisplayArcadeMap\icon_exit_cross_ca.paa";
|
||||
x = X_PART(38);
|
||||
y = Y_PART(1);
|
||||
w = W_PART(1);
|
||||
h = H_PART(1);
|
||||
colorText[] = {1,1,1,0.7};
|
||||
colorActive[] = {1,1,1,1};
|
||||
tooltip = "$STR_DISP_OPT_CLOSE";
|
||||
onButtonClick = "closeDialog 0";
|
||||
};
|
||||
class ExternalContainerBackground: RscPicture {
|
||||
colorText[] = {1,1,1,0.1};
|
||||
idc = -1;
|
||||
x = X_PART(1.5);
|
||||
y = Y_PART(3.7);
|
||||
w = W_PART(11);
|
||||
h = H_PART(18.4);
|
||||
};
|
||||
class PlayerContainerBackground: ExternalContainerBackground {
|
||||
idc = -1;
|
||||
x = X_PART(15.1);
|
||||
y = Y_PART(6);
|
||||
w = W_PART(11);
|
||||
h = H_PART(14);
|
||||
};
|
||||
class GroundTitleBackground: RscText {
|
||||
idc = -1;
|
||||
x = X_PART(1);
|
||||
y = Y_PART(1);
|
||||
w = W_PART(12);
|
||||
h = H_PART(1);
|
||||
colorBackground[] = {0.1,0.1,0.1,1};
|
||||
};
|
||||
class GroundName: RscText {
|
||||
idc = -1;
|
||||
text = "$STR_cfgVehicles_WeaponHolder0"; //"ground"
|
||||
x = X_PART(1);
|
||||
y = Y_PART(1);
|
||||
w = W_PART(12);
|
||||
h = H_PART(1);
|
||||
};
|
||||
class GroundContainer: RscListBox {
|
||||
idc = 632;
|
||||
sizeEx = "0.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
sizeEx2 = "0.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
rowHeight = "1.75 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
canDrag = 0;
|
||||
colorText[] = {1,1,1,1};
|
||||
colorBackground[] = {0,0,0,0};
|
||||
itemBackground[] = {1,1,1,0.2};
|
||||
itemSpacing = 0.001;
|
||||
x = X_PART(1.5);
|
||||
y = Y_PART(2.5);
|
||||
w = W_PART(11);
|
||||
h = H_PART(21);
|
||||
};
|
||||
class UniformContainer: GroundContainer {
|
||||
idc = 633;
|
||||
canDrag = 1;
|
||||
x = X_PART(15.1);
|
||||
};
|
||||
};
|
||||
};
|
16
addons/disarming/script_component.hpp
Normal file
16
addons/disarming/script_component.hpp
Normal file
@ -0,0 +1,16 @@
|
||||
#define COMPONENT disarming
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
#ifdef DEBUG_ENABLED_DISARMING
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_SETTINGS_DISARMING
|
||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_DISARMING
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define DISARM_CONTAINER "GroundWeaponHolder"
|
||||
#define DUMMY_ITEM "ACE_DebugPotato"
|
||||
#define UNIQUE_MAGAZINES ["ACE_key_customKeyMagazine"]
|
9
addons/disarming/stringtable.xml
Normal file
9
addons/disarming/stringtable.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2015-03-17 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Disarming">
|
||||
<Key ID="STR_ACE_Disarming_OpenInventory">
|
||||
<English>Open Inventory</English>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -24,7 +24,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Disposable_PreloadedMissileDummy">
|
||||
<English>Preloaded Missile Dummy</English>
|
||||
<German>Preloaded Missile Dummy</German>
|
||||
<German>Vorgeladene Racketennachbildung</German>
|
||||
<French>Preloaded Missile Dummy</French>
|
||||
<Czech>Preloaded Missile Dummy</Czech>
|
||||
<Polish>Preloaded Missile Dummy</Polish>
|
||||
@ -33,4 +33,4 @@
|
||||
<Russian>Заряженная ракетная пустышка</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -23,8 +23,10 @@ _unit removeAction (_unit getVariable [QGVAR(ReleaseActionID), -1]);
|
||||
private "_inBuilding";
|
||||
_inBuilding = [_unit] call FUNC(isObjectOnObject);
|
||||
|
||||
// play release animation
|
||||
_unit playAction "released";
|
||||
if !(_unit getvariable ["ACE_isUnconscious", false]) then {
|
||||
// play release animation
|
||||
_unit playAction "released";
|
||||
};
|
||||
|
||||
// prevent collision damage
|
||||
["fixCollision", _unit] call EFUNC(common,localEvent);
|
||||
@ -58,3 +60,7 @@ if !(_target isKindOf "CAManBase") then {
|
||||
["fixPosition", _target, _target] call EFUNC(common,targetEvent);
|
||||
["fixFloating", _target, _target] call EFUNC(common,targetEvent);
|
||||
};
|
||||
|
||||
if (_unit getvariable ["ACE_isUnconscious", false]) then {
|
||||
[_unit, "unconscious", 2, true] call EFUNC(common,doAnimation);
|
||||
};
|
||||
|
@ -32,7 +32,7 @@ detach _target;
|
||||
|
||||
// fix anim when aborting carrying persons
|
||||
if (_target isKindOf "CAManBase" || {animationState _unit in CARRY_ANIMATIONS}) then {
|
||||
if (vehicle _unit == _unit) then {
|
||||
if (vehicle _unit == _unit && {!(_unit getvariable ["ACE_isUnconscious", false])}) then {
|
||||
[_unit, "", 2, true] call EFUNC(common,doAnimation);
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-12-21 -->
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Dragging">
|
||||
<Key ID="STR_ACE_Dragging_Drag">
|
||||
@ -28,7 +27,8 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dragging_UnableToDrag">
|
||||
<English>Item to heavy</English>
|
||||
<German>Gegenstand zu schwer</German>
|
||||
<German>Gegenstand ist zu schwer</German>
|
||||
<Spanish>Articulo demasiado pesado</Spanish>
|
||||
<!-- <English>Unable to drag item due to weight</English>
|
||||
<Russian>Слишком тяжелый предмет</Russian>
|
||||
<Spanish>No se puede arrastrar el objeto debido a su peso</Spanish>
|
||||
@ -39,6 +39,7 @@
|
||||
<Portuguese>Não é possível carregar o item devido a seu peso</Portuguese>
|
||||
<Italian>Non è possibile trascinare l'oggetto a causa del suo peso</Italian>
|
||||
<Hungarian>Túl nehéz ahhoz, hogy elhúzd</Hungarian> -->
|
||||
<Russian>Слишком тяжело</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dragging_Carry">
|
||||
<English>Carry</English>
|
||||
|
@ -1,10 +1,10 @@
|
||||
class CfgACE_Triggers {
|
||||
class ACE_Triggers {
|
||||
/* onPlace parameters:
|
||||
0: OBJECT - unit placing
|
||||
1: OBJECT - Placed explosive
|
||||
2: STRING - Magazine classname
|
||||
3: ARRAY - vars
|
||||
Last Index: CfgACE_Triggers config of trigger type.
|
||||
Last Index: ACE_Triggers config of trigger type.
|
||||
onSetup parameters:
|
||||
0: STRING - Magazine Classname
|
||||
*/
|
@ -18,7 +18,8 @@ class CfgPatches {
|
||||
#include "CfgMagazines.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgACE_Triggers.hpp"
|
||||
|
||||
#include "ACE_Triggers.hpp"
|
||||
#include "ExplosivesUI.hpp"
|
||||
|
||||
class CfgActions {
|
||||
|
@ -12,7 +12,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player, _explosive, "SatchelCharge_Remote_Mag", [ConfigFile >> "CfgACE_Triggers" >> "Command"]] call ACE_Explosives_fnc_addClacker;
|
||||
* [player, _explosive, "SatchelCharge_Remote_Mag", [ConfigFile >> "ACE_Triggers" >> "Command"]] call ACE_Explosives_fnc_addClacker;
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
private ["_result", "_item", "_children"];
|
||||
call EFUNC(interaction,hideMenu);
|
||||
|
||||
EXPLODE_2_PVT(_this,_unit,_detonator);
|
||||
_range = GetNumber (ConfigFile >> "CfgWeapons" >> _detonator >> "ACE_Range");
|
||||
|
||||
@ -24,7 +24,7 @@ _result = [_unit] call FUNC(getPlacedExplosives);
|
||||
_children = [];
|
||||
{
|
||||
if (!isNull(_x select 0)) then {
|
||||
_required = getArray (ConfigFile >> "CfgACE_Triggers" >> (_x select 4) >> "requires");
|
||||
_required = getArray (ConfigFile >> "ACE_Triggers" >> (_x select 4) >> "requires");
|
||||
if (_detonator in _required) then {
|
||||
_item = ConfigFile >> "CfgMagazines" >> (_x select 3);
|
||||
|
||||
|
@ -20,7 +20,7 @@ private ["_unit", "_clackerList", "_adjustedList", "_list", "_filter"];
|
||||
_unit = _this select 0;
|
||||
_filter = nil;
|
||||
if (count _this > 1) then {
|
||||
_filter = ConfigFile >> "CfgACE_Triggers" >> (_this select 1);
|
||||
_filter = ConfigFile >> "ACE_Triggers" >> (_this select 1);
|
||||
};
|
||||
_clackerList = [];
|
||||
_adjustedList = false;
|
||||
@ -31,7 +31,7 @@ _list = [];
|
||||
_clackerList set [_foreachIndex, "X"];
|
||||
_adjustedList = true;
|
||||
} else {
|
||||
if (isNil "_filter" || {(ConfigFile >> "CfgACE_Triggers" >> (_x select 4)) == _filter}) then {
|
||||
if (isNil "_filter" || {(ConfigFile >> "ACE_Triggers" >> (_x select 4)) == _filter}) then {
|
||||
_list pushBack _x;
|
||||
};
|
||||
};
|
||||
|
@ -33,7 +33,7 @@ if (isNil "_triggerConfig") exitWith {
|
||||
};
|
||||
|
||||
_magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> _triggerConfig;
|
||||
_triggerConfig = ConfigFile >> "CfgACE_Triggers" >> _triggerConfig;
|
||||
_triggerConfig = ConfigFile >> "ACE_Triggers" >> _triggerConfig;
|
||||
|
||||
if (isNil "_triggerConfig") exitWith {
|
||||
diag_log format ["ACE_Explosives: Error config not found in PlaceExplosive: %1", _this];
|
||||
|
@ -17,10 +17,9 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
private ["_config"];
|
||||
closeDialog 0;
|
||||
call EFUNC(interaction,hideMenu);
|
||||
|
||||
EXPLODE_3_PVT(_this,_explosive,_magazine,_trigger);
|
||||
_config = ConfigFile >> "CfgACE_Triggers" >> _trigger;
|
||||
_config = ConfigFile >> "ACE_Triggers" >> _trigger;
|
||||
|
||||
// If the onSetup function returns true, it is handled elsewhere
|
||||
if (isText(_config >> "onSetup") && {[_explosive,_magazine] call compile getText (_config >> "onSetup")}) exitWith {};
|
||||
|
@ -6,7 +6,7 @@
|
||||
* 0: Explosive magazine <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Supported triggers as CfgACE_Triggers config entries <ARRAY>
|
||||
* Supported triggers as ACE_Triggers config entries <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* _supports = ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_TriggerType
|
||||
@ -20,6 +20,6 @@ _config = getArray (ConfigFile >> "CfgMagazines" >> (_this select 0) >> "ACE_Tri
|
||||
_count = count _config;
|
||||
|
||||
for "_index" from 0 to (_count - 1) do {
|
||||
_result set [_index, ConfigFile >> "CfgACE_Triggers" >> (_config select _index)];
|
||||
_result set [_index, ConfigFile >> "ACE_Triggers" >> (_config select _index)];
|
||||
};
|
||||
_result
|
||||
|
@ -1,497 +1,498 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-12-16 -->
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Explosives">
|
||||
<Key ID="STR_ACE_Explosives_Menu">
|
||||
<English>Explosives</English>
|
||||
<German>Sprengstoffe</German>
|
||||
<Spanish>Explosivos</Spanish>
|
||||
<Polish>Ładunki wybuchowe</Polish>
|
||||
<French>Explosifs</French>
|
||||
<Czech>Výbušniny</Czech>
|
||||
<Italian>Esplosivi</Italian>
|
||||
<Hungarian>Robbanóanyagok</Hungarian>
|
||||
<Portuguese>Explosivos</Portuguese>
|
||||
<Russian>Взрывчатка</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Place">
|
||||
<English>Place >></English>
|
||||
<German>Platzieren >></German>
|
||||
<Spanish>Colocar >></Spanish>
|
||||
<Polish>Umieść >></Polish>
|
||||
<French>Placer >></French>
|
||||
<Czech>Položit >></Czech>
|
||||
<Italian>Piazza >></Italian>
|
||||
<Hungarian>Lerakás >></Hungarian>
|
||||
<Portuguese>Colocar >></Portuguese>
|
||||
<Russian>Установить >></Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Detonate">
|
||||
<English>Detonate >></English>
|
||||
<German>Zünden >></German>
|
||||
<Spanish>Detonar >></Spanish>
|
||||
<Polish>Detonuj >></Polish>
|
||||
<French>Mise à feu >></French>
|
||||
<Czech>Odpálit >></Czech>
|
||||
<Italian>Detona >></Italian>
|
||||
<Hungarian>Robbantás >></Hungarian>
|
||||
<Portuguese>Detonar >></Portuguese>
|
||||
<Russian>Подрыв >></Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DetonateCode">
|
||||
<English>Explosive code: %1</English>
|
||||
<German>Sprengstoffcode: %1</German>
|
||||
<Spanish>Código del explosivo: %1</Spanish>
|
||||
<Polish>Kod ładunku: %1</Polish>
|
||||
<French>Code explosif: %1</French>
|
||||
<Czech>Kód výbušniny: %1</Czech>
|
||||
<Italian>Codice dell'esplosivo : %1</Italian>
|
||||
<Hungarian>Robbanóanyag kódja: %1</Hungarian>
|
||||
<Portuguese>Código do explosivo: %1</Portuguese>
|
||||
<Russian>Взрывная код: %1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PlaceAction">
|
||||
<English>Place</English>
|
||||
<German>Platzieren</German>
|
||||
<Spanish>Colocar</Spanish>
|
||||
<Polish>Umieść</Polish>
|
||||
<French>Placer</French>
|
||||
<Czech>Položit</Czech>
|
||||
<Italian>Piazza</Italian>
|
||||
<Hungarian>Elhelyezés</Hungarian>
|
||||
<Portuguese>Colocar</Portuguese>
|
||||
<Russian>Положить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_CancelAction">
|
||||
<English>Cancel</English>
|
||||
<German>Abbrechen</German>
|
||||
<Spanish>Cancelar</Spanish>
|
||||
<Polish>Anuluj</Polish>
|
||||
<French>Annuler</French>
|
||||
<Czech>Zrušit</Czech>
|
||||
<Italian>Annulla</Italian>
|
||||
<Hungarian>Mégsem</Hungarian>
|
||||
<Portuguese>Cancelar</Portuguese>
|
||||
<Russian>Отмена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_ScrollAction">
|
||||
<English>+ Modifier, rotates</English>
|
||||
<German>+ Modifikator, drehen</German>
|
||||
<Spanish>+ Modificador, girar</Spanish>
|
||||
<French>+ Modificateur, tourner</French>
|
||||
<Italian>+ Modificatore, rotazione</Italian>
|
||||
<Czech>+ Otočit</Czech>
|
||||
<Hungarian>+ Változtatás, forgatás</Hungarian>
|
||||
<Polish>+ modyfikator, obracanie</Polish>
|
||||
<Portuguese>+ Modificador, rotaciona</Portuguese>
|
||||
<Russian>+ Bращать</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Jammer_TurnOn">
|
||||
<English>Turn On Thor III</English>
|
||||
<German>Thor III aktivieren</German>
|
||||
<Spanish>Encender Thor III</Spanish>
|
||||
<Polish>Włącz Thor III</Polish>
|
||||
<French>Allumer Thor III</French>
|
||||
<Czech>Zapnout Thor III</Czech>
|
||||
<Italian>Accendi Thor III</Italian>
|
||||
<Hungarian>Thor III bekapcsolása</Hungarian>
|
||||
<Portuguese>Ativar Thor III</Portuguese>
|
||||
<Russian>Активировать Thor III</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Jammer_TurnOff">
|
||||
<English>Turn Off Thor III</English>
|
||||
<German>Thor III deaktivieren</German>
|
||||
<Spanish>Apagar Thor III</Spanish>
|
||||
<Polish>Wyłącz Thor III</Polish>
|
||||
<French>Éteindre Thor III</French>
|
||||
<Czech>Vypnout Thor III</Czech>
|
||||
<Italian>Spegni Thor III</Italian>
|
||||
<Hungarian>Thor III kikapcsolása</Hungarian>
|
||||
<Portuguese>Desativar Thor III</Portuguese>
|
||||
<Russian>Деактивировать Thor III</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_cellphone_displayName">
|
||||
<English>Cellphone</English>
|
||||
<German>Mobiltelefon</German>
|
||||
<Spanish>Télefono móvil</Spanish>
|
||||
<Polish>Telefon komórkowy</Polish>
|
||||
<French>Téléphone Portable</French>
|
||||
<Czech>Telefon</Czech>
|
||||
<Italian>Cellulare</Italian>
|
||||
<Hungarian>Mobil</Hungarian>
|
||||
<Portuguese>Celular</Portuguese>
|
||||
<Russian>Сотовый телефон</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_cellphone_description">
|
||||
<English>Used to remotely trigger explosives</English>
|
||||
<German>Wird benutzt um Sprengstoffe fernzuzünden</German>
|
||||
<Spanish>Usado para detonar remotamente explosivos</Spanish>
|
||||
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
|
||||
<French>Utilisé pour déclencher des explosifs à distance</French>
|
||||
<Czech>Používaný ke vzdálenému odpalování výbušnin</Czech>
|
||||
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
|
||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||
<Portuguese>Usado para acionar explosivos remotamente</Portuguese>
|
||||
<Russian>Используется для удаленного запуска взрывчатку</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_clacker_displayName">
|
||||
<English>M57 Firing Device</English>
|
||||
<German>M57 Zündvorrichtung</German>
|
||||
<Spanish>Dispositivo de detonación M57</Spanish>
|
||||
<Polish>Zapalnik M57</Polish>
|
||||
<French>M57 Dispositif de mise à feu</French>
|
||||
<Czech>M57 Odpalovací Zařízení</Czech>
|
||||
<Italian>Detonatore M57</Italian>
|
||||
<Hungarian>M57 Detonátor</Hungarian>
|
||||
<Portuguese>M57 Dispositivo de Detonação</Portuguese>
|
||||
<Russian>Взрыватель M57</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_clacker_description">
|
||||
<English>Used to remotely trigger explosives</English>
|
||||
<German>Wird benutzt um Sprengstoffe fernzuzünden</German>
|
||||
<Spanish>Usado para detonar remotamente explosivos</Spanish>
|
||||
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
|
||||
<French>Utilisé pour déclencher des explosifs à distance</French>
|
||||
<Czech>Použévané ke vzdálenému odpalování výbušnin</Czech>
|
||||
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
|
||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||
<Portuguese>Usado para acionar explosivos remotamente</Portuguese>
|
||||
<Russian>Используется для удаленного запуска взрывчатку</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_M26_displayName">
|
||||
<English>M26 Firing Device</English>
|
||||
<German>M26 Zündvorrichtung</German>
|
||||
<Spanish>Dispositivo de detonación MK26</Spanish>
|
||||
<Polish>Zapalnik M26</Polish>
|
||||
<French>M26 Dispositif de mise à feu</French>
|
||||
<Czech>M26 Odpalovací Zařízení</Czech>
|
||||
<Italian>Detonatore M26</Italian>
|
||||
<Hungarian>M26 Detonátor</Hungarian>
|
||||
<Portuguese>M26 Dispositivo de Detonação</Portuguese>
|
||||
<Russian>Взрыватель M26</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_MK16_displayName">
|
||||
<English>M152 RAMS</English>
|
||||
<German>M152 RAMS</German>
|
||||
<Czech>M152 RAMS</Czech>
|
||||
<French>M152 RAMS</French>
|
||||
<Hungarian>M152 RAMS</Hungarian>
|
||||
<Polish>M152 RAMS</Polish>
|
||||
<Portuguese>M152 RAMS</Portuguese>
|
||||
<Russian>M152 RAMS</Russian>
|
||||
<Spanish>M152 RAMS</Spanish>
|
||||
<Italian>M152 RAMS</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DefusalKit_displayName">
|
||||
<English>Defusal Kit</English>
|
||||
<German>Entschärfungskit</German>
|
||||
<Spanish>Kit de desactivación</Spanish>
|
||||
<Polish>Zestaw do rozbrajania</Polish>
|
||||
<French>Kit de désamorçage</French>
|
||||
<Czech>Zneškodňovací sada</Czech>
|
||||
<Italian>Kit E.O.D.</Italian>
|
||||
<Hungarian>Hatástalanító felszerelés</Hungarian>
|
||||
<Portuguese>Kit de desarme</Portuguese>
|
||||
<Russian>Разминирование комплект</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DefusalKit_description">
|
||||
<English>Allows defusing of explosives</English>
|
||||
<German>Erlaubt die Entschärfung von Sprengstoffen</German>
|
||||
<Spanish>Permite desactivar explosivos</Spanish>
|
||||
<Polish>Umożliwia rozbrajanie ładunków wybuchowych</Polish>
|
||||
<French>Permet de désamorçer des explosifs</French>
|
||||
<Czech>Dovoluje zneškodňování výbušnin</Czech>
|
||||
<Italian>Consente la disattivazione degli ordigni esplosivi</Italian>
|
||||
<Hungarian>Robbanóanyagok hatástalanításához</Hungarian>
|
||||
<Portuguese>Permite o desarme de explosivos</Portuguese>
|
||||
<Russian>Allows defusing of explosives</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Phone_AddToSpeedDial">
|
||||
<English>Add to Speed Dial</English>
|
||||
<German>Zur Schnellauswahl hinzufügen</German>
|
||||
<Spanish>Agregar a marcado rápido</Spanish>
|
||||
<Polish>Dodaj do szybkiego wybierania</Polish>
|
||||
<French>Ajouter à la composition rapide</French>
|
||||
<Czech>Přidat jako rychlou volbu</Czech>
|
||||
<Italian>Aggiungi alla selezione rapida</Italian>
|
||||
<Hungarian>Hozzáadás gyorshíváshoz</Hungarian>
|
||||
<Portuguese>Adicionar à ligação rápida</Portuguese>
|
||||
<Russian>Добавить в ускоренный набор</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Clear">
|
||||
<English>Clear</English>
|
||||
<German>Löschen</German>
|
||||
<Spanish>Borrar</Spanish>
|
||||
<Polish>Usuń</Polish>
|
||||
<French>Désamorçé</French>
|
||||
<Czech>Čistý</Czech>
|
||||
<Italian>Libera</Italian>
|
||||
<Hungarian>Törlés</Hungarian>
|
||||
<Portuguese>Limpar</Portuguese>
|
||||
<Russian>Pассеиваться</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Phone_Dial">
|
||||
<English>Dial</English>
|
||||
<German>Wählen</German>
|
||||
<Spanish>Marcar</Spanish>
|
||||
<Polish>Wybierz mumer</Polish>
|
||||
<French>Composer</French>
|
||||
<Czech>Vytočit</Czech>
|
||||
<Italian>Composizione numero</Italian>
|
||||
<Hungarian>Tárcsázás</Hungarian>
|
||||
<Portuguese>Discar</Portuguese>
|
||||
<Russian>Hабрать</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Phone_Up">
|
||||
<English>Up</English>
|
||||
<German>Hoch</German>
|
||||
<Spanish>Arriba</Spanish>
|
||||
<Polish>W górę</Polish>
|
||||
<French>Haut</French>
|
||||
<Czech>Nahoru</Czech>
|
||||
<Italian>Sopra</Italian>
|
||||
<Hungarian>Fel</Hungarian>
|
||||
<Portuguese>Cima</Portuguese>
|
||||
<Russian>Поднять</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Phone_Down">
|
||||
<English>Down</English>
|
||||
<German>Runter</German>
|
||||
<Spanish>Abajo</Spanish>
|
||||
<Polish>W dół</Polish>
|
||||
<French>Bas</French>
|
||||
<Czech>Dolu</Czech>
|
||||
<Italian>Sotto</Italian>
|
||||
<Hungarian>Le</Hungarian>
|
||||
<Portuguese>Baixo</Portuguese>
|
||||
<Russian>Опустить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Cancel">
|
||||
<English>Cancel</English>
|
||||
<German>Abbrechen</German>
|
||||
<Spanish>Cancelar</Spanish>
|
||||
<Polish>Anuluj</Polish>
|
||||
<French>Annuler</French>
|
||||
<Czech>Zrušit</Czech>
|
||||
<Italian>Annulla</Italian>
|
||||
<Hungarian>Mégsem</Hungarian>
|
||||
<Portuguese>Cancelar</Portuguese>
|
||||
<Russian>Отмена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DetonateMenu">
|
||||
<English>Detonate Menu</English>
|
||||
<German>"Zünden"-Menü</German>
|
||||
<Spanish>Menú de detonación</Spanish>
|
||||
<Polish>Menu detonowania</Polish>
|
||||
<French>Menu de mise à feu</French>
|
||||
<Czech>Menu Detonace</Czech>
|
||||
<Italian>Menù di detonazione</Italian>
|
||||
<Hungarian>Robbantás menü</Hungarian>
|
||||
<Portuguese>Menu de detonação</Portuguese>
|
||||
<Russian>Меню Подрыв</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PlaceMenu">
|
||||
<English>Place Menu</English>
|
||||
<German>"Platzieren"-Menü</German>
|
||||
<Spanish>Menú de colocación</Spanish>
|
||||
<Polish>Menu umieszczania</Polish>
|
||||
<French>Menu Placement</French>
|
||||
<Czech>Menu Umístění</Czech>
|
||||
<Italian>Menù di collocamento</Italian>
|
||||
<Hungarian>Lerakás menü</Hungarian>
|
||||
<Portuguese>Menu de posicionamento</Portuguese>
|
||||
<Russian>Меню Установить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Defuse">
|
||||
<English>Defuse</English>
|
||||
<German>Entschärfen</German>
|
||||
<Spanish>Desactivar</Spanish>
|
||||
<Polish>Rozbrój</Polish>
|
||||
<French>Désamorçer</French>
|
||||
<Czech>Zneškodnit</Czech>
|
||||
<Italian>Disinnesca</Italian>
|
||||
<Hungarian>Hatástalanítás</Hungarian>
|
||||
<Portuguese>Desarmar</Portuguese>
|
||||
<Russian>Обезвредить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DefusingExplosive">
|
||||
<English>Defusing Explosive...</English>
|
||||
<German>Entschärfe Sprengstoff...</German>
|
||||
<Spanish>Desactivando explosivo...</Spanish>
|
||||
<Polish>Rozbrajanie ładunku...</Polish>
|
||||
<French>Désamorçage des explosifs...</French>
|
||||
<Czech>Zneškodňuji Výbušninu...</Czech>
|
||||
<Italian>Esposivo in fase di disattivazione...</Italian>
|
||||
<Hungarian>Robbanóanyag hatástalaníása...</Hungarian>
|
||||
<Portuguese>Desarmando Explosivo...</Portuguese>
|
||||
<Russian>Обезвреживание...</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_timerName">
|
||||
<English>Timer</English>
|
||||
<German>Zeitzünder</German>
|
||||
<Spanish>Temporizador</Spanish>
|
||||
<Polish>Czasomierz</Polish>
|
||||
<French>Retard</French>
|
||||
<Czech>Časovač</Czech>
|
||||
<Italian>Cronometro</Italian>
|
||||
<Hungarian>Időzített</Hungarian>
|
||||
<Portuguese>Timer</Portuguese>
|
||||
<Russian>Временной</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TimerMenu">
|
||||
<English>Time: %1m %2s</English>
|
||||
<German>Zeit: %1m %2s</German>
|
||||
<Spanish>Tiempo: %1m %2s</Spanish>
|
||||
<Polish>Czas: %1m %2s</Polish>
|
||||
<French>Temps : %1m %2s</French>
|
||||
<Czech>Čas: %1m %2s</Czech>
|
||||
<Italian>Tempo : %1m %2s</Italian>
|
||||
<Hungarian>Idő: %1m %2s</Hungarian>
|
||||
<Portuguese>Tempo: %1m %2s</Portuguese>
|
||||
<Russian>Tемп: %1m %2c</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_SetTime">
|
||||
<English>Set Time</English>
|
||||
<German>Zeit einstellen</German>
|
||||
<Spanish>Configurar tiempo</Spanish>
|
||||
<Polish>Ustaw czas</Polish>
|
||||
<French>Régler retard</French>
|
||||
<Czech>Nastavit Čas</Czech>
|
||||
<Italian>Modifica il conto alla rovescia</Italian>
|
||||
<Hungarian>Idő állítása</Hungarian>
|
||||
<Portuguese>Configurar Tempo</Portuguese>
|
||||
<Russian>Xронометр</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TriggerMenu">
|
||||
<English>Select a Trigger</English>
|
||||
<German>Wähle einen Zünder</German>
|
||||
<Spanish>Seleccionar un disparador</Spanish>
|
||||
<Polish>Wybierz zapalnik</Polish>
|
||||
<French>Sélectionner une mise à feu</French>
|
||||
<Czech>Zvolit Detonátor</Czech>
|
||||
<Italian>Seleziona un Attivatore</Italian>
|
||||
<Hungarian>Detonátor kiválasztása</Hungarian>
|
||||
<Portuguese>Selecionar um Gatilho</Portuguese>
|
||||
<Russian>Выберите</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_SelectTrigger">
|
||||
<English>Select</English>
|
||||
<German>Wählen</German>
|
||||
<Spanish>Seleccionar</Spanish>
|
||||
<Polish>Wybierz</Polish>
|
||||
<French>Sélectionner</French>
|
||||
<Czech>Zvolit</Czech>
|
||||
<Italian>Seleziona</Italian>
|
||||
<Hungarian>Kiválasztás</Hungarian>
|
||||
<Portuguese>Selecionar</Portuguese>
|
||||
<Russian>Выбрать защелка</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PressurePlate">
|
||||
<English>Pressure Plate</English>
|
||||
<Polish>Płyta naciskowa</Polish>
|
||||
<Spanish>Placa de presión</Spanish>
|
||||
<German>Druckplatte</German>
|
||||
<French>Plaque de pression</French>
|
||||
<Czech>Nášlapná nástraha</Czech>
|
||||
<Italian>Piastra a Pressione</Italian>
|
||||
<Hungarian>Nyomólap</Hungarian>
|
||||
<Portuguese>Placa de pressão</Portuguese>
|
||||
<Russian>Давление</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TripWire">
|
||||
<English>Tripwire</English>
|
||||
<Polish>Linka naciągu</Polish>
|
||||
<Spanish>Cable trampa</Spanish>
|
||||
<German>Stolperdraht</German>
|
||||
<French>Fil de butée</French>
|
||||
<Czech>Nástražný drát</Czech>
|
||||
<Italian>Filo a Inciampo</Italian>
|
||||
<Hungarian>Botlódrót</Hungarian>
|
||||
<Portuguese>Linha de tração</Portuguese>
|
||||
<Russian>Натяжной</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_IRSensor">
|
||||
<English>IR Sensor</English>
|
||||
<Polish>Czujnik podczerwieni</Polish>
|
||||
<Spanish>Sensor IR</Spanish>
|
||||
<German>Infrarotsensor</German>
|
||||
<French>Capteur IR</French>
|
||||
<Czech>IR Značkovač</Czech>
|
||||
<Italian>Sensore IR</Italian>
|
||||
<Hungarian>IR szenzor</Hungarian>
|
||||
<Portuguese>Sensor IV</Portuguese>
|
||||
<Russian>ИК</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_NoTriggersAvailable">
|
||||
<English>No triggers available for %1</English>
|
||||
<Polish>Brak dostępnych zapalników dla %1</Polish>
|
||||
<Spanish>No hay detonadores disponibles para %1</Spanish>
|
||||
<German>Keine Auslöser vorhanden für %1</German>
|
||||
<French>Pas de mise à feu disponible pour %1</French>
|
||||
<Czech>Žádný detonátor k dispozici pro %1</Czech>
|
||||
<Italian>Nessun attivatore disponibile per %1</Italian>
|
||||
<Hungarian>Nincs detonátor a %1</Hungarian>
|
||||
<Portuguese>Nenhum gatilho disponível para %1</Portuguese>
|
||||
<Russian>Нет защелка доступны для %1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_SLAME_IRSensor">
|
||||
<English>IR Sensor (Side Attack)</English>
|
||||
<Polish>Czujnik podczerwieni (wybuch na bok)</Polish>
|
||||
<Spanish>Sensor IR (ataque lateral)</Spanish>
|
||||
<German>Infrarotsensor (Seitenangriff)</German>
|
||||
<French>Capteur IR (de flanc)</French>
|
||||
<Czech>IR Značkovač (Výbuch stranou)</Czech>
|
||||
<Italian>Sensore IR (Attacco laterale)</Italian>
|
||||
<Hungarian>IR Sensor (Side Attack)</Hungarian>
|
||||
<Portuguese>Sensor infravermelho (ataque lateral)</Portuguese>
|
||||
<Russian>ИК (боковая атака)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_SLAME_Magnetic">
|
||||
<English>Magnetic Influence Sensor (Bottom Attack)</English>
|
||||
<Polish>Czujnik magnetyczny (wybuch w górę)</Polish>
|
||||
<Spanish>Sensor IM (ataque inferior)</Spanish>
|
||||
<German>Magnetfeldsensor (Bodenangriff)</German>
|
||||
<French>Capteur Magnétique (par le bas)</French>
|
||||
<Czech>Magnetický Senzor (Výbuch ze spoda)</Czech>
|
||||
<Italian>Sensore Magnetico di Prossimità (Attacco inferiore)</Italian>
|
||||
<Hungarian>Mágneses (Bottom Attack)</Hungarian>
|
||||
<Portuguese>Influência magnética (ataque inferior)</Portuguese>
|
||||
<Russian>Магнитный (дно атака)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_NoExplosivesAvailable">
|
||||
<English>No explosives on trigger.</English>
|
||||
<German>Keine Sprengladungen auf diesem Auslöser.</German>
|
||||
<Spanish>Ningún explosivo en el detonador.</Spanish>
|
||||
<French>Pas d'explosif à mettre à feu.</French>
|
||||
<Italian>Nessun esplosivo sul sensore.</Italian>
|
||||
<Czech>Žádná výbušnina k odpálení.</Czech>
|
||||
<Hungarian>Nincs robbanóanyag a detonátorhoz.</Hungarian>
|
||||
<Polish>Brak ładunków na zapalnik.</Polish>
|
||||
<Portuguese>Nenhum explosivo no gatilho.</Portuguese>
|
||||
<Russian>Нет взрывчатки на курок.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DeadManSwitch_displayName">
|
||||
<English>Dead Man's Switch</English>
|
||||
<German>Totmannschalter</German>
|
||||
<French>Mise à feu par relâchement de pression</French>
|
||||
<Czech>Spínač mrtvého muže</Czech>
|
||||
<Polish>Czuwak</Polish>
|
||||
<Spanish>Detonador de hombre muerto</Spanish>
|
||||
<Hungarian>Dead Man's Switch</Hungarian>
|
||||
<Russian>Кнопка мертвеца</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DeadManSwitch_description">
|
||||
<English>Used to remotely trigger explosives when released.</English>
|
||||
<German>Zündet Sprengladungen wenn losgelassen.</German>
|
||||
<French>Déclenche la mise à feu d'un explosif lorsqu'il est libéré.</French>
|
||||
<Czech>Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny</Czech>
|
||||
<Polish>Używany w celu zdalnej detonacji ładunków kiedy jego operator zostanie zabity.</Polish>
|
||||
<Spanish>Utilizado para detonar explosivos remotamente al soltarlo.</Spanish>
|
||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||
<Russian>Используется для дистанционного подрыва, после смерти оператора.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Pickup">
|
||||
<English>Pick up</English>
|
||||
</Key>
|
||||
</Package>
|
||||
<Package name="Explosives">
|
||||
<Key ID="STR_ACE_Explosives_Menu">
|
||||
<English>Explosives</English>
|
||||
<German>Sprengstoffe</German>
|
||||
<Spanish>Explosivos</Spanish>
|
||||
<Polish>Ładunki wybuchowe</Polish>
|
||||
<French>Explosifs</French>
|
||||
<Czech>Výbušniny</Czech>
|
||||
<Italian>Esplosivi</Italian>
|
||||
<Hungarian>Robbanóanyagok</Hungarian>
|
||||
<Portuguese>Explosivos</Portuguese>
|
||||
<Russian>Взрывчатка</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Place">
|
||||
<English>Place >></English>
|
||||
<German>Platzieren >></German>
|
||||
<Spanish>Colocar >></Spanish>
|
||||
<Polish>Umieść >></Polish>
|
||||
<French>Placer >></French>
|
||||
<Czech>Položit >></Czech>
|
||||
<Italian>Piazza >></Italian>
|
||||
<Hungarian>Lerakás >></Hungarian>
|
||||
<Portuguese>Colocar >></Portuguese>
|
||||
<Russian>Установить >></Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Detonate">
|
||||
<English>Detonate >></English>
|
||||
<German>Zünden >></German>
|
||||
<Spanish>Detonar >></Spanish>
|
||||
<Polish>Detonuj >></Polish>
|
||||
<French>Mise à feu >></French>
|
||||
<Czech>Odpálit >></Czech>
|
||||
<Italian>Detona >></Italian>
|
||||
<Hungarian>Robbantás >></Hungarian>
|
||||
<Portuguese>Detonar >></Portuguese>
|
||||
<Russian>Подрыв >></Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DetonateCode">
|
||||
<English>Explosive code: %1</English>
|
||||
<German>Sprengstoffcode: %1</German>
|
||||
<Spanish>Código del explosivo: %1</Spanish>
|
||||
<Polish>Kod ładunku: %1</Polish>
|
||||
<French>Code explosif: %1</French>
|
||||
<Czech>Kód výbušniny: %1</Czech>
|
||||
<Italian>Codice dell'esplosivo : %1</Italian>
|
||||
<Hungarian>Robbanóanyag kódja: %1</Hungarian>
|
||||
<Portuguese>Código do explosivo: %1</Portuguese>
|
||||
<Russian>Код подрыва: %1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PlaceAction">
|
||||
<English>Place</English>
|
||||
<German>Platzieren</German>
|
||||
<Spanish>Colocar</Spanish>
|
||||
<Polish>Umieść</Polish>
|
||||
<French>Placer</French>
|
||||
<Czech>Položit</Czech>
|
||||
<Italian>Piazza</Italian>
|
||||
<Hungarian>Elhelyezés</Hungarian>
|
||||
<Portuguese>Colocar</Portuguese>
|
||||
<Russian>Установить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_CancelAction">
|
||||
<English>Cancel</English>
|
||||
<German>Abbrechen</German>
|
||||
<Spanish>Cancelar</Spanish>
|
||||
<Polish>Anuluj</Polish>
|
||||
<French>Annuler</French>
|
||||
<Czech>Zrušit</Czech>
|
||||
<Italian>Annulla</Italian>
|
||||
<Hungarian>Mégsem</Hungarian>
|
||||
<Portuguese>Cancelar</Portuguese>
|
||||
<Russian>Отмена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_ScrollAction">
|
||||
<English>+ Modifier, rotates</English>
|
||||
<German>+ Modifikator, drehen</German>
|
||||
<Spanish>+ Modificador, girar</Spanish>
|
||||
<French>+ Modificateur, tourner</French>
|
||||
<Italian>+ Modificatore, rotazione</Italian>
|
||||
<Czech>+ Otočit</Czech>
|
||||
<Hungarian>+ Változtatás, forgatás</Hungarian>
|
||||
<Polish>+ modyfikator, obracanie</Polish>
|
||||
<Portuguese>+ Modificador, rotaciona</Portuguese>
|
||||
<Russian>+ Bращать</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Jammer_TurnOn">
|
||||
<English>Turn On Thor III</English>
|
||||
<German>Thor III aktivieren</German>
|
||||
<Spanish>Encender Thor III</Spanish>
|
||||
<Polish>Włącz Thor III</Polish>
|
||||
<French>Allumer Thor III</French>
|
||||
<Czech>Zapnout Thor III</Czech>
|
||||
<Italian>Accendi Thor III</Italian>
|
||||
<Hungarian>Thor III bekapcsolása</Hungarian>
|
||||
<Portuguese>Ativar Thor III</Portuguese>
|
||||
<Russian>Активировать Thor III</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Jammer_TurnOff">
|
||||
<English>Turn Off Thor III</English>
|
||||
<German>Thor III deaktivieren</German>
|
||||
<Spanish>Apagar Thor III</Spanish>
|
||||
<Polish>Wyłącz Thor III</Polish>
|
||||
<French>Éteindre Thor III</French>
|
||||
<Czech>Vypnout Thor III</Czech>
|
||||
<Italian>Spegni Thor III</Italian>
|
||||
<Hungarian>Thor III kikapcsolása</Hungarian>
|
||||
<Portuguese>Desativar Thor III</Portuguese>
|
||||
<Russian>Деактивировать Thor III</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_cellphone_displayName">
|
||||
<English>Cellphone</English>
|
||||
<German>Mobiltelefon</German>
|
||||
<Spanish>Télefono móvil</Spanish>
|
||||
<Polish>Telefon komórkowy</Polish>
|
||||
<French>Téléphone Portable</French>
|
||||
<Czech>Telefon</Czech>
|
||||
<Italian>Cellulare</Italian>
|
||||
<Hungarian>Mobil</Hungarian>
|
||||
<Portuguese>Celular</Portuguese>
|
||||
<Russian>Сотовый телефон</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_cellphone_description">
|
||||
<English>Used to remotely trigger explosives</English>
|
||||
<German>Wird benutzt um Sprengstoffe fernzuzünden</German>
|
||||
<Spanish>Usado para detonar remotamente explosivos</Spanish>
|
||||
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
|
||||
<French>Utilisé pour déclencher des explosifs à distance</French>
|
||||
<Czech>Používaný ke vzdálenému odpalování výbušnin</Czech>
|
||||
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
|
||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||
<Portuguese>Usado para acionar explosivos remotamente</Portuguese>
|
||||
<Russian>Используется для удаленной детонации СВУ</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_clacker_displayName">
|
||||
<English>M57 Firing Device</English>
|
||||
<German>M57 Zündvorrichtung</German>
|
||||
<Spanish>Dispositivo de detonación M57</Spanish>
|
||||
<Polish>Zapalnik M57</Polish>
|
||||
<French>M57 Dispositif de mise à feu</French>
|
||||
<Czech>M57 Odpalovací Zařízení</Czech>
|
||||
<Italian>Detonatore M57</Italian>
|
||||
<Hungarian>M57 Detonátor</Hungarian>
|
||||
<Portuguese>M57 Dispositivo de Detonação</Portuguese>
|
||||
<Russian>Взрыватель M57</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_clacker_description">
|
||||
<English>Used to remotely trigger explosives</English>
|
||||
<German>Wird benutzt um Sprengstoffe fernzuzünden</German>
|
||||
<Spanish>Usado para detonar remotamente explosivos</Spanish>
|
||||
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
|
||||
<French>Utilisé pour déclencher des explosifs à distance</French>
|
||||
<Czech>Použévané ke vzdálenému odpalování výbušnin</Czech>
|
||||
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
|
||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||
<Portuguese>Usado para acionar explosivos remotamente</Portuguese>
|
||||
<Russian>Используется для удаленной детонации зарядов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_M26_displayName">
|
||||
<English>M26 Firing Device</English>
|
||||
<German>M26 Zündvorrichtung</German>
|
||||
<Spanish>Dispositivo de detonación MK26</Spanish>
|
||||
<Polish>Zapalnik M26</Polish>
|
||||
<French>M26 Dispositif de mise à feu</French>
|
||||
<Czech>M26 Odpalovací Zařízení</Czech>
|
||||
<Italian>Detonatore M26</Italian>
|
||||
<Hungarian>M26 Detonátor</Hungarian>
|
||||
<Portuguese>M26 Dispositivo de Detonação</Portuguese>
|
||||
<Russian>Взрыватель M26</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_MK16_displayName">
|
||||
<English>M152 RAMS</English>
|
||||
<German>M152 RAMS</German>
|
||||
<Czech>M152 RAMS</Czech>
|
||||
<French>M152 RAMS</French>
|
||||
<Hungarian>M152 RAMS</Hungarian>
|
||||
<Polish>M152 RAMS</Polish>
|
||||
<Portuguese>M152 RAMS</Portuguese>
|
||||
<Russian>M152 RAMS</Russian>
|
||||
<Spanish>M152 RAMS</Spanish>
|
||||
<Italian>M152 RAMS</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DefusalKit_displayName">
|
||||
<English>Defusal Kit</English>
|
||||
<German>Entschärfungskit</German>
|
||||
<Spanish>Kit de desactivación</Spanish>
|
||||
<Polish>Zestaw do rozbrajania</Polish>
|
||||
<French>Kit de désamorçage</French>
|
||||
<Czech>Zneškodňovací sada</Czech>
|
||||
<Italian>Kit E.O.D.</Italian>
|
||||
<Hungarian>Hatástalanító felszerelés</Hungarian>
|
||||
<Portuguese>Kit de desarme</Portuguese>
|
||||
<Russian>Комплект разминирования</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DefusalKit_description">
|
||||
<English>Allows defusing of explosives</English>
|
||||
<German>Erlaubt die Entschärfung von Sprengstoffen</German>
|
||||
<Spanish>Permite desactivar explosivos</Spanish>
|
||||
<Polish>Umożliwia rozbrajanie ładunków wybuchowych</Polish>
|
||||
<French>Permet de désamorçer des explosifs</French>
|
||||
<Czech>Dovoluje zneškodňování výbušnin</Czech>
|
||||
<Italian>Consente la disattivazione degli ordigni esplosivi</Italian>
|
||||
<Hungarian>Robbanóanyagok hatástalanításához</Hungarian>
|
||||
<Portuguese>Permite o desarme de explosivos</Portuguese>
|
||||
<Russian>Позволяет обезвреживать ВУ</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Phone_AddToSpeedDial">
|
||||
<English>Add to Speed Dial</English>
|
||||
<German>Zur Schnellauswahl hinzufügen</German>
|
||||
<Spanish>Agregar a marcado rápido</Spanish>
|
||||
<Polish>Dodaj do szybkiego wybierania</Polish>
|
||||
<French>Ajouter à la composition rapide</French>
|
||||
<Czech>Přidat jako rychlou volbu</Czech>
|
||||
<Italian>Aggiungi alla selezione rapida</Italian>
|
||||
<Hungarian>Hozzáadás gyorshíváshoz</Hungarian>
|
||||
<Portuguese>Adicionar à ligação rápida</Portuguese>
|
||||
<Russian>Добавить в ускоренный набор</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Clear">
|
||||
<English>Clear</English>
|
||||
<German>Löschen</German>
|
||||
<Spanish>Borrar</Spanish>
|
||||
<Polish>Usuń</Polish>
|
||||
<French>Désamorçé</French>
|
||||
<Czech>Čistý</Czech>
|
||||
<Italian>Libera</Italian>
|
||||
<Hungarian>Törlés</Hungarian>
|
||||
<Portuguese>Limpar</Portuguese>
|
||||
<Russian>Очистить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Phone_Dial">
|
||||
<English>Dial</English>
|
||||
<German>Wählen</German>
|
||||
<Spanish>Marcar</Spanish>
|
||||
<Polish>Wybierz mumer</Polish>
|
||||
<French>Composer</French>
|
||||
<Czech>Vytočit</Czech>
|
||||
<Italian>Composizione numero</Italian>
|
||||
<Hungarian>Tárcsázás</Hungarian>
|
||||
<Portuguese>Discar</Portuguese>
|
||||
<Russian>Hабрать</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Phone_Up">
|
||||
<English>Up</English>
|
||||
<German>Hoch</German>
|
||||
<Spanish>Arriba</Spanish>
|
||||
<Polish>W górę</Polish>
|
||||
<French>Haut</French>
|
||||
<Czech>Nahoru</Czech>
|
||||
<Italian>Sopra</Italian>
|
||||
<Hungarian>Fel</Hungarian>
|
||||
<Portuguese>Cima</Portuguese>
|
||||
<Russian>Вызов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Phone_Down">
|
||||
<English>Down</English>
|
||||
<German>Runter</German>
|
||||
<Spanish>Abajo</Spanish>
|
||||
<Polish>W dół</Polish>
|
||||
<French>Bas</French>
|
||||
<Czech>Dolu</Czech>
|
||||
<Italian>Sotto</Italian>
|
||||
<Hungarian>Le</Hungarian>
|
||||
<Portuguese>Baixo</Portuguese>
|
||||
<Russian>Сброс</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Cancel">
|
||||
<English>Cancel</English>
|
||||
<German>Abbrechen</German>
|
||||
<Spanish>Cancelar</Spanish>
|
||||
<Polish>Anuluj</Polish>
|
||||
<French>Annuler</French>
|
||||
<Czech>Zrušit</Czech>
|
||||
<Italian>Annulla</Italian>
|
||||
<Hungarian>Mégsem</Hungarian>
|
||||
<Portuguese>Cancelar</Portuguese>
|
||||
<Russian>Отмена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DetonateMenu">
|
||||
<English>Detonate Menu</English>
|
||||
<German>"Zünden"-Menü</German>
|
||||
<Spanish>Menú de detonación</Spanish>
|
||||
<Polish>Menu detonowania</Polish>
|
||||
<French>Menu de mise à feu</French>
|
||||
<Czech>Menu Detonace</Czech>
|
||||
<Italian>Menù di detonazione</Italian>
|
||||
<Hungarian>Robbantás menü</Hungarian>
|
||||
<Portuguese>Menu de detonação</Portuguese>
|
||||
<Russian>Меню подрыва</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PlaceMenu">
|
||||
<English>Place Menu</English>
|
||||
<German>"Platzieren"-Menü</German>
|
||||
<Spanish>Menú de colocación</Spanish>
|
||||
<Polish>Menu umieszczania</Polish>
|
||||
<French>Menu Placement</French>
|
||||
<Czech>Menu Umístění</Czech>
|
||||
<Italian>Menù di collocamento</Italian>
|
||||
<Hungarian>Lerakás menü</Hungarian>
|
||||
<Portuguese>Menu de posicionamento</Portuguese>
|
||||
<Russian>Меню детонации</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Defuse">
|
||||
<English>Defuse</English>
|
||||
<German>Entschärfen</German>
|
||||
<Spanish>Desactivar</Spanish>
|
||||
<Polish>Rozbrój</Polish>
|
||||
<French>Désamorçer</French>
|
||||
<Czech>Zneškodnit</Czech>
|
||||
<Italian>Disinnesca</Italian>
|
||||
<Hungarian>Hatástalanítás</Hungarian>
|
||||
<Portuguese>Desarmar</Portuguese>
|
||||
<Russian>Обезвредить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DefusingExplosive">
|
||||
<English>Defusing Explosive...</English>
|
||||
<German>Entschärfe Sprengstoff...</German>
|
||||
<Spanish>Desactivando explosivo...</Spanish>
|
||||
<Polish>Rozbrajanie ładunku...</Polish>
|
||||
<French>Désamorçage des explosifs...</French>
|
||||
<Czech>Zneškodňuji Výbušninu...</Czech>
|
||||
<Italian>Esposivo in fase di disattivazione...</Italian>
|
||||
<Hungarian>Robbanóanyag hatástalaníása...</Hungarian>
|
||||
<Portuguese>Desarmando Explosivo...</Portuguese>
|
||||
<Russian>Обезвреживание...</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_timerName">
|
||||
<English>Timer</English>
|
||||
<German>Zeitzünder</German>
|
||||
<Spanish>Temporizador</Spanish>
|
||||
<Polish>Czasomierz</Polish>
|
||||
<French>Retard</French>
|
||||
<Czech>Časovač</Czech>
|
||||
<Italian>Cronometro</Italian>
|
||||
<Hungarian>Időzített</Hungarian>
|
||||
<Portuguese>Timer</Portuguese>
|
||||
<Russian>Таймер</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TimerMenu">
|
||||
<English>Time: %1m %2s</English>
|
||||
<German>Zeit: %1m %2s</German>
|
||||
<Spanish>Tiempo: %1m %2s</Spanish>
|
||||
<Polish>Czas: %1m %2s</Polish>
|
||||
<French>Temps : %1m %2s</French>
|
||||
<Czech>Čas: %1m %2s</Czech>
|
||||
<Italian>Tempo : %1m %2s</Italian>
|
||||
<Hungarian>Idő: %1m %2s</Hungarian>
|
||||
<Portuguese>Tempo: %1m %2s</Portuguese>
|
||||
<Russian>Время: %1m %2c</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_SetTime">
|
||||
<English>Set Time</English>
|
||||
<German>Zeit einstellen</German>
|
||||
<Spanish>Configurar tiempo</Spanish>
|
||||
<Polish>Ustaw czas</Polish>
|
||||
<French>Régler retard</French>
|
||||
<Czech>Nastavit Čas</Czech>
|
||||
<Italian>Modifica il conto alla rovescia</Italian>
|
||||
<Hungarian>Idő állítása</Hungarian>
|
||||
<Portuguese>Configurar Tempo</Portuguese>
|
||||
<Russian>Установить время</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TriggerMenu">
|
||||
<English>Select a Trigger</English>
|
||||
<German>Wähle einen Zünder</German>
|
||||
<Spanish>Seleccionar un disparador</Spanish>
|
||||
<Polish>Wybierz zapalnik</Polish>
|
||||
<French>Sélectionner une mise à feu</French>
|
||||
<Czech>Zvolit Detonátor</Czech>
|
||||
<Italian>Seleziona un Attivatore</Italian>
|
||||
<Hungarian>Detonátor kiválasztása</Hungarian>
|
||||
<Portuguese>Selecionar um Gatilho</Portuguese>
|
||||
<Russian>Выберите детонатор</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_SelectTrigger">
|
||||
<English>Select</English>
|
||||
<German>Wählen</German>
|
||||
<Spanish>Seleccionar</Spanish>
|
||||
<Polish>Wybierz</Polish>
|
||||
<French>Sélectionner</French>
|
||||
<Czech>Zvolit</Czech>
|
||||
<Italian>Seleziona</Italian>
|
||||
<Hungarian>Kiválasztás</Hungarian>
|
||||
<Portuguese>Selecionar</Portuguese>
|
||||
<Russian>Выбрать</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PressurePlate">
|
||||
<English>Pressure Plate</English>
|
||||
<Polish>Płyta naciskowa</Polish>
|
||||
<Spanish>Placa de presión</Spanish>
|
||||
<German>Druckplatte</German>
|
||||
<French>Plaque de pression</French>
|
||||
<Czech>Nášlapná nástraha</Czech>
|
||||
<Italian>Piastra a Pressione</Italian>
|
||||
<Hungarian>Nyomólap</Hungarian>
|
||||
<Portuguese>Placa de pressão</Portuguese>
|
||||
<Russian>Давление</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TripWire">
|
||||
<English>Tripwire</English>
|
||||
<Polish>Linka naciągu</Polish>
|
||||
<Spanish>Cable trampa</Spanish>
|
||||
<German>Stolperdraht</German>
|
||||
<French>Fil de butée</French>
|
||||
<Czech>Nástražný drát</Czech>
|
||||
<Italian>Filo a Inciampo</Italian>
|
||||
<Hungarian>Botlódrót</Hungarian>
|
||||
<Portuguese>Linha de tração</Portuguese>
|
||||
<Russian>Растяжка</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_IRSensor">
|
||||
<English>IR Sensor</English>
|
||||
<Polish>Czujnik podczerwieni</Polish>
|
||||
<Spanish>Sensor IR</Spanish>
|
||||
<German>Infrarotsensor</German>
|
||||
<French>Capteur IR</French>
|
||||
<Czech>IR Značkovač</Czech>
|
||||
<Italian>Sensore IR</Italian>
|
||||
<Hungarian>IR szenzor</Hungarian>
|
||||
<Portuguese>Sensor IV</Portuguese>
|
||||
<Russian>ИК сенсор</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_NoTriggersAvailable">
|
||||
<English>No triggers available for %1</English>
|
||||
<Polish>Brak dostępnych zapalników dla %1</Polish>
|
||||
<Spanish>No hay detonadores disponibles para %1</Spanish>
|
||||
<German>Keine Auslöser vorhanden für %1</German>
|
||||
<French>Pas de mise à feu disponible pour %1</French>
|
||||
<Czech>Žádný detonátor k dispozici pro %1</Czech>
|
||||
<Italian>Nessun attivatore disponibile per %1</Italian>
|
||||
<Hungarian>Nincs detonátor a %1</Hungarian>
|
||||
<Portuguese>Nenhum gatilho disponível para %1</Portuguese>
|
||||
<Russian>Нет доступных взрывателей для %1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_SLAME_IRSensor">
|
||||
<English>IR Sensor (Side Attack)</English>
|
||||
<Polish>Czujnik podczerwieni (wybuch na bok)</Polish>
|
||||
<Spanish>Sensor IR (ataque lateral)</Spanish>
|
||||
<German>Infrarotsensor (Seitenangriff)</German>
|
||||
<French>Capteur IR (de flanc)</French>
|
||||
<Czech>IR Značkovač (Výbuch stranou)</Czech>
|
||||
<Italian>Sensore IR (Attacco laterale)</Italian>
|
||||
<Hungarian>IR Sensor (Side Attack)</Hungarian>
|
||||
<Portuguese>Sensor infravermelho (ataque lateral)</Portuguese>
|
||||
<Russian>ИК (детонация вбок)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_SLAME_Magnetic">
|
||||
<English>Magnetic Influence Sensor (Bottom Attack)</English>
|
||||
<Polish>Czujnik magnetyczny (wybuch w górę)</Polish>
|
||||
<Spanish>Sensor IM (ataque inferior)</Spanish>
|
||||
<German>Magnetfeldsensor (Bodenangriff)</German>
|
||||
<French>Capteur Magnétique (par le bas)</French>
|
||||
<Czech>Magnetický Senzor (Výbuch ze spoda)</Czech>
|
||||
<Italian>Sensore Magnetico di Prossimità (Attacco inferiore)</Italian>
|
||||
<Hungarian>Mágneses (Bottom Attack)</Hungarian>
|
||||
<Portuguese>Influência magnética (ataque inferior)</Portuguese>
|
||||
<Russian>Магнитный (детонация вверх)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_NoExplosivesAvailable">
|
||||
<English>No explosives on trigger.</English>
|
||||
<German>Keine Sprengladungen auf diesem Auslöser.</German>
|
||||
<Spanish>Ningún explosivo en el detonador.</Spanish>
|
||||
<French>Pas d'explosif à mettre à feu.</French>
|
||||
<Italian>Nessun esplosivo sul sensore.</Italian>
|
||||
<Czech>Žádná výbušnina k odpálení.</Czech>
|
||||
<Hungarian>Nincs robbanóanyag a detonátorhoz.</Hungarian>
|
||||
<Polish>Brak ładunków na zapalnik.</Polish>
|
||||
<Portuguese>Nenhum explosivo no gatilho.</Portuguese>
|
||||
<Russian>Нет доступных ВУ для взрывателя.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DeadManSwitch_displayName">
|
||||
<English>Dead Man's Switch</English>
|
||||
<German>Totmannschalter</German>
|
||||
<French>Mise à feu par relâchement de pression</French>
|
||||
<Czech>Spínač mrtvého muže</Czech>
|
||||
<Polish>Czuwak</Polish>
|
||||
<Spanish>Detonador de hombre muerto</Spanish>
|
||||
<Hungarian>Dead Man's Switch</Hungarian>
|
||||
<Russian>Ловушка мертвеца</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_DeadManSwitch_description">
|
||||
<English>Used to remotely trigger explosives when released.</English>
|
||||
<German>Zündet Sprengladungen wenn losgelassen.</German>
|
||||
<French>Déclenche la mise à feu d'un explosif lorsqu'il est libéré.</French>
|
||||
<Czech>Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny</Czech>
|
||||
<Polish>Używany w celu zdalnej detonacji ładunków kiedy jego operator zostanie zabity.</Polish>
|
||||
<Spanish>Utilizado para detonar explosivos remotamente al soltarlo.</Spanish>
|
||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||
<Russian>Используется для дистанционного подрыва, после смерти оператора.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Pickup">
|
||||
<English>Pick up</English>
|
||||
<German>Aufheben</German>
|
||||
<Spanish>Recoger</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,81 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-12-19 -->
|
||||
<!-- Edited with tabler - 2015-04-10 -->
|
||||
<Project name="ACE">
|
||||
<Package name="FCS">
|
||||
<Key ID="STR_ACE_FCS_LaseTarget">
|
||||
<English>Lase Target / Measure Distance</English>
|
||||
<German>Ziel anlasern / Entfernung Messen</German>
|
||||
<French>Télémétrer la cible</French>
|
||||
<Polish>Naświetl cel / Zmierz odległość</Polish>
|
||||
<Czech>Označit cíl / Změřit vzdálenost</Czech>
|
||||
<Spanish>Iluminar objetivo / Medir distancia</Spanish>
|
||||
<!-- Outdated
|
||||
<Package name="FCS">
|
||||
<Key ID="STR_ACE_FCS_LaseTarget">
|
||||
<English>Lase Target / Measure Distance</English>
|
||||
<German>Ziel anlasern / Entfernung Messen</German>
|
||||
<French>Télémétrer la cible</French>
|
||||
<Polish>Naświetl cel / Zmierz odległość</Polish>
|
||||
<Czech>Označit cíl / Změřit vzdálenost</Czech>
|
||||
<Spanish>Iluminar objetivo / Medir distancia</Spanish>
|
||||
<!-- Outdated
|
||||
<Russian>Установить зероинг</Russian>
|
||||
<Hungarian>Lézeres célmegjelölés</Hungarian>
|
||||
<Portuguese>Marcar Alvo</Portuguese>
|
||||
<Italian>Designatore Laser</Italian>
|
||||
-->
|
||||
<Russian>Подсветить цель / Измерить расстояние</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_ZeroedTo">
|
||||
<English>Zeroed To</English>
|
||||
<German>Haltepunkt</German>
|
||||
<Spanish>Fijado a</Spanish>
|
||||
<Polish>Wyzerowany na</Polish>
|
||||
<Czech>Nastaveno na</Czech>
|
||||
<French>Zéroté à</French>
|
||||
<Russian>Зероинг</Russian>
|
||||
<Hungarian>Nullázás</Hungarian>
|
||||
<Portuguese>Fixado em</Portuguese>
|
||||
<Italian>Azzeramento a</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_AdjustRangeUp">
|
||||
<English>Adjust FCS Range (Up)</English>
|
||||
<German>Entfernung des FLS erhöhen</German>
|
||||
<Polish>Zwiększ zasięg FCS</Polish>
|
||||
<Spanish>Ajustar distancia del FCS (arriba)</Spanish>
|
||||
<Czech>Nastavit FCS Náměr (nahoru)</Czech>
|
||||
<French>Augmenter la distance du SCT</French>
|
||||
<Hungarian>FCS tartomány állítása (Fel)</Hungarian>
|
||||
<Portuguese>Ajustar distância do FCS (Acima)</Portuguese>
|
||||
<Italian>Aumentare la distanza dell'FCS</Italian>
|
||||
<Russian>Диапазон СУО (Выше)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_AdjustRangeDown">
|
||||
<English>Adjust FCS Range (Down)</English>
|
||||
<German>Entfernung des FLS verringern</German>
|
||||
<Polish>Zmniejsz zasięg FCS</Polish>
|
||||
<Spanish>Ajustar distancia del FCS (abajo)</Spanish>
|
||||
<Czech>Nastavit FCS Náměr (dolů)</Czech>
|
||||
<French>Réduire la distance du SCT</French>
|
||||
<Hungarian>FCS tartomány állítása (Le)</Hungarian>
|
||||
<Portuguese>Ajustar distância do FCS (Abaixo)</Portuguese>
|
||||
<Italian>Ridurre la distanza dell'FCS</Italian>
|
||||
<Russian>Диапазон СУО (Ниже)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_ResetFCS">
|
||||
<English>Reset FCS</English>
|
||||
<German>FLS zurücksetzen</German>
|
||||
<Spanish>Reiniciar FCS</Spanish>
|
||||
<French>Réinitialiser le SCT</French>
|
||||
<Polish>Resetuj FCS</Polish>
|
||||
<Czech>Resetovat FCS</Czech>
|
||||
<Hungarian>FCS visszaállítása</Hungarian>
|
||||
<Portuguese>Reiniciar FCS</Portuguese>
|
||||
<Italian>Azzeramento dell'FCS</Italian>
|
||||
<Russian>Обнулить СУО</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_HasBeenReset">
|
||||
<English>FCS has been reset.</English>
|
||||
<German>FLS wurde zurückgesetzt.</German>
|
||||
<Spanish>FCS reiniciado</Spanish>
|
||||
<French>SCT réinitialisé.</French>
|
||||
<Polish>FCS został zresetowany.</Polish>
|
||||
<Czech>FCS byl resetován.</Czech>
|
||||
<Hungarian>Az FCS visszaállítva</Hungarian>
|
||||
<Portuguese>FCS reiniciado.</Portuguese>
|
||||
<Italian>L'FCS è stato azzerato</Italian>
|
||||
<Russian>СУО обнулен</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
<Russian>Подсветить цель / Замерить расстояние</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_ZeroedTo">
|
||||
<English>Zeroed To</English>
|
||||
<German>Haltepunkt</German>
|
||||
<Spanish>Fijado a</Spanish>
|
||||
<Polish>Wyzerowany na</Polish>
|
||||
<Czech>Nastaveno na</Czech>
|
||||
<French>Zéroté à</French>
|
||||
<Russian>Выставлено на</Russian>
|
||||
<Hungarian>Nullázás</Hungarian>
|
||||
<Portuguese>Fixado em</Portuguese>
|
||||
<Italian>Azzeramento a</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_AdjustRangeUp">
|
||||
<English>Adjust FCS Range (Up)</English>
|
||||
<German>Entfernung des FLS erhöhen</German>
|
||||
<Polish>Zwiększ zasięg FCS</Polish>
|
||||
<Spanish>Ajustar distancia del FCS (arriba)</Spanish>
|
||||
<Czech>Nastavit FCS Náměr (nahoru)</Czech>
|
||||
<French>Augmenter la distance du SCT</French>
|
||||
<Hungarian>FCS tartomány állítása (Fel)</Hungarian>
|
||||
<Portuguese>Ajustar distância do FCS (Acima)</Portuguese>
|
||||
<Italian>Aumentare la distanza dell'FCS</Italian>
|
||||
<Russian>Диапазон СУО (Выше)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_AdjustRangeDown">
|
||||
<English>Adjust FCS Range (Down)</English>
|
||||
<German>Entfernung des FLS verringern</German>
|
||||
<Polish>Zmniejsz zasięg FCS</Polish>
|
||||
<Spanish>Ajustar distancia del FCS (abajo)</Spanish>
|
||||
<Czech>Nastavit FCS Náměr (dolů)</Czech>
|
||||
<French>Réduire la distance du SCT</French>
|
||||
<Hungarian>FCS tartomány állítása (Le)</Hungarian>
|
||||
<Portuguese>Ajustar distância do FCS (Abaixo)</Portuguese>
|
||||
<Italian>Ridurre la distanza dell'FCS</Italian>
|
||||
<Russian>Диапазон СУО (Ниже)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_ResetFCS">
|
||||
<English>Reset FCS</English>
|
||||
<German>FLS zurücksetzen</German>
|
||||
<Spanish>Reiniciar FCS</Spanish>
|
||||
<French>Réinitialiser le SCT</French>
|
||||
<Polish>Resetuj FCS</Polish>
|
||||
<Czech>Resetovat FCS</Czech>
|
||||
<Hungarian>FCS visszaállítása</Hungarian>
|
||||
<Portuguese>Reiniciar FCS</Portuguese>
|
||||
<Italian>Azzeramento dell'FCS</Italian>
|
||||
<Russian>Обнулить СУО</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FCS_HasBeenReset">
|
||||
<English>FCS has been reset.</English>
|
||||
<German>FLS wurde zurückgesetzt.</German>
|
||||
<Spanish>FCS reiniciado</Spanish>
|
||||
<French>SCT réinitialisé.</French>
|
||||
<Polish>FCS został zresetowany.</Polish>
|
||||
<Czech>FCS byl resetován.</Czech>
|
||||
<Hungarian>Az FCS visszaállítva</Hungarian>
|
||||
<Portuguese>FCS reiniciado.</Portuguese>
|
||||
<Italian>L'FCS è stato azzerato</Italian>
|
||||
<Russian>СУО обнулен.</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -7,6 +7,8 @@ class CfgVehicles {
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_B,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_smg_01,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_smg_02,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_338,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_93mmg,5);
|
||||
};
|
||||
};
|
||||
|
||||
@ -17,6 +19,8 @@ class CfgVehicles {
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_B,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_smg_01,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_smg_02,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_338,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_93mmg,5);
|
||||
};
|
||||
};
|
||||
|
||||
@ -28,6 +32,8 @@ class CfgVehicles {
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_L,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_smg_01,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_smg_02,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_338,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_93mmg,5);
|
||||
};
|
||||
};
|
||||
|
||||
@ -38,6 +44,8 @@ class CfgVehicles {
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_L,2);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_smg_01,2);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_smg_02,2);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_338,5);
|
||||
MACRO_ADDITEM(ACE_muzzle_mzls_93mmg,5);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,5 +1,231 @@
|
||||
|
||||
class MuzzleSlot;
|
||||
|
||||
class CfgWeapons {
|
||||
|
||||
/* MX */
|
||||
|
||||
class Rifle;
|
||||
class Rifle_Base_F: Rifle {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
|
||||
class arifle_MX_Base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_H"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class arifle_MX_SW_F: arifle_MX_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
// Shit is broken again
|
||||
//compatibleItems[] += {"ACE_muzzle_mzls_H"};
|
||||
compatibleItems[] = {"muzzle_snds_H","muzzle_snds_H_SW","ACE_muzzle_mzls_H"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/* Katiba */
|
||||
|
||||
class arifle_katiba_Base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_H"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/* Other */
|
||||
|
||||
class Rifle_Long_Base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
|
||||
class EBR_base_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_B"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class DMR_01_base_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_B"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class DMR_02_base_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_338"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class DMR_03_base_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_B"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class DMR_05_base_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_93mmg"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class DMR_06_base_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_B"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class MMG_01_base_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_93mmg"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class MMG_02_base_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_338"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class LMG_Mk200_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_H"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class LMG_Zafir_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_B"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/* Assault Rifles */
|
||||
|
||||
class Tavor_base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_L"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class mk20_base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_L"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/* SMGs */
|
||||
|
||||
class pdw2000_base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class SMG_01_Base: Rifle_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class SMG_02_base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/* Pistols */
|
||||
|
||||
class Pistol;
|
||||
class Pistol_Base_F: Pistol {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
|
||||
class hgun_P07_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class hgun_Rook40_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class hgun_ACPC2_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class hgun_Pistol_heavy_01_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/*class hgun_Pistol_heavy_02_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot {
|
||||
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
|
||||
};
|
||||
};
|
||||
};*/
|
||||
|
||||
|
||||
/* Flashsuppressors */
|
||||
|
||||
class ItemCore;
|
||||
class InventoryMuzzleItem_Base_F;
|
||||
|
||||
@ -239,4 +465,96 @@ class CfgWeapons {
|
||||
|
||||
inertia = 0.1;
|
||||
};
|
||||
|
||||
class ACE_muzzle_mzls_338: ACE_muzzle_mzls_H {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
_generalMacro = "ACE_muzzle_mzls_338";
|
||||
displayName = "$STR_ACE_muzzle_mzls_338";
|
||||
picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa";
|
||||
model = "\A3\weapons_f\acc\acca_mzls_H_F";
|
||||
|
||||
class ItemInfo: ItemInfo {
|
||||
mass = 8;
|
||||
soundTypeIndex = 0;
|
||||
muzzleEnd = "zaslehPoint";
|
||||
alternativeFire = "Zasleh2";
|
||||
|
||||
class MagazineCoef {
|
||||
initSpeed = 1.0;
|
||||
};
|
||||
|
||||
class AmmoCoef {
|
||||
hit = 1.0;
|
||||
visibleFire = 0.5;
|
||||
audibleFire = 1.0;
|
||||
visibleFireTime = 0.5;
|
||||
audibleFireTime = 1.0;
|
||||
cost = 1.0;
|
||||
typicalSpeed = 1.0;
|
||||
airFriction = 1.0;
|
||||
};
|
||||
|
||||
class MuzzleCoef {
|
||||
dispersionCoef = "0.9f";
|
||||
artilleryDispersionCoef = "1.0f";
|
||||
fireLightCoef = "0.5f";
|
||||
recoilCoef = "1.0f";
|
||||
recoilProneCoef = "1.0f";
|
||||
minRangeCoef = "1.0f";
|
||||
minRangeProbabCoef = "1.0f";
|
||||
midRangeCoef = "1.0f";
|
||||
midRangeProbabCoef = "1.0f";
|
||||
maxRangeCoef = "1.0f";
|
||||
maxRangeProbabCoef = "1.0f";
|
||||
};
|
||||
};
|
||||
|
||||
inertia = 0.2;
|
||||
};
|
||||
|
||||
class ACE_muzzle_mzls_93mmg: ACE_muzzle_mzls_H {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
_generalMacro = "ACE_muzzle_mzls_93mmg";
|
||||
displayName = "$STR_ACE_muzzle_mzls_93mmg";
|
||||
picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa";
|
||||
model = "\A3\weapons_f\acc\acca_mzls_H_F";
|
||||
|
||||
class ItemInfo: ItemInfo {
|
||||
mass = 8;
|
||||
soundTypeIndex = 0;
|
||||
muzzleEnd = "zaslehPoint";
|
||||
alternativeFire = "Zasleh2";
|
||||
|
||||
class MagazineCoef {
|
||||
initSpeed = 1.0;
|
||||
};
|
||||
|
||||
class AmmoCoef {
|
||||
hit = 1.0;
|
||||
visibleFire = 0.5;
|
||||
audibleFire = 1.0;
|
||||
visibleFireTime = 0.5;
|
||||
audibleFireTime = 1.0;
|
||||
cost = 1.0;
|
||||
typicalSpeed = 1.0;
|
||||
airFriction = 1.0;
|
||||
};
|
||||
|
||||
class MuzzleCoef {
|
||||
dispersionCoef = "0.9f";
|
||||
artilleryDispersionCoef = "1.0f";
|
||||
fireLightCoef = "0.5f";
|
||||
recoilCoef = "1.0f";
|
||||
recoilProneCoef = "1.0f";
|
||||
minRangeCoef = "1.0f";
|
||||
minRangeProbabCoef = "1.0f";
|
||||
midRangeCoef = "1.0f";
|
||||
midRangeProbabCoef = "1.0f";
|
||||
maxRangeCoef = "1.0f";
|
||||
maxRangeProbabCoef = "1.0f";
|
||||
};
|
||||
};
|
||||
|
||||
inertia = 0.2;
|
||||
};
|
||||
};
|
||||
|
@ -3,7 +3,15 @@
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {"ACE_muzzle_mzls_H","ACE_muzzle_mzls_B","ACE_muzzle_mzls_L","ACE_muzzle_mzls_smg_01","ACE_muzzle_mzls_smg_02"};
|
||||
weapons[] = {
|
||||
"ACE_muzzle_mzls_H",
|
||||
"ACE_muzzle_mzls_B",
|
||||
"ACE_muzzle_mzls_L",
|
||||
"ACE_muzzle_mzls_smg_01",
|
||||
"ACE_muzzle_mzls_smg_02",
|
||||
"ACE_muzzle_mzls_338",
|
||||
"ACE_muzzle_mzls_93mmg"
|
||||
};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author[] = {"commy2"};
|
||||
|
@ -4,3 +4,5 @@ ACE_muzzle_mzls_B
|
||||
ACE_muzzle_mzls_L
|
||||
ACE_muzzle_mzls_smg_01
|
||||
ACE_muzzle_mzls_smg_02
|
||||
ACE_muzzle_mzls_338
|
||||
ACE_muzzle_mzls_93mmg
|
||||
|
@ -62,5 +62,29 @@
|
||||
<Russian>Пламегаситель (9 мм)</Russian>
|
||||
<Spanish>Supresor (9 mm)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_muzzle_mzls_338">
|
||||
<English>Flash Suppressor (.338)</English>
|
||||
<Hungarian>Lángrejtő (.338)</Hungarian>
|
||||
<German>Mündungsfeuerdämpfer (.338)</German>
|
||||
<Italian>Soppressore di fiamma (.338)</Italian>
|
||||
<Portuguese>Supressor de Clarão (.338)</Portuguese>
|
||||
<Polish>Tłumik płomieni (.338)</Polish>
|
||||
<Czech>Tlumič záblesku (.338)</Czech>
|
||||
<French>Cache-flamme (.338)</French>
|
||||
<Russian>Пламегаситель (.338)</Russian>
|
||||
<Spanish>Supresor (.338)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_muzzle_mzls_93mmg">
|
||||
<English>Flash Suppressor (9.3 mm)</English>
|
||||
<Hungarian>Lángrejtő (9,3 mm)</Hungarian>
|
||||
<German>Mündungsfeuerdämpfer (9,3 mm)</German>
|
||||
<Italian>Soppressore di fiamma (9.3mm)</Italian>
|
||||
<Portuguese>Supressor de Clarão (9,3mm)</Portuguese>
|
||||
<Polish>Tłumik płomieni (9,3 mm)</Polish>
|
||||
<Czech>Tlumič záblesku (9,3 mm)</Czech>
|
||||
<French>Cache-flamme (9,3 mm)</French>
|
||||
<Russian>Пламегаситель (9,3 мм)</Russian>
|
||||
<Spanish>Supresor (9,3 mm)</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,18 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Project name="Arma2">
|
||||
<Package name="ACE2">
|
||||
<Container name="frag">
|
||||
<Key ID="STR_DN_ACE_FRAG">
|
||||
<English>(Æ) Disable Fragmentation</English>
|
||||
<Czech>(Æ) Zakázat fragmentaci granátů</Czech>
|
||||
<German>(Æ) Weapons: Keine Schrapnelle</German>
|
||||
<Polish>(Æ) Wyłącz głowice fragmentacyjne</Polish>
|
||||
<Russian>(Æ) Выключить разлёт осколков</Russian>
|
||||
<French>(Æ) Disable Fragmentation</French>
|
||||
<Spanish>(Æ) Disable Fragmentation</Spanish>
|
||||
<Italian>(Æ) Disable Fragmentation</Italian>
|
||||
<Hungarian>(Æ) Disable Fragmentation</Hungarian>
|
||||
</Key>
|
||||
</Container>
|
||||
</Package>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Frag">
|
||||
<Key ID="STR_DN_ACE_FRAG">
|
||||
<English>Disable Fragmentation</English>
|
||||
<German>Keine Schrapnelle</German>
|
||||
<Czech>Zakázat fragmentaci granátů</Czech>
|
||||
<Spanish>Desactivar fragmentación</Spanish>
|
||||
<Polish>Wyłącz głowice fragmentacyjne</Polish>
|
||||
<Russian>Выключить разлёт осколков</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -16,4 +16,5 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (GVAR(showInThirdPerson)) exitWith { false };
|
||||
(cameraView == "External")
|
||||
|
||||
(cameraView in ["EXTERNAL", "GROUP"] || {call EFUNC(common,isFeatureCameraActive)})
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-12-19 -->
|
||||
<!-- Edited with tabler - 2015-04-10 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Goggles">
|
||||
<Key ID="STR_ACE_Goggles_ShowInThirdPerson">
|
||||
@ -8,7 +8,7 @@
|
||||
<Spanish>Mostrar efectos de las gafas en tercera persona</Spanish>
|
||||
<Czech>Zobrazit účinky brýlí v třetí osobě</Czech>
|
||||
<French>Effets de lunettes à la 3ème personne</French>
|
||||
<Russian>Отображать эффект очков в третьем лице</Russian>
|
||||
<Russian>Отображать эффект очков от третьего лица</Russian>
|
||||
<Hungarian>Szemüveg effekt mutatása külső nézetből</Hungarian>
|
||||
<Polish>Włącz efekty gogli w trzeciej osobie</Polish>
|
||||
<Portuguese>Mostrar efeitos de óculos em Terceira Pessoa</Portuguese>
|
||||
@ -27,4 +27,4 @@
|
||||
<Italian>Pulisci gli occhiali</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-09-11 -->
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2015-04-10 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Grenades">
|
||||
<Key ID="STR_ACE_Grenades_SwitchGrenadeMode">
|
||||
@ -93,7 +93,7 @@
|
||||
<French>Les grenades incapacitantes servent à désorienter ou distraire une menace pendant quelques secondes.</French>
|
||||
<Polish>Granat ogłusza, nie zabijając przeciwnika. Detonacja daje efekt oślepiającego błysku i głośnego huku.</Polish>
|
||||
<Czech>Omračující granát je taktická nesmrtící zbraň používaná při záchraně rukojmí a zvládání davu.</Czech>
|
||||
<Russian>Граната XM84 (M84) - не летального действия, и предназначена для отвлечения и временного вывода из строя, либо дезориентации противника. Основное использование нашла при освобождении заложников, захвате преступников и террористов, а также проведении диверсионных миссий.</Russian>
|
||||
<Russian>XM84 (M84) - граната нелетального действия, и предназначена для отвлечения и временного вывода из строя, либо дезориентации противника. Основное использование нашла при освобождении заложников, захвате преступников и террористов, а также проведении диверсионных миссий.</Russian>
|
||||
<Hungarian>Eldobás után felrobban és éles hang, valamint fényhatással zavarja össze a környezetében tartózkodókat.</Hungarian>
|
||||
<Italian>Anche conosciuta come flashbang. Causa accecamento immediato, sensazioni di sposatezza, mancanza d'equilibrio e disturbi al timpano.</Italian>
|
||||
<Portuguese>Um tipo de granada não-letal destinado a confundir, desorientar e distrair uma potencial ameaça.</Portuguese>
|
||||
@ -243,4 +243,4 @@
|
||||
<Spanish>M127A1 (Amarilla)</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-12-17 -->
|
||||
<!-- Edited with tabler - 2015-04-10 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Hearing">
|
||||
<Key ID="STR_ACE_Hearing_EarPlugs_Name">
|
||||
@ -100,7 +100,9 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_DisableEarRinging">
|
||||
<English>Disable ear ringing</English>
|
||||
<German>Deaktiviere Ohrfiepen</German>
|
||||
<Spanish>Desactivar zumbido de oídos</Spanish>
|
||||
<Russian>Отключить эффект баротравмы</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -32,7 +32,7 @@ GVAR(openedMenuType) = _menuType;
|
||||
|
||||
GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) ||
|
||||
visibleMap ||
|
||||
{(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction)}};
|
||||
{(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction) || {cameraView == "GUNNER"}}};
|
||||
if (GVAR(useCursorMenu)) then {
|
||||
createDialog QGVAR(cursorMenu);
|
||||
// The dialog sets:
|
||||
|
@ -23,7 +23,7 @@ _fnc_renderNearbyActions = {
|
||||
#define MAXINTERACTOBJECTS 3
|
||||
|
||||
_numInteractObjects = 0;
|
||||
_nearestObjects = nearestObjects [(getPos ACE_player), ["All"], 15];
|
||||
_nearestObjects = nearestObjects [ACE_player, ["All"], 15];
|
||||
{
|
||||
_target = _x;
|
||||
|
||||
|
@ -1,21 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2015-04-03 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Interact_Menu">
|
||||
<Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction">
|
||||
<English>Always display cursor for self interaction</English>
|
||||
<German>Immer den Cursor für Selbst-Interaktionen anzeigen.</German>
|
||||
<Spanish>Mostrar siempre el cursor para la interacción propia</Spanish>
|
||||
<Russian>Всегда показывать курсор для взаимодействия с собой</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_InteractKey">
|
||||
<English>Interact Key</English>
|
||||
<German>Fremdinteraktionsmenü-Taste</German>
|
||||
<Spanish>Tecla de interacción</Spanish>
|
||||
<Russian>Клавиша взаимодействия</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_SelfInteractKey">
|
||||
<English>Self Interaction Key</English>
|
||||
<German>Eigeninteraktionsmenü-Taste</German>
|
||||
<Spanish>Tecla de interacción propia</Spanish>
|
||||
<Russian>Клавиша взаимодействия (с собой)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_SelfActionsRoot">
|
||||
<English>Self Actions</English>
|
||||
<German>Selbst-Aktionen</German>
|
||||
<Spanish>Acciones propias</Spanish>
|
||||
<Russian>Действия с собой</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_VehicleActionsRoot">
|
||||
<English>Vehicle Actions</English>
|
||||
<German>Fahrzeug-Aktionen</German>
|
||||
<Spanish>Acciones de vehículo</Spanish>
|
||||
<Russian>Действия на транспорте</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,30 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-12-20 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Interaction">
|
||||
<Key ID="STR_ACE_Interaction_MainAction">
|
||||
<English>Interactions</English>
|
||||
<German>Interaktionen</German>
|
||||
<Spanish>Interacciones</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Torso">
|
||||
<English>Torso</English>
|
||||
<German>Torso</German>
|
||||
<Spanish>Torso</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Head">
|
||||
<English>Head</English>
|
||||
<German>Kopf</German>
|
||||
<Spanish>Cabeza</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_ArmLeft">
|
||||
<English>Left Arm</English>
|
||||
<German>Linker Arm</German>
|
||||
<Spanish>Brazo izquierdo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_ArmRight">
|
||||
<English>Right Arm</English>
|
||||
<German>Rechter Arm</German>
|
||||
<Spanish>Brazo derecho</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_LegLeft">
|
||||
<English>Left Leg</English>
|
||||
<German>Linkes Bein</German>
|
||||
<Spanish>Pierna izquierda</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_LegRight">
|
||||
<English>Right Leg</English>
|
||||
<German>Rechtes Bein</German>
|
||||
<Spanish>Pierna derecha</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Weapon">
|
||||
<English>Weapon</English>
|
||||
<German>Waffe</German>
|
||||
<Spanish>Arma</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_InteractionMenu">
|
||||
<English>Interaction Menu</English>
|
||||
@ -365,7 +380,7 @@
|
||||
<Key ID="STR_ACE_Interaction_YouWereTappedRight">
|
||||
<English>You were tapped on the RIGHT shoulder</English>
|
||||
<Spanish>Te tocaron el hombro DERECHO</Spanish>
|
||||
<German>Dir wurde auf die Schulter geklopft</German>
|
||||
<German>Dir wurde auf die Rechte Schulter geklopft</German>
|
||||
<French>On te tape sur l'épaule</French>
|
||||
<Polish>Zostałeś klepnięty po ramieniu</Polish>
|
||||
<Hungarian>Vállonveregettek</Hungarian>
|
||||
@ -377,7 +392,7 @@
|
||||
<Key ID="STR_ACE_Interaction_YouWereTappedLeft">
|
||||
<English>You were tapped on the LEFT shoulder.</English>
|
||||
<Spanish>Te tocaron el hombro IZQUIERDO.</Spanish>
|
||||
<German>Dir wurde auf die Schulter geklopft</German>
|
||||
<German>Dir wurde auf die Linke Schulter geklopft</German>
|
||||
<French>On te tape sur l'épaule.</French>
|
||||
<Polish>Zostałeś klepnięty po ramieniu</Polish>
|
||||
<Hungarian>Vállonveregettek</Hungarian>
|
||||
@ -608,7 +623,7 @@
|
||||
<Polish>Modyfikator</Polish>
|
||||
<French>Modifier la touche</French>
|
||||
<Spanish>Tecla modificadora</Spanish>
|
||||
<Russian>клавиша-модификатор</Russian>
|
||||
<Russian>Клавиша-модификатор</Russian>
|
||||
<Portuguese>Tecla Modificadora</Portuguese>
|
||||
<Italian>Modifica Tasto</Italian>
|
||||
<Hungarian>Módosító billentyű</Hungarian>
|
||||
@ -655,6 +670,9 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Passengers">
|
||||
<English>Passengers</English>
|
||||
<German>Fahrzeuginsassen</German>
|
||||
<Spanish>Pasajeros</Spanish>
|
||||
<Russian>Пассажиры</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,12 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2015-02-13 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Inventory">
|
||||
<Key ID="STR_ACE_Inventory_SettingName">
|
||||
<English>Make Inventory Display Bigger</English>
|
||||
</Key>
|
||||
<German>Erhöhe die angezeigte Inventargröße</German>
|
||||
<Spanish>Hacer la pantalla de inventario mas grande</Spanish>
|
||||
<Russian>Сделать окно инвентаря больше</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Inventory_SettingDescription">
|
||||
<English>Normally inventory display is scaled by UI size. This allows scaling the Inventory UI size up, but doesn't increase font size allowing more rows displayed.</English>
|
||||
<German>Im Regelfall wird die Inventargröße durch die Größe der Nutzeroberfläche bestimmt. Diese Einstellung erlaubt es das Inventar unter Ausschluss der Schriftgröße zu vergrößern. Dadurch können mehr Gegenstände angezeigt werden.</German>
|
||||
<Spanish>Normalmente la pantalla de inventario se escala por el tamaño de la interfaz de usuario. Esto permite ampliar el tamaño de la interfaz de usuario de inventario, pero no aumenta el tamaño de fuente, permitiendo mostrar más filas.</Spanish>
|
||||
<Russian>Обычно, окно инвентаря зависит от размеров пользовательского интерфейса. Эта настройка позволяет увеличить размер окна инвентаря в пользовательском интерфейсе, не увеличивая размера шрифтов, так что отображется большее количество строк.</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
1
addons/javelin/$PBOPREFIX$
Normal file
1
addons/javelin/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\javelin
|
@ -9,10 +9,4 @@ class Extended_PostInit_EventHandlers {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_post_init));
|
||||
clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_FiredBIS_EventHandlers {
|
||||
class CAManBase {
|
||||
ADDON = QUOTE(_this call FUNC(fired));
|
||||
};
|
||||
};
|
13
addons/javelin/CfgWeapons.hpp
Normal file
13
addons/javelin/CfgWeapons.hpp
Normal file
@ -0,0 +1,13 @@
|
||||
class CfgWeapons {
|
||||
class Launcher;
|
||||
class Launcher_Base_F : Launcher {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
|
||||
class launch_Titan_base : Launcher_Base_F {
|
||||
weaponInfoType = "ACE_RscOptics_javelin";
|
||||
|
||||
lockingTargetSound[] = {"",0,1};
|
||||
lockedTargetSound[] = {"",0,1};
|
||||
};
|
||||
};
|
@ -1,4 +1,4 @@
|
||||
ace_wep_javelin
|
||||
ace_javelin
|
||||
===============
|
||||
|
||||
Adds the Javelin AT launcher.
|
||||
@ -9,4 +9,3 @@ Adds the Javelin AT launcher.
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [jaynus](https://github.com/walterpearce)
|
||||
- [NouberNou](https://github.com/NouberNou)
|
@ -10,9 +10,9 @@ class RscLine;
|
||||
// Taken from AGM for optics management.
|
||||
|
||||
class RscInGameUI {
|
||||
class RscOptics_titan {
|
||||
class ACE_RscOptics_javelin {
|
||||
idd = 300;
|
||||
controls[] = {"ACE_javelin_elements_group"};
|
||||
controls[] = { "ACE_javelin_elements_group", "CA_Distance", "ACE_Targeting" }; //, "ACE_TargetingConstrains", "ACE_TargetingGate", "ACE_TargetingLines"};
|
||||
onLoad = QUOTE(_this call FUNC(onOpticLoad));
|
||||
onUnload = "uiNameSpace setVariable ['ACE_RscOptics_javelin',nil];";
|
||||
|
||||
@ -94,6 +94,7 @@ class RscInGameUI {
|
||||
x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.307/4)*3*SafezoneH - SafezoneX";
|
||||
colorText[] = {0.2941,0.8745,0.2157,1};
|
||||
};
|
||||
/*
|
||||
class StadiaL: RscLine {
|
||||
x = "0.4899*SafezoneW - SafezoneX";
|
||||
y = "0.171*SafezoneH - SafezoneY";
|
||||
@ -136,6 +137,7 @@ class RscInGameUI {
|
||||
h = 0;
|
||||
colorText[] = {0.2941,0.8745,0.2157,1};
|
||||
};
|
||||
*/
|
||||
};
|
||||
};
|
||||
class ACE_javelin_NFOV_mode_off: ACE_javelin_Day_mode_off {
|
||||
@ -167,6 +169,7 @@ class RscInGameUI {
|
||||
y = "0.031*SafezoneH - SafezoneY";
|
||||
colorText[] = {0.2941,0.8745,0.2157,1};
|
||||
};
|
||||
/*
|
||||
class StadiaL: RscLine {
|
||||
x = "0.4788*SafezoneW - SafezoneX";
|
||||
y = "0.171*SafezoneH - SafezoneY";
|
||||
@ -209,15 +212,83 @@ class RscInGameUI {
|
||||
h = "0.1895*SafezoneH";
|
||||
colorText[] = {0.2941,0.8745,0.2157,1};
|
||||
};
|
||||
*/
|
||||
};
|
||||
};
|
||||
/*
|
||||
class TargetingConstrains: RscControlsGroup {
|
||||
idc = 699100;
|
||||
|
||||
class ACE_javelin_SEEK_off: ACE_javelin_Day_mode_off {
|
||||
idc = 699000;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.863/4)*3*SafezoneH - SafezoneX";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\seek_co.paa";
|
||||
};
|
||||
class ACE_javelin_SEEK: ACE_javelin_SEEK_off {
|
||||
idc = 166;
|
||||
colorText[] = {0.2941,0.8745,0.2157,0};
|
||||
};
|
||||
class ACE_javelin_Missle_off: ACE_javelin_Day_mode_off {
|
||||
idc = 1032;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (-0.134/4)*3*SafezoneH - SafezoneX";
|
||||
y = "(SafezoneY + 0.208*SafezoneH) - SafezoneY";
|
||||
colorText[] = {0.2941,0.2941,0.2941,1};
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\missle_co.paa";
|
||||
};
|
||||
class ACE_javelin_Missle: ACE_javelin_Missle_off {
|
||||
idc = 167;
|
||||
colorText[] = {0.9255,0.5216,0.1216,0};
|
||||
};
|
||||
class ACE_javelin_CLU_off: ACE_javelin_Missle_off {
|
||||
idc = 1027;
|
||||
y = "(SafezoneY + 0.436*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\clu_co.paa";
|
||||
};
|
||||
class ACE_javelin_HangFire_off: ACE_javelin_Missle_off {
|
||||
idc = 1028;
|
||||
y = "(SafezoneY + 0.669*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\hangfire_co.paa";
|
||||
};
|
||||
class ACE_javelin_TOP_off: ACE_javelin_Day_mode_off {
|
||||
idc = 699001;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX";
|
||||
y = "(SafezoneY + 0.208*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\top_co.paa";
|
||||
colorText[] = {0.2941,0.8745,0.2157,1};
|
||||
};
|
||||
class ACE_javelin_DIR: ACE_javelin_Day_mode {
|
||||
idc = 699002;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX";
|
||||
y = "(SafezoneY + 0.436*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\dir_co.paa";
|
||||
colorText[] = {0.2941,0.2941,0.2941,1};
|
||||
};
|
||||
class ACE_javelin_FLTR_mode_off: ACE_javelin_Day_mode_off {
|
||||
idc = 1002;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX";
|
||||
y = "(SafezoneY + 0.669*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\fltr_co.paa";
|
||||
};
|
||||
class ACE_javelin_FLTR_mode: ACE_javelin_FLTR_mode_off {
|
||||
idc = 161;
|
||||
colorText[] = {0.2941,0.8745,0.2157,1};
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_Targeting : RscControlsGroup {
|
||||
idc = 6999;
|
||||
|
||||
x = "SafezoneX";
|
||||
y = "SafezoneY";
|
||||
w = "SafezoneW";
|
||||
h = "SafezoneH";
|
||||
|
||||
enabled = 0;
|
||||
class Controls {
|
||||
class ACE_TargetingConstrains: RscControlsGroup {
|
||||
x = "SafezoneX";
|
||||
y = "SafezoneY";
|
||||
w = "SafezoneW-SafezoneX";
|
||||
h = "SafezoneH-SafezoneY";
|
||||
|
||||
enabled = 0;
|
||||
class VScrollbar {
|
||||
autoScrollSpeed = -1;
|
||||
autoScrollDelay = 5;
|
||||
@ -258,18 +329,18 @@ class RscInGameUI {
|
||||
idc = 699105;
|
||||
text = PATHTOF(data\javelin_ui_border_ca.paa);
|
||||
colorText[] = {0,0,0,1};
|
||||
x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX";
|
||||
x = "((SafezoneW -(3.1/4)*SafezoneH)/2) - SafezoneX";
|
||||
y = "0.15*SafezoneH-SafezoneY";
|
||||
w = "(3/4)*SafezoneH";
|
||||
w = "(3.1/4)*SafezoneH";
|
||||
h = "0.7*SafezoneH";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class TargetingGate: TargetingConstrains {
|
||||
class ACE_TargetingGate : ACE_TargetingConstrains {
|
||||
idc = 699200;
|
||||
class Controls {
|
||||
class TargetingGateTL: TargetingConstrains {
|
||||
class TargetingGateTL: ACE_TargetingConstrains {
|
||||
x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX";
|
||||
y = "0.15*SafezoneH - SafezoneY";
|
||||
idc = 699201;
|
||||
@ -351,8 +422,9 @@ class RscInGameUI {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class TargetingLines: TargetingConstrains {
|
||||
|
||||
|
||||
class ACE_TargetingLines: ACE_TargetingConstrains {
|
||||
idc = 699300;
|
||||
class Controls {
|
||||
class LineH: RscLine {
|
||||
@ -373,62 +445,6 @@ class RscInGameUI {
|
||||
};
|
||||
};
|
||||
};
|
||||
*/
|
||||
|
||||
class ACE_javelin_SEEK_off: ACE_javelin_Day_mode_off {
|
||||
idc = 699000;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.863/4)*3*SafezoneH - SafezoneX";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\seek_co.paa";
|
||||
};
|
||||
class ACE_javelin_SEEK: ACE_javelin_SEEK_off {
|
||||
idc = 166;
|
||||
colorText[] = {0.2941,0.8745,0.2157,0};
|
||||
};
|
||||
class ACE_javelin_Missle_off: ACE_javelin_Day_mode_off {
|
||||
idc = 1032;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (-0.134/4)*3*SafezoneH - SafezoneX";
|
||||
y = "(SafezoneY + 0.208*SafezoneH) - SafezoneY";
|
||||
colorText[] = {0.2941,0.2941,0.2941,1};
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\missle_co.paa";
|
||||
};
|
||||
class ACE_javelin_Missle: ACE_javelin_Missle_off {
|
||||
idc = 167;
|
||||
colorText[] = {0.9255,0.5216,0.1216,0};
|
||||
};
|
||||
class ACE_javelin_CLU_off: ACE_javelin_Missle_off {
|
||||
idc = 1027;
|
||||
y = "(SafezoneY + 0.436*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\clu_co.paa";
|
||||
};
|
||||
class ACE_javelin_HangFire_off: ACE_javelin_Missle_off {
|
||||
idc = 1028;
|
||||
y = "(SafezoneY + 0.669*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\hangfire_co.paa";
|
||||
};
|
||||
class ACE_javelin_TOP_off: ACE_javelin_Day_mode_off {
|
||||
idc = 699001;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX";
|
||||
y = "(SafezoneY + 0.208*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\top_co.paa";
|
||||
colorText[] = {0.2941,0.8745,0.2157,1};
|
||||
};
|
||||
class ACE_javelin_DIR: ACE_javelin_Day_mode {
|
||||
idc = 699002;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX";
|
||||
y = "(SafezoneY + 0.436*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\dir_co.paa";
|
||||
colorText[] = {0.2941,0.2941,0.2941,1};
|
||||
};
|
||||
class ACE_javelin_FLTR_mode_off: ACE_javelin_Day_mode_off {
|
||||
idc = 1002;
|
||||
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX";
|
||||
y = "(SafezoneY + 0.669*SafezoneH) - SafezoneY";
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\fltr_co.paa";
|
||||
};
|
||||
class ACE_javelin_FLTR_mode: ACE_javelin_FLTR_mode_off {
|
||||
idc = 161;
|
||||
colorText[] = {0.2941,0.8745,0.2157,1};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,13 +1,10 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
PREP(fired);
|
||||
|
||||
PREP(translateToWeaponSpace);
|
||||
PREP(translateToModelSpace);
|
||||
|
||||
PREP(lockKeyDown);
|
||||
PREP(lockKeyUp);
|
||||
|
||||
PREP(cycleFireMode);
|
||||
PREP(showFireMode);
|
||||
|
||||
PREP(onOpticLoad);
|
||||
PREP(onOpticDraw);
|
@ -5,11 +5,12 @@ class CfgPatches {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_laser"};
|
||||
requiredAddons[] = { "ace_main", "ace_common", "ace_missileguidance" };
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventhandlers.hpp"
|
||||
#include "RscInGameUI.hpp"
|
||||
#include "CfgSounds.hpp"
|
||||
#include "CfgSounds.hpp"
|
||||
#include "CfgWeapons.hpp"
|
13
addons/javelin/functions/fnc_cycleFireMode.sqf
Normal file
13
addons/javelin/functions/fnc_cycleFireMode.sqf
Normal file
@ -0,0 +1,13 @@
|
||||
//#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
TRACE_1("enter", _this);
|
||||
|
||||
private["_player", "_currentFireMode"];
|
||||
|
||||
_currentFireMode = ACE_player getVariable["ace_missileguidance_attackProfile", "TOP"];
|
||||
if(_currentFireMode == "LIN") then {
|
||||
_currentFireMode = "TOP";
|
||||
} else {
|
||||
_currentFireMode = "LIN";
|
||||
};
|
||||
ACE_player setVariable["ace_missileguidance_attackProfile", _currentFireMode, false];
|
3
addons/javelin/functions/fnc_lockKeyDown.sqf
Normal file
3
addons/javelin/functions/fnc_lockKeyDown.sqf
Normal file
@ -0,0 +1,3 @@
|
||||
//#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
TRACE_1("enter", _this);
|
3
addons/javelin/functions/fnc_lockKeyUp.sqf
Normal file
3
addons/javelin/functions/fnc_lockKeyUp.sqf
Normal file
@ -0,0 +1,3 @@
|
||||
//#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
TRACE_1("enter", _this);
|
211
addons/javelin/functions/fnc_onOpticDraw.sqf
Normal file
211
addons/javelin/functions/fnc_onOpticDraw.sqf
Normal file
@ -0,0 +1,211 @@
|
||||
//#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
//TRACE_1("enter", _this);
|
||||
|
||||
#define __TRACKINTERVAL 0 // how frequent the check should be.
|
||||
#define __LOCKONTIME 3.0 // Lock on won't occur sooner
|
||||
#define __LOCKONTIMERANDOM 0.3 // Deviation in lock on time
|
||||
#define __SENSORSQUARE 1 // Locking on sensor square side in angles
|
||||
|
||||
#define __OffsetX ((ctrlPosition __JavelinIGUITargetingLineV) select 0) - 0.5
|
||||
#define __OffsetY ((ctrlPosition __JavelinIGUITargetingLineH) select 1) - 0.5
|
||||
|
||||
private["_args", "_lastTick", "_runTime", "_soundTime", "_lockTime", "_newTarget", "_currentTarget", "_range", "_pos", "_targetArray"];
|
||||
|
||||
// Reset arguments if we havnt rendered in over a second
|
||||
_args = uiNamespace getVariable[QGVAR(arguments), [] ];
|
||||
if( (count _args) > 0) then {
|
||||
_lastTick = _args select 0;
|
||||
if(diag_tickTime - _lastTick > 1) then {
|
||||
[] call FUNC(onOpticLoad);
|
||||
};
|
||||
};
|
||||
|
||||
// Pull the arguments
|
||||
_currentTarget = _args select 1;
|
||||
_runTime = _args select 2;
|
||||
_lockTime = _args select 3;
|
||||
_soundTime = _args select 4;
|
||||
|
||||
// Find a target within the optic range
|
||||
_newTarget = objNull;
|
||||
|
||||
// Bail on fast movement
|
||||
if ((velocity ACE_player) distance [0,0,0] > 0.5 && {cameraView == "GUNNER"} && {cameraOn == ACE_player}) exitWith { // keep it steady.
|
||||
ACE_player switchCamera "INTERNAL";
|
||||
};
|
||||
|
||||
// Refresh the firemode
|
||||
[] call FUNC(showFireMode);
|
||||
|
||||
// Only start locking on holding tab
|
||||
if(!GVAR(isLockKeyDown)) exitWith { false };
|
||||
|
||||
_range = parseNumber (ctrlText __JavelinIGUIRangefinder);
|
||||
if (_range > 50 && {_range < 2500}) then {
|
||||
_pos = positionCameraToWorld [0,0,_range];
|
||||
_targetArray = _pos nearEntities ["AllVehicles", _range/25];
|
||||
if (count (_targetArray) > 0) then {
|
||||
_newTarget = _targetArray select 0;
|
||||
};
|
||||
};
|
||||
|
||||
if (isNull _newTarget) then {
|
||||
_newTarget = cursorTarget;
|
||||
};
|
||||
|
||||
// Create constants
|
||||
_constraintTop = __ConstraintTop;
|
||||
_constraintLeft = __ConstraintLeft;
|
||||
_constraintBottom = __ConstraintBottom;
|
||||
_constraintRight = __ConstraintRight;
|
||||
|
||||
_offsetX = __OffsetX;
|
||||
_offsetY = __OffsetY;
|
||||
|
||||
__JavelinIGUITargeting ctrlShow true;
|
||||
__JavelinIGUITargetingConstrains ctrlShow true;
|
||||
|
||||
if (isNull _newTarget) then {
|
||||
// No targets found
|
||||
_currentTarget = objNull;
|
||||
_lockTime = 0;
|
||||
|
||||
__JavelinIGUISeek ctrlSetTextColor __ColorGray;
|
||||
__JavelinIGUINFOV ctrlSetTextColor __ColorGreen;
|
||||
__JavelinIGUITargetingGate ctrlShow false;
|
||||
__JavelinIGUITargetingLines ctrlShow false;
|
||||
|
||||
ACE_player setVariable ["ace_missileguidance_target",nil, false];
|
||||
|
||||
// Disallow fire
|
||||
//if (ACE_player ammo "Javelin" > 0 || {ACE_player ammo "ACE_Javelin_Direct" > 0}) then {ACE_player setWeaponReloadingTime //[player, "Javelin", 0.2];};
|
||||
} else {
|
||||
if (_newTarget distance ACE_player < 2500
|
||||
// && {(call CBA_fnc_getFoV) select 1 > 7}
|
||||
// && { (currentVisionMode ACE_player == 2)}
|
||||
) then {
|
||||
// Lock on after 3 seconds
|
||||
if(_currentTarget != _newTarget) then {
|
||||
TRACE_1("New Target, reseting locking", _newTarget);
|
||||
_lockTime = diag_tickTime;
|
||||
_currentTarget = _newTarget;
|
||||
|
||||
playSound "ACE_Javelin_Locking";
|
||||
} else {
|
||||
if(diag_tickTime - _lockTime > __LOCKONTIME) then {
|
||||
TRACE_2("LOCKED!", _currentTarget, _lockTime);
|
||||
|
||||
__JavelinIGUISeek ctrlSetTextColor __ColorGreen;
|
||||
__JavelinIGUINFOV ctrlSetTextColor __ColorNull;
|
||||
__JavelinIGUITargeting ctrlShow true;
|
||||
__JavelinIGUITargetingConstrains ctrlShow true;
|
||||
__JavelinIGUITargetingGate ctrlShow true;
|
||||
__JavelinIGUITargetingLines ctrlShow true;
|
||||
|
||||
_zamerny = if (_currentTarget isKindOf "CAManBase") then {_currentTarget selectionPosition "body"} else {_currentTarget selectionPosition "zamerny"};
|
||||
_randomPosWithinBounds = [(_zamerny select 0) + 1 - (random 2.0),(_zamerny select 1) + 1 - (random 2.0),(_zamerny select 2) + 0.5 - (random 1.0)];
|
||||
|
||||
_apos = worldToScreen (_currentTarget modelToWorld _randomPosWithinBounds);
|
||||
|
||||
_aposX = 0;
|
||||
_aposY = 0;
|
||||
if (count _apos < 2) then {
|
||||
_aposX = 1;
|
||||
_aposY = 0;
|
||||
} else {
|
||||
_aposX = (_apos select 0) + _offsetX;
|
||||
_aposY = (_apos select 1) + _offsetY;
|
||||
};
|
||||
|
||||
// Move target marker to coords.
|
||||
__JavelinIGUITargetingLineV ctrlSetPosition [_aposX,ctrlPosition __JavelinIGUITargetingLineV select 1];
|
||||
__JavelinIGUITargetingLineH ctrlSetPosition [ctrlPosition __JavelinIGUITargetingLineH select 0,_aposY];
|
||||
{_x ctrlCommit __TRACKINTERVAL} forEach [__JavelinIGUITargetingLineH,__JavelinIGUITargetingLineV];
|
||||
|
||||
_boundsInput = if (_currentTarget isKindOf "CAManBase") then {
|
||||
[_currentTarget,[-1,-1,-2],_currentTarget selectionPosition "body"];
|
||||
} else {
|
||||
[_currentTarget,[-1,-1,-2],_currentTarget selectionPosition "zamerny"];
|
||||
};
|
||||
|
||||
_bpos = _boundsInput call EFUNC(common,worldToScreenBounds);
|
||||
|
||||
_minX = ((_bpos select 0) + _offsetX) max _constraintLeft;
|
||||
_minY = ((_bpos select 1) + _offsetY) max _constraintTop;
|
||||
_maxX = ((_bpos select 2) + _offsetX) min (_constraintRight - 0.025*(3/4)*SafezoneH);
|
||||
_maxY = ((_bpos select 3) + _offsetY) min (_constraintBottom - 0.025*SafezoneH);
|
||||
|
||||
TRACE_4("", _boundsInput, _bpos, _minX, _minY);
|
||||
|
||||
__JavelinIGUITargetingGateTL ctrlSetPosition [_minX,_minY];
|
||||
__JavelinIGUITargetingGateTR ctrlSetPosition [_maxX,_minY];
|
||||
__JavelinIGUITargetingGateBL ctrlSetPosition [_minX,_maxY];
|
||||
__JavelinIGUITargetingGateBR ctrlSetPosition [_maxX,_maxY];
|
||||
|
||||
{_x ctrlCommit __TRACKINTERVAL} forEach [__JavelinIGUITargetingGateTL,__JavelinIGUITargetingGateTR,__JavelinIGUITargetingGateBL,__JavelinIGUITargetingGateBR];
|
||||
|
||||
ACE_player setVariable["ace_missileguidance_target", _currentTarget, false];
|
||||
|
||||
if(diag_tickTime > _soundTime) then {
|
||||
playSound "ACE_Javelin_Locked";
|
||||
_soundTime = diag_tickTime + 0.25;
|
||||
};
|
||||
} else {
|
||||
__JavelinIGUITargeting ctrlShow true;
|
||||
__JavelinIGUITargetingGate ctrlShow true;
|
||||
__JavelinIGUITargetingLines ctrlShow false;
|
||||
|
||||
ACE_player setVariable["ace_missileguidance_target", nil, false];
|
||||
|
||||
_boundsInput = if (_currentTarget isKindOf "CAManBase") then {
|
||||
[_newTarget,[-1,-1,-2],_currentTarget selectionPosition "body"];
|
||||
} else {
|
||||
[_newTarget,[-1,-1,-1],_currentTarget selectionPosition "zamerny"];
|
||||
};
|
||||
|
||||
_bpos = _boundsInput call EFUNC(common,worldToScreenBounds);
|
||||
|
||||
_minX = ((_bpos select 0) + _offsetX) max _constraintLeft;
|
||||
_minY = ((_bpos select 1) + _offsetY) max _constraintTop;
|
||||
_maxX = ((_bpos select 2) + _offsetX) min (_constraintRight - 0.025*(3/4)*SafezoneH);
|
||||
_maxY = ((_bpos select 3) + _offsetY) min (_constraintBottom - 0.025*SafezoneH);
|
||||
|
||||
__JavelinIGUITargetingGateTL ctrlSetPosition [_minX,_minY];
|
||||
__JavelinIGUITargetingGateTR ctrlSetPosition [_maxX,_minY];
|
||||
__JavelinIGUITargetingGateBL ctrlSetPosition [_minX,_maxY];
|
||||
__JavelinIGUITargetingGateBR ctrlSetPosition [_maxX,_maxY];
|
||||
|
||||
{_x ctrlCommit __TRACKINTERVAL} forEach [__JavelinIGUITargetingGateTL,__JavelinIGUITargetingGateTR,__JavelinIGUITargetingGateBL,__JavelinIGUITargetingGateBR];
|
||||
|
||||
if(diag_tickTime > _soundTime) then {
|
||||
playSound "ACE_Javelin_Locking";
|
||||
_soundTime = diag_tickTime + 0.25;
|
||||
};
|
||||
};
|
||||
};
|
||||
} else {
|
||||
// Something is wrong with our seek
|
||||
_currentTarget = objNull;
|
||||
|
||||
__JavelinIGUISeek ctrlSetTextColor __ColorGray;
|
||||
__JavelinIGUINFOV ctrlSetTextColor __ColorGray;
|
||||
__JavelinIGUITargetingConstrains ctrlShow false;
|
||||
__JavelinIGUITargetingGate ctrlShow false;
|
||||
__JavelinIGUITargetingLines ctrlShow false;
|
||||
|
||||
ACE_player setVariable ["ace_missileguidance_target",nil, false];
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
//TRACE_2("", _newTarget, _currentTarget);
|
||||
|
||||
// Save arguments for next run
|
||||
_args set[0, diag_tickTime];
|
||||
_args set[1, _currentTarget];
|
||||
_args set[2, _runTime];
|
||||
_args set[3, _lockTime];
|
||||
_args set[4, _soundTime];
|
||||
|
||||
uiNamespace setVariable[QGVAR(arguments), _args ];
|
@ -6,6 +6,16 @@ if((count _this) > 0) then {
|
||||
uiNameSpace setVariable ['ACE_RscOptics_javelin',_this select 0];
|
||||
};
|
||||
|
||||
ACE_player setVariable ["ace_missileguidance_target",nil, false];
|
||||
|
||||
__JavelinIGUISeek ctrlSetTextColor __ColorGray;
|
||||
__JavelinIGUINFOV ctrlSetTextColor __ColorGray;
|
||||
|
||||
__JavelinIGUITargeting ctrlShow false;
|
||||
__JavelinIGUITargetingConstrains ctrlShow false;
|
||||
__JavelinIGUITargetingGate ctrlShow false;
|
||||
__JavelinIGUITargetingLines ctrlShow false;
|
||||
|
||||
uiNameSpace setVariable [QGVAR(arguments),
|
||||
[
|
||||
0, // Last runtime
|
14
addons/javelin/functions/fnc_showFireMode.sqf
Normal file
14
addons/javelin/functions/fnc_showFireMode.sqf
Normal file
@ -0,0 +1,14 @@
|
||||
//#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
TRACE_1("enter", _this);
|
||||
|
||||
private["_player", "_currentFireMode"];
|
||||
|
||||
_currentFireMode = ACE_player getVariable["ace_missileguidance_attackProfile", "TOP"];
|
||||
if(_currentFireMode == "TOP") then {
|
||||
__JavelinIGUITop ctrlSetTextColor __ColorGreen;
|
||||
__JavelinIGUIDir ctrlSetTextColor __ColorGray;
|
||||
} else {
|
||||
__JavelinIGUITop ctrlSetTextColor __ColorGray;
|
||||
__JavelinIGUIDir ctrlSetTextColor __ColorGreen;
|
||||
};
|
1
addons/javelin/functions/script_component.hpp
Normal file
1
addons/javelin/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\javelin\script_component.hpp"
|
@ -1,6 +1,6 @@
|
||||
// by commy2
|
||||
|
||||
["ACE3", QGVAR(lockTarget), localize "STR_ACE_WEP_JAVELIN_LockTarget",
|
||||
["ACE3", QGVAR(lockTarget), localize "STR_ACE_JAVELIN_LockTarget",
|
||||
{
|
||||
if (GETGVAR(isLockKeyDown,false)) exitWith {false};
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
},
|
||||
[15, [false, false, false]], false] call cba_fnc_addKeybind; //Tab Key
|
||||
|
||||
["ACE3", QGVAR(cycleFireMode), localize "STR_ACE_WEP_JAVELIN_CycleFireMode",
|
||||
["ACE3", QGVAR(cycleFireMode), localize "STR_ACE_JAVELIN_CycleFireMode",
|
||||
{ false },
|
||||
{
|
||||
[ACE_player] call FUNC(cycleFireMode);
|
@ -1,12 +1,12 @@
|
||||
#define COMPONENT wep_javelin
|
||||
#define COMPONENT javelin
|
||||
#include "\z\ace\Addons\main\script_mod.hpp"
|
||||
|
||||
#ifdef DEBUG_ENABLED_WEP_JAVELIN
|
||||
#ifdef DEBUG_ENABLED_JAVELIN
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_SETTINGS_WEP_JAVELIN
|
||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_WEP_JAVELIN
|
||||
#ifdef DEBUG_SETTINGS_JAVELIN
|
||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_JAVELIN
|
||||
#endif
|
||||
|
||||
#include "\z\ace\Addons\main\script_macros.hpp"
|
||||
@ -19,6 +19,8 @@
|
||||
#define __JavelinIGUI (uinamespace getVariable "ACE_RscOptics_javelin")
|
||||
|
||||
// Custom controls
|
||||
#define __JavelinIGUITargeting (__JavelinIGUI displayCtrl 6999)
|
||||
|
||||
#define __JavelinIGUISeek (__JavelinIGUI displayCtrl 699000)
|
||||
#define __JavelinIGUITop (__JavelinIGUI displayCtrl 699001)
|
||||
#define __JavelinIGUIDir (__JavelinIGUI displayCtrl 699002)
|
||||
@ -46,6 +48,11 @@
|
||||
#define __JavelinIGUITargetingLineH (__JavelinIGUI displayCtrl 699301)
|
||||
#define __JavelinIGUITargetingLineV (__JavelinIGUI displayCtrl 699302)
|
||||
|
||||
#define __ConstraintTop (((ctrlPosition __JavelinIGUITargetingConstrainTop) select 1) + ((ctrlPosition (__JavelinIGUITargetingConstrainTop)) select 3))
|
||||
#define __ConstraintBottom ((ctrlPosition __JavelinIGUITargetingConstrainBottom) select 1)
|
||||
#define __ConstraintLeft (((ctrlPosition __JavelinIGUITargetingConstrainLeft) select 0) + ((ctrlPosition (__JavelinIGUITargetingConstrainLeft)) select 2))
|
||||
#define __ConstraintRight ((ctrlPosition __JavelinIGUITargetingConstrainRight) select 0)
|
||||
|
||||
// Colors for controls
|
||||
#define __ColorOrange [0.9255,0.5216,0.1216,1]
|
||||
#define __ColorGreen [0.2941,0.8745,0.2157,1]
|
15
addons/javelin/stringtable.xml
Normal file
15
addons/javelin/stringtable.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="WEP_JAVELIN">
|
||||
<Key ID="STR_ACE_WEP_JAVELIN_LockTarget">
|
||||
<English>Lock Target (Hold)</English>
|
||||
<German>Ziel aufschalten</German>
|
||||
<Russian>Захватить цель (удерживать)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_WEP_JAVELIN_CycleFireMode">
|
||||
<English>Cycle Fire Mode</English>
|
||||
<German>Wechsle Feuermodus</German>
|
||||
<Russian>Переключение режимов огня</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-12-11 -->
|
||||
<!-- Edited with tabler - 2015-04-10 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Wind">
|
||||
<Key ID="STR_ACE_Wind_ApproximateTemp">
|
||||
@ -34,7 +34,7 @@
|
||||
<Italian>Monitoraggio Balistico Attivo</Italian>
|
||||
<Hungarian>Applied Ballistics Meter</Hungarian>
|
||||
<Portuguese>Medidor Balístico Ativo</Portuguese>
|
||||
<Russian>метеостанция</Russian>
|
||||
<Russian>Метеостанция</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Wind_OpenKestrel">
|
||||
<English>Open Kestrel</English>
|
||||
|
@ -9,3 +9,11 @@ class Extended_PostInit_EventHandlers {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_post_init));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_Init_EventHandlers {
|
||||
class LaserTargetBase {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(laser_init));
|
||||
};
|
||||
};
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user