Merge branch 'master' into agmOverheatingPort

This commit is contained in:
Nicolás Badano 2015-01-13 21:38:57 -03:00
commit 81e603bf35
107 changed files with 1368 additions and 27534 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,565 +0,0 @@
class MFD {
class AirplaneHUD {
class Pos10Vector {
type = "vector";
pos0[] = {0.5,0.5};
pos10[] = {0.85,0.85};
};
topLeft = "HUD_top_left";
topRight = "HUD_top_right";
bottomLeft = "HUD_bottom_left";
borderLeft = 0;
borderRight = 0;
borderTop = 0;
borderBottom = 0;
color[] = {0.15,1,0.15,1};
enableParallax = 0;
class Bones {
class PlaneOrientation {
type = "fixed";
pos[] = {0.5,0.5};
};
class Target: Pos10Vector {
source = "target";
};
class Velocity {
type = "vector";
source = "velocity";
pos0[] = {0.5,0.5};
pos10[] = {0.65,0.65};
};
class VspeedBone {
type = "linear";
source = "vspeed";
sourceScale = 1;
min = -10;
max = 10;
minPos[] = {0.93,0.2};
maxPos[] = {0.93,0.8};
};
class RadarAltitudeBone {
type = "linear";
source = "altitudeAGL";
sourceScale = 1;
min = 0;
max = 60;
minPos[] = {0.965,0.2};
maxPos[] = {0.965,0.8};
};
class HorizonBankRot {
type = "rotational";
source = "horizonBank";
center[] = {0.5,0.5};
min = -3.1416;
max = 3.1416;
minAngle = -180;
maxAngle = 180;
aspectRatio = 1;
};
class ForwardVec {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.1,0.1};
};
class WeaponAim {
type = "vector";
source = "weapon";
pos0[] = {0.5,0.5};
pos10[] = {0.65,0.65};
};
class Level0 {
type = "horizon";
pos0[] = {0.5,0.5};
pos10[] = {0.78,0.78};
angle = 0;
};
};
class Draw {
color[] = {0.18,1,0.18};
alpha = 1;
condition = "on";
class Horizont {
clipTL[] = {0.15,0.15};
clipBR[] = {0.85,0.85};
class Dimmed {
class Level0 {
type = "line";
points[] = {
{"Level0",{-0.42,0},1},
{"Level0",{-0.38,0},1},{},
{"Level0",{-0.37,0},1},
{"Level0",{-0.33,0},1},{},
{"Level0",{-0.32,0},1},
{"Level0",{-0.28,0},1},{},
{"Level0",{-0.27,0},1},
{"Level0",{-0.23,0},1},{},
{"Level0",{-0.22,0},1},
{"Level0",{-0.18,0},1},{},
{"Level0",{-0.17,0},1},
{"Level0",{-0.13,0},1},{},
{"Level0",{-0.12,0},1},
{"Level0",{-0.08,0},1},{},
{"Level0",{0.42,0},1},
{"Level0",{0.38,0},1},{},
{"Level0",{0.37,0},1},
{"Level0",{0.33,0},1},{},
{"Level0",{0.32,0},1},
{"Level0",{0.28,0},1},{},
{"Level0",{0.27,0},1},
{"Level0",{0.23,0},1},{},
{"Level0",{0.22,0},1},
{"Level0",{0.18,0},1},{},
{"Level0",{0.17,0},1},
{"Level0",{0.13,0},1},{},
{"Level0",{0.12,0},1},
{"Level0",{0.08,0},1}
};
};
};
};
/*class StaticBank {
type = "line";
width = 3;
points[] = {
////////////////////////////////////////////////////// LEFT
{{0.4782,0.2510},1},
{{0.4773,0.2410},1},{},
{{0.4566,0.2538},1},
{{0.4549,0.2439},1},{},
{{0.4353,0.2585},1},
{{0.4301,0.2392},1},{},
{{0.4145,0.2651},1},
{{0.4111,0.2557},1},{},
{{0.3943,0.2734},1},
{{0.3901,0.2644},1},{},
{{0.3750,0.2835},1},
{{0.3650,0.2662},1},{},
{{0.3232,0.3232},1},
{{0.3091,0.3091},1},{},
{{0.2835,0.3750},1},
{{0.2662,0.3650},1},{},
/////////////////////////////////////////////////////// RIGHT
{{"0.5 + (0.5- 0.4782)",0.2510},1},
{{"0.5 + (0.5- 0.4773)",0.2410},1},{},
{{"0.5 + (0.5- 0.4566)",0.2538},1},
{{"0.5 + (0.5- 0.4549)",0.2439},1},{},
{{"0.5 + (0.5- 0.4353)",0.2585},1},
{{"0.5 + (0.5- 0.4301)",0.2392},1},{},
{{"0.5 + (0.5- 0.4145)",0.2651},1},
{{"0.5 + (0.5- 0.4111)",0.2557},1},{},
{{"0.5 + (0.5- 0.3943)",0.2734},1},
{{"0.5 + (0.5- 0.3901)",0.2644},1},{},
{{"0.5 + (0.5- 0.3750)",0.2835},1},
{{"0.5 + (0.5- 0.3650)",0.2662},1},{},
{{"0.5 + (0.5- 0.3232)",0.3232},1},
{{"0.5 + (0.5- 0.3091)",0.3091},1},{},
{{"0.5 + (0.5- 0.2835)",0.3750},1},
{{"0.5 + (0.5- 0.2662)",0.3650},1},{},
/////////////////////////////////////////////////////// CENTER
{{0.5,"0.5 - 0.25"},1},
{{0.5,"0.5 - 0.28"},1}
};
};*/
class HorizonBankRot {
type = "line";
width = 3;
points[] = {
{"HorizonBankRot",{0,0.25},1},
{"HorizonBankRot",{-0.01,0.23},1},
{"HorizonBankRot",{0.01,0.23},1},
{"HorizonBankRot",{0,0.25},1}
};
};
class Centerline {
type = "line";
width = 7;
points[] = {
{{0.45,0.5},1},
{{0.48,0.5},1},
{{0.49,0.525},1},
{{0.5,0.5},1},
{{0.51,0.525},1},
{{0.52,0.5},1},
{{0.55,0.5},1}
};
};
/*class WeaponName {
type = "text";
source = "weapon";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.03,0.86},1};
right[] = {{0.07,0.86},1};
down[] = {{0.03,0.90},1};
};
class AmmoCount {
type = "text";
source = "ammo";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.03,0.89},1};
right[] = {{0.07,0.89},1};
down[] = {{0.03,0.93},1};
};*/
class LightsGroup {
type = "group";
condition = "lights";
class LightsText {
type = "text";
source = "static";
text = "LIGHTS";
align = "right";
scale = 1;
pos[] = {{0.03,"0.53 + 0.055"},1};
right[] = {{0.07,"0.53 + 0.055"},1};
down[] = {{0.03,"0.53 + 0.095"},1};
};
};
class CollisionLightsGroup {
type = "group";
condition = "collisionlights";
class CollisionLightsText {
type = "text";
source = "static";
text = "A-COL";
align = "right";
scale = 1;
pos[] = {{0.03,"0.53 + 0.105"},1};
right[] = {{0.07,"0.53 + 0.105"},1};
down[] = {{0.03,"0.53 + 0.145"},1};
};
};
class SpeedNumber {
type = "text";
align = "right";
scale = 1;
source = "speed";
sourceScale = 3.6;
pos[] = {{0.03,0.475},1};
right[] = {{0.08,0.475},1};
down[] = {{0.03,0.525},1};
};
class TorqueNumber {
type = "text";
align = "left";
scale = 1;
source = "rtdRotorTorque";
sourceScale = 110;
pos[] = {{0.065,0.175},1};
right[] = {{0.115,0.175},1};
down[] = {{0.065,0.225},1};
};
class Torquetext {
type = "text";
source = "static";
text = "%";
align = "right";
scale = 1;
pos[] = {{0.07,0.175},1};
right[] = {{0.12,0.175},1};
down[] = {{0.07,0.225},1};
};
class AltNumber {
type = "text";
align = "right";
scale = 1;
source = "altitudeAGL";
sourceScale = 1;
pos[] = {{0.83,0.475},1};
right[] = {{0.88,0.475},1};
down[] = {{0.83,0.525},1};
};
class ASLNumber {
type = "text";
source = "altitudeASL";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.835,0.18},1};
right[] = {{0.875,0.18},1};
down[] = {{0.835,0.22},1};
};
class VspeedScalePosta {
type = "line";
width = 5;
points[] = {
{{0.98,0.2},1},
{{1,0.2},1},{},
{{0.93,0.2},1},
{{0.95,0.2},1},{},
{{0.98,0.35},1},
{{1,0.35},1},{},
{{0.93,0.35},1},
{{0.95,0.35},1},{},
{{0.94,0.38},1},
{{0.95,0.38},1},{},
{{0.94,0.41},1},
{{0.95,0.41},1},{},
{{0.94,0.44},1},
{{0.95,0.44},1},{},
{{0.94,0.47},1},
{{0.95,0.47},1},{},
{{0.98,0.5},1},
{{1,0.5},1},{},
{{0.93,0.5},1},
{{0.95,0.5},1},{},
{{0.94,0.53},1},
{{0.95,0.53},1},{},
{{0.94,0.56},1},
{{0.95,0.56},1},{},
{{0.94,0.59},1},
{{0.95,0.59},1},{},
{{0.94,0.62},1},
{{0.95,0.62},1},{},
{{0.98,0.65},1},
{{1,0.65},1},{},
{{0.93,0.65},1},
{{0.95,0.65},1},{},
{{0.99,0.68},1},
{{0.98,0.68},1},{},
{{0.99,0.71},1},
{{0.98,0.71},1},{},
{{0.99,0.74},1},
{{0.98,0.74},1},{},
{{0.99,0.77},1},
{{0.98,0.77},1},{},
{{0.98,0.8},1},
{{1,0.8},1},{},
{{0.93,0.8},1},
{{0.95,0.8},1},{}
};
};
class RadarAltitudeBand {
clipTL[] = {0,0.2};
clipBR[] = {1,0.8};
class radarbanda {
type = "line";
width = 17;
points[] = {
{"RadarAltitudeBone",{0,0},1},
{"RadarAltitudeBone",{0,0.6},1}
};
};
};
class VspeedBand {
type = "line";
width = 3;
points[] = {
{"VspeedBone",{-0.01,0},1},
{"VspeedBone",{-0.025,-0.015},1},
{"VspeedBone",{-0.025,0.015},1},
{"VspeedBone",{-0.01,0},1},{}
};
};
class HeadingNumber: SpeedNumber {
source = "heading";
sourceScale = 1;
align = "center";
pos[] = {{0.5,0.01},1};
right[] = {{0.56,0.01},1};
down[] = {{0.5,0.06},1};
};
class Center_box {
type = "line";
width = 3;
points[] = {
{{0.44,0.005},1},
{{"0.44 + 0.12",0.005},1},
{{"0.44 + 0.12","0.005 + 0.06"},1},
{{0.44,"0.005 + 0.06"},1},
{{0.44,0.005},1}
};
};
class HeadingArrow {
type = "line";
width = 7;
points[] = {{{"0.5","0.128 + 0.03"},1},{{0.5,0.128},1}};
};
class HeadingScale {
type = "scale";
horizontal = 1;
source = "heading";
sourceScale = 1;
width = 5;
top = 0.12;
center = 0.5;
bottom = 0.88;
lineXleft = "0.03 + 0.085";
lineYright = "0.02 + 0.085";
lineXleftMajor = "0.04 + 0.085";
lineYrightMajor = "0.02 + 0.085";
majorLineEach = 3;
numberEach = 3;
step = 10;
stepSize = "0.05";
align = "center";
scale = 1;
pos[] = {0.12,"0.0 + 0.065"};
right[] = {0.16,"0.0 + 0.065"};
down[] = {0.12,"0.04 + 0.065"};
};
class Fuel_Text {
type = "text";
source = "static";
text = "Fuel";
align = "right";
scale = 1;
pos[] = {{0.85,0.86},1};
right[] = {{0.89,0.86},1};
down[] = {{0.85,0.9},1};
};
class Fuel_Number {
type = "text";
source = "fuel";
sourceScale = 100;
align = "right";
scale = 1;
pos[] = {{0.92,0.86},1};
right[] = {{0.96,0.86},1};
down[] = {{0.92,0.9},1};
};
};
helmetMountedDisplay = 1;
helmetPosition[] = {-0.04,0.04,0.1};
helmetRight[] = {0.08,0,0};
helmetDown[] = {0,-0.08,0};
};
class LittleHUD {
class Pos10Vector {
type = "vector";
pos0[] = {0.5,0.5};
pos10[] = {0.722,0.722};
};
topLeft = "HUD_top_left";
topRight = "HUD_top_right";
bottomLeft = "HUD_bottom_left";
borderLeft = 0;
borderRight = 0;
borderTop = 0;
borderBottom = 0;
color[] = {0.15,1,0.15,1};
enableParallax = 0;
class Bones {
class Velocity {
type = "vector";
source = "velocity";
pos0[] = {0.5,0.5};
pos10[] = {0.75,0.75};
};
class ForwardVec1 {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.25,0.25};
};
class ForwardVec {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.253,0.253};
};
class WeaponAim {
type = "vector";
source = "weapon";
pos0[] = {0.5,0.5};
pos10[] = {0.753,0.753};
};
class WeaponAim1 {
type = "vector";
source = "weapon";
pos0[] = {0,0};
pos10[] = {0.253,0.23};
};
class Target {
type = "vector";
source = "target";
pos0[] = {0.5,0.5};
pos10[] = {0.753,0.753};
};
class RadarContact {
type = "fixed";
pos[] = {0,0};
};
};
class Draw {
color[] = {0.18,1,0.18};
alpha = 1;
condition = "on";
class PlaneMovementCrosshair {
type = "line";
width = 7;
points[] = {
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1},
{"ForwardVec1",1,"Velocity",1,{0.01,-0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0.01732,-0.01},1},
{"ForwardVec1",1,"Velocity",1,{0.02,0},1},
{"ForwardVec1",1,"Velocity",1,{0.01732,0.01},1},
{"ForwardVec1",1,"Velocity",1,{0.01,0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0,0.02},1},
{"ForwardVec1",1,"Velocity",1,{-0.01,0.01732},1},
{"ForwardVec1",1,"Velocity",1,{-0.01732,0.01},1},
{"ForwardVec1",1,"Velocity",1,{-0.02,0},1},
{"ForwardVec1",1,"Velocity",1,{-0.01732,-0.01},1},
{"ForwardVec1",1,"Velocity",1,{-0.01,-0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1},{},
{"ForwardVec1",1,"Velocity",1,{0.04,0},1},
{"ForwardVec1",1,"Velocity",1,{0.02,0},1},{},
{"ForwardVec1",1,"Velocity",1,{-0.04,0},1},
{"ForwardVec1",1,"Velocity",1,{-0.02,0},1},{},
{"ForwardVec1",1,"Velocity",1,{0,-0.04},1},
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1}
};
};
};
helmetMountedDisplay = 1;
helmetPosition[] = {-0.035,0.035,0.1};
helmetRight[] = {0.07,0,0};
helmetDown[] = {0,-0.07,0};
};
};

View File

@ -1,694 +0,0 @@
class MFD {
class AirplaneHUD {
class Pos10Vector {
type = "vector";
pos0[] = {0.5,0.5};
pos10[] = {0.85,0.85};
};
topLeft = "HUD_top_left";
topRight = "HUD_top_right";
bottomLeft = "HUD_bottom_left";
borderLeft = 0;
borderRight = 0;
borderTop = 0;
borderBottom = 0;
color[] = {0.15,1,0.15,1};
enableParallax = 0;
class Bones {
class PlaneOrientation {
type = "fixed";
pos[] = {0.5,0.5};
};
class Target: Pos10Vector {
source = "target";
};
class Velocity {
type = "vector";
source = "velocity";
pos0[] = {0.5,0.5};
pos10[] = {0.65,0.65};
};
class VspeedBone {
type = "linear";
source = "vspeed";
sourceScale = 1;
min = -10;
max = 10;
minPos[] = {0.93,0.2};
maxPos[] = {0.93,0.8};
};
class RadarAltitudeBone {
type = "linear";
source = "altitudeAGL";
sourceScale = 1;
min = 0;
max = 60;
minPos[] = {0.965,0.2};
maxPos[] = {0.965,0.8};
};
class HorizonBankRot {
type = "rotational";
source = "horizonBank";
center[] = {0.5,0.5};
min = -3.1416;
max = 3.1416;
minAngle = -180;
maxAngle = 180;
aspectRatio = 1;
};
class ForwardVec {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.22,0.22};
};
class WeaponAim {
type = "vector";
source = "weapon";
pos0[] = {0.5,0.5};
pos10[] = {0.73,0.73};
};
class Level0 {
type = "horizon";
pos0[] = {0.5,0.5};
pos10[] = {0.78,0.78};
angle = 0;
};
};
class Draw {
color[] = {0.18,1,0.18};
alpha = 1;
condition = "on";
class Horizont {
clipTL[] = {0.15,0.15};
clipBR[] = {0.85,0.85};
class Dimmed {
class Level0 {
type = "line";
points[] = {
{"Level0",{-0.42,0},1},
{"Level0",{-0.38,0},1},{},
{"Level0",{-0.37,0},1},
{"Level0",{-0.33,0},1},{},
{"Level0",{-0.32,0},1},
{"Level0",{-0.28,0},1},{},
{"Level0",{-0.27,0},1},
{"Level0",{-0.23,0},1},{},
{"Level0",{-0.22,0},1},
{"Level0",{-0.18,0},1},{},
{"Level0",{-0.17,0},1},
{"Level0",{-0.13,0},1},{},
{"Level0",{-0.12,0},1},
{"Level0",{-0.08,0},1},{},
{"Level0",{0.42,0},1},
{"Level0",{0.38,0},1},{},
{"Level0",{0.37,0},1},
{"Level0",{0.33,0},1},{},
{"Level0",{0.32,0},1},
{"Level0",{0.28,0},1},{},
{"Level0",{0.27,0},1},
{"Level0",{0.23,0},1},{},
{"Level0",{0.22,0},1},
{"Level0",{0.18,0},1},{},
{"Level0",{0.17,0},1},
{"Level0",{0.13,0},1},{},
{"Level0",{0.12,0},1},
{"Level0",{0.08,0},1}
};
};
};
};
/*class StaticBank {
type = "line";
width = 3;
points[] = {
////////////////////////////////////////////////////// LEFT
{{0.4782,0.2510},1},
{{0.4773,0.2410},1},{},
{{0.4566,0.2538},1},
{{0.4549,0.2439},1},{},
{{0.4353,0.2585},1},
{{0.4301,0.2392},1},{},
{{0.4145,0.2651},1},
{{0.4111,0.2557},1},{},
{{0.3943,0.2734},1},
{{0.3901,0.2644},1},{},
{{0.3750,0.2835},1},
{{0.3650,0.2662},1},{},
{{0.3232,0.3232},1},
{{0.3091,0.3091},1},{},
{{0.2835,0.3750},1},
{{0.2662,0.3650},1},{},
/////////////////////////////////////////////////////// RIGHT
{{"0.5 + (0.5- 0.4782)",0.2510},1},
{{"0.5 + (0.5- 0.4773)",0.2410},1},{},
{{"0.5 + (0.5- 0.4566)",0.2538},1},
{{"0.5 + (0.5- 0.4549)",0.2439},1},{},
{{"0.5 + (0.5- 0.4353)",0.2585},1},
{{"0.5 + (0.5- 0.4301)",0.2392},1},{},
{{"0.5 + (0.5- 0.4145)",0.2651},1},
{{"0.5 + (0.5- 0.4111)",0.2557},1},{},
{{"0.5 + (0.5- 0.3943)",0.2734},1},
{{"0.5 + (0.5- 0.3901)",0.2644},1},{},
{{"0.5 + (0.5- 0.3750)",0.2835},1},
{{"0.5 + (0.5- 0.3650)",0.2662},1},{},
{{"0.5 + (0.5- 0.3232)",0.3232},1},
{{"0.5 + (0.5- 0.3091)",0.3091},1},{},
{{"0.5 + (0.5- 0.2835)",0.3750},1},
{{"0.5 + (0.5- 0.2662)",0.3650},1},{},
/////////////////////////////////////////////////////// CENTER
{{0.5,"0.5 - 0.25"},1},
{{0.5,"0.5 - 0.28"},1}
};
};*/
class HorizonBankRot {
type = "line";
width = 3;
points[] = {
{"HorizonBankRot",{0,0.25},1},
{"HorizonBankRot",{-0.01,0.23},1},
{"HorizonBankRot",{0.01,0.23},1},
{"HorizonBankRot",{0,0.25},1}
};
};
class Centerline {
type = "line";
width = 7;
points[] = {
{{0.45,0.5},1},
{{0.48,0.5},1},
{{0.49,0.525},1},
{{0.5,0.5},1},
{{0.51,0.525},1},
{{0.52,0.5},1},
{{0.55,0.5},1}
};
};
class GunCross {
condition = "mgun";
type = "group";
class GunSight {
type = "line";
width = 7;
points[] = {
{"ForwardVec",1,"WeaponAim",1,{0,-0.02},1},
{"ForwardVec",1,"WeaponAim",1,{0,-0.05},1},{},
{"ForwardVec",1,"WeaponAim",1,{0,0.02},1},
{"ForwardVec",1,"WeaponAim",1,{0,0.05},1},{},
{"ForwardVec",1,"WeaponAim",1,{-0.02,0},1},
{"ForwardVec",1,"WeaponAim",1,{-0.05,0},1},{},
{"ForwardVec",1,"WeaponAim",1,{0.02,0},1},
{"ForwardVec",1,"WeaponAim",1,{0.05,0},1},{}
};
};
};
class RocketCross {
condition = "rocket";
type = "group";
class RocketSight {
type = "line";
width = 5.5;
points[] = {
{"ForwardVec",1,"WeaponAim",1,{0.04,-0.06},1},
{"ForwardVec",1,"WeaponAim",1,{-0.04,-0.06},1},{},
{"ForwardVec",1,"WeaponAim",1,{0,-0.06},1},
{"ForwardVec",1,"WeaponAim",1,{0,-0.01},1},{},
{"ForwardVec",1,"WeaponAim",1,{0,0.001},1},
{"ForwardVec",1,"WeaponAim",1,{0,-0.001},1},{},
{"ForwardVec",1,"WeaponAim",1,{0.001,0},1},
{"ForwardVec",1,"WeaponAim",1,{-0.001,0},1},{},
{"ForwardVec",1,"WeaponAim",1,{0,0.01},1},
{"ForwardVec",1,"WeaponAim",1,{0,0.06},1},{},
{"ForwardVec",1,"WeaponAim",1,{0.04,0.06},1},
{"ForwardVec",1,"WeaponAim",1,{-0.04,0.06},1},{}
};
};
};
/*class Mastermode_GUN {
condition = "mgun";
type = "group";
class MasterMODE {
type = "text";
source = "static";
text = "GUN";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.03,0.83},1};
right[] = {{0.07,0.83},1};
down[] = {{0.03,0.87},1};
};
};*/
class WeaponName {
type = "text";
source = "weapon";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.03,0.86},1};
right[] = {{0.07,0.86},1};
down[] = {{0.03,0.9},1};
};
class AmmoCount {
type = "text";
source = "ammo";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.03,0.89},1};
right[] = {{0.07,0.89},1};
down[] = {{0.03,0.93},1};
};
class LightsGroup {
type = "group";
condition = "lights";
class LightsText {
type = "text";
source = "static";
text = "LIGHTS";
align = "right";
scale = 1;
pos[] = {{0.03,"0.53 + 0.055"},1};
right[] = {{0.07,"0.53 + 0.055"},1};
down[] = {{0.03,"0.53 + 0.095"},1};
};
};
class CollisionLightsGroup {
type = "group";
condition = "collisionlights";
class CollisionLightsText {
type = "text";
source = "static";
text = "A-COL";
align = "right";
scale = 1;
pos[] = {{0.03,"0.53 + 0.105"},1};
right[] = {{0.07,"0.53 + 0.105"},1};
down[] = {{0.03,"0.53 + 0.145"},1};
};
};
class RangeNumber {
type = "text";
source = "targetDist";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.51,0.94},1};
right[] = {{0.56,0.94},1};
down[] = {{0.51,0.98},1};
};
class RangeText {
type = "text";
source = "static";
text = "RNG";
align = "left";
scale = 1;
pos[] = {{0.49,0.94},1};
right[] = {{0.54,0.94},1};
down[] = {{0.49,0.98},1};
};
class SpeedNumber {
type = "text";
align = "right";
scale = 1;
source = "speed";
sourceScale = 3.6;
pos[] = {{0.03,0.475},1};
right[] = {{0.08,0.475},1};
down[] = {{0.03,0.525},1};
};
class TorqueNumber {
type = "text";
align = "left";
scale = 1;
source = "rtdRotorTorque";
sourceScale = 100;
pos[] = {{0.065,0.175},1};
right[] = {{0.115,0.175},1};
down[] = {{0.065,0.225},1};
};
class Torquetext {
type = "text";
source = "static";
text = "%";
align = "right";
scale = 1;
pos[] = {{0.07,0.175},1};
right[] = {{0.12,0.175},1};
down[] = {{0.07,0.225},1};
};
class AltNumber {
type = "text";
align = "right";
scale = 1;
source = "altitudeAGL";
sourceScale = 1;
pos[] = {{0.83,0.475},1};
right[] = {{0.88,0.475},1};
down[] = {{0.83,0.525},1};
};
class ASLNumber {
type = "text";
source = "altitudeASL";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.835,0.18},1};
right[] = {{0.875,0.18},1};
down[] = {{0.835,0.22},1};
};
class VspeedScalePosta {
type = "line";
width = 5;
points[] = {
{{0.98,0.2},1},
{{1,0.2},1},{},
{{0.93,0.2},1},
{{0.95,0.2},1},{},
{{0.98,0.35},1},
{{1,0.35},1},{},
{{0.93,0.35},1},
{{0.95,0.35},1},{},
{{0.94,0.38},1},
{{0.95,0.38},1},{},
{{0.94,0.41},1},
{{0.95,0.41},1},{},
{{0.94,0.44},1},
{{0.95,0.44},1},{},
{{0.94,0.47},1},
{{0.95,0.47},1},{},
{{0.98,0.5},1},
{{1,0.5},1},{},
{{0.93,0.5},1},
{{0.95,0.5},1},{},
{{0.94,0.53},1},
{{0.95,0.53},1},{},
{{0.94,0.56},1},
{{0.95,0.56},1},{},
{{0.94,0.59},1},
{{0.95,0.59},1},{},
{{0.94,0.62},1},
{{0.95,0.62},1},{},
{{0.98,0.65},1},
{{1,0.65},1},{},
{{0.93,0.65},1},
{{0.95,0.65},1},{},
{{0.99,0.68},1},
{{0.98,0.68},1},{},
{{0.99,0.71},1},
{{0.98,0.71},1},{},
{{0.99,0.74},1},
{{0.98,0.74},1},{},
{{0.99,0.77},1},
{{0.98,0.77},1},{},
{{0.98,0.8},1},
{{1,0.8},1},{},
{{0.93,0.8},1},
{{0.95,0.8},1},{}
};
};
class RadarAltitudeBand {
clipTL[] = {0,0.2};
clipBR[] = {1,0.8};
class radarbanda {
type = "line";
width = 17;
points[] = {
{"RadarAltitudeBone",{0,0},1},
{"RadarAltitudeBone",{0,0.6},1}
};
};
};
class VspeedBand {
type = "line";
width = 3;
points[] = {
{"VspeedBone",{-0.01,0},1},
{"VspeedBone",{-0.025,-0.015},1},
{"VspeedBone",{-0.025,0.015},1},
{"VspeedBone",{-0.01,0},1}
};
};
class HeadingNumber: SpeedNumber {
source = "heading";
sourceScale = 1;
align = "center";
pos[] = {{0.5,0.01},1};
right[] = {{0.56,0.01},1};
down[] = {{0.5,0.06},1};
};
class Center_box {
type = "line";
width = 3;
points[] = {
{{0.44,0.005},1},
{{"0.44 + 0.12",0.005},1},
{{"0.44 + 0.12","0.005 + 0.06"},1},
{{0.44,"0.005 + 0.06"},1},
{{0.44,0.005},1}
};
};
class HeadingArrow {
type = "line";
width = 7;
points[] = {
{{"0.5","0.128 + 0.03"},1},
{{0.5,0.128},1}
};
};
class HeadingScale {
type = "scale";
horizontal = 1;
source = "heading";
sourceScale = 1;
width = 5;
top = 0.12;
center = 0.5;
bottom = 0.88;
lineXleft = "0.03 + 0.085";
lineYright = "0.02 + 0.085";
lineXleftMajor = "0.04 + 0.085";
lineYrightMajor = "0.02 + 0.085";
majorLineEach = 3;
numberEach = 3;
step = 10;
stepSize = "0.05";
align = "center";
scale = 1;
pos[] = {0.119,"0.0 + 0.065"};
right[] = {0.159,"0.0 + 0.065"};
down[] = {0.119,"0.04 + 0.065"};
};
class Fuel_Text {
type = "text";
source = "static";
text = "Fuel";
align = "right";
scale = 1;
pos[] = {{0.85,0.86},1};
right[] = {{0.89,0.86},1};
down[] = {{0.85,0.9},1};
};
class Fuel_Number {
type = "text";
source = "fuel";
sourceScale = 100;
align = "right";
scale = 1;
pos[] = {{0.92,0.86},1};
right[] = {{0.96,0.86},1};
down[] = {{0.92,0.9},1};
};
};
helmetMountedDisplay = 1;
helmetPosition[] = {-0.04,0.04,0.1};
helmetRight[] = {0.08,0,0};
helmetDown[] = {0,-0.08,0};
};
class LittleHUD {
class Pos10Vector {
type = "vector";
pos0[] = {0.5,0.5};
pos10[] = {0.722,0.722};
};
topLeft = "HUD_top_left";
topRight = "HUD_top_right";
bottomLeft = "HUD_bottom_left";
borderLeft = 0;
borderRight = 0;
borderTop = 0;
borderBottom = 0;
color[] = {0.15,1,0.15,1};
enableParallax = 0;
class Bones {
class Velocity {
type = "vector";
source = "velocity";
pos0[] = {0.5,0.5};
pos10[] = {0.76,0.76};
};
class ForwardVec1 {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.26,0.26};
};
class ForwardVec {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.253,0.253};
};
class WeaponAim {
type = "vector";
source = "weapon";
pos0[] = {0.5,0.5};
pos10[] = {0.753,0.753};
};
class Target {
type = "vector";
source = "target";
pos0[] = {0.5,0.5};
pos10[] = {0.753,0.753};
};
class RadarContact {
type = "fixed";
pos[] = {0,0};
};
};
class Draw {
color[] = {0.18,1,0.18};
alpha = 1;
condition = "on";
class PlaneMovementCrosshair {
type = "line";
width = 7;
points[] = {
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1},
{"ForwardVec1",1,"Velocity",1,{0.01,-0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0.01732,-0.01},1},
{"ForwardVec1",1,"Velocity",1,{0.02,0},1},
{"ForwardVec1",1,"Velocity",1,{0.01732,0.01},1},
{"ForwardVec1",1,"Velocity",1,{0.01,0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0,0.02},1},
{"ForwardVec1",1,"Velocity",1,{-0.01,0.01732},1},
{"ForwardVec1",1,"Velocity",1,{-0.01732,0.01},1},
{"ForwardVec1",1,"Velocity",1,{-0.02,0},1},
{"ForwardVec1",1,"Velocity",1,{-0.01732,-0.01},1},
{"ForwardVec1",1,"Velocity",1,{-0.01,-0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1},{},
{"ForwardVec1",1,"Velocity",1,{0.04,0},1},
{"ForwardVec1",1,"Velocity",1,{0.02,0},1},{},
{"ForwardVec1",1,"Velocity",1,{-0.04,0},1},
{"ForwardVec1",1,"Velocity",1,{-0.02,0},1},{},
{"ForwardVec1",1,"Velocity",1,{0,-0.04},1},
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1}
};
};
class TargetACQ {
type = "line";
width = 2;
points[] = {
//////////////////////////////////////////////// UP
/*{"ForwardVec1",1,"target",{0,-0.10},1},{"ForwardVec1",1,"target",{0,-0.095},1},{},
{"ForwardVec1",1,"target",{0,-0.09},1},{"ForwardVec1",1,"target",{0,-0.085},1},{},
{"ForwardVec1",1,"target",{0,-0.080},1},{"ForwardVec1",1,"target",{0,-0.075},1},{},
{"ForwardVec1",1,"target",{0,-0.070},1},{"ForwardVec1",1,"target",{0,-0.065},1},{},*/
{"ForwardVec",1,"target",{0,-0.060},1},{"ForwardVec",1,"target",{0,-0.055},1},{},
{"ForwardVec",1,"target",{0,-0.050},1},{"ForwardVec",1,"target",{0,-0.045},1},{},
{"ForwardVec",1,"target",{0,-0.040},1},{"ForwardVec",1,"target",{0,-0.035},1},{},
{"ForwardVec",1,"target",{0,-0.030},1},{"ForwardVec",1,"target",{0,-0.025},1},{},
{"ForwardVec",1,"target",{0,-0.020},1},{"ForwardVec",1,"target",{0,-0.015},1},{},
{"ForwardVec",1,"target",{0,-0.010},1},{"ForwardVec",1,"target",{0,-0.005},1},{},
//////////////////////////////////////////////// center
{"ForwardVec",1,"target",{0,0},1},{"ForwardVec",1,"target",{0,0},1},{},
/////////////////////////////////////////////// DOWN
/*{"ForwardVec1",1,"target",{0,0.10},1},{"ForwardVec1",1,"target",{0,0.095},1},{},
{"ForwardVec1",1,"target",{0,0.09},1},{"ForwardVec1",1,"target",{0,0.085},1},{},
{"ForwardVec1",1,"target",{0,0.080},1},{"ForwardVec1",1,"target",{0,0.075},1},{},
{"ForwardVec1",1,"target",{0,0.070},1},{"ForwardVec1",1,"target",{0,0.065},1},{},*/
{"ForwardVec",1,"target",{0,0.060},1},{"ForwardVec",1,"target",{0,0.055},1},{},
{"ForwardVec",1,"target",{0,0.050},1},{"ForwardVec",1,"target",{0,0.045},1},{},
{"ForwardVec",1,"target",{0,0.040},1},{"ForwardVec",1,"target",{0,0.035},1},{},
{"ForwardVec",1,"target",{0,0.030},1},{"ForwardVec",1,"target",{0,0.025},1},{},
{"ForwardVec",1,"target",{0,0.020},1},{"ForwardVec",1,"target",{0,0.015},1},{},
{"ForwardVec",1,"target",{0,0.010},1},{"ForwardVec",1,"target",{0,0.005},1},{},
/////////////////////////////////////////////// LEFT
/*{"ForwardVec1",1,"target",{-0.10, 0},1},{"ForwardVec1",1,"target",{-0.095,0},1},{},
{"ForwardVec1",1,"target",{-0.09, 0},1},{"ForwardVec1",1,"target",{-0.085,0},1},{},
{"ForwardVec1",1,"target",{-0.080, 0},1},{"ForwardVec1",1,"target",{-0.075,0},1},{},
{"ForwardVec1",1,"target",{-0.070, 0},1},{"ForwardVec1",1,"target",{-0.065,0},1},{},*/
{"ForwardVec",1,"target",{-0.060, 0},1},{"ForwardVec",1,"target",{-0.055,0},1},{},
{"ForwardVec",1,"target",{-0.050, 0},1},{"ForwardVec",1,"target",{-0.045,0},1},{},
{"ForwardVec",1,"target",{-0.040, 0},1},{"ForwardVec",1,"target",{-0.035,0},1},{},
{"ForwardVec",1,"target",{-0.030, 0},1},{"ForwardVec",1,"target",{-0.025,0},1},{},
{"ForwardVec",1,"target",{-0.020, 0},1},{"ForwardVec",1,"target",{-0.015,0},1},{},
{"ForwardVec",1,"target",{-0.010, 0},1},{"ForwardVec",1,"target",{-0.005,0},1},{},
/////////////////////////////////////////////// RIGHT
/*{"ForwardVec1",1,"target",{0.10, 0},1},{"ForwardVec1",1,"target",{0.095,0},1},{},
{"ForwardVec1",1,"target",{0.09, 0},1},{"ForwardVec1",1,"target",{0.085,0},1},{},
{"ForwardVec1",1,"target",{0.080, 0},1},{"ForwardVec1",1,"target",{0.075,0},1},{},
{"ForwardVec1",1,"target",{0.070, 0},1},{"ForwardVec1",1,"target",{0.065,0},1},{},*/
{"ForwardVec",1,"target",{0.060, 0},1},{"ForwardVec",1,"target",{0.055,0},1},{},
{"ForwardVec",1,"target",{0.050, 0},1},{"ForwardVec",1,"target",{0.045,0},1},{},
{"ForwardVec",1,"target",{0.040, 0},1},{"ForwardVec",1,"target",{0.035,0},1},{},
{"ForwardVec",1,"target",{0.030, 0},1},{"ForwardVec",1,"target",{0.025,0},1},{},
{"ForwardVec",1,"target",{0.020, 0},1},{"ForwardVec",1,"target",{0.015,0},1},{},
{"ForwardVec",1,"target",{0.010, 0},1},{"ForwardVec",1,"target",{0.005,0},1},{}
};
};
};
helmetMountedDisplay = 1;
helmetPosition[] = {-0.035,0.035,0.1};
helmetRight[] = {0.07,0,0};
helmetDown[] = {0,-0.07,0};
};
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,784 +0,0 @@
class MFD {
class AirplaneHUD {
class Pos10Vector {
type = "vector";
pos0[] = {0.5,0.5};
pos10[] = {0.85,0.85};
};
topLeft = "HUD_top_left";
topRight = "HUD_top_right";
bottomLeft = "HUD_bottom_left";
borderLeft = 0;
borderRight = 0;
borderTop = 0;
borderBottom = 0;
color[] = {0.15,1,0.15,1};
enableParallax = 0;
class Bones {
class PlaneOrientation {
type = "fixed";
pos[] = {0.5,0.5};
};
class GunnerAim {
type = "vector";
source = "weapon";
pos0[] = {0,0};
pos10[] = {0.011,0.0027};
};
class Target {
type = "vector";
source = "target";
pos0[] = {0.5,0.5};
pos10[] = {0.85,0.85};
};
class Velocity {
type = "vector";
source = "velocity";
pos0[] = {0.5,0.5};
pos10[] = {0.65,0.65};
};
class VspeedBone {
type = "linear";
source = "vspeed";
sourceScale = 1;
min = -10;
max = 10;
minPos[] = {0.93,0.2};
maxPos[] = {0.93,0.8};
};
class RadarAltitudeBone {
type = "linear";
source = "altitudeAGL";
sourceScale = 1;
min = 0;
max = 60;
minPos[] = {0.965,0.2};
maxPos[] = {0.965,0.8};
};
class HorizonBankRot {
type = "rotational";
source = "horizonBank";
center[] = {0.5,0.5};
min = -3.1416;
max = 3.1416;
minAngle = -180;
maxAngle = 180;
aspectRatio = 1;
};
class ForwardVec {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.2193,0.2193};
};
class WeaponAim {
type = "vector";
source = "weapon";
pos0[] = {0.5,0.5};
pos10[] = {0.75,0.75};
};
class Level0 {
type = "horizon";
pos0[] = {0.5,0.5};
pos10[] = {0.78,0.78};
angle = 0;
};
};
class Draw {
color[] = {0.18,1,0.18};
alpha = 1;
condition = "on";
class Horizont {
clipTL[] = {0.15,0.15};
clipBR[] = {0.85,0.85};
class Dimmed {
class Level0 {
type = "line";
points[] = {
{"Level0",{-0.42,0},1},
{"Level0",{-0.38,0},1},{},
{"Level0",{-0.37,0},1},
{"Level0",{-0.33,0},1},{},
{"Level0",{-0.32,0},1},
{"Level0",{-0.28,0},1},{},
{"Level0",{-0.27,0},1},
{"Level0",{-0.23,0},1},{},
{"Level0",{-0.22,0},1},
{"Level0",{-0.18,0},1},{},
{"Level0",{-0.17,0},1},
{"Level0",{-0.13,0},1},{},
{"Level0",{-0.12,0},1},
{"Level0",{-0.08,0},1},{},
{"Level0",{0.42,0},1},
{"Level0",{0.38,0},1},{},
{"Level0",{0.37,0},1},
{"Level0",{0.33,0},1},{},
{"Level0",{0.32,0},1},
{"Level0",{0.28,0},1},{},
{"Level0",{0.27,0},1},
{"Level0",{0.23,0},1},{},
{"Level0",{0.22,0},1},
{"Level0",{0.18,0},1},{},
{"Level0",{0.17,0},1},
{"Level0",{0.13,0},1},{},
{"Level0",{0.12,0},1},
{"Level0",{0.08,0},1}
};
};
};
};
/*class StaticBank {
type = "line";
width = 3;
points[] = {
{{0.4782,0.251},1},
{{0.4773,0.241},1},{},
{{0.4566,0.2538},1},
{{0.4549,0.2439},1},{},
{{0.4353,0.2585},1},
{{0.4301,0.2392},1},{},
{{0.4145,0.2651},1},
{{0.4111,0.2557},1},{},
{{0.3943,0.2734},1},
{{0.3901,0.2644},1},{},
{{0.375,0.2835},1},
{{0.365,0.2662},1},{},
{{0.3232,0.3232},1},
{{0.3091,0.3091},1},{},
{{0.2835,0.375},1},
{{0.2662,0.365},1},{},
{{"0.5 + (0.5- 0.4782)",0.251},1},
{{"0.5 + (0.5- 0.4773)",0.241},1},{},
{{"0.5 + (0.5- 0.4566)",0.2538},1},
{{"0.5 + (0.5- 0.4549)",0.2439},1},{},
{{"0.5 + (0.5- 0.4353)",0.2585},1},
{{"0.5 + (0.5- 0.4301)",0.2392},1},{},
{{"0.5 + (0.5- 0.4145)",0.2651},1},
{{"0.5 + (0.5- 0.4111)",0.2557},1},{},
{{"0.5 + (0.5- 0.3943)",0.2734},1},
{{"0.5 + (0.5- 0.3901)",0.2644},1},{},
{{"0.5 + (0.5- 0.3750)",0.2835},1},
{{"0.5 + (0.5- 0.3650)",0.2662},1},{},
{{"0.5 + (0.5- 0.3232)",0.3232},1},
{{"0.5 + (0.5- 0.3091)",0.3091},1},{},
{{"0.5 + (0.5- 0.2835)",0.375},1},
{{"0.5 + (0.5- 0.2662)",0.365},1},{},
{{0.5,"0.5 - 0.25"},1},
{{0.5,"0.5 - 0.28"},1}
};
};*/
class HorizonBankRot {
type = "line";
width = 3;
points[] = {{"HorizonBankRot",{0,0.25},1},{"HorizonBankRot",{-0.01,0.23},1},{"HorizonBankRot",{0.01,0.23},1},{"HorizonBankRot",{0,0.25},1}};
};
class Static {
clipTL[] = {0,1};
clipBR[] = {1,0};
type = "line";
width = 5;
points[] = {{{"0.5-0.1","0.9-0.04"},1},{{"0.5-0.1","0.9+0.04"},1},{{"0.5+0.1","0.9+0.04"},1},{{"0.5+0.1","0.9-0.04"},1},{{"0.5-0.1","0.9-0.04"},1},{},{{"0.5-0.1",0.9},1},{{"0.5-0.092",0.9},1},{},{{"0.5+0.1",0.9},1},{{"0.5+0.092",0.9},1},{},{{0.5,"0.9-0.04"},1},{{0.5,"0.9-0.032"},1},{},{{0.5,"0.9+0.04"},1},{{0.5,"0.9+0.032"},1},{}};
};
class Centerline {
type = "line";
width = 7;
points[] = {{{0.5,0.49},1},{{0.5,0.47},1},{},{{0.5,0.51},1},{{0.5,0.53},1},{},{{0.49,0.5},1},{{0.47,0.5},1},{},{{0.51,0.5},1},{{0.53,0.5},1},{}};
};
class GunCross_CIRCLE {
type = "group";
class CCIP_circle {
type = "line";
width = 4;
points[] = {
{"ForwardVec",1,"PlaneOrientation",1,{"-1.2000 * 0.04","-0.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-1.0000 * 0.04","-0.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.9877 * 0.04","-0.1736 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.9397 * 0.04","-0.3420 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.8660 * 0.04","-0.5000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.7660 * 0.04","-0.6428 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.6428 * 0.04","-0.7660 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.5000 * 0.04","-0.8660 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.3420 * 0.04","-0.9397 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.1736 * 0.04","-0.9877 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.0000 * 0.04","-1.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.1736 * 0.04","-0.9877 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.3420 * 0.04","-0.9397 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.5000 * 0.04","-0.8660 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.6428 * 0.04","-0.7660 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.7660 * 0.04","-0.6428 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.8660 * 0.04","-0.5000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.9397 * 0.04","-0.3420 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.9877 * 0.04","-0.1736 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"1.0000 * 0.04","-0.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"1.2000 * 0.04","-0.0000 * 0.04"},1},{},
{"ForwardVec",1,"PlaneOrientation",1,{"-1.2000 * 0.04","0.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-1.0000 * 0.04","0.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.9877 * 0.04","0.1736 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.9397 * 0.04","0.3420 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.8660 * 0.04","0.5000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.7660 * 0.04","0.6428 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.6428 * 0.04","0.7660 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.5000 * 0.04","0.8660 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.3420 * 0.04","0.9397 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.1736 * 0.04","0.9877 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.0000 * 0.04","1.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.1736 * 0.04","0.9877 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.3420 * 0.04","0.9397 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.5000 * 0.04","0.8660 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.6428 * 0.04","0.7660 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.7660 * 0.04","0.6428 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.8660 * 0.04","0.5000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.9397 * 0.04","0.3420 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"0.9877 * 0.04","0.1736 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"1.0000 * 0.04","0.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"1.2000 * 0.04","0.0000 * 0.04"},1},{},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.0000 * 0.04","-1.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.0000 * 0.04","-1.2000 * 0.04"},1},{},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.0000 * 0.04","1.0000 * 0.04"},1},
{"ForwardVec",1,"PlaneOrientation",1,{"-0.0000 * 0.04","1.2000 * 0.04"},1},{},
{"ForwardVec",1,"PlaneOrientation",1,{0.005,0},1},
{"ForwardVec",1,"PlaneOrientation",1,{-0.005,0},1},{},
{"ForwardVec",1,"PlaneOrientation",1,{0,0.005},1},
{"ForwardVec",1,"PlaneOrientation",1,{0,-0.005},1}
};
};
};
class Gunner {
type = "line";
width = 6;
points[] = {
{"GunnerAim",{"0.5-0.015","0.9-0.008"},1},
{"GunnerAim",{"0.5-0.015","0.9+0.008"},1},
{"GunnerAim",{"0.5+0.015","0.9+0.008"},1},
{"GunnerAim",{"0.5+0.015","0.9-0.008"},1},
{"GunnerAim",{"0.5-0.015","0.9-0.008"},1}
};
};
class WeaponName {
type = "text";
source = "weapon";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.61,0.86},1};
right[] = {{0.65,0.86},1};
down[] = {{0.61,0.9},1};
};
class AmmoCount {
type = "text";
source = "ammo";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.61,0.89},1};
right[] = {{0.65,0.89},1};
down[] = {{0.61,0.93},1};
};
class LightsGroup {
type = "group";
condition = "lights";
class LightsText {
type = "text";
source = "static";
text = "LIGHTS";
align = "right";
scale = 1;
pos[] = {{0.03,"0.53 + 0.055"},1};
right[] = {{0.07,"0.53 + 0.055"},1};
down[] = {{0.03,"0.53 + 0.095"},1};
};
};
class CollisionLightsGroup {
type = "group";
condition = "collisionlights";
class CollisionLightsText {
type = "text";
source = "static";
text = "A-COL";
align = "right";
scale = 1;
pos[] = {{0.03,"0.53 + 0.105"},1};
right[] = {{0.07,"0.53 + 0.105"},1};
down[] = {{0.03,"0.53 + 0.145"},1};
};
};
class ATMissileTOFGroup {
condition = "ATmissile";
type = "group";
class TOFtext {
type = "text";
align = "right";
source = "static";
text = "TOF=";
scale = 1;
pos[] = {{0.61,0.92},1};
right[] = {{0.65,0.92},1};
down[] = {{0.61,0.96},1};
};
class TOFnumber {
type = "text";
source = "targetDist";
sourcescale = 0.0025;
align = "right";
scale = 1;
pos[] = {{0.69,0.92},1};
right[] = {{0.73,0.92},1};
down[] = {{0.69,0.96},1};
};
};
class RangeNumber {
type = "text";
source = "targetDist";
sourceScale = 1;
align = "left";
scale = 1;
pos[] = {{0.39,0.89},1};
right[] = {{0.43,0.89},1};
down[] = {{0.39,0.93},1};
};
class RangeText {
type = "text";
source = "static";
text = "RNG";
align = "left";
scale = 1;
pos[] = {{0.39,0.86},1};
right[] = {{0.43,0.86},1};
down[] = {{0.39,0.9},1};
};
class SpeedNumber {
type = "text";
align = "right";
scale = 1;
source = "speed";
sourceScale = 3.6;
pos[] = {{0.03,0.475},1};
right[] = {{0.08,0.475},1};
down[] = {{0.03,0.525},1};
};
class TorqueNumber {
type = "text";
align = "left";
scale = 1;
source = "rtdRotorTorque";
sourceScale = 363;
pos[] = {{0.065,0.175},1};
right[] = {{0.115,0.175},1};
down[] = {{0.065,0.225},1};
};
class Torquetext {
type = "text";
source = "static";
text = "%";
align = "right";
scale = 1;
pos[] = {{0.07,0.175},1};
right[] = {{0.12,0.175},1};
down[] = {{0.07,0.225},1};
};
class AltNumber {
type = "text";
align = "right";
scale = 1;
source = "altitudeAGL";
sourceScale = 1;
pos[] = {{0.83,0.475},1};
right[] = {{0.88,0.475},1};
down[] = {{0.83,0.525},1};
};
class ASLNumber {
type = "text";
source = "altitudeASL";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.835,0.18},1};
right[] = {{0.875,0.18},1};
down[] = {{0.835,0.22},1};
};
class VspeedScalePosta {
type = "line";
width = 5;
points[] = {
{{0.98,0.2},1},
{{1,0.2},1},{},
{{0.93,0.2},1},
{{0.95,0.2},1},{},
{{0.98,0.35},1},
{{1,0.35},1},{},
{{0.93,0.35},1},
{{0.95,0.35},1},{},
{{0.94,0.38},1},
{{0.95,0.38},1},{},
{{0.94,0.41},1},
{{0.95,0.41},1},{},
{{0.94,0.44},1},
{{0.95,0.44},1},{},
{{0.94,0.47},1},
{{0.95,0.47},1},{},
{{0.98,0.5},1},
{{1,0.5},1},{},
{{0.93,0.5},1},
{{0.95,0.5},1},{},
{{0.94,0.53},1},
{{0.95,0.53},1},{},
{{0.94,0.56},1},
{{0.95,0.56},1},{},
{{0.94,0.59},1},
{{0.95,0.59},1},{},
{{0.94,0.62},1},
{{0.95,0.62},1},{},
{{0.98,0.65},1},
{{1,0.65},1},{},
{{0.93,0.65},1},
{{0.95,0.65},1},{},
{{0.99,0.68},1},
{{0.98,0.68},1},{},
{{0.99,0.71},1},
{{0.98,0.71},1},{},
{{0.99,0.74},1},
{{0.98,0.74},1},{},
{{0.99,0.77},1},
{{0.98,0.77},1},{},
{{0.98,0.8},1},
{{1,0.8},1},{},
{{0.93,0.8},1},
{{0.95,0.8},1},{}
};
};
class RadarAltitudeBand {
clipTL[] = {0,0.2};
clipBR[] = {1,0.8};
class radarbanda {
type = "line";
width = 17;
points[] = {
{"RadarAltitudeBone",{0,0},1},
{"RadarAltitudeBone",{0,0.6},1}
};
};
};
class VspeedBand {
type = "line";
width = 3;
points[] = {
{"VspeedBone",{-0.01,0},1},
{"VspeedBone",{-0.025,-0.015},1},
{"VspeedBone",{-0.025,0.015},1},
{"VspeedBone",{-0.01,0},1},{}
};
};
class HeadingNumber: SpeedNumber {
source = "heading";
sourceScale = 1;
align = "center";
pos[] = {{0.5,0.01},1};
right[] = {{0.56,0.01},1};
down[] = {{0.5,0.06},1};
};
class Center_box {
type = "line";
width = 3;
points[] = {
{{0.44,0.005},1},
{{"0.44 + 0.12",0.005},1},
{{"0.44 + 0.12","0.005 + 0.06"},1},
{{0.44,"0.005 + 0.06"},1},
{{0.44,0.005},1}
};
};
class HeadingArrow {
type = "line";
width = 7;
points[] = {
{{"0.5","0.128 + 0.03"},1},
{{0.5,0.128},1}
};
};
class HeadingScale {
type = "scale";
horizontal = 1;
source = "heading";
sourceScale = 1;
width = 5;
top = 0.12;
center = 0.5;
bottom = 0.88;
lineXleft = "0.03 + 0.085";
lineYright = "0.02 + 0.085";
lineXleftMajor = "0.04 + 0.085";
lineYrightMajor = "0.02 + 0.085";
majorLineEach = 3;
numberEach = 3;
step = 10;
stepSize = "0.05";
align = "center";
scale = 1;
pos[] = {0.119,"0.0 + 0.065"};
right[] = {0.159,"0.0 + 0.065"};
down[] = {0.119,"0.04 + 0.065"};
};
class Fuel_Text {
type = "text";
source = "static";
text = "Fuel";
align = "right";
scale = 1;
pos[] = {{0.03,0.9},1};
right[] = {{0.07,0.9},1};
down[] = {{0.03,0.94},1};
};
class Fuel_Number {
type = "text";
source = "fuel";
sourceScale = 100;
align = "right";
scale = 1;
pos[] = {{0.1,0.9},1};
right[] = {{0.14,0.9},1};
down[] = {{0.1,0.94},1};
};
};
helmetMountedDisplay = 1;
helmetPosition[] = {-0.04,0.04,0.1};
helmetRight[] = {0.08,0,0};
helmetDown[] = {0,-0.08,0};
};
class LittleHUD {
class Pos10Vector {
type = "vector";
pos0[] = {0.5,0.5};
pos10[] = {0.722,0.722};
};
topLeft = "HUD_top_left";
topRight = "HUD_top_right";
bottomLeft = "HUD_bottom_left";
borderLeft = 0;
borderRight = 0;
borderTop = 0;
borderBottom = 0;
color[] = {0.15,1,0.15,1};
enableParallax = 0;
class Bones {
class Velocity {
type = "vector";
source = "velocity";
pos0[] = {0.5,0.5};
pos10[] = {0.75,0.75};
};
class ForwardVec1 {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.25,0.25};
};
class ForwardVec {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.253,0.253};
};
class WeaponAim {
type = "vector";
source = "weapon";
pos0[] = {0.5,0.5};
pos10[] = {0.753,0.753};
};
class WeaponAim1 {
type = "vector";
source = "weapon";
pos0[] = {0,0};
pos10[] = {0.253,0.23};
};
class Target {
type = "vector";
source = "target";
pos0[] = {0.5,0.5};
pos10[] = {0.753,0.753};
};
class RadarContact {
type = "fixed";
pos[] = {0,0};
};
};
class Draw {
color[] = {0.18,1,0.18};
alpha = 1;
condition = "on";
class PlaneMovementCrosshair {
type = "line";
width = 7;
points[] = {
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1},
{"ForwardVec1",1,"Velocity",1,{0.01,-0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0.01732,-0.01},1},
{"ForwardVec1",1,"Velocity",1,{0.02,0},1},
{"ForwardVec1",1,"Velocity",1,{0.01732,0.01},1},
{"ForwardVec1",1,"Velocity",1,{0.01,0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0,0.02},1},
{"ForwardVec1",1,"Velocity",1,{-0.01,0.01732},1},
{"ForwardVec1",1,"Velocity",1,{-0.01732,0.01},1},
{"ForwardVec1",1,"Velocity",1,{-0.02,0},1},
{"ForwardVec1",1,"Velocity",1,{-0.01732,-0.01},1},
{"ForwardVec1",1,"Velocity",1,{-0.01,-0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1},{},
{"ForwardVec1",1,"Velocity",1,{0.04,0},1},
{"ForwardVec1",1,"Velocity",1,{0.02,0},1},{},
{"ForwardVec1",1,"Velocity",1,{-0.04,0},1},
{"ForwardVec1",1,"Velocity",1,{-0.02,0},1},{},
{"ForwardVec1",1,"Velocity",1,{0,-0.04},1},
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1}
};
};
class TargetACQ {
type = "line";
width = 2;
points[] = {
//////////////////////////////////////////////// UP
/*{"ForwardVec1",1,"target",{0,-0.1},1},
{"ForwardVec1",1,"target",{0,-0.095},1},{},
{"ForwardVec1",1,"target",{0,-0.09},1},
{"ForwardVec1",1,"target",{0,-0.085},1},{},
{"ForwardVec1",1,"target",{0,-0.08},1},
{"ForwardVec1",1,"target",{0,-0.075},1},{},
{"ForwardVec1",1,"target",{0,-0.07},1},
{"ForwardVec1",1,"target",{0,-0.065},1},{},*/
{"ForwardVec",1,"target",{0,-0.06},1},
{"ForwardVec",1,"target",{0,-0.055},1},{},
{"ForwardVec",1,"target",{0,-0.05},1},
{"ForwardVec",1,"target",{0,-0.045},1},{},
{"ForwardVec",1,"target",{0,-0.04},1},
{"ForwardVec",1,"target",{0,-0.035},1},{},
{"ForwardVec",1,"target",{0,-0.03},1},
{"ForwardVec",1,"target",{0,-0.025},1},{},
{"ForwardVec",1,"target",{0,-0.02},1},
{"ForwardVec",1,"target",{0,-0.015},1},{},
{"ForwardVec",1,"target",{0,-0.01},1},
{"ForwardVec",1,"target",{0,-0.005},1},{},
//////////////////////////////////////////////// center
{"ForwardVec",1,"target",{0,0},1},
{"ForwardVec",1,"target",{0,0},1},{},
/////////////////////////////////////////////// DOWN
/*{"ForwardVec1",1,"target",{0,0.1},1},
{"ForwardVec1",1,"target",{0,0.095},1},{},
{"ForwardVec1",1,"target",{0,0.09},1},
{"ForwardVec1",1,"target",{0,0.085},1},{},
{"ForwardVec1",1,"target",{0,0.080},1},
{"ForwardVec1",1,"target",{0,0.075},1},{},
{"ForwardVec1",1,"target",{0,0.070},1},
{"ForwardVec1",1,"target",{0,0.065},1},{},*/
{"ForwardVec",1,"target",{0,0.060},1},
{"ForwardVec",1,"target",{0,0.055},1},{},
{"ForwardVec",1,"target",{0,0.050},1},
{"ForwardVec",1,"target",{0,0.045},1},{},
{"ForwardVec",1,"target",{0,0.040},1},
{"ForwardVec",1,"target",{0,0.035},1},{},
{"ForwardVec",1,"target",{0,0.030},1},
{"ForwardVec",1,"target",{0,0.025},1},{},
{"ForwardVec",1,"target",{0,0.020},1},
{"ForwardVec",1,"target",{0,0.015},1},{},
{"ForwardVec",1,"target",{0,0.010},1},
{"ForwardVec",1,"target",{0,0.005},1},{},
/////////////////////////////////////////////// LEFT
/*{"ForwardVec1",1,"target",{-0.10, 0},1},
{"ForwardVec1",1,"target",{-0.095, 0},1},{},
{"ForwardVec1",1,"target",{-0.09, 0},1},
{"ForwardVec1",1,"target",{-0.085, 0},1},{},
{"ForwardVec1",1,"target",{-0.080, 0},1},
{"ForwardVec1",1,"target",{-0.075, 0},1},{},
{"ForwardVec1",1,"target",{-0.070, 0},1},
{"ForwardVec1",1,"target",{-0.065, 0},1},{},*/
{"ForwardVec",1,"target",{-0.060, 0},1},
{"ForwardVec",1,"target",{-0.055, 0},1},{},
{"ForwardVec",1,"target",{-0.050, 0},1},
{"ForwardVec",1,"target",{-0.045, 0},1},{},
{"ForwardVec",1,"target",{-0.040, 0},1},
{"ForwardVec",1,"target",{-0.035, 0},1},{},
{"ForwardVec",1,"target",{-0.030, 0},1},
{"ForwardVec",1,"target",{-0.025, 0},1},{},
{"ForwardVec",1,"target",{-0.020, 0},1},
{"ForwardVec",1,"target",{-0.015, 0},1},{},
{"ForwardVec",1,"target",{-0.010, 0},1},
{"ForwardVec",1,"target",{-0.005, 0},1},{},
/////////////////////////////////////////////// RIGHT
/*{"ForwardVec1",1,"target",{0.10, 0},1},
{"ForwardVec1",1,"target",{0.095, 0},1},{},
{"ForwardVec1",1,"target",{0.09, 0},1},
{"ForwardVec1",1,"target",{0.085, 0},1},{},
{"ForwardVec1",1,"target",{0.080, 0},1},
{"ForwardVec1",1,"target",{0.075, 0},1},{},
{"ForwardVec1",1,"target",{0.070, 0},1},
{"ForwardVec1",1,"target",{0.065, 0},1},{},*/
{"ForwardVec",1,"target",{0.060, 0},1},
{"ForwardVec",1,"target",{0.055, 0},1},{},
{"ForwardVec",1,"target",{0.050, 0},1},
{"ForwardVec",1,"target",{0.045, 0},1},{},
{"ForwardVec",1,"target",{0.040, 0},1},
{"ForwardVec",1,"target",{0.035, 0},1},{},
{"ForwardVec",1,"target",{0.030, 0},1},
{"ForwardVec",1,"target",{0.025, 0},1},{},
{"ForwardVec",1,"target",{0.020, 0},1},
{"ForwardVec",1,"target",{0.015, 0},1},{},
{"ForwardVec",1,"target",{0.010, 0},1},
{"ForwardVec",1,"target",{0.005, 0},1},{}
};
};
};
helmetMountedDisplay = 1;
helmetPosition[] = {-0.035,0.035,0.1};
helmetRight[] = {0.07,0,0};
helmetDown[] = {0,-0.07,0};
};
};

View File

@ -1,896 +0,0 @@
class MFD {
class AirplaneHUD {
class Pos10Vector {
type = "vector";
pos0[] = {0.5,0.5};
pos10[] = {0.85,0.85};
};
topLeft = "HUD_top_left";
topRight = "HUD_top_right";
bottomLeft = "HUD_bottom_left";
borderLeft = 0;
borderRight = 0;
borderTop = 0;
borderBottom = 0;
color[] = {0.15,1,0.15,1};
enableParallax = 0;
class Bones {
class PlaneOrientation {
type = "fixed";
pos[] = {0.5,0.5};
};
class GunnerAim {
type = "vector";
source = "weapon";
pos0[] = {0,0};
pos10[] = {0.011,0.0027};
};
class Target {
type = "vector";
source = "target";
pos0[] = {0.5,0.5};
pos10[] = {0.85,0.85};
};
class Velocity {
type = "vector";
source = "velocity";
pos0[] = {0.5,0.5};
pos10[] = {0.65,0.65};
};
class VspeedBone {
type = "linear";
source = "vspeed";
sourceScale = 1;
min = -10;
max = 10;
minPos[] = {0.93,0.2};
maxPos[] = {0.93,0.8};
};
class RadarAltitudeBone {
type = "linear";
source = "altitudeAGL";
sourceScale = 1;
min = 0;
max = 60;
minPos[] = {0.965,0.2};
maxPos[] = {0.965,0.8};
};
class HorizonBankRot {
type = "rotational";
source = "horizonBank";
center[] = {0.5,0.5};
min = -3.1416;
max = 3.1416;
minAngle = -180;
maxAngle = 180;
aspectRatio = 1;
};
class ForwardVec {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.235,0.235};
};
class WeaponAim {
type = "vector";
source = "weapon";
pos0[] = {0.5,0.5};
pos10[] = {0.75,0.75};
};
class Level0 {
type = "horizon";
pos0[] = {0.5,0.5};
pos10[] = {0.78,0.78};
angle = 0;
};
class LevelP5: Level0 {
angle = 5;
};
class LevelM5: Level0 {
angle = -5;
};
class LevelP10: Level0 {
angle = 10;
};
class LevelM10: Level0 {
angle = -10;
};
class LevelP15: Level0 {
angle = 15;
};
class LevelM15: Level0 {
angle = -15;
};
class LevelP20: Level0 {
angle = 20;
};
class LevelM20: Level0 {
angle = -20;
};
class LevelP25: Level0 {
angle = 25;
};
class LevelM25: Level0 {
angle = -25;
};
class LevelP30: Level0 {
angle = 30;
};
class LevelM30: Level0 {
angle = -30;
};
class LevelP35: Level0 {
angle = 35;
};
class LevelM35: Level0 {
angle = -35;
};
class LevelP40: Level0 {
angle = 40;
};
class LevelM40: Level0 {
angle = -40;
};
class LevelP45: Level0 {
angle = 45;
};
class LevelM45: Level0 {
angle = -45;
};
class LevelP50: Level0 {
angle = 50;
};
class LevelM50: Level0 {
angle = -50;
};
class LevelP55: Level0 {
angle = 55;
};
class LevelM55: Level0 {
angle = -55;
};
class LevelP60: Level0 {
angle = 60;
};
class LevelM60: Level0 {
angle = -60;
};
class LevelP65: Level0 {
angle = 65;
};
class LevelM65: Level0 {
angle = -65;
};
class LevelP70: Level0 {
angle = 70;
};
class LevelM70: Level0 {
angle = -70;
};
class LevelP75: Level0 {
angle = 75;
};
class LevelM75: Level0 {
angle = -75;
};
class LevelP80: Level0 {
angle = 80;
};
class LevelM80: Level0 {
angle = -80;
};
class LevelP85: Level0 {
angle = 85;
};
class LevelM85: Level0 {
angle = -85;
};
class LevelP90: Level0 {
angle = 90;
};
class LevelM90: Level0 {
angle = -90;
};
};
class Draw {
color[] = {0.18,1,0.18};
alpha = 1;
condition = "on";
class Horizont {
clipTL[] = {0.15,0.15};
clipBR[] = {0.85,0.85};
class Dimmed {
class Level0 {
type = "line";
points[] = {
{"Level0",{-0.42,0},1},
{"Level0",{-0.38,0},1},{},
{"Level0",{-0.37,0},1},
{"Level0",{-0.33,0},1},{},
{"Level0",{-0.32,0},1},
{"Level0",{-0.28,0},1},{},
{"Level0",{-0.27,0},1},
{"Level0",{-0.23,0},1},{},
{"Level0",{-0.22,0},1},
{"Level0",{-0.18,0},1},{},
{"Level0",{-0.17,0},1},
{"Level0",{-0.13,0},1},{},
{"Level0",{-0.12,0},1},
{"Level0",{-0.08,0},1},{},
{"Level0",{0.42,0},1},
{"Level0",{0.38,0},1},{},
{"Level0",{0.37,0},1},
{"Level0",{0.33,0},1},{},
{"Level0",{0.32,0},1},
{"Level0",{0.28,0},1},{},
{"Level0",{0.27,0},1},
{"Level0",{0.23,0},1},{},
{"Level0",{0.22,0},1},
{"Level0",{0.18,0},1},{},
{"Level0",{0.17,0},1},
{"Level0",{0.13,0},1},{},
{"Level0",{0.12,0},1},
{"Level0",{0.08,0},1}
};
};
};
};
/*class StaticBank {
type = "line";
width = 3;
points[] = {
{{0.4782,0.251},1},
{{0.4773,0.241},1},{},
{{0.4566,0.2538},1},
{{0.4549,0.2439},1},{},
{{0.4353,0.2585},1},
{{0.4301,0.2392},1},{},
{{0.4145,0.2651},1},
{{0.4111,0.2557},1},{},
{{0.3943,0.2734},1},
{{0.3901,0.2644},1},{},
{{0.375,0.2835},1},
{{0.365,0.2662},1},{},
{{0.3232,0.3232},1},
{{0.3091,0.3091},1},{},
{{0.2835,0.375},1},
{{0.2662,0.365},1},{},
{{"0.5 + (0.5- 0.4782)",0.251},1},
{{"0.5 + (0.5- 0.4773)",0.241},1},{},
{{"0.5 + (0.5- 0.4566)",0.2538},1},
{{"0.5 + (0.5- 0.4549)",0.2439},1},{},
{{"0.5 + (0.5- 0.4353)",0.2585},1},
{{"0.5 + (0.5- 0.4301)",0.2392},1},{},
{{"0.5 + (0.5- 0.4145)",0.2651},1},
{{"0.5 + (0.5- 0.4111)",0.2557},1},{},
{{"0.5 + (0.5- 0.3943)",0.2734},1},
{{"0.5 + (0.5- 0.3901)",0.2644},1},{},
{{"0.5 + (0.5- 0.3750)",0.2835},1},
{{"0.5 + (0.5- 0.3650)",0.2662},1},{},
{{"0.5 + (0.5- 0.3232)",0.3232},1},
{{"0.5 + (0.5- 0.3091)",0.3091},1},{},
{{"0.5 + (0.5- 0.2835)",0.375},1},
{{"0.5 + (0.5- 0.2662)",0.365},1},{},
{{0.5,"0.5 - 0.25"},1},
{{0.5,"0.5 - 0.28"},1}
};
};*/
class HorizonBankRot {
type = "line";
width = 3;
points[] = {
{"HorizonBankRot",{0,0.25},1},
{"HorizonBankRot",{-0.01,0.23},1},
{"HorizonBankRot",{0.01,0.23},1},
{"HorizonBankRot",{0,0.25},1}
};
};
class Static {
clipTL[] = {0,1};
clipBR[] = {1,0};
type = "line";
width = 5;
points[] = {
{{"0.5-0.1","0.9-0.04"},1},
{{"0.5-0.1","0.9+0.04"},1},
{{"0.5+0.1","0.9+0.04"},1},
{{"0.5+0.1","0.9-0.04"},1},
{{"0.5-0.1","0.9-0.04"},1},{},
{{"0.5-0.1",0.9},1},
{{"0.5-0.092",0.9},1},{},
{{"0.5+0.1",0.9},1},
{{"0.5+0.092",0.9},1},{},
{{0.5,"0.9-0.04"},1},
{{0.5,"0.9-0.032"},1},{},
{{0.5,"0.9+0.04"},1},
{{0.5,"0.9+0.032"},1},{}
};
};
class Centerline {
type = "line";
width = 7;
points[] = {
{{0.5,0.49},1},
{{0.5,0.47},1},{},
{{0.5,0.51},1},
{{0.5,0.53},1},{},
{{0.49,0.5},1},
{{0.47,0.5},1},{},
{{0.51,0.5},1},
{{0.53,0.5},1},{}
};
};
class Gunner {
type = "line";
width = 6;
points[] = {
{"GunnerAim",{"0.5-0.015","0.9-0.008"},1},
{"GunnerAim",{"0.5-0.015","0.9+0.008"},1},
{"GunnerAim",{"0.5+0.015","0.9+0.008"},1},
{"GunnerAim",{"0.5+0.015","0.9-0.008"},1},
{"GunnerAim",{"0.5-0.015","0.9-0.008"},1}
};
};
class WeaponName {
type = "text";
source = "weapon";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.61,0.86},1};
right[] = {{0.65,0.86},1};
down[] = {{0.61,0.9},1};
};
class AmmoCount {
type = "text";
source = "ammo";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.61,0.89},1};
right[] = {{0.65,0.89},1};
down[] = {{0.61,0.93},1};
};
class LightsGroup {
type = "group";
condition = "lights";
class LightsText {
type = "text";
source = "static";
text = "LIGHTS";
align = "right";
scale = 1;
pos[] = {{0.03,"0.53 + 0.055"},1};
right[] = {{0.07,"0.53 + 0.055"},1};
down[] = {{0.03,"0.53 + 0.095"},1};
};
};
class CollisionLightsGroup {
type = "group";
condition = "collisionlights";
class CollisionLightsText {
type = "text";
source = "static";
text = "A-COL";
align = "right";
scale = 1;
pos[] = {{0.03,"0.53 + 0.105"},1};
right[] = {{0.07,"0.53 + 0.105"},1};
down[] = {{0.03,"0.53 + 0.145"},1};
};
};
class ATMissileTOFGroup {
condition = "ATmissile";
type = "group";
class TOFtext {
type = "text";
align = "right";
source = "static";
text = "TOF=";
scale = 1;
pos[] = {{0.61,0.92},1};
right[] = {{0.65,0.92},1};
down[] = {{0.61,0.96},1};
};
class TOFnumber {
type = "text";
source = "targetDist";
sourcescale = 0.0025;
align = "right";
scale = 1;
pos[] = {{0.69,0.92},1};
right[] = {{0.73,0.92},1};
down[] = {{0.69,0.96},1};
};
};
class RangeNumber {
type = "text";
source = "targetDist";
sourceScale = 1;
align = "left";
scale = 1;
pos[] = {{0.39,0.89},1};
right[] = {{0.43,0.89},1};
down[] = {{0.39,0.93},1};
};
class RangeText {
type = "text";
source = "static";
text = "RNG";
align = "left";
scale = 1;
pos[] = {{0.39,0.86},1};
right[] = {{0.43,0.86},1};
down[] = {{0.39,0.9},1};
};
class SpeedNumber {
type = "text";
align = "right";
scale = 1;
source = "speed";
sourceScale = 3.6;
pos[] = {{0.03,0.475},1};
right[] = {{0.08,0.475},1};
down[] = {{0.03,0.525},1};
};
class TorqueNumber {
type = "text";
align = "left";
scale = 1;
source = "rtdRotorTorque";
sourceScale = 110;
pos[] = {{0.065,0.175},1};
right[] = {{0.115,0.175},1};
down[] = {{0.065,0.225},1};
};
class Torquetext {
type = "text";
source = "static";
text = "%";
align = "right";
scale = 1;
pos[] = {{0.07,0.175},1};
right[] = {{0.12,0.175},1};
down[] = {{0.07,0.225},1};
};
class AltNumber {
type = "text";
align = "right";
scale = 1;
source = "altitudeAGL";
sourceScale = 1;
pos[] = {{0.83,0.475},1};
right[] = {{0.88,0.475},1};
down[] = {{0.83,0.525},1};
};
class ASLNumber {
type = "text";
source = "altitudeASL";
sourceScale = 1;
align = "right";
scale = 1;
pos[] = {{0.835,0.18},1};
right[] = {{0.875,0.18},1};
down[] = {{0.835,0.22},1};
};
class VspeedScalePosta {
type = "line";
width = 5;
points[] = {
{{0.98,0.2},1},
{{1,0.2},1},{},
{{0.93,0.2},1},
{{0.95,0.2},1},{},
{{0.98,0.35},1},
{{1,0.35},1},{},
{{0.93,0.35},1},
{{0.95,0.35},1},{},
{{0.94,0.38},1},
{{0.95,0.38},1},{},
{{0.94,0.41},1},
{{0.95,0.41},1},{},
{{0.94,0.44},1},
{{0.95,0.44},1},{},
{{0.94,0.47},1},
{{0.95,0.47},1},{},
{{0.98,0.5},1},
{{1,0.5},1},{},
{{0.93,0.5},1},
{{0.95,0.5},1},{},
{{0.94,0.53},1},
{{0.95,0.53},1},{},
{{0.94,0.56},1},
{{0.95,0.56},1},{},
{{0.94,0.59},1},
{{0.95,0.59},1},{},
{{0.94,0.62},1},
{{0.95,0.62},1},{},
{{0.98,0.65},1},
{{1,0.65},1},{},
{{0.93,0.65},1},
{{0.95,0.65},1},{},
{{0.99,0.68},1},
{{0.98,0.68},1},{},
{{0.99,0.71},1},
{{0.98,0.71},1},{},
{{0.99,0.74},1},
{{0.98,0.74},1},{},
{{0.99,0.77},1},
{{0.98,0.77},1},{},
{{0.98,0.8},1},
{{1,0.8},1},{},
{{0.93,0.8},1},
{{0.95,0.8},1},{}
};
};
class RadarAltitudeBand {
clipTL[] = {0,0.2};
clipBR[] = {1,0.8};
class radarbanda {
type = "line";
width = 17;
points[] = {
{"RadarAltitudeBone",{0,0},1},
{"RadarAltitudeBone",{0,0.6},1}
};
};
};
class VspeedBand {
type = "line";
width = 3;
points[] = {
{"VspeedBone",{-0.01,0},1},
{"VspeedBone",{-0.025,-0.015},1},
{"VspeedBone",{-0.025,0.015},1},
{"VspeedBone",{-0.01,0},1},{}
};
};
class HeadingNumber: SpeedNumber {
source = "heading";
sourceScale = 1;
align = "center";
pos[] = {{0.5,0.01},1};
right[] = {{0.56,0.01},1};
down[] = {{0.5,0.06},1};
};
class Center_box {
type = "line";
width = 3;
points[] = {
{{0.44,0.005},1},
{{"0.44 + 0.12",0.005},1},
{{"0.44 + 0.12","0.005 + 0.06"},1},
{{0.44,"0.005 + 0.06"},1},
{{0.44,0.005},1}
};
};
class HeadingArrow {
type = "line";
width = 7;
points[] = {
{{"0.5","0.128 + 0.03"},1},
{{0.5,0.128},1}
};
};
class HeadingScale {
type = "scale";
horizontal = 1;
source = "heading";
sourceScale = 1;
width = 5;
top = 0.12;
center = 0.5;
bottom = 0.88;
lineXleft = "0.03 + 0.085";
lineYright = "0.02 + 0.085";
lineXleftMajor = "0.04 + 0.085";
lineYrightMajor = "0.02 + 0.085";
majorLineEach = 3;
numberEach = 3;
step = 10;
stepSize = "0.05";
align = "center";
scale = 1;
pos[] = {0.119,"0.0 + 0.065"};
right[] = {0.159,"0.0 + 0.065"};
down[] = {0.119,"0.04 + 0.065"};
};
class Fuel_Text {
type = "text";
source = "static";
text = "Fuel";
align = "right";
scale = 1;
pos[] = {{0.03,0.9},1};
right[] = {{0.07,0.9},1};
down[] = {{0.03,0.94},1};
};
class Fuel_Number {
type = "text";
source = "fuel";
sourceScale = 100;
align = "right";
scale = 1;
pos[] = {{0.1,0.9},1};
right[] = {{0.14,0.9},1};
down[] = {{0.1,0.94},1};
};
};
helmetMountedDisplay = 1;
helmetPosition[] = {-0.04,0.04,0.1};
helmetRight[] = {0.08,0,0};
helmetDown[] = {0,-0.08,0};
};
class LittleHUD {
class Pos10Vector {
type = "vector";
pos0[] = {0.5,0.5};
pos10[] = {0.722,0.722};
};
topLeft = "HUD_top_left";
topRight = "HUD_top_right";
bottomLeft = "HUD_bottom_left";
borderLeft = 0;
borderRight = 0;
borderTop = 0;
borderBottom = 0;
color[] = {0.15,1,0.15,1};
enableParallax = 0;
class Bones {
class Velocity {
type = "vector";
source = "velocity";
pos0[] = {0.5,0.5};
pos10[] = {0.75,0.75};
};
class ForwardVec1 {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.25,0.25};
};
class ForwardVec {
type = "vector";
source = "forward";
pos0[] = {0,0};
pos10[] = {0.253,0.253};
};
class WeaponAim {
type = "vector";
source = "weapon";
pos0[] = {0.5,0.5};
pos10[] = {0.753,0.753};
};
class WeaponAim1 {
type = "vector";
source = "weapon";
pos0[] = {0,0};
pos10[] = {0.253,0.23};
};
class Target {
type = "vector";
source = "target";
pos0[] = {0.5,0.5};
pos10[] = {0.753,0.753};
};
class RadarContact {
type = "fixed";
pos[] = {0,0};
};
};
class Draw {
color[] = {0.18,1,0.18};
alpha = 1;
condition = "on";
class PlaneMovementCrosshair {
type = "line";
width = 7;
points[] = {
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1},
{"ForwardVec1",1,"Velocity",1,{0.01,-0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0.01732,-0.01},1},
{"ForwardVec1",1,"Velocity",1,{0.02,0},1},
{"ForwardVec1",1,"Velocity",1,{0.01732,0.01},1},
{"ForwardVec1",1,"Velocity",1,{0.01,0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0,0.02},1},
{"ForwardVec1",1,"Velocity",1,{-0.01,0.01732},1},
{"ForwardVec1",1,"Velocity",1,{-0.01732,0.01},1},
{"ForwardVec1",1,"Velocity",1,{-0.02,0},1},
{"ForwardVec1",1,"Velocity",1,{-0.01732,-0.01},1},
{"ForwardVec1",1,"Velocity",1,{-0.01,-0.01732},1},
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1},{},
{"ForwardVec1",1,"Velocity",1,{0.04,0},1},
{"ForwardVec1",1,"Velocity",1,{0.02,0},1},{},
{"ForwardVec1",1,"Velocity",1,{-0.04,0},1},
{"ForwardVec1",1,"Velocity",1,{-0.02,0},1},{},
{"ForwardVec1",1,"Velocity",1,{0,-0.04},1},
{"ForwardVec1",1,"Velocity",1,{0,-0.02},1}
};
};
class TargetACQ {
type = "line";
width = 2;
points[] = {
//////////////////////////////////////////////// UP
/*{"ForwardVec1",1,"target",{0,-0.1},1},
{"ForwardVec1",1,"target",{0,-0.095},1},{},
{"ForwardVec1",1,"target",{0,-0.09},1},
{"ForwardVec1",1,"target",{0,-0.085},1},{},
{"ForwardVec1",1,"target",{0,-0.08},1},
{"ForwardVec1",1,"target",{0,-0.075},1},{},
{"ForwardVec1",1,"target",{0,-0.07},1},
{"ForwardVec1",1,"target",{0,-0.065},1},{},*/
{"ForwardVec",1,"target",{0,-0.06},1},
{"ForwardVec",1,"target",{0,-0.055},1},{},
{"ForwardVec",1,"target",{0,-0.05},1},
{"ForwardVec",1,"target",{0,-0.045},1},{},
{"ForwardVec",1,"target",{0,-0.04},1},
{"ForwardVec",1,"target",{0,-0.035},1},{},
{"ForwardVec",1,"target",{0,-0.03},1},
{"ForwardVec",1,"target",{0,-0.025},1},{},
{"ForwardVec",1,"target",{0,-0.02},1},
{"ForwardVec",1,"target",{0,-0.015},1},{},
{"ForwardVec",1,"target",{0,-0.01},1},
{"ForwardVec",1,"target",{0,-0.005},1},{},
//////////////////////////////////////////////// center
{"ForwardVec",1,"target",{0,0},1},
{"ForwardVec",1,"target",{0,0},1},{},
/////////////////////////////////////////////// DOWN
/*{"ForwardVec1",1,"target",{0,0.1},1},
{"ForwardVec1",1,"target",{0,0.095},1},{},
{"ForwardVec1",1,"target",{0,0.09},1},
{"ForwardVec1",1,"target",{0,0.085},1},{},
{"ForwardVec1",1,"target",{0,0.080},1},
{"ForwardVec1",1,"target",{0,0.075},1},{},
{"ForwardVec1",1,"target",{0,0.070},1},
{"ForwardVec1",1,"target",{0,0.065},1},{},*/
{"ForwardVec",1,"target",{0,0.060},1},
{"ForwardVec",1,"target",{0,0.055},1},{},
{"ForwardVec",1,"target",{0,0.050},1},
{"ForwardVec",1,"target",{0,0.045},1},{},
{"ForwardVec",1,"target",{0,0.040},1},
{"ForwardVec",1,"target",{0,0.035},1},{},
{"ForwardVec",1,"target",{0,0.030},1},
{"ForwardVec",1,"target",{0,0.025},1},{},
{"ForwardVec",1,"target",{0,0.020},1},
{"ForwardVec",1,"target",{0,0.015},1},{},
{"ForwardVec",1,"target",{0,0.010},1},
{"ForwardVec",1,"target",{0,0.005},1},{},
/////////////////////////////////////////////// LEFT
/*{"ForwardVec1",1,"target",{-0.10, 0},1},
{"ForwardVec1",1,"target",{-0.095, 0},1},{},
{"ForwardVec1",1,"target",{-0.09, 0},1},
{"ForwardVec1",1,"target",{-0.085, 0},1},{},
{"ForwardVec1",1,"target",{-0.080, 0},1},
{"ForwardVec1",1,"target",{-0.075, 0},1},{},
{"ForwardVec1",1,"target",{-0.070, 0},1},
{"ForwardVec1",1,"target",{-0.065, 0},1},{},*/
{"ForwardVec",1,"target",{-0.060, 0},1},
{"ForwardVec",1,"target",{-0.055, 0},1},{},
{"ForwardVec",1,"target",{-0.050, 0},1},
{"ForwardVec",1,"target",{-0.045, 0},1},{},
{"ForwardVec",1,"target",{-0.040, 0},1},
{"ForwardVec",1,"target",{-0.035, 0},1},{},
{"ForwardVec",1,"target",{-0.030, 0},1},
{"ForwardVec",1,"target",{-0.025, 0},1},{},
{"ForwardVec",1,"target",{-0.020, 0},1},
{"ForwardVec",1,"target",{-0.015, 0},1},{},
{"ForwardVec",1,"target",{-0.010, 0},1},
{"ForwardVec",1,"target",{-0.005, 0},1},{},
/////////////////////////////////////////////// RIGHT
/*{"ForwardVec1",1,"target",{0.10, 0},1},
{"ForwardVec1",1,"target",{0.095, 0},1},{},
{"ForwardVec1",1,"target",{0.09, 0},1},
{"ForwardVec1",1,"target",{0.085, 0},1},{},
{"ForwardVec1",1,"target",{0.080, 0},1},
{"ForwardVec1",1,"target",{0.075, 0},1},{},
{"ForwardVec1",1,"target",{0.070, 0},1},
{"ForwardVec1",1,"target",{0.065, 0},1},{},*/
{"ForwardVec",1,"target",{0.060, 0},1},
{"ForwardVec",1,"target",{0.055, 0},1},{},
{"ForwardVec",1,"target",{0.050, 0},1},
{"ForwardVec",1,"target",{0.045, 0},1},{},
{"ForwardVec",1,"target",{0.040, 0},1},
{"ForwardVec",1,"target",{0.035, 0},1},{},
{"ForwardVec",1,"target",{0.030, 0},1},
{"ForwardVec",1,"target",{0.025, 0},1},{},
{"ForwardVec",1,"target",{0.020, 0},1},
{"ForwardVec",1,"target",{0.015, 0},1},{},
{"ForwardVec",1,"target",{0.010, 0},1},
{"ForwardVec",1,"target",{0.005, 0},1},{}
};
};
};
helmetMountedDisplay = 1;
helmetPosition[] = {-0.035,0.035,0.1};
helmetRight[] = {0.07,0,0};
helmetDown[] = {0,-0.07,0};
};
};

Binary file not shown.

Binary file not shown.

View File

@ -1,159 +0,0 @@
class CfgPatches {
class AGM_Attach {
units[] = {};
weapons[] = {"AGM_IR_Strobe_Item"};
requiredVersion = 0.60;
requiredAddons[] = {AGM_Core, AGM_Interaction};
version = "0.95";
versionStr = "0.95";
versionAr[] = {0,95,0};
author[] = {"KoffeinFlummi", "eRazeri", "CAA-Picard"};
authorUrl = "https://github.com/KoffeinFlummi/";
};
};
class CfgFunctions {
class AGM_Attach {
class AGM_Attach {
file = "AGM_Attach\functions";
class attach;
class canAttach;
class canDetach;
class detach;
class openAttachUI;
};
};
};
#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \
name = #ITEM; \
count = COUNT; \
};
class CfgVehicles {
class Man;
class CAManBase: Man {
class AGM_SelfActions {
class AGM_Equipment {
class AGM_Attach {
displayName = "$STR_AGM_Attach_AttachDetach";
condition = "[_player, ''] call AGM_Attach_fnc_canAttach";
statement = "[_player] call AGM_Attach_fnc_openAttachUI;";
exceptions[] = {"AGM_Drag_isNotDragging"};
showDisabled = 0;
priority = 5;
icon = "\AGM_Attach\UI\attach_ca.paa";
hotkey = "T";
};
class AGM_Attach_Detach {
displayName = "$STR_AGM_Attach_Detach";
condition = "[_player] call AGM_Attach_fnc_canDetach";
statement = "[_player] call AGM_Attach_fnc_detach";
exceptions[] = {"AGM_Drag_isNotDragging"};
showDisabled = 0;
priority = 5;
icon = "\AGM_Attach\UI\detach_ca.paa";
hotkey = "T";
};
};
};
};
class All;
class AGM_IR_Strobe_Effect: All {
scope = 1;
displayName = "IR Strobe";
model = "\A3\Weapons_F\empty.p3d";
simulation = "nvmarker";
class NVGMarker {
diffuse[] = {0,0,0};
ambient[] = {0,0,0};
brightness = 0.004;
name = "pozicni blik";
drawLight = 1;
drawLightSize = 0.005;
drawLightCenterSize = 0.003;
activeLight = 0;
blinking=1;
dayLight = 0;
onlyInNvg = 1;
useFlare = 0;
};
side = 7;//-1=NO_SIDE yellow box,3=CIV grey box,4=NEUTRAL yellow box,6=FRIENDLY green box,7=LOGIC no radar signature
accuracy = 1000;
cost = 0;
armor = 500;
threat[] = {0,0,0};
nameSound = "";
type = 0;
weapons[] = {};
magazines[] = {};
nvTarget = 1;
destrType = "DestructNo";
brightness = 20;
};
class NATO_Box_Base;
class EAST_Box_Base;
class IND_Box_Base;
class FIA_Box_Base_F;
class Box_NATO_Support_F: NATO_Box_Base {
class TransportItems {
MACRO_ADDITEM(AGM_IR_Strobe_Item,12)
};
};
class Box_East_Support_F: EAST_Box_Base {
class TransportItems {
MACRO_ADDITEM(AGM_IR_Strobe_Item,12)
};
};
class Box_IND_Support_F: IND_Box_Base {
class TransportItems {
MACRO_ADDITEM(AGM_IR_Strobe_Item,12)
};
};
class Box_FIA_Support_F: FIA_Box_Base_F {
class TransportItems {
MACRO_ADDITEM(AGM_IR_Strobe_Item,12)
};
};
class AGM_Box_Misc: Box_NATO_Support_F {
class TransportItems {
MACRO_ADDITEM(AGM_IR_Strobe_Item,12)
};
};
};
class CfgWeapons {
class AGM_ItemCore;
class InventoryItem_Base_F;
class AGM_IR_Strobe_Item: AGM_ItemCore {
displayName = "$STR_AGM_IrStrobe_Name";
descriptionShort = "$STR_AGM_IrStrobe_Description";
model = "\A3\weapons_F\ammo\mag_univ.p3d";
picture = "\AGM_Attach\UI\irstrobe_item.paa";
scope = 2;
AGM_attachable = 1;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
};
class CfgMagazines {
class CA_Magazine;
class B_IR_Grenade: CA_Magazine {
AGM_Attachable = 1;
};
class SmokeShell;
class Chemlight_green: SmokeShell {
AGM_Attachable = 1;
};
};

View File

@ -1,60 +0,0 @@
/*
Author: eRazeri and CAA-Picard
Attach an item to the unit
Arguments:
0: unit
1: Item name
Return Value:
none
*/
private ["_unit", "_itemName", "_attachedItem"];
_unit = _this select 0;
_itemName = _this select 1;
// Check if unit has an attached item
if (_unit getVariable ["AGM_AttachedItemName", ""] != "") exitWith {};
// Check if the unit still has the item
if !((_itemName in items _unit) or (_itemName in magazines _unit)) exitWith {};
// Attach item
switch true do {
case (_itemName == "AGM_IR_Strobe_Item") : {
_attachedItem = "AGM_IR_Strobe_Effect" createVehicle [0,0,0];
_attachedItem attachTo [_unit,[0,-0.11,0.16],"pilot"];//makes it attach to the head a bit better, shoulder is not good for visibility - eRazeri
[localize "STR_AGM_Attach_IrStrobe_Attached"] call AGM_Core_fnc_displayTextStructured;
};
case (_itemName == "B_IR_Grenade") : {
_attachedItem = "B_IRStrobe" createVehicle [0,0,0];
_attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"];
[localize "STR_AGM_Attach_IrGrenade_Attached"] call AGM_Core_fnc_displayTextStructured;
};
case (_itemName == "O_IR_Grenade") : {
_attachedItem = "O_IRStrobe" createVehicle [0,0,0];
_attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"];
[localize "STR_AGM_Attach_IrGrenade_Attached"] call AGM_Core_fnc_displayTextStructured;
};
case (_itemName == "I_IR_Grenade") : {
_attachedItem = "I_IRStrobe" createVehicle [0,0,0];
_attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"];
[localize "STR_AGM_Attach_IrGrenade_Attached"] call AGM_Core_fnc_displayTextStructured;
};
case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : {
_attachedItem = _itemName createVehicle [0,0,0];
_attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"];
[localize "STR_AGM_Attach_Chemlight_Attached"] call AGM_Core_fnc_displayTextStructured;
};
default {
if (true) exitWith {};
};
};
// Remove item
_unit removeItem _itemName;
_unit setVariable ["AGM_AttachedItemName", _itemName, true];
_unit setVariable ["AGM_AttachedItem", _attachedItem, true];

View File

@ -1,19 +0,0 @@
/*
* Author: commy2
*
* Check if a unit can attach a specific item.
*
* Argument:
* 0: Unit that wants to attach the object (Object)
* 1: Name of the attachable item (String)
*
* Return value:
* Boolean (Bool)
*/
private ["_unit", "_item"];
_unit = _this select 0;
_item = _this select 1;
canStand _unit && {_unit getVariable ["AGM_AttachedItemName", ""] == ""} && {_item in (magazines _unit + items _unit + [""])}

View File

@ -1,17 +0,0 @@
/*
* Author: commy2
*
* Check if a unit has an item attached and if it can remove that item.
*
* Argument:
* 0: Unit that wants to detach something (Object)
*
* Return value:
* Boolean (Bool)
*/
private "_unit";
_unit = _this select 0;
canStand _unit && {_unit getVariable ["AGM_AttachedItemName", ""] != ""}

View File

@ -1,63 +0,0 @@
/*
Author: eRazeri and CAA-Picard
Detach an item from a unit
Arguments:
unit
Return Value:
none
*/
private ["_unit", "_itemName", "_count", "_attachedItem"];
_unit = _this select 0;
_itemName = _unit getVariable ["AGM_AttachedItemName", ""];
// Check if unit has an attached item
if (_itemName == "") exitWith {};
// Add item to inventory
_count = (count items _unit) + (count magazines _unit);
_unit addItem _itemName;
if ((count items _unit) + (count magazines _unit) <= _count) exitWith {
[localize "STR_AGM_Attach_Inventory_Full"] call AGM_Core_fnc_displayTextStructured;
};
if (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") then {
// Hack for dealing with X_IR_Grenade effect not dissapearing on deleteVehicle
[_unit getVariable "AGM_AttachedItem", _unit] spawn {
_attachedItem = _this select 0;
_unit = _this select 1;
detach _attachedItem;
_attachedItem setPos [getPos _unit select 0, getPos _unit select 1, (getPos _unit select 2) -1000];
sleep 0.5;
deleteVehicle _attachedItem;
};
}
else
{
// Delete attached item
deleteVehicle (_unit getVariable "AGM_AttachedItem");
};
// Reset unit variables
_unit setVariable ["AGM_AttachedItemName","", true];
_unit setVariable ["AGM_AttachedItem",nil, true];
// Display message
switch true do {
case (_itemName == "AGM_IR_Strobe_Item") : {
[localize "STR_AGM_Attach_IrStrobe_Detached"] call AGM_Core_fnc_displayTextStructured;
};
case (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") : {
[localize "STR_AGM_Attach_IrGrenade_Detached"] call AGM_Core_fnc_displayTextStructured;
};
case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : {
[localize "STR_AGM_Attach_Chemlight_Detached"] call AGM_Core_fnc_displayTextStructured;
};
default {
if (true) exitWith {};
};
};

View File

@ -1,63 +0,0 @@
/*
Name: AGM_Attach_fnc_openAttachUI
Author: Garth de Wet (LH)
Description:
Opens the UI for attaching objects.
Parameters:
0: OBJECT - unit
Returns:
Nothing
Example:
[player] call AGM_Attach_fnc_openAttachUI;
*/
private ["_unit", "_actions", "_attachables", "_item"];
_unit = _this select 0;
_listed = [];
_attachables = magazines _unit;
_actions = [localize "STR_AGM_Attach_AttachDetach", localize "STR_AGM_Attach_Attach"] call AGM_Interaction_fnc_prepareSelectMenu;
{
if !(_x in _listed) then {
_item = ConfigFile >> "CfgMagazines" >> _x;
if (getNumber (_item >> "AGM_Attachable") == 1) then {
_actions = [
_actions,
getText(_item >> "displayName"),
getText(_item >> "picture"),
_x
] call AGM_Interaction_fnc_AddSelectableItem;
};
_listed pushBack _x;
};
} forEach _attachables;
_attachables = items _unit;
{
if !(_x in _listed) then {
_item = ConfigFile >> "CfgWeapons" >> _x;
if (getNumber (_item >> "AGM_Attachable") == 1) then {
_actions = [
_actions,
getText(_item >> "displayName"),
getText(_item >> "picture"),
_x
] call AGM_Interaction_fnc_AddSelectableItem;
};
_listed pushBack _x;
};
} forEach _attachables;
[
_actions,
{
[AGM_player, _this] call AGM_Attach_fnc_attach;
call AGM_Interaction_fnc_hideMenu;
},
{
call AGM_Interaction_fnc_hideMenu;
if !(profileNamespace getVariable ["AGM_Interaction_AutoCloseMenu", false]) then {"Default" call AGM_Interaction_fnc_openMenuSelf};
}
] call AGM_Interaction_fnc_openSelectMenu;

View File

@ -1,150 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2014-12-12 -->
<Project name="AGM">
<Package name="Attach">
<Key ID="STR_AGM_Attach_AttachDetach">
<English>Attach item &gt;&gt;</English>
<German>Gegenstand befestigen &gt;&gt;</German>
<Spanish>Acoplar objeto &gt;&gt;</Spanish>
<Polish>Przyczep przedmiot &gt;&gt;</Polish>
<French>Attacher l'objet &gt;&gt;</French>
<Czech>Připnout předmět &gt;&gt;</Czech>
<Portuguese>Acoplar item &gt;&gt;</Portuguese>
<Italian>Attacca l'oggetto &gt;&gt;</Italian>
<Hungarian>Tárgy hozzácsatolása &gt;&gt;</Hungarian>
<Russian>Добавить приспособления</Russian>
</Key>
<Key ID="STR_AGM_Attach_Attach">
<English>Attach</English>
<German>Befestigen</German>
<Spanish>Acoplar</Spanish>
<Polish>Przyczep</Polish>
<French>Attacher</French>
<Czech>Připnout</Czech>
<Portuguese>Acoplar</Portuguese>
<Italian>Attacca</Italian>
<Hungarian>Hozzácsatolás</Hungarian>
<Russian>Присоединить</Russian>
</Key>
<Key ID="STR_AGM_Attach_Detach">
<English>Detach item</English>
<German>Gegenstand entfernen</German>
<Spanish>Quitar objeto</Spanish>
<Polish>Odczep przedmiot</Polish>
<French>Détacher l'objet</French>
<Czech>Odepnout předmět</Czech>
<Portuguese>Separar item</Portuguese>
<Italian>Stacca l'oggetto</Italian>
<Hungarian>Tárgy lecsatolása</Hungarian>
<Russian>Отсоединить</Russian>
</Key>
<Key ID="STR_AGM_Attach_IrStrobe_Attached">
<English>IR Strobe Attached</English>
<German>IR-Stroboskop befestigt</German>
<Spanish>Marcador IR acoplado</Spanish>
<Polish>Przyczepiono stroboskop IR</Polish>
<French>Strobe IR attaché</French>
<Czech>IR Značkovač Připnutý</Czech>
<Portuguese>Marcador IV Acoplado</Portuguese>
<Italian>Strobo IR attaccata</Italian>
<Hungarian>Infravörös jeladó hozzácsatolva</Hungarian>
<Russian>ИК строб присоединён</Russian>
</Key>
<Key ID="STR_AGM_Attach_IrStrobe_Detached">
<English>IR Strobe Detached</English>
<German>IR-Stroboskop entfernt</German>
<Spanish>Marcador IR quitado</Spanish>
<Polish>Odczepiono stroboskop IR</Polish>
<French>Strobe IR détaché</French>
<Czech>IR Značkovač Odepnutý</Czech>
<Portuguese>Marcador IV Separado</Portuguese>
<Italian>Strobo IR staccata</Italian>
<Hungarian>Infravörös jeladó lecsatolva</Hungarian>
<Russian>ИК строб отсоединён</Russian>
</Key>
<Key ID="STR_AGM_Attach_IrGrenade_Attached">
<English>IR Grenade Attached</English>
<German>IR-Granate befestigt</German>
<Spanish>Granada IR acoplada</Spanish>
<Polish>Przyczepiono granat IR</Polish>
<French>Grenade IR attachée</French>
<Czech>IR Granát Připnutý</Czech>
<Portuguese>Granada IV Acoplada</Portuguese>
<Italian>Granata IR attaccata</Italian>
<Hungarian>Infravörös gránát hozzácsatolva</Hungarian>
<Russian>ИК граната присоединена</Russian>
</Key>
<Key ID="STR_AGM_Attach_IrGrenade_Detached">
<English>IR Grenade Detached</English>
<German>IR-Granate entfernt</German>
<Spanish>Granada IR quitada</Spanish>
<Polish>Odczepiono granat IR</Polish>
<French>Grenade IR détachée</French>
<Czech>IR Granát Odepnutý</Czech>
<Portuguese>Granada IV Separada</Portuguese>
<Italian>Granata IR staccata</Italian>
<Hungarian>Infravörös gránát lecsatolva</Hungarian>
<Russian>ИК граната отсоединена</Russian>
</Key>
<Key ID="STR_AGM_Attach_Chemlight_Attached">
<English>Chemlight Attached</English>
<German>Leuchtstab befestigt</German>
<Spanish>Barra de luz acoplada</Spanish>
<Polish>Przyczepiono światło chemiczne</Polish>
<French>Chemlight attaché</French>
<Czech>Chemické světlo Připnuto</Czech>
<Portuguese>Chemlight Acoplada</Portuguese>
<Italian>Chemlight attaccata</Italian>
<Hungarian>Chemlight hozzácsatolva</Hungarian>
<Russian>Химсвет присоединён</Russian>
</Key>
<Key ID="STR_AGM_Attach_Chemlight_Detached">
<English>Chemlight Detached</English>
<German>Leuchtstab entfernt</German>
<Spanish>Barra de luz quitada</Spanish>
<Polish>Odczepiono światło chemiczne</Polish>
<French>Chemlight détaché</French>
<Czech>Chemické světlo Odepnuto</Czech>
<Portuguese>Chemlight Separada</Portuguese>
<Italian>Chemlight staccata</Italian>
<Hungarian>Chemlight hozzácsatolva</Hungarian>
<Russian>Химсвет отсоединён</Russian>
</Key>
<Key ID="STR_AGM_Attach_Inventory_Full">
<English>No inventory space</English>
<German>Kein Platz im Inventar</German>
<Spanish>Sin espacio en inventario</Spanish>
<Polish>Brak miejsca w ekwipunku</Polish>
<French>Pas de place dans l'inventaire</French>
<Czech>Není místo v inventáři</Czech>
<Portuguese>Sem espaço no inventário</Portuguese>
<Italian>Non hai più spazio</Italian>
<Hungarian>Nincs több hely</Hungarian>
<Russian>В инвентаре нет места</Russian>
</Key>
<Key ID="STR_AGM_IrStrobe_Name">
<English>IR Strobe</English>
<German>IR-Stroboskop</German>
<Spanish>Marcador IR</Spanish>
<Polish>Stroboskop IR</Polish>
<French>Strobe IR</French>
<Czech>IR Značkovač</Czech>
<Portuguese>Marcador IV</Portuguese>
<Italian>Strobo IR</Italian>
<Hungarian>Infravörös jeladó</Hungarian>
<Russian>ИК строб</Russian>
</Key>
<Key ID="STR_AGM_IrStrobe_Description">
<English>IR Strobe allows you to signal your position through a pulsating beacon only visible with NVGs.</English>
<German>Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist.</German>
<Polish>Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne.</Polish>
<Spanish>El Marcador IR permite señalizar su posisición a través de una baliza visible solo a través de dispositivos de visión nocturna. </Spanish>
<French>Le Strobe IR permet de signaler votre position grace à un clignotement visible par des JVN.</French>
<Czech>IR Značkovač je Infračerveně zářící stroboskop umožňující signalizaci vaší pozice díky blikajícímu světlu, které je vidět pouze při užití noktovizoru.</Czech>
<Portuguese>O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna.</Portuguese>
<Italian>La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni.</Italian>
<Hungarian>Az infravörös jeladóval megjelölheted a helyzetedet úgy, hogy annak pulzáló fénye csak éjjellátó készülékkel látható.</Hungarian>
<Russian>ИК строб позволяет сигнализировать свое местоположение через пульсирующий маяк, видимый только через ПНВ.</Russian>
</Key>
</Package>
</Project>

View File

@ -1,632 +0,0 @@
#define HSPACE 0.5-2.0/16/2
#define VSPACE 0.5-0.3/9/2
class RscStructuredText;
class AGM_Interaction_Button_Base {
tooltip = "";
//action = "AGM_Interaction_isMousePressed = true;(findDisplay 1713999) closeDisplay 1;_action = AGM_Interaction_Buttons select AGM_Interaction_SelectedButton;AGM_Interaction_SelectedButton = -1; if (call (_action select 2)) then {call (_action select 1)};";
action = "";
idc = -1;
access = 0;
type = 1;
text = "";
font = "PuristaMedium";
sizeEx = "0.8 / 40 / (getResolution select 5)";
shadow = 2;
style = 2;
x = 0;
y = 0;
w = 2.0 / 16 * safezoneW;
h = 0.3 / 9 * safezoneH;
offsetX = 0.003;
offsetY = 0.003;
offsetPressedX = 0.002;
offsetPressedY = 0.002;
borderSize = 0;
colorText[] = {1,1,1,1};
colorDisabled[] = {0.5,0.5,0.5,1};
colorBackground[] = {0,0,0,0.8};
colorBackgroundDisabled[] = {0,0,0,0.8};
colorBackgroundActive[] = {1,1,1,0};
colorFocused[] = {1,1,1,1};
colorShadow[] = {0,0,0,0};
colorBorder[] = {1,1,1,0.8};
soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.09,1};
soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.09,1};
soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1};
soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1};
};
#define ICON_BORDER 0.05
// Old command rose
class AGM_Interaction_Dialog {
idd = 1713999;
enableSimulation = 1;
movingEnable = 0;
onLoad = "_dlgInteractionDialog = _this select 0; for '_a' from 10 to 19 do {(_dlgInteractionDialog displayCtrl _a) ctrlShow false}; uiNamespace setVariable ['AGM_Interaction_Dialog', _dlgInteractionDialog];";
objects[] = {};
class controls {
class Interaction_BackgroundMain: AGM_Interaction_Button_Base {
type = 0;
style = 2;
idc = 2;
colorBackground[] = {0,0,0,0.5};
colorBackgroundDisabled[] = {0,0,0,0.5};
x = "(0.5-1.8/16/2 + 0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.55/9/2 + 0 * 0.04) * safezoneH + safezoneY";
w = "1.8 / 16 * safezoneW";
h = "0.55 / 9 * safezoneH";
};
class Interaction_ButtonMain: AGM_Interaction_Button_Base {
action = "-1 call AGM_Interaction_fnc_onClick;";
style = 2;
tooltip = "";
text = "Interaction Menu";
idc = 3;
sizeEx = "0.6 / 40 / (getResolution select 5)";
colorBackground[] = {0,0,0,0};
colorBackgroundDisabled[] = {0,0,0,0};
colorBackgroundActive[] = {1,1,1,0.2};
colorFocused[] = {0,0,0,0};
x = "(0.5-1.8/16/2 + 0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.55/9/2 + 0 * 0.04) * safezoneH + safezoneY";
w = "1.8 / 16 * safezoneW";
h = "0.55 / 9 * safezoneH";
};
class Interaction_Background0: AGM_Interaction_Button_Base {
type = 0;
style = 2;
idc = 40;
colorBackground[] = {0,0,0,0.5};
colorBackgroundDisabled[] = {0,0,0,0.5};
x = "(0.5-2.0/16/2 + 0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 2.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background1: Interaction_Background0 {
idc = 41;
x = "(0.5-2.0/16/2 + 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 1.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background2: Interaction_Background0 {
idc = 42;
x = "(0.5-2.0/16/2 + 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 0.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background3: Interaction_Background0 {
idc = 43;
x = "(0.5-2.0/16/2 + 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 0.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background4: Interaction_Background0 {
idc = 44;
x = "(0.5-2.0/16/2 + 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 1.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background5: Interaction_Background0 {
idc = 45;
x = "(0.5-2.0/16/2 + 0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 2.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background6: Interaction_Background0 {
idc = 46;
x = "(0.5-2.0/16/2 - 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 1.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background7: Interaction_Background0 {
idc = 47;
x = "(0.5-2.0/16/2 - 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 0.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background8: Interaction_Background0 {
idc = 48;
x = "(0.5-2.0/16/2 - 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 0.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Background9: Interaction_Background0 {
idc = 49;
x = "(0.5-2.0/16/2 - 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 1.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Icon0: AGM_Interaction_Button_Base {
tooltip = "";
text = "";
idc = 20;
type = 0;
style = 48;
colorBackground[] = {0,0,0,0};
x = (0.5-(2.0-ICON_BORDER)/16/2 + 0 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 - 2.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon1: Interaction_Icon0 {
idc = 21;
x = (0.5-(2.0-ICON_BORDER)/16/2 + 1.0 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 - 1.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon2: Interaction_Icon0 {
idc = 22;
x = (0.5-(2.0-ICON_BORDER)/16/2 + 1.25 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 - 0.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon3: Interaction_Icon0 {
idc = 23;
x = (0.5-(2.0-ICON_BORDER)/16/2 + 1.25 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 + 0.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon4: Interaction_Icon0 {
idc = 24;
x = (0.5-(2.0-ICON_BORDER)/16/2 + 1.0 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 + 1.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon5 : Interaction_Icon0 {
idc = 25;
x = (0.5-(2.0-ICON_BORDER)/16/2 + 0 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 + 2.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon6: Interaction_Icon0 {
idc = 26;
x = (0.5-(2.0-ICON_BORDER)/16/2 - 1.0 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 + 1.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon7: Interaction_Icon0 {
idc = 27;
x = (0.5-(2.0-ICON_BORDER)/16/2 - 1.25 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 + 0.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon8: Interaction_Icon0 {
idc = 28;
x = (0.5-(2.0-ICON_BORDER)/16/2 - 1.25 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 - 0.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Icon9: Interaction_Icon0 {
idc = 29;
x = (0.5-(2.0-ICON_BORDER)/16/2 - 1.0 * 0.1) * safezoneW + safezoneX;
y = (0.5-(0.3-ICON_BORDER)/9/2 - 1.5 * 0.04) * safezoneH + safezoneY;
w = (0.3-ICON_BORDER) / 16 * safezoneW;
h = (0.3-ICON_BORDER) / 9 * safezoneH;
};
class Interaction_Shortcut0: AGM_Interaction_Button_Base {
tooltip = "";
text = "";
idc = 30;
style = 2;
colorBackground[] = {0,0,0,0};
x = "(0.5+2.0/16/2-0.3/16 + 0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 2.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut1: Interaction_Shortcut0 {
idc = 31;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 + 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 1.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut2: Interaction_Shortcut0 {
idc = 32;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 + 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 0.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut3: Interaction_Shortcut0 {
idc = 33;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 + 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 0.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut4: Interaction_Shortcut0 {
idc = 34;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 + 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 1.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut5 : Interaction_Shortcut0 {
idc = 35;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 + 0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 2.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut6: Interaction_Shortcut0 {
idc = 36;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 - 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 1.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut7: Interaction_Shortcut0 {
idc = 37;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 - 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 0.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut8: Interaction_Shortcut0 {
idc = 38;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 - 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 0.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Shortcut9: Interaction_Shortcut0 {
idc = 39;
type = 0;
x = "(0.5+2.0/16/2-0.3/16 - 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 1.5 * 0.04) * safezoneH + safezoneY";
w = "0.3 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button0: AGM_Interaction_Button_Base {
action = "0 call AGM_Interaction_fnc_onClick;";
style = 2;
tooltip = "";
text = "";
idc = 10;
colorBackground[] = {0,0,0,0};
colorBackgroundDisabled[] = {0,0,0,0};
colorBackgroundActive[] = {1,1,1,0.2};
colorFocused[] = {0,0,0,0};
x = "(0.5-2.0/16/2 + 0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 2.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button1: Interaction_Button0 {
action = "1 call AGM_Interaction_fnc_onClick;";
idc = 11;
x = "(0.5-2.0/16/2 + 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 1.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button2: Interaction_Button0 {
action = "2 call AGM_Interaction_fnc_onClick;";
idc = 12;
x = "(0.5-2.0/16/2 + 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 0.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button3: Interaction_Button0 {
action = "3 call AGM_Interaction_fnc_onClick;";
idc = 13;
x = "(0.5-2.0/16/2 + 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 0.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button4: Interaction_Button0 {
action = "4 call AGM_Interaction_fnc_onClick;";
idc = 14;
x = "(0.5-2.0/16/2 + 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 1.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button5: Interaction_Button0 {
action = "5 call AGM_Interaction_fnc_onClick;";
idc = 15;
x = "(0.5-2.0/16/2 + 0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 2.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button6: Interaction_Button0 {
action = "6 call AGM_Interaction_fnc_onClick;";
idc = 16;
x = "(0.5-2.0/16/2 - 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 1.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button7: Interaction_Button0 {
action = "7 call AGM_Interaction_fnc_onClick;";
idc = 17;
x = "(0.5-2.0/16/2 - 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 + 0.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button8: Interaction_Button0 {
action = "8 call AGM_Interaction_fnc_onClick;";
idc = 18;
x = "(0.5-2.0/16/2 - 1.25 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 0.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
class Interaction_Button9: Interaction_Button0 {
action = "9 call AGM_Interaction_fnc_onClick;";
idc = 19;
x = "(0.5-2.0/16/2 - 1.0 * 0.1) * safezoneW + safezoneX";
y = "(0.5-0.3/9/2 - 1.5 * 0.04) * safezoneH + safezoneY";
w = "2.0 / 16 * safezoneW";
h = "0.3 / 9 * safezoneH";
};
};
};
class RscListbox;
class IGUIBack;
class RscText;
#define X_OFFSET 0.2
class RscAGM_SelectAnItem {
idd = 8854;
movingEnable = 0;
class controls {
class back:IGUIBack {
x = X_OFFSET;
y = 0;
w = 0.6;
h = 0.71;
colorBackground[] = {0, 0, 0, 0.2};
};
class header: RscText{
idc = 8870;
x = X_OFFSET + 0.005;
y = 0.005;
w = 0.59;
h = 0.05;
style = 0x02;
text = "";
};
class itemList:RscListBox {
onMouseButtonDblClick = "_this call AGM_Interaction_fnc_onSelectMenuDblClick";
idc = 8866;
x = X_OFFSET + 0.005;
w = 0.59;
h = 0.54;
y = 0.06;
};
class cancelBtnBackground: AGM_Interaction_Button_Base {
type = 0;
style = 2;
idc = -1;
colorBackground[] = {0,0,0,0.5};
colorBackgroundDisabled[] = {0,0,0,0.5};
x = X_OFFSET + 0.005;
w = 0.15;
h = 0.1;
y = 0.605;
};
class approveBtnBackground: AGM_Interaction_Button_Base {
type = 0;
style = 2;
idc = -1;
colorBackground[] = {0,0,0,0.5};
colorBackgroundDisabled[] = {0,0,0,0.5};
x = X_OFFSET + 0.445;
y = 0.605;
h = 0.1;
w = 0.15;
};
class cancelBtn: AGM_Interaction_Button_Base {
idc = 8855;
x = X_OFFSET + 0.005;
w = 0.15;
h = 0.1;
y = 0.605;
style = 2;
text = $STR_AGM_Interaction_Back; //$STR_AGM_Interaction_CancelSelection;
action = "call AGM_Interaction_fnc_hideMenu;"; //'Default' call AGM_Interaction_fnc_openMenu; 'Default' call AGM_Interaction_fnc_openMenuSelf;
colorBackground[] = {0,0,0,0};
colorBackgroundDisabled[] = {0,0,0,0};
colorBackgroundActive[] = {1,1,1,0.2};
colorFocused[] = {0,0,0,0};
};
class approveBtn: AGM_Interaction_Button_Base {
idc = 8860;
x = X_OFFSET + 0.445;
y = 0.605;
h = 0.1;
w = 0.15;
style = 2;
text = $STR_AGM_Interaction_MakeSelection;
action = "call AGM_Interaction_fnc_hideMenu;";
colorBackground[] = {0,0,0,0};
colorBackgroundDisabled[] = {0,0,0,0};
colorBackgroundActive[] = {1,1,1,0.2};
colorFocused[] = {0,0,0,0};
};
};
};
#define GUI_GRID_W (0.025)
#define GUI_GRID_H (0.04)
class RscPicture;
class RscInteractionIcon: RscPicture {
x = 19.25 * GUI_GRID_W;
y = 15.75 * GUI_GRID_H;
w = 2*GUI_GRID_H;
h = 2*GUI_GRID_H;
};
class RscInteractionHelperIcon: RscInteractionIcon {
x = 20 * GUI_GRID_W;
y = 16 * GUI_GRID_H;
w = GUI_GRID_H;
h = GUI_GRID_H;
};
class RscInteractionText: RscText{
x = 21 * GUI_GRID_W;
y = 16 * GUI_GRID_H;
w = 8 * GUI_GRID_W;
h = 1.5 * GUI_GRID_H;
};
class RscTitles {
class AGM_FlowMenu {
idd = 9920;
enableSimulation = 1;
movingEnable = 0;
fadeIn=0.5;
fadeOut=0.5;
duration = 10e10;
onLoad = "uiNamespace setVariable ['AGM_Flow_Display', _this select 0];";
class controls {
class RearIcon: RscInteractionIcon{
idc = 999;
text = "AGM_interaction\UI\CenterIcon_ca.paa";
x = 17.9 * GUI_GRID_W;
y = 10 * GUI_GRID_H;
w = 3.7 * GUI_GRID_H;
h = 5.75 * GUI_GRID_H;
};
class TopIcon: RscInteractionIcon{
idc = 1200;
h = 1 * GUI_GRID_H;
y = 9 * GUI_GRID_H;
};
class FirstIcon: RscInteractionIcon{
idc = 1201;
y = 10.25 * GUI_GRID_H;
h = 1.5 * GUI_GRID_H;
};
class SelectedItemIcon: RscInteractionIcon{
idc = 1202;
y = 12 * GUI_GRID_H;
};
class ThirdIcon: RscInteractionIcon{
idc = 1203;
y = 14.25 * GUI_GRID_H;
h = 1.5 * GUI_GRID_H;
};
class BottomIcon: TopIcon{
idc = 1204;
y = 16 * GUI_GRID_H;
};
class ItemName: RscText{
idc = 1000;
style = 0x01;
x = 5.25 * GUI_GRID_W;
y = 12.15 * GUI_GRID_H;
w = 13 * GUI_GRID_W;
h = 1.5 * GUI_GRID_H;
colorBackground[] = {0.3, 0.3, 0.3, 0.8};
};
class BackIcon: RscInteractionIcon{
idc = 1210;
text = "AGM_interaction\UI\backArrow_ca.paa";
x = 18.25 * GUI_GRID_W;
y = 12.69 * GUI_GRID_H;
w = 0.5 * GUI_GRID_W;
h = 0.5 * GUI_GRID_H;
};
class ItemDetails: RscStructuredText{
idc = 1100;
style = 0x0c;
x = 23.5 * GUI_GRID_W;
y = 11 * GUI_GRID_H;
w = 13 * GUI_GRID_W;
h = 3.9 * GUI_GRID_H;
colorBackground[] = {0, 0, 0, 0.4};
};
};
};
class AGM_InteractionHelper {
idd = 9930;
enableSimulation = 1;
movingEnable = 0;
fadeIn=0.5;
fadeOut=0.5;
duration = 10e10;
onLoad = "uiNamespace setVariable ['AGM_Helper_Display', _this select 0];";
class controls {
class SelectIcon: RscInteractionHelperIcon{
idc = 1200;
text = "AGM_interaction\UI\mouse_left_ca.paa";
y = 17.5 * GUI_GRID_H;
};
class SelectText: RscInteractionText{
idc = 1000;
y = 17 * GUI_GRID_H;
text = $STR_AGM_Interaction_MakeSelection;
};
class GoBackIcon: RscInteractionHelperIcon{
idc = 1201;
text = "AGM_interaction\UI\mouse_right_ca.paa";
y = 19.5 * GUI_GRID_H;
};
class GoBackText: RscInteractionText{
idc = 1001;
y = 19 * GUI_GRID_H;
text = $STR_AGM_Interaction_Back;
};
class ScrollIcon: RscInteractionHelperIcon{
idc = 1202;
text = "AGM_interaction\UI\mouse_scroll_ca.paa";
y = 18.5 * GUI_GRID_H;
};
class ScrollText: RscInteractionText{
idc = 1002;
y = 18 * GUI_GRID_H;
text = $STR_AGM_Interaction_ScrollHint;
};
};
};
};

View File

@ -1,12 +0,0 @@
// by commy2 and CAA-Picard
if (!hasInterface) exitWith {};
AGM_Interaction_isOpeningDoor = false;
AGM_Dancing = false;
// restore global fire teams for JIP
{
_team = _x getVariable ["AGM_assignedFireTeam", ""];
if (_team != "") then {_x assignTeam _team};
} forEach allUnits;

View File

@ -1,664 +0,0 @@
class CfgPatches {
class AGM_Interaction {
units[] = {};
weapons[] = {};
requiredVersion = 0.60;
requiredAddons[] = {AGM_Core};
version = "0.95";
versionStr = "0.95";
versionAr[] = {0,95,0};
author[] = {"commy2", "KoffeinFlummi", "CAA-Picard", "bux578"};
authorUrl = "https://github.com/commy2/";
};
};
class CfgFunctions {
class AGM_Interaction {
class AGM_Interaction {
file = "\AGM_interaction\functions";
class addInteraction;
class addInteractionSelf;
class AddSelectableItem;
class addToTooltip;
class applyButtons;
class canInteractWith;
class canLockDoor;
class canTapShoulder;
class getActions2;
class GetActions;
class getDoor;
class getDoorAnimations;
class getDown;
class getSelectedButton;
class hideMenu;
class hideMouseHint;
class initialiseInteraction;
class isInRange;
class joinTeam;
class lockDoor;
class menuKeyInput;
class moduleInteraction;
class moveDown;
class onButtonDown;
class onButtonDownSelf;
class onButtonUp;
class onClick;
class onSelectMenuDblClick;
class openDoor;
class openMenu;
class openMenuSelectUI;
class openMenuSelf;
class openSelectMenu;
class openSubMenu;
class openSubMenuSelf;
class prepareSelectMenu;
class push;
class removeInteraction;
class removeInteractionSelf;
class removeTag;
class sendAway;
class showMenu;
class showMouseHint;
class sortOptionsByPriority;
class tapShoulder;
class updateTooltipPosition;
// backwards compatibility, remove in some patches
class getCaptivityStatus;
class setCaptivityStatus;
};
};
};
class Extended_PostInit_EventHandlers {
class AGM_Interaction {
clientInit = "call compile preprocessFileLineNumbers '\AGM_Interaction\clientInit.sqf'";
};
};
class Extended_GetIn_EventHandlers {
class All {
class AGM_AutoCloseMenu {
clientGetIn = "if (_this select 2 == AGM_player && {!isNull (findDisplay 1713999)}) then {(findDisplay 1713999) closeDisplay 1}";
};
};
};
class Extended_GetOut_EventHandlers {
class All {
class AGM_AutoCloseMenu {
clientGetOut = "if (_this select 2 == AGM_player && {!isNull (findDisplay 1713999)}) then {(findDisplay 1713999) closeDisplay 1}";
};
};
};
class AGM_Core_Default_Keys {
class openInteractionMenuNew {
displayName = "$STR_AGM_Interaction_InteractionMenu";
condition = "true";
statement = "call AGM_Interaction_fnc_onButtonDown";
conditionUp = "!isNull (findDisplay 1713999) && {profileNamespace getVariable ['AGM_Interaction_AutoCloseMenu', false]}";
statementUp = "if (AGM_Interaction_MenuType mod 2 == 0) then {call AGM_Interaction_fnc_onButtonUp};";
exceptions[] = {"AGM_Drag_isNotDragging", "AGM_Medical_canTreat", "AGM_Interaction_isNotEscorting", "AGM_Interaction_isNotSwimming"};
key = 219;
shift = 0;
control = 0;
alt = 0;
};
class openInteractionMenuSelfNew {
displayName = "$STR_AGM_Interaction_InteractionMenuSelf";
condition = "true";
statement = "call AGM_Interaction_fnc_onButtonDownSelf";
conditionUp = "!isNull (findDisplay 1713999) && {profileNamespace getVariable ['AGM_Interaction_AutoCloseMenu', false]}";
statementUp = "if (AGM_Interaction_MenuType mod 2 == 1) then {call AGM_Interaction_fnc_onButtonUp};";
exceptions[] = {"AGM_Drag_isNotDragging", "AGM_Medical_canTreat", "AGM_Interaction_isNotEscorting", "AGM_Interaction_isNotSwimming", "AGM_Core_notOnMap"};
key = 219;
shift = 0;
control = 1;
alt = 0;
};
class openDoor {
displayName = "$STR_AGM_Interaction_OpenDoor";
condition = "!AGM_Interaction_isOpeningDoor && {[2] call AGM_Interaction_fnc_getDoor select 1 != ''}";
statement = "call AGM_Interaction_fnc_openDoor";
conditionUp = "AGM_Interaction_isOpeningDoor";
statementUp = "AGM_Interaction_isOpeningDoor = false";
key = 57;
shift = 0;
control = 1;
alt = 0;
};
// disabled for now
/*class lockDoor {
displayName = "$STR_AGM_Interaction_LockDoor";
condition = "[true] call AGM_Interaction_fnc_canLockDoor && {!AGM_Interaction_isOpeningDoor}";
statement = "[true] call AGM_Interaction_fnc_lockDoor";
key = 57;
shift = 0;
control = 0;
alt = 1;
};
class unlockDoor {
displayName = "$STR_AGM_Interaction_UnlockDoor";
condition = "[false] call AGM_Interaction_fnc_canLockDoor";
statement = "[false] call AGM_Interaction_fnc_lockDoor";
key = 57;
shift = 0;
control = 1;
alt = 1;
};*/
class tapShoulder {
displayName = "$STR_AGM_Interaction_TapShoulder";
condition = "[_player, cursorTarget] call AGM_Interaction_fnc_canTapShoulder";
statement = "[_player, cursorTarget] call AGM_Interaction_fnc_tapShoulder";
key = 20;
shift = 1;
control = 0;
alt = 0;
};
class modifierKey {
displayName = "$STR_AGM_Interaction_ModifierKey";
condition = "";
statement = "AGM_Modifier = 1;";
conditionUp = "";
statementUp = "AGM_Modifier = 0;";
exceptions[] = {"AGM_Drag_isNotDragging"};
key = 29;
shift = 0;
control = 0;
alt = 0;
};
};
class AGM_Core_Options {
class Interaction_FlowMenu {
displayName = "$STR_AGM_Interaction_FlowMenu";
default = 0;
};
class Interaction_AutoCloseMenu {
displayName = "$STR_AGM_Interaction_AutoCloseMenu";
default = 0;
};
class Interaction_AutoCenterCursor {
displayName = "$STR_AGM_Interaction_AutoCenterCursor";
default = 1;
};
};
class AGM_Parameters {
AGM_Modifier = 0;
};
class AGM_Parameters_Boolean {
AGM_Interaction_EnableTeamManagement = 1;
};
class AGM_Core_canInteractConditions {
class AGM_Interaction_isNotEscorting {
condition = "!(_player getVariable ['AGM_isEscorting', false])";
};
class AGM_Interaction_isNotCaptive {
condition = "!(_player getVariable ['AGM_isCaptive', false])";
};
class AGM_Interaction_isNotSurrendering {
condition = "!(_player getVariable ['AGM_isSurrender', false])";
};
class AGM_Interaction_isNotSwimming {
condition = "!underwater _player";
};
};
#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \
name = #ITEM; \
count = COUNT; \
};
class CfgVehicles {
class Module_F;
class AGM_ModuleInteraction: Module_F {
author = "$STR_AGM_Core_AGMTeam";
category = "AGM";
displayName = "Interaction System";
function = "AGM_Interaction_fnc_moduleInteraction";
scope = 2;
isGlobal = 1;
icon = "\AGM_Interaction\UI\IconInteraction_ca.paa";
class Arguments {
class EnableTeamManagement {
displayName = "Enable Team Management";
description = "Should players be allowed to use the Team Management Menu? Default: Yes";
typeName = "BOOL";
class values {
class Yes { default = 1; name = "Yes"; value = 1;};
class No { name = "No"; value = 0; };
};
};
};
};
class Man;
class CAManBase: Man {
class AGM_Actions {
class AGM_TeamManagement {
displayName = "$STR_AGM_Interaction_TeamManagement";
distance = 4;
condition = "alive _target && {!isPlayer _target} && {_target in units group _player} && {AGM_Interaction_EnableTeamManagement}";
statement = "";
showDisabled = 0;
priority = 3.2;
icon = "\AGM_Interaction\UI\team\team_management_ca.paa";
subMenu[] = {"AGM_TeamManagement", 0};
hotkey = "M";
enableInside = 1;
class AGM_JoinTeamRed {
displayName = "$STR_AGM_Interaction_JoinTeamRed";
distance = 4;
condition = "alive _target && {!isPlayer _target} && {_target in units group _player}";
statement = "[_target, 'RED'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
icon = "\AGM_Interaction\UI\team\team_red_ca.paa";
priority = 2.4;
hotkey = "R";
enableInside = 1;
};
class AGM_JoinTeamGreen {
displayName = "$STR_AGM_Interaction_JoinTeamGreen";
distance = 4;
condition = "alive _target && {!isPlayer _target} && {_target in units group _player}";
statement = "[_target, 'GREEN'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
icon = "\AGM_Interaction\UI\team\team_green_ca.paa";
priority = 2.3;
hotkey = "G";
enableInside = 1;
};
class AGM_JoinTeamBlue {
displayName = "$STR_AGM_Interaction_JoinTeamBlue";
distance = 4;
condition = "alive _target && {!isPlayer _target} && {_target in units group _player}";
statement = "[_target, 'BLUE'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
icon = "\AGM_Interaction\UI\team\team_blue_ca.paa";
priority = 2.2;
hotkey = "B";
enableInside = 1;
};
class AGM_JoinTeamYellow {
displayName = "$STR_AGM_Interaction_JoinTeamYellow";
distance = 4;
condition = "alive _target && {!isPlayer _target} && {_target in units group _player}";
statement = "[_target, 'YELLOW'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
icon = "\AGM_Interaction\UI\team\team_yellow_ca.paa";
priority = 2.1;
hotkey = "Y";
enableInside = 1;
};
class AGM_LeaveTeam {
displayName = "$STR_AGM_Interaction_LeaveTeam";
distance = 4;
condition = "alive _target && {!isPlayer _target} && {_target in units group _player} && {assignedTeam _player != 'MAIN'}";
statement = "[_target, 'MAIN'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
icon = "\AGM_Interaction\UI\team\team_white_ca.paa";
priority = 2.5;
hotkey = "N";
enableInside = 1;
};
};
class AGM_TapShoulder {
displayName = "$STR_AGM_Interaction_TapShoulder";
distance = 4;
condition = "[_player, _target] call AGM_Interaction_fnc_canTapShoulder";
statement = "[_player, _target] call AGM_Interaction_fnc_tapShoulder";
showDisabled = 1;
priority = 2.8;
hotkey = "Q";
enableInside = 1;
};
class AGM_JoinGroup {
displayName = "$STR_AGM_Interaction_JoinGroup";
distance = 4;
condition = "side group _player == side group _target && {group _player != group _target}";
statement = "[_player] joinSilent group _target;";
showDisabled = 0;
priority = 2.6;
icon = "\AGM_Interaction\UI\team\team_management_ca.paa";
hotkey = "J";
enableInside = 1;
};
class AGM_GetDown {
displayName = "$STR_AGM_Interaction_GetDown";
distance = 4;
condition = "[_target] call AGM_Interaction_fnc_canInteractWith";
statement = "[_target] call AGM_Interaction_fnc_getDown";
showDisabled = 0;
priority = 2.2;
};
class AGM_SendAway {
displayName = "$STR_AGM_Interaction_SendAway";
distance = 4;
condition = "[_target] call AGM_Interaction_fnc_canInteractWith";
statement = "[_target] call AGM_Interaction_fnc_sendAway";
showDisabled = 0;
priority = 2.0;
};
class AGM_Pardon {
displayName = "$STR_AGM_Interaction_Pardon";
distance = 4;
condition = "rating _target < -2000 && {alive _target} && {side group _player == side group _target}";
statement = "[_target, '{_this addRating -rating _this}', _target] call AGM_Core_fnc_execRemoteFnc";
showDisabled = 0;
priority = 2.5;
enableInside = 1;
};
};
class AGM_SelfActions {
class AGM_TeamManagement {
displayName = "$STR_AGM_Interaction_TeamManagement";
condition = "AGM_Interaction_EnableTeamManagement";
statement = "";
showDisabled = 1;
priority = 3.2;
icon = "\AGM_Interaction\UI\team\team_management_ca.paa";
subMenu[] = {"AGM_TeamManagement", 1};
enableInside = 1;
hotkey = "M";
class AGM_JoinTeamRed {
displayName = "$STR_AGM_Interaction_JoinTeamRed";
condition = "true";
statement = "[_player, 'RED'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
priority = 2.4;
icon = "\AGM_Interaction\UI\team\team_red_ca.paa";
enableInside = 1;
hotkey = "R";
};
class AGM_JoinTeamGreen {
displayName = "$STR_AGM_Interaction_JoinTeamGreen";
condition = "true";
statement = "[_player, 'GREEN'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
priority = 2.3;
icon = "\AGM_Interaction\UI\team\team_green_ca.paa";
enableInside = 1;
hotkey = "G";
};
class AGM_JoinTeamBlue {
displayName = "$STR_AGM_Interaction_JoinTeamBlue";
condition = "true";
statement = "[_player, 'BLUE'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
priority = 2.2;
icon = "\AGM_Interaction\UI\team\team_blue_ca.paa";
enableInside = 1;
hotkey = "B";
};
class AGM_JoinTeamYellow {
displayName = "$STR_AGM_Interaction_JoinTeamYellow";
condition = "true";
statement = "[_player, 'YELLOW'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
priority = 2.1;
icon = "\AGM_Interaction\UI\team\team_yellow_ca.paa";
enableInside = 1;
hotkey = "Y";
};
class AGM_LeaveTeam {
displayName = "$STR_AGM_Interaction_LeaveTeam";
condition = "assignedTeam _player != 'MAIN'";
statement = "[_player, 'MAIN'] call AGM_Interaction_fnc_joinTeam";
showDisabled = 1;
priority = 2.5;
icon = "\AGM_Interaction\UI\team\team_white_ca.paa";
enableInside = 1;
hotkey = "N";
};
class AGM_BecomeLeader {
displayName = "$STR_AGM_Interaction_BecomeLeader";
condition = "count (units group _player) > 1 && {leader group _player != _player}";
statement = "_newGroup = createGroup side group _player; (units group _player) joinSilent _newGroup; _newGroup selectLeader _player;";
showDisabled = 1;
priority = 1.0;
icon = "\AGM_Interaction\UI\team\team_white_ca.paa";
enableInside = 1;
hotkey = "L";
};
class AGM_LeaveGroup {
displayName = "$STR_AGM_Interaction_LeaveGroup";
condition = "count (units group _player) > 1";
statement = "_oldGroup = units group _player; _newGroup = createGroup side _player; [_player] joinSilent _newGroup; {_player reveal _x} forEach _oldGroup;";
showDisabled = 1;
priority = 1.2;
icon = "\AGM_Interaction\UI\team\team_management_ca.paa";
enableInside = 1;
hotkey = "M";
};
};
/* DANCE ANIMATION DOESN'T WORK :(
class AGM_Dance {
displayName = "$STR_AGM_Interaction_Dance";
condition = "isClass (configFile >> 'CfgPatches' >> 'AGM_Movement') and !AGM_Dancing";
statement = "AGM_Dancing = true; [-2, {_this switchMove 'TestDance';}, player] call CBA_fnc_globalExecute;";
showDisabled = 0;
priority = -1.2;
};
class AGM_StopDancing {
displayName = "$STR_AGM_Interaction_StopDancing";
condition = "AGM_Dancing";
statement = "AGM_Dancing = false; [-2, {_this switchMove '';}, player] call CBA_fnc_globalExecute;";
showDisabled = 0;
priority = -1.2;
};
*/
class AGM_Gestures {
displayName = "$STR_AGM_Interaction_Gestures";
condition = "canStand _target";
statement = "";
showDisabled = 1;
priority = 3.5;
subMenu[] = {"AGM_Gestures", 1};
icon = "AGM_Interaction\UI\gestures_ca.paa";
hotkey = "G";
/*class AGM_Gesture_Advance {
displayName = "$STR_AGM_Interaction_Gestures_Attack";
condition = "canStand _target";
statement = "_target playActionNow 'gestureAttack';";
showDisabled = 1;
priority = 2.0;
};*/
class AGM_Gesture_Advance {
displayName = "$STR_AGM_Interaction_Gestures_Advance";
condition = "canStand _target";
statement = "_target playActionNow 'gestureAdvance';";
showDisabled = 1;
priority = 1.9;
hotkey = "1";
};
class AGM_Gesture_Go {
displayName = "$STR_AGM_Interaction_Gestures_Go";
condition = "canStand _target";
statement = "_target playActionNow (['gestureGo', 'gestureGoB'] select (floor random 2));";
showDisabled = 1;
priority = 1.8;
hotkey = "2";
};
class AGM_Gesture_Follow {
displayName = "$STR_AGM_Interaction_Gestures_Follow";
condition = "canStand _target";
statement = "_target playActionNow 'gestureFollow';";
showDisabled = 1;
priority = 1.7;
hotkey = "3";
};
/*class AGM_Gesture_Point {
displayName = "$STR_AGM_Interaction_Gestures_Point";
condition = "canStand _target";
statement = "_target playActionNow 'gesturePoint';";
showDisabled = 1;
priority = 1.6;
};*/
class AGM_Gesture_Up {
displayName = "$STR_AGM_Interaction_Gestures_Up";
condition = "canStand _target";
statement = "_target playActionNow 'gestureUp';";
showDisabled = 1;
priority = 1.5;
hotkey = "4";
};
class AGM_Gesture_Cover {
displayName = "$STR_AGM_Interaction_Gestures_Cover";
condition = "canStand _target";
statement = "_target playActionNow 'gestureCover';";
showDisabled = 1;
priority = 1.4;
hotkey = "5";
};
class AGM_Gesture_CeaseFire {
displayName = "$STR_AGM_Interaction_Gestures_Cease_Fire";
condition = "canStand _target";
statement = "_target playActionNow 'gestureCeaseFire';";
showDisabled = 1;
priority = 1.3;
hotkey = "6";
};
class AGM_Gesture_Freeze {
displayName = "$STR_AGM_Interaction_Gestures_Freeze";
condition = "canStand _target";
statement = "_target playActionNow 'gestureFreeze';";
showDisabled = 1;
priority = 1.2;
hotkey = "7";
};
class AGM_Gesture_Yes {
displayName = "$STR_AGM_Interaction_Gestures_Yes";
condition = "canStand _target";
statement = "_target playActionNow (['gestureYes', 'gestureNod'] select (floor random 2));";
showDisabled = 1;
priority = 1.1;
hotkey = "8";
};
class AGM_Gesture_No {
displayName = "$STR_AGM_Interaction_Gestures_No";
condition = "canStand _target";
statement = "_target playActionNow 'gestureNo';";
showDisabled = 1;
priority = 1.0;
hotkey = "9";
};
class AGM_Gesture_Hi {
displayName = "$STR_AGM_Interaction_Gestures_Hi";
condition = "canStand _target";
statement = "_target playActionNow (['gestureHi', 'gestureHiB', 'gestureHiC'] select (floor random 3));";
showDisabled = 1;
priority = 0.9;
hotkey = "0";
};
};
class AGM_Equipment {
displayName = "$STR_AGM_Interaction_Equipment";
condition = "true";
statement = "";
showDisabled = 1;
priority = 4.5;
icon = ""; // @todo
subMenu[] = {"AGM_Equipment", 1};
enableInside = 1;
hotkey = "E";
class AGM_Dummy {
displayName = "";
condition = "false";
statement = "";
showDisabled = 1;
priority = -99;
icon = "AGM_Core\UI\blank_CO.paa";
enableInside = 1;
};
};
};
};
class LandVehicle;
class Car: LandVehicle {
class AGM_Actions {};
class AGM_SelfActions {};
};
class Tank: LandVehicle {
class AGM_Actions {};
class AGM_SelfActions {};
};
class Air;
class Helicopter: Air {
class AGM_Actions {};
class AGM_SelfActions {};
};
class Plane: Air {
class AGM_Actions {};
class AGM_SelfActions {};
};
class Ship;
class Ship_F: Ship {
class AGM_Actions {
class AGM_Push {
displayName = "$STR_AGM_Interaction_Push";
distance = 4;
condition = "getMass _target < 1000 and alive _target";
statement = "[_target, [2 * (vectorDir _player select 0), 2 * (vectorDir _player select 1), 0.5]] call AGM_Interaction_fnc_push;";
showDisabled = 0;
priority = -1;
};
};
class AGM_SelfActions {};
};
class StaticWeapon: LandVehicle {
class AGM_Actions {};
class AGM_SelfActions {};
};
class StaticMortar;
class Mortar_01_base_F: StaticMortar {
class AGM_Actions {};
class AGM_SelfActions {};
};
class Box_NATO_Support_F;
class AGM_Box_Misc: Box_NATO_Support_F {
class TransportItems {
MACRO_ADDITEM(AGM_CableTie,24)
};
};
};
class CfgWeapons {
class AGM_ItemCore;
class InventoryItem_Base_F;
class AGM_CableTie: AGM_ItemCore {
displayName = "$STR_AGM_Interaction_CableTie_Name";
descriptionShort = "$STR_AGM_Interaction_CableTie_Description";
model = "\AGM_Interaction\agm_cabletie.p3d";
picture = "\AGM_Interaction\UI\agm_cabletie_x_ca.paa";
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
};
};
};
#include <Menu_Config.hpp>

View File

@ -1,40 +0,0 @@
/*
Name: AGM_Interaction_fnc_AddSelectableItem
Author: Garth de Wet (LH)
Description:
Adds an item to the select menu
Parameters:
0: ARRAY/NUMBER - List container
1: String - Display Name
2: String - Picture
3: String/code - data
Returns:
ARRAY/Number
Example:
*/
private ["_container", "_displayName", "_picture", "_data", "_index"];
_container = _this select 0;
_displayName = _this select 1;
_picture = _this select 2;
_data = _this select 3;
if (_picture == "" || _picture == "PictureThing") then {
_picture = "AGM_Interaction\UI\dot_ca.paa";
};
if ((profileNamespace getVariable ["AGM_Interaction_FlowMenu", false])) then {
//[_displayName, _statement, _condition, _priority, _subMenu, _icon, _tooltip, _conditionShow, _exceptions, _distance, _hotkey]
_container pushBack [_displayName, nil, {true},0,[], _picture, "", {true}, [], 4, "", _data];
}else{
_index = lbAdd [_container, _displayName];
lbSetData [_container, _index, str _data];
lbSetPicture [_container, _index, _picture];
};
_container

View File

@ -1,154 +0,0 @@
/*
Name: AGM_Interaction_fnc_GetActions
Author:
commy2
Garth de Wet (LH)
Description:
Parameters:
0: OBJECT - target
1: ARRAY - Parents of the target object
2: ARRAY - Actions
3: ARRAY - Patches
4: CONFIG - Parent config (ConfigFile >> "CfgVehicles"/MissionConfigFile >> "CfgVehicles")
5: BOOL - Is mission config file?
6: STRING - Classname ("AGM_Actions"/"AGM_SelfActions")
7: STRING - Sub-class
Returns:
Nothing
Example:
[player, [configfile >> "CfgVehicles" >> typeOf player, true] call BIS_fnc_returnParents, [], [],configfile >> "CfgVehicles", false, "AGM_Actions"] call AGM_Interaction_fnc_GetActions;
[player, [configfile >> "CfgVehicles" >> typeOf player, true] call BIS_fnc_returnParents, [], [],configfile >> "CfgVehicles", false, "AGM_SelfActions"] call AGM_Interaction_fnc_GetActions;
*/
#define DEFAULT_ICON "\AGM_Interaction\UI\dot_ca.paa"
private ["_target", "_parents", "_actions", "_patches", "_baseConfig", "_actionType", "_i","_index", "_missionConfig", "_stdConfig"];
_target = _this select 0;
_parents = _this select 1;
_actions = _this select 2;
_patches = _this select 3;
_baseConfig = _this select 4;
_missionConfig = _this select 5;
_actionType = _this select 6;
_subClass = _this select 7;
_stdConfig = (configFile >> "CfgVehicles" >> typeOf _target >> _actionType);
if (_subClass != "") then {
_stdConfig = _stdConfig >> _subClass;
};
_count = count _parents;
for "_i" from 0 to (_count - 1) do {
_config = _baseConfig >> _parents select _i >> _actionType;
if (_subClass != "") then {
_config = _config >> _subClass;
};
_count = count _config;
if (_count > 0) then {
for "_index" from 0 to (_count - 1) do {
private ["_action", "_displayName", "_distance","_condition","_statement","_showDisabled", "_priority", "_tooltip", "_hotkey",
"_subMenu", "_conditionShow", "_exceptions", "_icon", "_actionToCache", "_cacheActions", "_cache", "_indexCache", "_configName"];
_action = if (_missionConfig) then {_config select _index} else {_stdConfig >> configName (_config select _index)};
_cache = missionNamespace getVariable ["AGM_Interaction_MenuCache", [[], [], []]];
if (count _action > 0) then {
_configName = configName _action;
_cacheConfigs = _cache select 0;
_cacheActions = _cache select 1;
_cacheIndices = _cache select 2;
_indexCache = _cacheConfigs find _action;
if (_indexCache == -1) then {
_displayName = getText (_action >> "displayName");
_distance = getNumber (_action >> "distance");
_priority = getNumber (_action >> "priority");
_subMenu = getArray (_action >> "subMenu");
_tooltip = getText (_action >> "tooltip");
_hotkey = getText (_action >> "hotkey");
_enableInside = getNumber (_action >> "enableInside");
// Condition
_condition = getText (_action >> "condition");
if (_condition == "") then {_condition = "true"};
_condition = _condition + format [" && {%1 call AGM_Core_canInteract} && {[AGM_player, AGM_Interaction_Target] call AGM_Core_fnc_canInteractWith}", getArray (_action >> "exceptions")];
if (_enableInside != 1) then {_condition = _condition + " && {_player == _vehicle}"};
_condition = compile _condition;
// Condition to show the action
_conditionShow = getText (_action >> "conditionShow");
_conditionShow = if (_conditionShow == "") then {{true}} else {compile _conditionShow};
_showDisabled = getNumber (_action >> "showDisabled") == 1;
if (isText (_action >> "conditionShow")) then {
_showDisabled = [_object, _player] call _conditionShow;
};
// Exceptions to the general conditions that have to be true
_exceptions = getArray (_action >> "exceptions");
// statement
_statement = getText (_action >> "statement");
_statement = compile _statement;
if (profileNamespace getVariable ["AGM_Interaction_FlowMenu", false]) then {
_statement = if (getText (_action >> "statement") == "" && {count _subMenu > 1}) then {
compile format ["call AGM_Interaction_fnc_hideMenu;if(%2 == 1)then{['%1'] call AGM_Interaction_fnc_openSubMenuSelf;}else{['%1'] call AGM_Interaction_fnc_openSubMenu;};", _subMenu select 0, _subMenu select 1];
} else {
compile ("call AGM_Interaction_fnc_hideMenu;" + getText (_action >> "statement"));
};
};
// icon
_icon = getText (_action >> "Icon");
if (_icon == "") then {
_icon = DEFAULT_ICON;
};
_actionToCache = [_displayName, _statement, _condition, _priority, _subMenu, _icon, _tooltip, _conditionShow, _exceptions, _distance, _hotkey];
if (!(_configName in _patches) && {_showDisabled || {[_object, _player] call _condition}} && {_distance == 0 || {[_object, _distance] call AGM_Interaction_fnc_isInRange}}) then {
_actions pushBack _actionToCache;
_patches pushBack _configName;
};
_indexCache = _cacheActions find _actionToCache;
if (_indexCache == -1) then {
_indexCache = count _cacheActions;
_cacheActions pushBack _actionToCache;
};
_cacheConfigs pushBack _action;
_cacheIndices pushBack _indexCache;
_cache = [_cacheConfigs, _cacheActions, _cacheIndices];
["InteractionMenu", _action, {format ["%1 loaded into cache", _this]}] call AGM_Debug_fnc_log;
} else {
["InteractionMenu", _action, {format ["%1 loaded from cache", _this]}] call AGM_Debug_fnc_log;
_cachedAction = _cacheActions select (_cacheIndices select _indexCache);
_showDisabled = getNumber (_action >> "showDisabled") == 1;
if (isText (_action >> "conditionShow")) then {
_showDisabled = [_object, _player] call (_cachedAction select 7);
};
if (!(_configName in _patches) && {_showDisabled || {[_object, _player] call (_cachedAction select 2)}} && {[_object, (_cachedAction select 9)] call AGM_Interaction_fnc_isInRange || {(_cachedAction select 9) == 0}}) then {
_actions pushBack _cachedAction;
_patches pushBack _configName;
};
};
};
AGM_Interaction_MenuCache = _cache;
};
};
};
[_actions, _patches]

View File

@ -1,66 +0,0 @@
/*
Name: AGM_Interaction_fnc_MoveDown
Author: Garth de Wet (LH)
Description:
Depending on the passed value, either scrolls down through the list or up.
Parameters:
NUMBER - Amount to increase current interaction target
Returns:
Nothing
Example:
1 call AGM_Interaction_fnc_MoveDown;
-1 call AGM_Interaction_fnc_MoveDown;
*/
#define CLAMP(x,low,high) (if(x > high)then{high}else{if(x < low)then{low}else{x}})
if (isNil "AGM_Interaction_MainButton") exitWith{};
if (isNil "AGM_Interaction_Buttons") exitWith{};
_count = (count AGM_Interaction_Buttons)- 1;
AGM_Interaction_SelectedButton = CLAMP(AGM_Interaction_SelectedButton + _this, 0, _count);
_target = AGM_Interaction_Target;
_player = AGM_player;
_vehicle = vehicle _player;
disableSerialization;
_dlgInteractionDialog = uiNamespace getVariable "AGM_Flow_Display";
_top = AGM_Interaction_SelectedButton - 2;
_i = 0;
while {_i <= 4} do {
_index =_i + _top;
_ctrl = _dlgInteractionDialog displayCtrl (1200 + _i);
if (_index >= 0 && {_index <= _count}) then {
_action = AGM_Interaction_Buttons select _index;
_ctrl ctrlShow true;
_ctrl ctrlSetText (_action select 5);
_color = [1,1,1,1];
if !([_target, _player] call (_action select 2)) then {
_color = [0.3,0.3,0.3,0.8];
};
if (_i == 0 || _i == 4) then {
_color set [3, 0.5];
};
if (_i == 1 || _i == 3) then {
_color set [3, 0.75];
};
_ctrl ctrlSetTextColor _color;
}else{
_ctrl ctrlShow false;
};
_i = _i + 1;
};
_ctrl = _dlgInteractionDialog displayCtrl 1000;
_ctrl ctrlSetText ((AGM_Interaction_Buttons select AGM_Interaction_SelectedButton) select 0);
_ctrl = _dlgInteractionDialog displayCtrl 1100;
_current = (AGM_Interaction_Buttons select AGM_Interaction_SelectedButton);
_infoText = "";
if !([_target, _player] call (_current select 2)) then {
_infoText = "Unavailable";
};
_ctrl ctrlSetText _infoText;
_ctrl ctrlShow (_infoText != "");

View File

@ -1,55 +0,0 @@
/*
* Author: commy2
*
* Add an AGM action to an object. Note: This function is global.
*
* Argument:
* 0: Object the action should be assigned to (Object)
* 1: Name of the action shown in the menu (String)
* 2: Distance the player can be away from the object (Number)
* 3: Condition (Code or String)
* 4: Statement (Code or String)
* 5: Show the action even if the conditon is not met (Bool or Number)
* 6: Priority (Number, optional default: 0)
*
* Return value:
* ID of the action (used to remove it later).
*/
private ["_object", "_displayName", "_distance", "_condition", "_statement", "_showDisabled", "_priority", "_actionsVar", "_id", "_actionIDs", "_actions"];
_object = _this select 0;
_displayName = _this select 1;
_distance = _this select 2;
_condition = _this select 3;
_statement = _this select 4;
_showDisabled = _this select 5;
_priority = _this select 6;
if (typeName _condition == "STRING") then {
_condition = compile _condition;
};
if (typeName _statement == "STRING") then {
_statement = compile _statement;
};
if (typeName _showDisabled == "SCALAR") then {
_showDisabled = _showDisabled > 0;
};
if (isNil "_priority") then {
_priority = 0;
};
_actionsVar = _object getVariable ["AGM_Interactions", [-1, [], []]];
_id = (_actionsVar select 0) + 1;
_actionIDs = _actionsVar select 1;
_actions = _actionsVar select 2;
_actionIDs pushBack _id;
_actions pushBack [_displayName, _distance, _condition, _statement, _showDisabled, _priority];
_object setVariable ["AGM_Interactions", [_id, _actionIDs, _actions], true];
_id

View File

@ -1,55 +0,0 @@
/*
* Author: commy2
*
* Add an AGM self action to the player. Execute this on the local machine of the player.
*
* Argument:
* 0: Name of the action shown in the menu (String)
* 1: Condition (Code or String)
* 2: Statement (Code or String)
* 3: Show the action even if the conditon is not met (Bool or Number)
* 4: Priority (Number, optional default: 0)
*
* Return value:
* ID of the action (used to remove it later).
*/
private ["_displayName", "_condition", "_statement", "_showDisabled", "_priority", "_actionsVar", "_id", "_actionIDs", "_actions"];
_displayName = _this select 0;
_condition = _this select 1;
_statement = _this select 2;
_showDisabled = _this select 3;
_priority = _this select 4;
if (typeName _condition == "STRING") then {
_condition = compile _condition;
};
if (typeName _statement == "STRING") then {
_statement = compile _statement;
};
if (typeName _showDisabled == "SCALAR") then {
_showDisabled = _showDisabled > 0;
};
if (isNil "_priority") then {
_priority = 0;
};
_actionsVar = AGM_player getVariable ["AGM_InteractionsSelf", [-1, [], []]];
_id = (_actionsVar select 0) + 1;
_actionIDs = _actionsVar select 1;
_actions = _actionsVar select 2;
_actionIDs pushBack _id;
_actions pushBack [_displayName, _condition, _statement, _showDisabled, _priority];
AGM_player setVariable ["AGM_InteractionsSelf", [_id, _actionIDs, _actions], false];
_id

View File

@ -1,3 +0,0 @@
// by commy2
AGM_Interaction_CurrentTooltip pushBack (_this select 0);

View File

@ -1,51 +0,0 @@
// by commy2
private ["_object", "_actions", "_dlgInteractionDialog", "_ctrlInteractionDialog", "_index", "_ctrlInteractionDialogIcon"];
_object = AGM_Interaction_Target;
_actions = AGM_Interaction_Buttons;
disableSerialization;
_dlgInteractionDialog = uiNamespace getVariable "AGM_Interaction_Dialog";
/*
for "_a" from 0 to (_count - 1) do {
_action = AGM_Interaction_Buttons select _a;
_ctrlInteractionDialog = _dlgInteractionDialog displayCtrl (10 + _a);
_ctrlInteractionDialog ctrlShow true;
_ctrlInteractionDialog ctrlSetText (_action select 0);
_ctrlInteractionDialog ctrlEnable (call (_action select 2));
};
*/
_ctrlInteractionDialog = _dlgInteractionDialog displayCtrl 3;
AGM_Interaction_MainButton = "(findDisplay 1713999) closeDisplay 1;";
if (_object isKindOf "Man") then {
_ctrlInteractionDialog ctrlSetText (if (alive _object) then {name _object} else {_object getVariable ["AGM_Name", "Unknown"]});
} else {
_ctrlInteractionDialog ctrlSetText (getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName"));
};
for "_index" from 0 to 9 do {
_ctrlInteractionDialog = _dlgInteractionDialog displayCtrl (10 + _index);
_ctrlInteractionDialog ctrlShow true;
_ctrlInteractionDialogIcon = _dlgInteractionDialog displayCtrl (20 + _index);
if (_index < _count) then {
_action = AGM_Interaction_Buttons select _index;
_ctrlInteractionDialog ctrlSetText (_action select 0);
_ctrlInteractionDialog ctrlEnable (call (_action select 2));
_ctrlInteractionDialogIcon ctrlSetText (_action select 5);
} else {
_ctrlInteractionDialog ctrlSetText "";
_ctrlInteractionDialog ctrlEnable false;
_ctrlInteractionDialogIcon ctrlSetText "";
};
};

View File

@ -1,12 +0,0 @@
// by commy2
private ["_unit", "_isCivilian"];
_unit = _this select 0;
_isCivilian = _this select 1;
if (isNil "_isCivilian") then {_isCivilian = true};
alive _unit
&& [side _unit != side AGM_player, side group _unit == civilian] select _isCivilian
//&& {count (weapons _unit) == 0}

View File

@ -1,16 +0,0 @@
// by commy2
private ["_mode", "_info", "_house", "_door", "_id"];
_mode = _this select 0; //lock: true, unlock: false
_info = [2] call AGM_Interaction_fnc_getDoor;
_house = _info select 0;
_door = _info select 1;
_id = _info select 2;
!isNull _house
&& {_door == "door"}
&& {!_mode || {_house animationPhase format ["door_%1_rot", _id] <= 0}}
&& {(_house getVariable [format ["BIS_Disabled_Door_%1", _id], 0] != 1) isEqualTo _mode}

View File

@ -1,11 +0,0 @@
// by commy2
private ["_unit", "_target"];
_unit = _this select 0;
_target = _this select 1;
_target isKindOf "CAManBase" &&
{alive _target} &&
{_unit distance _target < 4} &&
{!(_target getVariable ["AGM_isUnconscious", false])}

View File

@ -1,120 +0,0 @@
// commy2
private ["_object", "_config", "_type", "_actions", "_configs"];
_object = _this select 0;
_config = _this select 1; // configFile, missionConfigFile
_type = _this select 2; // "AGM_CfgInteractions", "AGM_CfgInteractionsSelf"
_actions = _this select 3; // [];
_configs = "_object isKindOf configName _x" configClasses (_config >> _type);
// cache
private ["_cache", "_cacheConfigs", "_cacheActions", "_cacheIndices"];
_cache = uiNamespace getVariable ["AGM_Interaction_MenuCache", [[], [], []]];
_cacheConfigs = _cache select 0;
_cacheActions = _cache select 1;
_cacheIndices = _cache select 2;
// get interactions
{
private "_configActions";
_configActions = "true" configClasses (_config >> _type >> configName _x);
{
private ["_action", "_configName", "_indexCache"];
_action = _x;
_configName = configName _action;
_indexCache = _cacheConfigs find _action;
if (_indexCache == -1) then {
private ["_displayName", "_distance", "_priority", "_subMenu", "_tooltip", "_hotkey", "_enableInside", "_condition", "_conditionShow", "_showDisabled", "_exceptions", "_statement", "_icon"];
_displayName = getText (_action >> "displayName");
_distance = getNumber (_action >> "distance");
_priority = getNumber (_action >> "priority");
_subMenu = getArray (_action >> "subMenu");
_tooltip = getText (_action >> "tooltip");
_hotkey = getText (_action >> "hotkey");
_enableInside = getNumber (_action >> "enableInside");
// Condition
_condition = getText (_action >> "condition");
if (_condition == "") then {_condition = "true"};
_condition = _condition + format [" && {%1 call AGM_Core_canInteract} && {[AGM_player, AGM_Interaction_Target] call AGM_Core_fnc_canInteractWith}", getArray (_action >> "exceptions")];
if (_enableInside != 1) then {_condition = _condition + " && {_player == _vehicle}"};
_condition = compile _condition;
// Condition to show the action
_conditionShow = getText (_action >> "conditionShow");
_conditionShow = if (_conditionShow == "") then {{true}} else {compile _conditionShow};
_showDisabled = getNumber (_action >> "showDisabled") == 1;
if (isText (_action >> "conditionShow")) then {
_showDisabled = [_object, _player] call _conditionShow;
};
// Exceptions to the general conditions that have to be true
_exceptions = getArray (_action >> "exceptions");
// statement
_statement = getText (_action >> "statement");
_statement = compile _statement;
if (profileNamespace getVariable ["AGM_Interaction_FlowMenu", false]) then {
_statement = if (getText (_action >> "statement") == "" && {count _subMenu > 1}) then {
compile format ["call AGM_Interaction_fnc_hideMenu;if(%2 == 1)then{['%1'] call AGM_Interaction_fnc_openSubMenuSelf;}else{['%1'] call AGM_Interaction_fnc_openSubMenu;};", _subMenu select 0, _subMenu select 1];
} else {
compile ("call AGM_Interaction_fnc_hideMenu;" + getText (_action >> "statement"));
};
};
// icon
_icon = getText (_action >> "Icon");
if (_icon == "") then {
_icon = DEFAULT_ICON;
};
private "_actionToCache";
_actionToCache = [_displayName, _statement, _condition, _priority, _subMenu, _icon, _tooltip, _conditionShow, _exceptions, _distance, _hotkey];
if ((_showDisabled || {[_object, _player] call _condition}) && {_distance == 0 || {[_object, _distance] call AGM_Interaction_fnc_isInRange}}) then {
_actions pushBack _actionToCache;
};
_indexCache = _cacheActions find _actionToCache;
if (_indexCache == -1) then {
_indexCache = count _cacheActions;
_cacheActions pushBack _actionToCache;
};
_cacheConfigs pushBack _action;
_cacheIndices pushBack _indexCache;
_cache = [_cacheConfigs, _cacheActions, _cacheIndices];
["InteractionMenu", _action, {format ["%1 loaded into cache", _this]}] call AGM_Debug_fnc_log;
} else {
["InteractionMenu", _action, {format ["%1 loaded from cache", _this]}] call AGM_Debug_fnc_log;
private ["_cachedAction", "_showDisabled"];
_cachedAction = _cacheActions select (_cacheIndices select _indexCache);
_showDisabled = getNumber (_action >> "showDisabled") == 1;
if (isText (_action >> "conditionShow")) then {
_showDisabled = [_object, _player] call (_cachedAction select 7);
};
if ((_showDisabled || {[_object, _player] call (_cachedAction select 2)}) && {[_object, (_cachedAction select 9)] call AGM_Interaction_fnc_isInRange || {(_cachedAction select 9) == 0}}) then {
_actions pushBack _cachedAction;
};
};
} forEach _configActions; //Actions of this CfgVehicles class
} forEach _configs; //CfgVehicles class
uiNamespace setVariable ["AGM_Interaction_MenuCache", _cache];
_actions

View File

@ -1,3 +0,0 @@
// by commy2
_this call AGM_Core_fnc_getCaptivityStatus;

View File

@ -1,31 +0,0 @@
// by commy2
private ["_distance", "_position0", "_position1", "_intersections", "_count", "_house", "_door", "_index", "_id"];
_distance = _this select 0;
_position0 = positionCameraToWorld [0, 0, 0];
_position1 = positionCameraToWorld [0, 0, _distance];
_intersections = lineIntersectsWith [ATLToASL _position0, ATLToASL _position1, objNull, objNull, true];
_count = count _intersections;
if (_count == 0) exitWith {[objNull, ""]};
_house = _intersections select (_count - 1);
// shithouse is bugged
if (typeOf _house == "") exitWith {[objNull, ""]};
_intersections = [_house, "GEOM"] intersect [_position0, _position1];
_door = _intersections select 0 select 0;
if (isNil "_door") exitWith {[_house, ""]};
[_house, _door]
/*
_house = cursorTarget;
_actions = "true" configClasses (configFile >> "CfgVehicles" >> typeOf _house >> "UserActions");
_actions = [_actions, {getText (_x >> "statement")}] call AGM_Core_fnc_map;
_actions
*/

View File

@ -1,106 +0,0 @@
// by commy2
private ["_house", "_door", "_animations", "_lockedVariable"];
_house = _this select 0;
_door = _this select 1;
_index = [
"door_1",
"door_2",
"door_3",
"door_4",
"door_5",
"door_6",
"door_7",
"door_8",
"door_9",
"door_10",
"door_11",
"door_12",
"door_13",
"Door_14",
"door_15",
"door_16",
"door_17",
"door_18",
"door_19",
"door_20",
"door_21",
"door_22",
"hatch_1",
"hatch_2",
"hatch_3",
"hatch_4",
"hatch_5",
"hatch_6"
] find toLower _door;
if (_index == -1) exitWith {[[],""]};
_animations = [
["Door_1_rot", "Door_Handle_1_rot_1", "Door_Handle_1_rot_2"],
["Door_2_rot", "Door_Handle_2_rot_1", "Door_Handle_2_rot_2"],
["Door_3_rot", "Door_Handle_3_rot_1", "Door_Handle_3_rot_2"],
["Door_4_rot", "Door_Handle_4_rot_1", "Door_Handle_4_rot_2"],
["Door_5_rot", "Door_Handle_5_rot_1", "Door_Handle_5_rot_2"],
["Door_6_rot", "Door_Handle_6_rot_1", "Door_Handle_6_rot_2"],
["Door_7_rot", "Door_Handle_7_rot_1", "Door_Handle_7_rot_2"],
["Door_8_rot", "Door_Handle_8_rot_1", "Door_Handle_8_rot_2"],
["Door_9_rot", "Door_Handle_9_rot_1", "Door_Handle_9_rot_2"],
["Door_10_rot", "Door_Handle_10_rot_1", "Door_Handle_10_rot_2"],
["Door_11_rot", "Door_Handle_11_rot_1", "Door_Handle_11_rot_2"],
["Door_12_rot", "Door_Handle_12_rot_1", "Door_Handle_12_rot_2"],
["Door_13_rot", "Door_Handle_13_rot_1", "Door_Handle_13_rot_2"],
["Door_14_rot", "Door_Handle_14_rot_1", "Door_Handle_14_rot_2"],
["Door_15_rot", "Door_Handle_15_rot_1", "Door_Handle_15_rot_2"],
["Door_16_rot", "Door_Handle_16_rot_1", "Door_Handle_16_rot_2"],
["Door_17_rot", "Door_Handle_17_rot_1", "Door_Handle_17_rot_2"],
["Door_18_rot", "Door_Handle_18_rot_1", "Door_Handle_18_rot_2"],
["Door_19_rot", "Door_Handle_19_rot_1", "Door_Handle_19_rot_2"],
["Door_20_rot", "Door_Handle_20_rot_1", "Door_Handle_20_rot_2"],
["Door_21_rot", "Door_Handle_21_rot_1", "Door_Handle_21_rot_2"],
["Door_22_rot", "Door_Handle_22_rot_1", "Door_Handle_22_rot_2"],
["Hatch_1_rot"],
["Hatch_2_rot"],
["Hatch_3_rot"],
["Hatch_4_rot"],
["Hatch_5_rot"],
["Hatch_6_rot"]
] select _index;
_lockedVariable = [
["BIS_Disabled_Door_1", "Door_Handle_1_rot_1", "Door_Locked_1_rot"],
["BIS_Disabled_Door_2", "Door_Handle_2_rot_1", "Door_Locked_2_rot"],
["BIS_Disabled_Door_3", "Door_Handle_3_rot_1", "Door_Locked_3_rot"],
["BIS_Disabled_Door_4", "Door_Handle_4_rot_1", "Door_Locked_4_rot"],
["BIS_Disabled_Door_5", "Door_Handle_5_rot_1", "Door_Locked_5_rot"],
["BIS_Disabled_Door_6", "Door_Handle_6_rot_1", "Door_Locked_6_rot"],
["BIS_Disabled_Door_7", "Door_Handle_7_rot_1", "Door_Locked_7_rot"],
["BIS_Disabled_Door_8", "Door_Handle_8_rot_1", "Door_Locked_8_rot"],
["BIS_Disabled_Door_9", "Door_Handle_9_rot_1", "Door_Locked_9_rot"],
["BIS_Disabled_Door_10", "Door_Handle_10_rot_1", "Door_Locked_10_rot"],
["BIS_Disabled_Door_11", "Door_Handle_11_rot_1", "Door_Locked_11_rot"],
["BIS_Disabled_Door_12", "Door_Handle_12_rot_1", "Door_Locked_12_rot"],
["BIS_Disabled_Door_13", "Door_Handle_13_rot_1", "Door_Locked_13_rot"],
["BIS_Disabled_Door_14", "Door_Handle_14_rot_1", "Door_Locked_14_rot"],
["BIS_Disabled_Door_15", "Door_Handle_15_rot_1", "Door_Locked_15_rot"],
["BIS_Disabled_Door_16", "Door_Handle_16_rot_1", "Door_Locked_16_rot"],
["BIS_Disabled_Door_17", "Door_Handle_17_rot_1", "Door_Locked_17_rot"],
["BIS_Disabled_Door_18", "Door_Handle_18_rot_1", "Door_Locked_18_rot"],
["BIS_Disabled_Door_19", "Door_Handle_19_rot_1", "Door_Locked_19_rot"],
["BIS_Disabled_Door_20", "Door_Handle_20_rot_1", "Door_Locked_20_rot"],
["BIS_Disabled_Door_21", "Door_Handle_21_rot_1", "Door_Locked_21_rot"],
["BIS_Disabled_Door_22", "Door_Handle_22_rot_1", "Door_Locked_22_rot"],
["", ""],
["", ""],
["", ""],
["", ""],
["", ""],
["", ""]
] select _index;
[_animations, _lockedVariable]

View File

@ -1,33 +0,0 @@
/*
* Author: KoffeinFlummi
*
* Forces a civilian to the ground. (chance of failure).
*
* Arguments:
* 0: Unit to be sent away (Object)
*
* Return value:
* none
*/
#define RADIUS 10
private ["_unit", "_chance", "_x"];
_unit = _this select 0;
AGM_player playActionNow "GestureGo"; // put something else here.
if (count (weapons AGM_player) > 0) then {
_chance = 0.8;
} else {
_chance = 0.5;
};
{
if (count (weapons _unit) == 0 and random 1 < _chance) then {
[-2, {
_this setUnitPos "DOWN";
}, _x] call CBA_fnc_globalExecute;
};
} foreach (_unit nearEntities ["Civilian", RADIUS]);

View File

@ -1,23 +0,0 @@
// by commy2
#define MIN_DISTANCE 0.0065
private ["_position", "_distance", "_angle"];
_position = uiNamespace getVariable ['AGM_Interaction_CursorPosition', [0.5, 0.5, 0]];
_position = [((_position select 1) - 0.5) / safezoneH, ((_position select 2) - 0.5) / safezoneW, 0];
_distance = [0, 0, 0] vectorDistanceSqr _position;
// is in center
if (_distance < MIN_DISTANCE) exitWith {-1};
_angle = (_position select 0) atan2 (_position select 1);
// rotate circle
_angle = 180 - _angle + 360 / 10 / 2;
if (_angle < 0) then {_angle = _angle + 360};
_angle = floor (_angle / 360 * 10);
if (_angle == 10) then {0} else {_angle}

View File

@ -1,22 +0,0 @@
/*
Name: AGM_Interaction_fnc_hideMenu
Author: Garth de Wet (LH)
Description:
Closes the Interaction menu
Parameters:
Nothing
Returns:
Nothing
Example:
call AGM_Interaction_fnc_hideMenu;
*/
closeDialog 0;
(findDisplay 1713999) closeDisplay 1;
(uiNameSpace getVariable "AGM_Flow_Display") closeDisplay 0;
AGM_Interaction_MainButton = nil;
call AGM_Interaction_fnc_hideMouseHint;

View File

@ -1,22 +0,0 @@
/*
Name: AGM_Interaction_fnc_hideMouseHint
Author(s):
Garth de Wet (LH)
Description:
Hides the interaction helper text with the mouse buttons at the bottom middle of the screen
Parameters:
Nothing
Returns:
Nothing
Example:
call AGM_Interaction_fnc_hideMouseHint;
*/
if (isNull (uiNamespace getVariable ["AGM_Helper_Display", objNull])) exitWith{};
("AGM_InteractionHelper" call BIS_fnc_rscLayer) cutText ["", "PLAIN"];
showHUD true;

View File

@ -1,167 +0,0 @@
/*
Name: AGM_Interaction_fnc_initialiseInteraction
Author:
commy2
Garth de Wet (LH)
Description:
Initialises the interaction click handlers.
Parameters:
0 : CODE - code to call when right clicking/center button
1 : BOOLEAN - Submenu
2 : BOOLEAN - Flow Menu
3 : BOOLEAN - Self interaction
4 : OBJECT - Target
Returns:
Nothing
Example:
[{"Default" call AGM_Interaction_fnc_openMenu;}, true, (profileNamespace getVariable ["AGM_Interaction_FlowMenu", false]), AGM_Interaction_Target] call AGM_Interaction_fnc_initialiseInteraction;
*/
private ["_subMenu", "_selfMenu", "_target"];
AGM_Interaction_MainButton = _this select 0;
_subMenu = _this select 1;
_selfMenu = _this select 3;
_target = _this select 4;
_player = AGM_player;
_vehicle = vehicle _player;
//_object = [AGM_Interaction_Target, _player] select (AGM_Interaction_MenuType % 2 == 1);
if !([_target, 5] call AGM_Interaction_fnc_isInRange) exitWith {};
AGM_Interaction_Shortcuts = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1];
// Flow menu
if (_this select 2) then {
("AGM_FlowMenu" call BIS_fnc_rscLayer) cutRsc ["AGM_FlowMenu", "PLAIN",0.5, false];
AGM_Interaction_SelectedButton = 0;
(findDisplay 1713999) closeDisplay 1;
if (_player getVariable ["AGM_AcceptAction", -1] == -1) then {
[{if(isNil {AGM_Interaction_MainButton} || {!(profileNamespace getVariable ['AGM_Interaction_FlowMenu', false])})exitWith{false};(-(_this select 0) / 1.2) call AGM_Interaction_fnc_MoveDown;true}] call AGM_Core_fnc_addScrollWheelEventHandler;
_player setVariable ["AGM_AcceptAction", [_player, "DefaultAction", {(!isNil {AGM_Interaction_MainButton}) && {(profileNamespace getVariable ['AGM_Interaction_FlowMenu', false])}}, {_action = AGM_Interaction_Buttons select AGM_Interaction_SelectedButton;_target = AGM_Interaction_Target;_player = AGM_player;_vehicle = vehicle _player;if ([_target, _player] call (_action select 2)) then {call AGM_Interaction_fnc_hideMenu;if(count _action == 12) then{(_action select 11) call (_action select 1);}else{[_target, _player] call (_action select 1);};};}] call AGM_core_fnc_addActionEventHandler];
_player setVariable ["AGM_AcceptAction", [_player, "menuBack", {(!isNil {AGM_Interaction_MainButton}) && {(profileNamespace getVariable ['AGM_Interaction_FlowMenu', false])}}, {call AGM_Interaction_MainButton;}] call AGM_core_fnc_addActionEventHandler];
};
0 call AGM_Interaction_fnc_moveDown;
[localize "STR_AGM_Interaction_MakeSelection", if (_subMenu)then{localize "STR_AGM_Interaction_Back"}else{""}, localize "STR_AGM_Interaction_ScrollHint"] call AGM_Interaction_fnc_showMouseHint;
((uiNamespace getVariable "AGM_Flow_Display") displayCtrl (1210)) ctrlShow _subMenu;
}else{ // Rose
if (!isNull(uiNamespace getVariable "AGM_Flow_Display")) then {
(uiNameSpace getVariable "AGM_Flow_Display") closeDisplay 0;
call AGM_Interaction_fnc_hideMouseHint;
};
if (!_subMenu || {isNull (findDisplay 1713999)}) then {
(findDisplay 1713999) closeDisplay 1;
(findDisplay 46) createDisplay "AGM_Interaction_Dialog";
// Add eventhandlers
(findDisplay 1713999) displayAddEventHandler ["KeyDown", "_this call AGM_Core_onKeyDown"];
(findDisplay 1713999) displayAddEventHandler ["KeyUp", "_this call AGM_Core_onKeyUp"];
(findDisplay 1713999) displayAddEventHandler ["KeyDown", "_this call AGM_Interaction_fnc_menuKeyInput"];
};
disableSerialization;
_dlgInteractionDialog = uiNamespace getVariable "AGM_Interaction_Dialog";
_ctrlInteractionDialog = _dlgInteractionDialog displayCtrl 3;
if (profileNamespace getVariable ["AGM_Interaction_AutoCenterCursor", true]) then {setMousePosition [0.5, 0.5]};
if !(_subMenu) then {
_ctrlInteractionDialog ctrlSetText ([_target] call AGM_Core_fnc_getName);
} else {
_ctrlInteractionDialog ctrlSetText localize "STR_AGM_Interaction_Back";
};
_buttons = AGM_Interaction_Buttons;
_count = count _buttons;
for "_i" from 0 to 9 do {
_ctrlInteractionDialog = _dlgInteractionDialog displayCtrl (10 + _i);
_ctrlInteractionDialog ctrlShow true;
_ctrlInteractionDialogIcon = _dlgInteractionDialog displayCtrl (20 + _i);
_ctrlInteractionDialogShortcut = _dlgInteractionDialog displayCtrl (30 + _i);
//_ctrlInteractionDialogBackground = _dlgInteractionDialog displayCtrl (40 + _i);
if (_i < _count) then {
_action = _buttons select _i;
_ctrlInteractionDialog ctrlSetText (_action select 0);
_ctrlInteractionDialog ctrlEnable ([_target, _player] call (_action select 2));
_ctrlInteractionDialog ctrlSetTooltip (_action select 6);
_ctrlInteractionDialogIcon ctrlSetText (_action select 5);
_ctrlInteractionDialogShortcut ctrlSetText (_action select 10);
//_ctrlInteractionDialogBackground ctrlShow true;
AGM_Interaction_Shortcuts set [_i, [_action select 10] call AGM_Core_fnc_letterToCode];
} else {
_ctrlInteractionDialog ctrlSetText "";
_ctrlInteractionDialog ctrlEnable false;
_ctrlInteractionDialog ctrlSetTooltip "";
_ctrlInteractionDialogIcon ctrlSetText "";
_ctrlInteractionDialogShortcut ctrlSetText "";
//_ctrlInteractionDialogBackground ctrlShow false;
};
};
// Update Buttons
terminate (missionNamespace getVariable ["AGM_Interaction_updateMenuHandle", scriptNull]);
AGM_Interaction_updateMenuHandle = 0 spawn {
disableSerialization;
_dlgMenu = uiNamespace getVariable ["AGM_Interaction_Dialog", displayNull];
_ctrlTooltip = _dlgMenu displayCtrl 40;
_player = AGM_player;
_vehicle = vehicle _player;
_target = [AGM_Interaction_Target, _player] select (AGM_Interaction_MenuType % 2 == 1);
waitUntil {
if !([_target, 5] call AGM_Interaction_fnc_isInRange) exitWith {
(findDisplay 1713999) closeDisplay 1
};
AGM_Interaction_Tooltips = [[], [], [], [], [], [], [], [], [], []];
{
_ctrlText = _dlgMenu displayCtrl (10 + _forEachIndex);
_ctrlIcon = _dlgMenu displayCtrl (20 + _forEachIndex);
_condition = _x select 2;
_conditionShow = _x select 7;
_distance = _x select 9;
AGM_Interaction_CurrentTooltip = [];
_enable = (_distance == 0 || {[_target, _distance] call AGM_Interaction_fnc_isInRange}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow};
if (isNil "_enable") then {_enable = false};
AGM_Interaction_Tooltips set [_forEachIndex, AGM_Interaction_CurrentTooltip];
// apply conditional tooltips
/*if (_forEachIndex == call AGM_Interaction_fnc_getSelectedButton) then {
_tooltip = _x select 6;
_showTooltip = _tooltip != "";
_tooltip = text _tooltip;
{
_showTooltip = true;
_tooltip = composeText [_tooltip, lineBreak, _x];
} forEach (AGM_Interaction_Tooltips select _forEachIndex);
_ctrlTooltip ctrlSetStructuredText _tooltip;
_ctrlTooltip ctrlShow _showTooltip;
};*/
_ctrlText ctrlEnable _enable;
_ctrlIcon ctrlEnable _enable;
} forEach AGM_Interaction_Buttons;
sleep 0.5;
isNull (findDisplay 1713999)
};
};
};

View File

@ -1,49 +0,0 @@
/*
* Author: commy2
*
* Check if the vehicle is in range of the player.
*
* Argument:
* 0: Vehicke (Object)
* 1: Distance in meters (Number)
*
* Return value:
* (Bool)
*/
private ["_vehicle", "_distance", "_player"];
_vehicle = _this select 0;
_distance = _this select 1;
_player = AGM_player;
if (_vehicle isKindOf "Man") exitWith {_player distance _vehicle < _distance};
private ["_position0", "_position1"];//, "_direction"];
_position0 = getPosASL _player;
_position1 = getPosASL _vehicle;
/*
_direction = _position1 vectorDiff _position0;
_direction = _direction vectorMultiply (_distance / (vectorMagnitude _direction));
_position0 = eyePos _player;
_position1 = _position0 vectorAdd _direction;
_vehicle in lineIntersectsWith [_position0, _position1] || {_player distance _vehicle < _distance}
*/
_position0 = ATLToASL positionCameraToWorld [0, 0, 0];
_position0 set [2, (_position0 select 2) - (getTerrainHeightASL _position0 min 0)];
_position1 = ATLToASL positionCameraToWorld [0, 0, _distance];
_position1 set [2, (_position1 select 2) - (getTerrainHeightASL _position1 min 0)];
if (_vehicle in lineIntersectsWith [_position0, _position1] || {_player distance _vehicle < _distance}) then {
true
} else {
["Not in Range"] call AGM_Interaction_fnc_addToTooltip;
false
}

View File

@ -1,20 +0,0 @@
// by commy2
private ["_unit", "_team", "_message"];
_unit = _this select 0;
_team = _this select 1;
_unit setVariable ["AGM_assignedFireTeam", _team, true];
[_unit, format ["{_this assignTeam '%1'}", _team]] call AGM_Core_fnc_execRemoteFnc;
if (_unit == AGM_player) then {
_message = if (_team == "MAIN") then {
localize "STR_AGM_Interaction_LeftTeam";
} else {
_team = localize format ["STR_AGM_Interaction_Team%1", _team];
format [localize "STR_AGM_Interaction_JoinedTeam", _team];
};
[_message] call AGM_Core_fnc_displayTextStructured;
};

View File

@ -1,27 +0,0 @@
// by commy2
private ["_mode", "_info", "_house", "_door", "_id", "_phase"];
_mode = _this select 0; //lock: true, unlock: false
_info = [2] call AGM_Interaction_fnc_getDoor;
_house = _info select 0;
_door = _info select 1;
_id = _info select 2;
if (isNull _house) exitWith {};
/*
_phase = [1, 0] select _mode;
_house animate [format ["%1_%2_rot", _door, _id], _phase];
_house animate [format ["%1_Handle_%2_rot_1", _door, _id], _phase];
_house animate [format ["%1_Handle_%2_rot_2", _door, _id], _phase];
*/
_house setVariable [format ["BIS_Disabled_%1_%2", _door, _id], [0, 1] select _mode];
playSound "AGM_Sound_Click";
[localize (["STR_AGM_Interaction_UnlockedDoor", "STR_AGM_Interaction_LockedDoor"] select _mode)] call AGM_Core_fnc_displayTextStructured;

View File

@ -1,16 +0,0 @@
// by commy2
private "_key";
_key = _this select 1;
if (_key in [28, 57, 156, 200, 208, 203, 205, 201, 209]) exitWith {true};
_index = AGM_Interaction_Shortcuts find _key;
if (_index != -1 && {ctrlEnabled (findDisplay 1713999 displayCtrl (_index + 10))}) exitWith {
_index call AGM_Interaction_fnc_onClick;
true
};
false

View File

@ -1,20 +0,0 @@
/*
* Author: bux578
*
* Initializes the Interaction module.
*
* Arguments:
* Whatever the module provides. (I dunno.)
*
* Return Value:
* None
*/
_logic = _this select 0;
_activated = _this select 2;
if !(_activated) exitWith {};
[_logic, "AGM_Interaction_EnableTeamManagement", "EnableTeamManagement"] call AGM_Core_fnc_readBooleanParameterFromModule;
diag_log text "[AGM]: Interaction Module Initialized.";

View File

@ -1,14 +0,0 @@
// by commy2
if (dialog) exitWith {
closeDialog 0;
};
if (isNull (findDisplay 1713999)) then {
if (AGM_player == vehicle AGM_player) then {"" call AGM_Interaction_fnc_openMenu} else {[AGM_player, vehicle AGM_player] call AGM_Interaction_fnc_openMenuSelectUI};
setMousePosition [0.5, 0.5];
} else {
(findDisplay 1713999) closeDisplay 1;
};
[_player, "interactionMenuOpened", [_player, AGM_Interaction_Target, 0]] call AGM_Core_fnc_callCustomEventHandlers;

View File

@ -1,14 +0,0 @@
// by commy2
if (dialog) exitWith {
closeDialog 0;
};
if (isNull (findDisplay 1713999)) then {
"" call AGM_Interaction_fnc_openMenuSelf;
setMousePosition [0.5, 0.5];
} else {
(findDisplay 1713999) closeDisplay 1;
};
[_player, "interactionMenuOpened", [_player, AGM_Interaction_Target, 1]] call AGM_Core_fnc_callCustomEventHandlers;

View File

@ -1,44 +0,0 @@
// by commy2
private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_statement", "_condition", "_conditionShow", "_exceptions", "_distance"];
_player = AGM_player;
_vehicle = vehicle _player;
_target = [AGM_Interaction_Target, _player] select (AGM_Interaction_MenuType % 2 == 1);
_count = count AGM_Interaction_Buttons;
_index = call AGM_Interaction_fnc_getSelectedButton;
_action = if (_index != -1 && {_index < _count}) then {
AGM_Interaction_Buttons select _index
} else {
["", {}, {false}, 0, [], "", "", {false}, [], 0]
};
(findDisplay 1713999) closeDisplay 1;
closeDialog 0;
_statement = _action select 1;
_condition = _action select 2;
_conditionShow = _action select 7;
_exceptions = _action select 8;//
_distance = _action select 9;
if ((_distance == 0 || {[AGM_Interaction_Target, _distance] call AGM_Interaction_fnc_isInRange}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then {
[_target, _player] call _statement;
};

View File

@ -1,44 +0,0 @@
// by commy2
private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_subMenu", "_statement", "_condition", "_conditionShow", "_exceptions", "_distance"];
_player = AGM_player;
_vehicle = vehicle _player;
_target = [AGM_Interaction_Target, _player] select (AGM_Interaction_MenuType % 2 == 1);
_count = count AGM_Interaction_Buttons;
_index = _this; //call AGM_Interaction_fnc_getSelectedButton;
_action = if (_index != -1 && {_index < _count}) then {
AGM_Interaction_Buttons select _index
} else {
["", {}, {false}, 0, [], "", "", {false}, [], 0]
};
_subMenu = _action select 4;
// back
if (_index == -1) exitWith {
call AGM_Interaction_MainButton;
};
if (count _subMenu < 2) then {
(findDisplay 1713999) closeDisplay 1;
closeDialog 0;
_statement = _action select 1;
_condition = _action select 2;
_conditionShow = _action select 7;
_exceptions = _action select 8;//
_distance = _action select 9;
if ((_distance == 0 || {[AGM_Interaction_Target, _distance] call AGM_Interaction_fnc_isInRange}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then {
[_target, _player] call _statement;
};
} else {
if (_subMenu select 1 < 1) then {
[_subMenu select 0] call AGM_Interaction_fnc_openSubMenu;
} else {
[_subMenu select 0] call AGM_Interaction_fnc_openSubMenuSelf;
};
};

View File

@ -1,3 +0,0 @@
// by CorruptedHeart, commy2
call compile (lbData [8866, lbCurSel 8866]) call AGM_Interaction_SelectAccept;

View File

@ -1,56 +0,0 @@
// by commy2
private ["_info", "_house", "_door", "_animations", "_lockedVariable"];
_info = [2] call AGM_Interaction_fnc_getDoor;
_house = _info select 0;
_door = _info select 1;
if (isNull _house) exitWith {};
_animations = [_house, _door] call AGM_Interaction_fnc_getDoorAnimations;
_lockedVariable = _animations select 1;
_animations = _animations select 0;
if (count _animations == 0) exitWith {};
if (_house animationPhase (_animations select 0) <= 0 && {_house getVariable [_lockedVariable select 0, 0] == 1}) exitWith {
_lockedVariable set [0, _house];
_lockedVariable spawn compile preprocessFileLineNumbers "\A3\Structures_F\scripts\LockedDoor_open.sqf";
};
AGM_Interaction_isOpeningDoor = true;
playSound "AGM_Sound_Click";
[_house, _animations] spawn {
_house = _this select 0;
_animations = _this select 1;
_phase = _house animationPhase (_animations select 0);
_position = getPosASL AGM_player;
_time = time + 0.2;
_usedMouseWheel = false;
waitUntil {
if (inputAction "PrevAction" > 0 || {inputAction "NextAction" > 0}) then {
_usedMouseWheel = true;
};
_phase = _phase + (inputAction "PrevAction" / 12) min 1;
_phase = _phase - (inputAction "NextAction" / 12) max 0;
{_house animate [_x, _phase]} forEach _animations;
!AGM_Interaction_isOpeningDoor || {getPosASL AGM_player distance _position > 1}
};
if (!_usedMouseWheel && {time < _time}) then {
_phase = [0, 1] select (_house animationPhase (_animations select 0) < 0.5);
{_house animate [_x, _phase]} forEach _animations;
};
AGM_Interaction_isOpeningDoor = false;
};

View File

@ -1,6 +0,0 @@
// by commy2
private "_target";
_target = [cursorTarget, AGM_Interaction_Target] select (_this == "Default");
[0, _target, ""] call AGM_Interaction_fnc_showMenu;

View File

@ -1,43 +0,0 @@
// by commy2
private ["_unit", "_vehicle", "_cargo"];
_unit = _this select 0;
_vehicle = _this select 1;
// allow interaction with all cargo slots and all ffv slots
_cargo = [_vehicle, ["cargo", "ffv"], true] call AGM_Core_fnc_getVehicleCrew;
// you can only interact if you are in cargo or ffv yourself. exit otherwise
if !(_unit in _cargo) exitWith {};
AGM_InteractionMenu_Crew = _cargo;
// prepare: add header and "OK" button to select menu
private "_actions";
_actions = [localize "STR_AGM_Interaction_InteractionMenu", localize "STR_AGM_Interaction_Interact"] call AGM_Interaction_fnc_prepareSelectMenu;
// prepare: add all cargo units as options to select menu
{
if (_x != _unit) then {
_actions = [
_actions,
[_x] call AGM_Core_fnc_getName,
"\AGM_Interaction\UI\dot_ca.paa",
_forEachIndex
] call AGM_Interaction_fnc_AddSelectableItem;
};
} forEach _cargo;
// open select menu
[
_actions,
{
call AGM_Interaction_fnc_hideMenu;
[0, AGM_InteractionMenu_Crew select _this, ""] spawn AGM_Interaction_fnc_showMenu;
AGM_InteractionMenu_Crew = nil;
},
{
call AGM_Interaction_fnc_hideMenu;
}
] call AGM_Interaction_fnc_openSelectMenu;

View File

@ -1,3 +0,0 @@
// by commy2
[1, AGM_player, ""] call AGM_Interaction_fnc_showMenu;

View File

@ -1,43 +0,0 @@
/*
Name: AGM_Interaction_fnc_openSelectMenu
Author: Garth de Wet (LH)
Description:
Opens the select menu UI and sets up the UI
Parameters:
0: ARRAY - items
ARRAY
0 = Text
1 = statement to execute
2 = condition before execute
3 = showDisabled
4 = priority
5 = icon
6 = extra variables. Passed to the code.
1: Code - select action
2: Code - Cancel Action
Returns:
Nothing
Example:
*/
if (!(profileNamespace getVariable ["AGM_Interaction_FlowMenu", false])) then {
AGM_Interaction_SelectAccept = _this select 1;
AGM_Interaction_SelectCancel = _this select 2;
buttonSetAction [8855, "call AGM_Interaction_SelectCancel;"]; // cancel
buttonSetAction [8860, "(call compile (lbData [8866, lbCurSel 8866])) call AGM_Interaction_SelectAccept;"]; // accept
lbSetCurSel [8866, 0];
}else{
_customActions = _this select 0;
_count = count _customActions;
if (_count == 0) exitWith {};
_customActions call AGM_Interaction_fnc_sortOptionsByPriority;
for "_i" from 0 to _count -1 do {
_action = _customActions select _i;
_action set [1, (_this select 1)];
};
AGM_Interaction_Buttons = _customActions;
[(_this select 2), true, true, false, AGM_player] call AGM_Interaction_fnc_initialiseInteraction;
};

View File

@ -1,3 +0,0 @@
// by commy2
[2, AGM_Interaction_Target, _this select 0] call AGM_Interaction_fnc_showMenu;

View File

@ -1,3 +0,0 @@
// by commy2
[3, AGM_player, _this select 0] call AGM_Interaction_fnc_showMenu;

View File

@ -1,35 +0,0 @@
/*
Name: AGM_Interaction_fnc_prepareSelectMenu
Author: Garth de Wet (LH)
Description:
Prepares the select menu for use.
Parameters:
0: TEXT - Header text
1: TEXT - Approve button text
Returns:
ARRAY/NUMBER - container object for use with AddSelectableItem.
Example:
["Select Explosive", "Place"] call AGM_Interaction_fnc_prepareSelectMenu;
*/
private ["_buttonAction", "_header", "_buttonText", "_cancelButton"];
closeDialog 0;
if (!(profileNamespace getVariable ["AGM_Interaction_FlowMenu", false])) exitWith {
_header = _this select 0;
_buttonText = _this select 1;
if (isNil "_buttonText" or {_buttonText == ""}) then {
_buttonText = localize "STR_AGM_Interaction_MakeSelection";
};
createDialog "RscAGM_SelectAnItem";
ctrlSetText [8860, _buttonText];
ctrlSetText [8870, _header];
lbClear 8866;
8866
};
[]

View File

@ -1,21 +0,0 @@
/*
* Author: KoffeinFlummi
*
* Pushes a boat away from the player.
*
* Arguments:
* 0: Boat (object)
* 1: Velocity (vectorlike array)
*
* Return Value:
* None
*/
_boat = _this select 0;
_velocity = _this select 1;
if !(local _boat) exitWith {
[_this, "AGM_Interaction_fnc_push", _boat] call AGM_Core_fnc_execRemoteFnc;
};
_boat setVelocity _velocity;

View File

@ -1,35 +0,0 @@
/*
* Author: commy2
*
* Remove an AGM action from an object. Note: This function is global.
*
* Argument:
* 0: Object (Object)
* 1: ID of the action (Number)
*
* Return value:
* None.
*/
private ["_object", "_id", "_actionsVar", "_currentID", "_actionIDs", "_actions"];
_object = _this select 0;
_id = _this select 1;
_actionsVar = _object getVariable ["AGM_Interactions", [-1, [], []]];
_currentID = _actionsVar select 0;
_actionIDs = _actionsVar select 1;
_actions = _actionsVar select 2;
_id = _actionIDs find _id;
if (_id == -1) exitWith {};
_actionIDs set [_id, -1];
_actionIDs = _actionIDs - [-1];
_actions set [_id, []];
_actions = _actions - [[]];
_object setVariable ["AGM_Interactions", [_currentID, _actionIDs, _actions], true];

View File

@ -1,35 +0,0 @@
/*
* Author: commy2
*
* Remove an AGM self action from the player.
*
* Argument:
* 0: ID of the action (Number)
*
* Return value:
* None.
*/
private ["_id", "_actionsVar", "_currentID", "_actionIDs", "_actions"];
_id = _this select 0;
_actionsVar = AGM_player getVariable ["AGM_InteractionsSelf", [-1, [], []]];
_currentID = _actionsVar select 0;
_actionIDs = _actionsVar select 1;
_actions = _actionsVar select 2;
_id = _actionIDs find _id;
if (_id == -1) exitWith {};
_actionIDs set [_id, -1];
_actionIDs = _actionIDs - [-1];
_actions set [_id, []];
_actions = _actions - [[]];
AGM_player setVariable ["AGM_InteractionsSelf", [_currentID, _actionIDs, _actions], false];

View File

@ -1,19 +0,0 @@
// by commy2
0 spawn {
waitUntil {player getVariable ["AGM_Name", ""] != ""};
_name = player getVariable ["AGM_Name", ""];
_name = toArray _name;
_index = _name find (toArray "]" select 0);
if (_index != -1) then {
for "_index" from 0 to _index do {
_name set [_index, -1];
};
_name = _name - [-1];
_name = toString _name;
player setVariable ["AGM_Name", _name, true];
};
};

View File

@ -1,35 +0,0 @@
/*
* Author: KoffeinFlummi
*
* Sends a civilian crowd away (chance of failure).
*
* Arguments:
* 0: Unit to be sent away (Object)
*
* Return value:
* none
*/
#define DISTANCE 50
#define RADIUS 10
private ["_unit", "_chance", "_x"];
_unit = _this select 0;
AGM_player playActionNow "GestureGo";
if (count weapons AGM_player > 0) then {
_chance = 0.8;
} else {
_chance = 0.5;
};
{
if (count (weapons _unit) == 0 and random 1 < _chance) then {
[-2, {
(_this select 0) setUnitPos "AUTO";
(_this select 0) doMove [(getPos (_this select 0) select 0) + DISTANCE * (eyeDirection (_this select 1) select 0), (getPos (_this select 0) select 1) + DISTANCE * (eyeDirection (_this select 1) select 1), 0];
}, [_x, AGM_player]] call CBA_fnc_globalExecute;
};
} foreach (_unit nearEntities ["Civilian", RADIUS]);

View File

@ -1,3 +0,0 @@
// by commy2
_this call AGM_Core_fnc_setCaptivityStatus;

View File

@ -1,118 +0,0 @@
/*
Name: AGM_Interaction_fnc_showMenu
Author:
commy2
Garth de Wet (LH)
aeroson
Description:
Parameters:
0: NUMBER - Menu type (0 - interaction, 1 - self-interaction, 2 - sub-interaction, 3 - sub-self-interaction)
1: OBJECT - Target object
2: STRING - Sub-Menu ClassName
Returns:
Nothing
Example:
[0, AGM_Interaction_Target] call AGM_Interaction_fnc_showMenu;
[1, player] call AGM_Interaction_fnc_showMenu;
[2, AGM_Interaction_Target, "AGM_Explosives"] call AGM_Interaction_fnc_showMenu;
[3, player, "AGM_Explosives"] call AGM_Interaction_fnc_showMenu;
*/
private ["_player", "_vehicle", "_mainButtonAction", "_object", "_index", "_actions", "_result", "_menuType"];
#define DEFAULT_ICON "\AGM_Interaction\UI\dot_ca.paa"
#define DEFAULT_DISTANCE 4 // seems to be 4
_player = AGM_player;
_vehicle = vehicle _player;
AGM_Interaction_MenuType = _this select 0; // 0 Interaction, 1 Self Interaction
_mainButtonAction = [
{call AGM_Interaction_fnc_hideMenu},
{call AGM_Interaction_fnc_hideMenu},
{"Default" call AGM_Interaction_fnc_openMenu},
{"Default" call AGM_Interaction_fnc_openMenuSelf}
] select AGM_Interaction_MenuType;
_menuType = AGM_Interaction_MenuType % 2;
uiNamespace setVariable ["AGM_Interaction_CursorPosition", [controlNull, 0.5, 0.5, -1]];
AGM_Interaction_Target = _this select 1;
_object = AGM_Interaction_Target;
if (_menuType == 0 && {(isNull (_object) || {!([_object, 4] call AGM_Interaction_fnc_isInRange)})}) exitWith {};//call ([AGM_Interaction_fnc_onButtonDown, AGM_Interaction_fnc_onButtonDownSelf] select _menuType)};
if !([_player, _object] call AGM_Core_fnc_canInteractWith) exitWith {};
// add actions or self actions of AGM_Interaction_Target
_parents = [configFile >> "CfgVehicles" >> typeOf _object, true] call BIS_fnc_returnParents;
_result = [_object, _parents, [], [], missionConfigFile >> "CfgVehicles", true, ["AGM_Actions", "AGM_SelfActions"] select _menuType, _this select 2] call AGM_Interaction_fnc_GetActions;
_actions = ([_object, _parents, _result select 0, _result select 1,configFile >> "CfgVehicles", false, ["AGM_Actions", "AGM_SelfActions"] select _menuType, _this select 2] call AGM_Interaction_fnc_GetActions) select 0;
// add self actions of vehicle _player
if (_menuType == 1 && {_player != _vehicle}) then {
_parents = [configFile >> "CfgVehicles" >> typeOf _vehicle, true] call BIS_fnc_returnParents;
_result = [_vehicle, _parents, [], [], missionConfigFile >> "CfgVehicles", true, ["AGM_Actions", "AGM_SelfActions"] select _menuType, _this select 2] call AGM_Interaction_fnc_GetActions;
_actions = _actions + (([_vehicle, _parents, _result select 0, _result select 1,configFile >> "CfgVehicles", false, ["AGM_Actions", "AGM_SelfActions"] select _menuType, _this select 2] call AGM_Interaction_fnc_GetActions) select 0);
};
// custom defined actions, stored in variable instead of cfg like above
if (AGM_Interaction_MenuType < 2) then {
private ["_customActions", "_customAction", "_displayName", "_distance","_condition","_statement","_showDisabled", "_priority"];
// add interactions or self interactions of AGM_Interaction_Target
_customActions = (_object getVariable [["AGM_Interactions", "AGM_InteractionsSelf"] select _menuType, [-1, [], []]]) select 2;
// add self interactions of vehicle _player
if (_menuType == 1 && {_player != _vehicle}) then {
_customActions = _customActions + ((_vehicle getVariable [["AGM_Interactions", "AGM_InteractionsSelf"] select _menuType, [-1, [], []]]) select 2);
};
if(_menuType==0) then {
private ["_distance"];
for "_index" from 0 to (count _customActions - 1) do {
_customAction = _customActions select _index;
_displayName = _customAction select 0;
_distance = _customAction select 1;
_condition = _customAction select 2;
_statement = _customAction select 3;
_showDisabled = _customAction select 4;
_priority = _customAction select 5;
if ((_showDisabled || {[_object, _player] call _condition}) && {[_object, _distance] call AGM_Interaction_fnc_isInRange || {_distance == 0}}) then {
_actions pushBack [_displayName, _statement, _condition, _priority, [], DEFAULT_ICON, "", {true}, [], _distance, ""];
};
};
} else { // self interactions do not have distance
for "_index" from 0 to (count _customActions - 1) do {
_customAction = _customActions select _index;
_displayName = _customAction select 0;
_condition = _customAction select 1;
_statement = _customAction select 2;
_showDisabled = _customAction select 3;
_priority = _customAction select 4;
if (_showDisabled || {[_object, _player] call _condition}) then {
_actions pushBack [_displayName, _statement, _condition, _priority, [], DEFAULT_ICON, "", {true}, [], DEFAULT_DISTANCE, ""];
};
};
};
};
if (count _actions == 0) exitWith {};//call ([AGM_Interaction_fnc_onButtonDown, AGM_Interaction_fnc_onButtonDownSelf] select _menuType)};
_actions call AGM_Interaction_fnc_sortOptionsByPriority;
AGM_Interaction_Buttons = _actions;
[_mainButtonAction, (_this select 2) != "", (profileNamespace getVariable ["AGM_Interaction_FlowMenu", false]), _menuType == 1, _object] call AGM_Interaction_fnc_initialiseInteraction;

View File

@ -1,54 +0,0 @@
/*
Name: AGM_Interaction_fnc_showMouseHint
Author(s):
Garth de Wet (LH)
Description:
Shows the interaction helper text with the mouse buttons at the bottom middle of the screen
Parameters:
0: STRING - Left click text
1: STRING - Right click text
3: STRING - (Optional) Scroll text
Returns:
Nothing
Example:
["Place Explosive", "Cancel"] call AGM_Interaction_fnc_showMouseHint;
*/
#define GUI_GRID_W (0.025)
#define GUI_GRID_H (0.04)
private ["_leftClick", "_rightClick", "_scroll"];
_leftClick = _this select 0;
_rightClick = _this select 1;
_scroll = "";
if (count _this > 2) then {
_scroll = _this select 2;
};
("AGM_InteractionHelper" call BIS_fnc_rscLayer) cutRsc ["AGM_InteractionHelper", "PLAIN",0.5, false];
disableSerialization;
_display = uiNamespace getVariable ["AGM_Helper_Display", objNull];
if (isNull _display) exitWith{};
(_display displayCtrl 1000) ctrlSetText _leftClick;
(_display displayCtrl 1001) ctrlSetText _rightClick;
(_display displayCtrl 1000) ctrlShow (_leftClick != "");
(_display displayCtrl 1200) ctrlShow (_leftClick != "");
(_display displayCtrl 1001) ctrlShow (_rightClick != "");
(_display displayCtrl 1201) ctrlShow (_rightClick != "");
if (_scroll == "") exitWith {
(_display displayCtrl 1002) ctrlShow false;
(_display displayCtrl 1202) ctrlShow false;
(_display displayCtrl 1001) ctrlSetPosition [21 * GUI_GRID_W, 18 * GUI_GRID_H, 8 * GUI_GRID_W, 1.5 * GUI_GRID_H];
(_display displayCtrl 1201) ctrlSetPosition [20 * GUI_GRID_W, 18.5 * GUI_GRID_H, 1 * GUI_GRID_W, 1 * GUI_GRID_H];
(_display displayCtrl 1001) ctrlCommit 0;
(_display displayCtrl 1201) ctrlCommit 0;
};
(_display displayCtrl 1002) ctrlSetText _scroll;
showHUD false;

View File

@ -1,20 +0,0 @@
// by commy2
private ["_actions", "_count", "_index", "_actionN", "_actionM"];
_actions = _this;
_count = count _actions;
_index = 0;
while {_index < _count - 1} do {
_actionN = + _actions select _index;
_actionM = + _actions select (_index + 1);
if (_actionN select 3 < _actionM select 3) then {
_actions set [_index, _actionM];
_actions set [_index + 1, _actionN];
_index = 0;
} else {
_index = _index + 1;
};
};

View File

@ -1,20 +0,0 @@
// by commy2
private ["_unit", "_message"];
_tapper = _this select 0;
_target = _this select 1;
if (_target != AGM_player) exitWith {
addCamShake [4, 0.5, 5];
if !(local _target) then {
[[_tapper, _target], "AGM_Interaction_fnc_tapShoulder", _target] call AGM_Core_fnc_execRemoteFnc;
};
};
addCamShake [4, 0.5, 5];
//_message = format ["%1 tapped you on your shoulder.", [_unit] call AGM_Core_fnc_getName];
_message = localize "STR_AGM_Interaction_YouWereTapped";
[_message] call AGM_Core_fnc_displayTextStructured;

View File

@ -1,12 +0,0 @@
// by commy2
disableSerialization;
_ctrl = ctrlParent (_this select 0) displayCtrl 40;
_ctrl ctrlSetPosition [
(_this select 1) + 0.01 * safezoneW,
(_this select 2) + 0.01 * safezoneH,
2.0 / 16 * safezoneW,
0.3 / 9 * safezoneH
];
_ctrl ctrlCommit 0;

View File

@ -1,652 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2014-12-20 -->
<Project name="AGM">
<Package name="Interaction">
<Key ID="STR_AGM_Interaction_InteractionMenu">
<English>Interaction Menu</English>
<German>Interaktionsmenü</German>
<Spanish>Menú de interacción</Spanish>
<Polish>Menu interakcji</Polish>
<Czech>Menu interakce</Czech>
<French>Menu d'interaction</French>
<Russian>Меню взаимодействия</Russian>
<Hungarian>Interakció</Hungarian>
<Portuguese>Menu de Interação</Portuguese>
<Italian>Menù Interattivo</Italian>
</Key>
<Key ID="STR_AGM_Interaction_InteractionMenuSelf">
<English>Interaction Menu (Self)</English>
<German>Interaktionsmenü (Selbst)</German>
<Spanish>Menú de interacción (Propia)</Spanish>
<Polish>Menu interakcji (na siebie)</Polish>
<Czech>Menu interakce (vlastní)</Czech>
<French>Menu d'interaction (Perso)</French>
<Russian>Меню взаимодействия (с собой)</Russian>
<Hungarian>Interakció (saját) </Hungarian>
<Portuguese>Menu de Interação (Individual)</Portuguese>
<Italian>Menù Interattivo (Individuale)</Italian>
</Key>
<Key ID="STR_AGM_Interaction_OpenDoor">
<English>Open / Close Door</English>
<German>Tür öffnen / schließen</German>
<Spanish>Abrir / Cerrar puerta</Spanish>
<Polish>Otwórz / Zamknij drzwi</Polish>
<Czech>Otevřít / Zavřít dveře</Czech>
<French>Ouvrir / Fermer Portes</French>
<Russian>Открыть / Закрыть двери</Russian>
<Hungarian>Ajtó nyitás / zárás</Hungarian>
<Portuguese>Abrir / Fechar Porta</Portuguese>
<Italian>Apri / Chiudi la porta</Italian>
</Key>
<Key ID="STR_AGM_Interaction_LockDoor">
<English>Lock Door</English>
<German>Tür sperren</German>
<Spanish>Bloquear puerta</Spanish>
<French>Verrouiller Porte</French>
<Italian>Blocca la porta</Italian>
<Russian>Заблокировать дверь</Russian>
<Portuguese>Trancar Porta</Portuguese>
<Hungarian>Ajtó bezárása</Hungarian>
<Polish>Zablokuj drzwi</Polish>
<Czech>Zamknout dveře</Czech>
</Key>
<Key ID="STR_AGM_Interaction_UnlockDoor">
<English>Unlock Door</English>
<German>Tür entsperren</German>
<Spanish>Desbloquear puerta</Spanish>
<French>Déverrouiller Porte</French>
<Italian>Sblocca la porta</Italian>
<Russian>Разблокировать дверь</Russian>
<Portuguese>Destrancar Porta</Portuguese>
<Hungarian> Zár kinyitása</Hungarian>
<Polish>Odblokuj drzwi</Polish>
<Czech>Odemknout dveře</Czech>
</Key>
<Key ID="STR_AGM_Interaction_LockedDoor">
<English>Locked Door</English>
<German>Tür gesperrt</German>
<Spanish>Puerta bloqueada</Spanish>
<French>Porte Verrouillée</French>
<Italian>Porta bloccata</Italian>
<Russian>Дверь заблокирована</Russian>
<Portuguese>Porta Trancada</Portuguese>
<Hungarian>Zárt ajtó</Hungarian>
<Polish>Zablokowano drzwi</Polish>
<Czech>Zamčené dveře</Czech>
</Key>
<Key ID="STR_AGM_Interaction_UnlockedDoor">
<English>Unlocked Door</English>
<German>Tür entsperrt</German>
<Spanish>Puerta desbloqueada</Spanish>
<French>Porte Déverrouillée</French>
<Italian>Porta sbloccata</Italian>
<Russian>Дверь разблокирована</Russian>
<Portuguese>Porta Destrancada</Portuguese>
<Hungarian>Nyitott ajtó</Hungarian>
<Polish>Odblokowano drzwi</Polish>
<Czech>Odemčené dveře</Czech>
</Key>
<Key ID="STR_AGM_Interaction_JoinGroup">
<English>Join group</English>
<German>Gruppe beitreten</German>
<Spanish>Unirse al grupo</Spanish>
<Polish>Dołącz do grupy</Polish>
<Czech>Přidat se do skupiny</Czech>
<French>Rejoindre Groupe</French>
<Russian>Вступить в группу</Russian>
<Hungarian>Csatlakozás</Hungarian>
<Portuguese>Unir-se ao grupo</Portuguese>
<Italian>Unisciti alla squadra</Italian>
</Key>
<Key ID="STR_AGM_Interaction_LeaveGroup">
<English>Leave Group</English>
<German>Gruppe verlassen</German>
<Spanish>Dejar grupo</Spanish>
<Polish>Opuść grupę</Polish>
<Czech>Odejít ze skupiny</Czech>
<French>Quitter Groupe</French>
<Russian>Выйти из группы</Russian>
<Hungarian>Csoport elhagyása</Hungarian>
<Portuguese>Deixar grupo</Portuguese>
<Italian>Lascia la squadra</Italian>
</Key>
<Key ID="STR_AGM_Interaction_BecomeLeader">
<English>Become Leader</English>
<German>Grp.-führung übern.</German>
<Spanish>Asumir el liderazgo</Spanish>
<Polish>Przejmij dowodzenie</Polish>
<Czech>Stát se velitelem</Czech>
<French>Devenir Leader</French>
<Russian>Стать лидером</Russian>
<Hungarian>Vezetés átvétele</Hungarian>
<Portuguese>Tornar-se Líder</Portuguese>
<Italian>Prendi il comando</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Dance">
<English>DANCE!</English>
<German>TANZEN!</German>
<Spanish>BAILAR!</Spanish>
<Polish>TAŃCZ!</Polish>
<Czech>TANČIT!</Czech>
<French>Danse!</French>
<Russian>ТАНЦЕВАТЬ!</Russian>
<Hungarian>TÁNC!</Hungarian>
<Portuguese>DANCE!</Portuguese>
<Italian>Balla!</Italian>
</Key>
<Key ID="STR_AGM_Interaction_StopDancing">
<English>Stop Dancing</English>
<German>Tanzen abbrechen</German>
<Spanish>Dejar de bailar</Spanish>
<Polish>Przestań tańczyć</Polish>
<Czech>Přestat tancovat</Czech>
<French>Arrêter de danser</French>
<Russian>Прекратить танцевать</Russian>
<Hungarian>Tánc abbahagyása</Hungarian>
<Portuguese>Parar de dançar</Portuguese>
<Italian>Smetti di ballare</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Back">
<English>&lt;&lt; Back</English>
<German>&lt;&lt; Zurück</German>
<Spanish>&lt;&lt; Atrás</Spanish>
<Polish>&lt;&lt; Wstecz</Polish>
<Czech>&lt;&lt; Zpět</Czech>
<French>&lt;&lt; Retour</French>
<Russian>&lt;&lt; Назад</Russian>
<Hungarian>&lt;&lt; Vissza</Hungarian>
<Portuguese>&lt;&lt; Voltar</Portuguese>
<Italian>&lt;&lt; Indietro</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures">
<English>Gestures &gt;&gt;</English>
<German>Gesten &gt;&gt;</German>
<Spanish>Gestos &gt;&gt;</Spanish>
<Polish>Gesty &gt;&gt;</Polish>
<Czech>Gesta &gt;&gt;</Czech>
<French>Signaux &gt;&gt;</French>
<Russian>Жесты &gt;&gt;</Russian>
<Hungarian>Kézjelek &gt;&gt;</Hungarian>
<Portuguese>Gestos &gt;&gt;</Portuguese>
<Italian>Segnali gestuali &gt;&gt;</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Attack">
<English>Attack</English>
<German>Angreifen</German>
<Spanish>Atacar</Spanish>
<Polish>Do ataku</Polish>
<Czech>Zaútočit</Czech>
<French>Attaquer</French>
<Russian>Атаковать</Russian>
<Hungarian>Támadás</Hungarian>
<Portuguese>Atacar</Portuguese>
<Italian>Attaccare</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Advance">
<English>Advance</English>
<German>Vordringen</German>
<Spanish>Avanzar</Spanish>
<Polish>Naprzód</Polish>
<Czech>Postoupit</Czech>
<French>Avancer</French>
<Russian>Продвигаться</Russian>
<Hungarian>Előre</Hungarian>
<Portuguese>Avançar</Portuguese>
<Italian>Avanzare</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Go">
<English>Go</English>
<German>Los</German>
<Spanish>Adelante</Spanish>
<Polish>Szybko</Polish>
<Czech>Jít</Czech>
<French>Aller</French>
<Russian>Идти</Russian>
<Hungarian>Mozgás</Hungarian>
<Portuguese>Mover-se</Portuguese>
<Italian>Muoversi</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Follow">
<English>Follow</English>
<German>Folgen</German>
<Spanish>Seguirme</Spanish>
<Polish>Za mną</Polish>
<Czech>Následovat</Czech>
<French>Suivre</French>
<Russian>Следовать</Russian>
<Hungarian>Utánam</Hungarian>
<Portuguese>Seguir</Portuguese>
<Italian>Seguire</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Point">
<English>Point</English>
<German>Zeigen</German>
<Spanish>Señalar</Spanish>
<Polish>Wskazać</Polish>
<Czech>Ukázat</Czech>
<French>Pointer</French>
<Russian>Точка</Russian>
<Hungarian>Mutat</Hungarian>
<Portuguese>Apontar</Portuguese>
<Italian>Puntare a</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Up">
<English>Up</English>
<German>Aufstehen</German>
<Spanish>Arriba</Spanish>
<Polish>Do góry</Polish>
<Czech>Vztyk</Czech>
<French>Debout</French>
<Russian>Вверх</Russian>
<Hungarian>Fel</Hungarian>
<Portuguese>Acima</Portuguese>
<Italian>Alzarsi</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Cover">
<English>Cover</English>
<German>Deckung</German>
<Spanish>Cubrirse</Spanish>
<Polish>Do osłony</Polish>
<Czech>Krýt se</Czech>
<French>A couvert</French>
<Russian>Укрыться</Russian>
<Hungarian>Fedezékbe</Hungarian>
<Portuguese>Proteger-se</Portuguese>
<Italian>Copertura</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Cease_Fire">
<English>Cease Fire</English>
<German>Feuer einstellen</German>
<Spanish>Alto el fuego</Spanish>
<Polish>Wstrzymać ogień</Polish>
<Czech>Zastavit palbu</Czech>
<French>Halte au feu</French>
<Russian>Прекратить огонь</Russian>
<Hungarian>Tüzet szüntess</Hungarian>
<Portuguese>Cessar Fogo</Portuguese>
<Italian>Cessare il Fuoco</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Freeze">
<English>Freeze</English>
<German>Keine Bewegung</German>
<Spanish>Alto</Spanish>
<Polish>Stać</Polish>
<Czech>Stát</Czech>
<French>Halte</French>
<Russian>Замереть</Russian>
<Hungarian>Állj</Hungarian>
<Portuguese>Alto</Portuguese>
<Italian>Fermi</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Hi">
<English>Hi</English>
<German>Hallo</German>
<Spanish>Hola</Spanish>
<Polish>Witaj</Polish>
<Czech>Ahoj</Czech>
<French>Salut</French>
<Russian>Привет</Russian>
<Hungarian>Szeva</Hungarian>
<Portuguese>Olá</Portuguese>
<Italian>Ciao</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_Yes">
<English>Yes</English>
<German>Ja</German>
<Spanish>Si</Spanish>
<Polish>Tak</Polish>
<Czech>Ano</Czech>
<French>Oui</French>
<Russian>Да</Russian>
<Hungarian>Igen</Hungarian>
<Portuguese>Sim</Portuguese>
<Italian>Si</Italian>
</Key>
<Key ID="STR_AGM_Interaction_Gestures_No">
<English>No</English>
<German>Nein</German>
<Spanish>No</Spanish>
<Polish>Nie</Polish>
<Czech>Ne</Czech>
<French>Non</French>
<Russian>Нет</Russian>
<Hungarian>Nem</Hungarian>
<Portuguese>Não</Portuguese>
<Italian>No</Italian>
</Key>
<Key ID="STR_AGM_Interaction_WeaponOnBack">
<English>Put weapon on back</English>
<German>Waffe wegstecken</German>
<Spanish>Arma a la espalda</Spanish>
<Polish>Umieść broń na plecach</Polish>
<Czech>Dát zbraň na záda</Czech>
<French>Arme à la bretelle</French>
<Russian>Повесить оружие на спину</Russian>
<Hungarian>Fegyvert hátra</Hungarian>
<Portuguese>Colocar arma nas costas</Portuguese>
<Italian>Metti l'arma in spalla</Italian>
</Key>
<Key ID="STR_AGM_Interaction_TapShoulder">
<English>Tap Shoulder</English>
<German>Auf Schulter klopfen</German>
<Spanish>Tocar el hombro</Spanish>
<Polish>Klepnij w ramię</Polish>
<Czech>Poklepat na rameno</Czech>
<French>Taper sur l'épaule</French>
<Russian>Похлопать по плечу</Russian>
<Hungarian>Vállveregetés</Hungarian>
<Portuguese>Tocar ombro</Portuguese>
<Italian>Dai un colpetto</Italian>
</Key>
<Key ID="STR_AGM_Interaction_YouWereTapped">
<English>You were tapped on the shoulder.</English>
<German>Dir wurde auf die Schulter geklopft</German>
<Spanish>Te tocaron el hombro.</Spanish>
<French>On te tape sur l'épaule.</French>
<Polish>Zostałeś klepnięty po ramieniu</Polish>
<Hungarian>Vállonveregettek</Hungarian>
<Czech>Někdo tě poklepal na rameno.</Czech>
<Russian>Вас похлопали по плечу</Russian>
<Portuguese>Você foi tocado no ombro.</Portuguese>
<Italian>Ti è stato dato un colpetto sulla spalla</Italian>
</Key>
<Key ID="STR_AGM_Interaction_CancelSelection">
<English>Cancel</English>
<German>Abbrechen</German>
<Spanish>Cancelar</Spanish>
<Polish>Anuluj</Polish>
<French>Annuler</French>
<Czech>Zrušit</Czech>
<Italian>Annulla</Italian>
<Russian>Отменить</Russian>
<Portuguese>Cancelar</Portuguese>
<Hungarian>Mégse</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_MakeSelection">
<English>Select</English>
<German>Wählen</German>
<Spanish>Seleccionar</Spanish>
<Polish>Wybierz</Polish>
<French>Sélectionner</French>
<Czech>Zvolit</Czech>
<Italian>Seleziona</Italian>
<Russian>Выбрать</Russian>
<Portuguese>Selecionar</Portuguese>
<Hungarian>Kiválaszt</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_SendAway">
<English>Go Away!</English>
<German>Geh Weg!</German>
<Spanish>Aléjate!</Spanish>
<Polish>Odejdź!</Polish>
<Czech>Jděte pryč!</Czech>
<French>Allez-vous-en!</French>
<Russian>Уходите отсюда!</Russian>
<Hungarian>Tűnés!</Hungarian>
<Portuguese>Vá Embora!</Portuguese>
<Italian>Via di qui!</Italian>
</Key>
<Key ID="STR_AGM_Interaction_GetDown">
<English>Get Down!</English>
<German>Auf Den Boden!</German>
<Spanish>Al suelo!</Spanish>
<Polish>Padnij!</Polish>
<Czech>K zemi!</Czech>
<French>A terre!</French>
<Hungarian>A földre!</Hungarian>
<Russian>Ложись!</Russian>
<Portuguese>Abaixe-se!</Portuguese>
<Italian>A Terra!</Italian>
</Key>
<Key ID="STR_AGM_Interaction_TeamManagement">
<English>Team Management &gt;&gt;</English>
<German>Team Management &gt;&gt;</German>
<Spanish>Gestión de equipo &gt;&gt;</Spanish>
<French>Gestion d'équipe &gt;&gt;</French>
<Polish>Zarządzanie oddziałem &gt;&gt;</Polish>
<Czech>Správa týmu &gt;&gt;</Czech>
<Russian>Управление группой &gt;&gt;</Russian>
<Portuguese>Gerenciamento de Equipe &gt;&gt;</Portuguese>
<Italian>Organizzazione Squadra &gt;&gt;</Italian>
<Hungarian>Csapat kezelés &gt;&gt;</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_TeamRED">
<English>Red</English>
<German>Rot</German>
<Spanish>Rojo</Spanish>
<French>Rouge</French>
<Polish>Czerwony</Polish>
<Czech>Červený</Czech>
<Russian>Красный</Russian>
<Portuguese>Vermelha</Portuguese>
<Italian>Rosso</Italian>
<Hungarian>Piros</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_TeamGREEN">
<English>Green</English>
<German>Grün</German>
<Spanish>Verde</Spanish>
<French>Vert</French>
<Polish>Zielony</Polish>
<Czech>Zelený</Czech>
<Russian>Зеленый</Russian>
<Portuguese>Verde</Portuguese>
<Italian>Verde</Italian>
<Hungarian>Zöld</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_TeamBLUE">
<English>Blue</English>
<German>Blau</German>
<Spanish>Azul</Spanish>
<French>Bleu</French>
<Polish>Niebieski</Polish>
<Czech>Modrý</Czech>
<Russian>Синий</Russian>
<Portuguese>Azul</Portuguese>
<Italian>Blu</Italian>
<Hungarian>Kék</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_TeamYELLOW">
<English>Yellow</English>
<German>Gelb</German>
<Spanish>Amarillo</Spanish>
<French>Jaune</French>
<Polish>Żółty</Polish>
<Czech>Žlutý</Czech>
<Russian>Желтый</Russian>
<Portuguese>Amarela</Portuguese>
<Italian>Giallo</Italian>
<Hungarian>Sárga</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_JoinTeamRed">
<English>Join Team Red</English>
<German>Team Rot beitreten</German>
<Spanish>Unirse al equipo rojo</Spanish>
<French>Rejoindre Rouge</French>
<Polish>Dołącz do drużyny czerwonej</Polish>
<Czech>Připojit do Červeného Týmu</Czech>
<Russian>Присоединиться к красной группе</Russian>
<Portuguese>Unir-se à Equipe Vermelha</Portuguese>
<Italian>Entra nella Squadra Rossa</Italian>
<Hungarian>Csatlakozás a piros csapathoz</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_JoinTeamGreen">
<English>Join Team Green</English>
<German>Team Grün beitreten</German>
<Spanish>Unirse al equipo verde</Spanish>
<French>Rejoindre Verte</French>
<Polish>Dołącz do drużyny zielonej</Polish>
<Czech>Připojit do Zeleného Týmu</Czech>
<Russian>Присоединиться к зеленой группе</Russian>
<Portuguese>Unir-se à Equipe Verde</Portuguese>
<Italian>Entra nella Squadra Verde</Italian>
<Hungarian>Csatlakozás a zöld csapathoz</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_JoinTeamBlue">
<English>Join Team Blue</English>
<German>Team Blau beitreten</German>
<Spanish>Unirse al equipo azul</Spanish>
<French>Rejoindre Bleue</French>
<Polish>Dołącz do drużyny niebieskiej</Polish>
<Czech>Připojit do Modrého Týmu</Czech>
<Russian>Присоединиться к синей группе</Russian>
<Portuguese>Unir-se à Equipe Azul</Portuguese>
<Italian>Entra nella Squadra Blu</Italian>
<Hungarian>Csatlakozás a kék csapathoz</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_JoinTeamYellow">
<English>Join Team Yellow</English>
<German>Team Gelb beitreten</German>
<Spanish>Unirse al equipo amarillo</Spanish>
<French>Rejoindre Jaune</French>
<Polish>Dołącz do drużyny żółtej</Polish>
<Czech>Připojit do Žlutého Týmu</Czech>
<Russian>Присоединиться к желтой группе</Russian>
<Portuguese>Unir-se à Equipe Amarela</Portuguese>
<Italian>Entra nella Squadra Gialla</Italian>
<Hungarian>Csatlakozás a sárga csapathoz</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_JoinedTeam">
<English>You joined Team %1</English>
<German>Du bist Team %1 beigetreten</German>
<Spanish>Te has unido al equipo %1</Spanish>
<French>Tu as rejoint l'équipe %1</French>
<Polish>Dołączyłeś do drużyny %1</Polish>
<Czech>Připojil ses do Týmu %1</Czech>
<Russian>Вы присоединились к группе %1</Russian>
<Portuguese>Você uniu-se à Equipe %1</Portuguese>
<Italian>Sei entrato nella Squadra %1</Italian>
<Hungarian>Csatlakoztál a %1 csapathoz</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_LeaveTeam">
<English>Leave Team</English>
<German>Team verlassen</German>
<Spanish>Dejar equipo</Spanish>
<French>Quitter l'équipe</French>
<Polish>Opuść drużynę</Polish>
<Czech>Opustit tým</Czech>
<Russian>Покинуть группу</Russian>
<Portuguese>Deixar Equipe</Portuguese>
<Italian>Lascia la Squadra</Italian>
<Hungarian>Csapat elhagyása</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_LeftTeam">
<English>You left the Team</English>
<German>Du hast das Team verlassen</German>
<Spanish>Has dejado el equipo</Spanish>
<French>Tu as quitté l'équipe</French>
<Polish>Opuściłeś drużynę</Polish>
<Czech>Opustil si tým</Czech>
<Russian>Вы покинули группу</Russian>
<Portuguese>Você deixou a Equipe</Portuguese>
<Italian>Hai lasciato la squadra</Italian>
<Hungarian>Elhagytad a csapatot</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_Pardon">
<English>Pardon</English>
<German>Begnadigen</German>
<Spanish>Perdonar</Spanish>
<Polish>Przebacz</Polish>
<French>Pardon</French>
<Czech>Pardon</Czech>
<Russian>Извините</Russian>
<Portuguese>Perdão</Portuguese>
<Italian>Perdona</Italian>
<Hungarian>Megbocsátás</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_FlowMenu">
<English>Flow Menu</English>
<German>Mausradmenü</German>
<Polish>Flow Menu</Polish>
<Spanish>Menú desplegable</Spanish>
<French>Menu Déroulant</French>
<Czech>Flow Menu</Czech>
<Russian>Выпадающее меню</Russian>
<Portuguese>Flow Menu</Portuguese>
<Italian>Menù a Scorrimento</Italian>
<Hungarian>Legördülő menü</Hungarian>
</Key>
<Key ID="STR_AGM_Interaction_ScrollHint">
<English>Scroll</English>
<German>Scrollen</German>
<Polish>Przewiń</Polish>
<French>Défilement</French>
<Spanish>Desplazar</Spanish>
<Russian>Пролистать</Russian>
<Portuguese>Rolar</Portuguese>
<Italian>Scorri</Italian>
<Hungarian>Görgetés</Hungarian>
<Czech>Otáčení</Czech>
</Key>
<Key ID="STR_AGM_Interaction_ModifierKey">
<English>Modifier Key</English>
<German>Modifikator</German>
<Polish>Modyfikator</Polish>
<French>Modifier la touche</French>
<Spanish>Tecla modificadora</Spanish>
<Russian>клавиша-модификатор</Russian>
<Portuguese>Tecla Modificadora</Portuguese>
<Italian>Modifica Tasto</Italian>
<Hungarian>Módosító billentyű</Hungarian>
<Czech>Modifikátor</Czech>
</Key>
<Key ID="STR_AGM_Interaction_NotInRange">
<English>Not in Range</English>
<German>Außer Reichweite</German>
<French>Hors de portée.</French>
<Spanish>Fuera de rango</Spanish>
<Russian>Слишком далеко</Russian>
<Portuguese>Fora do Alcançe</Portuguese>
<Hungarian>Hatótávolságon kívül</Hungarian>
<Polish>Poza zasięgiem</Polish>
<Czech>Mimo dosah</Czech>
</Key>
<Key ID="STR_AGM_Interaction_AutoCloseMenu">
<English>Close Menu on Key Release</English>
<German>Menü nach Loslassen schließen</German>
<Polish>Zamknij menu automatycznie</Polish>
<French>Fermer le menu en relâchant la touche</French>
<Spanish>Cerrar menú al soltar la tecla</Spanish>
<Hungarian>Menü bezárása a billentyű elengedésekor</Hungarian>
<Russian>Закрывать меню при отжатии клавиши</Russian>
<Czech>Menu interakce (Na držení)</Czech>
</Key>
<Key ID="STR_AGM_Interaction_AutoCenterCursor">
<English>Auto Center Cursor</English>
<German>Mauszeiger automatisch zentrieren</German>
<Spanish>Auto-centrar cursor</Spanish>
<Polish>Automatycznie centruj kursor </Polish>
<Czech>Vycentrování kurzoru</Czech>
<Hungarian>Egér auto-centrírozása</Hungarian>
<Russian>Автоцентрирование курсора</Russian>
</Key>
<Key ID="STR_AGM_Interaction_Equipment">
<English>Equipment &gt;&gt;</English>
<German>Ausrüstung &gt;&gt;</German>
<Spanish>Equipamiento &gt;&gt;</Spanish>
<French>Équipment &gt;&gt;</French>
<Polish>Ekwipunek &gt;&gt;</Polish>
<Czech>Vybavení &gt;&gt;</Czech>
<Hungarian>Felszerelés &gt;&gt;</Hungarian>
<Russian>Снаряжение &gt;&gt;</Russian>
</Key>
<Key ID="STR_AGM_Interaction_Push">
<English>Push</English>
<German>Schieben</German>
<Spanish>Empujar</Spanish>
<French>Pousser</French>
<Polish>Pchnij</Polish>
<Czech>Odstrčit</Czech>
<Hungarian>Tolás</Hungarian>
<Russian>Толкать</Russian>
</Key>
<Key ID="STR_AGM_Interaction_Interact">
<English>Interact</English>
<German>Interagiere</German>
<Czech>Interakce</Czech>
<Russian>Взаимодействовать</Russian>
<Polish>Interakcja</Polish>
<Spanish>Interactuar</Spanish>
</Key>
</Package>
</Project>

View File

@ -114,7 +114,7 @@ class CfgWeapons {
//class arifle_MX_F: arifle_MX_Base_F {}; //class arifle_MX_F: arifle_MX_Base_F {};
//class arifle_MX_GL_F: arifle_MX_Base_F {}; //class arifle_MX_GL_F: arifle_MX_Base_F {};
// MX machine gun // MX sniper rifle
class arifle_MXM_F: arifle_MX_Base_F { class arifle_MXM_F: arifle_MX_Base_F {
class Single: Single { class Single: Single {
minRange = 120; // 2; minRange = 120; // 2;
@ -141,11 +141,13 @@ class CfgWeapons {
}; };
}; };
// MX sniper rifle // MX machine gun
class arifle_MX_SW_F: arifle_MX_Base_F { class arifle_MX_SW_F: arifle_MX_Base_F {
aiDispersionCoefY = 24.0; aiDispersionCoefY = 24.0;
aiDispersionCoefX = 21.0; aiDispersionCoefX = 21.0;
modes[] += {"AGM_Burst_far"}; // Shit is still broken
//modes[] += {"AGM_Burst_far"};
modes[] = {"Single","manual","close","short","medium","far_optic1","far_optic2","AGM_Burst_far"};
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
minRange = 120; // 2; minRange = 120; // 2;

302
addons/aircraft/CfgAmmo.hpp Normal file
View File

@ -0,0 +1,302 @@
class CfgAmmo {
class BulletBase;
class B_20mm: BulletBase {
deflecting = 3;
hit = 100;
indirectHit = 10;
indirectHitRange = 2;
model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
};
class SubmunitionBullet;
class B_65x39_Minigun_Caseless: SubmunitionBullet {
hit = 10;
indirectHit = 0;
indirectHitRange = 0;
caliber = 1;
deflecting = 5;
typicalSpeed = 850;
};
class B_762x51_Minigun_Tracer_Red: SubmunitionBullet {
hit = 12;
indirectHit = 0;
indirectHitRange = 0;
model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
caliber = 1.6;
deflecting = 5;
typicalSpeed = 850;
};
class M_Titan_AA;
class M_Zephyr: M_Titan_AA {
proxyShape = "\A3\Weapons_F\Ammo\Missile_AA_02_F.p3d";
model = "\A3\Weapons_F\Ammo\Missile_AA_02_fly_F.p3d";
airFriction = 0.078;
sideAirFriction = 0.18;
maneuvrability = 24;
class CamShakeFire {};
class CamShakePlayerFire {};
};
class M_Zephyr_Mi06: M_Zephyr {
maverickWeaponIndexOffset = 6;
};
class MissileBase;
class M_Air_AA: MissileBase {
model = "\A3\Weapons_F\Ammo\Missile_AT_02_fly_F";
proxyShape = "\A3\Weapons_F\Ammo\Missile_AT_02_F";
hit = 280;
indirectHit = 85;
indirectHitRange = 10;
maneuvrability = 27;
simulationStep = 0.002;
airLock = 1;
irLock = 1;
cost = 1500;
//maxSpeed = 2400;
timeToLive = 40;
airFriction = 0.05;
sideAirFriction = 0.1;
trackOversteer = 1;
trackLead = 1;
initTime = 0;
thrustTime = 12;
thrust = 340;
fuseDistance = 500;
weaponLockSystem = "2 + 16";
maxControlRange = 8000;
class CamShakeExplode {};
class CamShakeHit {};
class CamShakeFire {};
class CamShakePlayerFire {};
};
class Missile_AA_04_F: MissileBase {
hit = 800;
indirectHit = 60;
indirectHitRange = 12;
airLock = 2;
irLock = 1;
laserLock = 0;
nvLock = 0;
weaponLockSystem = "2 + 16";
cmimmunity = 0.8;
initTime = 0;
thrust = 380;
thrustTime = 9.5;
airFriction = 0.04;
sideAirFriction = 0.08;
//maxSpeed = 2600;
maneuvrability = 14;
simulationStep = 0.002;
fuseDistance = 500;
timeToLive = 19;
trackLead = 1;
trackOversteer = 1;
};
class Gatling_30mm_HE_Plane_CAS_01_F: BulletBase {
model = "\A3\Weapons_f\Data\bullettracer\tracer_red.p3d";
cost = 20;
hit = 80;
indirectHit = 12;
indirectHitRange = 3;
caliber = 1.4;
explosive = 0.6;
airlock = 1;
deflecting = 3;
airFriction = -0.00042;
typicalSpeed = 960;
visibleFire = 32;
audibleFire = 32;
visibleFireTime = 3;
fuseDistance = 3;
tracerScale = 2.5;
tracerStartTime = 0.02;
tracerEndTime = 4.7;
multiSoundHit[] = {"soundHit1",0.2,"soundHit2",0.2,"soundHit3",0.2,"soundHit4",0.1,"soundHit5",0.15,"soundHit6",0.15};
soundFly[] = {"A3\Sounds_F\weapons\Explosion\cannon_fly",1,1,50};
explosionSoundEffect = "DefaultExplosion";
explosionEffects = "ExploAmmoExplosion";
craterEffects = "ExploAmmoCrater";
soundHit1[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_1",3.16228,1,1600};
soundHit2[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_2",3.16228,1,1600};
soundHit3[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_3",3.16228,1,1600};
soundHit4[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_4",3.16228,1,1600};
soundHit5[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_5",3.16228,1,1600};
soundHit6[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_6",3.16228,1,1600};
class CamShakeExplode {};
class CamShakeHit {};
class CamShakeFire {};
class CamShakePlayerFire {};
};
class ACE_Gatling_30mm_HE_Plane_CAS_01_Deploy: Gatling_30mm_HE_Plane_CAS_01_F {
simulation = "shotSubmunitions";
triggerTime = 0;
submunitionAmmo = "ACE_Gatling_30mm_HE_Plane_CAS_01_Sub";
submunitionConeType[] = {"custom", {{0,0}, {0,0}, {0,0}} };
};
class ACE_Gatling_30mm_HE_Plane_CAS_01_Sub: Gatling_30mm_HE_Plane_CAS_01_F {
};
class Cannon_30mm_HE_Plane_CAS_02_F: Gatling_30mm_HE_Plane_CAS_01_F {
model = "\A3\Weapons_f\Data\bullettracer\tracer_green.p3d";
hit = 70;
indirectHit = 11;
indirectHitRange = 3;
caliber = 2;
explosive = 0.6;
};
class Missile_AGM_02_F: MissileBase {
model = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_02_fly_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_02_F.p3d";
maverickWeaponIndexOffset = 2;
cost = 1500;
hit = 2100;
indirectHit = 85;
indirectHitRange = 8;
manualControl = 0;
maxControlRange = 8000;
airLock = 0;
irLock = 1;
laserLock = 0;
nvLock = 0;
weaponLockSystem = "2 + 16";
cmimmunity = 0.8;
initTime = 0;
thrust = 240;
thrustTime = 5;
airFriction = 0.05;
sideAirFriction = 0.1;
maxSpeed = 828;
maneuvrability = 27;
simulationStep = 0.002;
fuseDistance = 500;
timeToLive = 40;
trackLead = 1;
trackOversteer = 1;
craterEffects = "AAMissileCrater";
effectsMissile = "missile3";
explosionEffects = "AAMissileExplosion";
muzzleEffect = "BIS_fnc_effectFiredHeliRocket";
whistleDist = 20;
class CamShakeExplode {};
class CamShakeHit {};
class CamShakeFire {};
class CamShakePlayerFire {};
};
class LaserBombCore;
class Bomb_04_F: LaserBombCore {
model = "\A3\Weapons_F_EPC\Ammo\Bomb_04_fly_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Bomb_04_F.p3d";
maverickWeaponIndexOffset = 8;
hit = 6000;
indirectHit = 1400;
indirectHitRange = 15;
nvLock = 1;
weaponLockSystem = "2 + 16 + 4";
maneuvrability = 20;
fuseDistance = 35;
trackLead = 0.95;
trackOversteer = 1;
craterEffects = "BombCrater";
explosionEffects = "BombExplosion";
explosionSoundEffect = "DefaultExplosion";
explosionTime = 2;
multiSoundHit[] = {"soundHit1",0.2,"soundHit2",0.2,"soundHit3",0.2,"soundHit4",0.2,"soundHit5",0.2};
soundHit1[] = {"\A3\Sounds_F\weapons\Explosion\expl_big_1",2.51189,1,2400};
soundHit2[] = {"\A3\Sounds_F\weapons\Explosion\expl_big_2",2.51189,1,2400};
soundHit3[] = {"\A3\Sounds_F\weapons\Explosion\expl_big_3",2.51189,1,2400};
soundHit4[] = {"\A3\Sounds_F\weapons\Explosion\expl_shell_1",2.51189,1,2400};
soundHit5[] = {"\A3\Sounds_F\weapons\Explosion\expl_shell_2",2.51189,1,2400};
whistleDist = 24;
};
class Rocket_04_HE_F: MissileBase {
model = "\A3\Weapons_F_EPC\Ammo\Rocket_04_HE_fly_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Rocket_04_HE_F.p3d";
maverickWeaponIndexOffset = 12;
cost = 500;
hit = 210;
indirectHit = 55;
indirectHitRange = 15;
manualControl = 0;
maxControlRange = 8000;
airLock = 0;
irLock = 1;
laserLock = 0;
nvLock = 0;
weaponLockSystem = 0;
cmimmunity = 1;
initTime = 0.002;
thrust = 1600;
thrustTime = 0.7;
airFriction = 0.0046;
sideAirFriction = 0.005;
maxSpeed = 610;
maneuvrability = 0;
fuseDistance = 50;
timeToLive = 60;
effectsMissileInit = "MissileDAR1";
whistleDist = 30;
class CamShakeExplode {};
class CamShakeHit {};
class CamShakeFire {};
class CamShakePlayerFire {};
};
class Rocket_04_AP_F: Rocket_04_HE_F {
model = "\A3\Weapons_F_EPC\Ammo\Rocket_04_AP_fly_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Rocket_04_AP_F.p3d";
maverickWeaponIndexOffset = 19;
hit = 400;
indirectHit = 20;
indirectHitRange = 10;
};
class Missile_AA_03_F: Missile_AA_04_F {
model = "\A3\Weapons_F_EPC\Ammo\Missile_AA_03_fly_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Missile_AA_03_F.p3d";
maverickWeaponIndexOffset = 0;
hit = 900;
indirectHit = 50;
indirectHitRange = 15;
};
class Missile_AGM_01_F: Missile_AGM_02_F {
model = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_01_fly_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_01_F.p3d";
maverickWeaponIndexOffset = 2;
hit = 2200;
indirectHit = 90;
indirectHitRange = 10;
};
class Bomb_03_F: Bomb_04_F {
model = "\A3\Weapons_F_EPC\Ammo\Bomb_03_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Bomb_03_F.p3d";
maverickWeaponIndexOffset = 6;
hit = 6400;
indirectHit = 1400;
indirectHitRange = 16;
};
class Rocket_03_HE_F: Rocket_04_HE_F {
model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_HE_fly_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Rocket_03_HE_F.p3d";
maverickWeaponIndexOffset = 8;
};
class Rocket_03_AP_F: Rocket_04_AP_F {
model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_AP_fly_F.p3d";
proxyShape = "\A3\Weapons_F_EPC\Ammo\Rocket_03_AP_F.p3d";
maverickWeaponIndexOffset = 28;
};
class RocketBase;
};

View File

@ -0,0 +1,202 @@
class CfgMagazines {
class VehicleMagazine;
class 24Rnd_PG_missiles;
class 12Rnd_PG_missiles: 24Rnd_PG_missiles {
count = 12;
displayName = "$STR_A3_CfgMagazines_12Rnd_PG_missiles0";
displayNameShort = "$STR_A3_CfgMagazines_12Rnd_PG_missiles_dns";
descriptionShort = "$STR_A3_CfgMagazines_12Rnd_PG_missiles1";
};
class 12Rnd_missiles: VehicleMagazine {
scope = 2;
count = 12;
ammo = "M_AT";
displayName = "$STR_A3_CfgMagazines_24Rnd_PuG_missiles0";
displayNameShort = "$STR_A3_CfgMagazines_24Rnd_PuG_missiles_dns";
descriptionShort = "$STR_A3_CfgMagazines_24Rnd_PuG_missiles0";
initSpeed = 44;
maxLeadSpeed = 800;
nameSound = "rockets";
sound[] = {"A3\sounds_f\weapons\rockets\explosion_missile_01",1,1,1200};
reloadSound[] = {"",0.000316228,1};
};
//minigun magazines, muzzle velocities and tracercounts
class 200Rnd_65x39_Belt: VehicleMagazine {};
class 2000Rnd_65x39_Belt: 200Rnd_65x39_Belt {};
class 2000Rnd_65x39_Belt_Tracer_Red: 2000Rnd_65x39_Belt {
};
class 2000Rnd_65x39_Belt_Green: 2000Rnd_65x39_Belt {};
class 2000Rnd_65x39_Belt_Tracer_Green: 2000Rnd_65x39_Belt_Green {
tracersEvery = 1;
};
class 2000Rnd_65x39_Belt_Yellow: 2000Rnd_65x39_Belt {
tracersEvery = 1;
};
class 2000Rnd_65x39_Belt_Tracer_Yellow: 2000Rnd_65x39_Belt_Yellow {
tracersEvery = 1;
};
class 5000Rnd_762x51_Belt: 2000Rnd_65x39_Belt {
tracersEvery = 1;
count = 5000;
};
class 5000Rnd_762x51_Yellow_Belt: 5000Rnd_762x51_Belt {};
class 4000Rnd_762x51_M134 : 5000Rnd_762x51_Belt {
count = 4000;
tracersEvery = 1;
};
class 2000Rnd_762x51_M134 : 4000Rnd_762x51_M134 {
count = 2000;
tracersEvery = 1;
};
class 2Rnd_AAA_missiles: VehicleMagazine {
scope = 2;
displayName = "$STR_A3_CfgMagazines_2Rnd_AAA_missiles0";
displayNameShort = "$STR_A3_CfgMagazines_2Rnd_AAA_missiles_dns";
ammo = "M_Air_AA";
count = 2;
maxLeadSpeed = 950;
nameSound = "missiles";
};
class 2Rnd_AAA_missiles_MI02: 2Rnd_AAA_missiles {
ammo = "M_Air_AA_MI02";
};
class 4Rnd_AAA_missiles: 2Rnd_AAA_missiles {
displayName = "$STR_A3_CfgMagazines_4Rnd_AAA_missiles0";
displayNameShort = "$STR_A3_CfgMagazines_4Rnd_AAA_missiles_dns";
count = 4;
};
class 4Rnd_AAA_missiles_MI02: 4Rnd_AAA_missiles {
ammo = "M_Air_AA_MI02";
};
class 4Rnd_GAA_missiles: VehicleMagazine {
scope = 2;
displayName = "$STR_A3_CfgMagazines_4Rnd_GAA_missiles0";
displayNameShort = "$STR_A3_CfgMagazines_4Rnd_GAA_missiles_dns";
count = 4;
ammo = "M_Zephyr";
maxLeadSpeed = 950;
nameSound = "missiles";
};
class 300Rnd_20mm_shells: VehicleMagazine {
scope = 2;
displayName = "$STR_A3_CfgMagazines_300Rnd_20mm_shells0";
displayNameShort = "$STR_A3_CfgMagazines_300Rnd_20mm_shells_dns";
ammo = "B_20mm";
count = 300;
deflecting = 3;
maxLeadSpeed = 300;
tracersEvery = 5;
nameSound = "cannon";
};
class 1000Rnd_Gatling_30mm_Plane_CAS_01_F: VehicleMagazine {
scope = 2;
displayNameShort = "";
ammo = "ACE_Gatling_30mm_HE_Plane_CAS_01_Deploy";
count = 1170;
//count = 390;
//initSpeed = 3852;
maxLeadSpeed = 300;
nameSound = "cannon";
tracersEvery = 1;
};
class 2Rnd_Missile_AA_04_F: VehicleMagazine {
scope = 2;
displayNameShort = "$STR_A3_CFGMAGAZINES_4RND_AAA_MISSILES_DNS";
ammo = "Missile_AA_04_F";
count = 2;
maxLeadSpeed = 220;
nameSound = "missiles";
};
class 6Rnd_Missile_AGM_02_F: VehicleMagazine {
scope = 2;
displayNameShort = "$STR_A3_CFGMAGAZINES_38RND_80MM_ROCKETS_DNS";
ammo = "Missile_AGM_02_F";
count = 6;
maxLeadSpeed = 450;
nameSound = "missiles";
};
class 2Rnd_Missile_AGM_02_F: VehicleMagazine {
scope = 2;
displayNameShort = "$STR_A3_CFGMAGAZINES_38RND_80MM_ROCKETS_DNS";
ammo = "Missile_AGM_02_F";
count = 2;
maxLeadSpeed = 450;
nameSound = "missiles";
};
class 7Rnd_Rocket_04_HE_F: VehicleMagazine {
scope = 2;
displayNameShort = "$STR_A3_CFGMAGAZINES_40RND_20MM_G_BELT_DNS";
ammo = "Rocket_04_HE_F";
count = 7;
maxLeadSpeed = 200;
nameSound = "rockets";
};
class 7Rnd_Rocket_04_AP_F: 7Rnd_Rocket_04_HE_F {
displayNameShort = "$STR_A3_CFGMAGAZINES_TITAN_AP_DNS";
ammo = "Rocket_04_AP_F";
};
class 4Rnd_Bomb_04_F: VehicleMagazine {
scope = 2;
displayNameShort = "$STR_A3_CFGVEHICLES_BOMB0";
ammo = "Bomb_04_F";
count = 4;
maxLeadSpeed = 1000;
nameSound = "cannon";
};
class 500Rnd_Cannon_30mm_Plane_CAS_02_F: 1000Rnd_Gatling_30mm_Plane_CAS_01_F {
displayNameShort = "";
ammo = "Cannon_30mm_HE_Plane_CAS_02_F";
count = 500;
};
class 2Rnd_Missile_AA_03_F: 2Rnd_Missile_AA_04_F {
displayNameShort = "$STR_A3_CFGMAGAZINES_4RND_AAA_MISSILES_DNS";
ammo = "Missile_AA_03_F";
count = 2;
};
class 4Rnd_Missile_AGM_01_F: 6Rnd_Missile_AGM_02_F {
displayNameShort = "$STR_A3_CFGMAGAZINES_38RND_80MM_ROCKETS_DNS";
ammo = "Missile_AGM_01_F";
count = 4;
};
class 20Rnd_Rocket_03_HE_F: 7Rnd_Rocket_04_HE_F {
displayNameShort = "$STR_A3_CFGMAGAZINES_40RND_20MM_G_BELT_DNS";
ammo = "Rocket_03_HE_F";
count = 20;
};
class 20Rnd_Rocket_03_AP_F: 7Rnd_Rocket_04_AP_F {
displayNameShort = "$STR_A3_CFGMAGAZINES_TITAN_AP_DNS";
ammo = "Rocket_03_AP_F";
count = 20;
};
class 2Rnd_Bomb_03_F: 4Rnd_Bomb_04_F {
displayNameShort = "$STR_A3_CFGVEHICLES_BOMB0";
ammo = "Bomb_03_F";
count = 2;
};
class ACE_500Rnd_20mm_shells_Comanche: 300Rnd_20mm_shells {
displayName = "20mm";
displayNameShort = "20mm";
ammo = "B_20mm";
count = 500;
deflecting = 3;
initSpeed = 1030;
maxLeadSpeed = 300;
tracersEvery = 5;
};
};

View File

@ -0,0 +1,402 @@
class CfgVehicles {
class All {
class Turrets;
};
class AllVehicles: All {
class NewTurret {
class Turrets;
};
class CargoTurret;
};
class Air: AllVehicles {
class AnimationSources;
};
class Helicopter: Air {
class Turrets {
class MainTurret;
};
};
class Plane: Air {};
class ParachuteBase: Helicopter {
class Turrets;
};
class UAV: Plane {};
class Helicopter_Base_F: Helicopter {
class Turrets: Turrets {
class CopilotTurret;
};
};
class Helicopter_Base_H: Helicopter_Base_F {
class Turrets: Turrets {
class CopilotTurret;
};
//class UserActions;
};
class Heli_Light_01_base_F: Helicopter_Base_H {
lockDetectionSystem = 0;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
//class MFD {};
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
showHMD = 1;
};
};
};
class B_Heli_Light_01_F: Heli_Light_01_base_F {
/*class Turrets: Turrets {
class CopilotTurret: CopilotTurret {};
class CargoTurret_01: CargoTurret {};
class CargoTurret_02: CargoTurret_01 {};
class CargoTurret_03: CargoTurret_02 {};
class CargoTurret_04: CargoTurret_01 {};
};*/
};
class Heli_Light_01_armed_base_F: Heli_Light_01_base_F {
lockDetectionSystem = 0;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
//class MFD {};
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
};
};
};
class B_Heli_Light_01_armed_F: Heli_Light_01_armed_base_F {};
class Heli_Light_02_base_F: Helicopter_Base_H {
driverCanEject = 1;
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
magazines[] = {"2000Rnd_762x51_Belt_T_Green", "12Rnd_PG_missiles", "168Rnd_CMFlare_Chaff_Magazine"};
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
showHMD = 1;
};
};
};
class Plane_Base_F: Plane {
class Turrets {
class CopilotTurret;
};
};
class Heli_Attack_01_base_F: Helicopter_Base_F {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
//class MFD {};
class AnimationSources: AnimationSources {
class HitGlass1 {
source = "Hit";
hitpoint = "HitGlass1";
raw = 1;
};
class HitGlass2: HitGlass1 {
hitpoint = "HitGlass2";
};
class HitGlass3: HitGlass1 {
hitpoint = "HitGlass3";
};
class HitGlass4: HitGlass1 {
hitpoint = "HitGlass4";
};
class Gatling {
source = "revolving";
weapon = "ACE_gatling_20mm_Comanche";
};
class Hide {
source = "user";
animPeriod = 0;
initPhase = 0;
};
class Muzzle_flash {
source = "ammorandom";
weapon = "ACE_gatling_20mm_Comanche";
};
};
class Turrets: Turrets {
class MainTurret: MainTurret {
canEject = 1;
showHMD = 1;
weapons[] = {"ACE_gatling_20mm_Comanche","missiles_DAGR","missiles_ASRAAM"};
magazines[] = {"ACE_500Rnd_20mm_shells_Comanche","4Rnd_AAA_missiles","24Rnd_PG_missiles"};
};
};
};
class B_Heli_Attack_01_F: Heli_Attack_01_base_F {};
class Heli_Attack_02_base_F: Helicopter_Base_F {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
class Turrets: Turrets {
class MainTurret: MainTurret {
canEject = 1;
};
};
};
class Heli_Transport_01_base_F: Helicopter_Base_H {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
showHMD = 1;
};
class MainTurret: MainTurret {
magazines[] = {"2000Rnd_762x51_Belt_T_Red"};
canEject = 1;
};
class RightDoorGun: MainTurret {
magazines[] = {"2000Rnd_762x51_Belt_T_Red"};
canEject = 1;
};
};
/*class UserActions {
class DoorL1_Open {
available = 1;
condition = "((this doorPhase 'door_L') == 0) AND Alive(this) AND driver this != player AND gunner this != player";
};
class DoorR1_Open: DoorL1_Open {
condition = "((this doorPhase 'door_R') == 0) AND Alive(this) AND driver this != player AND gunner this != player";
};
class DoorL1_Close: DoorL1_Open {
condition = "((this doorPhase 'door_L') > 0) AND Alive(this) AND driver this != player AND gunner this != player";
};
class DoorR1_Close: DoorL1_Close {
condition = "((this doorPhase 'door_R') > 0) AND Alive(this) AND driver this != player AND gunner this != player";
};
};*/
};
class Heli_Transport_02_base_F: Helicopter_Base_H {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
//class MFD {};
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
showHMD = 1;
};
class CargoTurret_01: CargoTurret {};
class CargoTurret_02: CargoTurret_01 {};
};
/*class UserActions: UserActions {
class DoorL1_Open {
available = 1;
condition = "this animationPhase ""door_back_L"" < 0.5 AND Alive(this)";
};
class DoorR1_Open: DoorL1_Open {
condition = "this animationPhase ""door_back_R"" < 0.5 AND Alive(this)";
};
class DoorL1_Close: DoorL1_Open {
condition = "this animationPhase ""door_back_L"" > 0.5 AND Alive(this)";
};
class DoorR1_Close: DoorL1_Close {
condition = "this animationPhase ""door_back_R"" > 0.5 AND Alive(this)";
};
class CargoRamp_Open: DoorL1_Open {
userActionID = 52;
displayName = "$STR_ACE_Aircraft_OpenCargoRamp";
textToolTip = "$STR_ACE_Aircraft_OpenCargoRamp";
position = "action_cargoramp";
radius = 3.0;
condition = "this animationPhase ""cargoramp_open"" < 0.5 AND Alive(this)";
statement = "this animateDoor ['cargoramp_open', 1]";
};
class CargoRamp_Close: DoorL1_Close {
userActionID = 55;
displayName = "$STR_ACE_Aircraft_CloseCargoRamp";
textToolTip = "$STR_ACE_Aircraft_CloseCargoRamp";
position = "action_cargoramp";
radius = 3.0;
condition = "this animationPhase ""cargoramp_open"" > 0.5 AND Alive(this)";
statement = "this animateDoor ['cargoramp_open', 0]";
};
};*/
};
class I_Heli_Transport_02_F: Heli_Transport_02_base_F {};
class I_Heli_light_03_base_F: Helicopter_Base_F {
lockDetectionSystem = 0;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
//class MFD {};
weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher"};
magazines[] = {"5000Rnd_762x51_Yellow_Belt","24Rnd_missiles","168Rnd_CMFlare_Chaff_Magazine"};
class Turrets: Turrets {
class MainTurret: MainTurret {
canEject = 1;
showHMD = 1;
gunBeg = "commanderview";
gunEnd = "laserstart";
memoryPointGun = "laserstart";
stabilizedInAxes = 3;
weapons[] = {"Laserdesignator_mounted"};
soundServo[] = {"",0.01,1,30};
magazines[] = {"Laserbatteries"};
inGunnerMayFire = 1;
};
};
};
class I_Heli_light_03_F: I_Heli_light_03_base_F {
class Turrets: Turrets {
class MainTurret: MainTurret {};
class CargoTurret_01: CargoTurret {};
class CargoTurret_02: CargoTurret_01 {};
};
};
class I_Heli_light_03_unarmed_base_F: I_Heli_light_03_base_F {
//class MFD {};
};
class I_Heli_light_03_unarmed_F: I_Heli_light_03_unarmed_base_F {};
class Plane_CAS_01_base_F: Plane_Base_F {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
//class MFD {};
class Turrets;
#include <flightmodel_thunderbolt.hpp>
};
class Plane_CAS_02_base_F: Plane_Base_F {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
class Turrets;
#include <flightmodel_yak.hpp>
};
class Plane_Fighter_03_base_F: Plane_Base_F {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
class Turrets;
#include <flightmodel_alca.hpp>
};
class UAV_01_base_F: Helicopter_Base_F {
/*class Turrets: Turrets {
class MainTurret: MainTurret {};
};*/
};
class UAV_02_base_F: UAV {
class Turrets {
class MainTurret;
};
weapons[] = {};
magazines[] = {};
};
class UAV_02_CAS_base_F: UAV_02_base_F {
/*class Turrets: Turrets {
class MainTurret: MainTurret {};
};*/
weapons[] = {};
magazines[] = {};
};
class B_Heli_Transport_03_base_F: Helicopter_Base_H {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
};
//class MainTurret: MainTurret {};
class RightDoorGun: MainTurret {};
class CargoTurret_01: CargoTurret {};
class CargoTurret_02: CargoTurret_01 {};
};
};
class B_Heli_Transport_03_unarmed_base_F: B_Heli_Transport_03_base_F {
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
};
//class MainTurret: MainTurret {};
//class RightDoorGun: MainTurret {};
//class CargoTurret_01: CargoTurret {};
//class CargoTurret_02: CargoTurret_01 {};
};
};
class Heli_Transport_04_base_F: Helicopter_Base_H {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
};
class LoadmasterTurret: MainTurret {
canEject = 1;
};
};
};
class O_Heli_Transport_04_bench_F: Heli_Transport_04_base_F {
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
};
class LoadmasterTurret: LoadmasterTurret {
canEject = 1;
};
class CargoTurret_01: CargoTurret {};
class CargoTurret_02: CargoTurret_01 {};
class CargoTurret_03: CargoTurret_01 {};
class CargoTurret_04: CargoTurret_01 {};
class CargoTurret_05: CargoTurret_01 {};
class CargoTurret_06: CargoTurret_05 {};
class CargoTurret_07: CargoTurret_05 {};
class CargoTurret_08: CargoTurret_05 {};
};
};
class O_Heli_Transport_04_covered_F: Heli_Transport_04_base_F {
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
};
class LoadmasterTurret: LoadmasterTurret {
canEject = 1;
};
class CargoTurret_01: CargoTurret {};
class CargoTurret_02: CargoTurret_01 {};
};
};
};

View File

@ -0,0 +1,240 @@
class Mode_SemiAuto;
class Mode_Burst;
class Mode_FullAuto;
class CfgWeapons {
class MGunCore;
class MGun: MGunCore {};
class LMG_RCWS: MGun {};
// Manual Switching Of Flare Mode
class SmokeLauncher;
class CMFlareLauncher: SmokeLauncher {
modes[] = {"Single", "Burst", "AIBurst"};
class Single: Mode_SemiAuto {
reloadTime = 0.1;
};
class Burst: Mode_Burst {
displayName = "$STR_ACE_Aircraft_CMFlareLauncher_Burst_Name";
};
};
class CannonCore;
class gatling_20mm: CannonCore {
magazines[] = {"2000Rnd_20mm_shells","1000Rnd_20mm_shells","300Rnd_20mm_shells","ACE_500Rnd_20mm_shells_Comanche"};
class manual: CannonCore {
reloadTime = 0.023;
dispersion = 0.006;
};
class close: manual {};
class short: close {};
class medium: close {};
class far: close {};
};
class ACE_gatling_20mm_Comanche: gatling_20mm {
displayName = "XM301";
class close: close {
reloadTime = 0.04;
dispersion = 0.0022;
};
class far: far {
reloadTime = 0.04;
dispersion = 0.0022;
};
class manual: manual {
reloadTime = 0.04;
dispersion = 0.0022;
displayName = "XM301";
};
class medium: medium {
reloadTime = 0.04;
dispersion = 0.0022;
};
class short: short {
reloadTime = 0.04;
dispersion = 0.0022;
};
};
class LMG_Minigun: LMG_RCWS {
magazines[] = {"1000Rnd_65x39_Belt","1000Rnd_65x39_Belt_Green","1000Rnd_65x39_Belt_Tracer_Green","1000Rnd_65x39_Belt_Tracer_Red","1000Rnd_65x39_Belt_Tracer_Yellow","1000Rnd_65x39_Belt_Yellow","2000Rnd_65x39_Belt","2000Rnd_65x39_Belt_Green","2000Rnd_65x39_Belt_Tracer_Green","2000Rnd_65x39_Belt_Tracer_Green_Splash","2000Rnd_65x39_Belt_Tracer_Red","2000Rnd_65x39_Belt_Tracer_Yellow","2000Rnd_65x39_Belt_Tracer_Yellow_Splash","2000Rnd_65x39_Belt_Yellow","2000Rnd_762x51_Belt_T_Green","2000Rnd_762x51_Belt_T_Red","2000Rnd_762x51_Belt_T_Yellow","200Rnd_65x39_Belt","200Rnd_65x39_Belt_Tracer_Green","200Rnd_65x39_Belt_Tracer_Red","200Rnd_65x39_Belt_Tracer_Yellow","5000Rnd_762x51_Belt","5000Rnd_762x51_Yellow_Belt"};
class manual: MGun {
reloadTime = 0.015;
dispersion = 0.006;
};
class close: manual {};
class short: close {};
class medium: close {};
class far: close {};
};
class LMG_Minigun_heli: LMG_Minigun {
showAimCursorInternal = 0;
class manual: manual {
reloadTime = 0.015;
dispersion = 0.006;
};
class close: manual {};
class short: close {};
class medium: close {};
class far: close {};
};
class M134_minigun: MGunCore {
class LowROF: Mode_FullAuto {
reloadTime = 0.015;
dispersion = 0.006;
};
class HighROF: LowROF {
reloadTime = 0.015;
dispersion = 0.006;
};
class close: HighROF {};
class short: close {};
class medium: LowROF {};
class far: medium {};
};
class Gatling_30mm_Plane_CAS_01_F: CannonCore {
autoFire = 1;
burst = 1;
reloadTime = 0.0154;
class LowROF: Mode_FullAuto {
autoFire = 0;
//burst = 65;
burst = 22;
//reloadTime = 0.0154;
reloadTime = 0.0462;
//sound[] = {"A3\Sounds_F_epc\weapons\cas_02_cannon",1.77828,1,3800};
sound[] = {"A3\Sounds_F_EPC\Weapons\gau_03_burst",2.51189,1,4500,{25704,32159}};
weaponSoundEffect = "DefaultRifle";
dispersion = 0.005;
soundContinuous = 1;
textureType = "burst";
multiplier = 3;
};
class close: LowROF {};
class near: close {};
class short: close {};
class medium: close {};
class far: close {};
};
class RocketPods;
class Missile_AA_04_Plane_CAS_01_F: RocketPods {
holdsterAnimValue = 2;
aiRateOfFire = 5;
aiRateOfFireDistance = 500;
autoFire = 0;
cursor = "EmptyCursor";
cursorAim = "missile";
nameSound = "MissileLauncher";
textureType = "fullAuto";
weaponLockDelay = 3;
minRange = 300;
minRangeProbab = 0.25;
midRange = 2500;
midRangeProbab = 0.9;
maxRange = 9000;
maxRangeProbab = 0.01;
};
class MissileLauncher;
class Missile_AGM_02_Plane_CAS_01_F: MissileLauncher {
holdsterAnimValue = 3;
magazineReloadTime = 30;
reloadTime = 0.001;
textureType = "semi";
weaponLockDelay = 3;
weaponSoundEffect = "DefaultRifle";
};
class Rocket_04_HE_Plane_CAS_01_F: RocketPods {
holdsterAnimValue = 4;
canLock = 1;
modes[] = {"Far_AI","Medium_AI","Close_AI","Burst"};
weaponLockDelay = 0;
class Far_AI: RocketPods {
canLock = 1;
weaponLockDelay = 0;
showToPlayer = 0;
minRange = 800;
minRangeProbab = 0.31;
midRange = 2500;
midRangeProbab = 0.71;
maxRange = 3200;
maxRangeProbab = 0.1;
burst = 1;
reloadTime = 0.001;
autoFire = 0;
aiRateOfFire = 5;
aiRateOfFireDistance = 500;
};
class Medium_AI: Far_AI {};
class Close_AI: Far_AI {};
class Burst: RocketPods {
burst = 1;
reloadTime = 0.002;
minRange = 300;
minRangeProbab = 0.25;
midRange = 400;
midRangeProbab = 0.7;
maxRange = 1300;
maxRangeProbab = 0.1;
aiRateOfFire = 5;
aiRateOfFireDistance = 500;
autoFire = 0;
soundContinuous = 0;
textureType = "fullAuto";
weaponSoundEffect = "DefaultRifle";
};
};
class Rocket_04_AP_Plane_CAS_01_F: Rocket_04_HE_Plane_CAS_01_F {
holdsterAnimValue = 5;
};
class Bomb_04_Plane_CAS_01_F: RocketPods {
holdsterAnimValue = 6;
aiRateOfFire = 5;
aiRateOfFireDistance = 500;
missileLockCone = 180;
nameSound = "";
textureType = "fullAuto";
weaponLockDelay = 1;
};
class Cannon_30mm_Plane_CAS_02_F: CannonCore {
scope = 1;
holdsterAnimValue = 1;
ballisticsComputer = 2;
canLock = 1;
modes[] = {"LowROF","close","near","short","medium","far"};
nameSound = "cannon";
shotFromTurret = 0;
muzzlePos = "Cannon_muzzleflash";
muzzleEnd = "Cannon_barrel_end";
selectionFireAnim = "Cannon_muzzleflash";
autoFire = 1;
burst = 5;
reloadTime = 0.04;
class GunParticles {
class Effect {
effectName = "MachineGun2";
positionName = "Cannon_barrel_start";
directionName = "Cannon_barrel_end";
};
};
class LowROF: Mode_FullAuto {
dispersion = 0.0055;
reloadTime = 0.04;
};
class close: LowROF {};
class near: close {};
class short: close {};
class medium: close {};
class far: close {};
};
};

View File

@ -0,0 +1,18 @@
#include "script_component.hpp"
class CfgPatches {
class AGM_Aircraft {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"KoffeinFlummi","Crusty"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
};
};
#include "CfgAmmo.hpp"
#include "CfgMagazines.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"

View File

@ -0,0 +1,12 @@
#define COMPONENT aircraft
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_AIRCRAFT
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_ENABLED_AIRCRAFT
#define DEBUG_SETTINGS DEBUG_ENABLED_AIRCRAFT
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2014-12-12 --> <!-- Edited with tabler - 2014-12-12 -->
<Project name="AGM"> <Project name="ACE">
<Package name="Aircraft"> <Package name="Aircraft">
<Key ID="STR_AGM_Aircraft_CMFlareLauncher_Burst_Name"> <Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name">
<English>Burst</English> <English>Burst</English>
<German>Feuerstoß</German> <German>Feuerstoß</German>
<Spanish>Ráfaga</Spanish> <Spanish>Ráfaga</Spanish>
@ -14,7 +14,7 @@
<Portuguese>Rajada</Portuguese> <Portuguese>Rajada</Portuguese>
<Italian>Raffica</Italian> <Italian>Raffica</Italian>
</Key> </Key>
<Key ID="STR_AGM_Aircraft_OpenCargoRamp"> <Key ID="STR_ACE_Aircraft_OpenCargoRamp">
<English>Open Cargo Door</English> <English>Open Cargo Door</English>
<German>Laderampe öffnen</German> <German>Laderampe öffnen</German>
<Spanish>Abrir compuerta de carga</Spanish> <Spanish>Abrir compuerta de carga</Spanish>
@ -24,7 +24,7 @@
<Hungarian>Rámpát kinyitni</Hungarian> <Hungarian>Rámpát kinyitni</Hungarian>
<Russian>Открыть грузовой отсек</Russian> <Russian>Открыть грузовой отсек</Russian>
</Key> </Key>
<Key ID="STR_AGM_Aircraft_CloseCargoRamp"> <Key ID="STR_ACE_Aircraft_CloseCargoRamp">
<English>Close Cargo Door</English> <English>Close Cargo Door</English>
<German>Laderampe schließen</German> <German>Laderampe schließen</German>
<Spanish>Cerrar compuerta de carga</Spanish> <Spanish>Cerrar compuerta de carga</Spanish>

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