fixed conflicts

This commit is contained in:
AKALegman 2015-06-10 20:03:00 +01:00
commit 5431ab5e01
117 changed files with 1967 additions and 239 deletions

View File

@ -65,7 +65,7 @@ Hamburger SV
Harakhti <shadowdragonphd@gmail.com>
havena <silveredenis@gmail.com>
Hawkins
jokoho48
jokoho482 <jokoho482@gmail.com>`
Jonpas <jonpas33@gmail.com>
Kavinsky <nmunozfernandez@gmail.com>
Kllrt <kllrtik@gmail.com>

Binary file not shown.

Binary file not shown.

View File

@ -1,13 +1,13 @@
class ACE_Settings {
class GVAR(allowHandcuffOwnSide) {
displayName = "$STR_ACE_Captives_ModuleSettings_handcuffSide_name";
description = "$STR_ACE_Captives_ModuleSettings_handcuffSide_description";
displayName = CSTRING(ModuleSettings_handcuffSide_name);
description = CSTRING(ModuleSettings_handcuffSide_description);
typeName = "BOOL";
value = 1;
};
class GVAR(allowSurrender) {
displayName = "$STR_ACE_Captives_ModuleSettings_allowSurrender_name";
description = "$STR_ACE_Captives_ModuleSettings_allowSurrender_description";
displayName = CSTRING(ModuleSettings_allowSurrender_name);
description = CSTRING(ModuleSettings_allowSurrender_description);
typeName = "BOOL";
value = 1;
};

View File

@ -179,7 +179,7 @@ class CfgVehicles {
class ACE_Module: Module_F {};
class GVAR(moduleSettings): ACE_Module {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
category = "ACE";
displayName = CSTRING(ModuleSettings_DisplayName);
function = QFUNC(moduleSettings);

View File

@ -140,7 +140,7 @@
<Spanish>Rendirse</Spanish>
<Portuguese>Render-se</Portuguese>
<Czech>Vzdát se</Czech>
<Polish>Poddaj się</Polish>
<Polish>Kapituluj</Polish>
<Russian>Сдаться</Russian>
<Hungarian>Megadás</Hungarian>
<Italian>Arrenditi</Italian>
@ -159,33 +159,45 @@
</Key>
<Key ID="STR_ACE_Captives_ModuleSurrender_DisplayName">
<English>Make Unit Surrender</English>
<Polish>Poddaj się!</Polish>
<Polish>Skapituluj jednostkę</Polish>
<Spanish>Hacer que la unidad se rinda</Spanish>
<German>Einheit kapitulieren lassen</German>
</Key>
<Key ID="STR_ACE_Captives_ModuleSurrender_Description">
<English>Sync a unit to make them surrender.&lt;br /&gt;Source: ace_captives</English>
<Polish>Zsynchronizuj z jednostką aby sprawić by się poddała&lt;br /&gt;Źródło: ace_captives</Polish>
<Polish>Zsynchronizuj z jednostką, aby skapitulowała.&lt;br /&gt;Źródło: ace_captives</Polish>
<Spanish>Sincroniza una unidad para hacer que se rinda.&lt;br /&gt;Fuente: ace_captives</Spanish>
<German>Einheit synchronisieren, um sie kapitulieren zu lassen.&lt;br /&gt;Quelle: ace_captives</German>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
<English>Captives Settings</English>
<Polish>Ustawienia więźniów</Polish>
<Spanish>Ajustes de prisioneros</Spanish>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_Description">
<English>Controls settings for surrender and cable ties</English>
<Polish>Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych</Polish>
<Spanish>Ajustes de control para rendición y precintos</Spanish>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_name">
<English>Can handcuff own side</English>
<Polish>Skuwanie sojuszników</Polish>
<Spanish>Se puede esposar el bando propio</Spanish>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_description">
<English>Can players cabletie units on their own side</English>
<Polish>Czy gracze mogą skuwać sojuszników?</Polish>
<Spanish>Pueden los jugadores esposar unidades en su propio bando</Spanish>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_name">
<English>Allow surrendering</English>
<Polish>Pozwól kapitulować</Polish>
<Spanish>Permitir rendición</Spanish>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_description">
<English>Players can surrender after holstering their weapon</English>
<Polish>Gracze mogą skapitulować po schowaniu swojej broni do kabury</Polish>
<Spanish>Los jugadores pueden rendirse después de enfundar su arma</Spanish>
</Key>
</Package>
</Project>
</Project>

View File

@ -22,7 +22,7 @@ class ACE_Settings {
value = 0;
typeName = "SCALAR";
isClientSettable = 0;
values[] = {"$STR_ACE_Common_CheckPBO_Action_WarnOnce", "$STR_ACE_Common_CheckPBO_Action_WarnPerm", "$STR_ACE_Common_CheckPBO_Action_Kick"};
values[] = {CSTRING(CheckPBO_Action_WarnOnce), CSTRING(CheckPBO_Action_WarnPerm), CSTRING(CheckPBO_Action_Kick)};
};
class GVAR(checkPBOsCheckAll) {
value = 0;
@ -38,7 +38,7 @@ class ACE_Settings {
value = 1;
typeName = "BOOL";
isClientSettable = 1;
displayName = "$STR_ACE_Common_EnableNumberHotkeys";
displayName = CSTRING(EnableNumberHotkeys);
};*/
class GVAR(settingFeedbackIcons) {
value = 1;

View File

@ -15,8 +15,12 @@ class RscInGameUI {
class RscUnitInfoTank: RscUnitInfo {
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf""; uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Vehicle')])] call FUNC(localEvent););
};
class RscUnitInfoAirNoWeapon: RscUnitInfo {
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf""; uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call FUNC(localEvent););
};
class RscUnitInfoAir: RscUnitInfo {
class RscUnitInfoAir: RscUnitInfoAirNoWeapon {
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf""; uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call FUNC(localEvent););
};

View File

@ -9,45 +9,45 @@ onSetup parameters:
0: STRING - Magazine Classname
*/
class Command {
displayName = $STR_ACE_Explosives_clacker_displayName;
displayName = CSTRING(clacker_displayName);
picture = PATHTOF(Data\UI\Clacker.paa);
onPlace = QUOTE(_this call FUNC(AddClacker);false);
requires[] = {"ACE_Clacker"};
};
class MK16_Transmitter:Command {
displayName = $STR_ACE_Explosives_MK16_displayName;
displayName = CSTRING(MK16_displayName);
picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa);
requires[] = {"ACE_M26_Clacker"};
};
class DeadManSwitch:Command {
displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
displayName = CSTRING(DeadManSwitch_displayName);
picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
requires[] = {"ACE_DeadManSwitch"};
};
class Cellphone:Command {
displayName = $STR_ACE_Explosives_cellphone_displayName;
displayName = CSTRING(cellphone_displayName);
picture = PATHTOF(Data\UI\Cellphone_UI.paa);
onPlace = QUOTE(_this call FUNC(addCellphoneIED);false);
requires[] = {"ACE_Cellphone"};
};
class PressurePlate {
displayName = $STR_ACE_Explosives_PressurePlate;
displayName = CSTRING(PressurePlate);
picture = PATHTOF(Data\UI\PressurePlate.paa);
onPlace = "_dist=GetNumber(ConfigFile >> 'CfgMagazines' >> (_this select 2) >> 'ACE_Triggers' >> 'PressurePlate' >> 'digDistance');_ex=_this select 1;_ex setPosATL ((getPosATL _ex) vectorDiff ((VectorUp _ex) vectorCrossProduct [0,0,_dist]));false";
};
class IRSensor {
displayName = $STR_ACE_Explosives_IRSensor;
displayName = CSTRING(IRSensor);
picture = PATHTOF(Data\UI\PressurePlate.paa);
onPlace = "false";
};
class Timer {
displayName = $STR_ACE_Explosives_timerName;
displayName = CSTRING(timerName);
picture = PATHTOF(data\UI\Timer.paa);
onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false);
onSetup = QUOTE(_this call FUNC(openTimerSetUI);true);
};
class Tripwire {
displayName = $STR_ACE_Explosives_TripWire;
displayName = CSTRING(TripWire);
picture = PATHTOF(Data\UI\Tripwire.paa);
onPlace = "false";
};

View File

@ -78,13 +78,13 @@ class CfgMagazines {
class ACE_Triggers {
SupportedTriggers[] = {"IRSensor","PressurePlate","Timer","Command"};
class PressurePlate{
displayName = $STR_ACE_Explosives_SLAME_Magnetic;
displayName = CSTRING(SLAME_Magnetic);
digDistance = 0;
ammo = "SLAMDirectionalMine_Magnetic_Ammo";
pitch = 90;
};
class IRSensor{
displayName = $STR_ACE_Explosives_SLAME_IRSensor;
displayName = CSTRING(SLAME_IRSensor);
};
class Timer {
ammo = "SLAMDirectionalMine_Timer_Ammo";
@ -106,7 +106,7 @@ class CfgMagazines {
class DeadmanSwitch:Command {};
class Cellphone:Command {};
class PressurePlate {
displayName = $STR_ACE_Explosives_SLAME_Magnetic;
displayName = CSTRING(SLAME_Magnetic);
digDistance = 0;
ammo = "IEDUrbanBig_Remote_Ammo";
pitch = 0;
@ -131,7 +131,7 @@ class CfgMagazines {
class DeadmanSwitch: Command {};
class Cellphone: Command {};
class PressurePlate {
displayName = $STR_ACE_Explosives_SLAME_Magnetic;
displayName = CSTRING(SLAME_Magnetic);
digDistance = 0;
ammo = "IEDUrbanSmall_Remote_Ammo";
pitch = 0;

View File

@ -3,7 +3,7 @@ class CfgVehicles {
class CAManBase: Man {
class ACE_SelfActions {
class ACE_Explosives {
displayName = $STR_ACE_Explosives_Menu;
displayName = CSTRING(Menu);
condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)]));
statement = "";
exceptions[] = {"isNotSwimming", "isNotInside"};
@ -13,7 +13,7 @@ class CfgVehicles {
hotkey = "X";
//Sub-menu items
class ACE_Detonate {
displayName = $STR_ACE_Explosives_Detonate;
displayName = CSTRING(Detonate);
condition = QUOTE([_player] call FUNC(canDetonate));
statement = "";
insertChildren = QUOTE([_player] call FUNC(addTransmitterActions););
@ -24,7 +24,7 @@ class CfgVehicles {
hotkey = "T";
};
class ACE_Place {
displayName = $STR_ACE_Explosives_Place;
displayName = CSTRING(Place);
condition = QUOTE((vehicle _player == _player) and {[_player] call FUNC(hasExplosives)});
statement = "";
insertChildren = QUOTE([_player] call FUNC(addExplosiveActions););
@ -35,7 +35,7 @@ class CfgVehicles {
hotkey = "P";
};
class ACE_Cellphone {
displayName = $STR_ACE_Explosives_cellphone_displayName;
displayName = CSTRING(cellphone_displayName);
condition = "('ACE_Cellphone' in (items ace_player))";
statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
exceptions[] = {"isNotSwimming", "isNotInside"};
@ -65,7 +65,7 @@ class CfgVehicles {
distance = 5;
condition = "true";
class ACE_Defuse {
displayName = $STR_ACE_Explosives_Defuse;
displayName = CSTRING(Defuse);
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse));
statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse););
exceptions[] = {"isNotSwimming"};

View File

@ -9,8 +9,8 @@ class CfgWeapons {
class ACE_Clacker: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Explosives_clacker_displayName;
descriptionShort = $STR_ACE_Explosives_clacker_description;
displayName = CSTRING(clacker_displayName);
descriptionShort = CSTRING(clacker_description);
picture = PATHTOF(Data\UI\Clacker.paa);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
ACE_Range = 250;
@ -22,14 +22,14 @@ class CfgWeapons {
};
};
class ACE_M26_Clacker: ACE_Clacker {
displayName = $STR_ACE_Explosives_M26_displayName;
displayName = CSTRING(M26_displayName);
picture = PATHTOF(Data\UI\MK26_Transmitter_ca.paa);
ACE_Range = 5000;
};
class ACE_DefusalKit: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Explosives_DefusalKit_displayName;
descriptionShort = $STR_ACE_Explosives_DefusalKit_description;
displayName = CSTRING(DefusalKit_displayName);
descriptionShort = CSTRING(DefusalKit_description);
picture = PATHTOF(Data\UI\Pliers.paa);
model = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
@ -40,8 +40,8 @@ class CfgWeapons {
};
class ACE_DeadManSwitch: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
descriptionShort = $STR_ACE_Explosives_DeadManSwitch_description;
displayName = CSTRING(DeadManSwitch_displayName);
descriptionShort = CSTRING(DeadManSwitch_description);
picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
ACE_Range = 100;
@ -54,8 +54,8 @@ class CfgWeapons {
};
class ACE_Cellphone: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Explosives_cellphone_displayName;
descriptionShort = $STR_ACE_Explosives_cellphone_description;
displayName = CSTRING(cellphone_displayName);
descriptionShort = CSTRING(cellphone_description);
picture = PATHTOF(Data\UI\Cellphone_UI.paa);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
ACE_Range = 15000;

View File

@ -89,7 +89,7 @@ class RscACE_SelectTimeUI {
h = 0.1;
y = 0.09;
style = ST_CENTER;
text = $STR_ACE_Explosives_Cancel;
text = CSTRING(Cancel);
action = "closeDialog 0;";
};
class approveBtn: RscButton {
@ -99,7 +99,7 @@ class RscACE_SelectTimeUI {
h = 0.1;
w = 0.15;
style = ST_CENTER;
text = $STR_ACE_Explosives_SetTime;
text = CSTRING(SetTime);
action = "closeDialog 0;";
};
};

View File

@ -25,7 +25,7 @@ class CfgVehicles {
class Car: LandVehicle {
class ACE_SelfActions {
class ResetFCS {
displayName = $STR_ACE_FCS_ResetFCS;
displayName = CSTRING(ResetFCS);
condition = QUOTE(call FUNC(canResetFCS));
statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset););
showDisabled = 0;
@ -38,7 +38,7 @@ class CfgVehicles {
class Tank: LandVehicle {
class ACE_SelfActions {
class ResetFCS {
displayName = $STR_ACE_FCS_ResetFCS;
displayName = CSTRING(ResetFCS);
condition = QUOTE(call FUNC(canResetFCS));
statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset););
showDisabled = 0;

View File

@ -47,6 +47,7 @@
<English>The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further.</English>
<Polish>Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej.</Polish>
<German>Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden.</German>
<Spanish>El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto.</Spanish>
</Key>
<Key ID="STR_ACE_Frag_EnableDebugTrace">
<English>(SP Only) Frag/Spall Debug Tracing</English>
@ -60,4 +61,4 @@
<German>(nur SP) Splitter-/Explosions-Debugging</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -0,0 +1 @@
z\ace\addons\huntir

45
addons/huntir/CfgAmmo.hpp Normal file
View File

@ -0,0 +1,45 @@
class CfgAmmo {
class FlareBase;
class F_HuntIR: FlareBase {
model = PATHTOF(data\ace_m1070_armed.p3d);
lightColor[] = {0, 0, 0, 0};
smokeColor[] = {0, 0, 0, 0};
timeToLive = 6;
};
class ShellBase;
class ACE_HuntIR_Propell: ShellBase {
supersonicCrackNear[] = {"",0.316228,1,50};
supersonicCrackFar[] = {"",0.223872,1,150};
CraterEffects = "";
CraterWaterEffects = "";
ExplosionEffects = "ACE_HuntIR_Propell_Fx";
visibleFire = 1;
audibleFire = 1;
dangerRadiusHit = -1;
suppressionRadiusHit = 0;
soundHit1[] = {"",3.16228,1,2000};
soundHit2[] = {"",3.16228,1,2000};
soundHit3[] = {"",3.16228,1,2000};
soundHit4[] = {"",3.16228,1,2000};
soundHit5[] = {"",3.16228,1,2000};
soundHit6[] = {"",3.16228,1,2000};
soundHit7[] = {"",3.16228,1,2000};
soundHit8[] = {"",3.16228,1,2000};
multiSoundHit[] = {};
class HitEffects {};
soundFakeFall0[] = {"",3.16228,1,1000};
soundFakeFall1[] = {"",3.16228,1,1000};
soundFakeFall2[] = {"",3.16228,1,1000};
soundFakeFall3[] = {"",3.16228,1,1000};
soundFakeFall[] = {};
hit = 0;
indirectHit = 0;
indirectHitRange = 0;
explosive = 1;
model = "\A3\weapons_f\empty";
airFriction = 0;
timeToLive = 1;
explosionTime = 0.001;
};
};

View File

@ -0,0 +1,92 @@
class ACE_HuntIR_Propell_Fx {
class ACE_HuntIR_ExploAmmoFlash {
simulation = "particles";
type = "ACE_HuntIR_ExploAmmoFlash";
position[] = { 0, 0, 0 };
intensity = 1;
interval = 1;
lifeTime = 1;
};
class ACE_HuntIR_ExploAmmoSmoke {
simulation = "particles";
type = "ACE_HuntIR_ExploAmmoSmoke";
position[] = { 0, 0, 0 };
intensity = 1;
interval = 1;
lifeTime = 0.8;
};
};
class CfgCloudlets {
class Default;
class ACE_HuntIR_ExploAmmoFlash: Default {
interval = 0.1;
circleRadius = 0;
circleVelocity[] = { 0, 0, 0 };
particleShape = "\A3\data_f\ParticleEffects\Universal\Universal";
particleFSNtieth = 16;
particleFSIndex = 0;
particleFSFrameCount = 32;
particleFSLoop = 0;
angleVar = 1;
animationName = "";
particleType = "Billboard";
timerPeriod = 1;
lifeTime = 0.5;
moveVelocity[] = { 0, 1, 0 };
rotationVelocity = 1;
weight = 10;
volume = 7.9;
rubbing = 0.1;
size[] = { "0.0125 * intensity + 0.25", "0.0125 * intensity + 0.125" };
color[] = { { 1, 1, 1, -1 }, { 1, 1, 1, 0 } };
animationSpeed[] = { 2 };
randomDirectionPeriod = 0.2;
randomDirectionIntensity = 0.2;
onTimerScript = "";
beforeDestroyScript = "";
lifeTimeVar = 0;
positionVar[] = { 0, 0.1, 0 };
MoveVelocityVar[] = { 0.2, 0.5, 0.2 };
rotationVelocityVar = 1;
sizeVar = 0.5;
colorVar[] = { 0, 0, 0, 0 };
randomDirectionPeriodVar = 0;
randomDirectionIntensityVar = 0;
};
class ACE_HuntIR_ExploAmmoSmoke: Default {
interval = "0.02 * interval + 0.02";
circleRadius = 0;
circleVelocity[] = { 0, 0, 0 };
particleShape = "\A3\data_f\ParticleEffects\Universal\Universal";
particleFSNtieth = 16;
particleFSIndex = 7;
particleFSFrameCount = 48;
particleFSLoop = 1;
angleVar = 1;
animationName = "";
particleType = "Billboard";
timerPeriod = 1;
lifeTime = 0.25;
moveVelocity[] = { 0, 1, 0 };
rotationVelocity = 1;
weight = 0.053;
volume = 0.04;
rubbing = 0.2;
size[] = { "0.0125 * intensity + 0.25", "0.0125 * intensity + 1.25", "0.0125 * intensity + 2.75", "0.0125 * intensity + 3.75" };
color[] = { { 0.6, 0.6, 0.6, 1 }, { 0.7, 0.7, 0.7, 0.5 }, { 0.78, 0.78, 0.78, 0.25 } };
animationSpeed[] = { 1.7, 0.6, 0.4, 0.3, 0.3 };
randomDirectionPeriod = 0.2;
randomDirectionIntensity = 0.2;
onTimerScript = "";
beforeDestroyScript = "";
lifeTimeVar = 2;
positionVar[] = { 0.5, 0.3, 0.5 };
MoveVelocityVar[] = { 1.5, 2, 1.5 };
rotationVelocityVar = 1;
sizeVar = 0.5;
colorVar[] = { 0, 0, 0, 0 };
randomDirectionPeriodVar = 0;
randomDirectionIntensityVar = 0;
};
};

View File

@ -0,0 +1,19 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
};
};
class Extended_FiredBIS_EventHandlers {
class CAManBase {
class ADDON {
clientFiredBIS = QUOTE(_this call FUNC(handleFired));
};
};
};

View File

@ -0,0 +1,11 @@
class CfgMagazines {
class 1Rnd_HE_Grenade_shell;
class ACE_HuntIR_M203: 1Rnd_HE_Grenade_shell {
displayName = CSTRING(magazine_displayName);
displayNameShort = "HuntIR";
descriptionShort = "";
picture = PATHTOF(UI\m_m1070_ca.paa);
ammo = "F_HuntIR";
};
};

View File

@ -0,0 +1,58 @@
class CfgVehicles {
class Man;
class CAManBase: Man {
class ACE_SelfActions {
class ACE_Equipment {
class GVAR(open) {
displayName = CSTRING(activateMonitor);
condition = QUOTE([ARR_2(ACE_player,'ACE_HuntIR_monitor')] call EFUNC(common,hasItem));
statement = QUOTE(call FUNC(huntir));
showDisabled = 0;
priority = 2;
icon = PATHTOF(UI\w_huntir_monitor_ca.paa);
exceptions[] = {};
};
};
};
};
class Parachute_02_base_F;
class ACE_HuntIR: Parachute_02_base_F {
scope = 1;
displayName = "HuntIR";
model = PATHTOF(data\huntir.p3d);
castDriverShadow = 0;
soundEnviron[] = {"z\ace\addons\apl\sounds\padak_let", 0.316228, 1, 80};
soundCrash[] = {"", db-30, 1 };
soundLandCrash[] = {"", db-30, 1 };
soundWaterCrash[] = {"", db10, 1 };
mapSize = 0;
};
class Item_Base_F;
class ACE_Item_HuntIR_monitor: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = CSTRING(monitor_displayName);
vehicleClass = "Items";
class TransportItems {
class ACE_HuntIR_monitor {
name = "ACE_HuntIR_monitor";
count = 1;
};
};
};
class ReammoBox_F;
class ACE_HuntIR_Box: ReammoBox_F {
model = PATHTOF(data\ace_huntirbox.p3d);
displayName = $STR_DN_ACE_HUNTIRBOX;
class TransportItems {
MACRO_ADDITEM(ACE_HuntIR_monitor,5);
};
class TransportMagazines {
MACRO_ADDMAGAZINE(ACE_HuntIR_M203,20);
};
};
};

View File

@ -0,0 +1,34 @@
class CfgWeapons {
class ACE_ItemCore;
class InventoryItem_Base_F;
class ACE_HuntIR_monitor: ACE_ItemCore {
scope = 2;
displayName = CSTRING(monitor_displayName);
picture = PATHTOF(UI\w_huntir_monitor_ca.paa);
descriptionShort = CSTRING(monitor_displayName);
model = PATHTOF(data\ace_huntir_monitor.p3d);
class ItemInfo: InventoryItem_Base_F {
mass = 20;
};
};
class GrenadeLauncher;
class UGL_F: GrenadeLauncher {
magazines[] += {"ACE_HuntIR_M203"};
};
class GL_3GL_F: UGL_F {
//magazines[] += {"ACE_HuntIR_M203"};
magazines[] = {"1Rnd_HE_Grenade_shell","UGL_FlareWhite_F","UGL_FlareGreen_F","UGL_FlareRed_F","UGL_FlareYellow_F","UGL_FlareCIR_F","1Rnd_Smoke_Grenade_shell","1Rnd_SmokeRed_Grenade_shell","1Rnd_SmokeGreen_Grenade_shell","1Rnd_SmokeYellow_Grenade_shell","1Rnd_SmokePurple_Grenade_shell","1Rnd_SmokeBlue_Grenade_shell","1Rnd_SmokeOrange_Grenade_shell","3Rnd_HE_Grenade_shell","3Rnd_UGL_FlareWhite_F","3Rnd_UGL_FlareGreen_F","3Rnd_UGL_FlareRed_F","3Rnd_UGL_FlareYellow_F","3Rnd_UGL_FlareCIR_F","3Rnd_Smoke_Grenade_shell","3Rnd_SmokeRed_Grenade_shell","3Rnd_SmokeGreen_Grenade_shell","3Rnd_SmokeYellow_Grenade_shell","3Rnd_SmokePurple_Grenade_shell","3Rnd_SmokeBlue_Grenade_shell","3Rnd_SmokeOrange_Grenade_shell","ACE_HuntIR_M203"};
};
class Rifle_Base_F;
class arifle_MX_Base_F: Rifle_Base_F {
class GL_3GL_F: UGL_F {
//magazines[] += {"ACE_HuntIR_M203"};
magazines[] = {"1Rnd_HE_Grenade_shell","UGL_FlareWhite_F","UGL_FlareGreen_F","UGL_FlareRed_F","UGL_FlareYellow_F","UGL_FlareCIR_F","1Rnd_Smoke_Grenade_shell","1Rnd_SmokeRed_Grenade_shell","1Rnd_SmokeGreen_Grenade_shell","1Rnd_SmokeYellow_Grenade_shell","1Rnd_SmokePurple_Grenade_shell","1Rnd_SmokeBlue_Grenade_shell","1Rnd_SmokeOrange_Grenade_shell","3Rnd_HE_Grenade_shell","3Rnd_UGL_FlareWhite_F","3Rnd_UGL_FlareGreen_F","3Rnd_UGL_FlareRed_F","3Rnd_UGL_FlareYellow_F","3Rnd_UGL_FlareCIR_F","3Rnd_Smoke_Grenade_shell","3Rnd_SmokeRed_Grenade_shell","3Rnd_SmokeGreen_Grenade_shell","3Rnd_SmokeYellow_Grenade_shell","3Rnd_SmokePurple_Grenade_shell","3Rnd_SmokeBlue_Grenade_shell","3Rnd_SmokeOrange_Grenade_shell","ACE_HuntIR_M203"};
};
};
};

401
addons/huntir/Dialog.hpp Normal file
View File

@ -0,0 +1,401 @@
#define CT_STATIC 0
#define CT_BUTTON 1
#define CT_EDIT 2
#define CT_SLIDER 3
#define CT_COMBO 4
#define CT_LISTBOX 5
#define CT_TOOLBOX 6
#define CT_CHECKBOXES 7
#define CT_PROGRESS 8
#define CT_HTML 9
#define CT_STATIC_SKEW 10
#define CT_ACTIVETEXT 11
#define CT_TREE 12
#define CT_STRUCTURED_TEXT 13
#define CT_CONTEXT_MENU 14
#define CT_CONTROLS_GROUP 15
#define CT_XKEYDESC 40
#define CT_XBUTTON 41
#define CT_XLISTBOX 42
#define CT_XSLIDER 43
#define CT_XCOMBO 44
#define CT_ANIMATED_TEXTURE 45
#define CT_OBJECT 80
#define CT_OBJECT_ZOOM 81
#define CT_OBJECT_CONTAINER 82
#define CT_OBJECT_CONT_ANIM 83
#define CT_LINEBREAK 98
#define CT_USER 99
#define CT_MAP 100
#define CT_MAP_MAIN 101
#define ST_POS 0x0F
#define ST_HPOS 0x03
#define ST_VPOS 0x0C
#define ST_LEFT 0x00
#define ST_RIGHT 0x01
#define ST_CENTER 0x02
#define ST_DOWN 0x04
#define ST_UP 0x08
#define ST_VCENTER 0x0c
#define ST_TYPE 0xF0
#define ST_SINGLE 0
#define ST_MULTI 16
#define ST_TITLE_BAR 32
#define ST_PICTURE 48
#define ST_FRAME 64
#define ST_BACKGROUND 80
#define ST_GROUP_BOX 96
#define ST_GROUP_BOX2 112
#define ST_HUD_BACKGROUND 128
#define ST_TILE_PICTURE 144
#define ST_WITH_RECT 160
#define ST_LINE 176
#define FontM "PuristaMedium"
#define __XA SafeZoneXAbs
#define __X SafeZoneX
#define __Y SafeZoneY
#define __WA SafeZoneWAbs
#define __W SafeZoneW
#define __H SafeZoneH
class ace_huntir_cam_dialog {
idd = 18880;
movingEnable = true;
controlsBackground[] = { };
objects[] = { };
controls[] = {
TOP_BORDER,
BOTTOM_BORDER,
LEFT_BORDER,
RIGHT_BORDER,
//HELP_DIALOG,
CAM_BG,
CAM_HEIGHT,
CAM_ALT,
CAM_No,
CAM_NO_x,
CAM_TIME_REMAIN,
CAM_TIME,
CAM_ZOOM,
ZOOM_X,
CAM_POS,
CAM_POS_X,
CAM_DIR,
CAM_DIR_x
};
class TOP_BORDER {
idc = -1;
type = CT_STATIC;
style = ST_CENTER;
x = __XA;
y = __Y;
w = __WA;
h = 0.08;
font = FontM;
sizeEx = 0.04;
colorText[] = { 1, 1, 1, 1 };
colorBackground[] = {0,0,0,1};
text = "";
blinkingPeriod = 0;
};
class BOTTOM_BORDER: TOP_BORDER {
y = __Y + __H - 0.05;
h = 0.05;
};
class LEFT_BORDER: TOP_BORDER {
w = (abs(__XA) - abs(__X)) + 0.05;
h = __H;
};
class RIGHT_BORDER: TOP_BORDER {
x = __X + __W - 0.05;
w = (__WA - __W) + 0.05;
h = __H;
};
class HELP_DIALOG {
idc = -1;
type = CT_BUTTON;
style = ST_CENTER;
font = FontM;
sizeEx = 0.025;
colorText[] = { 1, 1, 1, 1 };
colorFocused[] = { 0.31, 0.31, 0.31, 0.31 };
colorDisabled[] = { 0, 0, 1, 0.7 };
colorBackground[] = { 0, 0, 0, 0 };
colorBackgroundDisabled[] = { 1, 1, 1, 0.5 };
colorBackgroundActive[] = { 0.5, 0.5, 0.5, 0.5 };
offsetX = 0.003;
offsetY = 0.003;
offsetPressedX = 0.002;
offsetPressedY = 0.002;
colorShadow[] = { 0, 0, 0, 0.5 };
colorBorder[] = { 0, 0, 0, 0 };
borderSize = 0;
soundEnter[] = { "", 0, 1 };
soundPush[] = { "buttonpushed.ogg", 0.1, 1 };
soundClick[] = { "", 0, 1 };
soundEscape[] = { "", 0, 1 };
x = __X + (2*0.8); y = __Y + 0.045;
w = 0.05; h = 0.02;
text = CSTRING(HELP);
action = "createDialog 'ace_huntir_help_dialog'";
};
class CAM_BG {
idc = -1;
type = 0;
style = 48;
colorText[ ]={ 1,1,1,1 };
colorBackground[ ]={ 0.4,0.4,0.4,1 };
font = "PuristaMedium";
sizeEx = 0.021;
lineSpacing = 1;
x = __X;
y = __Y + 0.08;
w = __W;
h = __H + 0.2;
border = 0;
text = PATHTOF(UI\ace_huntir_monitor_on.paa);
};
class CAM_HEIGHT {
type = CT_STATIC;
idc = 1;
style = ST_LEFT;
colorBackground[] = {0, 0, 0, 0};
colorText[] = {1, 1, 1, 1};
font = FontM;
sizeEx = 0.02;
x = __X + 0.42;
y = __Y + 0.32;
w = 0.08;
h = 0.04;
text = "";
blinkingPeriod = 0;
};
class CAM_ALT: CAM_HEIGHT {
x = __X + 0.35;
text = CSTRING(ALT);
};
class CAM_No: CAM_HEIGHT {
x = __X + __W - 0.64;
text = CSTRING(CAM);
};
class CAM_NO_x: CAM_HEIGHT {
idc = 2;
x = __X + __W - 0.56;
y = __Y + 0.32;
text = "";
};
class CAM_TIME: CAM_HEIGHT {
x = __X + 0.35;
y = __Y + __H - 0.65;
w = 0.12;
text = CSTRING(TIME);
};
class CAM_TIME_REMAIN: CAM_TIME {
idc = 3;
x = __X + 0.46;
text = "";
};
class CAM_ZOOM: CAM_No {
y = __Y + 0.36;
text = "Zoom:";
};
class ZOOM_X: CAM_ZOOM {
idc = 4;
x = __X + __W - 0.56;
text = "";
};
class CAM_POS: CAM_HEIGHT {
x = __X + 0.35;
y = __Y + 0.36;
text = "GPS Pos:";
};
class CAM_POS_X: CAM_POS {
idc = 5;
x = __X + 0.42;
w = 0.16;
text = "";
};
class CAM_DIR: CAM_POS {
y = __Y + 0.4;
text = ""; //"Az:";
};
class CAM_DIR_x: CAM_DIR {
idc = 6;
x = __X + 0.42;
w = 0.16;
text = "";
};
};
class ace_huntir_cam_dialog_inactive: ace_huntir_cam_dialog {
idd = 18881;
controls[] = {
TOP_BORDER,
BOTTOM_BORDER,
LEFT_BORDER,
RIGHT_BORDER,
//HELP_DIALOG,
//PRESS_HELP,
CAM_BG,
SEARCHING_CAM
};
class TOP_BORDER: TOP_BORDER {};
class BOTTOM_BORDER: BOTTOM_BORDER {};
class LEFT_BORDER: LEFT_BORDER {};
class RIGHT_BORDER: RIGHT_BORDER {};
class PRESS_HELP {
idc = -1;
type = CT_STATIC;
style = ST_LEFT;
x = __X + (__W - 0.2);
y = __Y + 0.06;
w = 0.4;
h = 0.02;
font = FontM;
sizeEx = 0.02;
colorText[] = {1, 1, 1, 1};
colorBackground[] = {0,0,0,0};
text = "";
blinkingPeriod = 0;
};
class HELP_DIALOG {
idc = -1;
type = CT_STATIC;
style = ST_LEFT;
x = __X + (__W - 0.2);
y = __Y + 0.03;
w = 0.4;
h = 0.02;
font = FontM;
sizeEx = 0.02;
colorText[] = {1, 1, 1, 1};
colorBackground[] = {0,0,0,0};
text = CSTRING(ESC);
blinkingPeriod = 0;
};
class CAM_BG: CAM_BG {};
class SEARCHING_CAM {
idc = 1;
type = CT_STATIC;
style = ST_LEFT;
colorText[] = {1, 1, 1, 1};
colorBackground[] = {0,0,0,0};
x = __X + (__W/2) - 0.07;
y = __Y + (__H/2);
w = 0.6;
h = 0.08;
font = FontM;
sizeEx = 0.04;
text = "";
blinkingPeriod = 0;
};
};
class ace_huntir_cam_dialog_off: ace_huntir_cam_dialog_inactive {
idd = 18882;
controls[] = {
TOP_BORDER,
BOTTOM_BORDER,
LEFT_BORDER,
RIGHT_BORDER,
//HELP_DIALOG,
//PRESS_HELP,
CAM_BG
};
class TOP_BORDER: TOP_BORDER {};
class BOTTOM_BORDER: BOTTOM_BORDER {};
class LEFT_BORDER: LEFT_BORDER {};
class RIGHT_BORDER: RIGHT_BORDER {};
class PRESS_HELP: PRESS_HELP {};
class HELP_DIALOG: HELP_DIALOG {};
class CAM_BG: CAM_BG { text = PATHTOF(UI\ace_huntir_monitor_off.paa); };
};
//ACTIVE PARA CAMERA DIALOG
class ace_huntir_help_dialog: ace_huntir_cam_dialog {
idd = -1;
controls[] = {
TOP_BORDER,
BOTTOM_BORDER,
LEFT_BORDER,
RIGHT_BORDER,
CAM_BG,
CAM_HEIGHT,
CAM_ALT,
CAM_TIME_REMAIN,
CAM_TIME,
CAM_ZOOM,
ZOOM_X,
CAM_POS,
CAM_POS_x,
CAM_No,
CAM_No_X,
CAM_DIR,
CAM_DIR_x,
HELP0,
HELP1,
HELP2,
HELP3,
HELP4,
HELP5,
HELP6
};
class TOP_BORDER: TOP_BORDER {};
class BOTTOM_BORDER: BOTTOM_BORDER {};
class LEFT_BORDER: LEFT_BORDER {};
class RIGHT_BORDER: RIGHT_BORDER {};
class CAM_BG: CAM_BG {};
class CAM_HEIGHT: CAM_HEIGHT {};
class CAM_ALT: CAM_ALT {};
class CAM_No: CAM_No {};
class CAM_NO_x: CAM_NO_x {};
class CAM_TIME_REMAIN: CAM_TIME_REMAIN {};
class CAM_TIME: CAM_TIME {};
class CAM_ZOOM: CAM_ZOOM {};
class ZOOM_X: ZOOM_X {};
class CAM_POS: CAM_POS {};
class CAM_POS_X: CAM_POS_X {};
class CAM_DIR: CAM_DIR {};
class CAM_DIR_x: CAM_DIR_x {};
class HELP0 {
idc = -1;
type = CT_STATIC;
style = ST_LEFT;
x = __X + (__W - 0.3);
y = __Y + 0.03;
w = 0.4;
h = 0.03;
font = FontM;
sizeEx = 0.022;
colorText[] = { 1, 1, 1, 1 };
colorBackground[] = {0,0,0,1};
text = CSTRING(HELP_EXIT);
blinkingPeriod = 0;
};
class HELP1: HELP0 {
y = __Y + 0.06;
text = CSTRING(HELP_ZOOM);
};
class HELP2: HELP0 {
y = __Y + 0.09;
text = CSTRING(HELP_CAM);
};
class HELP3: HELP0 {
y = __Y + 0.12;
text = CSTRING(HELP_ROT);
};
class HELP4: HELP0 {
y = __Y + 0.15;
text = CSTRING(HELP_ELV);
};
class HELP5: HELP0 {
y = __Y + 0.18;
text = CSTRING(HELP_MOD);
};
class HELP6: HELP0 {
y = __Y + 0.21;
text = CSTRING(HELP_RES);
};
};

View File

@ -0,0 +1,41 @@
#define __FONTHEIGHT 0.02
class RscTitles {
class ace_huntir_cam_rose {
idd=-1;
movingEnable = true;
fadein = 0;
fadeout = 1;
duration = 1e+011;
name="ace_huntir_cam_rose";
onLoad = "uiNamespace setVariable ['ace_huntir_cam_rose', _this select 0]";
class controls {
class CHAR_N {
type = 0;
idc = 64432;
style = 0;
x = 0.497;y = 0.297;w = 0.2;h = 0.2;
font = "PuristaMedium";
sizeEx = __FONTHEIGHT;
colorText[] = {1, 1, 1, 1};
colorBackground[]={0,0,0,0};
text = "N";
};
class CHAR_E: CHAR_N {
idc = 64433;
x = 0.697;y = 0.497;
text = "E";
};
class CHAR_S: CHAR_N {
idc = 64434;
x = 0.497;y = 0.697;
text = "S";
};
class CHAR_W: CHAR_N {
idc = 64435;
x = 0.297;y = 0.497;
text = "W";
};
};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,9 @@
#include "script_component.hpp"
GVAR(ZOOM) = 0;
GVAR(NV) = 0;
GVAR(IRON) = false;
GVAR(TI) = 0;
GVAR(cur_cam) = 0;
GVAR(ROTATE) = 0;
GVAR(ELEVAT) = 0.01;

View File

@ -0,0 +1,11 @@
#include "script_component.hpp"
ADDON = false;
PREP(cam);
PREP(handleFired);
PREP(huntir);
PREP(huntirCompass);
PREP(keypressed);
ADDON = true;

21
addons/huntir/config.cpp Normal file
View File

@ -0,0 +1,21 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {"ACE_HuntIR", "ACE_HuntIRBox"};
weapons[] = {"ACE_HuntIR_monitor"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"Norrin", "Rocko", "Ruthberg"};
VERSION_CONFIG;
};
};
#include "CfgEventhandlers.hpp"
#include "CfgCloudlets.hpp"
#include "CfgAmmo.hpp"
#include "CfgMagazines.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
#include "Dialog.hpp"
#include "RscTitles.hpp"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,31 @@
ambient[] = {1.0, 1.0, 1.0, 1.0};
diffuse[] = {1.0, 1.0, 1.0, 1.0};
forcedDiffuse[] = {0.0, 0.0, 0.0, 0.0};
emmisive[] = {0.0, 0.0, 0.0, 1.0};
specular[] = {1.0, 1.0, 1.0, 1.0};
specularPower = 71.9;
PixelShaderID = "NormalMapSpecularDIMap";
VertexShaderID = "NormalMap";
class Stage1 {
texture = "z\ace\addons\huntir\data\bedna_ammo2_nohq.paa";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage2 {
texture = "z\ace\addons\huntir\data\bedna_ammo2_smdi.paa";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class StageTI {
texture = "z\ace\addons\apl\data\default_vehicle_ti_ca.paa";
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,148 @@
/*
* Author: Norrin, Rocko, Ruthberg
*
* Handles HuntIR camera
*
* Arguments:
* 0: HuntIR <OBJECT>
*
* Return Value:
* Nothing
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_1(_huntIR);
GVAR(huntIR) = _huntIR;
GVAR(pos) = getPosVisual GVAR(huntIR);
GVAR(ZOOM) = 0;
GVAR(NV) = 0;
GVAR(TI) = 0;
GVAR(cur_cam) = 0;
GVAR(ROTATE) = 0;
GVAR(ELEVAT) = 0.01;
HUNTIR_BACKGROUND_LAYER_ID cutText["","PLAIN"];
closedialog 0;
createDialog "ace_huntir_cam_dialog";
uiNameSpace setVariable ["ace_huntir_monitor", findDisplay 18880];
(uiNameSpace getVariable "ace_huntir_monitor") displaySetEventHandler ["Keydown", QUOTE(_this call FUNC(keyPressed))];
ctrlSetText [4, "0X"];
GVAR(logic) = "Logic" createVehicleLocal [0, 0, 0];
GVAR(logic) setPosATL (GVAR(pos) vectorAdd [0, 0, -5]);
GVAR(logic) setVectorUp [0.001, 0.001, 1];
GVAR(cam) = "camera" camCreate GVAR(pos);
GVAR(cam) camSetTarget GVAR(logic);
GVAR(cam) cameraEffect ["internal", "BACK"];
GVAR(cam) camSetRelPos [0, 0, 2];
GVAR(cam) camCommit 0;
showCinemaBorder false;
camUseNVG false;
GVAR(pphandle) = ppEffectCreate ["colorCorrections", 135522];
GVAR(pphandle) ppEffectAdjust [1, 1, 0, [0.01, 0.02, 0.04, 0.01], [0.87, 1.08, 1.196, 0.3], [0.399, 0.287, 0.014, 0.0]];
GVAR(pphandle) ppEffectCommit 0;
GVAR(pphandle) ppEffectEnable true;
GVAR(stop) = false;
call FUNC(huntirCompass);
GVAR(no_cams) = ACE_player nearEntities ["ACE_HuntIR", HUNTIR_MAX_TRANSMISSION_RANGE];
{
GVAR(no_cams) set [_forEachIndex, [(getPosVisual ACE_player) vectorDistance (getPosVisual _x), _x]];
} forEach GVAR(no_cams);
GVAR(no_cams) sort true;
{
GVAR(no_cams) set [_forEachIndex, _x select 1];
} forEach GVAR(no_cams);
[{
GVAR(nearHuntIRs) = ACE_player nearEntities ["ACE_HuntIR", HUNTIR_MAX_TRANSMISSION_RANGE];
{
if (((getPosVisual _x) select 2) > 20 && {!(_x in GVAR(no_cams))}) then {
GVAR(no_cams) pushBack _x;
};
} forEach GVAR(nearHuntIRs);
{
if (((getPosVisual _x) select 2) <= 20 || {!(_x in GVAR(nearHuntIRs))}) then {
GVAR(no_cams) deleteAt _forEachIndex;
if (_forEachIndex < GVAR(cur_cam)) then {
GVAR(cur_cam) = GVAR(cur_cam) - 1;
};
};
} forEach GVAR(no_cams);
GVAR(cur_cam) = 0 max GVAR(cur_cam) min ((count GVAR(no_cams)) - 1);
if (count GVAR(no_cams) > 0) then {
GVAR(huntIR) = GVAR(no_cams) select GVAR(cur_cam);
};
GVAR(pos) = getPosVisual GVAR(huntIR);
if ((!dialog) || (count GVAR(no_cams) == 0) || ((GVAR(pos) select 2) <= 20)) exitWith {
[_this select 1] call cba_fnc_removePerFrameHandler;
GVAR(stop) = true;
GVAR(pphandle) ppEffectEnable true;
ppEffectDestroy GVAR(pphandle);
GVAR(NV) = 0;
setAperture -1;
closedialog 0;
titletext [" ", "BLACK IN", 4];
ACE_player switchCamera "INTERNAL";
GVAR(cam) CameraEffect ["Terminate", "Back"];
CamDestroy GVAR(cam);
deleteVehicle GVAR(logic);
if (player != ACE_player) then {
player remoteControl ACE_player;
};
};
switch (GVAR(ZOOM)) do {
case 0: {
GVAR(cam) camsetFOV 0.7;
GVAR(cam) camSetFocus [GVAR(pos) select 2, 1];
};
case 1: {
GVAR(cam) camsetFOV 0.35;
GVAR(cam) camSetFocus [(GVAR(pos) select 2)/2, 1];
};
case 2: {
GVAR(cam) camsetFOV 0.17;
GVAR(cam) camSetFocus [(GVAR(pos) select 2)/4, 1];
};
case 3: {
GVAR(cam) camsetFOV 0.1;
GVAR(cam) camSetFocus [(GVAR(pos) select 2)/8, 1];
};
};
private ["_cam_coord_y", "_cam_coord_x", "_speed", "_cam_time", "_cam_pos"];
GVAR(logic) setPosATL (GVAR(pos) vectorAdd [0, 0, -5]);
GVAR(logic) setDir GVAR(ROTATE);
GVAR(logic) setVectorUp [0.0001, 0.0001, 1];
GVAR(cam) CameraEffect ["internal", "BACK"];
_cam_coord_y = GVAR(ELEVAT) * cos(GVAR(ROTATE));
_cam_coord_x = GVAR(ELEVAT) * sin(GVAR(ROTATE));
GVAR(cam) camSetRelPos [_cam_coord_x, _cam_coord_y, 2];
GVAR(cam) camCommit 0;
ctrlSetText [1, format["%1 m", round(GVAR(pos) select 2)]];
ctrlSetText [2, format["%1", GVAR(cur_cam) + 1]];
_speed = 1 max abs((velocity GVAR(huntIR)) select 2);
_cam_time = ((GVAR(pos) select 2) - 20) / _speed;
ctrlSetText [3, format["%1 s", round(_cam_time)]];
_cam_pos = getPosVisual GVAR(huntIR);
_cam_pos = format ["X = %1, Y = %2", round (_cam_pos select 0), round (_cam_pos select 1)];
ctrlSetText [5, _cam_pos];
ctrlSetText [6, ""];
}, 0, []] call CBA_fnc_addPerFrameHandler;

View File

@ -0,0 +1,46 @@
/*
* Author: Norrin, Rocko, Ruthberg
*
* Handles HuntIR projectiles
*
* Arguments:
* 0: unit - Object the event handler is assigned to <OBJECT>
* 1: weapon - Fired weapon <STRING>
* 2: muzzle - Muzzle that was used <STRING>
* 3: mode - Current mode of the fired weapon <STRING>
* 4: ammo - Ammo used <STRING>
* 5: magazine - magazine name which was used <STRING>
* 6: projectile - Object of the projectile that was shot <OBJECT>
*
* Return Value:
* Nothing
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_7(_unit,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
if (_ammo != "F_HuntIR") exitWith {};
private ["_dir", "_pos", "_dirDegree", "_b", "_a", "_y", "_x"];
_dir = ACE_player weaponDirection _weapon;
_pos = getPosATL ACE_player;
_dirDegree = (_dir select 0) atan2 (_dir select 1);
_b = 500 / (tan((asin(_dir select 2)) + 10));
_a = _b * sin(_dirDegree);
_b = _a / tan(_dirDegree);
_x = (_pos select 0) + _a;
_y = (_pos select 1) + _b;
[{
PARAMS_3(_projectile,_x,_y);
"ACE_HuntIR_Propell" createVehicle (getPosATL _projectile);
[{
PARAMS_3(_x,_y,_z);
private ["_huntir"];
_huntir = createVehicle ["ACE_HuntIR", [_x, _y, _z], [], 0, "FLY"];
_huntir setPosATL [_x, _y, _z];
}, [_x, _y, ((getPosATL _projectile) select 2) + 400], 5, 0] call EFUNC(common,waitAndExecute);
}, [_projectile, _x, _y], 5, 0] call EFUNC(common,waitAndExecute);

View File

@ -0,0 +1,93 @@
/*
* Author: Norrin, Rocko, Ruthberg
*
* HuntIR monitor system
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Public: No
*/
#include "script_component.hpp"
#define __TYPE_WRITER_DELAY 0.05
if ((ACE_player call CBA_fnc_getUnitAnim) select 0 == "stand") then {
ACE_player playMove "AmovPercMstpSrasWrflDnon_diary";
};
HUNTIR_BACKGROUND_LAYER_ID cutText ["", "BLACK", 0];
createDialog "ace_huntir_cam_dialog_off";
[{
if (!dialog) exitWith {
HUNTIR_BACKGROUND_LAYER_ID cutText ["", "PLAIN", 0];
};
closeDialog 0;
createDialog "ace_huntir_cam_dialog_inactive";
uiNameSpace setVariable ["ace_huntir_monitor", findDisplay 18881];
[{
GVAR(startTime) = ACE_time;
GVAR(done) = false;
GVAR(connectionDelay) = 5;
GVAR(state) = "searching";
GVAR(message) = [];
GVAR(messageSearching) = toArray "Searching.....";
GVAR(messageConnecting) = toArray "Connecting.....";
[{
private ["_elapsedTime", "_nearestHuntIRs"];
_elapsedTime = ACE_time - GVAR(startTime);
_nearestHuntIRs = ACE_player nearEntities ["ACE_HuntIR", HUNTIR_MAX_TRANSMISSION_RANGE];
if ((!dialog) || GVAR(done)) exitWith {
[_this select 1] call cba_fnc_removePerFrameHandler;
if (dialog && GVAR(state) == "connected") then {
[_nearestHuntIRs select 0] call FUNC(cam);
} else {
HUNTIR_BACKGROUND_LAYER_ID cutText ["", "PLAIN"];
};
};
switch (GVAR(state)) do {
case "searching": {
if (count GVAR(message) < count GVAR(messageSearching)) then {
GVAR(message) pushBack (GVAR(messageSearching) select (count GVAR(message)));
ctrlSetText [1, toString GVAR(message)];
} else {
GVAR(message) = [];
if (_elapsedTime > 10) then {
GVAR(state) = "noGDS";
};
if (_elapsedTime > 5 && {count _nearestHuntIRs > 0}) then {
GVAR(state) = "connecting";
};
};
};
case "connecting": {
if (count GVAR(message) < count GVAR(messageConnecting)) then {
GVAR(message) pushBack (GVAR(messageConnecting) select (count GVAR(message)));
ctrlSetText [1, toString GVAR(message)];
} else {
GVAR(message) = [];
GVAR(connectionDelay) = GVAR(connectionDelay) - 1;
if (GVAR(connectionDelay) <= 0) then {
GVAR(done) = true;
GVAR(state) = "connected";
};
};
};
case "noGDS": {
ctrlSetText [1, "No GDS System detected"];
[{
GVAR(done) = true;
closedialog 0;
HUNTIR_BACKGROUND_LAYER_ID cutText ["", "PLAIN"];
}, [], 3, 0] call EFUNC(common,waitAndExecute);
};
};
}, __TYPE_WRITER_DELAY, []] call CBA_fnc_addPerFrameHandler;
}, [], 0.5, 0] call EFUNC(common,waitAndExecute);
}, [], 1, 0] call EFUNC(common,waitAndExecute);

View File

@ -0,0 +1,88 @@
/*
* Author: Norrin, Rocko, Ruthberg
*
* HuntIR monitor compass
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Public: No
*/
#include "script_component.hpp"
disableSerialization;
#define __DSP (uiNamespace getVariable "ace_huntir_cam_rose")
#define __CHAR_N (__DSP displayCtrl 64432)
#define __CHAR_E (__DSP displayCtrl 64433)
#define __CHAR_S (__DSP displayCtrl 64434)
#define __CHAR_W (__DSP displayCtrl 64435)
#define __OFFSET_X 0.003
#define __OFFSET_Y 0.003
#define __WIDTH 0.1
#define __HEIGHT 0.1
#define __RADIUS 0.05
#define __CENTER_X 0.70
#define __CENTER_Y 0.65
private ["_fnc_correctIt"];
_fnc_correctIt = {
PARAMS_2(_pos,_dir);
if (_dir >= 270 || {_dir <= 90}) then {
_pos set [1, (_pos select 1) + __OFFSET_Y]
};
if (_dir >= 0 && {_dir <= 180}) then {
_pos set [0, (_pos select 0) - __OFFSET_X]
};
if (_dir >= 90 && {_dir <= 270}) then {
_pos set [1, (_pos select 1) - __OFFSET_Y]
};
if (_dir >= 180 && {_dir <= 360}) then {
_pos set [0, (_pos select 0) + __OFFSET_X]
};
_pos
};
HUNTIR_CAM_ROSE_LAYER_ID cutRsc ["ace_huntir_cam_rose", "PLAIN"];
[{
EXPLODE_1_PVT(_this select 0,_fnc_correctIt);
if (GVAR(stop)) exitWith {
HUNTIR_CAM_ROSE_LAYER_ID cutText ["", "PLAIN"];
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
private ["_dir", "_x1", "_y1", "_pos"];
_dir = getDir GVAR(cam); // direction player;
_x1 = __CENTER_X - (__RADIUS * sin(_dir));
_y1 = __CENTER_Y - (__RADIUS * cos(_dir));
_pos = [[_x1, _y1], _dir] call _fnc_correctIt;
__CHAR_N ctrlSetPosition [_pos select 0, _pos select 1, __WIDTH, __HEIGHT];
__CHAR_N ctrlCommit 0;
_x1 = __CENTER_X - (__RADIUS * sin(_dir + 90));
_y1 = __CENTER_Y - (__RADIUS * cos(_dir + 90));
_pos = [[_x1, _y1], _dir] call _fnc_correctIt;
__CHAR_W ctrlSetPosition [_pos select 0, _pos select 1, __WIDTH, __HEIGHT];
__CHAR_W ctrlCommit 0;
_x1 = __CENTER_X - (__RADIUS * sin(_dir + 180));
_y1 = __CENTER_Y - (__RADIUS * cos(_dir + 180));
_pos = [[_x1, _y1], _dir] call _fnc_correctIt;
__CHAR_S ctrlSetPosition [_pos select 0, _pos select 1, __WIDTH, __HEIGHT];
__CHAR_S ctrlCommit 0;
_x1 = __CENTER_X - (__RADIUS * sin(_dir + 270));
_y1 = __CENTER_Y - (__RADIUS * cos(_dir + 270));
_pos = [[_x1, _y1], _dir] call _fnc_correctIt;
__CHAR_E ctrlSetPosition [_pos select 0, _pos select 1, __WIDTH, __HEIGHT];
__CHAR_E ctrlCommit 0;
}, 0.01, [_fnc_correctIt]] call CBA_fnc_addPerFrameHandler;

View File

@ -0,0 +1,113 @@
/*
* Author: Norrin, Rocko
* Handles the HuntIR monitor key interaction
*
* Arguments:
* 0: ?
* 1: keycode <NUMBER>
*
* Return Value:
* handled? <BOOLEAN>
*
* Example:
* [] call ace_huntir_fnc_keyPressed
*
* Public: No
*/
#include "script_component.hpp"
private ["_ret"];
_ret = false;
switch (_this select 1) do {
// A = Lower zoom level
case 30: {
if (GVAR(ZOOM) > 0) then {
GVAR(ZOOM) = GVAR(ZOOM) - 1;
};
switch (GVAR(ZOOM)) do {
case 0: { ctrlSetText [4, "0X"];};
case 1: { ctrlSetText [4, "2X"];};
case 2: { ctrlSetText [4, "4X"];};
case 3: { ctrlSetText [4, "8X"];};
};
_ret = true;
};
// D = Increase zoom level
case 32: {
if (GVAR(ZOOM) < 3) then {
GVAR(ZOOM) = GVAR(ZOOM) + 1;
};
switch (GVAR(ZOOM)) do {
case 0: { ctrlSetText [4, "0X"];};
case 1: { ctrlSetText [4, "2X"];};
case 2: { ctrlSetText [4, "4X"];};
case 3: { ctrlSetText [4, "8X"];};
};
_ret = true;
};
//N key ( Toggle NV and TI modes )
case 49: {
if (GVAR(NV) == 0) then {
setAperture -1;
camUseNVG true;
GVAR(NV) = 1;
if (!GVAR(IRON)) then {
GVAR(IRON) = true;
};
} else {
setAperture -1;
camUseNVG false;
GVAR(NV) = 0;
GVAR(IRON) = false;
};
_ret = true;
};
// S = Next camera
case 31: {
GVAR(cur_cam) = GVAR(cur_cam) + 1;
_ret = true;
};
// W = Previous camera
case 17: {
GVAR(cur_cam) = GVAR(cur_cam) - 1;
_ret = true;
};
// Rotate camera anticlockwise
case 203: {
GVAR(ROTATE) = GVAR(ROTATE) - 3;
_ret = true;
};
// Rotate camera clockwise
case 205: {
GVAR(ROTATE) = GVAR(ROTATE) + 3;
_ret = true;
};
// Raise camera
case 200: {
if (GVAR(ELEVAT) < 4.01) then {
GVAR(ELEVAT) = GVAR(ELEVAT) + 0.12;
};
_ret = true;
};
// Lower camera
case 208: {
if (GVAR(ELEVAT) > -3.99) then {
GVAR(ELEVAT) = GVAR(ELEVAT) - 0.12;
};
_ret = true;
};
// Reset camera
case 19: {
GVAR(ROTATE) = 0;
GVAR(ELEVAT) = 0.01;
GVAR(ZOOM) = 0;
ctrlSetText [4, "0X"];
GVAR(NV) = 0;
camUseNVG false;
setAperture -1;
_ret = true;
};
};
_ret

View File

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

View File

@ -0,0 +1,17 @@
#define COMPONENT huntir
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_HUNTIR
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_HUNTIR
#define DEBUG_SETTINGS DEBUG_SETTINGS_HUNTIR
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#define HUNTIR_BACKGROUND_LAYER_ID 13521
#define HUNTIR_CAM_ROSE_LAYER_ID 13522
#define HUNTIR_MAX_TRANSMISSION_RANGE 1600

View File

@ -0,0 +1,181 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="HuntIR">
<Key ID="STR_DN_ACE_HUNTIRBOX">
<English>HuntIR Transport Box</English>
<German>HuntIR Transportkiste</German>
<Spanish>HuntIR Transport Box</Spanish>
<Czech>Trasnportní bedna HuntIR</Czech>
<Russian>Ящик с HuntIR</Russian>
<Italian>HuntIR Transport Box</Italian>
<Polish>Skrzynia HuntIR</Polish>
<French>HuntIR Transport Box</French>
<Hungarian>HuntIR Transport Box</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_magazine_displayName">
<English>HuntIR Round</English>
<German>HuntIR Granate</German>
<Spanish>HuntIR Round</Spanish>
<Czech>HuntIR Round</Czech>
<Russian>HuntIR снаряд</Russian>
<Italian>HuntIR Round</Italian>
<Polish>Nabój HuntIR</Polish>
<French>Munition HuntIR</French>
<Hungarian>HuntIR lövedék</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_monitor_displayName">
<English>HuntIR monitor</English>
<German>HuntIR Monitor</German>
<Spanish>HuntIR monitor</Spanish>
<Czech>HuntIR monitor</Czech>
<Russian>HuntIR монитор</Russian>
<Italian>HuntIR monitor</Italian>
<Polish>Odbiornik HuntIR</Polish>
<French>Ecran HuntIR</French>
<Hungarian>HuntIR monitor</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_activateMonitor">
<English>Activate HuntIR monitor</English>
<German>HuntIR Monitor aktivieren</German>
<Spanish>Activate HuntIR monitor</Spanish>
<Czech>Zapnout HuntIR monitor</Czech>
<Russian>Включить HuntIR монитор</Russian>
<Italian>Activate HuntIR monitor</Italian>
<Polish>Włącz odbiornik HuntIR</Polish>
<French>Allumer écran HuntIR</French>
<Hungarian>HuntIR monitor aktiválása</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_CAM">
<English>Camera:</English>
<German>Kamera:</German>
<Spanish>Camera:</Spanish>
<Czech>Kamera:</Czech>
<Russian>Камера:</Russian>
<Italian>Camera:</Italian>
<Polish>Kamera:</Polish>
<French>Caméra:</French>
<Hungarian>Kamera:</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_ALT">
<English>Altitude:</English>
<German>Höhe:</German>
<Spanish>Altitude:</Spanish>
<Czech>Výška:</Czech>
<Russian>Высота:</Russian>
<Italian>Altitude:</Italian>
<Polish>Wysokość:</Polish>
<French>Altitude:</French>
<Hungarian>Magasság:</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_TIME">
<English>Recording Time:</English>
<German>Aufnahmezeit:</German>
<Spanish>Recording Time:</Spanish>
<Czech>Čas nahrávání:</Czech>
<Russian>Время записи:</Russian>
<Italian>Recording Time:</Italian>
<Polish>Czas nagrywania:</Polish>
<French>Temps d'enregistrement:</French>
<Hungarian>Felvételi idő:</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_ESC">
<English>Press ESC to quit camera</English>
<German>Zum Verlassen ESC drücken</German>
<Spanish>Press ESC to quit camera</Spanish>
<Czech>Stiskni ESC pro opustění kamery</Czech>
<Russian>Нажмите ESC чтобы выйти из режима камеры</Russian>
<Italian>Press ESC to quit camera</Italian>
<Polish>Wciśnij ESC by wyjść z widoku kamery</Polish>
<French>Appuyer sur ESC pour quitter camera</French>
<Hungarian>Nyomj ESC-ket a kamerából való kilépéshez</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_HELP">
<English>Help</English>
<German>Hilfe</German>
<Spanish>Help</Spanish>
<Czech>Pomoc</Czech>
<Russian>Помощь</Russian>
<Italian>Help</Italian>
<Polish>Pomoc</Polish>
<French>Aide</French>
<Hungarian>Súgó</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_HELP_ZOOM">
<English>A/D - Cycle zoom</English>
<German>A/D - Zoom</German>
<Spanish>A/D - Cycle zoom</Spanish>
<Czech>A/D - Změna přiblížení</Czech>
<Russian>A/D - Приближение</Russian>
<Italian>A/D - Cycle zoom</Italian>
<Polish>A/D - powiększenie</Polish>
<French>A/D - Changement zoom</French>
<Hungarian>A/D - Nagyítás</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_HELP_CAM">
<English>W/S - Select camera</English>
<German>W/S - Wähle Kamera</German>
<Spanish>W/S - Select camera</Spanish>
<Czech>W/S - Výběr kamery</Czech>
<Russian>W/S - Выбрать камеру</Russian>
<Italian>W/S - Select camera</Italian>
<Polish>W/S - wybór kamery</Polish>
<French>W/S - Sélectionner caméra</French>
<Hungarian>W/S - Kamera váltás</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_HELP_ROT">
<English>Left/Right - Rotate camera</English>
<German>Links/Rechts - Rotiere Kamera</German>
<Spanish>Left/Right - Rotate camera</Spanish>
<Czech>Levá/Pravá - Rotace kamery</Czech>
<Russian>Влево/Вправо - Вращать камеру</Russian>
<Italian>Left/Right - Rotate camera</Italian>
<Polish>Lewo/Prawo - obrót kamery w poziomie</Polish>
<French>Gauche/Droite - Rotation caméra</French>
<Hungarian>Jobb/Bal - Kamera forgatás</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_HELP_ELV">
<English>Up/Down - Elevate/lower camera</English>
<German>Hoch/Runter - Neige Kamera</German>
<Spanish>Up/Down - Elevate/lower camera</Spanish>
<Czech>Nahoru/Dolu - Zvýšít/snížit úhel pohledu kamery</Czech>
<Russian>Вверх/Вниз - Поднять/Опустить камеру</Russian>
<Italian>Up/Down - Elevate/lower camera</Italian>
<Polish>Góra/Dół - obrót kamery w pionie</Polish>
<French>Haut/Bas - Monter/descendre caméra</French>
<Hungarian>Fel/Le - Kamera döntése/süllyesztése</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_HELP_MOD">
<English>N - Cycle IT modes</English>
<German>N - Sichtmodi</German>
<Spanish>N - Cycle IT modes</Spanish>
<Czech>N - Změna režimů kamery</Czech>
<Russian>N - Режимы камеры</Russian>
<Italian>N - Cycle IT modes</Italian>
<Polish>N - wybór trybu IT</Polish>
<French>N - Changement de modes IT</French>
<Hungarian>N - Hőkép módok</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_HELP_RES">
<English>R - Reset camera</English>
<German>R - Reset</German>
<Spanish>R - Reset camera</Spanish>
<Czech>R - Reset kamery</Czech>
<Russian>R - Сбросить настройки камеры</Russian>
<Italian>R - Reset camera</Italian>
<Polish>R - resetuj kamerę</Polish>
<French>R - Reset caméra</French>
<Hungarian>R - Kamera visszaállítása</Hungarian>
</Key>
<Key ID="STR_ACE_HUNTIR_HELP_EXIT">
<English>Esc - Exit help</English>
<German>ESC - Hilfe verlassen</German>
<Spanish>Esc - Exit help</Spanish>
<Czech>Esc - Ukončit Pomoc </Czech>
<Russian>Esc - Выйти из помощи</Russian>
<Italian>Esc - Exit help</Italian>
<Polish>Esc - wyjście z ekranu Pomocy</Polish>
<French>Esc - Sortir de l'aide</French>
<Hungarian>Exit - Kilépés a súgóból</Hungarian>
</Key>
</Package>
</Project>

View File

@ -220,18 +220,22 @@
<Key ID="STR_ACE_Interact_Menu_background">
<English>Interaction menu background</English>
<Polish>Tło menu interakcji</Polish>
<Spanish>Fondo del menú de interacción</Spanish>
</Key>
<Key ID="STR_ACE_Interact_Menu_blurScreenDesc">
<English>Blur the background while the interaction menu is open.</English>
<Polish>Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji</Polish>
<Spanish>Desenfocar el fondo mientras el menú de interacción está abierto.</Spanish>
</Key>
<Key ID="STR_ACE_Interact_Menu_backgroundBlur">
<English>Blur screen</English>
<Polish>Rozmycie ekranu</Polish>
<Spanish>Pantalla de desenfoque</Spanish>
</Key>
<Key ID="STR_ACE_Interact_Menu_backgroundBlack">
<English>Black</English>
<Polish>Przyciemnienie ekranu</Polish>
<Spanish>Negra</Spanish>
</Key>
</Package>
</Project>
</Project>

View File

@ -105,7 +105,7 @@ class RscACE_SelectAnItem {
h = 0.1;
y = 0.605;
style = 2;
text = $STR_ACE_Interaction_Back; //$STR_ACE_Interaction_CancelSelection;
text = CSTRING(Back);
action = "call ACE_Interaction_fnc_hideMenu;"; //'Default' call ACE_Interaction_fnc_openMenu; 'Default' call ACE_Interaction_fnc_openMenuSelf;
colorBackground[] = {0,0,0,0};
colorBackgroundDisabled[] = {0,0,0,0};
@ -119,7 +119,7 @@ class RscACE_SelectAnItem {
h = 0.1;
w = 0.15;
style = 2;
text = $STR_ACE_Interaction_MakeSelection;
text = CSTRING(MakeSelection);
action = "call ACE_Interaction_fnc_hideMenu;";
colorBackground[] = {0,0,0,0};
colorBackgroundDisabled[] = {0,0,0,0};
@ -170,7 +170,7 @@ class RscTitles {
class SelectText: RscInteractionText{
idc = 1000;
y = 17 * GUI_GRID_H;
text = $STR_ACE_Interaction_MakeSelection;
text = CSTRING(MakeSelection);
};
class GoBackIcon: RscInteractionHelperIcon{
idc = 1201;
@ -180,7 +180,7 @@ class RscTitles {
class GoBackText: RscInteractionText{
idc = 1001;
y = 19 * GUI_GRID_H;
text = $STR_ACE_Interaction_Back;
text = CSTRING(Back);
};
class ScrollIcon: RscInteractionHelperIcon{
idc = 1202;
@ -190,7 +190,7 @@ class RscTitles {
class ScrollText: RscInteractionText{
idc = 1002;
y = 18 * GUI_GRID_H;
text = $STR_ACE_Interaction_ScrollHint;
text = CSTRING(ScrollHint);
};
};
};

View File

@ -4,11 +4,11 @@ class CfgWeapons {
class InventoryItem_Base_F;
class ACE_Kestrel4500: ACE_ItemCore {
author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"};
author = ECSTRING(common,ACETeam);
scope = 2;
displayName = CSTRING(Name);
descriptionShort = CSTRING(Description);
model = PATHTOF(kestrel4500.p3d);
model = PATHTOF(data\kestrel4500.p3d);
picture = PATHTOF(UI\Kestrel4500.paa);
icon = "iconObject_circle";
mapSize = 0.034;

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {"ACE_Kestrel4500"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_common", "ACE_weather"};
author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"};
author[] = {ECSTRING(common,ACETeam), "Ruthberg"};
VERSION_CONFIG;
};
};

Binary file not shown.

View File

@ -0,0 +1,82 @@
class StageTI {
texture = "a3\data_f\default_glass_ti_ca.paa";
};
ambient[] = {1,1,1,1};
diffuse[] = {1,1,1,1};
forcedDiffuse[] = {0,0,0,0};
emmisive[] = {0,0,0,1};
specular[] = {0.3,0.3,0.3,1};
specularPower = 50;
PixelShaderID = "Super";
VertexShaderID = "Super";
class Stage1 {
texture = "z\ace\addons\kestrel4500\data\Kestrel4500_nohq.paa";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,1};
pos[] = {0,0,0};
};
};
class Stage2 {
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,1};
pos[] = {0,0,0};
};
};
class Stage3 {
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,1};
pos[] = {0,0,0};
};
};
class Stage4 {
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,1};
pos[] = {0,0,0};
};
};
class Stage5 {
texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,1};
pos[] = {0,0,0};
};
};
class Stage6 {
texture = "#(ai,32,128,1)fresnel(0.85,0.36)";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,1};
pos[] = {0,0,0};
};
};
class Stage7 {
useWorldEnvMap = "true";
texture = "a3\data_f\env_interier_car_ca.paa";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,1};
pos[] = {0,0,0};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -145,7 +145,7 @@ class ACE_Settings {
displayName = CSTRING(painEffectType);
typeName = "SCALAR";
value = 0;
values[] = {"$STR_ACE_Medical_painEffect_Flash", "$STR_ACE_Medical_painEffect_Chroma"};
values[] = {CSTRING(painEffect_Flash), CSTRING(painEffect_Chroma)};
isClientSettable = 1;
};
class GVAR(allowUnconsciousAnimationOnTreatment) {
@ -162,7 +162,7 @@ class ACE_Settings {
description = CSTRING(menuTypeDescription);
typeName = "SCALAR";
value = 0;
values[] = {"$STR_ACE_Medical_useSelection"/*, "$STR_ACE_Medical_useRadial"*/};
values[] = {CSTRING(useSelection)/*, CSTRING(useRadial)*/};
// isClientSettable = 1;
};
};

View File

@ -666,7 +666,7 @@ class CfgVehicles {
side = -1;
model = QUOTE(PATHTOEF(apl,bodybag.p3d));
icon = "";
displayName = $STR_ACE_Medical_Bodybag_Display;
displayName = CSTRING(Bodybag_Display);
EGVAR(dragging,canDrag) = 1;
EGVAR(dragging,dragPosition[]) = {0,1.2,0};
EGVAR(dragging,dragDirection) = 0;
@ -719,7 +719,7 @@ class CfgVehicles {
class ACE_fieldDressingItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Bandage_Basic_Display;
displayName = CSTRING(Bandage_Basic_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -732,7 +732,7 @@ class CfgVehicles {
class ACE_packingBandageItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Packing_Bandage_Display;
displayName = CSTRING(Packing_Bandage_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -745,7 +745,7 @@ class CfgVehicles {
class ACE_elasticBandageItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Bandage_Elastic_Display;
displayName = CSTRING(Bandage_Elastic_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -758,7 +758,7 @@ class CfgVehicles {
class ACE_tourniquetItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Tourniquet_Display;
displayName = CSTRING(Tourniquet_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -771,7 +771,7 @@ class CfgVehicles {
class ACE_morphineItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Morphine_Display;
displayName = CSTRING(Morphine_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -784,7 +784,7 @@ class CfgVehicles {
class ACE_atropineItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Atropine_Display;
displayName = CSTRING(Atropine_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -797,7 +797,7 @@ class CfgVehicles {
class ACE_epinephrineItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Epinephrine_Display;
displayName = CSTRING(Epinephrine_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -810,7 +810,7 @@ class CfgVehicles {
class ACE_plasmaIVItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Plasma_IV;
displayName = CSTRING(Plasma_IV);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -824,7 +824,7 @@ class CfgVehicles {
class ACE_bloodIVItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Blood_IV;
displayName = CSTRING(Blood_IV);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -837,7 +837,7 @@ class CfgVehicles {
class ACE_salineIVItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Saline_IV;
displayName = CSTRING(Saline_IV);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -850,7 +850,7 @@ class CfgVehicles {
class ACE_quikClotItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_QuikClot_Display;
displayName = CSTRING(QuikClot_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -863,7 +863,7 @@ class CfgVehicles {
class ACE_personalAidKitItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Aid_Kit_Display;
displayName = CSTRING(Aid_Kit_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -876,7 +876,7 @@ class CfgVehicles {
class ACE_surgicalKitItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_SurgicalKit_Display;
displayName = CSTRING(SurgicalKit_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
@ -889,7 +889,7 @@ class CfgVehicles {
class ACE_bodyBagItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = $STR_ACE_Medical_Bodybag_Display;
displayName = CSTRING(Bodybag_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {

View File

@ -24,64 +24,64 @@ class CfgWeapons {
scope = 2;
model = QUOTE(PATHTOF(data\bandage.p3d));
picture = QUOTE(PATHTOF(ui\items\fieldDressing_x_ca.paa));
displayName = $STR_ACE_Medical_Bandage_Basic_Display;
descriptionShort = $STR_ACE_Medical_Bandage_Basic_Desc_Short;
descriptionUse = $STR_ACE_Medical_Bandage_Basic_Desc_Use;
displayName = CSTRING(Bandage_Basic_Display);
descriptionShort = CSTRING(Bandage_Basic_Desc_Short);
descriptionUse = CSTRING(Bandage_Basic_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
class ACE_packingBandage: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Packing_Bandage_Display;
displayName = CSTRING(Packing_Bandage_Display);
picture = QUOTE(PATHTOF(ui\items\packingBandage_x_ca.paa));
model = QUOTE(PATHTOF(data\packingbandage.p3d));
descriptionShort = $STR_ACE_Medical_Packing_Bandage_Desc_Short;
descriptionUse = $STR_ACE_Medical_Packing_Bandage_Desc_Use;
descriptionShort = CSTRING(Packing_Bandage_Desc_Short);
descriptionUse = CSTRING(Packing_Bandage_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
class ACE_elasticBandage: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Bandage_Elastic_Display;
displayName = CSTRING(Bandage_Elastic_Display);
picture = QUOTE(PATHTOF(ui\items\elasticBandage_x_ca.paa));
model = "\A3\Structures_F_EPA\Items\Medical\Bandage_F.p3d";
descriptionShort = $STR_ACE_Medical_Bandage_Elastic_Desc_Short;
descriptionUse = $STR_ACE_Medical_Bandage_Elastic_Desc_Use;
descriptionShort = CSTRING(Bandage_Elastic_Desc_Short);
descriptionUse = CSTRING(Bandage_Elastic_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
class ACE_tourniquet: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Tourniquet_Display;
displayName = CSTRING(Tourniquet_Display);
picture = QUOTE(PATHTOF(ui\items\tourniquet_x_ca.paa));
model = QUOTE(PATHTOF(data\tourniquet.p3d));
descriptionShort = $STR_ACE_Medical_Tourniquet_Desc_Short;
descriptionUse = $STR_ACE_Medical_Tourniquet_Desc_Use;
descriptionShort = CSTRING(Tourniquet_Desc_Short);
descriptionUse = CSTRING(Tourniquet_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
class ACE_morphine: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Morphine_Display;
displayName = CSTRING(Morphine_Display);
picture = QUOTE(PATHTOF(ui\items\morphine_x_ca.paa));
model = QUOTE(PATHTOF(data\morphine.p3d));
descriptionShort = $STR_ACE_Medical_Morphine_Desc_Short;
descriptionUse = $STR_ACE_Medical_Morphine_Desc_Use;
descriptionShort = CSTRING(Morphine_Desc_Short);
descriptionUse = CSTRING(Morphine_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
class ACE_atropine: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Atropine_Display;
displayName = CSTRING(Atropine_Display);
picture = QUOTE(PATHTOF(ui\items\atropine_x_ca.paa));
model = QUOTE(PATHTOF(data\atropine.p3d));
descriptionShort = $STR_ACE_Medical_Atropine_Desc_Short;
descriptionUse = $STR_ACE_Medical_Atropine_Desc_Use;
descriptionShort = CSTRING(Atropine_Desc_Short);
descriptionUse = CSTRING(Atropine_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
@ -89,33 +89,33 @@ class CfgWeapons {
};
class ACE_epinephrine: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Epinephrine_Display;
displayName = CSTRING(Epinephrine_Display);
picture = QUOTE(PATHTOF(ui\items\epinephrine_x_ca.paa));
model = QUOTE(PATHTOF(data\epinephrine.p3d));
descriptionShort = $STR_ACE_Medical_Epinephrine_Desc_Short;
descriptionUse = $STR_ACE_Medical_Epinephrine_Desc_Use;
descriptionShort = CSTRING(Epinephrine_Desc_Short);
descriptionUse = CSTRING(Epinephrine_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
class ACE_plasmaIV: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Plasma_IV;
displayName = CSTRING(Plasma_IV);
picture = QUOTE(PATHTOF(ui\items\plasmaIV_x_ca.paa));
descriptionShort = $STR_ACE_Medical_Plasma_IV_Desc_Short;
descriptionUse = $STR_ACE_Medical_Plasma_IV_Desc_Use;
descriptionShort = CSTRING(Plasma_IV_Desc_Short);
descriptionUse = CSTRING(Plasma_IV_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 10;
};
};
class ACE_plasmaIV_500: ACE_plasmaIV {
displayName = $STR_ACE_Medical_Plasma_IV_500;
displayName = CSTRING(Plasma_IV_500);
class ItemInfo: InventoryItem_Base_F {
mass = 5;
};
};
class ACE_plasmaIV_250: ACE_plasmaIV {
displayName = $STR_ACE_Medical_Plasma_IV_250;
displayName = CSTRING(Plasma_IV_250);
class ItemInfo: InventoryItem_Base_F {
mass = 2.5;
};
@ -123,86 +123,86 @@ class CfgWeapons {
class ACE_bloodIV: ACE_ItemCore {
scope = 2;
model = "\A3\Structures_F_EPA\Items\Medical\BloodBag_F.p3d";
displayName = $STR_ACE_Medical_Blood_IV;
displayName = CSTRING(Blood_IV);
picture = QUOTE(PATHTOF(ui\items\bloodIV_x_ca.paa));
descriptionShort = $STR_ACE_Medical_Blood_IV_Desc_Short;
descriptionUse = $STR_ACE_Medical_Blood_IV_Desc_Use;
descriptionShort = CSTRING(Blood_IV_Desc_Short);
descriptionUse = CSTRING(Blood_IV_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 10;
};
};
class ACE_bloodIV_500: ACE_bloodIV {
displayName = $STR_ACE_Medical_Blood_IV_500;
displayName = CSTRING(Blood_IV_500);
class ItemInfo: InventoryItem_Base_F {
mass = 5;
};
};
class ACE_bloodIV_250: ACE_bloodIV {
displayName = $STR_ACE_Medical_Blood_IV_250;
displayName = CSTRING(Blood_IV_250);
class ItemInfo: InventoryItem_Base_F {
mass = 2.5;
};
};
class ACE_salineIV: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Saline_IV;
displayName = CSTRING(Saline_IV);
picture = QUOTE(PATHTOF(ui\items\salineIV_x_ca.paa));
descriptionShort = $STR_ACE_Medical_Saline_IV_Desc_Short;
descriptionUse = $STR_ACE_Medical_Saline_IV_Desc_Use;
descriptionShort = CSTRING(Saline_IV_Desc_Short);
descriptionUse = CSTRING(Saline_IV_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 10;
};
};
class ACE_salineIV_500: ACE_salineIV {
displayName = $STR_ACE_Medical_Saline_IV_500;
displayName = CSTRING(Saline_IV_500);
class ItemInfo: InventoryItem_Base_F {
mass = 5;
};
};
class ACE_salineIV_250: ACE_salineIV {
displayName = $STR_ACE_Medical_Saline_IV_250;
displayName = CSTRING(Saline_IV_250);
class ItemInfo: InventoryItem_Base_F {
mass = 2.5;
};
};
class ACE_quikclot: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_QuikClot_Display;
displayName = CSTRING(QuikClot_Display);
picture = QUOTE(PATHTOF(ui\items\quickclot_x_ca.paa));
descriptionShort = $STR_ACE_Medical_QuikClot_Desc_Short;
descriptionUse = $STR_ACE_Medical_QuikClot_Desc_Use;
descriptionShort = CSTRING(QuikClot_Desc_Short);
descriptionUse = CSTRING(QuikClot_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
class ACE_personalAidKit: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Medical_Aid_Kit_Display;
displayName = CSTRING(Aid_Kit_Display);
picture = QUOTE(PATHTOF(ui\items\personal_aid_kit_x_ca.paa));
descriptionShort = $STR_ACE_Medical_Aid_Kit_Desc_Short;
descriptionUse = $STR_ACE_Medical_Aid_Kit_Desc_Use;
descriptionShort = CSTRING(Aid_Kit_Desc_Short);
descriptionUse = CSTRING(Aid_Kit_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 10;
};
};
class ACE_surgicalKit: ACE_ItemCore {
scope=2;
displayName= $STR_ACE_Medical_SurgicalKit_Display;
displayName= CSTRING(SurgicalKit_Display);
model = QUOTE(PATHTOF(data\surgical_kit.p3d));
picture = QUOTE(PATHTOF(ui\items\surgicalKit_x_ca.paa));
descriptionShort = $STR_ACE_Medical_SurgicalKit_Desc_Short;
descriptionUse = $STR_ACE_Medical_SurgicalKit_Desc_Use;
descriptionShort = CSTRING(SurgicalKit_Desc_Short);
descriptionUse = CSTRING(SurgicalKit_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 15;
};
};
class ACE_bodyBag: ACE_ItemCore {
scope=2;
displayName= $STR_ACE_Medical_Bodybag_Display;
displayName= CSTRING(Bodybag_Display);
model = QUOTE(PATHTOF(data\bodybagItem.p3d));
picture = QUOTE(PATHTOF(ui\items\bodybag_x_ca.paa));
descriptionShort = $STR_ACE_Medical_Bodybag_Desc_Short;
descriptionUse = $STR_ACE_Medical_Bodybag_Desc_Use;
descriptionShort = CSTRING(Bodybag_Desc_Short);
descriptionUse = CSTRING(Bodybag_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
mass = 20;
};

View File

@ -6,9 +6,9 @@ GVAR(heartBeatSounds_Fast) = ["ACE_heartbeat_fast_1", "ACE_heartbeat_fast_2", "A
GVAR(heartBeatSounds_Normal) = ["ACE_heartbeat_norm_1", "ACE_heartbeat_norm_2"];
GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"];
["medical_propagateWound", FUNC(onPropagateWound)] call ace_common_fnc_addEventHandler;
["medical_woundUpdateRequest", FUNC(onWoundUpdateRequest)] call ace_common_fnc_addEventHandler;
["interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call ace_common_fnc_addEventHandler;
["medical_propagateWound", FUNC(onPropagateWound)] call EFUNC(common,addEventHandler);
["medical_woundUpdateRequest", FUNC(onWoundUpdateRequest)] call EFUNC(common,addEventHandler);
["interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call EFUNC(common,addEventHandler);
["medical_onUnconscious", {
if (local (_this select 0)) then {
@ -30,7 +30,7 @@ GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"];
if (!isNil "acre_api_fnc_setGlobalVolume") then { [1] call acre_api_fnc_setGlobalVolume; };
};
};
}] call ace_common_fnc_addEventHandler;
}] call EFUNC(common,addEventHandler);
// Initialize all effects

View File

@ -33,22 +33,23 @@ if ([_caller] call FUNC(isMedic)) then {
} else {
if (_bloodPressureHigh > 20) then {
_output = LSTRING(Check_Bloodpressure_Output_2);
_logOutPut = localize LSTRING(Check_Bloodpressure_Low);
_logOutPut = LSTRING(Check_Bloodpressure_Low);
if (_bloodPressureHigh > 100) then {
_output = LSTRING(Check_Bloodpressure_Output_3);
_logOutPut = localize LSTRING(Check_Bloodpressure_Normal);
_logOutPut = LSTRING(Check_Bloodpressure_Normal);
if (_bloodPressureHigh > 160) then {
_output = LSTRING(Check_Bloodpressure_Output_4);
_logOutPut = localize LSTRING(Check_Bloodpressure_High);
_logOutPut = LSTRING(Check_Bloodpressure_High);
};
};
} else {
if (random(10) > 3) then {
_output = LSTRING(Check_Bloodpressure_Output_5);
_logOutPut = localize LSTRING(Check_Bloodpressure_NoBloodpressure);
_logOutPut = LSTRING(Check_Bloodpressure_NoBloodpressure);
} else {
_output = LSTRING(Check_Bloodpressure_Output_6);
//Fail to find pressure, no logoutput
};
};
};
@ -56,5 +57,5 @@ if ([_caller] call FUNC(isMedic)) then {
["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller]] call EFUNC(common,targetEvent);
if (_logOutPut != "") then {
[_target,"activity", localize LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog);
[_target,"activity", LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog);
};

View File

@ -24,7 +24,7 @@ if (!alive _unit) then {
_heartRate = 0;
};
_heartRateOutput = LSTRING(Check_Pulse_Output_5);
_logOutPut = localize LSTRING(Check_Pulse_None);
_logOutPut = LSTRING(Check_Pulse_None);
if (_heartRate > 1.0) then {
if ([_caller] call FUNC(isMedic)) then {
@ -33,14 +33,14 @@ if (_heartRate > 1.0) then {
} else {
// non medical personel will only find a pulse/HR
_heartRateOutput = LSTRING(Check_Pulse_Output_2);
_logOutPut = localize LSTRING(Check_Pulse_Weak);
_logOutPut = LSTRING(Check_Pulse_Weak);
if (_heartRate > 60) then {
if (_heartRate > 100) then {
_heartRateOutput = LSTRING(Check_Pulse_Output_3);
_logOutPut = localize LSTRING(Check_Pulse_Strong);
_logOutPut = LSTRING(Check_Pulse_Strong);
} else {
_heartRateOutput = LSTRING(Check_Pulse_Output_4);
_logOutPut = localize LSTRING(Check_Pulse_Normal);
_logOutPut = LSTRING(Check_Pulse_Normal);
};
};
};
@ -49,5 +49,5 @@ if (_heartRate > 1.0) then {
["displayTextStructured", [_caller], [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller]] call EFUNC(common,targetEvent);
if (_logOutPut != "") then {
[_unit,"activity", localize LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog);
[_unit,"activity", LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog);
};

View File

@ -25,4 +25,4 @@ _callBack = [_this, 3, {}, [{}]] call BIS_fnc_Param;
_adjustment = _unit getvariable [QGVAR(heartRateAdjustments), []];
_adjustment pushback [_value, _time, _callBack];
_unit setvariable [QGVAR(heartRateAdjustments), _adjustment ];
["Medical_onHeartRateAdjustmentAdded", [_unit, _value, _time]] call ace_common_fnc_localEvent;
["Medical_onHeartRateAdjustmentAdded", [_unit, _value, _time]] call EFUNC(common,localEvent);

View File

@ -47,7 +47,7 @@ if (count _log >= 8) then {
_log pushback [_message,_moment,_type, _arguments];
_unit setvariable [_logVarName, _log, true];
["medical_onLogEntryAdded", [_unit, _type, _message, _arguments]] call ace_common_fnc_localEvent;
["medical_onLogEntryAdded", [_unit, _type, _message, _arguments]] call EFUNC(common,localEvent);
_logs = _unit getvariable [QGVAR(allLogs), []];
if !(_logVarName in _logs) then {

View File

@ -42,4 +42,4 @@ if (!_inList) then {
_log pushback [_newItem, 1, ACE_time];
};
_unit setvariable [QGVAR(triageCard), _log, true];
["Medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call ace_common_fnc_localEvent;
["Medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call EFUNC(common,localEvent);

View File

@ -50,7 +50,7 @@ if (((velocity _unit) select 2 < -5) && {(vehicle _unit == _unit)}) then {
_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 {0};
if (_unit getVariable [QGVAR(isFalling), false]) then {
_newDamage = _newDamage * 0.7;
};

View File

@ -21,7 +21,7 @@ if (_unit getvariable [QGVAR(inCardiacArrest),false]) exitwith {};
_unit setvariable [QGVAR(inCardiacArrest), true,true];
_unit setvariable [QGVAR(heartRate), 0];
["Medical_onEnteredCardiacArrest", [_unit]] call ace_common_fnc_localEvent;
["Medical_onEnteredCardiacArrest", [_unit]] call EFUNC(common,localEvent);
[_unit, true] call FUNC(setUnconscious);
_timeInCardiacArrest = 120 + round(random(600));

View File

@ -74,5 +74,8 @@ _unit setvariable ["ACE_isDead", true, true];
if (isPLayer _unit) then {
_unit setvariable ["isDeadPlayer", true, true];
};
["medical_onSetDead", [_unit]] call EFUNC(common,localEvent);
_unit setdamage 1;
true;

View File

@ -17,7 +17,7 @@
#define DEFAULT_DELAY (round(random(10)+5))
private ["_unit", "_set", "_animState", "_originalPos", "_startingTime","_minWaitingTime", "_force"];
private ["_unit", "_set", "_animState", "_originalPos", "_startingTime","_minWaitingTime", "_force", "_isDead"];
_unit = _this select 0;
_set = if (count _this > 1) then {_this select 1} else {true};
_minWaitingTime = if (count _this > 2) then {_this select 2} else {DEFAULT_DELAY};
@ -47,12 +47,15 @@ if (_unit == ACE_player) then {
};
// if we have unconsciousness for AI disabled, we will kill the unit instead
_isDead = false;
if (!([_unit, GVAR(remoteControlledAI)] call EFUNC(common,isPlayer)) && !_force) then {
_enableUncon = _unit getVariable [QGVAR(enableUnconsciousnessAI), GVAR(enableUnconsciousnessAI)];
if (_enableUncon == 0 or {_enableUncon == 1 and (random 1) < 0.5}) exitWith {
if (_enableUncon == 0 or {_enableUncon == 1 and (random 1) < 0.5}) then {
[_unit, true] call FUNC(setDead);
_isDead = true;
};
};
if (_isDead) exitWith {};
// If a unit has the launcher out, it will sometimes start selecting the primairy weapon while unconscious,
// therefor we force it to select the primairy weapon before going unconscious

View File

@ -30,6 +30,10 @@ _hasMovedOut = _args select 4;
_parachuteCheck = _args select 5;
if (!alive _unit) exitwith {
if ("ACE_FakePrimaryWeapon" in (weapons _unit)) then {
TRACE_1("Removing fake weapon [on death]",_unit);
_unit removeWeapon "ACE_FakePrimaryWeapon";
};
if (GVAR(moveUnitsFromGroupOnUnconscious)) then {
[_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
};
@ -49,6 +53,11 @@ if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith {
// TODO, handle this with carry instead, so we can remove the PFH here.
// Wait until the unit isn't being carried anymore, so we won't end up with wierd animations
if !(([_unit] call FUNC(isBeingCarried)) || ([_unit] call FUNC(isBeingDragged))) then {
if ("ACE_FakePrimaryWeapon" in (weapons _unit)) then {
TRACE_1("Removing fake weapon [on wakeup]",_unit);
_unit removeWeapon "ACE_FakePrimaryWeapon";
};
if (vehicle _unit == _unit) then {
if (animationState _unit == "AinjPpneMstpSnonWrflDnon") then {
[_unit,"AinjPpneMstpSnonWrflDnon_rolltofront", 2] call EFUNC(common,doAnimation);

View File

@ -1585,6 +1585,13 @@
<Czech>%1 zkontroloval srdeční tep: %2</Czech>
<Portuguese>%1 verificou a frequência cardíaca: %2</Portuguese>
</Key>
<Key ID="STR_ACE_Medical_Check_Pulse_None">
<English>None</English>
<Russian>Нет</Russian>
<Polish>Żadna</Polish>
<Spanish>Nada</Spanish>
<German>Keine</German>
</Key>
<Key ID="STR_ACE_Medical_Check_Pulse_Weak">
<English>Weak</English>
<German>Schwach</German>
@ -2930,21 +2937,21 @@
<Spanish>Proporciona un sistema médico para jugadores e IA.</Spanish>
<German>Aktiviert ein medizinisches System für Spieler und KI.</German>
</Key>
<Key ID="STR_ACE_AdvancedMedicalSettings_Module_DisplayName">
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Module_DisplayName">
<English>Advanced Medical Settings [ACE]</English>
<Russian>Настройки усложненной медицины [ACE]</Russian>
<Polish>Zaawansowane ustawienia medyczne [ACE]</Polish>
<Spanish>Ajustes médicos avanzados [ACE]</Spanish>
<German>Erweiterte medizinische Einstellungen [ACE]</German>
</Key>
<Key ID="STR_ACE_AdvancedMedicalSettings_enableFor_DisplayName">
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableFor_DisplayName">
<English>Enabled for</English>
<Russian>Включено для</Russian>
<Polish>Aktywne dla</Polish>
<Spanish>Hablitado para</Spanish>
<German>Aktiviert für</German>
</Key>
<Key ID="STR_ACE_AdvancedMedicalSettings_enableFor_Description">
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableFor_Description">
<English>Select what units the advanced medical system will be enabled for</English>
<Russian>Выберите, на кого будет распространяться усложненная система медицины</Russian>
<Polish>Wybierz dla kogo zaawansowany system medyczny będzie aktywny</Polish>

View File

@ -103,7 +103,7 @@ class GVAR(triageCard) {
y = 0;
w = 0;
h = 0;
text = $STR_ACE_Medical_Triage_Status_None;
text = CSTRING(Triage_Status_None);
style = 0x02;
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
@ -121,7 +121,7 @@ class GVAR(triageCard) {
y = 0;
w = 0;
h = 0;
text = $STR_ACE_Medical_Triage_Status_Minor;
text = CSTRING(Triage_Status_Minor);
style = 0x02;
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
@ -139,7 +139,7 @@ class GVAR(triageCard) {
y = 0;
w = 0;
h = 0;
text = $STR_ACE_Medical_Triage_Status_Delayed;
text = CSTRING(Triage_Status_Delayed);
style = 0x02;
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
@ -157,7 +157,7 @@ class GVAR(triageCard) {
y = 0;
w = 0;
h = 0;
text = $STR_ACE_Medical_Triage_Status_Immediate;
text = CSTRING(Triage_Status_Immediate);
style = 0x02;
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
@ -175,7 +175,7 @@ class GVAR(triageCard) {
y = 0;
w = 0;
h = 0;
text = $STR_ACE_Medical_Triage_Status_Deceased;
text = CSTRING(Triage_Status_Deceased);
style = 0x02;
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";

View File

@ -4,7 +4,7 @@ class CfgVehicles {
author[] = {"Spooner", "tcp"};
scope = 2;
scopeCurator = 2;
displayName = "$STR_ACE_MX2A_DisplayName";
displayName = CSTRING(DisplayName);
vehicleClass = "Items";
class TransportWeapons {
MACRO_ADDWEAPON(ACE_MX2A,1);

View File

@ -2,9 +2,9 @@
class CfgWeapons {
class Binocular;
class ACE_MX2A: Binocular {
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_MX2A_DisplayName";
descriptionShort = "$STR_ACE_MX2A_Description";
author = ECSTRING(common,ACETeam);
displayName = CSTRING(DisplayName);
descriptionShort = CSTRING(Description);
model = PATHTOF(data\ace_mx2a.p3d);
modelOptics = QUOTE(PATHTOEF(apl,LWTS_optic.p3d));
picture = PATHTOF(UI\w_mx2a_ca.paa);

View File

@ -4,11 +4,13 @@
<Key ID="STR_ACE_MX2A_DisplayName">
<English>MX-2A</English>
<Polish>MX-2A</Polish>
<Spanish>MX-2A</Spanish>
</Key>
<Key ID="STR_ACE_MX2A_Description">
<English>Thermal imaging device</English>
<German>Wärmebildgerät</German>
<Polish>Monokular termowizyjny</Polish>
<Spanish>Dispositivo de imagen térmica</Spanish>
</Key>
</Package>
</Project>

View File

@ -185,6 +185,7 @@
<English>This module allows you to customize settings and range of Name Tags.</English>
<Polish>Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion.</Polish>
<German>Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern.</German>
<Spanish>Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre.</Spanish>
</Key>
<Key ID="STR_ACE_NameTags_Disabled">
<English>Disabled</English>
@ -219,14 +220,17 @@
<Key ID="STR_ACE_NameTags_ForceShowOnlyCursor">
<English>Force Show Only on Cursor</English>
<Polish>Wymuś pod kursorem</Polish>
<Spanish>Forzar mostrar solo en el cursor</Spanish>
</Key>
<Key ID="STR_ACE_NameTags_ForceShowOnlyKeypress">
<English>Force Show Only on Keypress</English>
<Polish>Wymuś po wciśnięciu klawisza</Polish>
<Spanish>Forzar mostrar solo al pulsar tecla</Spanish>
</Key>
<Key ID="STR_ACE_NameTags_ForceShowOnlyCursorAndKeypress">
<English>Force Show Only on Cursor and Keypress</English>
<Polish>Wymuś pod kursorem i po wciśnięciu klawisza</Polish>
<Spanish>Forzar mostrar en el cursor y al pulsar tecla</Spanish>
</Key>
<Key ID="STR_ACE_NameTags_NameTagSettings">
<English>Use Nametag settings</English>
@ -243,18 +247,22 @@
<Key ID="STR_ACE_NameTags_ShowPlayerNames_Desc">
<English>Show player names and set their activation. Default: Enabled</English>
<Polish>Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -&gt; ACE3.</Polish>
<Spanish>Mostrar nombres de los jugadores y establecer su activación. Predeterminado: Habilitado</Spanish>
</Key>
<Key ID="STR_ACE_NameTags_ShowSoundWaves_Desc">
<English>Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2.</English>
<Polish>Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2.</Polish>
<Spanish>Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2.</Spanish>
</Key>
<Key ID="STR_ACE_NameTags_TagSize_Name">
<English>Nametags Size</English>
<Polish>Rozmiar imion</Polish>
<Spanish>Tamaño de las Etiquetas de nombre</Spanish>
</Key>
<Key ID="STR_ACE_NameTags_TagSize_Description">
<English>Text and Icon Size Scaling</English>
<Polish>Skalowanie tekstu oraz ikon</Polish>
<Spanish>Escala del texto y el icono</Spanish>
</Key>
</Package>
</Project>

View File

@ -250,10 +250,10 @@ class ACE_settingsMenu {
};
class action_debug: actionClose {
idc = 1102;
text = "$STR_ACE_OptionsMenu_DumpDebug";
text = CSTRING(DumpDebug);
x = X_PART(26.5);
action = QUOTE([] call FUNC(debugDumpToClipboard));
tooltip = "$STR_ACE_OptionsMenu_DumpDebugTooltip";
tooltip = CSTRING(DumpDebugTooltip);
};
};
};

View File

@ -310,10 +310,12 @@
<Key ID="STR_ACE_OptionsMenu_DumpDebug">
<English>Debug To Clipboard</English>
<Polish>Debuguj do schowka</Polish>
<Spanish>Depurar al portapapeles</Spanish>
</Key>
<Key ID="STR_ACE_OptionsMenu_DumpDebugTooltip">
<English>Sends debug information to RPT and clipboard.</English>
<Polish>Wysyła informacje o debugowaniu do RPT oraz schowka.</Polish>
<Spanish>Envía información de depuración al RPT y el portapapeles.</Spanish>
</Key>
</Package>
</Project>
</Project>

View File

@ -4,7 +4,7 @@ class CfgVehicles {
class ACE_Actions {
class ACE_Weapon {
class GVAR(copyRangeCard) {
displayName = "$STR_ACE_RangeCard_CopyRangeCard";
displayName = CSTRING(CopyRangeCard);
distance = 2.0;
condition = QUOTE(_target call FUNC(canCopy));
statement = QUOTE(_target call FUNC(updateClassNames));
@ -15,7 +15,7 @@ class CfgVehicles {
class ACE_SelfActions {
class ACE_Equipment {
class GVAR(open) {
displayName = "$STR_ACE_RangeCard_OpenRangeCard";
displayName = CSTRING(OpenRangeCard);
condition = QUOTE(call FUNC(canShow) && !GVAR(RangeCardOpened));
statement = QUOTE(false call FUNC(openRangeCard));
showDisabled = 0;
@ -24,7 +24,7 @@ class CfgVehicles {
exceptions[] = {"notOnMap"};
};
class GVAR(openCopy) {
displayName = "$STR_ACE_RangeCard_OpenRangeCardCopy";
displayName = CSTRING(OpenRangeCardCopy);
condition = QUOTE(call FUNC(canShowCopy) && !GVAR(RangeCardOpened));
statement = QUOTE(true call FUNC(openRangeCard));
showDisabled = 0;

View File

@ -6,8 +6,8 @@ class CfgWeapons {
class ACE_RangeCard: ACE_ItemCore {
author[] = {"Ruthberg"};
scope = 2;
displayName = "$STR_ACE_RangeCard_Name";
descriptionShort = "$STR_ACE_RangeCard_Description";
displayName = CSTRING(Name);
descriptionShort = CSTRING(Description);
picture = PATHTOF(UI\RangeCard_Icon.paa);
icon = "iconObject_circle";
mapSize = 0.034;

View File

@ -4,30 +4,37 @@
<Key ID="STR_ACE_RangeCard_Name">
<English>Range Card</English>
<Polish>Tabela balistyczna</Polish>
<Spanish>Tarjeta de distancias</Spanish>
</Key>
<Key ID="STR_ACE_RangeCard_Description">
<English>50 METER increments -- MRAD/MRAD (reticle/turrets)</English>
<Polish>Co 50 metrów - MRAD/MRAD (siatka/pokrętło)</Polish>
<Spanish>Incrementos de 50 METROS -- MRAD/MRAD (retícula/torretas)</Spanish>
</Key>
<Key ID="STR_ACE_RangeCard_OpenRangeCard">
<English>Open Range Card</English>
<Polish>Otwórz tabelę balistyczną</Polish>
<Spanish>Abrir tarjeta de distancias</Spanish>
</Key>
<Key ID="STR_ACE_RangeCard_OpenRangeCardCopy">
<English>Open Range Card Copy</English>
<Polish>Otwórz kopię tabeli balistycznej</Polish>
<Spanish>Abrir copia de tarjeta de distancias</Spanish>
</Key>
<Key ID="STR_ACE_RangeCard_RangeCardDialogKey">
<English>Open Range Card</English>
<Polish>Otwórz tabelę balistyczną</Polish>
<Spanish>Abrir tarjeta de distancias</Spanish>
</Key>
<Key ID="STR_ACE_RangeCard_RangeCardCopyDialogKey">
<English>Open Range Card Copy</English>
<Polish>Otwórz kopię tabeli balistycznej</Polish>
<Spanish>Abrir copia de tarjeta de distancias</Spanish>
</Key>
<Key ID="STR_ACE_RangeCard_CopyRangeCard">
<English>Copy Range Card</English>
<Polish>Skopiuj tabelę balistyczną</Polish>
<Spanish>Copiar tarjeta de distancias</Spanish>
</Key>
</Package>
</Project>

View File

@ -98,7 +98,7 @@ if(format["%1", _backpack] != "") then {
// primaryWeapon
if (_primaryweapon != "") then {
if ((_primaryweapon != "") && {_primaryweapon != "ACE_FakePrimaryWeapon"}) then {
{
_unit addMagazine _x;
} forEach _primaryweaponmagazine;

View File

@ -3,10 +3,10 @@ class CfgVehicles {
class CAManBase: Man {
class ACE_SelfActions {
class ACE_Sandbags {
displayName = $STR_ACE_AC_BUILD;
displayName = CSTRING(DeploySandbag);
condition = QUOTE(call FUNC(canDeploy));
statement = QUOTE(call FUNC(deploy));
exceptions[] = {"isNotSwimming", "isNotInside"};
exceptions[] = {"isNotSwimming"};
showDisabled = 1;
priority = 4;
icon = PATHTOF(UI\icon_sandbag_ca.paa);
@ -16,10 +16,10 @@ class CfgVehicles {
class Item_Base_F;
class ACE_Item_Sandbag_empty: Item_Base_F {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
scope = 2;
scopeCurator = 2;
displayName = "$STR_ACE_M_SBEMPTY";
displayName = CSTRING(sandbagEmpty_displayName);
vehicleClass = "Items";
class TransportItems {
class ACE_Sandbag_empty {
@ -30,10 +30,10 @@ class CfgVehicles {
};
/*
class ACE_Item_Sandbag: Item_Base_F {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
scope = 2;
scopeCurator = 2;
displayName = "$STR_ACE_Sandbag";
displayName = CSTRING(sandbag_displayName);
vehicleClass = "Items";
class TransportItems {
class ACE_Sandbag {
@ -45,12 +45,12 @@ class CfgVehicles {
*/
class thingX;
class ACE_SandbagObject: thingX {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
XEH_ENABLED;
scope = 1;
side = -1;
model = PATHTOF(data\ace_sandbag_build.p3d);
displayName = $STR_ACE_Sandbag;
displayName = CSTRING(sandbag_displayName);
typicalCargo[] = {};
armor = 12000; // Withstand 200 5.56 bullets before sandbag hull is cheese
mapSize = 0.4;
@ -76,7 +76,7 @@ class CfgVehicles {
condition = "true";
class ACE_PickUp {
selection = "";
displayName = "$STR_ACE_AC_PICKUPSB";
displayName = CSTRING(PICKUPSB);
distance = 4;
condition = QUOTE(!(_player getVariable [ARR_2('ace_sandbag_usingSandbag',false)]));
statement = QUOTE([ARR_2(_target,_player)] call FUNC(pickup));
@ -87,7 +87,7 @@ class CfgVehicles {
};
class ACE_Carry {
selection = "";
displayName = "$STR_ACE_AC_CARRYSB";
displayName = CSTRING(CARRYSB);
distance = 4;
condition = QUOTE(!(_player getVariable [ARR_2('ace_sandbag_usingSandbag',false)]));
statement = QUOTE([ARR_2(_target,_player)] call FUNC(carry));

View File

@ -4,9 +4,9 @@ class CfgWeapons {
class InventoryItem_Base_F;
class ACE_Sandbag_empty: ACE_ItemCore {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
scope = 2;
displayName = "$STR_ACE_M_SBEMPTY";
displayName = CSTRING(sandbagEmpty_displayName);
model = PATHTOF(data\ace_sandbag_m.p3d);
picture = PATHTOF(data\m_sandbag_ca.paa);
@ -16,9 +16,9 @@ class CfgWeapons {
};
/*
class ACE_Sandbag: ACE_ItemCore {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
scope = 2;
displayName = "$STR_ACE_Sandbag";
displayName = CSTRING(sandbag_displayName);
model = PATHTOF(data\ace_sandbag_build.p3d);
picture = PATHTOF(data\m_sandbag_ca.paa);

View File

@ -46,7 +46,7 @@ _unit setVariable [QGVAR(usingSandbag), true];
GVAR(sandBag) setDir (GVAR(deployDirection) + getDir ACE_player);
}, 0, []] call CBA_fnc_addPerFrameHandler;
[localize "STR_ACE_AC_DROP", "", ""] call EFUNC(interaction,showMouseHint);
[localize LSTRING(DropSandbag), "", ""] call EFUNC(interaction,showMouseHint);
GVAR(carrier) setVariable [QGVAR(drop),
[GVAR(carrier), "DefaultAction",

View File

@ -32,7 +32,7 @@ GVAR(deployPFH) = [{
GVAR(sandBag) setDir (GVAR(deployDirection) + getDir ACE_player);
}, 0, []] call CBA_fnc_addPerFrameHandler;
[localize "STR_ACE_AC_CONF", localize "STR_ACE_AC_CANCEL", localize "STR_ACE_Sandbag_ScrollAction"] call EFUNC(interaction,showMouseHint);
[localize LSTRING(ConfirmDeployment), localize LSTRING(CancelDeployment), localize LSTRING(ScrollAction)] call EFUNC(interaction,showMouseHint);
GVAR(placer) setVariable [QGVAR(Deploy),
[GVAR(placer), "DefaultAction",

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="sandbag">
<Key ID="STR_ACE_Sandbag">
<Key ID="STR_ACE_Sandbag_sandbag_displayName">
<English>Sandbag</English>
<German>Sandsack</German>
<Russian>Мешок с песком</Russian>
@ -12,7 +12,7 @@
<Italian>Sacco di Sabbia</Italian>
<Hungarian>Homokzsák</Hungarian>
</Key>
<Key ID="STR_ACE_M_SBEMPTY">
<Key ID="STR_ACE_Sandbag_sandbagEmpty_displayName">
<English>Sandbag (empty)</English>
<German>Sandsack (leer)</German>
<Russian>Мешок с песком (пустой)</Russian>
@ -23,7 +23,7 @@
<Italian>Sacco di Sabbia (Vuoto)</Italian>
<Hungarian>Homokzsák (üres)</Hungarian>
</Key>
<Key ID="STR_ACE_CANNOTSB">
<Key ID="STR_ACE_Sandbag_CANNOTSB">
<English>Cannot build here</English>
<German>Nicht möglich</German>
<Russian>Установка на этом месте невозможна</Russian>
@ -34,7 +34,7 @@
<Italian>Impossibile costruire qui</Italian>
<Hungarian>Nem teheted ide</Hungarian>
</Key>
<Key ID="STR_ACE_AC_PICKUPSB">
<Key ID="STR_ACE_Sandbag_PICKUPSB">
<English>Pick up Sandbag</English>
<German>Sandsack abbauen</German>
<Russian>Взять мешок с песком</Russian>
@ -45,7 +45,7 @@
<Italian>Prendi Sacco di Sabbia</Italian>
<Hungarian>Homokzsák felvétele</Hungarian>
</Key>
<Key ID="STR_ACE_AC_CARRYSB">
<Key ID="STR_ACE_Sandbag_CARRYSB">
<English>Carry Sandbag</English>
<German>Sandsack tragen</German>
<Russian>Нести мешок с песком</Russian>
@ -56,7 +56,7 @@
<Italian>Trasporta Sacco di Sabbia</Italian>
<Hungarian>Homokzsák cipelése</Hungarian>
</Key>
<Key ID="STR_ACE_AC_ENDCARRYSB">
<Key ID="STR_ACE_Sandbag_ENDCARRYSB">
<English>End Carrying</English>
<German>Tragen beenden</German>
<Russian>Завершить переноску</Russian>
@ -67,7 +67,7 @@
<Italian>Fine Trasporto</Italian>
<Hungarian>Cipelés abbahagyása</Hungarian>
</Key>
<Key ID="STR_ACE_AC_DROP">
<Key ID="STR_ACE_Sandbag_DropSandbag">
<English>Drop Sandbag</English>
<German>Sandsack ablegen</German>
<Russian>Положить мешок</Russian>
@ -78,7 +78,7 @@
<Italian>Lascia Sacco di Sabbia</Italian>
<Hungarian>Homokzsák eldobása</Hungarian>
</Key>
<Key ID="STR_ACE_AC_CONF">
<Key ID="STR_ACE_Sandbag_ConfirmDeployment">
<English>Confirm Deployment</English>
<German>Aufbauen</German>
<Russian>Подтвердить установку</Russian>
@ -89,7 +89,7 @@
<Italian>Conferma Posizionamento</Italian>
<Hungarian>Lerak</Hungarian>
</Key>
<Key ID="STR_ACE_AC_CANCEL">
<Key ID="STR_ACE_Sandbag_CancelDeployment">
<English>Cancel Deployment</English>
<German>Abbrechen</German>
<Russian>Отменить установку</Russian>
@ -100,7 +100,7 @@
<Italian>Cancella Posizionamento</Italian>
<Hungarian>Visszavonás</Hungarian>
</Key>
<Key ID="STR_ACE_AC_BUILD">
<Key ID="STR_ACE_Sandbag_DeploySandbag">
<English>Deploy Sandbag</English>
<German>Sandsack aufbauen</German>
<Russian>Установить мешок с песком</Russian>
@ -111,7 +111,7 @@
<Italian>Posiziona Sacco di Sabbia</Italian>
<Hungarian>Homokzsák lerakása</Hungarian>
</Key>
<Key ID="STR_ACE_V_SANDBOX">
<Key ID="STR_ACE_Sandbag_SANDBOX">
<English>Sandbag Box</English>
<German>Sandsack Kiste</German>
<Russian>Ящик мешков с песком</Russian>
@ -122,7 +122,7 @@
<Italian>Contenitore Sacchi di Sabbia</Italian>
<Hungarian>Homokzsákos láda</Hungarian>
</Key>
<Key ID="STR_ACE_NOSAND">
<Key ID="STR_ACE_Sandbag_NOSAND">
<English>Here is no sand</English>
<German>Hier gibt es keinen Sand</German>
<Russian>Здесь нет песка</Russian>

View File

@ -11,7 +11,6 @@ class CfgVehicles {
showDisabled = 0;
priority = 2;
icon = PATHTOF(UI\w_spottingscope_ca.paa);
exceptions[] = {"isNotInside"};
};
};
};

View File

@ -11,7 +11,6 @@ class CfgVehicles {
showDisabled = 0;
priority = 2;
icon = PATHTOF(UI\w_sniper_tripod_ca.paa);
exceptions[] = {"isNotInside"};
};
};
};

View File

@ -25,15 +25,23 @@
</Key>
<Key ID="STR_ACE_Tripod_PickUp">
<English>Pick up SSWT Kit</English>
<Polish>Podnieś trójnóg snajperski</Polish>
<Spanish>Coger equipo SSWT</Spanish>
</Key>
<Key ID="STR_ACE_Tripod_Adjust">
<English>Adjust SSWT Kit</English>
<Polish>Reguluj trójnóg snajperski</Polish>
<Spanish>Ajustar equipo SSWT</Spanish>
</Key>
<Key ID="STR_ACE_Tripod_Done">
<English>Done</English>
<Polish>Gotowe</Polish>
<Spanish>Hecho</Spanish>
</Key>
<Key ID="STR_ACE_Tripod_ScrollAction">
<English>+ Modifier, adjust</English>
<Polish>+ Modyfikator, regulacja</Polish>
<Spanish>+ Modificador, ajuste</Spanish>
</Key>
</Package>
</Project>

1
addons/ui/$PBOPREFIX$ Normal file
View File

@ -0,0 +1 @@
z\ace\Addons\ui

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