Merge branch 'master' into allStringtableMacros

Conflicts:
	addons/kestrel4500/CfgWeapons.hpp
This commit is contained in:
PabstMirror 2015-06-07 12:24:40 -05:00
commit fb9c1e14a3
65 changed files with 2009 additions and 16 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

@ -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 = $STR_ACE_HUNTIR_ROUND;
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 = $STR_ACE_HUNTIR_MON_ACT;
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 = $STR_ACE_HUNTIR_MON;
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 = $STR_ACE_HUNTIR_MON;
picture = PATHTOF(UI\w_huntir_monitor_ca.paa);
descriptionShort = $STR_ACE_HUNTIR_MON;
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 = "$STR_ACE_HUNTIR_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 = "$STR_ACE_HUNTIR_ALT";
};
class CAM_No: CAM_HEIGHT {
x = __X + __W - 0.64;
text = "$STR_ACE_HUNTIR_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 = "$STR_ACE_HUNTIR_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 = "$STR_ACE_HUNTIR_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 = "$STR_ACE_HUNTIR_HELP_EXIT";
blinkingPeriod = 0;
};
class HELP1: HELP0 {
y = __Y + 0.06;
text = "$STR_ACE_HUNTIR_HELP_ZOOM";
};
class HELP2: HELP0 {
y = __Y + 0.09;
text = "$STR_ACE_HUNTIR_HELP_CAM";
};
class HELP3: HELP0 {
y = __Y + 0.12;
text = "$STR_ACE_HUNTIR_HELP_ROT";
};
class HELP4: HELP0 {
y = __Y + 0.15;
text = "$STR_ACE_HUNTIR_HELP_ELV";
};
class HELP5: HELP0 {
y = __Y + 0.18;
text = "$STR_ACE_HUNTIR_HELP_MOD";
};
class HELP6: HELP0 {
y = __Y + 0.21;
text = "$STR_ACE_HUNTIR_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_ROUND">
<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_MON">
<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_MON_ACT">
<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

@ -4,11 +4,11 @@ class CfgWeapons {
class InventoryItem_Base_F;
class ACE_Kestrel4500: ACE_ItemCore {
author[] = {ECSTRING(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;

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[] = {1,1,1,1};
specularPower = 0;
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,0,0,0)";
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

@ -2703,544 +2703,635 @@
</Key>
<Key ID="STR_ACE_Medical_Category_DisplayName">
<English>ACE Medical</English>
<Russian>ACE: медицина</Russian>
<Polish>ACE Opcje medyczne</Polish>
<Spanish>Médico ACE</Spanish>
<German>ACE-Medicsystem</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_Module_DisplayName">
<English>Medical Settings [ACE]</English>
<Russian>Настройки медицины [ACE]</Russian>
<Polish>Ustawienia medyczne [ACE]</Polish>
<Spanish>Ajustes médicos [ACE]</Spanish>
<German>Medizinische Einstellungen [ACE]</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_level_DisplayName">
<English>Medical Level</English>
<Russian>Сложность медицины</Russian>
<Polish>Poziom medyczny</Polish>
<Spanish>Nivel médico</Spanish>
<German>Medizinisches Level</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_level_Description">
<English>What is the medical simulation level?</English>
<Russian>Каков уровень сложности медицинской системы?</Russian>
<Polish>Jaki jest poziom symulacji medycznej?</Polish>
<Spanish>¿Cuál es el nivel de simulación médica?</Spanish>
<German>Wie hoch soll das medizinische Simulationslevel sein?</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_basic">
<English>Basic</English>
<Russian>Базовый</Russian>
<Polish>Podstawowy</Polish>
<Spanish>Básico</Spanish>
<German>Standard</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_advanced">
<English>Advanced</English>
<Russian>Усложненный</Russian>
<Polish>Zaawansowany</Polish>
<Spanish>Avanzado</Spanish>
<German>Erweitert</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_DisplayName">
<English>Medics setting</English>
<Russian>Настройки медиков</Russian>
<Polish>Poziom medyków</Polish>
<Spanish>Configuración médica</Spanish>
<German>Medizinische Einstellungen</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_Description">
<English>What is the level of detail prefered for medics?</English>
<Russian>Каков уровень подробностей для медиков?</Russian>
<Polish>Jaki jest poziom detali medycznych wyświetlanych dla medyków?</Polish>
<Spanish>¿Cuál es el nivel de detalle preferido para los médicos?</Spanish>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_disable">
<English>Disable medics</English>
<Russian>Отключить медиков</Russian>
<Polish>Wyłącz medyków</Polish>
<Spanish>Desactivar médicos</Spanish>
<German>Sanitäter deaktivieren</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_DisplayName">
<English>Enable Litter</English>
<Russian>Включить мусор</Russian>
<Polish>Aktywuj odpadki</Polish>
<Spanish>Activar restos médicos</Spanish>
<German>Abfälle aktivieren</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_Description">
<English>Enable litter being created upon treatment</English>
<Russian>Включить появление мусора после лечения</Russian>
<Polish>Twórz odpadki medyczne podczas leczenia</Polish>
<Spanish>Activar los restos médicos que se crean en el tratamiento</Spanish>
<German>Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_DisplayName">
<English>Life time of litter objects</English>
<Russian>Время удаления мусора</Russian>
<Polish>Długość życia odpadków</Polish>
<Spanish>Tiempo de vida de los restos médicos</Spanish>
<German>Dauer des angezeigten Abfalls</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_Description">
<English>How long should litter objects stay? In seconds. -1 is forever.</English>
<Russian>Как долго мусор будет оставаться на земле? В секундах. -1 означает бесконечное время.</Russian>
<Polish>Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności.</Polish>
<Spanish>¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre.</Spanish>
<German>Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer.</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableScreams_DisplayName">
<English>Enable Screams</English>
<Russian>Включить крики</Russian>
<Polish>Aktywuj wrzaski</Polish>
<Spanish>Activar gritos</Spanish>
<German>Schreie aktivieren</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableScreams_Description">
<English>Enable screaming by injuried units</English>
<Russian>Включить крики раненных бойцов</Russian>
<Polish>Aktywuj wrzeszczenie z bólu przez ranne jednostki</Polish>
<Spanish>Activar gritos para unidades heridas</Spanish>
<German>Aktiviere Schreie bei verletzten Einheiten</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_playerDamageThreshold_DisplayName">
<English>Player Damage</English>
<Russian>Урон игроку</Russian>
<Polish>Próg obrażeń graczy</Polish>
<Spanish>Daño de jugador</Spanish>
<German>Spielerschaden</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_playerDamageThreshold_Description">
<English>What is the damage a player can take before being killed?</English>
<Russian>Какой уровень урона необходим, чтобы убить игрока?</Russian>
<Polish>Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity?</Polish>
<Spanish>¿Cuál es el daño que un jugador puede sufrir antes de morir?</Spanish>
<German>Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird?</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_AIDamageThreshold_DisplayName">
<English>AI Damage</English>
<Russian>Урон ботам</Russian>
<Polish>Próg obrażeń AI</Polish>
<Spanish>Daño IA</Spanish>
<German>KI-Schaden</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_AIDamageThreshold_Description">
<English>What is the damage an AI can take before being killed?</English>
<Russian>Какой уровень урона необходим, чтобы убить бота?</Russian>
<Polish>Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite?</Polish>
<Spanish>¿Cuál es el daño que la IA puede sufrir antes de morir?</Spanish>
<German>Wie viel Schaden kann eine KI erleiden, bis sie getötet wird?</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableUnconsciousnessAI_DisplayName">
<English>AI Unconsciousness</English>
<Russian>Потеря сознания ботами</Russian>
<Polish>Nieprzytomność AI</Polish>
<Spanish>Inconsciencia IA</Spanish>
<German>KI-Bewusstlosigkeit</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableUnconsciousnessAI_Description">
<English>Allow AI to go unconscious</English>
<Russian>Позволить ботам терять сознание</Russian>
<Polish>Czy AI może być nieprzytomne od odniesionych obrażeń?</Polish>
<Spanish>Permita a la IA caer inconsciente</Spanish>
<German>KI kann bewusstlos werden</German>
</Key>
<Key ID="STR_ACE_Medical_disabled">
<English>Disabled</English>
<Russian>Отключено</Russian>
<Polish>Wyłączone</Polish>
<Spanish>Activado</Spanish>
<German>Deaktiviert</German>
</Key>
<Key ID="STR_ACE_Medical_enabled">
<English>Enabled</English>
<Russian>Включено</Russian>
<Polish>Włączone</Polish>
<Spanish>Desactivado</Spanish>
<German>Aktiviert</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_preventInstaDeath_DisplayName">
<English>Prevent instant death</English>
<Russian>Отключить мгновенную смерть</Russian>
<Polish>Wył. natychmiast. śmierć</Polish>
<Spanish>Prevenir muerte instantánea</Spanish>
<German>Verhindere direkten Tod</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_preventInstaDeath_Description">
<English>Have a unit move to unconscious instead of death</English>
<Russian>Бойцы теряют сознание вместо того, чтобы умирать</Russian>
<Polish>Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń</Polish>
<Spanish>Mover una unidad a inconsciente en vez de a muerta</Spanish>
<German>Lässt eine Einheit bewusstlos werden anstatt zu sterben</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_bleedingCoefficient_DisplayName">
<English>Bleeding coefficient</English>
<Russian>Коэффициент потери крови</Russian>
<Polish>Mnożnik krwawienia</Polish>
<Spanish>Coeficiente de sangrado</Spanish>
<German>Verblutungsmultiplikator</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_bleedingCoefficient_Description">
<English>Coefficient to modify the bleeding speed</English>
<Russian>Коэффициент, изменяющий скорость кровопотери</Russian>
<Polish>Mnożnik modyfikujący prędkość wykrwawiania się</Polish>
<Spanish>Coeficiente para modificar la velocidad de sangrado</Spanish>
<German>Multiplikator um die Verblutungsgeschwindigkeit zu verändern</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_painCoefficient_DisplayName">
<English>Pain coefficient</English>
<Russian>Коэффициент боли</Russian>
<Polish>Mnożnik bólu</Polish>
<Spanish>Coeficiente de dolor</Spanish>
<German>Schmerzmultiplikator</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_painCoefficient_Description">
<English>Coefficient to modify the pain intensity</English>
<Russian>Коэффициент, изменяющий уровень боли</Russian>
<Polish>Mnożnik modyfikujący intensywność bólu</Polish>
<Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
<German>Multiplikator um den Schmerzintensität zu verändern</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_keepLocalSettingsSynced_DisplayName">
<English>Sync status</English>
<Russian>Синхронизация статуса</Russian>
<Polish>Synchronizuj status</Polish>
<Spanish>Sincronizador estado</Spanish>
<German>Status synchronisieren</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_keepLocalSettingsSynced_Description">
<English>Keep unit status synced. Recommended on.</English>
<Russian>Синхронизировать статус юнитов. Рекомендуется включить.</Russian>
<Polish>Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej.</Polish>
<Spanish>Mantener el estado de la unidad sincronizado. Recomendado activado</Spanish>
<German>Status der Einheit synchron halten. Sollte aktiviert bleiben.</German>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_Module_Description">
<English>Provides a medical system for both players and AI.</English>
<Russian>Включает медицинскую систему как для игроков, так и для ботов.</Russian>
<Polish>Moduł ten dostarcza system medyczny dla graczy oraz AI.</Polish>
<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_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_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_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>
<Spanish>Seleccione para qué unidades será habilitado el sistema médico avanzado</Spanish>
<German>Wähle aus welche Einheiten das erweiterte medizinische System haben</German>
</Key>
<Key ID="STR_ACE_Medical_playeronly">
<English>Players only</English>
<Russian>Игроков</Russian>
<Polish>Tylko dla graczy</Polish>
<Spanish>Solo jugadores</Spanish>
<German>Nur Spieler</German>
</Key>
<Key ID="STR_ACE_Medical_playersandai">
<English>Players and AI</English>
<Russian>Игроков и ботов</Russian>
<Polish>Gracze oraz AI</Polish>
<Spanish>Jugadors e IA</Spanish>
<German>Spieler und KI</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableAdvancedWounds_DisplayName">
<English>Enable Advanced wounds</English>
<Russian>Включить усложненные ранения</Russian>
<Polish>Akt. zaawansowane rany</Polish>
<Spanish>Activa heridas avanzadas</Spanish>
<German>Aktiviere erweiterte Wunden</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableAdvancedWounds_Description">
<English>Allow reopening of bandaged wounds?</English>
<Russian>Будут ли открываться уже перевязанные раны?</Russian>
<Polish>Pozwól na otwieranie się zabandażowanych ran?</Polish>
<Spanish>Permitir la reapertura de las heridas vendadas?</Spanish>
<German>Erlaube das Öffnen von bandagierten Wunden?</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableVehicleCrashes_DisplayName">
<English>Vehicle Crashes</English>
<Russian>Аварии транспорта</Russian>
<Polish>Obrażenia od kolizji</Polish>
<Spanish>Accidentes de vehículos</Spanish>
<German>Fahrzeugunfälle</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableVehicleCrashes_Description">
<English>Do units take damage from a vehicle crash?</English>
<Russian>Должны ли юниты получать повреждения от аварий на транспорте?</Russian>
<Polish>Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów?</Polish>
<Spanish>¿Las unidades reciben daño de un accidente de tráfico?</Spanish>
<German>Bekommen Einheiten von Fahrzeugunfällen Schaden?</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_PAK_DisplayName">
<English>Allow PAK</English>
<Russian>Использование аптечки</Russian>
<Polish>Ust. apteczek osobistych</Polish>
<Spanish>Permitir EPA</Spanish>
<German>Erlaube Erstehilfekasten</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_PAK_Description">
<English>Who can use the PAK for full heal?</English>
<Russian>Кому разрешено выполнять полное лечение с помощью аптечки?</Russian>
<Polish>Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia?</Polish>
<Spanish>¿Quién puede utilizar el EPA para una cura completa?</Spanish>
<German>Wer kann den Erstehilfekasten für eine Endheilung verwenden?</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_anyone">
<English>Anyone</English>
<Russian>Кем угодно</Russian>
<Polish>Wszyscy</Polish>
<Spanish>Nadie</Spanish>
<German>Jeder</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Medic">
<English>Medics only</English>
<Russian>Только медиками</Russian>
<Polish>Tylko medycy</Polish>
<Spanish>Solo médicos</Spanish>
<German>Nur Sanitäter</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Special">
<English>Doctors only</English>
<Russian>Только врачами</Russian>
<Polish>Tylko doktorzy</Polish>
<Spanish>Solo doctores</Spanish>
<German>Nur Ärzte</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_PAK_DisplayName">
<English>Remove PAK on use</English>
<Russian>Удалять аптечки после использования</Russian>
<Polish>Usuń apteczkę po użyciu</Polish>
<Spanish>Eliminar EPA después del uso</Spanish>
<German>Entferne Erstehilfekasten bei Verwendung</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_PAK_Description">
<English>Should PAK be removed on usage?</English>
<Russian>Нужно ли удалять аптечки после использования?</Russian>
<Polish>Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu?</Polish>
<Spanish>El EPA será eliminado después de usarlo</Spanish>
<German>Sollen Erstehilfekästen bei Verwendung entfernt werden?</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_PAK_DisplayName">
<English>Locations PAK</English>
<Russian>Место использования аптечки</Russian>
<Polish>Ogr. apteczek osobistych</Polish>
<Spanish>Ubicacions del EPA</Spanish>
<German>Orte für Erstehilfekasten</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_PAK_Description">
<English>Where can the personal aid kit be used?</English>
<Russian>Где может использоваться аптечка?</Russian>
<Polish>Gdzie można korzystać z apteczek osobistych?</Polish>
<Spanish>¿Dónde se puede utilizar el equipo de primeros auxilios?</Spanish>
<German>Wo kann der Erstehilfekasten verwendet werden?</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_anywhere">
<English>Anywhere</English>
<Russian>Где угодно</Russian>
<Polish>Wszędzie</Polish>
<Spanish>Donde sea</Spanish>
<German>Überall</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_vehicle">
<English>Medical vehicles</English>
<Russian>В медицинском транспорте</Russian>
<Polish>Pojazdy medyczne</Polish>
<Spanish>Vehiculos médicos</Spanish>
<German>Medizinische Fahrzeuge</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_facility">
<English>Medical facility</English>
<Russian>В госпитале</Russian>
<Polish>Budynki medyczne</Polish>
<Spanish>Centro médico</Spanish>
<German>Medizinische Einrichtungen</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_vehicleAndFacility">
<English>Vehicles &amp; facility</English>
<Russian>В транспорте и госпитале</Russian>
<Polish>Pojazdy i budynki medyczne</Polish>
<Spanish>Vehículos y centros</Spanish>
<German>Fahrzeuge &amp; Einrichtungen</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_disabled">
<English>Disabled</English>
<Russian>Отключено</Russian>
<Polish>Wyłączone</Polish>
<Spanish>Desactivado</Spanish>
<German>Deaktiviert</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName">
<English>Allow Surgical kit (Adv)</English>
<Russian>Разрешить хирургический набор (усл.)</Russian>
<Polish>Ust. zestawu chirurg.</Polish>
<Spanish>Permitir equipo quirúrgico (Avanzado)</Spanish>
<German>Erlaube Operationskasten</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_SurgicalKit_Description">
<English>Who can use the surgical kit?</English>
<Russian>Кто может использовать хирургический набор?</Russian>
<Polish>Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran?</Polish>
<Spanish>¿Quién puede utilizar el equipo quirúrgico?</Spanish>
<German>Wer kann den Operationskasten verwenden?</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName">
<English>Remove Surgical kit (Adv)</English>
<Russian>Удалять хирургический набор (усл.)</Russian>
<Polish>Usuń zest. chir. po użyciu</Polish>
<Spanish>Eliminar equipo quirúrgico (Avanzado)</Spanish>
<German>Enrtferne Operationskasten (erweitert)</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_SurgicalKit_Description">
<English>Should Surgical kit be removed on usage?</English>
<Russian>Нужно ли удалять хирургический набор после использования?</Russian>
<Polish>Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu?</Polish>
<Spanish>Eliminar el equipo quirúrgico después del uso</Spanish>
<German>Entferne Operationskästen bei Verwendung?</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName">
<English>Locations Surgical kit (Adv)</English>
<Russian>Место использования хирургического набора (усл.)</Russian>
<Polish>Ogr. zestawu chirurg.</Polish>
<Spanish>Ubicaciones del equipo quirúrgico (Avanzado)</Spanish>
<German>Orte für Operationskästen (erweitert)</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_SurgicalKit_Description">
<English>Where can the Surgical kit be used?</English>
<Russian>Где может использоваться хирургический набор?</Russian>
<Polish>Gdzie można korzystać z zestawu chirurgicznego?</Polish>
<Spanish>Dónde se puede utilizar el equipo quirúrgico</Spanish>
<German>Wo kann der Operationskasten verwendet werden?</German>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Module_Description">
<English>Configure the treatment settings from ACE Medical</English>
<Russian>Настройка лечения в медицинской системе ACE</Russian>
<Polish>Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE</Polish>
<Spanish>Configure las opciones de tratamiento del ACE Médico</Spanish>
<German>Behandlungseinstellungen vom ACE-Medical konfigurieren</German>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_Module_DisplayName">
<English>Revive Settings [ACE]</English>
<Russian>Настройки реанимации [ACE]</Russian>
<Polish>Ustawienia wskrzeszania [ACE]</Polish>
<Spanish>Sistema de resucitado [ACE]</Spanish>
<German>Wiederbelebungseinstellungen [ACE]</German>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_enableRevive_DisplayName">
<English>Enable Revive</English>
<Russian>Включить реанимацию</Russian>
<Polish>Aktywuj wskrzeszanie</Polish>
<Spanish>Habilitar resucitado</Spanish>
<German>Erlaube Wiederbelebung</German>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_enableRevive_Description">
<English>Enable a basic revive system</English>
<Russian>Включить базовую систему реанимации</Russian>
<Polish>Aktywuj podstawowy system wskrzeszania</Polish>
<Spanish>Habilitar un sistema básico de resucitado</Spanish>
<German>Aktiviere Standard-Wiederbelebungssystem</German>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_maxReviveTime_DisplayName">
<English>Max Revive time</English>
<Russian>Макс. время реанимации</Russian>
<Polish>Maks. czas agonii</Polish>
<Spanish>Tiempo máximo de resucitado</Spanish>
<German>Maximale Wiederbelebungszeit</German>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_maxReviveTime_Description">
<English>Max amount of seconds a unit can spend in revive state</English>
<Russian>Максимальное время в секундах, в течение которого бойца можно реанимировать</Russian>
<Polish>Maksymalna długość agonii w sekundach (czas na wskrzeszenie)</Polish>
<Spanish>Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación</Spanish>
<German>Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann</German>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_amountOfReviveLives_DisplayName">
<English>Max Revive lives</English>
<Russian>Макс. кол-во жизней</Russian>
<Polish>Maks. ilość wskrzeszeń</Polish>
<Spanish>Vidas máximas de resucitado</Spanish>
<German>Maximale Leben bei Wiederbelebung</German>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_amountOfReviveLives_Description">
<English>Max amount of lives a unit. 0 or -1 is disabled.</English>
<Russian>Максимальное количество жизней у бойца. Чтобы отключить, укажите 0 или -1.</Russian>
<Polish>Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć.</Polish>
<Spanish>Cantidad máxima de vidas por unidad. 0 o -1 es desactivado.</Spanish>
<German>Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert.</German>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_Module_Description">
<English>Provides a medical system for both players and AI.</English>
<Russian>Включает медицинскую систему как для игроков, так и для ботов.</Russian>
<Polish>Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO.</Polish>
<Spanish>Proporciona un sistema médico para jugadores e IA.</Spanish>
<German>Aktiviert das Medicsystem für Spieler und KI.</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_Module_DisplayName">
<English>Set Medic Class [ACE]</English>
<Russian>Сделать медиком [ACE]</Russian>
<Polish>Ustaw klasę medyka [ACE]</Polish>
<Spanish>Establecer case médica [ACE]</Spanish>
<German>Setze Sanitäterklassen [ACE]</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_EnableList_DisplayName">
<English>List</English>
<Russian>Список</Russian>
<Polish>Lista</Polish>
<Spanish>Lista</Spanish>
<German>Liste</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_EnableList_Description">
<English>List of unit names that will be classified as medic, separated by commas.</English>
<Russian>Список имен юнитов, которые будут считаться медиками (через запятую).</Russian>
<Polish>Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami.</Polish>
<Spanish>Lista de los nombres de las unidades que se clasifican como médico, separados por comas.</Spanish>
<German>Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt.</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_DisplayName">
<English>Is Medic</English>
<Russian>Является медиком</Russian>
<Polish>Klasa medyczna</Polish>
<Spanish>Es médico</Spanish>
<German>Ist Sanitäter</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_Description">
<English></English>
<Russian></Russian>
<Polish></Polish>
<German>Dieses Modul legt fest welche Einheit ein Sanitäter ist.</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_none">
<English>None</English>
<Russian>Нет</Russian>
<Polish>Żadna</Polish>
<Spanish>Nada</Spanish>
<German>Keine</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_medic">
<English>Regular medic</English>
<Russian>Обычный медик</Russian>
<Polish>Zwykły medyk</Polish>
<Spanish>Médico regular</Spanish>
<German>Normaler Sanitäter</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_doctor">
<English>Doctor (Only Advanced Medics)</English>
<Russian>Врач (только усложн.)</Russian>
<Polish>Doktor (tylko zaawansowani medycy)</Polish>
<Spanish>Doctor (Solo medicina avanzada)</Spanish>
<German>Arzt (nur erweiterte Sanitäter)</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_Module_Description">
<English>Assigns the ACE medic class to a unit</English>
<Russian>Задает юниту класс медика</Russian>
<Polish>Moduł ten przypisuje klasę medyka ACE do jednostek.</Polish>
<Spanish>Asigna la clase médico ACE a una unidad</Spanish>
<German>Weise die ACE-Sanitäterklasse einer Einheit zu</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_Module_DisplayName">
<English>Set Medical Vehicle [ACE]</English>
<Russian>Сделать мед. транспортом [ACE]</Russian>
<Polish>Ustaw pojazd medyczny [ACE]</Polish>
<Spanish>Establecer vehículos médicos [ACE]</Spanish>
<German>Setze medizinisches Fahrzeug [ACE]</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_EnableList_DisplayName">
<English>List</English>
<Russian>Список</Russian>
<Polish>Lista</Polish>
<Spanish>Lista</Spanish>
<German>Liste</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_EnableList_Description">
<English>List of vehicles that will be classified as medical vehicle, separated by commas.</English>
<Russian>Список транспортных средств, которые будут считаться медицинским транспортом (через запятую).</Russian>
<Polish>Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami.</Polish>
<Spanish>Lista de los vehículos que se clasifican como vehículo médicos, separados por comas.</Spanish>
<German>Liste ovn Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt.</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_enabled_DisplayName">
<English>Is Medical Vehicle</English>
<Russian>Является мед. транспортом</Russian>
<Polish>Jest pojazdem med.</Polish>
<Spanish>Es vehículo médico</Spanish>
<German>Ist medizinisches Fahrzeug</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_enabled_Description">
<English>Whatever or not the objects in the list will be a medical vehicle.</English>
<Russian>Будут ли объекты в списке считаться медицинским транспортом.</Russian>
<Polish>Czy pojazdy z tej listy są pojazdami medycznymi.</Polish>
<Spanish>Cualquiera de la lista o fuera de ella será un vehículo médico.</Spanish>
<German>Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist.</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_Module_Description">
<English>Assigns the ACE medic class to a unit</English>
<Russian>Задает юниту класс медика</Russian>
<Polish>Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne.</Polish>
<Spanish>Asigna la clase médico ACE a una unidad</Spanish>
<German>Weist die ACE-Sanitäterklasse einer Einheit zu</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicalFacility_Module_DisplayName">
<English>Set Medical Facility [ACE]</English>
<Russian>Сделать госпиталем [ACE]</Russian>
<Polish>Ustaw budynek medyczny [ACE]</Polish>
<Spanish>Establece el centro médico [ACE]</Spanish>
<German>Setze medizinische Einrichtung [ACE]</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicalFacility_enabled_DisplayName">
<English>Is Medical Facility</English>
<Russian>Является госпиталем</Russian>
<Polish>Jest budynkiem med.</Polish>
<Spanish>Es centro médico</Spanish>
<German>Ist eine medizinische Einrichtung</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicalFacility_enabled_Description">
<English>Registers an object as a medical facility</English>
<Russian>Определяет объект в качестве госпиталя</Russian>
<Polish>Przypisuje danemu obiektowi status budynku medycznego</Polish>
<Spanish>Registra un objeto como un centro médico</Spanish>
<German>Definiert ein Objekt als medizinische Einrichtung</German>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicalFacility_Module_Description">
<English>Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles.</English>
<Russian>Определяет объект в качестве госпиталя. Позволяет оказывать более сложную помощь. Может применяться к зданиям и технике.</Russian>
<Polish>Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach.</Polish>
<Spanish>Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos.</Spanish>
<German>Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden.</German>
</Key>
<Key ID="STR_ACE_Medical_medicalSupplyCrate">
<English>[ACE] Medical Supply Crate (Basic)</English>
<Russian>[ACE] Ящик с медикаментами (базовая медицина)</Russian>
<Polish>[ACE] Skrzynka z zapasami medycznymi (podstawowa)</Polish>
<Spanish>[ACE] Caja de suministros médicos (Básica)</Spanish>
<German>[ACE] Medizinische Kiste (standard)</German>
</Key>
<Key ID="STR_ACE_Medical_medicalSupplyCrate_advanced">
<English>[ACE] Medical Supply Crate (Advanced)</English>
<Russian>[ACE] Ящик с медикаментами (усложн. медицина)</Russian>
<Polish>[ACE] Skrzynka z zapasami medycznymi (zaawansowana)</Polish>
<Spanish>[ACE] Caja de suministros médicos (Avanzada)</Spanish>
<German>[ACE] Medizinische Kiste (erweitert)</German>

View File

@ -21,7 +21,7 @@
*/
#include "script_component.hpp"
private ["_shooterMan", "_bisAirFriction", "_temperature", "_newMuzzleVelocityCoefficent", "_bulletVelocity", "_bulletSpeed", "_muzzleVelocity", "_muzzleVelocityShift"];
private ["_shooterMan", "_bisAirFriction", "_temperature", "_newMuzzleVelocityCoefficent", "_bulletVelocity", "_bulletSpeed"];
disableSerialization;
@ -57,7 +57,6 @@ if (_newMuzzleVelocityCoefficent != 1) then {
_bulletSpeed = vectorMagnitude _bulletVelocity;
_bulletVelocity = (vectorNormalized _bulletVelocity) vectorMultiply (_bulletSpeed * _newMuzzleVelocityCoefficent);
_projectile setVelocity _bulletVelocity;
_muzzleVelocity = _muzzleVelocity + _muzzleVelocityShift;
};

View File

@ -130,7 +130,7 @@ if (_barrelLength > 0 && _useABConfig) then {
if (_useABConfig) then {
ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]];
if (_barrelLength > 0 && _barrelTwist > 0) then {
ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]];
ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(2 * _barrelLength * 0.0393700787) / 2, round(_barrelTwist * 0.0393700787)]];
} else {
ctrlSetText [770002, ""];
};

View File

@ -11,12 +11,7 @@ if (count _sound == 0) exitWith {
};
// add file extension
if call {
{
if (toLower (_sound select 0) find _x == count toArray (_sound select 0) - count toArray _x - 1) exitWith {false};
true
} forEach [".wav", ".ogg", ".wss"];
} then {
if ({(toLower (_sound select 0) find _x == (count toArray (_sound select 0) - count toArray _x) - 1)} count [".wav", ".ogg", ".wss"] == 0) then {
_sound set [0, (_sound select 0) + ".wss"];
};

View File

@ -18,13 +18,13 @@
PARAMS_2(_tripod,_unit);
if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then {
_unit playMove "AmovPercMstpSrasWrflDnon_diary";
_unit playMove "AmovPercMstpSrasWrflDnon_diary";
};
[{
PARAMS_2(_tripod,_unit);
_unit addItem "ACE_Tripod";
[_unit, "ACE_Tripod"] call EFUNC(common,addToInventory);
deleteVehicle _tripod;
}, [_tripod, _unit], 1, 0]call EFUNC(common,waitAndExecute);

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

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

9
addons/ui/README.md Normal file
View File

@ -0,0 +1,9 @@
ace_ui
=======
Changes the chat contrast on the map to allow easier reading
## Maintainers
The people responsible for merging changes to this component or answering potential questions.

30
addons/ui/config.cpp Normal file
View File

@ -0,0 +1,30 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"VKing"};
authorUrl = "https://github.com/ACEMod/";
VERSION_CONFIG;
};
};
class RscText;
class RscDisplayChat {
class controls {
delete Line;
delete Background;
class CA_Background: RscText {
colorBackground[] = {0.5,0.5,0.5,0.33}; // Make the chat entry field slightly darker
};
};
};
class RscChatListDefault {
colorBackground[] = {0,0,0,0.5}; // Make the chat background darker
colorMessageProtocol[] = {0.85,0.85,0.85,1}; // And the chat text brighter
};

View File

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

View File

@ -0,0 +1,13 @@
#define COMPONENT ui
#include "\z\ace\Addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_UI
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_UI
#define DEBUG_SETTINGS DEBUG_SETTINGS_UI
#endif
#include "\z\ace\Addons\main\script_macros.hpp"

View File

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

View File

@ -0,0 +1,100 @@
class CfgAmmo {
class Default;
class BulletBase;
class R3F_9x19_Ball: BulletBase {
ACE_caliber=9.017;
ACE_bulletLength=15.494;
ACE_bulletMass=8.0352;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.165};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=1;
ACE_muzzleVelocities[]={340, 370, 400};
ACE_barrelLengths[]={101.6, 127.0, 228.6};
};
class R3F_556x45_Ball: BulletBase {
ACE_caliber=5.69;
ACE_bulletLength=23.012;
ACE_bulletMass=4.0176;
ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
ACE_ballisticCoefficients[]={0.151};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=7;
ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6};
};
class R3F_762x51_Ball: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=9.4608;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.2};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO";
ACE_dragModel=7;
ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
class R3F_127x99_Ball: BulletBase {
ACE_caliber=12.954;
ACE_bulletLength=58.674;
ACE_bulletMass=41.9256;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.670};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=1;
ACE_muzzleVelocities[]={900};
ACE_barrelLengths[]={736.6};
};
class R3F_127x99_PEI: R3F_127x99_Ball {
ACE_caliber=12.954;
ACE_bulletLength=58.674;
ACE_bulletMass=41.9256;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.670};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=1;
ACE_muzzleVelocities[]={900};
ACE_barrelLengths[]={736.6};
};
class R3F_127x99_Ball2: BulletBase {
ACE_caliber=12.954;
ACE_bulletLength=58.674;
ACE_bulletMass=41.9256;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.670};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=1;
ACE_muzzleVelocities[]={900};
ACE_barrelLengths[]={736.6};
};
class R3F_127x99_PEI2: R3F_127x99_Ball2 {
ACE_caliber=12.954;
ACE_bulletLength=58.674;
ACE_bulletMass=41.9256;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.670};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=1;
ACE_muzzleVelocities[]={900};
ACE_barrelLengths[]={736.6};
};
class R3F_127x99_Ball3: BulletBase {
ACE_caliber=12.954;
ACE_bulletLength=58.674;
ACE_bulletMass=41.9256;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.670};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=1;
ACE_muzzleVelocities[]={900};
ACE_barrelLengths[]={736.6};
};
};

View File

@ -0,0 +1,190 @@
class CfgWeapons {
class Pistol_Base_F;
class Rifle_Base_F;
class R3F_Famas_F1: Rifle_Base_F {
ACE_barrelTwist=304.8;
ACE_barrelLength=488;
};
class R3F_Famas_surb: R3F_Famas_F1 {
ACE_barrelTwist=304.8;
ACE_barrelLength=403.86;
};
class R3F_FRF2: Rifle_Base_F {
ACE_barrelTwist=304.8;
ACE_barrelLength=650;
};
class R3F_PGM_Hecate_II: Rifle_Base_F {
ACE_barrelTwist=381.0;
ACE_barrelLength=700;
};
class R3F_M107: Rifle_Base_F {
ACE_barrelTwist=381.0;
ACE_barrelLength=736.6;
};
class R3F_TAC50: Rifle_Base_F
{
ACE_barrelTwist=381.0;
ACE_barrelLength=736.6;
};
class R3F_Minimi: Rifle_Base_F {
ACE_barrelTwist=177.8;
ACE_barrelLength=347.98;
};
class R3F_Minimi_HG: R3F_Minimi {
};
class R3F_Minimi_762: R3F_Minimi {
ACE_barrelTwist=304.8;
ACE_barrelLength=502.92;
};
class R3F_Minimi_762_HG: R3F_Minimi_762 {
};
class R3F_HK417M: Rifle_Base_F {
ACE_barrelTwist=279.4;
ACE_barrelLength=406;
};
class R3F_HK417S_HG: R3F_HK417M
{
ACE_barrelTwist=279.4;
ACE_barrelLength=305;
};
class R3F_HK417L: R3F_HK417M {
ACE_barrelTwist=279.4;
ACE_barrelLength=508;
};
class R3F_HK416M: Rifle_Base_F {
ACE_barrelTwist=177.8;
ACE_barrelLength=368.3;
};
class R3F_MP5SD: Rifle_Base_F {
ACE_barrelTwist=254.0;
ACE_barrelLength=144.78;
};
class R3F_MP5A5: R3F_MP5SD {
ACE_barrelTwist=254.0;
ACE_barrelLength=226.06;
};
class R3F_M4S90: Rifle_Base_F {
ACE_twistDirection=0;
ACE_barrelTwist=0;
ACE_barrelLength=144.78;
};
class R3F_PAMAS: Pistol_Base_F {
ACE_barrelTwist=248.92;
ACE_barrelLength=124.46;
};
class ItemCore;
class InventoryOpticsItem_Base_F;
class R3F_J4: ItemCore {
ACE_ScopeAdjust_Vertical[] = { -8, 8 };
ACE_ScopeAdjust_Horizontal[] = { -8, 8 };
ACE_ScopeAdjust_VerticalIncrement = 0.2;
ACE_ScopeAdjust_HorizontalIncrement = 0.2;
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class J4 {
discreteDistance[] = { 100 };
discreteDistanceInitIndex = 0;
};
};
};
};
class R3F_J8: ItemCore {
ACE_ScopeAdjust_Vertical[] = { -10, 10 };
ACE_ScopeAdjust_Horizontal[] = { -10, 10 };
ACE_ScopeAdjust_VerticalIncrement = 0.1;
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class J8 {
discreteDistance[] = { 100 };
discreteDistanceInitIndex = 0;
};
};
};
};
class R3F_J8_MILDOT: R3F_J8 {
ACE_ScopeAdjust_Vertical[] = { -10, 10 };
ACE_ScopeAdjust_Horizontal[] = { -10, 10 };
ACE_ScopeAdjust_VerticalIncrement = 0.1;
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class J8_MILDOT {
discreteDistance[] = { 100 };
discreteDistanceInitIndex = 0;
};
};
};
};
class R3F_J10: ItemCore {
ACE_ScopeAdjust_Vertical[] = { -10, 10 };
ACE_ScopeAdjust_Horizontal[] = { -10, 10 };
ACE_ScopeAdjust_VerticalIncrement = 0.1;
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class J10 {
discreteDistance[] = { 100 };
discreteDistanceInitIndex = 0;
};
};
};
};
class R3F_J10_MILDOT: R3F_J10 {
ACE_ScopeAdjust_Vertical[] = { -10, 10 };
ACE_ScopeAdjust_Horizontal[] = { -10, 10 };
ACE_ScopeAdjust_VerticalIncrement = 0.1;
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class J10_MILDOT {
discreteDistance[] = { 100 };
discreteDistanceInitIndex = 0;
};
};
};
};
class R3F_ZEISS: ItemCore {
ACE_ScopeAdjust_Vertical[] = { 0, 23 };
ACE_ScopeAdjust_Horizontal[] = { -7, 7 };
ACE_ScopeAdjust_VerticalIncrement = 0.1;
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class ZEISS_MILDOT {
discreteDistance[] = { 100 };
discreteDistanceInitIndex = 0;
};
};
};
};
class R3F_NF: ItemCore {
ACE_ScopeAdjust_Vertical[] = { -0.9, 34 };
ACE_ScopeAdjust_Horizontal[] = { -11, 11 };
ACE_ScopeAdjust_VerticalIncrement = 0.2;
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class NF_MILDOT {
discreteDistance[] = { 100 };
discreteDistanceInitIndex = 0;
};
};
};
};
class R3F_NF42: ItemCore {
ACE_ScopeAdjust_Vertical[] = { -27.3, 27.3 };
ACE_ScopeAdjust_Horizontal[] = { -27.3, 27.3};
ACE_ScopeAdjust_VerticalIncrement = 0.1;
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class NF42_MILDOT {
discreteDistance[] = { 100 };
discreteDistanceInitIndex = 0;
};
};
};
};
};

View File

@ -0,0 +1,15 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"R3F_Armes", "R3F_Acc"};
author[]={"Ruthberg"};
VERSION_CONFIG;
};
};
#include "CfgAmmo.hpp"
#include "CfgWeapons.hpp"

View File

@ -0,0 +1,5 @@
#define COMPONENT BWA3_Weapons_comp
#include "\z\ace\addons\main\script_mod.hpp"
#include "\z\ace\addons\main\script_macros.hpp"