how do I merge

This commit is contained in:
commy2 2015-04-13 19:23:42 +02:00
commit bd168981e2
167 changed files with 6022 additions and 4372 deletions

View File

@ -30,6 +30,7 @@ ACCtomeek <tomeek99@gmail.com>
Adanteh Adanteh
aeroson aeroson
Aggr094 <bastards4glory@gmail.com> Aggr094 <bastards4glory@gmail.com>
Anthariel <Contact@storm-simulation.com>
BlackQwar BlackQwar
Brakoviejo Brakoviejo
Codingboy Codingboy
@ -51,6 +52,7 @@ havena <silveredenis@gmail.com>
Hawkins Hawkins
jokoho48 jokoho48
Jonpas <jonpas33@gmail.com> Jonpas <jonpas33@gmail.com>
Kllrt <kllrtik@gmail.com>
Legolasindar "Viper" <legolasindar@gmail.com> Legolasindar "Viper" <legolasindar@gmail.com>
licht-im-Norden87 <lichtimnorden87@gmail.com> licht-im-Norden87 <lichtimnorden87@gmail.com>
MarcBook MarcBook
@ -69,3 +71,6 @@ Tourorist <tourorist@gmail.com>
Valentin Torikian <valentin.torikian@gmail.com> Valentin Torikian <valentin.torikian@gmail.com>
zGuba zGuba
Aleksey EpMAK Yermakov <epmak777@gmail.com> Aleksey EpMAK Yermakov <epmak777@gmail.com>
ruPaladin <happyworm24@rambler.ru>
BlackPixxel
Asgar Serran <piechottaf@web.de>

View File

@ -574,4 +574,198 @@ class CfgWeapons {
maxRange = 1200; //1000; maxRange = 1200; //1000;
}; };
}; };
// marksmen marksmen
class DMR_03_base_F: Rifle_Long_Base_F {
modes[] += {"ACE_Burst_far"};
class Single: Mode_SemiAuto {
minRange = 120; // 2;
minRangeProbab = 0.7; // 0.3;
midRangeProbab = 0.3; // 0.7;
};
class FullAuto;
class single_close_optics1: Single {
minRange = 120; // 2;
minRangeProbab = 0.8; // 0.05;
midRangeProbab = 0.05; // 0.8;
};
class single_medium_optics1: single_close_optics1 {
minRangeProbab = 0.7; // 0.05;
midRangeProbab = 0.05; // 0.7;
};
class single_far_optics1: single_medium_optics1 {
minRange = 400; // 300;
minRangeProbab = 0.5; // 0.05;
midRangeProbab = 0.05; // 0.5;
};
class fullauto_medium: FullAuto {
minRange = 20; // 2;
maxRange = 150; // 100;
burst = "3 + round random 5"; // 3;
};
class ACE_Burst_far: fullauto_medium {
aiRateOfFire = 2.0;
aiRateOfFireDistance = 500;
minRange = 400;
minRangeProbab = 0.1;
midRange = 500;
midRangeProbab = 0.2;
maxRange = 600;
maxRangeProbab = 0.2;
burst = "2 + round random 3";
};
};
class DMR_05_base_F: Rifle_Long_Base_F {
modes[] += {"ACE_Burst_far"};
class Single: Mode_SemiAuto {
minRange = 120; // 2;
minRangeProbab = 0.7; // 0.3;
midRangeProbab = 0.3; // 0.7;
};
class FullAuto;
class single_close_optics1: Single {
minRange = 120; // 2;
minRangeProbab = 0.8; // 0.05;
midRangeProbab = 0.05; // 0.8;
};
class single_medium_optics1: single_close_optics1 {
minRangeProbab = 0.7; // 0.05;
midRangeProbab = 0.05; // 0.7;
};
class single_far_optics1: single_medium_optics1 {
minRange = 400; // 300;
minRangeProbab = 0.5; // 0.05;
midRangeProbab = 0.05; // 0.5;
};
class fullauto_medium: FullAuto {
minRange = 20; // 2;
maxRange = 150; // 100;
burst = "3 + round random 5"; // 3;
};
class ACE_Burst_far: fullauto_medium {
aiRateOfFire = 2.0;
aiRateOfFireDistance = 500;
minRange = 400;
minRangeProbab = 0.1;
midRange = 500;
midRangeProbab = 0.2;
maxRange = 600;
maxRangeProbab = 0.2;
burst = "2 + round random 3";
};
};
class DMR_06_base_F: Rifle_Long_Base_F {
modes[] += {"ACE_Burst_far"};
class Single: Mode_SemiAuto {
minRange = 120; // 2;
minRangeProbab = 0.7; // 0.3;
midRangeProbab = 0.3; // 0.7;
};
class FullAuto;
class single_close_optics1: Single {
minRange = 120; // 2;
minRangeProbab = 0.8; // 0.05;
midRangeProbab = 0.05; // 0.8;
};
class single_medium_optics1: single_close_optics1 {
minRangeProbab = 0.7; // 0.05;
midRangeProbab = 0.05; // 0.7;
};
class single_far_optics1: single_medium_optics1 {
minRange = 400; // 300;
minRangeProbab = 0.5; // 0.05;
midRangeProbab = 0.05; // 0.5;
};
class fullauto_medium: FullAuto {
minRange = 20; // 2;
maxRange = 150; // 100;
burst = "3 + round random 5"; // 3;
};
class ACE_Burst_far: fullauto_medium {
aiRateOfFire = 2.0;
aiRateOfFireDistance = 500;
minRange = 400;
minRangeProbab = 0.1;
midRange = 500;
midRangeProbab = 0.2;
maxRange = 600;
maxRangeProbab = 0.2;
burst = "2 + round random 3";
};
};
// marksmen medium mg
class MMG_01_base_F: Rifle_Long_Base_F {
aiDispersionCoefY = 25.0;
aiDispersionCoefX = 20.0;
modes[] += {"ACE_Burst_far"};
class manual;
class burst;
class close;
class short;
class medium;
class ACE_Burst_far: medium {
aiRateOfFire = 6.0;
aiRateOfFireDistance = 900;
minRange = 700;
minRangeProbab = 0.1;
midRange = 900;
midRangeProbab = 0.2;
maxRange = 1100;
maxRangeProbab = 0.2;
burst = "3 + round random 5";
};
class far_optic1;
class far_optic2;
};
class MMG_02_base_F: Rifle_Long_Base_F {
aiDispersionCoefY = 20.0;
aiDispersionCoefX = 15.0;
modes[] += {"ACE_Burst_far"};
class manual;
class close;
class short;
class medium;
class ACE_Burst_far: medium {
aiRateOfFire = 6.0;
aiRateOfFireDistance = 900;
minRange = 700;
minRangeProbab = 0.1;
midRange = 900;
midRangeProbab = 0.2;
maxRange = 1100;
maxRangeProbab = 0.2;
burst = "3 + round random 5";
};
class far_optic1;
class far_optic2;
};
}; };

View File

@ -40,7 +40,7 @@
<English>Close Cargo Door</English> <English>Close Cargo Door</English>
<German>Laderampe schließen</German> <German>Laderampe schließen</German>
<Spanish>Cerrar compuerta de carga</Spanish> <Spanish>Cerrar compuerta de carga</Spanish>
<French>Fermer Rampe Cargo</French> <French>Fermer la Rampe du Cargo</French>
<Polish>Zamknij drzwi ładowni</Polish> <Polish>Zamknij drzwi ładowni</Polish>
<Czech>Zavřít nákladní prostor</Czech> <Czech>Zavřít nákladní prostor</Czech>
<Hungarian>Rámpát zárni</Hungarian> <Hungarian>Rámpát zárni</Hungarian>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 -->
<Project name="ACE"> <Project name="ACE">
<Package name="Attach"> <Package name="Attach">
<Key ID="STR_ACE_Attach_AttachDetach"> <Key ID="STR_ACE_Attach_AttachDetach">
@ -44,7 +43,7 @@
<Spanish>Marcador IR acoplado</Spanish> <Spanish>Marcador IR acoplado</Spanish>
<Polish>Przyczepiono stroboskop IR</Polish> <Polish>Przyczepiono stroboskop IR</Polish>
<French>Strobe IR attaché</French> <French>Strobe IR attaché</French>
<Czech>IR Značkovač Připnutý</Czech> <Czech>IR Značkovač připnutý</Czech>
<Portuguese>Marcador IV Acoplado</Portuguese> <Portuguese>Marcador IV Acoplado</Portuguese>
<Italian>Strobo IR attaccata</Italian> <Italian>Strobo IR attaccata</Italian>
<Hungarian>Infravörös jeladó hozzácsatolva</Hungarian> <Hungarian>Infravörös jeladó hozzácsatolva</Hungarian>
@ -56,7 +55,7 @@
<Spanish>Marcador IR quitado</Spanish> <Spanish>Marcador IR quitado</Spanish>
<Polish>Odczepiono stroboskop IR</Polish> <Polish>Odczepiono stroboskop IR</Polish>
<French>Strobe IR détaché</French> <French>Strobe IR détaché</French>
<Czech>IR Značkovač Odepnutý</Czech> <Czech>IR Značkovač odepnutý</Czech>
<Portuguese>Marcador IV Separado</Portuguese> <Portuguese>Marcador IV Separado</Portuguese>
<Italian>Strobo IR staccata</Italian> <Italian>Strobo IR staccata</Italian>
<Hungarian>Infravörös jeladó lecsatolva</Hungarian> <Hungarian>Infravörös jeladó lecsatolva</Hungarian>
@ -68,7 +67,7 @@
<Spanish>Granada IR acoplada</Spanish> <Spanish>Granada IR acoplada</Spanish>
<Polish>Przyczepiono granat IR</Polish> <Polish>Przyczepiono granat IR</Polish>
<French>Grenade IR attachée</French> <French>Grenade IR attachée</French>
<Czech>IR Granát Připnutý</Czech> <Czech>IR Granát připnutý</Czech>
<Portuguese>Granada IV Acoplada</Portuguese> <Portuguese>Granada IV Acoplada</Portuguese>
<Italian>Granata IR attaccata</Italian> <Italian>Granata IR attaccata</Italian>
<Hungarian>Infravörös gránát hozzácsatolva</Hungarian> <Hungarian>Infravörös gránát hozzácsatolva</Hungarian>
@ -80,7 +79,7 @@
<Spanish>Granada IR quitada</Spanish> <Spanish>Granada IR quitada</Spanish>
<Polish>Odczepiono granat IR</Polish> <Polish>Odczepiono granat IR</Polish>
<French>Grenade IR détachée</French> <French>Grenade IR détachée</French>
<Czech>IR Granát Odepnutý</Czech> <Czech>IR Granát odepnutý</Czech>
<Portuguese>Granada IV Separada</Portuguese> <Portuguese>Granada IV Separada</Portuguese>
<Italian>Granata IR staccata</Italian> <Italian>Granata IR staccata</Italian>
<Hungarian>Infravörös gránát lecsatolva</Hungarian> <Hungarian>Infravörös gránát lecsatolva</Hungarian>
@ -92,7 +91,7 @@
<Spanish>Barra de luz acoplada</Spanish> <Spanish>Barra de luz acoplada</Spanish>
<Polish>Przyczepiono światło chemiczne</Polish> <Polish>Przyczepiono światło chemiczne</Polish>
<French>Chemlight attaché</French> <French>Chemlight attaché</French>
<Czech>Chemické světlo Připnuto</Czech> <Czech>Chemické světlo připnuto</Czech>
<Portuguese>Chemlight Acoplada</Portuguese> <Portuguese>Chemlight Acoplada</Portuguese>
<Italian>Chemlight attaccata</Italian> <Italian>Chemlight attaccata</Italian>
<Hungarian>Chemlight hozzácsatolva</Hungarian> <Hungarian>Chemlight hozzácsatolva</Hungarian>
@ -104,7 +103,7 @@
<Spanish>Barra de luz quitada</Spanish> <Spanish>Barra de luz quitada</Spanish>
<Polish>Odczepiono światło chemiczne</Polish> <Polish>Odczepiono światło chemiczne</Polish>
<French>Chemlight détaché</French> <French>Chemlight détaché</French>
<Czech>Chemické světlo Odepnuto</Czech> <Czech>Chemické světlo odepnuto</Czech>
<Portuguese>Chemlight Separada</Portuguese> <Portuguese>Chemlight Separada</Portuguese>
<Italian>Chemlight staccata</Italian> <Italian>Chemlight staccata</Italian>
<Hungarian>Chemlight hozzácsatolva</Hungarian> <Hungarian>Chemlight hozzácsatolva</Hungarian>
@ -172,10 +171,12 @@
</Key> </Key>
<Key ID="STR_ACE_Attach_Failed"> <Key ID="STR_ACE_Attach_Failed">
<English>Attach Failed</English> <English>Attach Failed</English>
<French>Échec du Attacher</French> <French>Échec de l'attachement</French>
<German>Befestigen fehlgeschlagen</German> <German>Befestigen fehlgeschlagen</German>
<Russian>Соединение прервано</Russian> <Russian>Соединение прервано</Russian>
<Spanish>Error al acoplar</Spanish> <Spanish>Error al acoplar</Spanish>
<Czech>Připnutí selhalo</Czech>
<Polish>Przyczepianie nie powiodło się</Polish>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -18,6 +18,8 @@
PARAMS_2(_unit,_newSurrenderState); PARAMS_2(_unit,_newSurrenderState);
if (currentWeapon _unit != "") exitWith {false};
private "_returnValue"; private "_returnValue";
_returnValue = if (_newSurrenderState) then { _returnValue = if (_newSurrenderState) then {

View File

@ -54,7 +54,7 @@ if (_state) then {
PARAMS_2(_unit,_newAnimation); PARAMS_2(_unit,_newAnimation);
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
ERROR("Handcuff animation interrupted"); ERROR("Handcuff animation interrupted");
systemChat format ["debug %2: new %1", _newAnimation, time]; // systemChat format ["debug %2: new %1", _newAnimation, time];
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
}; };
}]; }];

View File

@ -52,7 +52,7 @@ if (_state) then {
PARAMS_2(_unit,_newAnimation); PARAMS_2(_unit,_newAnimation);
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
ERROR("Surrender animation interrupted"); ERROR("Surrender animation interrupted");
systemChat format ["debug %2: new %1", _newAnimation, time]; // systemChat format ["debug %2: new %1", _newAnimation, time];
[_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation); [_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation);
}; };
}]; }];

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 -->
<Project name="ACE"> <Project name="ACE">
<Package name="Captives"> <Package name="Captives">
<Key ID="STR_ACE_Captives_SetCaptive"> <Key ID="STR_ACE_Captives_SetCaptive">
@ -132,33 +131,48 @@
</Key> </Key>
<Key ID="STR_ACE_Captives_StartSurrendering"> <Key ID="STR_ACE_Captives_StartSurrendering">
<English>Surrender</English> <English>Surrender</English>
<French>Se rendre</French>
<German>Kapitulieren</German> <German>Kapitulieren</German>
<Spanish>Rendirse</Spanish> <Spanish>Rendirse</Spanish>
<Russian>Сдаться</Russian> <Russian>Сдаться</Russian>
<Czech>Vzdát se</Czech>
<Polish>Poddaj się</Polish>
</Key> </Key>
<Key ID="STR_ACE_Captives_StopSurrendering"> <Key ID="STR_ACE_Captives_StopSurrendering">
<English>Stop Surrendering</English> <English>Stop Surrendering</English>
<French>Arrêt de se rendre</French>
<German>Den Kampf erneut aufnehmen</German> <German>Den Kampf erneut aufnehmen</German>
<Spanish>Dejar de rendirse</Spanish> <Spanish>Dejar de rendirse</Spanish>
<Russian>Остановить сдачу</Russian> <Russian>Остановить сдачу</Russian>
<Czech>Přestat se vzdávat</Czech>
<Polish>Podejmij walkę ponownie</Polish>
</Key> </Key>
<Key ID="STR_ACE_Captives_Zeus_OnlyAlive"> <Key ID="STR_ACE_Captives_Zeus_OnlyAlive">
<English>Only use on alive units</English> <English>Only use on alive units</English>
<French>Utilisation uniquement sur les unités en vie</French>
<German>Nur bei lebenden Einheiten verwendbar</German> <German>Nur bei lebenden Einheiten verwendbar</German>
<Spanish>Utilizar solo en unidades vivas</Spanish> <Spanish>Utilizar solo en unidades vivas</Spanish>
<Russian>Только для живых юнитов</Russian> <Russian>Только для живых юнитов</Russian>
<Czech>Použitelné jen na živé jednotky</Czech>
<Polish>Używaj tylko na żywych jednostkach</Polish>
</Key> </Key>
<Key ID="STR_ACE_Captives_Zeus_OnlyInfantry"> <Key ID="STR_ACE_Captives_Zeus_OnlyInfantry">
<English>Only use on dismounted inf</English> <English>Only use on dismounted inf</English>
<French>Utilisation uniquement sur les infanteries</French>
<German>Nur bei abgesessener Infanterie verwendbar</German> <German>Nur bei abgesessener Infanterie verwendbar</German>
<Spanish>Utilizar solo en infanteria desmontada</Spanish> <Spanish>Utilizar solo en infanteria desmontada</Spanish>
<Russian>Только для спеш. солдат</Russian> <Russian>Только для спеш. солдат</Russian>
<Czech>Použitelné jen na pěsích jednotkách</Czech>
<Polish>Używaj tylko na piechocie poza wszelkimi pojazdami</Polish>
</Key> </Key>
<Key ID="STR_ACE_Captives_Zeus_NothingSelected"> <Key ID="STR_ACE_Captives_Zeus_NothingSelected">
<English>Nothing under mouse</English> <English>Nothing under mouse</English>
<French>Rien sous la souris</French>
<German>Es wurde nichts ausgewählt</German> <German>Es wurde nichts ausgewählt</German>
<Spanish>Nada bajo el ratón</Spanish> <Spanish>Nada bajo el ratón</Spanish>
<Russian>Объекты под мышью отсутствуют</Russian> <Russian>Объекты под мышью отсутствуют</Russian>
<Czech>Nic není vybráno</Czech>
<Polish>Nie ma nic pod kursorem</Polish>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -26,6 +26,9 @@ class Extended_InitPost_EventHandlers {
class GVAR(forceWalk) { class GVAR(forceWalk) {
init = QUOTE(if (local (_this select 0)) then {_this call FUNC(applyForceWalkStatus);};); init = QUOTE(if (local (_this select 0)) then {_this call FUNC(applyForceWalkStatus);};);
}; };
class GVAR(muteUnit) {
init = QUOTE(_this call FUNC(muteUnitHandleInitPost));
};
}; };
}; };
@ -41,4 +44,9 @@ class Extended_Respawn_EventHandlers {
respawn = QUOTE(_this call FUNC(resetAllDefaults)); respawn = QUOTE(_this call FUNC(resetAllDefaults));
}; };
}; };
class CAManBase {
class GVAR(muteUnit) {
respawn = QUOTE(_this call FUNC(muteUnitHandleRespawn));
};
};
}; };

View File

@ -35,6 +35,7 @@ if (hasInterface) then {
["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler); ["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler);
["setFuel", {(_this select 0) setFuel (_this select 1)}] call FUNC(addEventhandler); ["setFuel", {(_this select 0) setFuel (_this select 1)}] call FUNC(addEventhandler);
["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler);
// hack to get PFH to work in briefing // hack to get PFH to work in briefing
[QGVAR(onBriefingPFH), "onEachFrame", { [QGVAR(onBriefingPFH), "onEachFrame", {

View File

@ -124,6 +124,8 @@ PREP(moduleCheckPBOs);
PREP(moduleLSDVehicles); PREP(moduleLSDVehicles);
PREP(moveToTempGroup); PREP(moveToTempGroup);
PREP(muteUnit); PREP(muteUnit);
PREP(muteUnitHandleInitPost);
PREP(muteUnitHandleRespawn);
PREP(numberToDigits); PREP(numberToDigits);
PREP(numberToDigitsString); PREP(numberToDigitsString);
PREP(numberToString); PREP(numberToString);

View File

@ -4,9 +4,10 @@
* or places it in a weaponHolder if no space. * or places it in a weaponHolder if no space.
* *
* Arguments: * Arguments:
* 0: Unit (OBJECT) * 0: Unit <OBJECT>
* 1: Classname (String) * 1: Classname <STRING>
* 2: Container (String, Optional) uniform, vest, backpack * 2: Container (uniform, vest, backpack) <STRING><OPTIONAL>
* 3: Magazine Ammo Count <NUMBER><OPTIONAL>
* *
* Return Value: * Return Value:
* Array: * Array:
@ -19,31 +20,23 @@
#include "script_component.hpp" #include "script_component.hpp"
EXPLODE_2_PVT(_this,_unit,_classname); EXPLODE_2_PVT(_this,_unit,_classname);
DEFAULT_PARAM(2,_container,"");
DEFAULT_PARAM(3,_ammoCount,-1);
private "_addedToPlayer"; private "_addedToPlayer";
private "_container";
private "_canAdd"; private "_canAdd";
private "_type"; private "_type";
_canAdd = false; _canAdd = false;
_addedToPlayer = true; _addedToPlayer = true;
if((count _this) > 2) then {
_container = _this select 2;
} else {
_container = nil;
};
_type = [_classname] call EFUNC(common,getItemType); _type = [_classname] call EFUNC(common,getItemType);
if(!isNil "_container") then { switch (_container) do {
switch (_container) do {
case "vest": { _canAdd = _unit canAddItemToVest _classname; }; case "vest": { _canAdd = _unit canAddItemToVest _classname; };
case "backpack": { _canAdd = _unit canAddItemToBackpack _classname; }; case "backpack": { _canAdd = _unit canAddItemToBackpack _classname; };
case "uniform": { _canAdd = _unit canAddItemToUniform _classname; }; case "uniform": { _canAdd = _unit canAddItemToUniform _classname; };
}; default {_canAdd = _unit canAdd _classname;};
} else {
_container = "";
_canAdd = _unit canAdd _classname;
}; };
switch ((_type select 0)) do { switch ((_type select 0)) do {
@ -64,18 +57,19 @@ switch ((_type select 0)) do {
}; };
}; };
case "magazine": { case "magazine": {
if (_ammoCount == -1) then {_ammoCount = getNumber (configFile >> "CfgMagazines" >> _classname >> "count");};
if (_canAdd) then { if (_canAdd) then {
switch (_container) do { switch (_container) do {
case "vest": { (vestContainer _unit) addMagazineCargoGlobal [_classname, 1]; }; case "vest": { (vestContainer _unit) addMagazineCargoGlobal [_classname, _ammoCount]; };
case "backpack": { (backpackContainer _unit) addMagazineCargoGlobal [_classname, 1]; }; case "backpack": { (backpackContainer _unit) addMagazineCargoGlobal [_classname, _ammoCount]; };
case "uniform": { (uniformContainer _unit) addMagazineCargoGlobal [_classname, 1]; }; case "uniform": { (uniformContainer _unit) addMagazineCargoGlobal [_classname, _ammoCount]; };
default { _unit addMagazineGlobal _classname; }; default {_unit addMagazine [_classname, _ammoCount]; };
}; };
} else { } else {
_addedToPlayer = false; _addedToPlayer = false;
_pos = _unit modelToWorldVisual [0,1,0.05]; _pos = _unit modelToWorldVisual [0,1,0.05];
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"]; _unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
_unit addMagazineCargoGlobal [_classname, 1]; _unit addMagazineCargoGlobal [_classname, _ammoCount];
_unit setPosATL _pos; _unit setPosATL _pos;
}; };
}; };

View File

@ -5,21 +5,34 @@
* *
* Argument: * Argument:
* 0: Unit (Object) * 0: Unit (Object)
* 1: Reason to mute the unit (String)
* *
* Return value: * Return value:
* Nothing * Nothing
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit", "_speaker"]; private ["_unit", "_reason"];
_unit = _this select 0; _unit = _this select 0;
_reason = _this select 1;
if (isNull _unit) exitWith {}; if (isNull _unit) exitWith {};
// add reason to mute to the unit
private "_muteUnitReasons";
_muteUnitReasons = _unit getVariable [QGVAR(muteUnitReasons), []];
if !(_reason in _muteUnitReasons) then {
_muteUnitReasons pushBack _reason;
_unit setVariable [QGVAR(muteUnitReasons), _muteUnitReasons, true];
};
private "_speaker";
_speaker = speaker _unit; _speaker = speaker _unit;
if (_speaker == "ACE_NoVoice") exitWith {}; if (_speaker == "ACE_NoVoice") exitWith {};
[0, "{(_this select 1) setSpeaker 'ACE_NoVoice'}", _unit, "ACE_Speaker"] call FUNC(execPersistentFnc); ["setSpeaker", [_unit, "ACE_NoVoice"]] call FUNC(globalEvent);
_unit setVariable ["ACE_OriginalSpeaker", _speaker, true]; _unit setVariable ["ACE_OriginalSpeaker", _speaker, true];

View File

@ -0,0 +1,11 @@
// by commy2
#include "script_component.hpp"
private "_unit";
_unit = _this select 0;
// setSpeaker gets overwritten after init on remote units; if unit is muted, setSpeaker again
if (count (_unit getVariable [QGVAR(muteUnitReasons), []]) > 0) then {
["setSpeaker", [_unit, "ACE_NoVoice"]] call FUNC(localEvent);
};

View File

@ -0,0 +1,12 @@
// by commy2
#include "script_component.hpp"
private "_unit";
_unit = _this select 0;
// setVariable is broken on JIP after respawn
_unit setVariable [QGVAR(muteUnitReasons), _unit getVariable [QGVAR(muteUnitReasons), []], true];
// fix mp issues with respawning and the speaker
["setSpeaker", [_unit, speaker _unit]] call FUNC(globalEvent);

View File

@ -23,6 +23,3 @@ _respawnVariables pushBack "ACE_PersistentFunctions";
{ {
_unit setVariable [_x, _unit getVariable _x, true]; _unit setVariable [_x, _unit getVariable _x, true];
} forEach _respawnVariables; } forEach _respawnVariables;
// fix speaker after respawn
[_unit, format ["{_this setSpeaker '%1'}", speaker _unit], 2] call FUNC(execRemoteFnc);

View File

@ -1,23 +1,39 @@
/* /*
* Author: commy2 * Author: commy2
* *
* Unmutes the unit. * Unmutes the unit. Only unmutes if the last reason was removed.
* *
* Argument: * Argument:
* 0: Unit (Object) * 0: Unit (Object)
* 1: Reason to unmute the unit. (String)
* *
* Return value: * Return value:
* Nothing * Nothing
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit", "_speaker"]; private ["_unit", "_reason"];
_unit = _this select 0; _unit = _this select 0;
_reason = _this select 1;
if (isNull _unit) exitWith {}; if (isNull _unit) exitWith {};
// remove reason to mute to the unit
private "_muteUnitReasons";
_muteUnitReasons = _unit getVariable [QGVAR(muteUnitReasons), []];
if (_reason in _muteUnitReasons) then {
_muteUnitReasons deleteAt (_muteUnitReasons find _reason);
_unit setVariable [QGVAR(muteUnitReasons), _muteUnitReasons, true];
};
// don't unmute if there is another mute reason!
if (count _muteUnitReasons > 0) exitWith {};
private "_speaker";
_speaker = _unit getVariable ["ACE_OriginalSpeaker", ""]; _speaker = _unit getVariable ["ACE_OriginalSpeaker", ""];
if (_speaker == "") exitWith {}; if (_speaker == "") exitWith {};
[0, format ["{(_this select 1) setSpeaker '%1'}", _speaker], _unit, "ACE_Speaker"] call FUNC(execPersistentFnc); ["setSpeaker", _unit, [_unit, _speaker]] call FUNC(targetEvent);

View File

@ -42,8 +42,8 @@
<English>ACE Options</English> <English>ACE Options</English>
<German>ACE Optionen</German> <German>ACE Optionen</German>
<Spanish>Opciones ACE</Spanish> <Spanish>Opciones ACE</Spanish>
<Polish>Opcje ACE</Polish> <Polish>Ustawienia ACE</Polish>
<Czech>ACE Nastavení</Czech> <Czech>Nastavení ACE</Czech>
<French>ACE Options</French> <French>ACE Options</French>
<Russian>ACE Настройки</Russian> <Russian>ACE Настройки</Russian>
<Portuguese>Opções do ACE</Portuguese> <Portuguese>Opções do ACE</Portuguese>
@ -248,7 +248,7 @@
<German>Aktion abgebrochen.</German> <German>Aktion abgebrochen.</German>
<Spanish>Acción cancelada.</Spanish> <Spanish>Acción cancelada.</Spanish>
<Polish>Przerwano czynność</Polish> <Polish>Przerwano czynność</Polish>
<Czech>Akce přerušena</Czech> <Czech>Akce přerušena.</Czech>
<French>Action annulée.</French> <French>Action annulée.</French>
<Russian>Действие отменено.</Russian> <Russian>Действие отменено.</Russian>
<Portuguese>Ação cancelada.</Portuguese> <Portuguese>Ação cancelada.</Portuguese>
@ -304,6 +304,7 @@
<German>Anfrage akzeptieren</German> <German>Anfrage akzeptieren</German>
<Spanish>Aceptar peticiones</Spanish> <Spanish>Aceptar peticiones</Spanish>
<Polish>Akceptuj prośby</Polish> <Polish>Akceptuj prośby</Polish>
<Czech>Přijmout žádost</Czech>
<Italian>Accetta Richieste</Italian> <Italian>Accetta Richieste</Italian>
<Russian>Подтвердить запросы</Russian> <Russian>Подтвердить запросы</Russian>
</Key> </Key>
@ -312,6 +313,7 @@
<German>Anfrage ablehnen</German> <German>Anfrage ablehnen</German>
<Spanish>Rechazar peticiones</Spanish> <Spanish>Rechazar peticiones</Spanish>
<Polish>Ignoruj prośby</Polish> <Polish>Ignoruj prośby</Polish>
<Czech>Zamítnout žádost</Czech>
<Italian>Rifiuta Richieste</Italian> <Italian>Rifiuta Richieste</Italian>
<Russian>Отклонить запросы</Russian> <Russian>Отклонить запросы</Russian>
</Key> </Key>
@ -337,6 +339,8 @@
<Spanish>Iconos de respuesta</Spanish> <Spanish>Iconos de respuesta</Spanish>
<Italian>Icone informative</Italian> <Italian>Icone informative</Italian>
<Russian>Иконки состояний</Russian> <Russian>Иконки состояний</Russian>
<Polish>Ikony pomocnicze</Polish>
<French>Icônes de Feedback</French>
</Key> </Key>
<Key ID="STR_ACE_Common_SettingFeedbackIconsDesc"> <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> <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>
@ -344,6 +348,8 @@
<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> <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> <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> <Russian>Выберите положение или или отключите отображение иконок состояний на Вашем экране. Эти иконки предоставят дополнительную информацию о состоянии персонажа и выполняемых действиях.</Russian>
<Polish>Ustaw pozycję lub wyłącz całkowicie ikony pomocnicze na ekranie. Te ikony dostarczają dodatkowych informacji na temat statusu Twojej postaci i wykonywanych przez nią akcji.</Polish>
<French>Sélectionner la position de ou désactiver les îcones de feedback sur votre écran. Ces îcones sont là pour vous fournir un feedback du statut votre personnage et les actions à effectuer.</French>
</Key> </Key>
<Key ID="STR_ACE_Common_SettingProgressbarLocationName"> <Key ID="STR_ACE_Common_SettingProgressbarLocationName">
<English>Progress bar location</English> <English>Progress bar location</English>
@ -351,6 +357,8 @@
<Spanish>Ubicación de la barra de progreso</Spanish> <Spanish>Ubicación de la barra de progreso</Spanish>
<Italian>Posizione della barra di avanzamento</Italian> <Italian>Posizione della barra di avanzamento</Italian>
<Russian>Положение прогресс-бара</Russian> <Russian>Положение прогресс-бара</Russian>
<Polish>Lokalizacja paska postępu</Polish>
<French>Localisation de la barre de progression</French>
</Key> </Key>
<Key ID="STR_ACE_Common_SettingProgressbarLocationDesc"> <Key ID="STR_ACE_Common_SettingProgressbarLocationDesc">
<English>Set the desired location of the progress bar on your screen.</English> <English>Set the desired location of the progress bar on your screen.</English>
@ -358,6 +366,8 @@
<Spanish>Seleccionar la ubicación deseada de la barra de progreso en tu pantalla</Spanish> <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> <Italian>Modifica la posizione su schermo della barra di avanzamento.</Italian>
<Russian>Установите желаемое положение строки состояния на экране.</Russian> <Russian>Установите желаемое положение строки состояния на экране.</Russian>
<Polish>Ustaw pożądaną lokalizację paska postępu na ekranie</Polish>
<French>Définisez l'endroit que vous désirez pour faire appraître la barre de progression.</French>
</Key> </Key>
<Key ID="STR_ACE_Common_SettingDisplayTextColorName"> <Key ID="STR_ACE_Common_SettingDisplayTextColorName">
<English>Hint Background color</English> <English>Hint Background color</English>
@ -365,6 +375,8 @@
<Spanish>Color de fondo de las notificaciones</Spanish> <Spanish>Color de fondo de las notificaciones</Spanish>
<Italian>Sfondo dei Suggerimenti</Italian> <Italian>Sfondo dei Suggerimenti</Italian>
<Russian>Цвет фона всплывающих подсказок</Russian> <Russian>Цвет фона всплывающих подсказок</Russian>
<Polish>Kolor tła powiadomień</Polish>
<French>Couleur de fond des astuces</French>
</Key> </Key>
<Key ID="STR_ACE_Common_SettingDisplayTextColorDesc"> <Key ID="STR_ACE_Common_SettingDisplayTextColorDesc">
<English>The color of the background from the ACE hints.</English> <English>The color of the background from the ACE hints.</English>
@ -372,6 +384,8 @@
<Spanish>El color de fondo de las notificaciones del ACE</Spanish> <Spanish>El color de fondo de las notificaciones del ACE</Spanish>
<Italian>Il colore di sfondo dei suggerimenti dell'ACE.</Italian> <Italian>Il colore di sfondo dei suggerimenti dell'ACE.</Italian>
<Russian>Цвет фона всплывающий подсказок АСЕ.</Russian> <Russian>Цвет фона всплывающий подсказок АСЕ.</Russian>
<Polish>Kolor tła dla powiadomień ACE</Polish>
<French>Définisez la couleur de fond pour les astuces fournies par ACE.</French>
</Key> </Key>
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorName"> <Key ID="STR_ACE_Common_SettingDisplayTextFontColorName">
<English>Hint text font color</English> <English>Hint text font color</English>
@ -379,6 +393,8 @@
<Spanish>Color del texto de las notificaciones</Spanish> <Spanish>Color del texto de las notificaciones</Spanish>
<Italian>Testo dei Suggerimenti</Italian> <Italian>Testo dei Suggerimenti</Italian>
<Russian>Цвет шрифта всплывающих подсказок</Russian> <Russian>Цвет шрифта всплывающих подсказок</Russian>
<Polish>Kolor tekstu powiadomień</Polish>
<French>Couleur du texte des astuces</French>
</Key> </Key>
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorDesc"> <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> <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>
@ -386,20 +402,28 @@
<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> <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> <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> <Russian>Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок.</Russian>
<Polish>Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru.</Polish>
<French>Définisez la couleur du texte des astuces fournies par ACE. La couleur est celle par défaut affichée à travers toutes les astuces de ACE seulement si aucune couleur n'est défnie.</French>
</Key> </Key>
<Key ID="STR_ACE_Common_bananaDisplayName"> <Key ID="STR_ACE_Common_bananaDisplayName">
<English>Banana</English> <English>Banana</English>
<German>Banane</German> <German>Banane</German>
<Spanish>Banana</Spanish> <Spanish>Banana</Spanish>
<Czech>Banán</Czech>
<Italian>Banana</Italian> <Italian>Banana</Italian>
<Russian>Банан</Russian> <Russian>Банан</Russian>
<Polish>Banan</Polish>
<French>Banane</French>
</Key> </Key>
<Key ID="STR_ACE_Common_bananaDescr"> <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> <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> <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> <Spanish>Una banana es una fruta comestible, botanicamente una baya, producida por varios tipos de grandes plantas herbáceas del género Musa.</Spanish>
<Czech>Banán je protáhlé ovoce a plod banánovníku (epigeická bobule).</Czech>
<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> <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> <Russian>Банан - это съедобный фрукт, ягода с ботанической точки зрения, произрастающий на нескольких видах травянистых растениях рода Банан (Musa).</Russian>
<Polish>Rodzaj roślin z rodziny bananowatych, obejmujący około 80 gatunków.&lt;br /&gt;Przedstawiciele są typowymi przedstawicielami flory międzyzwrotnikowej Azji, Afryki i Australii.&lt;br /&gt;Część gatunków dostarcza jadalnych owoców. Słowo banan pochodzi prawdopodobnie od arabskiego słowa banan, co oznacza palec, lub afrykańskiego języka wolof, w którym rośliny te określa się mianem banaana.</Polish>
<French>Une banane est un fruit comestible, botaniquement une baie, produite par plusieurs types de grandes plantes herbacées à fleurs dans le genre Musa.</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -8,7 +8,7 @@ class CfgVehicles {
distance = 3.5; distance = 3.5;
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPlayerDisarmUnit)); condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPlayerDisarmUnit));
statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog)); statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog));
icon = "\a3\Modules_F_Curator\Data\portraitRespawnInventory_ca.paa"; icon = PATHTOF(UI\disarm.paa);
exceptions[] = {}; exceptions[] = {};
}; };
}; };

Binary file not shown.

View File

@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-03-17 --> <!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="Disarming"> <Package name="Disarming">
<Key ID="STR_ACE_Disarming_OpenInventory"> <Key ID="STR_ACE_Disarming_OpenInventory">
<English>Open Inventory</English> <English>Open Inventory</English>
<Polish>Otwórz ekwipunek</Polish>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2014-12-16 -->
<Project name="ACE"> <Project name="ACE">
<Package name="Disposable"> <Package name="Disposable">
<Key ID="STR_ACE_Disposable_UsedTube"> <Key ID="STR_ACE_Disposable_UsedTube">
@ -7,7 +6,7 @@
<German>Benutze Einwegwaffe</German> <German>Benutze Einwegwaffe</German>
<French>Tube utilisé</French> <French>Tube utilisé</French>
<Czech>Použitý odpalovač</Czech> <Czech>Použitý odpalovač</Czech>
<Polish>Zużyta tuba</Polish> <Polish>Zużyta rura</Polish>
<Spanish>Lanzador utilizado</Spanish> <Spanish>Lanzador utilizado</Spanish>
<Hungarian>Használt cső</Hungarian> <Hungarian>Használt cső</Hungarian>
<Russian>Отстрелянная труба</Russian> <Russian>Отстрелянная труба</Russian>
@ -17,7 +16,7 @@
<German>Benutzter Einweg-Raketenwerfer</German> <German>Benutzter Einweg-Raketenwerfer</German>
<French>Lance-roquette à usage unique utilisé</French> <French>Lance-roquette à usage unique utilisé</French>
<Czech>Použitý raketomet</Czech> <Czech>Použitý raketomet</Czech>
<Polish>Zużyta tuba granatnika jednorazowego użytku</Polish> <Polish>Zużyta rura granatnika jednorazowego użytku</Polish>
<Spanish>Lanzador desechable utilizado</Spanish> <Spanish>Lanzador desechable utilizado</Spanish>
<Hungarian>Használt rakétavető</Hungarian> <Hungarian>Használt rakétavető</Hungarian>
<Russian>Отстрелянная одноразовая пусковая установка</Russian> <Russian>Отстрелянная одноразовая пусковая установка</Russian>
@ -25,9 +24,9 @@
<Key ID="STR_ACE_Disposable_PreloadedMissileDummy"> <Key ID="STR_ACE_Disposable_PreloadedMissileDummy">
<English>Preloaded Missile Dummy</English> <English>Preloaded Missile Dummy</English>
<German>Vorgeladene Racketennachbildung</German> <German>Vorgeladene Racketennachbildung</German>
<French>Preloaded Missile Dummy</French> <French>Missile préchargé Dummy</French>
<Czech>Preloaded Missile Dummy</Czech> <Czech>Přednabitá dummy střela</Czech>
<Polish>Preloaded Missile Dummy</Polish> <Polish>Wstępnie załadowana atrapa pocisku</Polish>
<Spanish>Preloaded Missile Dummy</Spanish> <Spanish>Preloaded Missile Dummy</Spanish>
<Hungarian>Preloaded Missile Dummy</Hungarian> <Hungarian>Preloaded Missile Dummy</Hungarian>
<Russian>Заряженная ракетная пустышка</Russian> <Russian>Заряженная ракетная пустышка</Russian>

View File

@ -29,17 +29,13 @@
<English>Item to heavy</English> <English>Item to heavy</English>
<German>Gegenstand ist zu schwer</German> <German>Gegenstand ist zu schwer</German>
<Spanish>Articulo demasiado pesado</Spanish> <Spanish>Articulo demasiado pesado</Spanish>
<!-- <English>Unable to drag item due to weight</English> <Polish>Przedmiot zbyt ciężki</Polish>
<Russian>Слишком тяжелый предмет</Russian> <French>Objet trop lourd</French>
<Spanish>No se puede arrastrar el objeto debido a su peso</Spanish>
<Polish>Nie można ciągnąć tego przedmiotu z powodu jego wagi</Polish>
<Czech>Předmět je příliž těžký!</Czech>
<French>Trop lourd pour être tracté</French>
<German>Dieser Gegenstand kann nicht gezogen werden, da er zu schwer ist.</German>
<Portuguese>Não é possível carregar o item devido a seu peso</Portuguese> <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> <Italian>Non è possibile trascinare l'oggetto a causa del suo peso</Italian>
<Hungarian>Túl nehéz ahhoz, hogy elhúzd</Hungarian> --> <Hungarian>Túl nehéz ahhoz, hogy elhúzd</Hungarian>
<Russian>Слишком тяжело</Russian> <Russian>Слишком тяжело</Russian>
<Czech>Moc težké</Czech>
</Key> </Key>
<Key ID="STR_ACE_Dragging_Carry"> <Key ID="STR_ACE_Dragging_Carry">
<English>Carry</English> <English>Carry</English>

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="Explosives"> <Package name="Explosives">
<Key ID="STR_ACE_Explosives_Menu"> <Key ID="STR_ACE_Explosives_Menu">
@ -79,9 +80,9 @@
<Spanish>+ Modificador, girar</Spanish> <Spanish>+ Modificador, girar</Spanish>
<French>+ Modificateur, tourner</French> <French>+ Modificateur, tourner</French>
<Italian>+ Modificatore, rotazione</Italian> <Italian>+ Modificatore, rotazione</Italian>
<Czech>+ Otočit</Czech> <Czech>+ Modifikátor, otočit</Czech>
<Hungarian>+ Változtatás, forgatás</Hungarian> <Hungarian>+ Változtatás, forgatás</Hungarian>
<Polish>+ modyfikator, obracanie</Polish> <Polish>+ Modyfikator, obrót</Polish>
<Portuguese>+ Modificador, rotaciona</Portuguese> <Portuguese>+ Modificador, rotaciona</Portuguese>
<Russian>+ Bращать</Russian> <Russian>+ Bращать</Russian>
</Key> </Key>
@ -139,7 +140,7 @@
<Spanish>Dispositivo de detonación M57</Spanish> <Spanish>Dispositivo de detonación M57</Spanish>
<Polish>Zapalnik M57</Polish> <Polish>Zapalnik M57</Polish>
<French>M57 Dispositif de mise à feu</French> <French>M57 Dispositif de mise à feu</French>
<Czech>M57 Odpalovací Zařízení</Czech> <Czech>Odpalovací zařízení M57</Czech>
<Italian>Detonatore M57</Italian> <Italian>Detonatore M57</Italian>
<Hungarian>M57 Detonátor</Hungarian> <Hungarian>M57 Detonátor</Hungarian>
<Portuguese>M57 Dispositivo de Detonação</Portuguese> <Portuguese>M57 Dispositivo de Detonação</Portuguese>
@ -151,7 +152,7 @@
<Spanish>Usado para detonar remotamente explosivos</Spanish> <Spanish>Usado para detonar remotamente explosivos</Spanish>
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish> <Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
<French>Utilisé pour déclencher des explosifs à distance</French> <French>Utilisé pour déclencher des explosifs à distance</French>
<Czech>Použévané ke vzdálenému odpalování výbušnin</Czech> <Czech>Používané ke vzdálenému odpalování výbušnin</Czech>
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian> <Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian> <Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
<Portuguese>Usado para acionar explosivos remotamente</Portuguese> <Portuguese>Usado para acionar explosivos remotamente</Portuguese>
@ -163,7 +164,7 @@
<Spanish>Dispositivo de detonación MK26</Spanish> <Spanish>Dispositivo de detonación MK26</Spanish>
<Polish>Zapalnik M26</Polish> <Polish>Zapalnik M26</Polish>
<French>M26 Dispositif de mise à feu</French> <French>M26 Dispositif de mise à feu</French>
<Czech>M26 Odpalovací Zařízení</Czech> <Czech>Odpalovací zařízení M26</Czech>
<Italian>Detonatore M26</Italian> <Italian>Detonatore M26</Italian>
<Hungarian>M26 Detonátor</Hungarian> <Hungarian>M26 Detonátor</Hungarian>
<Portuguese>M26 Dispositivo de Detonação</Portuguese> <Portuguese>M26 Dispositivo de Detonação</Portuguese>
@ -493,6 +494,9 @@
<English>Pick up</English> <English>Pick up</English>
<German>Aufheben</German> <German>Aufheben</German>
<Spanish>Recoger</Spanish> <Spanish>Recoger</Spanish>
<Czech>Sebrat</Czech>
<Polish>Podnieś</Polish>
<French>Prendre</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -4,6 +4,8 @@ GVAR(enabled) = false;
GVAR(time) = 0; GVAR(time) = 0;
GVAR(position) = [0,0,0]; GVAR(position) = [0,0,0];
if (!hasInterface) exitWith {};
#include "initKeybinds.sqf" #include "initKeybinds.sqf"
["infoDisplayChanged", { ["infoDisplayChanged", {

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 -->
<Project name="ACE"> <Project name="ACE">
<Package name="FCS"> <Package name="FCS">
<Key ID="STR_ACE_FCS_LaseTarget"> <Key ID="STR_ACE_FCS_LaseTarget">
@ -9,12 +8,6 @@
<Polish>Naświetl cel / Zmierz odległość</Polish> <Polish>Naświetl cel / Zmierz odległość</Polish>
<Czech>Označit cíl / Změřit vzdálenost</Czech> <Czech>Označit cíl / Změřit vzdálenost</Czech>
<Spanish>Iluminar objetivo / Medir distancia</Spanish> <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> <Russian>Подсветить цель / Замерить расстояние</Russian>
</Key> </Key>
<Key ID="STR_ACE_FCS_ZeroedTo"> <Key ID="STR_ACE_FCS_ZeroedTo">
@ -32,7 +25,7 @@
<Key ID="STR_ACE_FCS_AdjustRangeUp"> <Key ID="STR_ACE_FCS_AdjustRangeUp">
<English>Adjust FCS Range (Up)</English> <English>Adjust FCS Range (Up)</English>
<German>Entfernung des FLS erhöhen</German> <German>Entfernung des FLS erhöhen</German>
<Polish>Zwiększ zasięg FCS</Polish> <Polish>Zwiększ zasięg SKO</Polish>
<Spanish>Ajustar distancia del FCS (arriba)</Spanish> <Spanish>Ajustar distancia del FCS (arriba)</Spanish>
<Czech>Nastavit FCS Náměr (nahoru)</Czech> <Czech>Nastavit FCS Náměr (nahoru)</Czech>
<French>Augmenter la distance du SCT</French> <French>Augmenter la distance du SCT</French>
@ -44,7 +37,7 @@
<Key ID="STR_ACE_FCS_AdjustRangeDown"> <Key ID="STR_ACE_FCS_AdjustRangeDown">
<English>Adjust FCS Range (Down)</English> <English>Adjust FCS Range (Down)</English>
<German>Entfernung des FLS verringern</German> <German>Entfernung des FLS verringern</German>
<Polish>Zmniejsz zasięg FCS</Polish> <Polish>Zmniejsz zasięg SKO</Polish>
<Spanish>Ajustar distancia del FCS (abajo)</Spanish> <Spanish>Ajustar distancia del FCS (abajo)</Spanish>
<Czech>Nastavit FCS Náměr (dolů)</Czech> <Czech>Nastavit FCS Náměr (dolů)</Czech>
<French>Réduire la distance du SCT</French> <French>Réduire la distance du SCT</French>
@ -58,7 +51,7 @@
<German>FLS zurücksetzen</German> <German>FLS zurücksetzen</German>
<Spanish>Reiniciar FCS</Spanish> <Spanish>Reiniciar FCS</Spanish>
<French>Réinitialiser le SCT</French> <French>Réinitialiser le SCT</French>
<Polish>Resetuj FCS</Polish> <Polish>Resetuj SKO</Polish>
<Czech>Resetovat FCS</Czech> <Czech>Resetovat FCS</Czech>
<Hungarian>FCS visszaállítása</Hungarian> <Hungarian>FCS visszaállítása</Hungarian>
<Portuguese>Reiniciar FCS</Portuguese> <Portuguese>Reiniciar FCS</Portuguese>
@ -70,7 +63,7 @@
<German>FLS wurde zurückgesetzt.</German> <German>FLS wurde zurückgesetzt.</German>
<Spanish>FCS reiniciado</Spanish> <Spanish>FCS reiniciado</Spanish>
<French>SCT réinitialisé.</French> <French>SCT réinitialisé.</French>
<Polish>FCS został zresetowany.</Polish> <Polish>SKO został zresetowany.</Polish>
<Czech>FCS byl resetován.</Czech> <Czech>FCS byl resetován.</Czech>
<Hungarian>Az FCS visszaállítva</Hungarian> <Hungarian>Az FCS visszaállítva</Hungarian>
<Portuguese>FCS reiniciado.</Portuguese> <Portuguese>FCS reiniciado.</Portuguese>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2014-12-15 --> <!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="FlashSuppressors"> <Package name="FlashSuppressors">
<Key ID="STR_ACE_muzzle_mzls_H"> <Key ID="STR_ACE_muzzle_mzls_H">
@ -8,8 +8,8 @@
<German>Mündungsfeuerdämpfer (6,5 mm)</German> <German>Mündungsfeuerdämpfer (6,5 mm)</German>
<Italian>Soppressore di fiamma (6.5mm)</Italian> <Italian>Soppressore di fiamma (6.5mm)</Italian>
<Portuguese>Supressor de Clarão (6,5mm)</Portuguese> <Portuguese>Supressor de Clarão (6,5mm)</Portuguese>
<Polish>Tłumik płomieni (6,5 mm)</Polish> <Polish>Tłumik płomienia (6,5 mm)</Polish>
<Czech>Tlumič záblesku (6,5 mm)</Czech> <Czech>Tlumič plamene (6,5 mm)</Czech>
<French>Cache-flamme (6,5 mm)</French> <French>Cache-flamme (6,5 mm)</French>
<Russian>Пламегаситель (6,5 мм)</Russian> <Russian>Пламегаситель (6,5 мм)</Russian>
<Spanish>Supresor (6,5 mm)</Spanish> <Spanish>Supresor (6,5 mm)</Spanish>
@ -20,8 +20,8 @@
<German>Mündungsfeuerdämpfer (7,62 mm)</German> <German>Mündungsfeuerdämpfer (7,62 mm)</German>
<Italian>Soppressore di fiamma (7.62mm)</Italian> <Italian>Soppressore di fiamma (7.62mm)</Italian>
<Portuguese>Supressor de Clarão (7,62mm)</Portuguese> <Portuguese>Supressor de Clarão (7,62mm)</Portuguese>
<Polish>Tłumik płomieni (7,62 mm)</Polish> <Polish>Tłumik płomienia (7,62 mm)</Polish>
<Czech>Tlumič záblesku (7,62 mm)</Czech> <Czech>Tlumič plamene (7,62 mm)</Czech>
<French>Cache-flamme (7,62 mm)</French> <French>Cache-flamme (7,62 mm)</French>
<Russian>Пламегаситель (7,62 мм)</Russian> <Russian>Пламегаситель (7,62 мм)</Russian>
<Spanish>Supresor (7,62 mm)</Spanish> <Spanish>Supresor (7,62 mm)</Spanish>
@ -32,8 +32,8 @@
<German>Mündungsfeuerdämpfer (5,56 mm)</German> <German>Mündungsfeuerdämpfer (5,56 mm)</German>
<Italian>Soppressore di fiamma (5.56mm)</Italian> <Italian>Soppressore di fiamma (5.56mm)</Italian>
<Portuguese>Supressor de Clarão (5,56mm)</Portuguese> <Portuguese>Supressor de Clarão (5,56mm)</Portuguese>
<Polish>Tłumik płomieni (5,56 mm)</Polish> <Polish>Tłumik płomienia (5,56 mm)</Polish>
<Czech>Tlumič záblesku (5,56 mm)</Czech> <Czech>Tlumič plamene (5,56 mm)</Czech>
<French>Cache-flamme (5,56 mm)</French> <French>Cache-flamme (5,56 mm)</French>
<Russian>Пламегаситель (5,56 мм)</Russian> <Russian>Пламегаситель (5,56 мм)</Russian>
<Spanish>Supresor (5,56 mm)</Spanish> <Spanish>Supresor (5,56 mm)</Spanish>
@ -44,8 +44,8 @@
<German>Mündungsfeuerdämpfer (.45 ACP)</German> <German>Mündungsfeuerdämpfer (.45 ACP)</German>
<Italian>Soppressore di fiamma (.45 ACP)</Italian> <Italian>Soppressore di fiamma (.45 ACP)</Italian>
<Portuguese>Supressor de Clarão (.45 ACP)</Portuguese> <Portuguese>Supressor de Clarão (.45 ACP)</Portuguese>
<Polish>Tłumik płomieni (.45 ACP)</Polish> <Polish>Tłumik płomienia (.45 ACP)</Polish>
<Czech>Tlumič záblesku (.45 ACP)</Czech> <Czech>Tlumič plamene (.45 ACP)</Czech>
<French>Cache-flamme (.45 ACP)</French> <French>Cache-flamme (.45 ACP)</French>
<Russian>Пламегаситель (.45 ACP)</Russian> <Russian>Пламегаситель (.45 ACP)</Russian>
<Spanish>Supresor (.45 ACP)</Spanish> <Spanish>Supresor (.45 ACP)</Spanish>
@ -56,8 +56,8 @@
<German>Mündungsfeuerdämpfer (9 mm)</German> <German>Mündungsfeuerdämpfer (9 mm)</German>
<Italian>Soppressore di fiamma (9 mm)</Italian> <Italian>Soppressore di fiamma (9 mm)</Italian>
<Portuguese>Supressor de Clarão (9mm)</Portuguese> <Portuguese>Supressor de Clarão (9mm)</Portuguese>
<Polish>Tłumik płomieni (9 mm)</Polish> <Polish>Tłumik płomienia (9 mm)</Polish>
<Czech>Tlumič záblesku (9 mm)</Czech> <Czech>Tlumič plamene (9 mm)</Czech>
<French>Cache-flamme (9 mm)</French> <French>Cache-flamme (9 mm)</French>
<Russian>Пламегаситель (9 мм)</Russian> <Russian>Пламегаситель (9 мм)</Russian>
<Spanish>Supresor (9 mm)</Spanish> <Spanish>Supresor (9 mm)</Spanish>
@ -68,7 +68,7 @@
<German>Mündungsfeuerdämpfer (.338)</German> <German>Mündungsfeuerdämpfer (.338)</German>
<Italian>Soppressore di fiamma (.338)</Italian> <Italian>Soppressore di fiamma (.338)</Italian>
<Portuguese>Supressor de Clarão (.338)</Portuguese> <Portuguese>Supressor de Clarão (.338)</Portuguese>
<Polish>Tłumik płomieni (.338)</Polish> <Polish>Tłumik płomienia (.338)</Polish>
<Czech>Tlumič záblesku (.338)</Czech> <Czech>Tlumič záblesku (.338)</Czech>
<French>Cache-flamme (.338)</French> <French>Cache-flamme (.338)</French>
<Russian>Пламегаситель (.338)</Russian> <Russian>Пламегаситель (.338)</Russian>
@ -80,7 +80,7 @@
<German>Mündungsfeuerdämpfer (9,3 mm)</German> <German>Mündungsfeuerdämpfer (9,3 mm)</German>
<Italian>Soppressore di fiamma (9.3mm)</Italian> <Italian>Soppressore di fiamma (9.3mm)</Italian>
<Portuguese>Supressor de Clarão (9,3mm)</Portuguese> <Portuguese>Supressor de Clarão (9,3mm)</Portuguese>
<Polish>Tłumik płomieni (9,3 mm)</Polish> <Polish>Tłumik płomienia (9,3 mm)</Polish>
<Czech>Tlumič záblesku (9,3 mm)</Czech> <Czech>Tlumič záblesku (9,3 mm)</Czech>
<French>Cache-flamme (9,3 mm)</French> <French>Cache-flamme (9,3 mm)</French>
<Russian>Пламегаситель (9,3 мм)</Russian> <Russian>Пламегаситель (9,3 мм)</Russian>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Frag"> <Package name="Frag">
<Key ID="STR_DN_ACE_FRAG"> <Key ID="STR_DN_ACE_FRAG">
@ -6,7 +6,7 @@
<German>Keine Schrapnelle</German> <German>Keine Schrapnelle</German>
<Czech>Zakázat fragmentaci granátů</Czech> <Czech>Zakázat fragmentaci granátů</Czech>
<Spanish>Desactivar fragmentación</Spanish> <Spanish>Desactivar fragmentación</Spanish>
<Polish>Wyłącz głowice fragmentacyjne</Polish> <Polish>Wyłącz fragmentację odłamków</Polish>
<Russian>Выключить разлёт осколков</Russian> <Russian>Выключить разлёт осколков</Russian>
</Key> </Key>
</Package> </Package>

View File

@ -1,12 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 -->
<Project name="ACE"> <Project name="ACE">
<Package name="Goggles"> <Package name="Goggles">
<Key ID="STR_ACE_Goggles_ShowInThirdPerson"> <Key ID="STR_ACE_Goggles_ShowInThirdPerson">
<English>Show Goggle Effects in Third Person</English> <English>Show Goggle Effects in Third Person</English>
<German>Brilleneffekt in dritter Person anzeigen</German> <German>Brilleneffekt in dritter Person anzeigen</German>
<Spanish>Mostrar efectos de las gafas en tercera persona</Spanish> <Spanish>Mostrar efectos de las gafas en tercera persona</Spanish>
<Czech>Zobrazit účinky brýlí v třetí osobě</Czech> <Czech>Zobrazit efekt brýlí v třetí osobě</Czech>
<French>Effets de lunettes à la 3ème personne</French> <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> <Hungarian>Szemüveg effekt mutatása külső nézetből</Hungarian>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 --> <!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="Grenades"> <Package name="Grenades">
<Key ID="STR_ACE_Grenades_SwitchGrenadeMode"> <Key ID="STR_ACE_Grenades_SwitchGrenadeMode">
<English>Switch Grenade Mode</English> <English>Switch Grenade Mode</English>
<German>Granaten-Modus wechseln</German> <German>Granaten-Modus wechseln</German>
<Spanish>Cambiar modo de granada</Spanish> <Spanish>Cambiar modo de granada</Spanish>
<Polish>Tryb rzutu granatem</Polish> <Polish>Przełącz sposób rzutu granatem</Polish>
<Czech>Změnit styl hodu granátu</Czech> <Czech>Změnit styl hodu granátu</Czech>
<French>Changer type de lancer de grenade</French> <French>Changer type de lancer de grenade</French>
<Russian>Сменить режим броска гранаты</Russian> <Russian>Сменить режим броска гранаты</Russian>
@ -19,7 +19,7 @@
<German>Normaler Wurf</German> <German>Normaler Wurf</German>
<Spanish>Lanzamiento normal</Spanish> <Spanish>Lanzamiento normal</Spanish>
<Polish>Normalny rzut</Polish> <Polish>Normalny rzut</Polish>
<Czech>Normální</Czech> <Czech>Normální hod</Czech>
<French>Lancer Normal</French> <French>Lancer Normal</French>
<Russian>Нормальный бросок</Russian> <Russian>Нормальный бросок</Russian>
<Hungarian>Normál dobás</Hungarian> <Hungarian>Normál dobás</Hungarian>
@ -30,8 +30,8 @@
<English>High Throw</English> <English>High Throw</English>
<German>Hoher Wurf</German> <German>Hoher Wurf</German>
<Spanish>Lanzamiento alto</Spanish> <Spanish>Lanzamiento alto</Spanish>
<Polish>Rzut lobem</Polish> <Polish>Wysoki rzut</Polish>
<Czech>Vysoko</Czech> <Czech>Vysoký hod</Czech>
<French>Lancer Haut</French> <French>Lancer Haut</French>
<Russian>Высокий бросок</Russian> <Russian>Высокий бросок</Russian>
<Hungarian>Magas dobás</Hungarian> <Hungarian>Magas dobás</Hungarian>
@ -43,7 +43,7 @@
<German>Präziser Wurf</German> <German>Präziser Wurf</German>
<Spanish>Lanzamiento preciso</Spanish> <Spanish>Lanzamiento preciso</Spanish>
<Polish>Precyzyjny rzut</Polish> <Polish>Precyzyjny rzut</Polish>
<Czech>Přesně</Czech> <Czech>Přesný hod</Czech>
<French>Lancer Précis</French> <French>Lancer Précis</French>
<Russian>Точный бросок</Russian> <Russian>Точный бросок</Russian>
<Hungarian>Pontos dobás</Hungarian> <Hungarian>Pontos dobás</Hungarian>
@ -80,7 +80,7 @@
<Spanish>Granada aturdidora M84</Spanish> <Spanish>Granada aturdidora M84</Spanish>
<French>M84 Grenade Incapacitante</French> <French>M84 Grenade Incapacitante</French>
<Polish>Granat hukowy M84</Polish> <Polish>Granat hukowy M84</Polish>
<Czech>M84 Omračující granát</Czech> <Czech>Omračující granát M84</Czech>
<Russian>M84 светозвуковая граната</Russian> <Russian>M84 светозвуковая граната</Russian>
<Hungarian>M84 Villanógránát</Hungarian> <Hungarian>M84 Villanógránát</Hungarian>
<Italian>Granata Stordente M84</Italian> <Italian>Granata Stordente M84</Italian>
@ -91,7 +91,7 @@
<German>Verursacht temporäre Blind- und Taubheit.</German> <German>Verursacht temporäre Blind- und Taubheit.</German>
<Spanish>Produce de manera inmediata ceguera, sordera, tinitus y afecta el oído interior.</Spanish> <Spanish>Produce de manera inmediata ceguera, sordera, tinitus y afecta el oído interior.</Spanish>
<French>Les grenades incapacitantes servent à désorienter ou distraire une menace pendant quelques secondes.</French> <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> <Polish>Znany też jako flashbang. Powoduje natychmiastową tymczasową ślepotę, głuchotę, dzwonienie w uszach i inne zaburzenia ucha wewnętrznego.</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> <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> <Hungarian>Eldobás után felrobban és éles hang, valamint fényhatással zavarja össze a környezetében tartózkodókat.</Hungarian>
@ -101,7 +101,7 @@
<Key ID="STR_ACE_Grenades_M127A1_White_Name"> <Key ID="STR_ACE_Grenades_M127A1_White_Name">
<English>M127A1 Hand Held Signal (White)</English> <English>M127A1 Hand Held Signal (White)</English>
<German>M127A1 Leuchtmittel (Weiß)</German> <German>M127A1 Leuchtmittel (Weiß)</German>
<Czech> M127A1 Světlice (Bílá)</Czech> <Czech>Světlice M127A1 (Bílá)</Czech>
<Hungarian>M127A1 Jelzőrakéta (Fehér)</Hungarian> <Hungarian>M127A1 Jelzőrakéta (Fehér)</Hungarian>
<Italian>M127A1 Bengala (Bianco)</Italian> <Italian>M127A1 Bengala (Bianco)</Italian>
<Polish>Flara ręczna sygnałowa M127A1 (biała)</Polish> <Polish>Flara ręczna sygnałowa M127A1 (biała)</Polish>
@ -113,7 +113,7 @@
<Key ID="STR_ACE_Grenades_M127A1_Red_Name"> <Key ID="STR_ACE_Grenades_M127A1_Red_Name">
<English>M127A1 Hand Held Signal (Red)</English> <English>M127A1 Hand Held Signal (Red)</English>
<German>M127A1 Leuchtmittel (Rot)</German> <German>M127A1 Leuchtmittel (Rot)</German>
<Czech>M127A1 Světlice (Červená)</Czech> <Czech>Světlice M127A1 (Červená)</Czech>
<Hungarian>M127A1 Jelzőrakéta (Piros)</Hungarian> <Hungarian>M127A1 Jelzőrakéta (Piros)</Hungarian>
<Italian>M127A1 Bengala (Rosso)</Italian> <Italian>M127A1 Bengala (Rosso)</Italian>
<Polish>Flara ręczna sygnałowa M127A1 (czerwona)</Polish> <Polish>Flara ręczna sygnałowa M127A1 (czerwona)</Polish>
@ -125,7 +125,7 @@
<Key ID="STR_ACE_Grenades_M127A1_Green_Name"> <Key ID="STR_ACE_Grenades_M127A1_Green_Name">
<English>M127A1 Hand Held Signal (Green)</English> <English>M127A1 Hand Held Signal (Green)</English>
<German>M127A1 Leuchtmittel (Grün)</German> <German>M127A1 Leuchtmittel (Grün)</German>
<Czech>M127A1 Světlice (Zelená)</Czech> <Czech>Světlice M127A1 (Zelená)</Czech>
<Hungarian>M127A1 Jelzőrakéta (Zöld)</Hungarian> <Hungarian>M127A1 Jelzőrakéta (Zöld)</Hungarian>
<Italian>M127A1 Bengala (Verde)</Italian> <Italian>M127A1 Bengala (Verde)</Italian>
<Polish>Flara ręczna sygnałowa M127A1 (zielona)</Polish> <Polish>Flara ręczna sygnałowa M127A1 (zielona)</Polish>
@ -137,7 +137,7 @@
<Key ID="STR_ACE_Grenades_M127A1_Yellow_Name"> <Key ID="STR_ACE_Grenades_M127A1_Yellow_Name">
<English>M127A1 Hand Held Signal (Yellow)</English> <English>M127A1 Hand Held Signal (Yellow)</English>
<German>M127A1 Leuchtmittel (Gelb)</German> <German>M127A1 Leuchtmittel (Gelb)</German>
<Czech>M127A1 Světlice (Žlutá)</Czech> <Czech>Světlice M127A1 (Žlutá)</Czech>
<Hungarian>M127A1 Jelzőrakéta (Sárga)</Hungarian> <Hungarian>M127A1 Jelzőrakéta (Sárga)</Hungarian>
<Italian>M127A1 Bengala (Giallo)</Italian> <Italian>M127A1 Bengala (Giallo)</Italian>
<Polish>Flara ręczna sygnałowa M127A1 (żółta)</Polish> <Polish>Flara ręczna sygnałowa M127A1 (żółta)</Polish>
@ -185,7 +185,7 @@
<Key ID="STR_ACE_Grenades_M127A1_Yellow_Description"> <Key ID="STR_ACE_Grenades_M127A1_Yellow_Description">
<English>Yellow Hand Flare</English> <English>Yellow Hand Flare</English>
<German>Gelbe Leuchtkugel, wird wie eine Granate geworfen.</German> <German>Gelbe Leuchtkugel, wird wie eine Granate geworfen.</German>
<Czech>Světlice Žlutá</Czech> <Czech>Světlice (Žlutá)</Czech>
<Hungarian>Jelzőrakéta (Sárga)</Hungarian> <Hungarian>Jelzőrakéta (Sárga)</Hungarian>
<Italian>Bengala (Giallo)</Italian> <Italian>Bengala (Giallo)</Italian>
<Polish>Flara ręczna (żółta)</Polish> <Polish>Flara ręczna (żółta)</Polish>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 -->
<Project name="ACE"> <Project name="ACE">
<Package name="Hearing"> <Package name="Hearing">
<Key ID="STR_ACE_Hearing_EarPlugs_Name"> <Key ID="STR_ACE_Hearing_EarPlugs_Name">
@ -30,7 +29,7 @@
<English>Earplugs in</English> <English>Earplugs in</English>
<German>Ohrenstöpsel drinnen</German> <German>Ohrenstöpsel drinnen</German>
<Spanish>Poner tapones</Spanish> <Spanish>Poner tapones</Spanish>
<Polish>Załóż stopery</Polish> <Polish>Włóż stopery</Polish>
<Czech>Dát špunty do uší</Czech> <Czech>Dát špunty do uší</Czech>
<Russian>Беруши надеты</Russian> <Russian>Беруши надеты</Russian>
<French>Bouchons mis</French> <French>Bouchons mis</French>
@ -42,7 +41,7 @@
<English>Earplugs out</English> <English>Earplugs out</English>
<German>Ohrenstöpsel raus</German> <German>Ohrenstöpsel raus</German>
<Spanish>Quitar tapones</Spanish> <Spanish>Quitar tapones</Spanish>
<Polish>Zdejmij stopery</Polish> <Polish>Wyjmij stopery</Polish>
<Czech>Vyndat špunty z uší</Czech> <Czech>Vyndat špunty z uší</Czech>
<Russian>Беруши сняты</Russian> <Russian>Беруши сняты</Russian>
<French>Bouchons enlevés</French> <French>Bouchons enlevés</French>
@ -54,7 +53,7 @@
<English>Earplugs in</English> <English>Earplugs in</English>
<German>Ohrenstöpsel drinnen</German> <German>Ohrenstöpsel drinnen</German>
<Spanish>Tapones puestos</Spanish> <Spanish>Tapones puestos</Spanish>
<Polish>Stopery założone</Polish> <Polish>Stopery włożone</Polish>
<Czech>Špunty v uších</Czech> <Czech>Špunty v uších</Czech>
<Russian>Беруши надеты</Russian> <Russian>Беруши надеты</Russian>
<French>Bouchons mis</French> <French>Bouchons mis</French>
@ -66,7 +65,7 @@
<English>Earplugs out</English> <English>Earplugs out</English>
<German>Ohrenstöpsel raus</German> <German>Ohrenstöpsel raus</German>
<Spanish>Tapones quitados</Spanish> <Spanish>Tapones quitados</Spanish>
<Polish>Stopery zdjęte</Polish> <Polish>Stopery wyjęte</Polish>
<Czech>Špunty venku z uší</Czech> <Czech>Špunty venku z uší</Czech>
<Russian>Беруши сняты</Russian> <Russian>Беруши сняты</Russian>
<French>Bouchons enlevés</French> <French>Bouchons enlevés</French>
@ -100,9 +99,12 @@
</Key> </Key>
<Key ID="STR_ACE_Hearing_DisableEarRinging"> <Key ID="STR_ACE_Hearing_DisableEarRinging">
<English>Disable ear ringing</English> <English>Disable ear ringing</English>
<German>Deaktiviere Ohrfiepen</German> <French>Désactiver les tintements d'oreille</French>
<Spanish>Desactivar zumbido de oídos</Spanish> <Spanish>Desactivar zumbido de oídos</Spanish>
<Russian>Отключить эффект баротравмы</Russian> <Russian>Отключить эффект баротравмы</Russian>
<German>Knalltrauma deaktivieren</German>
<Czech>Vypnout pískání v uších</Czech>
<Polish>Wyłącz dzwonienie w uszach</Polish>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -6,30 +6,45 @@
<German>Immer den Cursor für Selbst-Interaktionen anzeigen.</German> <German>Immer den Cursor für Selbst-Interaktionen anzeigen.</German>
<Spanish>Mostrar siempre el cursor para la interacción propia</Spanish> <Spanish>Mostrar siempre el cursor para la interacción propia</Spanish>
<Russian>Всегда показывать курсор для взаимодействия с собой</Russian> <Russian>Всегда показывать курсор для взаимодействия с собой</Russian>
<Czech>Zobrazit kurzor v menu pro vlastní interakci</Czech>
<Polish>Zawsze wyświetlaj kursor dla własnej interakcji</Polish>
<French>Toujours afficher le curseur pour les interactions sur soi-même</French>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_InteractKey"> <Key ID="STR_ACE_Interact_Menu_InteractKey">
<English>Interact Key</English> <English>Interact Key</English>
<German>Fremdinteraktionsmenü-Taste</German> <German>Fremdinteraktionsmenü-Taste</German>
<Spanish>Tecla de interacción</Spanish> <Spanish>Tecla de interacción</Spanish>
<Russian>Клавиша взаимодействия</Russian> <Russian>Клавиша взаимодействия</Russian>
<Czech>Klávesa pro interakci</Czech>
<Polish>Klawisz interakcji</Polish>
<French>Touche d'interaction</French>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_SelfInteractKey"> <Key ID="STR_ACE_Interact_Menu_SelfInteractKey">
<English>Self Interaction Key</English> <English>Self Interaction Key</English>
<German>Eigeninteraktionsmenü-Taste</German> <German>Eigeninteraktionsmenü-Taste</German>
<Spanish>Tecla de interacción propia</Spanish> <Spanish>Tecla de interacción propia</Spanish>
<Russian>Клавиша взаимодействия (с собой)</Russian> <Russian>Клавиша взаимодействия (с собой)</Russian>
<Czech>Klávesa pro vlastní interakci</Czech>
<Polish>Klawisz własnej interakcji</Polish>
<French>Touche d'Interaction sur soi-même</French>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_SelfActionsRoot"> <Key ID="STR_ACE_Interact_Menu_SelfActionsRoot">
<English>Self Actions</English> <English>Self Actions</English>
<German>Selbst-Aktionen</German> <German>Selbst-Aktionen</German>
<Spanish>Acciones propias</Spanish> <Spanish>Acciones propias</Spanish>
<Russian>Действия с собой</Russian> <Russian>Действия с собой</Russian>
<Czech>Vlastní akce</Czech>
<Polish>Własne akcje</Polish>
<French>Actions sur soi-même</French>
</Key> </Key>
<Key ID="STR_ACE_Interact_Menu_VehicleActionsRoot"> <Key ID="STR_ACE_Interact_Menu_VehicleActionsRoot">
<English>Vehicle Actions</English> <English>Vehicle Actions</English>
<German>Fahrzeug-Aktionen</German> <German>Fahrzeug-Aktionen</German>
<Spanish>Acciones de vehículo</Spanish> <Spanish>Acciones de vehículo</Spanish>
<Russian>Действия на транспорте</Russian> <Russian>Действия на транспорте</Russian>
<Czech>Interakce s vozidly</Czech>
<Polish>Akcje pojazdu</Polish>
<French>Actions sur les véhicules</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -6,22 +6,6 @@ class Extended_PreInit_EventHandlers {
class Extended_PostInit_EventHandlers { class Extended_PostInit_EventHandlers {
class ADDON { class ADDON {
clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) ); init = QUOTE(call COMPILE_FILE(XEH_postInit));
};
};
class Extended_GetIn_EventHandlers {
class All {
class ADDONnu {
clientGetIn = QUOTE( if (_this select 2 == ACE_player && {!isNull (findDisplay 1713999)}) then {(findDisplay 1713999) closeDisplay 1});
};
};
};
class Extended_GetOut_EventHandlers {
class All {
class ADDONnu {
clientGetOut = QUOTE( if (_this select 2 == ACE_player && {!isNull (findDisplay 1713999)}) then {(findDisplay 1713999) closeDisplay 1});
};
}; };
}; };

View File

@ -260,12 +260,11 @@ class CfgVehicles {
icon = PATHTOF(UI\team\team_white_ca.paa); icon = PATHTOF(UI\team\team_white_ca.paa);
hotkey = "N"; hotkey = "N";
}; };
class ACE_BecomeLeader { class ACE_BecomeLeader {
displayName = "$STR_ACE_Interaction_BecomeLeader"; displayName = "$STR_ACE_Interaction_BecomeLeader";
condition = QUOTE(count (units group _player) > 1 && {leader group _player != _player}); condition = QUOTE(_this call FUNC(canBecomeLeader));
exceptions[] = {"isNotInside"}; exceptions[] = {"isNotInside"};
statement = QUOTE(_newGroup = createGroup side group _player; (units group _player) joinSilent _newGroup; _newGroup selectLeader _player;); statement = QUOTE(_this call FUNC(doBecomeLeader));
showDisabled = 1; showDisabled = 1;
priority = 1.0; priority = 1.0;
icon = PATHTOF(UI\team\team_white_ca.paa); icon = PATHTOF(UI\team\team_white_ca.paa);

View File

@ -4,6 +4,12 @@
ACE_Modifier = 0; ACE_Modifier = 0;
//SelectLeader Event Handler for BecomeLeader action:
[QGVAR(selectLeader), {
PARAMS_2(_group,_leader);
_group selectLeader _leader;
}] call EFUNC(common,addEventHandler);
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
GVAR(isOpeningDoor) = false; GVAR(isOpeningDoor) = false;

View File

@ -6,8 +6,10 @@ PREP(addPassengerActions);
PREP(addPassengersActions); PREP(addPassengersActions);
PREP(addSelectableItem); PREP(addSelectableItem);
PREP(applyButtons); PREP(applyButtons);
PREP(canBecomeLeader);
PREP(canInteractWithCivilian); PREP(canInteractWithCivilian);
PREP(canTapShoulder); PREP(canTapShoulder);
PREP(doBecomeLeader);
PREP(getDoor); PREP(getDoor);
PREP(getDoorAnimations); PREP(getDoorAnimations);
PREP(getDown); PREP(getDown);

View File

@ -0,0 +1,21 @@
/*
* Author: PabstMirror
* Test if can Become Leader of group
*
* Arguments:
* 0: target <OBJECT>
* 1: player <OBJECT>
*
* Return Value:
* <BOOL>
*
* Example:
* [player, player] call ace_interaction_fnc_canBecomeLeader
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_2(_target,_player);
(count (units group _player) > 1) && {leader group _player != _player}

View File

@ -0,0 +1,21 @@
/*
* Author: PabstMirror
* Become Leader of group
*
* Arguments:
* 0: target <OBJECT>
* 1: player <OBJECT>
*
* Return Value:
* None
*
* Example:
* [player, player] call ace_interaction_fnc_doBecomeLeader
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_2(_target,_player);
[QGVAR(selectLeader), (units group _player), [(group _player), _player]] call EFUNC(common,targetEvent);

View File

@ -5,41 +5,65 @@
<English>Interactions</English> <English>Interactions</English>
<German>Interaktionen</German> <German>Interaktionen</German>
<Spanish>Interacciones</Spanish> <Spanish>Interacciones</Spanish>
<Czech>Interakce</Czech>
<Polish>Interakcje</Polish>
<French>Interactions</French>
</Key> </Key>
<Key ID="STR_ACE_Interaction_Torso"> <Key ID="STR_ACE_Interaction_Torso">
<English>Torso</English> <English>Torso</English>
<German>Torso</German> <German>Torso</German>
<Spanish>Torso</Spanish> <Spanish>Torso</Spanish>
<Czech>Trup</Czech>
<Polish>Tors</Polish>
<French>Torse</French>
</Key> </Key>
<Key ID="STR_ACE_Interaction_Head"> <Key ID="STR_ACE_Interaction_Head">
<English>Head</English> <English>Head</English>
<German>Kopf</German> <German>Kopf</German>
<Spanish>Cabeza</Spanish> <Spanish>Cabeza</Spanish>
<Czech>Hlava</Czech>
<Polish>Głowa</Polish>
<French>Tête</French>
</Key> </Key>
<Key ID="STR_ACE_Interaction_ArmLeft"> <Key ID="STR_ACE_Interaction_ArmLeft">
<English>Left Arm</English> <English>Left Arm</English>
<German>Linker Arm</German> <German>Linker Arm</German>
<Spanish>Brazo izquierdo</Spanish> <Spanish>Brazo izquierdo</Spanish>
<Czech>Levá paže</Czech>
<Polish>Lewe ramię</Polish>
<French>Bras Gauche</French>
</Key> </Key>
<Key ID="STR_ACE_Interaction_ArmRight"> <Key ID="STR_ACE_Interaction_ArmRight">
<English>Right Arm</English> <English>Right Arm</English>
<German>Rechter Arm</German> <German>Rechter Arm</German>
<Spanish>Brazo derecho</Spanish> <Spanish>Brazo derecho</Spanish>
<Czech>Pravá paže</Czech>
<Polish>Prawe ramię</Polish>
<French>Bras Droit</French>
</Key> </Key>
<Key ID="STR_ACE_Interaction_LegLeft"> <Key ID="STR_ACE_Interaction_LegLeft">
<English>Left Leg</English> <English>Left Leg</English>
<German>Linkes Bein</German> <German>Linkes Bein</German>
<Spanish>Pierna izquierda</Spanish> <Spanish>Pierna izquierda</Spanish>
<Czech>Levá noha</Czech>
<Polish>Lewa noga</Polish>
<French>Jambe Gauche</French>
</Key> </Key>
<Key ID="STR_ACE_Interaction_LegRight"> <Key ID="STR_ACE_Interaction_LegRight">
<English>Right Leg</English> <English>Right Leg</English>
<German>Rechtes Bein</German> <German>Rechtes Bein</German>
<Spanish>Pierna derecha</Spanish> <Spanish>Pierna derecha</Spanish>
<Czech>Pravá hona</Czech>
<Polish>Prawa noga</Polish>
<French>Jambe Droite</French>
</Key> </Key>
<Key ID="STR_ACE_Interaction_Weapon"> <Key ID="STR_ACE_Interaction_Weapon">
<English>Weapon</English> <English>Weapon</English>
<German>Waffe</German> <German>Waffe</German>
<Spanish>Arma</Spanish> <Spanish>Arma</Spanish>
<Czech>Zbraň</Czech>
<Polish>Broń</Polish>
<French>Arme</French>
</Key> </Key>
<Key ID="STR_ACE_Interaction_InteractionMenu"> <Key ID="STR_ACE_Interaction_InteractionMenu">
<English>Interaction Menu</English> <English>Interaction Menu</English>
@ -57,7 +81,7 @@
<English>Interaction Menu (Self)</English> <English>Interaction Menu (Self)</English>
<German>Interaktionsmenü (Selbst)</German> <German>Interaktionsmenü (Selbst)</German>
<Spanish>Menú de interacción (Propia)</Spanish> <Spanish>Menú de interacción (Propia)</Spanish>
<Polish>Menu interakcji (na siebie)</Polish> <Polish>Menu interakcji (własne)</Polish>
<Czech>Menu interakce (vlastní)</Czech> <Czech>Menu interakce (vlastní)</Czech>
<French>Menu d'interaction (Perso)</French> <French>Menu d'interaction (Perso)</French>
<Russian>Меню взаимодействия (с собой)</Russian> <Russian>Меню взаимодействия (с собой)</Russian>
@ -142,7 +166,7 @@
<German>Gruppe verlassen</German> <German>Gruppe verlassen</German>
<Spanish>Dejar grupo</Spanish> <Spanish>Dejar grupo</Spanish>
<Polish>Opuść grupę</Polish> <Polish>Opuść grupę</Polish>
<Czech>Odejít ze skupiny</Czech> <Czech>Opustit skupinu</Czech>
<French>Quitter Groupe</French> <French>Quitter Groupe</French>
<Russian>Выйти из группы</Russian> <Russian>Выйти из группы</Russian>
<Hungarian>Csoport elhagyása</Hungarian> <Hungarian>Csoport elhagyása</Hungarian>
@ -202,7 +226,7 @@
<German>Gesten</German> <German>Gesten</German>
<Spanish>Gestos</Spanish> <Spanish>Gestos</Spanish>
<Polish>Gesty</Polish> <Polish>Gesty</Polish>
<Czech>Gesta</Czech> <Czech>Posunky</Czech>
<French>Signaux</French> <French>Signaux</French>
<Russian>Жесты</Russian> <Russian>Жесты</Russian>
<Hungarian>Kézjelek</Hungarian> <Hungarian>Kézjelek</Hungarian>
@ -384,7 +408,7 @@
<French>On te tape sur l'épaule</French> <French>On te tape sur l'épaule</French>
<Polish>Zostałeś klepnięty po ramieniu</Polish> <Polish>Zostałeś klepnięty po ramieniu</Polish>
<Hungarian>Vállonveregettek</Hungarian> <Hungarian>Vállonveregettek</Hungarian>
<Czech>Někdo tě poklepal na rameno</Czech> <Czech>Někdo tě poklepal na PRAVÉ rameno</Czech>
<Russian>Вас похлопали по плечу</Russian> <Russian>Вас похлопали по плечу</Russian>
<Portuguese>Você foi tocado no ombro</Portuguese> <Portuguese>Você foi tocado no ombro</Portuguese>
<Italian>Ti è stato dato un colpetto sulla spalla</Italian> <Italian>Ti è stato dato un colpetto sulla spalla</Italian>
@ -396,7 +420,7 @@
<French>On te tape sur l'épaule.</French> <French>On te tape sur l'épaule.</French>
<Polish>Zostałeś klepnięty po ramieniu</Polish> <Polish>Zostałeś klepnięty po ramieniu</Polish>
<Hungarian>Vállonveregettek</Hungarian> <Hungarian>Vállonveregettek</Hungarian>
<Czech>Někdo tě poklepal na rameno.</Czech> <Czech>Někdo tě poklepal na LEVÉ rameno</Czech>
<Russian>Вас похлопали по плечу</Russian> <Russian>Вас похлопали по плечу</Russian>
<Portuguese>Você foi tocado no ombro.</Portuguese> <Portuguese>Você foi tocado no ombro.</Portuguese>
<Italian>Ti è stato dato un colpetto sulla spalla</Italian> <Italian>Ti è stato dato un colpetto sulla spalla</Italian>
@ -515,7 +539,7 @@
<Spanish>Unirse al&lt;br/&gt;equipo rojo</Spanish> <Spanish>Unirse al&lt;br/&gt;equipo rojo</Spanish>
<French>Rejoindre&lt;br/&gt;Rouge</French> <French>Rejoindre&lt;br/&gt;Rouge</French>
<Polish>Dołącz do drużyny&lt;br/&gt;czerwonej</Polish> <Polish>Dołącz do drużyny&lt;br/&gt;czerwonej</Polish>
<Czech>Připojit do&lt;br/&gt;Červeného Týmu</Czech> <Czech>Připojit do&lt;br/&gt;Červeného týmu</Czech>
<Russian>Присоединиться&lt;br/&gt;к красной группе</Russian> <Russian>Присоединиться&lt;br/&gt;к красной группе</Russian>
<Portuguese>Unir-se à&lt;br/&gt;Equipe Vermelha</Portuguese> <Portuguese>Unir-se à&lt;br/&gt;Equipe Vermelha</Portuguese>
<Italian>Entra nella&lt;br/&gt;Squadra Rossa</Italian> <Italian>Entra nella&lt;br/&gt;Squadra Rossa</Italian>
@ -527,7 +551,7 @@
<Spanish>Unirse al&lt;br/&gt;equipo verde</Spanish> <Spanish>Unirse al&lt;br/&gt;equipo verde</Spanish>
<French>Rejoindre&lt;br/&gt;Verte</French> <French>Rejoindre&lt;br/&gt;Verte</French>
<Polish>Dołącz do&lt;br/&gt;drużyny zielonej</Polish> <Polish>Dołącz do&lt;br/&gt;drużyny zielonej</Polish>
<Czech>Připojit do&lt;br/&gt;Zeleného Týmu</Czech> <Czech>Připojit do&lt;br/&gt;Zeleného týmu</Czech>
<Russian>Присоединиться&lt;br/&gt;к зеленой группе</Russian> <Russian>Присоединиться&lt;br/&gt;к зеленой группе</Russian>
<Portuguese>Unir-se à&lt;br/&gt;Equipe Verde</Portuguese> <Portuguese>Unir-se à&lt;br/&gt;Equipe Verde</Portuguese>
<Italian>Entra nella&lt;br/&gt;Squadra Verde</Italian> <Italian>Entra nella&lt;br/&gt;Squadra Verde</Italian>
@ -539,7 +563,7 @@
<Spanish>Unirse al&lt;br/&gt;equipo azul</Spanish> <Spanish>Unirse al&lt;br/&gt;equipo azul</Spanish>
<French>Rejoindre&lt;br/&gt;Bleue</French> <French>Rejoindre&lt;br/&gt;Bleue</French>
<Polish>Dołącz do&lt;br/&gt;drużyny niebieskiej</Polish> <Polish>Dołącz do&lt;br/&gt;drużyny niebieskiej</Polish>
<Czech>Připojit do&lt;br/&gt;Modrého Týmu</Czech> <Czech>Připojit do&lt;br/&gt;Modrého týmu</Czech>
<Russian>Присоединиться&lt;br/&gt;к синей группе</Russian> <Russian>Присоединиться&lt;br/&gt;к синей группе</Russian>
<Portuguese>Unir-se à&lt;br/&gt;Equipe Azul</Portuguese> <Portuguese>Unir-se à&lt;br/&gt;Equipe Azul</Portuguese>
<Italian>Entra nella&lt;br/&gt;Squadra Blu</Italian> <Italian>Entra nella&lt;br/&gt;Squadra Blu</Italian>
@ -551,7 +575,7 @@
<Spanish>Unirse al&lt;br/&gt;equipo amarillo</Spanish> <Spanish>Unirse al&lt;br/&gt;equipo amarillo</Spanish>
<French>Rejoindre&lt;br/&gt;Jaune</French> <French>Rejoindre&lt;br/&gt;Jaune</French>
<Polish>Dołącz do&lt;br/&gt;drużyny żółtej</Polish> <Polish>Dołącz do&lt;br/&gt;drużyny żółtej</Polish>
<Czech>Připojit do&lt;br/&gt;Žlutého Týmu</Czech> <Czech>Připojit do&lt;br/&gt;Žlutého týmu</Czech>
<Russian>Присоединиться&lt;br/&gt;к желтой группе</Russian> <Russian>Присоединиться&lt;br/&gt;к желтой группе</Russian>
<Portuguese>Unir-se à&lt;br/&gt;Equipe Amarela</Portuguese> <Portuguese>Unir-se à&lt;br/&gt;Equipe Amarela</Portuguese>
<Italian>Entra nella&lt;br/&gt;Squadra Gialla</Italian> <Italian>Entra nella&lt;br/&gt;Squadra Gialla</Italian>
@ -563,7 +587,7 @@
<Spanish>Te has unido al equipo %1</Spanish> <Spanish>Te has unido al equipo %1</Spanish>
<French>Tu as rejoint l'équipe %1</French> <French>Tu as rejoint l'équipe %1</French>
<Polish>Dołączyłeś do drużyny %1</Polish> <Polish>Dołączyłeś do drużyny %1</Polish>
<Czech>Připojil ses do Týmu %1</Czech> <Czech>Připojil ses do %1 týmu</Czech>
<Russian>Вы присоединились к группе %1</Russian> <Russian>Вы присоединились к группе %1</Russian>
<Portuguese>Você uniu-se à Equipe %1</Portuguese> <Portuguese>Você uniu-se à Equipe %1</Portuguese>
<Italian>Sei entrato nella Squadra %1</Italian> <Italian>Sei entrato nella Squadra %1</Italian>
@ -662,6 +686,7 @@
</Key> </Key>
<Key ID="STR_ACE_Interaction_Interact"> <Key ID="STR_ACE_Interaction_Interact">
<English>Interact</English> <English>Interact</English>
<French>Interagir</French>
<German>Interagiere</German> <German>Interagiere</German>
<Czech>Interakce</Czech> <Czech>Interakce</Czech>
<Russian>Взаимодействовать</Russian> <Russian>Взаимодействовать</Russian>
@ -673,6 +698,9 @@
<German>Fahrzeuginsassen</German> <German>Fahrzeuginsassen</German>
<Spanish>Pasajeros</Spanish> <Spanish>Pasajeros</Spanish>
<Russian>Пассажиры</Russian> <Russian>Пассажиры</Russian>
<Czech>Pasažéři</Czech>
<Polish>Pasażerowie</Polish>
<French>Passagers</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -6,12 +6,18 @@
<German>Erhöhe die angezeigte Inventargröße</German> <German>Erhöhe die angezeigte Inventargröße</German>
<Spanish>Hacer la pantalla de inventario mas grande</Spanish> <Spanish>Hacer la pantalla de inventario mas grande</Spanish>
<Russian>Сделать окно инвентаря больше</Russian> <Russian>Сделать окно инвентаря больше</Russian>
<Czech>Zvětšit zobrazení inventáře</Czech>
<Polish>Powiększ UI ekwipunku</Polish>
<French>Augmente la taille d'affichage de l'inventaire</French>
</Key> </Key>
<Key ID="STR_ACE_Inventory_SettingDescription"> <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> <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> <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> <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> <Russian>Обычно, окно инвентаря зависит от размеров пользовательского интерфейса. Эта настройка позволяет увеличить размер окна инвентаря в пользовательском интерфейсе, не увеличивая размера шрифтов, так что отображется большее количество строк.</Russian>
<Czech>Normálně se velikost invetáře škáluje s velikostí UI. Toto nastavení dovoluje škálování velikost inventáře ale nežvětšuje velikost fontu. To dovoluje zobrazení více řad v inventáři.</Czech>
<Polish>Ekwipunek skalowany jest poprzez rozmiar UI. Ta opcja pozwala powiększyć rozmiar UI ekwipunku, lecz nie zwiększa rozmiaru fontu pozwalając na wyświetlanie większej ilości wierszy.</Polish>
<French>Normalement, l'inventaire est automatiquement mesuré par la taille de l'interface de l'utilisateur. Cette option vous permet d'augmenter la taille d'affichage de l'inventaire, cependant, cette option n'augmente pas la police d'écriture et le nombre de place.</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -6,6 +6,7 @@ class CfgWeapons {
class launch_Titan_base : Launcher_Base_F { class launch_Titan_base : Launcher_Base_F {
weaponInfoType = "ACE_RscOptics_javelin"; weaponInfoType = "ACE_RscOptics_javelin";
modelOptics = PATHTOF(data\reticle_titan.p3d);
lockingTargetSound[] = {"",0,1}; lockingTargetSound[] = {"",0,1};
lockedTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1};

View File

@ -14,7 +14,7 @@ class RscInGameUI {
idd = 300; idd = 300;
controls[] = { "ACE_javelin_elements_group", "CA_Distance", "ACE_Targeting" }; //, "ACE_TargetingConstrains", "ACE_TargetingGate", "ACE_TargetingLines"}; controls[] = { "ACE_javelin_elements_group", "CA_Distance", "ACE_Targeting" }; //, "ACE_TargetingConstrains", "ACE_TargetingGate", "ACE_TargetingLines"};
onLoad = QUOTE(_this call FUNC(onOpticLoad)); onLoad = QUOTE(_this call FUNC(onOpticLoad));
onUnload = "uiNameSpace setVariable ['ACE_RscOptics_javelin',nil];"; onUnload = "uiNameSpace setVariable ['ACE_RscOptics_javelin',nil];uiNameSpace setVariable ['ACE_RscOptics_javelin_PFH',nil];";
class CA_Distance: RscOpticsValue { class CA_Distance: RscOpticsValue {
idc = 151; idc = 151;
@ -45,13 +45,6 @@ class RscInGameUI {
height = 0.001; height = 0.001;
}; };
class Controls { class Controls {
class JavelinLocking : RscMapControl {
onDraw = QUOTE(_this call FUNC(onOpticDraw));
idc = -1;
w = 0;
h = 0;
};
class ACE_javelin_Day_mode_off: RscPicture { class ACE_javelin_Day_mode_off: RscPicture {
idc = 1001; idc = 1001;
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.03/4)*3*SafezoneH - SafezoneX"; x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.03/4)*3*SafezoneH - SafezoneX";

View File

@ -1,3 +1,5 @@
#include "script_component.hpp" #include "script_component.hpp"
if (!hasInterface) exitWith {};
#include "initKeybinds.sqf" #include "initKeybinds.sqf"

Binary file not shown.

View File

@ -1,6 +1,6 @@
//#define DEBUG_MODE_FULL //#define DEBUG_MODE_FULL
#include "script_component.hpp" #include "script_component.hpp"
//TRACE_1("enter", _this); TRACE_1("enter", _this);
#define __TRACKINTERVAL 0 // how frequent the check should be. #define __TRACKINTERVAL 0 // how frequent the check should be.
#define __LOCKONTIME 3.0 // Lock on won't occur sooner #define __LOCKONTIME 3.0 // Lock on won't occur sooner
@ -10,7 +10,19 @@
#define __OffsetX ((ctrlPosition __JavelinIGUITargetingLineV) select 0) - 0.5 #define __OffsetX ((ctrlPosition __JavelinIGUITargetingLineV) select 0) - 0.5
#define __OffsetY ((ctrlPosition __JavelinIGUITargetingLineH) select 1) - 0.5 #define __OffsetY ((ctrlPosition __JavelinIGUITargetingLineH) select 1) - 0.5
private["_args", "_lastTick", "_runTime", "_soundTime", "_lockTime", "_newTarget", "_currentTarget", "_range", "_pos", "_targetArray"]; private["_isJavelin", "_args", "_lastTick", "_runTime", "_soundTime", "_lockTime", "_newTarget", "_currentTarget", "_range", "_pos", "_targetArray"];
if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom))
|| { (vehicle ACE_player) != ACE_player }
) exitWith {
__JavelinIGUITargeting ctrlShow false;
__JavelinIGUITargetingGate ctrlShow false;
__JavelinIGUITargetingLines ctrlShow false;
__JavelinIGUITargetingConstraints ctrlShow false;
[(_this select 1)] call cba_fnc_removePerFrameHandler;
uiNamespace setVariable["ACE_RscOptics_javelin_PFH", nil];
};
// Reset arguments if we havnt rendered in over a second // Reset arguments if we havnt rendered in over a second
_args = uiNamespace getVariable[QGVAR(arguments), [] ]; _args = uiNamespace getVariable[QGVAR(arguments), [] ];
@ -21,6 +33,8 @@ if( (count _args) > 0) then {
}; };
}; };
TRACE_1("Running", "Running");
// Pull the arguments // Pull the arguments
_currentTarget = _args select 1; _currentTarget = _args select 1;
_runTime = _args select 2; _runTime = _args select 2;
@ -38,9 +52,6 @@ if ((velocity ACE_player) distance [0,0,0] > 0.5 && {cameraView == "GUNNER"} &&
// Refresh the firemode // Refresh the firemode
[] call FUNC(showFireMode); [] call FUNC(showFireMode);
// Only start locking on holding tab
if(!GVAR(isLockKeyDown)) exitWith { false };
_range = parseNumber (ctrlText __JavelinIGUIRangefinder); _range = parseNumber (ctrlText __JavelinIGUIRangefinder);
if (_range > 50 && {_range < 2500}) then { if (_range > 50 && {_range < 2500}) then {
_pos = positionCameraToWorld [0,0,_range]; _pos = positionCameraToWorld [0,0,_range];
@ -73,8 +84,10 @@ if (isNull _newTarget) then {
__JavelinIGUISeek ctrlSetTextColor __ColorGray; __JavelinIGUISeek ctrlSetTextColor __ColorGray;
__JavelinIGUINFOV ctrlSetTextColor __ColorGreen; __JavelinIGUINFOV ctrlSetTextColor __ColorGreen;
__JavelinIGUITargeting ctrlShow false;
__JavelinIGUITargetingGate ctrlShow false; __JavelinIGUITargetingGate ctrlShow false;
__JavelinIGUITargetingLines ctrlShow false; __JavelinIGUITargetingLines ctrlShow false;
__JavelinIGUITargetingConstraints ctrlShow false;
ACE_player setVariable ["ace_missileguidance_target",nil, false]; ACE_player setVariable ["ace_missileguidance_target",nil, false];
@ -82,8 +95,9 @@ if (isNull _newTarget) then {
//if (ACE_player ammo "Javelin" > 0 || {ACE_player ammo "ACE_Javelin_Direct" > 0}) then {ACE_player setWeaponReloadingTime //[player, "Javelin", 0.2];}; //if (ACE_player ammo "Javelin" > 0 || {ACE_player ammo "ACE_Javelin_Direct" > 0}) then {ACE_player setWeaponReloadingTime //[player, "Javelin", 0.2];};
} else { } else {
if (_newTarget distance ACE_player < 2500 if (_newTarget distance ACE_player < 2500
// && {(call CBA_fnc_getFoV) select 1 > 7} && {(call CBA_fnc_getFoV) select 1 > 9}
// && { (currentVisionMode ACE_player == 2)} && { (currentVisionMode ACE_player == 2)}
&& GVAR(isLockKeyDown)
) then { ) then {
// Lock on after 3 seconds // Lock on after 3 seconds
if(_currentTarget != _newTarget) then { if(_currentTarget != _newTarget) then {
@ -98,8 +112,9 @@ if (isNull _newTarget) then {
__JavelinIGUISeek ctrlSetTextColor __ColorGreen; __JavelinIGUISeek ctrlSetTextColor __ColorGreen;
__JavelinIGUINFOV ctrlSetTextColor __ColorNull; __JavelinIGUINFOV ctrlSetTextColor __ColorNull;
__JavelinIGUITargeting ctrlShow true; __JavelinIGUITargeting ctrlShow true;
__JavelinIGUITargetingConstrains ctrlShow true; __JavelinIGUITargetingConstrains ctrlShow false;
__JavelinIGUITargetingGate ctrlShow true; __JavelinIGUITargetingGate ctrlShow true;
__JavelinIGUITargetingLines ctrlShow true; __JavelinIGUITargetingLines ctrlShow true;
@ -187,10 +202,11 @@ if (isNull _newTarget) then {
} else { } else {
// Something is wrong with our seek // Something is wrong with our seek
_currentTarget = objNull; _currentTarget = objNull;
ACE_player setVariable["ace_missileguidance_target", nil, false];
__JavelinIGUISeek ctrlSetTextColor __ColorGray; __JavelinIGUISeek ctrlSetTextColor __ColorGray;
__JavelinIGUINFOV ctrlSetTextColor __ColorGray; __JavelinIGUINFOV ctrlSetTextColor __ColorGray;
__JavelinIGUITargetingConstrains ctrlShow false; __JavelinIGUITargeting ctrlShow false;
__JavelinIGUITargetingGate ctrlShow false; __JavelinIGUITargetingGate ctrlShow false;
__JavelinIGUITargetingLines ctrlShow false; __JavelinIGUITargetingLines ctrlShow false;

View File

@ -25,3 +25,9 @@ uiNameSpace setVariable [QGVAR(arguments),
0 // Sound timer 0 // Sound timer
] ]
]; ];
_pfh_handle = uiNamespace getVariable ["ACE_RscOptics_javelin_PFH", nil];
if(isNil "_pfh_handle") then {
_pfh_handle = [FUNC(onOpticDraw), 0, []] call CBA_fnc_addPerFrameHandler;
uiNamespace setVariable["ACE_RscOptics_javelin_PFH", _pfh_handle];
};

View File

@ -27,4 +27,4 @@
[ACE_player] call FUNC(cycleFireMode); [ACE_player] call FUNC(cycleFireMode);
false false
}, },
[15, [false, true, false]], false] call cba_fnc_addKeybind; //Shift+Tab Key [15, [false, true, false]], false] call cba_fnc_addKeybind; //Ctrl+Tab Key

View File

@ -1,15 +1,21 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="WEP_JAVELIN"> <Package name="WEP_JAVELIN">
<Key ID="STR_ACE_WEP_JAVELIN_LockTarget"> <Key ID="STR_ACE_JAVELIN_LockTarget">
<English>Lock Target (Hold)</English> <English>Lock Target (Hold)</English>
<German>Ziel aufschalten</German> <German>Ziel aufschalten</German>
<Russian>Захватить цель (удерживать)</Russian> <Russian>Захватить цель (удерживать)</Russian>
<Czech>Zamknout cíl(držet)</Czech>
<Polish>Namierz cel (przytrzymaj)</Polish>
<French>Vérouiller la Cible (Maintenir)</French>
</Key> </Key>
<Key ID="STR_ACE_WEP_JAVELIN_CycleFireMode"> <Key ID="STR_ACE_JAVELIN_CycleFireMode">
<English>Cycle Fire Mode</English> <English>Cycle Fire Mode</English>
<German>Wechsle Feuermodus</German> <German>Wechsle Feuermodus</German>
<Russian>Переключение режимов огня</Russian> <Russian>Переключение режимов огня</Russian>
<Czech>Cyklování režimů palby</Czech>
<Polish>Przełącz tryb ognia</Polish>
<French>Mode de Tir (Cycle)</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 -->
<Project name="ACE"> <Project name="ACE">
<Package name="Wind"> <Package name="Wind">
<Key ID="STR_ACE_Wind_ApproximateTemp"> <Key ID="STR_ACE_Wind_ApproximateTemp">
@ -30,7 +29,7 @@
<Spanish>Anemómetro balístico</Spanish> <Spanish>Anemómetro balístico</Spanish>
<French>Applied Ballistics Meter</French> <French>Applied Ballistics Meter</French>
<Polish>Urządzenie do monitorowania pogody</Polish> <Polish>Urządzenie do monitorowania pogody</Polish>
<Czech>Zařízení pro měření vítru</Czech> <Czech>Zařízení pro měření větru</Czech>
<Italian>Monitoraggio Balistico Attivo</Italian> <Italian>Monitoraggio Balistico Attivo</Italian>
<Hungarian>Applied Ballistics Meter</Hungarian> <Hungarian>Applied Ballistics Meter</Hungarian>
<Portuguese>Medidor Balístico Ativo</Portuguese> <Portuguese>Medidor Balístico Ativo</Portuguese>

View File

@ -2,8 +2,32 @@ class CfgVehicles {
class All; class All;
class LaserTarget: All { class LaserTarget: All {
// @TODO: Changing the model and simulation hides it, but THEN IT DOESNT SPAWN WTF!?
model = "\A3\Weapons_F\empty.p3d";
simulation = "nvmarker";
nvTarget = 1;
//simulation = "laserTarget";
//threat[] = {0,0,0};
class EventHandlers { class EventHandlers {
init = QUOTE(_this call FUNC(laser_init)); init = QUOTE(_this call FUNC(laser_init));
}; };
diffuse[] = {0,0,0};
ambient[] = {0,0,0};
brightness = 0;
name = "pozicni blik";
drawLight = 0;
drawLightSize = 0;
drawLightCenterSize = 0;
activeLight = 0;
blinking = 0;
dayLight = 0;
onlyInNvg = 0;
useFlare = 0;
};
// Visual laserTarget override
class ACE_LaserTarget_Visual : LaserTarget {
//model = "\A3\Weapons_f\laserTgt.p3d";
}; };
}; };

View File

@ -0,0 +1,8 @@
class CfgWeapons {
class Binocular;
class Laserdesignator : Binocular {
visionMode[] = {"Normal","NVG"};
};
};

View File

@ -0,0 +1 @@
// TODO: RscOptics_LaserDesignator for laser code designation

View File

@ -1,3 +1,4 @@
#include "script_component.hpp" #include "script_component.hpp"
NO_DEDICATED;
["laser_laserOn", {_this call DFUNC(handleLaserOn)}] call EFUNC(common,addEventHandler);
["laser_laserOff", {_this call DFUNC(handleLaserOff)}] call EFUNC(common,addEventHandler);

View File

@ -6,15 +6,28 @@ PREP(shootRay);
PREP(shootCone); PREP(shootCone);
PREP(checkLos); PREP(checkLos);
PREP(findLaserDesignator);
PREP(findStrongestRay); PREP(findStrongestRay);
PREP(translateToModelSpace); PREP(translateToModelSpace);
PREP(translateToWeaponSpace); PREP(translateToWeaponSpace);
PREP(laser_init); PREP(seekerFindLaserSpot);
PREP(laserOn);
PREP(laserOff);
PREP(handleLaserOn);
PREP(handleLaserOff);
PREP(drawVisibleLaserTargets);
PREP(laser_init);
PREP(vanillaLaserSeekerHandler);
PREP(laserTargetPFH); PREP(laserTargetPFH);
ACE_LASERS = []; GVAR(VanillaLasers) = [];
// Laser default variables
ACE_DEFAULT_LASER_CODE = 1001; ACE_DEFAULT_LASER_CODE = 1001;
ACE_DEFAULT_LASER_WAVELENGTH = 1550;
ACE_DEFAULT_LASER_BEAMSPREAD = 1;
GVAR(laserEmitters) = HASH_CREATE;

View File

@ -12,3 +12,4 @@ class CfgPatches {
#include "CfgEventhandlers.hpp" #include "CfgEventhandlers.hpp"
#include "CfgVehicles.hpp" #include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"

View File

@ -0,0 +1 @@
// @TODO: This is to draw the actual LaserTarget positions to utilize for laser shooting.

View File

@ -1,74 +0,0 @@
//#define DEBUG_MODE_FULL
#include "script_component.hpp"
private ["_seeker", "_headingPitch", "_found", "_vectorTo", "_polarTo", "_dir", "_vertOk", "_horzOk", "_fov",
"_closestDistance", "_pos1", "_pos2", "_disCheck", "_currentTarget", "_potentialTargets", "_offset", "_vector"];
_seeker = _this select 0;
_laserCode = _this select 1;
_fov = if (count _this > 2) then {_this select 2} else {75};
_vector = if (count _this > 3) then {_this select 3} else {vectorDir _seeker};
_offset = if (count _this > 4) then {_this select 4} else {[0,0,0]};
_headingPitch = _vector call CBA_fnc_vect2polar;
_currentTarget = nil;
_found = false;
_getPosASL = {visiblePositionASL (_this select 0)};
LOG("Searching lasers");
if(!(isNil "ACE_LASERS")) then {
_potentialTargets = [];
TRACE_1("", ACE_LASERS);
{
if(!(isNull _x)) then {
_sensorPos = ATLtoASL(_seeker modelToWorldVisual _offset);
_vectorTo = [_sensorPos, ([_x] call _getPosASL)] call BIS_fnc_vectorFromXToY;
_polarTo = _vectorTo call CBA_fnc_vect2polar;
_dir = _polarTo select 1;
_dir = _dir - (_headingPitch select 1);
TRACE_4("Calc", _sensorPos, _vectorTo, _polarTo, _dir);
if (_dir < 0) then {_dir = _dir + 360};
if (_dir > 360) then {_dir = _dir - 360};
_vertOk = false;
_horzOk = false;
if(_dir < _fov || {_dir > (360-_fov)}) then {
_horzOk = true;
};
if(abs((abs(_polarTo select 2))-(abs(_headingPitch select 2))) < _fov) then {
_vertOk = true;
};
TRACE_2("Results", _vertOk, _horzOk);
if(_vertOk && {_horzOk}) then {
// Does the laser currently have our current code, if we have one?
_targetCode = _x getVariable ["ACE_LASER_CODE", ACE_DEFAULT_LASER_CODE];
TRACE_1("Target in sight, checking code", _targetCode, _laserCode);
if(_targetCode == _laserCode) then {
_potentialTargets set[(count _potentialTargets), _x];
};
};
};
} forEach ACE_LASERS;
TRACE_1("", _potentialTargets);
_closestDistance = 100000;
{
_pos1 = (getPosASL _seeker);
_pos2 = ([_x] call _getPosASL);
_disCheck = _pos1 distance _pos2;
// shouldn't this bail out when a valid target is found instead of iterating over all potential targets ?
if(_disCheck < _closestDistance && {[_pos1, _pos2, _x, _seeker] call FUNC(checkLos)}) then {
_found = true;
_currentTarget = _x;
_closestDistance = _disCheck;
};
} forEach _potentialTargets;
};
[_found, _currentTarget]

View File

@ -0,0 +1,8 @@
//fnc_handleLaserOff.sqf
#include "script_component.hpp"
private ["_uuid"];
_uuid = _this select 0;
if(HASH_HASKEY(GVAR(laserEmitters), _uuid)) then {
HASH_REM(GVAR(laserEmitters), _uuid);
};

View File

@ -0,0 +1,7 @@
//fnc_handleLaserOn.sqf
#include "script_component.hpp"
private ["_uuid", "_args"];
_uuid = _this select 0;
_args = _this select 1;
HASH_SET(GVAR(laserEmitters), _uuid, _args);

View File

@ -0,0 +1,16 @@
/*
* Author: Nou
* Turn a laser designator off.
*
* Arguments:
* 0: UUID (from laserOn) <string>
*
* Return value:
* None
*/
#include "script_component.hpp"
private ["_uuid"];
_uuid = _this select 0;
["laser_laserOff", [_uuid]] call EFUNC(common,globalEvent);

View File

@ -0,0 +1,23 @@
/*
* Author: Nou
* Turn a laser designator on.
*
* Arguments:
* 0: Emitter <object>
* 1: Owner <object>
* 2: Method, can be code, which emitter and owner are passed to, a string function name, an array with a position memory point and weapon name, or an array with a position memory point, a vector begining memory point, and vector ending memory point.
* 3: Wavelength (1550nm is common eye safe) <number>
* 4: Laser code <number>
* 5: Beam divergence (in mils off beam center).
*
* Return value:
* String, UUID for sending to laserOff function.
*/
#include "script_component.hpp"
private ["_uuid", "_args"];
_uuid = format["%1%2%3", floor diag_tickTime, floor random 1000, floor random 10000];
_args = [_uuid, _this];
["laser_laserOn", _args] call EFUNC(common,globalEvent);
_uuid;

View File

@ -1,20 +1,25 @@
//#define DEBUG_MODE_FULL
#include "script_component.hpp" #include "script_component.hpp"
TRACE_1("enter", _this);
private["_args", "_laserTarget"]; private["_args", "_laserTarget"];
//TRACE_1("enter", _this); //TRACE_1("enter", _this);
_args = _this select 0; _args = _this select 0;
_laserTarget = _args select 0; _laserTarget = _args select 0;
_shooter = _args select 1;
_uuid = _args select 2;
if(isNull _laserTarget || !alive player) exitWith { if(isNull _laserTarget || !alive _shooter) exitWith {
[(_this select 1)] call cba_fnc_removePerFrameHandler; [(_this select 1)] call cba_fnc_removePerFrameHandler;
REM(ACE_LASERS, _laserTarget); REM(GVAR(VanillaLasers), _laserTarget);
};
_end = diag_tickTime; // Remove laseron
[_uuid] call FUNC(laserOff);
};
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
// Iconize the location of the actual laserTarget // Iconize the location of the actual laserTarget
_pos = [_laserTarget] call FUNC(getPosASL); _pos = getPosASL _laserTarget;
drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa", [1,0,0,1], (ASLtoATL _pos), 0.75, 0.75, 0, "", 0.5, 0.025, "TahomaB"]; drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa", [1,0,0,1], (ASLtoATL _pos), 0.75, 0.75, 0, "", 0.5, 0.025, "TahomaB"];
{ {

View File

@ -1,25 +1,32 @@
//#define DEBUG_MODE_FULL
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_1(_laserTarget);
TRACE_1("enter", _this); TRACE_1("enter", _this);
PARAMS_1(_laserTarget);
// Add the target to the global targets array // Add the target to the global targets array
// Everyone tracks them // Everyone tracks them
// Add the laser localized to the laser array, and give it the default localized code // Add the laser localized to the laser array, and give it the default localized code
PUSH(ACE_LASERS, _laserTarget); PUSH(GVAR(VanillaLasers), _laserTarget);
// Check the vehicle, otherwise use the default // Check the vehicle, otherwise use the default
_laserTarget setVariable ["ACE_LASER_CODE", ACE_DEFAULT_LASER_CODE, false]; _laserTarget setVariable [QGVAR(code), ACE_DEFAULT_LASER_CODE, false];
_laserTarget setVariable [QGVAR(beamSpread), ACE_DEFAULT_LASER_BEAMSPREAD, false];
_laserTarget setVariable [QGVAR(waveLength), ACE_DEFAULT_LASER_WAVELENGTH, false];
// Clean the lasers of any null objects while we are here // Clean the lasers of any null objects while we are here
REM(ACE_LASERS, objNull); REM(GVAR(VanillaLasers), objNull);
if(!(local _laserTarget)) exitWith { }; if(!(local _laserTarget)) exitWith { };
// The target is local, so its on this client // The target is local, so its on this client
if(!isDedicated) then { if(!isDedicated) then {
_laserTarget setVariable ["ACE_LASERTARGET_SHOOTER", ACE_player, true]; // @TODO: Get ownership variables and set them on the vehicle
[FUNC(laserTargetPFH), 0, [_laserTarget, ACE_player]] call cba_fnc_addPerFrameHandler; _uuid = [(vehicle ACE_player), ACE_player, QFUNC(vanillaLaserSeekerHandler), ACE_DEFAULT_LASER_WAVELENGTH, ACE_DEFAULT_LASER_CODE, ACE_DEFAULT_LASER_BEAMSPREAD] call FUNC(laserOn);
_laserTarget setVariable [QGVAR(uuid), _uuid, false];
[FUNC(laserTargetPFH), 0, [_laserTarget, ACE_player, _uuid]] call cba_fnc_addPerFrameHandler;
} else { } else {
// server side ownership of laser // server side ownership of laser
//_laserTarget setVariable ["ACE_LASERTARGET_SHOOTER", nil, false]; _laserTarget setVariable [QGVAR(owner), nil, true];
}; };

View File

@ -32,7 +32,5 @@ if (_d != 0) then {
}; };
/* Inverse of step 1 */ /* Inverse of step 1 */
_q1 set[0, (_q2 select 0) + (_p1 select 0)]; _q1 = _q2 vectorAdd _p1;
_q1 set[1, (_q2 select 1) + (_p1 select 1)];
_q1 set[2, (_q2 select 2) + (_p1 select 2)];
_q1; _q1;

View File

@ -5,19 +5,12 @@ _p = _this select 0;
_p1 = _this select 1; _p1 = _this select 1;
_p2 = _this select 2; _p2 = _this select 2;
_q1 = [];
_q2 = []; _q2 = [];
_u = [];
/* Step 1 */ /* Step 1 */
_q1 set[0, (_p select 0) - (_p1 select 0)]; _q1 = _p vectorDiff _p1;
_q1 set[1, (_p select 1) - (_p1 select 1)]; _u = _p2 vectorDiff _p1;
_q1 set[2, (_p select 2) - (_p1 select 2)]; _u = vectorNormalized _u;
_u set[0, (_p2 select 0) - (_p1 select 0)];
_u set[1, (_p2 select 1) - (_p1 select 1)];
_u set[2, (_p2 select 2) - (_p1 select 2)];
_u = _u call BIS_fnc_unitVector;
_d = sqrt((_u select 1)*(_u select 1) + (_u select 2)*(_u select 2)); _d = sqrt((_u select 1)*(_u select 1) + (_u select 2)*(_u select 2));
/* Step 2 */ /* Step 2 */

View File

@ -0,0 +1,143 @@
/*
* Author: Nou
* Turn a laser designator on.
*
* Arguments:
* 0: Position of seeker (ASL) <position>
* 1: Seeker wavelength sensitivity range, [1550,1550] is common eye safe. <array>
* 2: Seeker laser code. <number>
*
* Return value:
* Array, [Strongest compatible laser spot ASL pos, owner object] Nil array values if nothing found.
*/
#include "script_component.hpp"
private ["_pos", "_seekerWavelengths", "_seekerCode", "_spots", "_buckets", "_excludes", "_bucketIndex", "_finalPos", "_owner", "_obj", "_x", "_method",
"_emitterWavelength", "_laserCode", "_divergence", "_laser", "_laserPos", "_laserDir", "_res", "_bucketPos", "_bucketList", "_c", "_forEachIndex", "_index",
"_testPos", "_finalBuckets", "_largest", "_largestIndex", "_finalBucket", "_owners", "_avgX", "_avgY", "_avgZ", "_count", "_maxOwner", "_maxOwnerIndex", "_finalOwner"];
_pos = _this select 0;
_seekerWavelengths = _this select 1;
_seekerCode = _this select 2;
_spots = [];
_buckets = [];
_excludes = [];
_bucketIndex = 0;
_finalPos = nil;
_finalOwner = nil;
{
_obj = _x select 0;
_owner = _x select 1;
_method = _x select 2;
_emitterWavelength = _x select 3;
_laserCode = _x select 4;
_divergence = _x select 5;
if(alive _obj && {_emitterWavelength >= (_seekerWavelengths select 0)} && {_emitterWavelength <= (_seekerWavelengths select 1)} && {_laserCode == _seekerCode}) then {
_laser = [];
if(IS_CODE(_method)) then {
_laser = _x call _method;
} else {
if(IS_STRING(_method)) then {
_laser = _x call (missionNamespace getVariable [_method, {}]);
} else {
if(IS_ARRAY(_method)) then {
if(count _method == 2) then {
_laser = [ATLtoASL (_obj modelToWorldVisual (_method select 0)), _obj weaponDirection (_method select 1)];
} else {
if(count _method == 3) then {
_laser = [ATLtoASL (_obj modelToWorldVisual (_method select 0)), (ATLtoASL (_obj modelToWorldVisual (_method select 1))) vectorFromTo (ATLtoASL (_obj modelToWorldVisual (_method select 2)))];
};
};
};
};
};
_laserPos = _laser select 0;
_laserDir = _laser select 1;
_res = [_laserPos, _laserDir, _divergence] call FUNC(shootCone);
{
_spots pushBack [_x select 0, _owner];
} forEach (_res select 2);
};
} forEach (GVAR(laserEmitters) select 1);
if((count _spots) > 0) then {
_bucketPos = nil;
_bucketList = nil;
_c = 0;
while { count(_spots) != count(_excludes) && _c < (count _spots) } do {
scopeName "mainSearch";
{
if(!(_forEachIndex in _excludes)) then {
_index = _buckets pushBack [_x, [_x]];
_excludes pushBack _forEachIndex;
_bucketPos = _x select 0;
_bucketList = (_buckets select _index) select 1;
breakTo "mainSearch";
};
} forEach _spots;
{
if(!(_forEachIndex in _excludes)) then {
_testPos = (_x select 0);
if(_testPos vectorDistanceSqr _bucketPos <= 100) then {
_bucketList pushBack _x;
_excludes pushBack _forEachIndex;
};
};
} forEach _spots;
_c = _c + 1;
};
_finalBuckets = [];
_largest = -1;
_largestIndex = 0;
{
_index = _finalBuckets pushBack [];
_bucketList = _finalBuckets select _index;
{
_testPos = (_x select 0);
if(!terrainIntersectASL [_pos, _testPos] && {!lineIntersects [_pos, _testPos]}) then {
_bucketList pushBack _x;
};
} forEach (_x select 1);
if((count _bucketList) > _largest) then {
_largest = (count _bucketList);
_largestIndex = _index;
};
} forEach _buckets;
_finalBucket = _finalBuckets select _largestIndex;
_owners = HASH_CREATE;
if(count _finalBucket > 0) then {
_avgX = 0;
_avgY = 0;
_avgZ = 0;
{
player sideChat format["x: %1", _x];
_avgX = _avgX + ((_x select 0) select 0);
_avgY = _avgY + ((_x select 0) select 1);
_avgZ = _avgZ + ((_x select 0) select 2);
_owner = _x select 1;
if(HASH_HASKEY(_owners, _owner)) then {
_count = HASH_GET(_owners, _owner);
HASH_SET(_owners, _owner, _count+1);
} else {
HASH_SET(_owners, _owner, 1);
};
} forEach _finalBucket;
_count = count _finalBucket;
_finalPos = [_avgX/_count, _avgY/_count, _avgZ/_count];
_maxOwner = -1;
_maxOwnerIndex = 0;
{
if((_owners select 1) select _forEachIndex > _maxOwner) then {
_maxOwner = (_owners select 1) select _forEachIndex;
_maxOwnerIndex = _forEachIndex;
};
} forEach (_owners select 0);
_finalOwner = (_owners select 0) select _maxOwnerIndex;
};
};
[_finalPos, _owner];

View File

@ -1,8 +1,17 @@
#include "script_component.hpp" #include "script_component.hpp"
//#define DEBUG_MODE_FULL
private ["_divergence","_pos","_vec","_longestReturn","_shortestReturn","_resultPositions","_p1","_p2","_p","_v","_cp","_vecRotateMap","_result",
"_resultPos","_distance","_count","_pos2","_radOffset","_offset","_offsetPos","_offsetVector"];
_divergence = 0.3; _divergence = 0.3;
_pos = _this select 0; _pos = _this select 0;
_vec = _this select 1; _vec = _this select 1;
if(count _this > 2) then {
_divergence = _this select 2;
};
_count = 3;
if(count _this > 3) then {
_count = _this select 3;
};
_longestReturn = -1000000000; _longestReturn = -1000000000;
_shortestReturn = 1000000000; _shortestReturn = 1000000000;
_resultPositions = []; _resultPositions = [];
@ -10,7 +19,7 @@ _p1 = [0,0,0];
_p2 = +_vec; _p2 = +_vec;
_p = (_vec call CBA_fnc_vect2polar); _p = (_vec call CBA_fnc_vect2polar);
_v = [(_p select 0), (_p select 1), (_p select 2)+90] call CBA_fnc_polar2vect; _v = [(_p select 0), (_p select 1), (_p select 2)+90] call CBA_fnc_polar2vect;
_cp = [_vec, _v] call BIS_fnc_crossProduct; _cp = _vec vectorCrossProduct _v;
_vecRotateMap = [_cp, _p1, _p2] call FUNC(rotateVectLineGetMap); _vecRotateMap = [_cp, _p1, _p2] call FUNC(rotateVectLineGetMap);
@ -24,28 +33,21 @@ if(!isNil "_resultPos") then {
if(_distance > _longestReturn) then { if(_distance > _longestReturn) then {
_longestReturn = _distance; _longestReturn = _distance;
}; };
_resultPositions set[(count _resultPositions), _result]; _resultPositions pushBack _result;
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
DRAW_LINES set[(count DRAW_LINES), [_pos, _resultPos, [0, 1, 0, 1]]]; // DRAW_LINES set[(count DRAW_LINES), [_pos, _resultPos, [0, 1, 0, 1]]];
drawLine3D [ASLtoATL _pos, ASLtoATL _resultPos, [1,0,0,1]];
#endif #endif
}; };
_count = 8;
_pos2 = [
(_pos select 0)+((_vec select 0)*1000), _pos2 = _pos vectorAdd (_vec vectorMultiply 1000);
(_pos select 1)+((_vec select 1)*1000),
(_pos select 2)+((_vec select 2)*1000)
];
{ {
for "_i" from 0 to ceil(_count*_x) do { for "_i" from 0 to ceil(_count*_x) do {
_radOffset = random 360; _radOffset = random 360;
_offset = [_vecRotateMap, (((360/_count)*_i)+_radOffset) mod 360] call FUNC(rotateVectLine); _offset = [_vecRotateMap, (((360/_count)*_i)+_radOffset) mod 360] call FUNC(rotateVectLine);
_offsetPos = [ _offsetPos = _pos2 vectorAdd (_offset vectorMultiply (_divergence*_x));
(_pos2 select 0)+((_offset select 0)*(_divergence*_x)), _offsetVector = _pos vectorFromTo _offsetPos;
(_pos2 select 1)+((_offset select 1)*(_divergence*_x)),
(_pos2 select 2)+((_offset select 2)*(_divergence*_x))
];
_offsetVector = [_pos, _offsetPos] call BIS_fnc_vectorFromXtoY;
_result = [_pos, _offsetVector] call FUNC(shootRay); _result = [_pos, _offsetVector] call FUNC(shootRay);
_resultPos = _result select 0; _resultPos = _result select 0;
if(!isNil "_resultPos") then { if(!isNil "_resultPos") then {
@ -56,9 +58,10 @@ _pos2 = [
if(_distance > _longestReturn) then { if(_distance > _longestReturn) then {
_longestReturn = _distance; _longestReturn = _distance;
}; };
_resultPositions set[(count _resultPositions), _result]; _resultPositions pushBack _result;
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
DRAW_LINES set[(count DRAW_LINES), [_pos, _resultPos, [0, 1, 0, 1]]]; // DRAW_LINES set[(count DRAW_LINES), [_pos, _resultPos, [0, 1, 0, 1]]];
drawLine3D [ASLtoATL _pos, ASLtoATL _resultPos, [1,0,0,1]];
#endif #endif
}; };
}; };

View File

@ -11,13 +11,8 @@ _lastPos = +_pos;
{ {
scopeName "mainSearch"; scopeName "mainSearch";
for "_i" from 1 to 10 do { for "_i" from 1 to 10 do {
_nextPos = [ _nextPos = _lastPos vectorAdd (_vec vectorMultiply _x);
(_lastPos select 0)+((_vec select 0)*_x), if(terrainIntersectASL [_lastPos, _nextPos] || {lineIntersects [_lastPos, _nextPos]}) then {
(_lastPos select 1)+((_vec select 1)*_x),
(_lastPos select 2)+((_vec select 2)*_x)
];
if(lineIntersects [_lastPos, _nextPos] || terrainIntersectASL [_lastPos, _nextPos]) then {
_resultPos = _lastPos; _resultPos = _lastPos;
breakTo "mainSearch"; breakTo "mainSearch";
} else { } else {
@ -25,6 +20,5 @@ _lastPos = +_pos;
_lastPos = _nextPos; _lastPos = _nextPos;
}; };
}; };
} forEach _fidelity; } forEach _fidelity;
[_resultPos, _distance]; [_resultPos, _distance];

View File

@ -0,0 +1,26 @@
/*
* Author: jaynus
* Handler function for laser network code.
*
* Argument:
* 0: Emitter
* 1: Owner
*
* Return value:
* [position, direction]
*/
//#define DEBUG_MODE_FULL
#include "script_component.hpp"
private["_emitter", "_owner", "_gunnerInfo", "_turretInfo", "_povPos", "_povDir"];
_emmiter = _this select 0;
_owner = _this select 1;
// Not in a vehicle....
// @TODO: handle lasering from turrets
if( (vehicle _emmiter) == _emmiter && alive _emmiter && (currentWeapon _emmiter) == "LaserDesignator") exitWith {
[(eyePos _emmiter), (eyeDirection _emmiter)]
};
[-1,-1]

View File

@ -1,32 +0,0 @@
class RscPicture;
class RscText;
class RscControlsGroupNoScrollbars;
/* This disables air radar. We need to make this a seperate HUD addon
class RscInGameUI
{
class RscUnitInfo
{
class CA_Radar: RscControlsGroupNoScrollbars
{
class controls
{
class CA_RadarBackground: RscPicture {
colorText[] = {0,0,0,0};
text = "";
};
class CA_RadarIcon: RscPicture {
colorText[] = {0,0,0,0};
};
class CA_Heading: RscText {
colorText[] = {0,0,0,0};
};
};
};
};
};
class CfgInGameUI
{
};
*/

View File

@ -8,12 +8,6 @@ class CfgVehicles {
class Turrets { class Turrets {
class MainTurret; class MainTurret;
}; };
// TODO: move these to a different HUD addon
// commanderCanSee = 2+32;
// gunnerCanSee = 2+32;
// driverCanSee = 2+32;
}; };
class Helicopter_Base_F: Helicopter {}; class Helicopter_Base_F: Helicopter {};

View File

@ -5,7 +5,8 @@ PREP(laserHudDesignateOn);
PREP(laserHudDesignateOff); PREP(laserHudDesignateOff);
PREP(unitTurretHasDesignator); PREP(unitTurretHasDesignator);
GVAR(laser) = nil; PREP(findLaserSource);
GVAR(active) = false; GVAR(active) = false;
FUNC(getPosASL) = {visiblePositionASL (_this select 0)}; FUNC(getPosASL) = {visiblePositionASL (_this select 0)};

View File

@ -10,8 +10,6 @@ class CfgPatches {
}; };
}; };
#include "CfgUI.hpp"
#include "CfgEventhandlers.hpp" #include "CfgEventhandlers.hpp"
#include "CfgWeapons.hpp" #include "CfgWeapons.hpp"
#include "CfgVehicles.hpp" #include "CfgVehicles.hpp"

View File

@ -0,0 +1,30 @@
/*
* Author: jaynus
* Handler function for laser network code.
*
* Argument:
* 0: Emitter
* 1: Owner
*
* Return value:
* [position, direction]
*/
//findLaserSource.sqf
//#define DEBUG_MODE_FULL
#include "script_component.hpp"
private["_emitter", "_owner", "_gunnerInfo", "_turretInfo", "_povPos", "_povDir"];
_emmiter = _this select 0;
_owner = _this select 1;
_gunnerInfo = [_emmiter, (currentWeapon _emmiter)] call CBA_fnc_getFirer;
_turretInfo = [_emmiter, _gunnerInfo select 1] call EFUNC(common,getTurretDirection);
_povPos = _turretInfo select 0;
_povDir = _turretInfo select 1;
if(!isNil "_povPos" && !isNil "_povDir") exitWith {
[_povPos, _povDir]
};
[-1,-1]

View File

@ -1,28 +1,25 @@
/*
* Author: jaynus
* Turns off passed laser self designation.
*
* Argument:
* 0: Shooter, player shooting the laser
* 1: LaserUUID, the UUID of the laser returned by EFUNC(laser,laserOn)
* 2: Local laser target, unused.
*
* Return value:
* true
*/
#include "script_component.hpp" #include "script_component.hpp"
if( (count _this) > 2) then { if( (count _this) > 2) then {
EXPLODE_3_PVT(_this,_vehicle,_shooter,_laserTarget); EXPLODE_3_PVT(_this,_shooter,_laserUuid, _localLaserTarget);
// We got the optional vehicle list, clear the parameters
_vehicle setVariable[QGVAR(currentTarget), [], true]; [_laserUuid] call EFUNC(laser,laserOff);
// @TODO: Nou gets to field all tickets about missing lasers.
//deleteVehicle _localLaserTarget;
}; };
if(isNil QGVAR(laser)) exitWith {
false
};
if(!local GVAR(laser)) then {
false
};
_handle = GVAR(laser) getVariable ["ACE_PFH_HANDLE", nil];
if(!isNil "_handle") then {
[_handle] call cba_fnc_removePerFrameHandler;
};
REM(ACE_LASERS, GVAR(laser));
deleteVehicle GVAR(laser);
GVAR(laser) = nil;
GVAR(active) = false; GVAR(active) = false;
true true

View File

@ -1,4 +1,14 @@
//#define DEBUG_MODE_FULL /*
* Author: jaynus
* Turns on laser self designation from this vehicle based on the turret.
* There are no arguments, because it is all strictly based on the users vehicle.
*
* Argument:
*
* Return value:
* N/A
*/
//#define DEBUG_MODE_FULL
#include "script_component.hpp" #include "script_component.hpp"
TRACE_1("enter", _this); TRACE_1("enter", _this);
@ -6,102 +16,74 @@ TRACE_1("enter", _this);
#define FCS_UPDATE_DELAY 1 #define FCS_UPDATE_DELAY 1
FUNC(laserHudDesignatePFH) = { FUNC(laserHudDesignatePFH) = {
private["_strongestResultPos", "_args", "_laserTarget", "_shooter", "_vehicle", "_weapon", "_gunnerInfo", "_turret", "_pov", "_gunBeg", "_gunEnd", "_povPos", "_povDir", "_result", "_resultPositions", "_firstResult", "_forceUpdateTime"]; private["_strongestResultPos", "_args", "_localLaserTarget", "_laserResultPosition", "_laserResult", "_shooter", "_vehicle", "_weapon", "_gunnerInfo", "_turretInfo", "_pov", "_gunBeg", "_gunEnd", "_povPos", "_povDir", "_result", "_resultPositions", "_firstResult", "_forceUpdateTime"];
_args = _this select 0; _args = _this select 0;
_laserTarget = _args select 0;
_shooter = _args select 1;
TRACE_1("", _args, (_laserTarget getVariable["ACE_LASER_CODE"])); _shooter = _args select 0;
_localLaserTarget = _args select 2;
_vehicle = vehicle _shooter;
TRACE_1("", _args);
if((vehicle ACE_player) != _shooter || !alive _shooter || isNull _vehicle || isNull _laserTarget || !GVAR(active) ) exitWith { if((vehicle _shooter) == _shooter || {!alive _shooter} || {isNull _vehicle} || {!GVAR(active)} ) exitWith {
[_vehicle, _shooter, _laserTarget] call FUNC(laserHudDesignateOff); _args call FUNC(laserHudDesignateOff);
}; };
if(!([_shooter] call FUNC(unitTurretHasDesignator)) ) exitWith { if(!([_shooter] call FUNC(unitTurretHasDesignator)) ) exitWith {
[_vehicle, _shooter, _laserTarget] call FUNC(laserHudDesignateOff); _args call FUNC(laserHudDesignateOff);
}; };
if( (count _args) < 3) then { if( (count _args) < 4) then {
_args set[2, diag_tickTime + FCS_UPDATE_DELAY]; _args set[3, diag_tickTime + FCS_UPDATE_DELAY];
}; };
_forceUpdateTime = _args select 2; _forceUpdateTime = _args select 3;
_vehicle = vehicle _shooter; // @TODO: We don't have anything here we need to do the calculations for right now
_weapon = currentWeapon _vehicle; /*
// Retrieve the gunner and turret memory point information _gunnerInfo = [_vehicle, (currentWeapon _vehicle)] call CBA_fnc_getFirer;
_gunnerInfo = [_vehicle, _weapon] call CBA_fnc_getFirer;
_turretInfo = [_vehicle, _gunnerInfo select 1] call EFUNC(common,getTurretDirection); _turretInfo = [_vehicle, _gunnerInfo select 1] call EFUNC(common,getTurretDirection);
_povPos = _turretInfo select 0; _povPos = _turretInfo select 0;
_povDir = _turretInfo select 1;
_targetInfo = _vehicle getVariable[QGVAR(currentTarget), [] ]; _laserCode = (vehicle ACE_player) getVariable[QGVAR(currentCode), ACE_DEFAULT_LASER_CODE];
if( (count _targetInfo) > 0) then { _waveLength = (vehicle ACE_player) getVariable[QGVAR(currentWaveLength), ACE_DEFAULT_LASER_WAVELENGTH];
if(_laserTarget != (_targetInfo select 0) ) then {
_targetInfo = []
_laserResult = [_povPos, [_waveLength,_waveLength], _laserCode] call EFUNC(laser,seekerFindLaserSpot);
_laserResultPosition = _laserResult select 0;
TRACE_1("Search", _laserResult);
if((count _laserResult) > 0) then {
// @TODO: Nou gets to field all tickets about missing lasers.
//_localLaserTarget setPosASL _laserResultPosition;
}; };
}; */
if( (count _targetInfo) < 1) then {
_targetInfo = [_laserTarget, 1001]; // TODO: set laser code
_vehicle setVariable[QGVAR(currentTarget), _targetInfo, true];
_laserTarget setVariable[QGVAR(owner), _vehicle, true];
};
_result = [_povPos, _povDir] call EFUNC(laser,shootCone);
if((count _result) > 0) then {
_resultPositions = _result select 2;
if((count _resultPositions) > 0) then {
_strongestResultPos = [_resultPositions, _povPos] call EFUNC(laser,findStrongestRay);
// If the laser has moved less than a half meter, then dont move it.
// Just regular use of lasers will commonly make them move this much,
// but not across multiple close frames.
// This loses accuracy a little, but saves position updates per frame.
TRACE_5("", diag_tickTime, _forceUpdateTime, getPosASL _laserTarget, _strongestResultPos, ((getPosASL _laserTarget) distance _pos));
if(diag_tickTime > _forceUpdateTime) then { if(diag_tickTime > _forceUpdateTime) then {
TRACE_1("FCS Update", "");
["ace_fcs_forceUpdate", []] call ace_common_fnc_localEvent; ["ace_fcs_forceUpdate", []] call ace_common_fnc_localEvent;
}; _args set[3, diag_tickTime + FCS_UPDATE_DELAY];
//if( (_laserTarget distance _strongestResultPos) > 0.1) then {
TRACE_1("LaserPos Update", "");
_laserTarget setPosATL (ASLToATL _strongestResultPos);
//};
if(diag_tickTime > _forceUpdateTime) then {
_args set[2, diag_tickTime + FCS_UPDATE_DELAY];
};
#ifdef DEBUG_MODE_FULL
drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [1,0,0,1], (getPosATL _laserTarget), 0.75, 0.75, 0, "", 0.5, 0.025, "TahomaB"];
{
private["_position"];
_position = _x select 0;
drawLine3d [ASLToATL _povPos, ASLToATL _position, [0,0,1,1] ];
} forEach _resultPositions;
#endif
};
}; };
_this set[0, _args]; _this set[0, _args];
}; };
private ["_laserTarget", "_handle", "_vehicle"]; private ["_laserTarget", "_handle", "_vehicle", "_laserUuid", "_waveLength", "_beamSpread", "_laserCode"];
if(isNil QGVAR(laser)) then {
_laserTarget = "LaserTargetW" createVehicle (getpos ACE_player);
if(!GVAR(active)) then {
GVAR(active) = true; GVAR(active) = true;
_handle = [FUNC(laserHudDesignatePFH), 0.1, [_laserTarget, ACE_player]] call cba_fnc_addPerFrameHandler; TRACE_1("Activating laser", "");
_laserTarget setVariable ["ACE_PFH_HANDLE", _handle, false];
// Clear the vehicle parameters // Get the self-designation variables, or use defaults
_vehicle setVariable[QGVAR(currentTarget), [], true]; _laserCode = (vehicle ACE_player) getVariable[QGVAR(currentCode), ACE_DEFAULT_LASER_CODE];
_waveLength = (vehicle ACE_player) getVariable[QGVAR(currentWaveLength), ACE_DEFAULT_LASER_WAVELENGTH];
_beamSpread = (vehicle ACE_player) getVariable[QGVAR(currentBeamSpread), ACE_DEFAULT_LASER_BEAMSPREAD];
GVAR(laser) = _laserTarget; _laserUuid = [(vehicle ACE_player), ACE_player, QFUNC(findLaserSource), _waveLength, _laserCode, _beamSpread] call EFUNC(laser,laserOn);
// @TODO: Create the local target for the players side
// @TODO: Nou gets to field all tickets about missing lasers.
//_localLaserTarget = "LaserTargetW" createVehicleLocal (getpos ACE_player);
_handle = [FUNC(laserHudDesignatePFH), 0.1, [ACE_player, _laserUuid, nil]] call cba_fnc_addPerFrameHandler;
} else { } else {
[] call FUNC(laserHudDesignateOff); [] call FUNC(laserHudDesignateOff);
[] call FUNC(laserHudDesignateOn); [] call FUNC(laserHudDesignateOn);

View File

@ -6,12 +6,18 @@
<German>Lasermarkierer&lt;br/&gt;an</German> <German>Lasermarkierer&lt;br/&gt;an</German>
<Spanish>Laser&lt;br/&gt;Designador encendido</Spanish> <Spanish>Laser&lt;br/&gt;Designador encendido</Spanish>
<Russian>ЛЦУ&lt;br/&gt;ВКЛ</Russian> <Russian>ЛЦУ&lt;br/&gt;ВКЛ</Russian>
<Czech>Laserový&lt;br/&gt;značkovač zapnut</Czech>
<Polish>Desygnator&lt;br/&gt;laserowy wł.</Polish>
<French>Désignateur&lt;br/&gt;Laser Allumé</French>
</Key> </Key>
<Key ID="STR_ACE_Laser_SelfDesignate_DesignatorOff"> <Key ID="STR_ACE_Laser_SelfDesignate_DesignatorOff">
<English>Laser&lt;br/&gt;Designator Off</English> <English>Laser&lt;br/&gt;Designator Off</English>
<German>Lasermarkierer&lt;br/&gt;aus</German> <German>Lasermarkierer&lt;br/&gt;aus</German>
<Spanish>Laser&lt;br/&gt;Designador apagado</Spanish> <Spanish>Laser&lt;br/&gt;Designador apagado</Spanish>
<Russian>ЛЦУ&lt;br/&gt;ВЫКЛ</Russian> <Russian>ЛЦУ&lt;br/&gt;ВЫКЛ</Russian>
<Czech>Laserový&lt;br/&gt;značkovat vypnut</Czech>
<Polish>Desygnator&lt;br/&gt;laserowy wył.</Polish>
<French>Désignateur&lt;br/&gt;Laser Éteint</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,29 +1,37 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 -->
<Project name="ACE"> <Project name="ACE">
<Package name="Laserpointer"> <Package name="Laserpointer">
<Key ID="STR_ACE_Laserpointer_red"> <Key ID="STR_ACE_Laserpointer_red">
<English>Laser Pointer (red)</English> <English>Laser Pointer (red)</English>
<French>Pointeur laser (rouge)</French>
<German>Laserpointer (rot)</German> <German>Laserpointer (rot)</German>
<Russian>Лазерный прицел (красный)</Russian> <Russian>Лазерный прицел (красный)</Russian>
<Czech>Laserové ukazovátko (červené)</Czech>
<Polish>Wskaźnik laserowy (czerwony)</Polish>
</Key> </Key>
<Key ID="STR_ACE_Laserpointer_green"> <Key ID="STR_ACE_Laserpointer_green">
<English>Laser Pointer (green)</English> <English>Laser Pointer (green)</English>
<French>Pointeur laser (vert)</French>
<German>Laserpointer (grün)</German> <German>Laserpointer (grün)</German>
<Russian>Лазерный прицел (зелёный)</Russian> <Russian>Лазерный прицел (зелёный)</Russian>
<Czech>Laserové ukazovátko (zelené)</Czech>
<Polish>Wskaźnik laserowy (zielony)</Polish>
</Key> </Key>
<Key ID="STR_ACE_Laserpointer_Description"> <Key ID="STR_ACE_Laserpointer_Description">
<English>Emits visible light. </English> <English>Emits visible light. </English>
<French>Diffuse un rayon lumineux visible.</French>
<German>Strahlt sichtbares Licht aus. </German> <German>Strahlt sichtbares Licht aus. </German>
<Russian>Испускает узкий пучок видимого света.</Russian> <Russian>Испускает узкий пучок видимого света.</Russian>
<Czech>Vyzařuje viditelné světlo.</Czech>
<Polish>Wydziela widzialne światło.</Polish>
</Key> </Key>
<Key ID="STR_ACE_Laserpointer_useLaser"> <Key ID="STR_ACE_Laserpointer_useLaser">
<English>&lt;t color='#9cf953'&gt;Use: &lt;/t&gt;Turn Laser ON/OFF</English> <English>&lt;t color='#9cf953'&gt;Use: &lt;/t&gt;Turn Laser ON/OFF</English>
<Czech>&lt;t color='#9cf953'&gt;Použití: &lt;/t&gt;Zapnout/vypnout laser</Czech> <Czech>&lt;t color='#9cf953'&gt;Použití: &lt;/t&gt;Zapnout/vypnout laser</Czech>
<French>&lt;t color='#9cf953'&gt;Utiliser : &lt;/t&gt;laser on/off</French> <French>&lt;t color='#9cf953'&gt;Utiliser : &lt;/t&gt;laser allumé/éteint</French>
<German>&lt;t color='#9cf953'&gt;Benutzen: &lt;/t&gt;Laser EIN/AUS</German> <German>&lt;t color='#9cf953'&gt;Benutzen: &lt;/t&gt;Laser EIN/AUS</German>
<Italian>&lt;t color='#9cf953'&gt;Uso: &lt;/t&gt;Laser ON/OFF</Italian> <Italian>&lt;t color='#9cf953'&gt;Uso: &lt;/t&gt;Laser ON/OFF</Italian>
<Polish>&lt;t color='#9cf953'&gt;Użyj: &lt;/t&gt;wł./wył. lasera</Polish> <Polish>&lt;t color='#9cf953'&gt;Użyj: &lt;/t&gt;wł./wył. laser</Polish>
<Portuguese>&lt;t color='#9cf953'&gt;Uso: &lt;/t&gt;Ativar/Desativar laser</Portuguese> <Portuguese>&lt;t color='#9cf953'&gt;Uso: &lt;/t&gt;Ativar/Desativar laser</Portuguese>
<Russian>&lt;t color='#9cf953'&gt;Использовать: &lt;/t&gt;вкл/выкл лазер</Russian> <Russian>&lt;t color='#9cf953'&gt;Использовать: &lt;/t&gt;вкл/выкл лазер</Russian>
<Spanish>&lt;t color='#9cf953'&gt;Usar: &lt;/t&gt;encender/apagar láser</Spanish> <Spanish>&lt;t color='#9cf953'&gt;Usar: &lt;/t&gt;encender/apagar láser</Spanish>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 --> <!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="logistics_uavbattery"> <Package name="logistics_uavbattery">
<Key ID="STR_ACE_logistics_uavbattery_Full"> <Key ID="STR_ACE_logistics_uavbattery_Full">
@ -21,7 +21,7 @@
<French>Pas de batterie UAV</French> <French>Pas de batterie UAV</French>
<Polish>Potrzebujesz baterii UAV</Polish> <Polish>Potrzebujesz baterii UAV</Polish>
<Hungarian>Szükséged van egy UAV akkumulátorra</Hungarian> <Hungarian>Szükséged van egy UAV akkumulátorra</Hungarian>
<Czech>Potřebuješ UAV-Baterii</Czech> <Czech>Potřebuješ UAV baterii</Czech>
<Portuguese>Você precisa de uma Bateria para VANT</Portuguese> <Portuguese>Você precisa de uma Bateria para VANT</Portuguese>
<Italian>Hai bisogno di una Batteria UAV</Italian> <Italian>Hai bisogno di una Batteria UAV</Italian>
<Russian>Требуется аккумулятор для БПЛА</Russian> <Russian>Требуется аккумулятор для БПЛА</Russian>
@ -45,7 +45,7 @@
<French>Batterie UAV</French> <French>Batterie UAV</French>
<Polish>Bateria UAV</Polish> <Polish>Bateria UAV</Polish>
<Hungarian>UAV akkumulátor</Hungarian> <Hungarian>UAV akkumulátor</Hungarian>
<Czech>UAV-Baterie</Czech> <Czech>UAV baterie</Czech>
<Portuguese>Bateria para VANT</Portuguese> <Portuguese>Bateria para VANT</Portuguese>
<Italian>Batteria UAV</Italian> <Italian>Batteria UAV</Italian>
<Russian>Аккумулятор БПЛА</Russian> <Russian>Аккумулятор БПЛА</Russian>
@ -55,7 +55,7 @@
<German>Verwendet zum Aufladen von tragbaren UAV's</German> <German>Verwendet zum Aufladen von tragbaren UAV's</German>
<Spanish>Usada para reabastecer el VANT</Spanish> <Spanish>Usada para reabastecer el VANT</Spanish>
<French>Utilisée pour recharger l'UAV</French> <French>Utilisée pour recharger l'UAV</French>
<Polish>Używana do naładowania UAV</Polish> <Polish>Używana do naładowania baterii przenośnego UAV</Polish>
<Hungarian>Hordozható UAV-ok működéséhez való akkumulátor</Hungarian> <Hungarian>Hordozható UAV-ok működéséhez való akkumulátor</Hungarian>
<Czech>Používané k dobíjení UAV</Czech> <Czech>Používané k dobíjení UAV</Czech>
<Portuguese>Usada para reabastecer VANT</Portuguese> <Portuguese>Usada para reabastecer VANT</Portuguese>

View File

@ -1,17 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="Wirecutter"> <Package name="Wirecutter">
<Key ID="STR_ACE_logistics_wirecutter_wirecutterName"> <Key ID="STR_ACE_logistics_wirecutter_wirecutterName">
<English>Wirecutter</English> <English>Wirecutter</English>
<French>Coupe clôture</French>
<German>Drahtschneider</German> <German>Drahtschneider</German>
<Spanish>Cortador de cables</Spanish> <Spanish>Cortador de cables</Spanish>
<Russian>Клещи-кусачки</Russian> <Russian>Клещи-кусачки</Russian>
<Czech>Štípací kleště</Czech>
<Polish>Nożyce do cięcia drutu</Polish>
</Key> </Key>
<Key ID="STR_ACE_logistics_wirecutter_wirecutterDescription"> <Key ID="STR_ACE_logistics_wirecutter_wirecutterDescription">
<English>Wirecutter</English> <English>Wirecutter</English>
<German>Schneidet Draht.</German> <German>Schneidet Draht.</German>
<Spanish>Cortador de cables</Spanish> <Spanish>Cortador de cables</Spanish>
<Russian>Позволяют быстро перекусывать сеточные конструкции.</Russian> <Russian>Позволяют быстро перекусывать сеточные конструкции.</Russian>
<Czech>Štípačky</Czech>
<Polish>Służą do cięcia drutu i płotów</Polish>
<French>Coupe clôture</French>
</Key> </Key>
<Key ID="STR_ACE_logistics_wirecutter_CutFence"> <Key ID="STR_ACE_logistics_wirecutter_CutFence">
<English>Cut Fence</English> <English>Cut Fence</English>

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="MagazineRepack"> <Package name="MagazineRepack">
<Key ID="STR_ACE_MagazineRepack_RepackMagazines"> <Key ID="STR_ACE_MagazineRepack_RepackMagazines">
@ -19,7 +20,7 @@
<Spanish>Menú de selección de cargador</Spanish> <Spanish>Menú de selección de cargador</Spanish>
<French>Sélectionner menu des chargeurs</French> <French>Sélectionner menu des chargeurs</French>
<Polish>Menu wyboru magazynków</Polish> <Polish>Menu wyboru magazynków</Polish>
<Czech>Zvolit Menu Zásobníků</Czech> <Czech>Zvolit Menu zásobníků</Czech>
<Italian>Seleziona Menù di Ricarica</Italian> <Italian>Seleziona Menù di Ricarica</Italian>
<Portuguese>Menu de Seleção de Carregador</Portuguese> <Portuguese>Menu de Seleção de Carregador</Portuguese>
<Hungarian>Fegyvertár menü kiválasztás</Hungarian> <Hungarian>Fegyvertár menü kiválasztás</Hungarian>
@ -31,7 +32,7 @@
<Spanish>Seleccionar cargador</Spanish> <Spanish>Seleccionar cargador</Spanish>
<French>Sélectionner chargeur</French> <French>Sélectionner chargeur</French>
<Polish>Wybierz magazynek</Polish> <Polish>Wybierz magazynek</Polish>
<Czech>Zvolit Zásobník</Czech> <Czech>Zvolit zásobník</Czech>
<Italian>Seleziona Caricatore</Italian> <Italian>Seleziona Caricatore</Italian>
<Portuguese>Selecionar Carregador</Portuguese> <Portuguese>Selecionar Carregador</Portuguese>
<Hungarian>Tár kiválasztása</Hungarian> <Hungarian>Tár kiválasztása</Hungarian>
@ -43,7 +44,7 @@
<Spanish>Reorganizando cargadores ...</Spanish> <Spanish>Reorganizando cargadores ...</Spanish>
<French>Réorganisation des chargeurs ...</French> <French>Réorganisation des chargeurs ...</French>
<Polish>Przepakowywanie magazynków ...</Polish> <Polish>Przepakowywanie magazynków ...</Polish>
<Czech>Páskuji Zásobníky ...</Czech> <Czech>Páskuji zásobníky ...</Czech>
<Italian>Sto ricaricando le munizioni ...</Italian> <Italian>Sto ricaricando le munizioni ...</Italian>
<Portuguese>Reorganizando Carregadores ...</Portuguese> <Portuguese>Reorganizando Carregadores ...</Portuguese>
<Hungarian>Újratárazás ...</Hungarian> <Hungarian>Újratárazás ...</Hungarian>
@ -55,7 +56,7 @@
<Spanish>Cargadores reorganizados</Spanish> <Spanish>Cargadores reorganizados</Spanish>
<French>Chargeurs réorganisés</French> <French>Chargeurs réorganisés</French>
<Polish>Magazynki przepakowane</Polish> <Polish>Magazynki przepakowane</Polish>
<Czech>Přepáskované Zásobníky</Czech> <Czech>Přepáskované zásobníky</Czech>
<Italian>Caricatore ricaricato</Italian> <Italian>Caricatore ricaricato</Italian>
<Portuguese>Carregadores Reorganizados</Portuguese> <Portuguese>Carregadores Reorganizados</Portuguese>
<Hungarian>Újratárazott tárak</Hungarian> <Hungarian>Újratárazott tárak</Hungarian>
@ -66,7 +67,7 @@
<German>%1 volle(s) Magazin(e) und %2 übrig gebliebene Patrone(n)</German> <German>%1 volle(s) Magazin(e) und %2 übrig gebliebene Patrone(n)</German>
<Spanish>%1 cargador(es) completo(s) y %2 bala(s) extra(s)</Spanish> <Spanish>%1 cargador(es) completo(s) y %2 bala(s) extra(s)</Spanish>
<French>%1 chargeur(s) plein(s) et %2 cartouche(s) en rab</French> <French>%1 chargeur(s) plein(s) et %2 cartouche(s) en rab</French>
<Polish>%1 pełnych magazynków i %2 dodatkowych naboi</Polish> <Polish>Pełnych magazynków: %1.&lt;br /&gt; Dodatkowych naboi: %2.</Polish>
<Czech>%1 plný zásobník(y) a %2 munice navíc</Czech> <Czech>%1 plný zásobník(y) a %2 munice navíc</Czech>
<Italian>%1 caricatore/i pieno e %2 munizioni extra</Italian> <Italian>%1 caricatore/i pieno e %2 munizioni extra</Italian>
<Portuguese>%1 carregador(es) cheio(s) e %2 disparo(s) a mais</Portuguese> <Portuguese>%1 carregador(es) cheio(s) e %2 disparo(s) a mais</Portuguese>
@ -75,21 +76,30 @@
</Key> </Key>
<Key ID="STR_ACE_MagazineRepack_RepackComplete"> <Key ID="STR_ACE_MagazineRepack_RepackComplete">
<English>Repacking Finished</English> <English>Repacking Finished</English>
<French>Réorganisation terminé</French>
<German>Wiederverpacken Fertig</German> <German>Wiederverpacken Fertig</German>
<Spanish>Reembalaje finalizado</Spanish> <Spanish>Reembalaje finalizado</Spanish>
<Russian>Перепаковка завершена</Russian> <Russian>Перепаковка завершена</Russian>
<Czech>Páskování dokončeno</Czech>
<Polish>Przepakowywanie zakończone</Polish>
</Key> </Key>
<Key ID="STR_ACE_MagazineRepack_RepackInterrupted"> <Key ID="STR_ACE_MagazineRepack_RepackInterrupted">
<English>Repacking Interrupted</English> <English>Repacking Interrupted</English>
<French>Réorganisation Interrompue</French>
<German>Umpacken Unterbrochen</German> <German>Umpacken Unterbrochen</German>
<Spanish>Reembalaje interrumpido</Spanish> <Spanish>Reembalaje interrumpido</Spanish>
<Russian>Перепаковка прервана</Russian> <Russian>Перепаковка прервана</Russian>
<Czech>Páskování přerušeno</Czech>
<Polish>Przepakowywanie przerwane</Polish>
</Key> </Key>
<Key ID="STR_ACE_MagazineRepack_RepackedMagazinesCount"> <Key ID="STR_ACE_MagazineRepack_RepackedMagazinesCount">
<English>%1 Full and %2 Partial</English> <English>%1 Full and %2 Partial</English>
<French>%1 Complet et %2 Partiellement</French>
<German>%1 Vollständigen und %2 Teilweisen</German> <German>%1 Vollständigen und %2 Teilweisen</German>
<Spanish>%1 Total y %2 Parcial</Spanish> <Spanish>%1 Total y %2 Parcial</Spanish>
<Russian>%1 полных и %2 неполных</Russian> <Russian>%1 полных и %2 неполных</Russian>
<Czech>%1 plný a %2 částečně</Czech>
<Polish>Pełnych: %1.&lt;br /&gt;Częściowo pełnych: %2.</Polish>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -107,4 +107,71 @@ class CfgAmmo {
//typicalspeed = 792; //typicalspeed = 792;
//airfriction = -0.0008577; //airfriction = -0.0008577;
}; };
/* .338 Lapua Magnum */
// IR Dim
class B_338_Ball;
class ACE_B_338_Ball_Tracer_Dim: B_338_Ball {
nvgOnly = 1;
};
//AP
class ACE_B_338_Ball_AP: B_338_Ball {
caliber = 3.6;
hit = 18.9;
};
//SD
class ACE_B_338_Ball_SD: B_338_Ball {
airFriction = -0.00036;
hit = 15.75;
supersonicCrackFar[] = {};
supersonicCrackNear[] = {};
typicalSpeed = 320;
audibleFire = 1.2;
visibleFire = 4.0;
};
/* .338 Norma Magnum */
//IR Dim
class B_338_NM_Ball;
class ACE_B_338_NM_Ball_Tracer_Dim: B_338_NM_Ball {
nvgOnly = 1;
};
//AP
class ACE_B_338_NM_Ball_AP: B_338_NM_Ball {
caliber = 3.2;
hit = 16.8;
};
/* 9.3x64mm */
//IR Dim
class B_93x64_Ball;
class ACE_B_93x64_Ball_Tracer_Dim: B_93x64_Ball {
nvgOnly = 1;
};
//AP
class ACE_B_93x64_Ball_AP: B_93x64_Ball {
caliber = 4.0;
hit = 21;
};
//SD
class ACE_B_93x64_Ball_SD: B_93x64_Ball {
airFriction = -0.00042;
hit = 17.5;
supersonicCrackFar[] = {};
supersonicCrackNear[] = {};
typicalSpeed = 320;
audibleFire = 1.2;
visibleFire = 4.0;
};
}; };

View File

@ -136,4 +136,131 @@ class CfgMagazines {
displayNameShort = "$STR_ACE_20Rnd_762x51_mag_APNameShort"; displayNameShort = "$STR_ACE_20Rnd_762x51_mag_APNameShort";
descriptionShort = "$STR_ACE_20Rnd_762x51_mag_APDescription"; descriptionShort = "$STR_ACE_20Rnd_762x51_mag_APDescription";
}; };
/* 338 Lapua Magnum */
class 10Rnd_338_Mag;
class ACE_10Rnd_338_Mag_Tracer: 10Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_10Rnd_338_Mag_TracerName";
displayNameShort = "$STR_ACE_10Rnd_338_Mag_TracerNameShort";
descriptionShort = "$STR_ACE_10Rnd_338_Mag_TracerDescription";
tracersEvery = 1;
};
class ACE_10Rnd_338_Mag_Tracer_Dim: ACE_10Rnd_338_Mag_Tracer {
author = "$STR_ACE_Common_ACETeam";
ammo = "ACE_B_338_Ball_Tracer_Dim";
displayName = "$STR_ACE_10Rnd_388_Mag_Tracer_DimName";
displayNameShort = "$STR_ACE_10Rnd_338_Mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_10Rnd_338_Mag_Tracer_DimDescription";
};
class ACE_10Rnd_338_Mag_AP: 10Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam";
ammo ="ACE_B_338_Ball_AP";
displayName = "$STR_ACE_10Rnd_338_Mag_APName";
displayNameShort = "$STR_ACE_10Rnd_338_Mag_APNameShort";
descriptionShort = "$STR_ACE_10Rnd_338_Mag_APDescription";
};
class ACE_10Rnd_338_Mag_SD: 10Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam";
ammo = "ACE_B_338_Ball_SD";
displayName = "$STR_ACE_10Rnd_338_Mag_SDName";
displayNameShort = "$STR_ACE_10Rnd_338_Mag_SDNameShort";
descriptionShort = "$STR_ACE_10Rnd_338_Mag_SDDescription";
initSpeed = 320;
};
/* .333 Norma Magnum */
class 130Rnd_338_Mag;
class ACE_130Rnd_338_Mag_Tracer: 130Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_130Rnd_338_Mag_TracerName";
displayNameShort = "$STR_ACE_130Rnd_338_Mag_TracerNameShort";
descriptionShort = "$STR_ACE_130Rnd_338_Mag_TracerDescription";
tracersEvery = 1;
};
class ACE_130Rnd_338_Mag_Tracer_Dim: ACE_130Rnd_338_Mag_Tracer {
author = "$STR_ACE_Common_ACETeam";
ammo = "ACE_B_338_NM_Ball_Tracer_Dim";
displayName = "$STR_ACE_130Rnd_338_Mag_Tracer_DimName";
displayNameShort = "$STR_ACE_130Rnd_338_Mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_130Rnd_338_Mag_Tracer_DimDescription";
};
class ACE_130Rnd_338_Mag_AP: 130Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam";
ammo = "ACE_B_338_NM_Ball_AP";
displayName = "$STR_ACE_130Rnd_338_Mag_APName";
displayNameShort = "$STR_ACE_130Rnd_338_Mag_APNameShort";
descriptionShort = "$STR_ACE_130Rnd_338_Mag_APDescription";
};
/* 9.3x64mm */
//10Rnd Mags
class 10Rnd_93x64_DMR_05_Mag;
class ACE_10Rnd_93x64_DMR_05_Mag_Tracer: 10Rnd_93x64_DMR_05_Mag {
author = "$STR_ACE_Common_ACEETeam";
displayName = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerName";
displayNameShort = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerNameShort";
descriptionShort = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerDescription";
tracersEvery = 1;
};
class ACE_10Rnd_93x64_DMR_05_Mag_Tracer_Dim: ACE_10Rnd_93x64_DMR_05_Mag_Tracer {
author = "$STR_ACE_Common_ACEETeam";
ammo ="ACE_B_93x64_Ball_Tracer_Dim";
displayName = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimName";
displayNameShort = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimDescription";
};
class ACE_10Rnd_93x64_DMR_05_Mag_AP: 10Rnd_93x64_DMR_05_Mag {
author = "$STR_ACE_Common_ACEETeam";
ammo = "ACE_B_93x64_Ball_AP";
displayName = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_APName";
displayNameShort = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_APNameShort";
descriptionShort = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_APDescription";
};
class ACE_10Rnd_93x64_DMR_05_Mag_SD: 10Rnd_93x64_DMR_05_Mag {
author = "$STR_ACE_Common_ACEETeam";
ammo = "ACE_B_93x64_Ball_SD";
displayName = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_SDName";
displayNameShort = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_SDNameShort";
descriptionShort = "$STR_ACE_10Rnd_93x64_DMR_05_Mag_SDDescription";
initSpeed = 320;
};
//150Rnd Belt
class 150Rnd_93x64_Mag;
class ACE_150Rnd_93x64_Mag_Tracer: 150Rnd_93x64_Mag {
author = "$STR_ACE_Common_ACEETeam";
displayName = "$STR_ACE_150Rnd_93x64_Mag_TracerName";
displayNameShort = "$STR_ACE_150Rnd_93x64_Mag_TracerNameShort";
descriptionShort = "$STR_ACE_150Rnd_93x64_Mag_TracerDescription";
tracersEvery = 1;
};
class ACE_150Rnd_93x64_Mag_Tracer_Dim: ACE_150Rnd_93x64_Mag_Tracer {
author = "$STR_ACE_Common_ACEETeam";
ammo ="ACE_B_93x64_Ball_Tracer_Dim";
displayName = "$STR_ACE_150Rnd_93x64_Mag_Tracer_DimName";
displayNameShort = "$STR_ACE_150Rnd_93x64_Mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_150Rnd_93x64_Mag_Tracer_DimDescription";
};
class ACE_150Rnd_93x64_Mag_AP: 150Rnd_93x64_Mag {
author = "$STR_ACE_Common_ACEETeam";
ammo = "ACE_B_93x64_Ball_AP";
displayName = "$STR_ACE_150Rnd_93x64_Mag_APName";
displayNameShort = "$STR_ACE_150Rnd_93x64_Mag_APNameShort";
descriptionShort = "$STR_ACE_150Rnd_93x64_Mag_APDescription";
};
}; };

View File

@ -153,6 +153,20 @@ class CfgVehicles {
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,2); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,2);
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,2); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,2);
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_AP,2);*/ MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_AP,2);*/
MACRO_ADDMAGAZINE(ACE_10Rnd_338_Mag_Tracer,2);
MACRO_ADDMAGAZINE(ACE_10Rnd_338_Mag_Tracer_Dim,2);
MACRO_ADDMAGAZINE(ACE_10Rnd_338_Mag_AP,2);
MACRO_ADDMAGAZINE(ACE_10Rnd_338_Mag_SD,2);
MACRO_ADDMAGAZINE(ACE_130Rnd_338_Mag_Tracer,2);
MACRO_ADDMAGAZINE(ACE_130Rnd_338_Mag_Tracer_Dim,2);
MACRO_ADDMAGAZINE(ACE_130Rnd_338_Mag_AP,2);
MACRO_ADDMAGAZINE(ACE_10Rnd_93x64_DMR_05_Mag_Tracer,2);
MACRO_ADDMAGAZINE(ACE_10Rnd_93x64_DMR_05_Mag_Tracer_Dim,2);
MACRO_ADDMAGAZINE(ACE_10Rnd_93x64_DMR_05_Mag_AP,2);
MACRO_ADDMAGAZINE(ACE_10Rnd_93x64_DMR_05_Mag_SD,2);
MACRO_ADDMAGAZINE(ACE_150Rnd_93x64_Mag_Tracer,2);
MACRO_ADDMAGAZINE(ACE_150Rnd_93x64_Mag_Tracer_Dim,2);
MACRO_ADDMAGAZINE(ACE_150Rnd_93x64_Mag_AP,2);
}; };
}; };
}; };

View File

@ -30,7 +30,7 @@ class CfgWeapons {
/* Katiba */ /* Katiba */
class Rifle_Long_Base_F;
class arifle_katiba_Base_F: Rifle_Base_F { class arifle_katiba_Base_F: Rifle_Base_F {
magazines[] += { magazines[] += {
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim", "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim",
@ -39,6 +39,40 @@ class CfgWeapons {
}; };
}; };
class DMR_02_base_F: Rifle_Long_Base_F {
magazines[] += {
"ACE_10Rnd_338_Mag_Tracer",
"ACE_10Rnd_338_Mag_Tracer_Dim",
"ACE_10Rnd_338_Mag_AP",
"ACE_10Rnd_338_Mag_SD"
};
};
class MMG_02_base_F: Rifle_Long_Base_F {
magazines[] += {
"ACE_130Rnd_338_Mag_Tracer",
"ACE_130Rnd_338_Mag_Tracer_Dim",
"ACE_130Rnd_338_Mag_AP"
};
};
class DMR_05_base_F: Rifle_Long_Base_F {
magazines[] += {
"ACE_10Rnd_93x64_DMR_05_Mag_Tracer",
"ACE_10Rnd_93x64_DMR_05_Mag_Tracer_Dim",
"ACE_10Rnd_93x64_DMR_05_Mag_AP",
"ACE_10Rnd_93x64_DMR_05_Mag_SD"
};
};
class MMG_01_base_F: Rifle_Long_Base_F {
magazines[] += {
"ACE_150Rnd_93x64_Mag_Tracer",
"ACE_150Rnd_93x64_Mag_Tracer_Dim",
"ACE_150Rnd_93x64_Mag_AP"
};
};
/* Assault Rifles */ /* Assault Rifles */

View File

@ -18,6 +18,16 @@ ACE_B_762x51_Ball_SD
ACE_B_762x51_Ball_AP ACE_B_762x51_Ball_AP
ACE_B_762x51_M118LR ACE_B_762x51_M118LR
ACE_B_338_Ball_Tracer_Dim
ACE_B_338_Ball_AP
ACE_B_338_Ball_SD
ACE_B_338_NM_Ball_Tracer_Dim
ACE_B_338_NM_Ball_AP
ACE_B_93x64_Ball_Tracer_Dim
ACE_B_93x64_Ball_AP
ACE_B_93x64_Ball_SD
// CFGMagazines // CFGMagazines
@ -37,3 +47,21 @@ ACE_20Rnd_762x51_Mag_Tracer
ACE_20Rnd_762x51_Mag_Tracer_Dim ACE_20Rnd_762x51_Mag_Tracer_Dim
ACE_20Rnd_762x51_Mag_SD ACE_20Rnd_762x51_Mag_SD
ACE_20Rnd_762x51_Mag_AP ACE_20Rnd_762x51_Mag_AP
ACE_10Rnd_338_Mag_Tracer
ACE_10Rnd_338_Mag_Tracer_Dim
ACE_10Rnd_338_Mag_AP
ACE_10Rnd_338_Mag_SD
ACE_130Rnd_338_Mag_Tracer
ACE_130Rnd_338_Mag_Tracer_Dim
ACE_130Rnd_338_Mag_AP
ACE_10Rnd_93x64_DMR_05_Mag_Tracer
ACE_10Rnd_93x64_DMR_05_Mag_Tracer_Dim
ACE_10Rnd_93x64_DMR_05_Mag_AP
ACE_10Rnd_93x64_DMR_05_Mag_SD
ACE_150Rnd_93x64_Mag_Tracer
ACE_150Rnd_93x64_Mag_Tracer_Dim
ACE_150Rnd_93x64_Mag_AP

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 --> <!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="Magazines"> <Package name="Magazines">
<!-- MX --> <!-- MX -->
@ -486,5 +486,219 @@
<Russian>Калибр: 7.62x51mm M118LR&lt;br /&gt;Патронов: 20&lt;br /&gt;Тип: M14</Russian> <Russian>Калибр: 7.62x51mm M118LR&lt;br /&gt;Патронов: 20&lt;br /&gt;Тип: M14</Russian>
<Italian>Calibro: 7.62x51mm M118LR&lt;br /&gt;Munizioni:20&lt;br /&gt;In uso su: M14</Italian> <Italian>Calibro: 7.62x51mm M118LR&lt;br /&gt;Munizioni:20&lt;br /&gt;In uso su: M14</Italian>
</Key> </Key>
<!-- .338 Lapua Magnum -->
<Key ID="STR_ACE_10Rnd_338_Mag_TracerName">
<English>.338 LM 10Rnd Tracer Mag</English>
<German>.338 LM 10-Schuss-Magazin Leuchtspur</German>
<Polish>Magazynek .338 LM 10rd Smugacz</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_TracerNameShort">
<English>.338 LM Tracer</English>
<German>.338 LM Leuchtspur</German>
<Polish>.338 LM Smugacz</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_TracerDescription">
<English>Caliber: .338 Lapua Magnum Tracer&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: MAR-10</English>
<German>Kaliber: .338 Lapua Magnum Leuchtspur&lt;br /&gt;Schuss: 10&lt;br /&gt;Verwendet für: MAR-10</German>
<Polish>Kaliber: .338 Lapua Magnum Smugacz&lt;br /&gt;Pociski: 10&lt;br /&gt;Używane w: MAR-10</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_388_Mag_Tracer_DimName">
<English>.338 LM 10Rnd IR-DIM Mag</English>
<German>.338 LM 10-Schuss-Magazin Leuchtspur IR-DIM</German>
<Polish>Magazynek .338 LM 10rd IR-DIM</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_Tracer_DimNameShort">
<English>.338 LM IR-DIM</English>
<German>.338 LM IR-DIM</German>
<Polish>.338 LM IR-DIM</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_Tracer_DimDescription">
<English>Caliber: .338 Lapua Magnum Tracer IR-DIM&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: MAR-10</English>
<German>Kaliber: .338 Lapua Magnum Leuchtspur IR-DIM&lt;br /&gt;Schuss: 10&lt;br /&gt;Verwendet für: MAR-10</German>
<Polish>Kaliber: .338 Lapua Magnum Smugacz IR-DIM&lt;br /&gt;Pociski: 10&lt;br /&gt;Używane w: MAR-10</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_APName">
<English>.338 LM 10Rnd AP Mag</English>
<German>.338 LM 10-Schuss-Magazin Hartkern</German>
<Polish>Magazynek .338 LM 10rd AP</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_APNameShort">
<English>.338 LM AP</English>
<German>.338 LM AP</German>
<Polish>.338 LM AP</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_APDescription">
<English>Caliber: .338 Lapua Magnum AP&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: MAR-10</English>
<German>Kaliber: .338 Lapua Magnum Hartkern&lt;br /&gt;Schuss: 10&lt;br /&gt;Verwendet für: MAR-10</German>
<Polish>Kaliber: .338 Lapua Magnum AP&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: MAR-10</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_SDName">
<English>.338 LM 10Rnd SD Mag</English>
<German>.338 LM 10-Schuss-Magazin Unterschall</German>
<Polish>Magazynek .338 LM 10rd SD</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_SDNameShort">
<English>.338 LM SD</English>
<German>.338 LM SD</German>
<Polish>.338 LM SD</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_338_Mag_SDDescription">
<English>Caliber: .338 Lapua Magnum SD&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: MAR-10</English>
<German>Kaliber: .338 Lapua Magnum Unterschall&lt;br /&gt;Schuss: 10&lt;br /&gt;Verwendet für: MAR-10</German>
<Polish>Kaliber: .338 Lapua Magnum SD&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: MAR-10</Polish>
</Key>
<!-- .338 Norma Magnum -->
<Key ID="STR_ACE_130Rnd_338_Mag_TracerName">
<English>.338 NM 130Rnd Tracer Belt</English>
<German>.338 NM 130-Schuss-Gurt Leuchtspur</German>
<Polish>Taśma .338 NM 130rd Smugacz</Polish>
</Key>
<Key ID="STR_ACE_130Rnd_338_Mag_TracerNameShort">
<English>.338 NM Tracer</English>
<German>.338 NM Leuchtspur</German>
<Polish>.338 NM Tracer</Polish>
</Key>
<Key ID="STR_ACE_130Rnd_338_Mag_TracerDescription">
<English>Caliber: .338 Norma Magnum Tracer&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
<German>Kaliber: .338 Norma Magnum Leuchtspur&lt;br /&gt;Schuss: 130&lt;br /&gt;Verwendet für: SPMG</German>
<Polish>Kaliber: .338 Norma Magnum Smugacz&lt;br /&gt;Pociski: 130&lt;br /&gt;Używany w: SPMG</Polish>
</Key>
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimName">
<English>.338 NM 130Rnd IR-DIM Belt</English>
<German>.338 NM 130-Schuss-Gurt Leuchtspur IR-DIM</German>
<Polish>Taśma .338 NM 130rd IR-DIM</Polish>
</Key>
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimNameShort">
<English>.338 NM IR-DIM</English>
<German>.338 LM IR-DIM</German>
<Polish>.338 NM IR-DIM</Polish>
</Key>
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimDescription">
<English>Caliber: .338 Norma Magnum Tracer IR-DIM&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
<German>Kaliber: .338 Norma Magnum Leuchtspur IR-DIM&lt;br /&gt;Schuss: 130&lt;br /&gt;Verwendet für: SPMG</German>
<Polish>Kaliber: .338 Norma Magnum Smugacz IR-DIM&lt;br /&gt;Pociski: 130&lt;br /&gt;Używany w: SPMG</Polish>
</Key>
<Key ID="STR_ACE_130Rnd_338_Mag_APName">
<English>.338 NM 130Rnd AP Belt</English>
<German>.338 NM 130-Schuss-Gurt Hartkern</German>
<Polish>Taśma .338 NM 130rd AP</Polish>
</Key>
<Key ID="STR_ACE_130Rnd_338_Mag_APNameShort">
<English>.338 NM AP</English>
<German>.338 NM AP</German>
<Polish>.338 NM AP</Polish>
</Key>
<Key ID="STR_ACE_130Rnd_338_Mag_APDescription">
<English>Caliber: .338 Norma Magnum AP&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
<German>Kaliber: .338 Norma Magnum Hartkern&lt;br /&gt;Schuss: 130&lt;br /&gt;Verwendet für: SPMG</German>
<Polish>Kaliber: .338 Norma Magnum AP&lt;br /&gt;Pociski: 130&lt;br /&gt;Używane w: SPMG</Polish>
</Key>
<!-- 9.3x64mm 10Rnd -->
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerName">
<English>9.3mm 10Rnd Tracer Mag</English>
<German>9,3mm 10-Schuss-Magazin Leuchtspur</German>
<Polish>Magazynek 9.3mm 10rd Smugacz</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerNameShort">
<English>9.3mm Tracer</English>
<German>9,3mm Leuchtspur</German>
<Polish>9,3mm Smugacz</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerDescription">
<English>Caliber: 9.3x64mm Tracer&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
<German>Kaliber: 9,3x64mm Leuchtspur&lt;br /&gt;Schuss: 10&lt;br /&gt;Verwendet für: Cyrus</German>
<Polish>Kaliber: 9,3 x 64 mm Smugacz&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimName">
<English>9.3mm 10Rnd Tracer IR-DIM Mag</English>
<German>9,3mm 10-Schuss-Magazin Leuchtspur IR-DIM</German>
<Polish>Magazynek 9,3mm 10rd Smugacz IR-DIM</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimNameShort">
<English>9.3mm IR-DIM</English>
<German>9,3mm IR-DIM</German>
<Polish>9,3mm IR-DIM</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimDescription">
<English>Caliber: 9.3x64mm Tracer IR-DIM&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
<German>Kaliber: 9,3x64mm Leuchtspur IR-DIM&lt;br /&gt;Schuss: 10&lt;br /&gt;Verwendet für: Cyrus</German>
<Polish>Kaliber: 9,3 x 64 mm Smugacz IR-DIM&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APName">
<English>9.3mm 10Rnd AP Mag</English>
<German>9,3mm 10-Schuss-Magazin Hartkern</German>
<Polish>Magazynek 9,3mm 10rd AP</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APNameShort">
<English>9.3mm AP</English>
<German>9,3mm AP</German>
<Polish>9,3mm AP</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APDescription">
<English>Caliber: 9.3x64mm AP&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
<German>Kaliber: 9,3x64mm Hartkern&lt;br /&gt;Schuss: 10&lt;br /&gt;Verwendet für: Cyrus</German>
<Polish>Kaliber: 9,3 x 64 mm AP&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_SDName">
<English>9.3mm 10Rnd SD Mag</English>
<German>9,3mm 10-Schuss-Magazin Unterschall</German>
<Polish>Magazynek 9,3mm 10rd SD</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_SDNameShort">
<English>9.3mm SD</English>
<German>9,3mm SD</German>
<Polish>9,3mm SD</Polish>
</Key>
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_SDDescription">
<English>Caliber: 9.3x64mm SD&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
<German>Kaliber: 9,3x64mm Unterschall&lt;br /&gt;Schuss: 10&lt;br /&gt;Verwendet für: Cyrus</German>
<Polish>Kaliber: 9,3 x 64 mm SD&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
</Key>
<!-- 9.3x64mm 150Rnd Belt-->
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerName">
<English>9.3mm 150Rnd Tracer Belt</English>
<German>9,3mm 150-Schuss-Gurt Leuchtspur</German>
<Polish>Taśma 9,3mm 150rd Smugacz</Polish>
</Key>
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerNameShort">
<English>9.3mm Tracer</English>
<German>9,3mm Leuchtspur</German>
<Polish>9,3mm Smugacz</Polish>
</Key>
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerDescription">
<English>Caliber: 9.3x64mm Tracer&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
<German>Kaliber: 9,3x64mm Leuchtspur&lt;br /&gt;Schuss: 150&lt;br /&gt;Verwendet für: Navid</German>
<Polish>Kaliber: 9,3 x 64 mm Smugacz&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
</Key>
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimName">
<English>9.3mm 150Rnd Tracer IR-DIM Belt</English>
<German>9,3mm 150-Schuss-Gurt Leuchtspur IR-DIM</German>
<Polish>Taśma 9,3mm 150rd Smugacz IR-DIM</Polish>
</Key>
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimNameShort">
<English>9.3mm IR-DIM</English>
<German>9,3mm IR-DIM</German>
<Polish>9,3mm IR-DIM</Polish>
</Key>
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimDescription">
<English>Caliber: 9.3x64mm Tracer IR-DIM&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
<German>Kaliber: 9,3x64mm Leuchtspur IR-DIM&lt;br /&gt;Schuss: 150&lt;br /&gt;Verwendet für: Navid</German>
<Polish>Kaliber: 9,3 x 64 mm Smugacz IR-DIM&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
</Key>
<Key ID="STR_ACE_150Rnd_93x64_Mag_APName">
<English>9.3mm 150Rnd AP Belt</English>
<German>9,3mm 150-Schuss-Gurt Hartkern</German>
<Polish>Taśma 9,3mm 150rd AP</Polish>
</Key>
<Key ID="STR_ACE_150Rnd_93x64_Mag_APNameShort">
<English>9.3mm AP</English>
<German>9,3mm AP</German>
<Polish>9,3mm AP</Polish>
</Key>
<Key ID="STR_ACE_150Rnd_93x64_Mag_APDescription">
<English>Caliber: 9.3x64mm AP&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
<German>Kaliber: 9,3x64mm Hartkern&lt;br /&gt;Schuss: 150&lt;br /&gt;Verwendet für: Navid</German>
<Polish>Kaliber: 9,3 x 64 mm AP&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
</Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2015-04-10 -->
<Project name="ACE"> <Project name="ACE">
<Package name="Map"> <Package name="Map">
<Key ID="STR_ACE_MapTools_Name"> <Key ID="STR_ACE_MapTools_Name">
@ -8,7 +7,7 @@
<French>Outils de navigation</French> <French>Outils de navigation</French>
<Polish>Narzędzia nawigacyjne</Polish> <Polish>Narzędzia nawigacyjne</Polish>
<German>Kartenwerkzeug</German> <German>Kartenwerkzeug</German>
<Czech>Pomůcky k Mapě</Czech> <Czech>Pomůcky k mapě</Czech>
<Italian>Strumenti Cartografici</Italian> <Italian>Strumenti Cartografici</Italian>
<Portuguese>Ferramentas de Mapa</Portuguese> <Portuguese>Ferramentas de Mapa</Portuguese>
<Hungarian>Térképészeti eszközök</Hungarian> <Hungarian>Térképészeti eszközök</Hungarian>
@ -32,7 +31,7 @@
<French>Outils de navigation</French> <French>Outils de navigation</French>
<Polish>Narzędzia nawigacyjne</Polish> <Polish>Narzędzia nawigacyjne</Polish>
<German>Kartenwerkzeug</German> <German>Kartenwerkzeug</German>
<Czech>Pomůcky k Mapě</Czech> <Czech>Pomůcky k mapě</Czech>
<Italian>Strumenti Cartografici</Italian> <Italian>Strumenti Cartografici</Italian>
<Portuguese>Ferramentas de Mapa</Portuguese> <Portuguese>Ferramentas de Mapa</Portuguese>
<Hungarian>Térképészeti eszközök</Hungarian> <Hungarian>Térképészeti eszközök</Hungarian>

View File

@ -102,4 +102,7 @@ GVAR(IVBags) = [];
call FUNC(parseConfigForInjuries); call FUNC(parseConfigForInjuries);
GVAR(HITPOINTS) = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
GVAR(SELECTIONS) = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"];
ADDON = true; ADDON = true;

View File

@ -17,7 +17,7 @@
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit", "_selection", "_damage", "_shooter", "_projectile", "_damageReturn", "_hitPoints", "_typeOfDamage"]; private ["_unit", "_selection", "_damage", "_shooter", "_projectile", "_damageReturn", "_typeOfDamage"];
_unit = _this select 0; _unit = _this select 0;
_selection = _this select 1; _selection = _this select 1;
_damage = _this select 2; _damage = _this select 2;
@ -32,8 +32,7 @@ if (typeName _projectile == "OBJECT") then {
}; };
// If the damage is being weird, we just tell it to fuck off. // If the damage is being weird, we just tell it to fuck off.
_hitSelections = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]; if !(_selection in (GVAR(SELECTIONS) + [""])) exitWith {0};
if !(_selection in (_hitSelections + [""])) exitWith {0};
_damageReturn = _damage; _damageReturn = _damage;
if (GVAR(level) < 2) then { if (GVAR(level) < 2) then {
@ -46,8 +45,7 @@ if (GVAR(level) >= 2) then {
// lets use basic for the time being.. // lets use basic for the time being..
_damageReturn = _this call FUNC(handleDamage_basic); _damageReturn = _this call FUNC(handleDamage_basic);
}; };
_newDamage = _this call FUNC(handleDamage_caching);
[_unit, _selection, _damage, _source, _projectile] call FUNC(handleDamage_caching);
if (_damageReturn > 0.9) then { if (_damageReturn > 0.9) then {
@ -59,12 +57,6 @@ if (GVAR(level) >= 2) then {
_minLethalDamage = GVAR(minLethalDamages) select _typeIndex; _minLethalDamage = GVAR(minLethalDamages) select _typeIndex;
}; };
_hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
_newDamage = _damage - (damage _unit);
if (_selection in _hitSelections) then {
_newDamage = _damage - (_unit getHitPointDamage (_hitPoints select (_hitSelections find _selection)));
};
if ((_minLethalDamage <= _newDamage) && {[_unit, [_selection] call FUNC(selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)} && {_selection in ["", "head", "body"]}) then { if ((_minLethalDamage <= _newDamage) && {[_unit, [_selection] call FUNC(selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)} && {_selection in ["", "head", "body"]}) then {
if ([_unit] call FUNC(setDead)) then { if ([_unit] call FUNC(setDead)) then {
_damageReturn = 1; _damageReturn = 1;

View File

@ -25,21 +25,21 @@ _selectionName = _this select 1;
_amountOfDamage = _this select 2; _amountOfDamage = _this select 2;
_sourceOfDamage = _this select 3; _sourceOfDamage = _this select 3;
_typeOfProjectile = _this select 4; _typeOfProjectile = _this select 4;
_newDamage = _this select 5;
// Most likely taking exessive fire damage. Lets exit. // Most likely taking exessive fire damage. Lets exit.
if (isNull _sourceOfDamage && (_selectionName == "head" || isBurning _unit) && _typeOfProjectile == "" && vehicle _unit == _unit) exitwith { if (isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) exitwith {
0 0
}; };
_typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage); _typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage);
_part = [_selectionName] call FUNC(selectionNameToNumber); _part = [_selectionName] call FUNC(selectionNameToNumber);
_hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; _hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
// Sorting out the damage // Sorting out the damage
_damageBodyParts = _unit getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; _damageBodyParts = _unit getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]];
_newDamage = _amountOfDamage - (_unit getHitPointDamage (_hitPoints select _part));
_damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage]; _damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage];
_unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true];
[_unit] call FUNC(handleDamage_advancedSetDamage); [_unit] call FUNC(handleDamage_advancedSetDamage);
[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_wounds); [_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_wounds);

View File

@ -16,9 +16,7 @@
private ["_unit", "_bodyStatus", "_headDamage", "_torsoDamage", "_handsDamage", "_legsDamage"]; private ["_unit", "_bodyStatus", "_headDamage", "_torsoDamage", "_handsDamage", "_legsDamage"];
_unit = _this select 0; _unit = _this select 0;
if (!local _unit) exitwith { if (!local _unit) exitwith {};
// execute only local
};
_bodyStatus = _unit getvariable [QGVAR(bodyPartStatus),[0,0,0,0,0,0]]; _bodyStatus = _unit getvariable [QGVAR(bodyPartStatus),[0,0,0,0,0,0]];
// ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"] // ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]

View File

@ -42,15 +42,25 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo), -3]) + 2) then {
_unit setVariable [QGVAR(damages), []]; _unit setVariable [QGVAR(damages), []];
_unit setVariable [QGVAR(structDamage), 0]; _unit setVariable [QGVAR(structDamage), 0];
_unit setVariable [QGVAR(preventDeath), false]; _unit setVariable [QGVAR(preventDeath), false];
// Assign orphan structural damage to torso
[{
private ["_unit", "_damagesum"];
_unit = _this select 0;
_damagesum = (_unit getHitPointDamage "HitHead") +
(_unit getHitPointDamage "HitBody") +
(_unit getHitPointDamage "HitLeftArm") +
(_unit getHitPointDamage "HitRightArm") +
(_unit getHitPointDamage "HitLeftLeg") +
(_unit getHitPointDamage "HitRightLeg");
if (_damagesum < 0.06 and damage _unit > 0.06 and alive _unit) then {
_unit setHitPointDamage ["HitBody", damage _unit];
};
}, [_unit], 2, 0.1] call EFUNC(common,waitAndExecute);
}; };
_hitSelections = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"];
_hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
_newDamage = _damage - (damage _unit); _newDamage = _damage - (damage _unit);
if (_selectionName in _hitSelections) then { if (_selectionName in GVAR(SELECTIONS)) then {
_newDamage = _damage - (_unit getHitPointDamage (_hitPoints select (_hitSelections find _selectionName))); _newDamage = _damage - (_unit getHitPointDamage (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName)));
}; };
_damage = _damage - _newDamage; _damage = _damage - _newDamage;
@ -61,7 +71,7 @@ if (((velocity _unit) select 2 < -5) and (vehicle _unit == _unit)) then {
_unit setVariable [QGVAR(isFalling), true]; _unit setVariable [QGVAR(isFalling), true];
}; };
if (_unit getVariable [QGVAR(isFalling), false] and !(_selectionName in ["", "leg_l", "leg_r"])) exitWith { if (_unit getVariable [QGVAR(isFalling), false] and !(_selectionName in ["", "leg_l", "leg_r"])) exitWith {
(_unit getHitPointDamage (_hitPoints select (_hitSelections find _selectionName))) max 0.01; (_unit getHitPointDamage (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName))) max 0.01;
}; };
if (_unit getVariable [QGVAR(isFalling), false]) then { if (_unit getVariable [QGVAR(isFalling), false]) then {
_newDamage = _newDamage * 0.7; _newDamage = _newDamage * 0.7;
@ -85,12 +95,12 @@ if (_selectionName != "" and !(_unit getVariable QGVAR(isFalling))) then {
// Make entry unfindable // Make entry unfindable
_cache_projectiles set [_index, objNull]; _cache_projectiles set [_index, objNull];
_cache_projectiles pushBack _projectile; _cache_projectiles pushBack _projectile;
_cache_hitpoints pushBack (_hitPoints select (_hitSelections find _selectionName)); _cache_hitpoints pushBack (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName));
_cache_damages pushBack _newDamage; _cache_damages pushBack _newDamage;
}; };
} else { } else {
_cache_projectiles pushBack _projectile; _cache_projectiles pushBack _projectile;
_cache_hitpoints pushBack (_hitPoints select (_hitSelections find _selectionName)); _cache_hitpoints pushBack (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName));
_cache_damages pushBack _newDamage; _cache_damages pushBack _newDamage;
}; };
_unit setVariable [QGVAR(projectiles), _cache_projectiles]; _unit setVariable [QGVAR(projectiles), _cache_projectiles];
@ -109,30 +119,12 @@ if (_selectionName == "") then {
}; };
}; };
// Assign orphan structural damage to torso
[{
private ["_unit", "_damagesum"];
_unit = _this select 0;
_damagesum = (_unit getHitPointDamage "HitHead") +
(_unit getHitPointDamage "HitBody") +
(_unit getHitPointDamage "HitLeftArm") +
(_unit getHitPointDamage "HitRightArm") +
(_unit getHitPointDamage "HitLeftLeg") +
(_unit getHitPointDamage "HitRightLeg");
if (_damagesum < 0.06 and damage _unit > 0.06 and alive _unit) then {
_unit setHitPointDamage ["HitBody", damage _unit];
};
}, [_unit], 2, 0.1] call EFUNC(common,waitAndExecute);
if (_selectionName == "") then { if (_selectionName == "") then {
_damage = _damage + (_unit getVariable QGVAR(structDamage)); _damage = _damage + (_unit getVariable QGVAR(structDamage));
} else { } else {
_damage = _damage + _newDamage; _damage = _damage + _newDamage;
}; };
// Leg Damage // Leg Damage
_legdamage = (_unit getHitPointDamage "HitLeftLeg") + (_unit getHitPointDamage "HitRightLeg"); _legdamage = (_unit getHitPointDamage "HitLeftLeg") + (_unit getHitPointDamage "HitRightLeg");
if (_selectionName == "leg_l") then { if (_selectionName == "leg_l") then {
@ -143,9 +135,9 @@ if (_selectionName == "leg_r") then {
}; };
if (_legdamage >= LEGDAMAGETRESHOLD1) then { if (_legdamage >= LEGDAMAGETRESHOLD1) then {
if (_unit getHitPointDamage "HitLegs" != 1) then {_unit setHitPointDamage ["HitLegs", 1]}; _unit setHitPointDamage ["HitLegs", 1];
} else { } else {
if (_unit getHitPointDamage "HitLegs" != 0) then {_unit setHitPointDamage ["HitLegs", 0]}; _unit setHitPointDamage ["HitLegs", 0];
}; };
// @todo: force prone for completely fucked up legs. // @todo: force prone for completely fucked up legs.
@ -160,9 +152,9 @@ if (_selectionName == "hand_r") then {
}; };
if (_armdamage >= ARMDAMAGETRESHOLD1) then { if (_armdamage >= ARMDAMAGETRESHOLD1) then {
if (_unit getHitPointDamage "HitHands" != 1) then {_unit setHitPointDamage ["HitHands", 1]}; _unit setHitPointDamage ["HitHands", 1];
} else { } else {
if (_unit getHitPointDamage "HitHands" != 0) then {_unit setHitPointDamage ["HitHands", 0]}; _unit setHitPointDamage ["HitHands", 0];
}; };
// @todo: Drop weapon for full damage. // @todo: Drop weapon for full damage.
@ -174,7 +166,6 @@ if (_selectionName == "") then {
_unit setVariable [QGVAR(pain), _pain min 1, true]; _unit setVariable [QGVAR(pain), _pain min 1, true];
}; };
// Unconsciousness // Unconsciousness
if (_selectionName == "" and if (_selectionName == "" and
_damage >= UNCONSCIOUSNESSTRESHOLD and _damage >= UNCONSCIOUSNESSTRESHOLD and

View File

@ -25,8 +25,8 @@ _damage = _this select 2;
_source = _this select 3; _source = _this select 3;
_projectile = _this select 4; _projectile = _this select 4;
_hitSelections = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]; _hitSelections = GVAR(SELECTIONS);
_hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; _hitPoints = GVAR(HITPOINTS);
// Calculate change in damage. // Calculate change in damage.
_newDamage = _damage - (damage _unit); _newDamage = _damage - (damage _unit);
@ -34,18 +34,10 @@ if (_selectionName in _hitSelections) then {
_newDamage = _damage - (_unit getHitPointDamage (_hitPoints select (_hitSelections find _selectionName))); _newDamage = _damage - (_unit getHitPointDamage (_hitPoints select (_hitSelections find _selectionName)));
}; };
//_damage = _damage + _newDamage;
// we want to move damage to another selection; have to do it ourselves.
// this is only the case for limbs, so this will not impact the killed EH.
if (_selectionName != (_this select 1)) then {
_unit setHitPointDamage [_hitPoints select (_hitSelections find _selectionName), _damage + _newDamage];
_newDamage = 0;
};
// ??????
_damage = _damage + _newDamage;
// Check for vehicle crash // Check for vehicle crash
if (vehicle _unit != _unit && !(vehicle _unit isKindOf "StaticWeapon") && {isNull _source} && {_projectile == ""} && {_selectionName == ""}) then { if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _source} && {_projectile == ""} && {_selectionName == ""}) then {
if (missionNamespace getvariable [QGVAR(allowVehicleCrashDamage), true]) then { if (missionNamespace getvariable [QGVAR(allowVehicleCrashDamage), true]) then {
_selectionName = _hitSelections select (floor(random(count _hitSelections))); _selectionName = _hitSelections select (floor(random(count _hitSelections)));
_projectile = "vehiclecrash"; _projectile = "vehiclecrash";
@ -54,10 +46,11 @@ if (vehicle _unit != _unit && !(vehicle _unit isKindOf "StaticWeapon") && {isNul
// From AGM medical: // From AGM medical:
// Exclude falling damage to everything other than legs; reduce structural damage. // Exclude falling damage to everything other than legs; reduce structural damage.
if (((velocity _unit) select 2 < -5) && (vehicle _unit == _unit)) then { if (((velocity _unit) select 2 < -5) && {(vehicle _unit == _unit)}) then {
_unit setVariable [QGVAR(isFalling), True]; _unit setVariable [QGVAR(isFalling), True];
}; };
if (_unit getVariable [QGVAR(isFalling), false] && !(_selectionName in ["", "leg_l", "leg_r"])) exitWith {};
if (_unit getVariable [QGVAR(isFalling), false] && {!(_selectionName in ["", "leg_l", "leg_r"])}) exitWith {};
if (_unit getVariable [QGVAR(isFalling), false]) then { if (_unit getVariable [QGVAR(isFalling), false]) then {
_newDamage = _newDamage * 0.7; _newDamage = _newDamage * 0.7;
}; };
@ -69,21 +62,16 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t
// handle the cached damages 3 frames later // handle the cached damages 3 frames later
[{ [{
private ["_args","_unit","_frameNo"]; private ["_args", "_params"];
_args = _this select 0; _args = _this select 0;
_unit = _args select 0;
_frameNo = _args select 1;
if (diag_frameno > _frameNo + 2) then { if (diag_frameno > (_args select 1) + 2) then {
_cache_projectiles = _unit getVariable [QGVAR(cachedProjectiles), []]; _cache_params = (_args select 0) getVariable [QGVAR(cachedHandleDamageParams), []];
_cache_hitpoints = _unit getVariable [QGVAR(cachedHitPoints), []]; _cache_damages = (_args select 0) getVariable QGVAR(cachedDamages);
_cache_damages = _unit getVariable [QGVAR(cachedDamages), []];
_cache_params = _unit getVariable [QGVAR(cachedHandleDamageParams), []];
{ {
if (typeName _x == typeName "") then { _params = _x + [_cache_damages select _foreachIndex];
(_cache_params select _foreachIndex) call FUNC(handleDamage_advanced); _params call FUNC(handleDamage_advanced);
}; }foreach _cache_params;
}foreach _cache_projectiles;
[(_this select 1)] call cba_fnc_removePerFrameHandler; [(_this select 1)] call cba_fnc_removePerFrameHandler;
}; };
}, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler; }, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler;
@ -94,52 +82,54 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t
_unit setVariable [QGVAR(cachedHandleDamageParams), []]; _unit setVariable [QGVAR(cachedHandleDamageParams), []];
}; };
// Make sure there's only one damaged selection per projectile per frame.
_cache_projectiles = _unit getVariable QGVAR(cachedProjectiles);
_cache_hitpoints = _unit getVariable QGVAR(cachedHitPoints);
_cache_damages = _unit getVariable QGVAR(cachedDamages);
_cache_params = _unit getVariable QGVAR(cachedHandleDamageParams);
// Caching of the damage events // Caching of the damage events
if (_selectionName != "") then { if (_selectionName != "") then {
_cache_projectiles = _unit getVariable QGVAR(cachedProjectiles);
// Check if the current projectile has already been handled once
if (_projectile in _cache_projectiles) then {
private ["_index","_otherDamage"]; private ["_index","_otherDamage"];
// if it has been handled, find the index in the cache
_index = _cache_projectiles find _projectile; _index = _cache_projectiles find _projectile;
// Check if the current projectile has already been handled once
if (_index >= 0) exitwith {
_cache_damages = _unit getVariable QGVAR(cachedDamages);
// Find the previous damage this projectile has done // Find the previous damage this projectile has done
_otherDamage = (_cache_damages select _index); _otherDamage = (_cache_damages select _index);
// Take the highest damage of the two // Take the highest damage of the two
if (_otherDamage > _newDamage) then { if (_newDamage > _otherDamage) then {
_newDamage = 0; _cache_params = _unit getVariable QGVAR(cachedHandleDamageParams);
} else { _cache_hitpoints = _unit getVariable QGVAR(cachedHitPoints);
private ["_hitPoint", "_restore"]; private ["_hitPoint", "_restore"];
// Restore the damage before the previous damage was processed // Restore the damage before the previous damage was processed
_hitPoint = _cache_hitpoints select _index; _hitPoint = _cache_hitpoints select _index;
_restore = ((_unit getHitPointDamage _hitPoint) - _otherDamage) max 0; _restore = ((_unit getHitPointDamage _hitPoint) - _otherDamage) max 0;
_unit setHitPointDamage [_hitPoint, _restore]; _unit setHitPointDamage [_hitPoint, _restore];
// Make entry unfindable and add the new damage cache _cache_hitpoints set [_index, (_hitPoints select (_hitSelections find _selectionName))];
_cache_projectiles set [_index, objNull]; _cache_damages set [_index, _newDamage];
_cache_projectiles pushBack _projectile; _cache_params set[_index, _this];
_cache_hitpoints pushBack (_hitPoints select (_hitSelections find _selectionName));
_cache_damages pushBack _newDamage; _unit setVariable [QGVAR(cachedProjectiles), _cache_projectiles];
_cache_params pushBack [_unit, _selectionName, _damage, _source, _projectile]; _unit setVariable [QGVAR(cachedHitPoints), _cache_hitpoints];
_unit setVariable [QGVAR(cachedDamages), _cache_damages];
_unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params];
}; };
} else { };
_cache_hitpoints = _unit getVariable QGVAR(cachedHitPoints);
_cache_damages = _unit getVariable QGVAR(cachedDamages);
_cache_params = _unit getVariable QGVAR(cachedHandleDamageParams);
// This is an unhandled projectile // This is an unhandled projectile
_cache_projectiles pushBack _projectile; _cache_projectiles pushBack _projectile;
_cache_hitpoints pushBack (_hitPoints select (_hitSelections find _selectionName)); _cache_hitpoints pushBack (_hitPoints select (_hitSelections find _selectionName));
_cache_damages pushBack _newDamage; _cache_damages pushBack _newDamage;
_cache_params pushBack [_unit, _selectionName, _damage, _source, _projectile]; _cache_params pushBack _this;
};
// Store the new cached values
_unit setVariable [QGVAR(cachedProjectiles), _cache_projectiles];
_unit setVariable [QGVAR(cachedHitPoints), _cache_hitpoints];
_unit setVariable [QGVAR(cachedDamages), _cache_damages];
_unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params];
}; };
// Store the new cached values _newDamage;
_unit setVariable [QGVAR(cachedProjectiles), _cache_projectiles];
_unit setVariable [QGVAR(cachedHitPoints), _cache_hitpoints];
_unit setVariable [QGVAR(cachedDamages), _cache_damages];
_unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params];

View File

@ -52,10 +52,10 @@ _allPossibleInjuries = [];
// Check if the damage is higher as the min damage for the specific injury // Check if the damage is higher as the min damage for the specific injury
if (_damage >= _minDamage && {_damage <= _maxDamage || _maxDamage < 0}) then { if (_damage >= _minDamage && {_damage <= _maxDamage || _maxDamage < 0}) then {
_classType = _x select 0; //_classType = _x select 0;
_selections = _x select 1; _selections = _x select 1;
_bloodLoss = _x select 2; //_bloodLoss = _x select 2;
_pain = _x select 3; //_pain = _x select 3;
// Check if the injury can be applied to the given selection name // Check if the injury can be applied to the given selection name
if ("All" in _selections || _selectionName in _selections) then { if ("All" in _selections || _selectionName in _selections) then {
@ -73,9 +73,7 @@ _allPossibleInjuries = [];
}foreach _allInjuriesForDamageType; }foreach _allInjuriesForDamageType;
// No possible wounds available for this damage type or damage amount. // No possible wounds available for this damage type or damage amount.
if (_highestPossibleSpot < 0) exitwith { if (_highestPossibleSpot < 0) exitwith {};
};
// Administration for open wounds and ids // Administration for open wounds and ids
_openWounds = _unit getvariable[QGVAR(openWounds), []]; _openWounds = _unit getvariable[QGVAR(openWounds), []];
@ -125,7 +123,7 @@ _woundsCreated = [];
_painToAdd = _painToAdd + (_toAddInjury select 3); _painToAdd = _painToAdd + (_toAddInjury select 3);
}; };
}; };
}foreach (_injuryTypeInfo select 0); }foreach (_injuryTypeInfo select 0); // foreach damage thresholds
_unit setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; _unit setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC];

View File

@ -52,7 +52,7 @@ if (animationState _unit in ["ladderriflestatic","laddercivilstatic"]) then {
}; };
if (vehicle _unit == _unit) then { if (vehicle _unit == _unit) then {
if (primaryWeapon _unit == "") then { if (primaryWeapon _unit == "") then {
_unit addWeapon "ACE_fakeWeapon"; _unit addWeapon "ACE_FakePrimaryWeapon";
}; };
_unit selectWeapon (primaryWeapon _unit); _unit selectWeapon (primaryWeapon _unit);
_unit switchMove ""; _unit switchMove "";
@ -67,7 +67,8 @@ _unit setUnitPos "DOWN";
[_unit, true] call EFUNC(common,disableAI); [_unit, true] call EFUNC(common,disableAI);
// So the AI does not get stuck, we are moving the unit to a temp group on its own. // So the AI does not get stuck, we are moving the unit to a temp group on its own.
[_unit, true, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide); //Unconscious units shouldn't be put in another group #527:
// [_unit, true, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
[_unit, QGVAR(unconscious), true] call EFUNC(common,setCaptivityStatus); [_unit, QGVAR(unconscious), true] call EFUNC(common,setCaptivityStatus);
[_unit, [_unit] call EFUNC(common,getDeathAnim), 1, true] call EFUNC(common,doAnimation); [_unit, [_unit] call EFUNC(common,getDeathAnim), 1, true] call EFUNC(common,doAnimation);
@ -114,7 +115,8 @@ _startingTime = time;
[_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus); [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
// Swhich the unit back to its original group // Swhich the unit back to its original group
[_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide); //Unconscious units shouldn't be put in another group #527:
// [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
[_unit, false] call EFUNC(common,disableAI); [_unit, false] call EFUNC(common,disableAI);
_unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP) _unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP)

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
* Updates the display (several times a second) called from the pfeh * Updates the display (several times a second) called from the pfeh
* *
@ -53,7 +53,7 @@ case (APP_MODE_INFODISPLAY): {
_compassAngleText = if (GVAR(settingUseMils)) then { _compassAngleText = if (GVAR(settingUseMils)) then {
[(floor ((6400 / 360) * (getDir ace_player))), 4, 0] call CBA_fnc_formatNumber; [(floor ((6400 / 360) * (getDir ace_player))), 4, 0] call CBA_fnc_formatNumber;
} else { } else {
([(floor (getDir ace_player)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 ([(floor (getDir ace_player)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8
}; };
(_display displayCtrl IDC_MODEDISPLAY_HEADINGNUM) ctrlSetText _compassAngleText; (_display displayCtrl IDC_MODEDISPLAY_HEADINGNUM) ctrlSetText _compassAngleText;
@ -92,7 +92,7 @@ case (APP_MODE_INFODISPLAY): {
_bearingText = if (GVAR(settingUseMils)) then { _bearingText = if (GVAR(settingUseMils)) then {
[(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber; [(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber;
} else { } else {
([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 ([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8
}; };
_2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000; _2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000;
_rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)]; _rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)];
@ -112,7 +112,7 @@ case (APP_MODE_COMPASS): {
_compassAngleText = if (GVAR(settingUseMils)) then { _compassAngleText = if (GVAR(settingUseMils)) then {
[(floor ((6400 / 360) * (getDir ace_player))), 4, 0] call CBA_fnc_formatNumber; [(floor ((6400 / 360) * (getDir ace_player))), 4, 0] call CBA_fnc_formatNumber;
} else { } else {
([(floor (getDir ace_player)), 3, 1] call CBA_fnc_formatNumber) + "°M" //degree symbol is in UTF-8 ([(floor (getDir ace_player)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8
}; };
(_display displayCtrl IDC_MODECOMPASS_HEADING) ctrlSetText _compassAngleText; (_display displayCtrl IDC_MODECOMPASS_HEADING) ctrlSetText _compassAngleText;
@ -149,7 +149,7 @@ case (APP_MODE_COMPASS): {
_bearingText = if (GVAR(settingUseMils)) then { _bearingText = if (GVAR(settingUseMils)) then {
[(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber; [(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber;
} else { } else {
([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°M" //degree symbol is in UTF-8 ([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8
}; };
_2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000; _2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000;
_rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)]; _rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)];

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler. -->
<Project name="ACE"> <Project name="ACE">
<Package name="microdagr"> <Package name="microdagr">
<Key ID="STR_ACE_microdagr_itemName"> <Key ID="STR_ACE_microdagr_itemName">
@ -6,35 +7,49 @@
<German>MicroDAGR GPS</German> <German>MicroDAGR GPS</German>
<Spanish>GPS MicroDAGR</Spanish> <Spanish>GPS MicroDAGR</Spanish>
<Russian>MicroDAGR GPS</Russian> <Russian>MicroDAGR GPS</Russian>
<Czech>MicroDAGR GPS</Czech>
<Polish>MicroDAGR GPS</Polish>
<French>GPS MicroDAGR</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_itemDescription"> <Key ID="STR_ACE_microdagr_itemDescription">
<English>MicroDAGR advanced GPS receiver</English> <English>MicroDAGR advanced GPS receiver</English>
<German>MicroDAGR - Fortgeschrittener GPS-Empfänger</German> <German>MicroDAGR verbesserter GPS Empfänger</German>
<Spanish>Receptor avanzado GPS MicroDAGR</Spanish> <Spanish>Receptor avanzado GPS MicroDAGR</Spanish>
<Russian>Многофункциональный GPS-приёмник.</Russian> <Russian>Многофункциональный GPS-приёмник.</Russian>
<Polish>Zaawansowany odbiornik GPS MicroDAGR</Polish>
<French>MicroDAGR un GPS avancé</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_settingUseMils"> <Key ID="STR_ACE_microdagr_settingUseMils">
<English>Angular Unit:</English> <English>Angular Unit:</English>
<Spanish>Unidad angular:</Spanish> <Spanish>Unidad angular:</Spanish>
<Russian>Угловые единицы:</Russian> <Russian>Угловые единицы:</Russian>
<Polish>Jednostka kątowa:</Polish>
<French>Unité angulaire:</French>
<German>Winkeleinheit:</German>
</Key> </Key>
<Key ID="STR_ACE_microdagr_settingMils"> <Key ID="STR_ACE_microdagr_settingMils">
<English>Mils</English> <English>Mils</English>
<German>Mils</German> <German>Mils</German>
<Spanish>Mils</Spanish> <Spanish>Mils</Spanish>
<Russian>Тысячные</Russian> <Russian>Тысячные</Russian>
<Polish>Tysiączne</Polish>
<French>Mils</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_settingShowWP"> <Key ID="STR_ACE_microdagr_settingShowWP">
<English>Show Waypoints On Map:</English> <English>Show Waypoints On Map:</English>
<German>Zeige Wegpunkte auf Karte</German> <German>Zeige Wegpunkte auf Karte</German>
<Spanish>Mostrar puntos de ruta en el mapa:</Spanish> <Spanish>Mostrar puntos de ruta en el mapa:</Spanish>
<Russian>Показывать маршрутные точки на карте:</Russian> <Russian>Показывать маршрутные точки на карте:</Russian>
<Polish>Pokaż PT na mapie:</Polish>
<French>Afficher les points de passage sur la carte :</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_settingDegrees"> <Key ID="STR_ACE_microdagr_settingDegrees">
<English>Degrees</English> <English>Degrees</English>
<German>Grad</German> <German>Grad</German>
<Spanish>Grados</Spanish> <Spanish>Grados</Spanish>
<Russian>Градусы</Russian> <Russian>Градусы</Russian>
<Polish>Stopnie</Polish>
<French>Degrés</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_settingOn"> <Key ID="STR_ACE_microdagr_settingOn">
<English>On</English> <English>On</English>
@ -62,72 +77,101 @@
<English>Enter Grid Cords:</English> <English>Enter Grid Cords:</English>
<Spanish>Introducir coordenadas de cuadrícula:</Spanish> <Spanish>Introducir coordenadas de cuadrícula:</Spanish>
<Russian>Введите координаты:</Russian> <Russian>Введите координаты:</Russian>
<Polish>Wprowadź współrzędne:</Polish>
<French>Entrer Grid Cords :</French>
<German>Koordinaten eingeben:</German>
</Key> </Key>
<Key ID="STR_ACE_microdagr_wpEnterName"> <Key ID="STR_ACE_microdagr_wpEnterName">
<English>Name of [%1]</English> <English>Name of [%1]</English>
<German>Name von [%1]</German> <German>Name von [%1]</German>
<Spanish>Nombre de [%1]</Spanish> <Spanish>Nombre de [%1]</Spanish>
<Russian>Название [%1]</Russian> <Russian>Название [%1]</Russian>
<Polish>Nazwa [%1]</Polish>
<French>Nom de [%1]</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_controlMGRS"> <Key ID="STR_ACE_microdagr_controlMGRS">
<English>MGRS-New</English> <English>MGRS-New</English>
<German>MGRS-NEU</German> <German>MGRS-NEU</German>
<Spanish>Nuevo-MGRS</Spanish> <Spanish>Nuevo-MGRS</Spanish>
<Russian>MGRS-Новая</Russian> <Russian>MGRS-Новая</Russian>
<Polish>MGRS-Nowy</Polish>
<French>Nouveau MGRS</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_controlWGD"> <Key ID="STR_ACE_microdagr_controlWGD">
<English>WGD</English> <English>WGD</English>
<German>WGD</German> <German>WGD</German>
<Spanish>WGD</Spanish> <Spanish>WGD</Spanish>
<Russian>WGD</Russian> <Russian>WGD</Russian>
<Polish>WGD</Polish>
<French>WGD</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_controlRange"> <Key ID="STR_ACE_microdagr_controlRange">
<English>Range:</English> <English>Range:</English>
<Spanish>Distancia</Spanish> <Spanish>Distancia:</Spanish>
<German>Reichweite:</German> <German>Reichweite:</German>
<Russian>Дистанция:</Russian> <Russian>Дистанция:</Russian>
<Polish>Dystans:</Polish>
<French>Distance :</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_compasDirection"> <Key ID="STR_ACE_microdagr_compasDirection">
<English>Compass Direction</English> <English>Compass Direction</English>
<German>Kompass Richtung</German> <German>Kompass Richtung</German>
<Spanish>Dirección de la brújula</Spanish> <Spanish>Dirección de la brújula</Spanish>
<Russian>Азимут</Russian> <Russian>Азимут</Russian>
<Polish>Azymut</Polish>
<French>Direction de la boussole</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_menuMark"> <Key ID="STR_ACE_microdagr_menuMark">
<English>Mark</English> <English>Mark</English>
<German>Markiere</German> <German>Markieren</German>
<Spanish>Marca</Spanish> <Spanish>Marca</Spanish>
<Russian>Отметка</Russian> <Russian>Отметка</Russian>
<Polish>Oznacz</Polish>
<French>Marqueur</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_menuWaypoints"> <Key ID="STR_ACE_microdagr_menuWaypoints">
<English>Waypoints</English> <English>Waypoints</English>
<Spanish>Puntos de ruta</Spanish> <Spanish>Puntos de ruta</Spanish>
<German>Wegpunkte</German> <German>Wegpunkte</German>
<Russian>Машрутные точки</Russian> <Russian>Машрутные точки</Russian>
<Czech>Waypointy</Czech>
<Polish>Punkty trasy</Polish>
<French>Point de passage</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_menuConnectTo"> <Key ID="STR_ACE_microdagr_menuConnectTo">
<English>Connect To</English> <English>Connect To</English>
<Spanish>Conectar a</Spanish> <Spanish>Conectar a</Spanish>
<Russian>Соединиться с </Russian> <Russian>Соединиться с </Russian>
<German>Verbinde zu</German> <German>Verbinde zu</German>
<Czech>Připojit k</Czech>
<Polish>Podłącz do</Polish>
<French>Connexion à</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_menuSettings"> <Key ID="STR_ACE_microdagr_menuSettings">
<English>Settings</English> <English>Settings</English>
<French>Paramètres</French>
<German>Einstellungen</German> <German>Einstellungen</German>
<Spanish>Configuración</Spanish> <Spanish>Configuración</Spanish>
<Russian>Настройки</Russian> <Russian>Настройки</Russian>
<Czech>Nastavení</Czech>
<Polish>Ustawienia</Polish>
</Key> </Key>
<Key ID="STR_ACE_microdagr_waypointsSet"> <Key ID="STR_ACE_microdagr_waypointsSet">
<English>SetWP</English> <English>SetWP</English>
<German>SetzeWP</German> <German>WP setzen</German>
<Spanish>Establecer PR</Spanish> <Spanish>Establecer PR</Spanish>
<Russian>Установить МТ</Russian> <Russian>Установить МТ</Russian>
<Czech>Nastavit WP</Czech>
<Polish>UstawPT</Polish>
</Key> </Key>
<Key ID="STR_ACE_microdagr_waypointsAdd"> <Key ID="STR_ACE_microdagr_waypointsAdd">
<English>Add</English> <English>Add</English>
<German>Hinzufügen</German> <German>Hinzufügen</German>
<Spanish>Añadir</Spanish> <Spanish>Añadir</Spanish>
<Russian>Добавить</Russian> <Russian>Добавить</Russian>
<Czech>Přidat</Czech>
<Polish>Dodaj</Polish>
<French>Ajouter</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_waypointsDelete"> <Key ID="STR_ACE_microdagr_waypointsDelete">
<English>Delete</English> <English>Delete</English>
@ -142,27 +186,38 @@
</Key> </Key>
<Key ID="STR_ACE_microdagr_toggleUnit"> <Key ID="STR_ACE_microdagr_toggleUnit">
<English>Toggle MicroDAGR Display Mode</English> <English>Toggle MicroDAGR Display Mode</English>
<German>Wechsle MircoDAGR Bildschirmmodus</German> <German>MicoDAGR Anzeigemodus wählen</German>
<Spanish>Conmutar modo de pantalla del MicroDAGR</Spanish> <Spanish>Conmutar modo de pantalla del MicroDAGR</Spanish>
<Russian>Сменить режим показа MicroDAGR</Russian> <Russian>Сменить режим показа MicroDAGR</Russian>
<Polish>Przełącz tryb wyświetlania MicroDAGR</Polish>
<French>Basculer sur l'affichage du MicroDAGR</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_show"> <Key ID="STR_ACE_microdagr_show">
<English>Show MicoDAGR</English> <English>Show MicoDAGR</English>
<German>Zeige MicroDAGR</German> <German>Zeige MicroDAGR</German>
<Spanish>Mostrar MicroDAGR</Spanish> <Spanish>Mostrar MicroDAGR</Spanish>
<Russian>Показать MicroDAGR</Russian> <Russian>Показать MicroDAGR</Russian>
<Czech>Ukázat MicroDAGR GPS</Czech>
<Polish>Pokaż MicroDAGR</Polish>
<French>Afficher le MicroDAGR</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_configure"> <Key ID="STR_ACE_microdagr_configure">
<English>Configure MicroDAGR</English> <English>Configure MicroDAGR</English>
<German>Stelle MicroDAGR ein</German> <German>Konfiguriere MicroDAGR</German>
<Spanish>Configurar MicroDAGR</Spanish> <Spanish>Configurar MicroDAGR</Spanish>
<Russian>Настроить MicroDAGR</Russian> <Russian>Настроить MicroDAGR</Russian>
<Czech>Konfigurovat MicroDAGR GPS</Czech>
<Polish>Konfiguruj MicroDAGR</Polish>
<French>Configurer le MicroDAGR</French>
</Key> </Key>
<Key ID="STR_ACE_microdagr_closeUnit"> <Key ID="STR_ACE_microdagr_closeUnit">
<English>Close MicroDAGR</English> <English>Close MicroDAGR</English>
<German>Schließe MicroDAGR</German> <German>Schließe MicroDAGR</German>
<Spanish>Cerrar MicroDAGR</Spanish> <Spanish>Cerrar MicroDAGR</Spanish>
<Russian>Закрыть MicroDAGR</Russian> <Russian>Закрыть MicroDAGR</Russian>
<Czech>Zavřít MicroDAGR GPS</Czech>
<Polish>Zamknij MicroDAGR</Polish>
<French>Fermer le MicroDAGR</French>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,17 +1,27 @@
class CfgVehicles { class CfgVehicles {
class Heli_Attack_01_base_F;
class B_Heli_Attack_01_F : Heli_Attack_01_base_F { class AllVehicles;
class Air: AllVehicles {
class Turrets;
};
class Helicopter: Air {
class Turrets { class Turrets {
class MainTurret; class MainTurret;
}; };
}; };
class Helicopter_Base_F: Helicopter {};
class Heli_Attack_01_base_F: Helicopter_Base_F {};
class B_Heli_Attack_01_F : Heli_Attack_01_base_F {
class Turrets: Turrets {
class MainTurret;
};
};
class ACE_Comanche_Test : B_Heli_Attack_01_F { class ACE_Comanche_Test : B_Heli_Attack_01_F {
displayName = "ACE_Comanche_Test"; displayName = "ACE_Comanche_Test";
author = "ACE Team"; author = "ACE Team";
class Library class Library {
{
libTextDesc = "ACE_Comanche_Test"; libTextDesc = "ACE_Comanche_Test";
}; };
class Turrets: Turrets { class Turrets: Turrets {
@ -21,4 +31,3 @@ class CfgVehicles {
}; };
}; };
}; };

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