Braf_Air2 atualizado
This commit is contained in:
Vendored
+18
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "windows-gcc-x64",
|
||||||
|
"includePath": [
|
||||||
|
"${workspaceFolder}/**"
|
||||||
|
],
|
||||||
|
"compilerPath": "gcc",
|
||||||
|
"cStandard": "${default}",
|
||||||
|
"cppStandard": "${default}",
|
||||||
|
"intelliSenseMode": "windows-gcc-x64",
|
||||||
|
"compilerArgs": [
|
||||||
|
""
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
||||||
Vendored
+24
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "C/C++ Runner: Debug Session",
|
||||||
|
"type": "cppdbg",
|
||||||
|
"request": "launch",
|
||||||
|
"args": [],
|
||||||
|
"stopAtEntry": false,
|
||||||
|
"externalConsole": true,
|
||||||
|
"cwd": "e:/Arma/braf/braf_air2",
|
||||||
|
"program": "e:/Arma/braf/braf_air2/build/Debug/outDebug",
|
||||||
|
"MIMode": "gdb",
|
||||||
|
"miDebuggerPath": "gdb",
|
||||||
|
"setupCommands": [
|
||||||
|
{
|
||||||
|
"description": "Enable pretty-printing for gdb",
|
||||||
|
"text": "-enable-pretty-printing",
|
||||||
|
"ignoreFailures": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
+59
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"C_Cpp_Runner.cCompilerPath": "gcc",
|
||||||
|
"C_Cpp_Runner.cppCompilerPath": "g++",
|
||||||
|
"C_Cpp_Runner.debuggerPath": "gdb",
|
||||||
|
"C_Cpp_Runner.cStandard": "",
|
||||||
|
"C_Cpp_Runner.cppStandard": "",
|
||||||
|
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat",
|
||||||
|
"C_Cpp_Runner.useMsvc": false,
|
||||||
|
"C_Cpp_Runner.warnings": [
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Wpedantic",
|
||||||
|
"-Wshadow",
|
||||||
|
"-Wformat=2",
|
||||||
|
"-Wcast-align",
|
||||||
|
"-Wconversion",
|
||||||
|
"-Wsign-conversion",
|
||||||
|
"-Wnull-dereference"
|
||||||
|
],
|
||||||
|
"C_Cpp_Runner.msvcWarnings": [
|
||||||
|
"/W4",
|
||||||
|
"/permissive-",
|
||||||
|
"/w14242",
|
||||||
|
"/w14287",
|
||||||
|
"/w14296",
|
||||||
|
"/w14311",
|
||||||
|
"/w14826",
|
||||||
|
"/w44062",
|
||||||
|
"/w44242",
|
||||||
|
"/w14905",
|
||||||
|
"/w14906",
|
||||||
|
"/w14263",
|
||||||
|
"/w44265",
|
||||||
|
"/w14928"
|
||||||
|
],
|
||||||
|
"C_Cpp_Runner.enableWarnings": true,
|
||||||
|
"C_Cpp_Runner.warningsAsError": false,
|
||||||
|
"C_Cpp_Runner.compilerArgs": [],
|
||||||
|
"C_Cpp_Runner.linkerArgs": [],
|
||||||
|
"C_Cpp_Runner.includePaths": [],
|
||||||
|
"C_Cpp_Runner.includeSearch": [
|
||||||
|
"*",
|
||||||
|
"**/*"
|
||||||
|
],
|
||||||
|
"C_Cpp_Runner.excludeSearch": [
|
||||||
|
"**/build",
|
||||||
|
"**/build/**",
|
||||||
|
"**/.*",
|
||||||
|
"**/.*/**",
|
||||||
|
"**/.vscode",
|
||||||
|
"**/.vscode/**"
|
||||||
|
],
|
||||||
|
"C_Cpp_Runner.useAddressSanitizer": false,
|
||||||
|
"C_Cpp_Runner.useUndefinedSanitizer": false,
|
||||||
|
"C_Cpp_Runner.useLeakSanitizer": false,
|
||||||
|
"C_Cpp_Runner.showCompilationTime": false,
|
||||||
|
"C_Cpp_Runner.useLinkTimeOptimization": false,
|
||||||
|
"C_Cpp_Runner.msvcSecureNoWarnings": false
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "windows-gcc-x64",
|
||||||
|
"includePath": [
|
||||||
|
"${workspaceFolder}/**"
|
||||||
|
],
|
||||||
|
"compilerPath": "gcc",
|
||||||
|
"cStandard": "${default}",
|
||||||
|
"cppStandard": "${default}",
|
||||||
|
"intelliSenseMode": "windows-gcc-x64",
|
||||||
|
"compilerArgs": [
|
||||||
|
""
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
||||||
Vendored
+24
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "C/C++ Runner: Debug Session",
|
||||||
|
"type": "cppdbg",
|
||||||
|
"request": "launch",
|
||||||
|
"args": [],
|
||||||
|
"stopAtEntry": false,
|
||||||
|
"externalConsole": true,
|
||||||
|
"cwd": "p:/braf/braf_air2",
|
||||||
|
"program": "p:/braf/braf_air2/build/Debug/outDebug",
|
||||||
|
"MIMode": "gdb",
|
||||||
|
"miDebuggerPath": "gdb",
|
||||||
|
"setupCommands": [
|
||||||
|
{
|
||||||
|
"description": "Enable pretty-printing for gdb",
|
||||||
|
"text": "-enable-pretty-printing",
|
||||||
|
"ignoreFailures": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
+59
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"C_Cpp_Runner.cCompilerPath": "gcc",
|
||||||
|
"C_Cpp_Runner.cppCompilerPath": "g++",
|
||||||
|
"C_Cpp_Runner.debuggerPath": "gdb",
|
||||||
|
"C_Cpp_Runner.cStandard": "",
|
||||||
|
"C_Cpp_Runner.cppStandard": "",
|
||||||
|
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat",
|
||||||
|
"C_Cpp_Runner.useMsvc": false,
|
||||||
|
"C_Cpp_Runner.warnings": [
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Wpedantic",
|
||||||
|
"-Wshadow",
|
||||||
|
"-Wformat=2",
|
||||||
|
"-Wcast-align",
|
||||||
|
"-Wconversion",
|
||||||
|
"-Wsign-conversion",
|
||||||
|
"-Wnull-dereference"
|
||||||
|
],
|
||||||
|
"C_Cpp_Runner.msvcWarnings": [
|
||||||
|
"/W4",
|
||||||
|
"/permissive-",
|
||||||
|
"/w14242",
|
||||||
|
"/w14287",
|
||||||
|
"/w14296",
|
||||||
|
"/w14311",
|
||||||
|
"/w14826",
|
||||||
|
"/w44062",
|
||||||
|
"/w44242",
|
||||||
|
"/w14905",
|
||||||
|
"/w14906",
|
||||||
|
"/w14263",
|
||||||
|
"/w44265",
|
||||||
|
"/w14928"
|
||||||
|
],
|
||||||
|
"C_Cpp_Runner.enableWarnings": true,
|
||||||
|
"C_Cpp_Runner.warningsAsError": false,
|
||||||
|
"C_Cpp_Runner.compilerArgs": [],
|
||||||
|
"C_Cpp_Runner.linkerArgs": [],
|
||||||
|
"C_Cpp_Runner.includePaths": [],
|
||||||
|
"C_Cpp_Runner.includeSearch": [
|
||||||
|
"*",
|
||||||
|
"**/*"
|
||||||
|
],
|
||||||
|
"C_Cpp_Runner.excludeSearch": [
|
||||||
|
"**/build",
|
||||||
|
"**/build/**",
|
||||||
|
"**/.*",
|
||||||
|
"**/.*/**",
|
||||||
|
"**/.vscode",
|
||||||
|
"**/.vscode/**"
|
||||||
|
],
|
||||||
|
"C_Cpp_Runner.useAddressSanitizer": false,
|
||||||
|
"C_Cpp_Runner.useUndefinedSanitizer": false,
|
||||||
|
"C_Cpp_Runner.useLeakSanitizer": false,
|
||||||
|
"C_Cpp_Runner.showCompilationTime": false,
|
||||||
|
"C_Cpp_Runner.useLinkTimeOptimization": false,
|
||||||
|
"C_Cpp_Runner.msvcSecureNoWarnings": false
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -23,21 +23,6 @@ class CfgModels
|
|||||||
class Animations
|
class Animations
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
};
|
|
||||||
class braf_a29_gunner_n
|
|
||||||
{
|
|
||||||
htMin=0;
|
|
||||||
htMax=0;
|
|
||||||
afMax=0;
|
|
||||||
mfMax=0;
|
|
||||||
mFact=0;
|
|
||||||
tBody=0;
|
|
||||||
skeletonName="braf_A29_Flir";
|
|
||||||
sectionsInherit="";
|
|
||||||
sections[]={};
|
|
||||||
class Animations
|
|
||||||
{
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
class braf_a29_gunner_m
|
class braf_a29_gunner_m
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,48 +1,76 @@
|
|||||||
|
/*
|
||||||
|
Author: Brazilian Armed Forces
|
||||||
|
File: BRAF_AirOptics.hpp
|
||||||
|
Purpose:
|
||||||
|
Define a UI (InGame Optics) do A-29 com elementos vanilla + elementos custom (IDCs 9901..9905)
|
||||||
|
e instala um EventHandler para atualizar os controles em tempo real enquanto a optics estiver ativa.
|
||||||
|
|
||||||
|
Correções lógicas aplicadas (padrão Arma 3):
|
||||||
|
1) onLoad usa _this (minúsculo), não _This
|
||||||
|
2) EH 'Draw' entrega CONTROL; chamamos a função passando DISPLAY via ctrlParent
|
||||||
|
3) onUnload remove o EH, evitando acumular handlers após abrir/fechar optics
|
||||||
|
4) Caminhos usam barra simples '\' (padrão Arma 3), sem inventar '\\'
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
BRAF A-29 STARSAPHIRE - DICIONÁRIO DE IDCs (REFERÊNCIA)
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
IDDs
|
||||||
|
300 - Display do optics A-29 (BRAF_RscOptics_A29)
|
||||||
|
|
||||||
|
Grupos (ControlsGroup)
|
||||||
|
170 - CA_IGUI_elements_group (grupo principal do optics)
|
||||||
|
|
||||||
|
CUSTOM (BRAF)
|
||||||
|
9901 - Seta: indicador de elevação (trilho vertical)
|
||||||
|
9902 - Texto: valor numérico da elevação (ex: -12.3°)
|
||||||
|
9903 - Seta: indicador de direção (trilho horizontal)
|
||||||
|
9904 - Texto: valor numérico da direção (ex: -45°)
|
||||||
|
9905 - Seta: bússola (norte geográfico relativo ao apontamento)
|
||||||
|
*/
|
||||||
|
|
||||||
class ScrollBar;
|
class ScrollBar;
|
||||||
class RscUnitInfo;
|
class RscUnitInfo;
|
||||||
class RscControlsGroup
|
class RscControlsGroup;
|
||||||
{
|
|
||||||
class VScrollbar;
|
|
||||||
class HScrollbar;
|
|
||||||
class Controls;
|
|
||||||
};
|
|
||||||
class RscControlsGroupNoScrollbars;
|
class RscControlsGroupNoScrollbars;
|
||||||
|
class CA_HUDRscControlsGroup;
|
||||||
class RscText;
|
class RscText;
|
||||||
|
class RangeText: RscText{};
|
||||||
class RscPicture;
|
class RscPicture;
|
||||||
|
class RscOpticsText;
|
||||||
|
class RscOpticsValue;
|
||||||
|
class RscIGProgress;
|
||||||
|
|
||||||
class RscInGameUI
|
class RscInGameUI
|
||||||
{
|
{
|
||||||
class RscOptics_MBT_01_gunner;
|
class BRAF_RscOptics_A29: RscUnitInfo
|
||||||
class BRAF_RscOptics_A29: RscUnitInfo
|
{
|
||||||
{
|
idd = 300;
|
||||||
idd=300;
|
controls[] = {"CA_Zeroing","CA_IGUI_elements_group","CA_VehicleToggles"};
|
||||||
controls[]=
|
class VScrollbar;
|
||||||
{
|
class HScrollbar;
|
||||||
"CA_IGUI_elements_group"
|
onLoad = "[""onLoad"",_this,""RscUnitInfo"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay'); _this call BRAF_fnc_initRSC;";
|
||||||
};
|
onUnload = "[""onUnload"",_this,""RscUnitInfo"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')";
|
||||||
class CA_IGUI_elements_group: RscControlsGroup
|
class CA_IGUI_elements_group: RscControlsGroup
|
||||||
{
|
{
|
||||||
idc=170;
|
idc = 170;
|
||||||
class VScrollbar: VScrollbar
|
class VScrollbar: VScrollbar { width = 0; };
|
||||||
{
|
class HScrollbar: HScrollbar { height = 0; };
|
||||||
width=0;
|
|
||||||
};
|
x = "-4 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH)/2))";
|
||||||
class HScrollbar: HScrollbar
|
y = "000 * (0.02500 * SafezoneH) + (SafezoneY)";
|
||||||
{
|
w = "100 * (0.01875 * SafezoneH)";
|
||||||
height=0;
|
h = "080 * (0.02500 * SafezoneH)";
|
||||||
};
|
|
||||||
x="0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
class controls
|
||||||
y="0 * (0.025 * SafezoneH) + (SafezoneY)";
|
{
|
||||||
w="70";
|
class ValueDistance: RscText
|
||||||
h="40 * (0.025 * SafezoneH)";
|
|
||||||
class controls
|
|
||||||
{
|
|
||||||
class ValueDistance: RscText
|
|
||||||
{
|
{
|
||||||
style=1;
|
style=1;
|
||||||
sizeEx="0.038*SafezoneH";
|
sizeEx="0.038*SafezoneH";
|
||||||
shadow=0;
|
shadow=0;
|
||||||
font="EtelkaMonospacePro";
|
font="EtelkaMonospacePro";
|
||||||
idc=198; //idc=183;
|
idc=198;
|
||||||
text="245678";
|
text="245678";
|
||||||
colorText[] = {0,0,0,1};
|
colorText[] = {0,0,0,1};
|
||||||
colorBackground[] = {0,0,0,0};
|
colorBackground[] = {0,0,0,0};
|
||||||
@@ -66,7 +94,7 @@ class RscInGameUI
|
|||||||
x="10 * (0.01875 * SafezoneH)";
|
x="10 * (0.01875 * SafezoneH)";
|
||||||
y="34 * (0.025 * SafezoneH)";
|
y="34 * (0.025 * SafezoneH)";
|
||||||
};
|
};
|
||||||
class Textweapon: ValueGrid
|
class TextGrid: ValueGrid
|
||||||
{
|
{
|
||||||
style=0;
|
style=0;
|
||||||
idc=1801;
|
idc=1801;
|
||||||
@@ -144,6 +172,22 @@ class RscInGameUI
|
|||||||
y="35.75 * (0.025 * SafezoneH)";
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
w="6.5 * (0.01875 * SafezoneH)";
|
w="6.5 * (0.01875 * SafezoneH)";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class braf_fov_mode: RscText
|
||||||
|
{
|
||||||
|
idc = 154;
|
||||||
|
text = "WFOV";
|
||||||
|
sizeEx="0.03*SafezoneH";
|
||||||
|
style=0;
|
||||||
|
shadow=0;
|
||||||
|
font="EtelkaMonospacePro";
|
||||||
|
x = "0 * (0.01875 * SafezoneH)";
|
||||||
|
y="3 * (0.025 * SafezoneH)";
|
||||||
|
w="5 * (0.01875 * SafezoneH)";
|
||||||
|
h="1.2 * (0.025 * SafezoneH)";
|
||||||
|
colorText[] = {0,0,0,1};
|
||||||
|
};
|
||||||
|
|
||||||
class CA_VisionMode: RscText
|
class CA_VisionMode: RscText
|
||||||
{
|
{
|
||||||
idc=152;
|
idc=152;
|
||||||
@@ -151,18 +195,19 @@ class RscInGameUI
|
|||||||
style=0;
|
style=0;
|
||||||
shadow=0;
|
shadow=0;
|
||||||
font="EtelkaMonospacePro";
|
font="EtelkaMonospacePro";
|
||||||
text="DAY";
|
text="DTV";
|
||||||
x="1 * (0.01875 * SafezoneH)";
|
x="4.5 * (0.01875 * SafezoneH)";
|
||||||
y="3 * (0.025 * SafezoneH)";
|
y="3 * (0.025 * SafezoneH)";
|
||||||
w="5 * (0.01875 * SafezoneH)";
|
w="5 * (0.01875 * SafezoneH)";
|
||||||
h="1.2 * (0.025 * SafezoneH)";
|
h="1.2 * (0.025 * SafezoneH)";
|
||||||
colorText[] = {0,0,0,1};
|
colorText[] = {0,0,0,1};
|
||||||
};
|
};
|
||||||
|
|
||||||
class CA_FlirMode: CA_VisionMode
|
class CA_FlirMode: CA_VisionMode
|
||||||
{
|
{
|
||||||
idc=153;
|
idc=153;
|
||||||
text="BHOT";
|
text="BHOT";
|
||||||
x="5 * (0.01875 * SafezoneH)";
|
x="7 * (0.01875 * SafezoneH)";
|
||||||
};
|
};
|
||||||
class CA_Laser: RscText
|
class CA_Laser: RscText
|
||||||
{
|
{
|
||||||
@@ -173,73 +218,251 @@ class RscInGameUI
|
|||||||
shadow=0;
|
shadow=0;
|
||||||
font="EtelkaMonospacePro";
|
font="EtelkaMonospacePro";
|
||||||
text="\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
|
text="\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
|
||||||
x="31.1 * (0.01875 * SafezoneH)";
|
x="33 * (0.01875 * SafezoneH)";
|
||||||
y="12.85 * (0.025 * SafezoneH)";
|
y="8 * (0.025 * SafezoneH)";
|
||||||
w="3.5 * (0.01875 * SafezoneH)";
|
w="3.5 * (0.01875 * SafezoneH)";
|
||||||
h="1.5 * (0.025 * SafezoneH)";
|
h="1.5 * (0.025 * SafezoneH)";
|
||||||
};
|
};
|
||||||
//class braf_tri_vert: RscPicture
|
|
||||||
//{
|
class braf_arrow_vert: RscPicture
|
||||||
// idc = 1806;
|
{
|
||||||
// text = "rhsusf\addons\rhsusf_optics\data\tex\tri_vert.paa";
|
idc = 1901;
|
||||||
// x = "12.9 * (0.01875 * SafezoneH)";
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_vert_ca.paa";
|
||||||
// y = "14.65 * (0.025 * SafezoneH)";
|
shadow = 0;
|
||||||
// w = "0.7 * (0.01875 * SafezoneH)";
|
sizeEx = "0.03*SafezoneH";
|
||||||
// h = "1.1 * (0.025 * SafezoneH)";
|
x = "-0.5 * (0.01875 * SafezoneH)";
|
||||||
//};
|
y = "16.6 * (0.025 * SafezoneH)";
|
||||||
//class braf_tri_horiz: braf_tri_vert
|
w = "2.1 * (0.01875 * SafezoneH)";
|
||||||
//{
|
h = "2.1 * (0.025 * SafezoneH)";
|
||||||
// idc = 1807;
|
color[] = {1,1,1,1};
|
||||||
// text = "rhsusf\addons\rhsusf_optics\data\tex\tri_hor.paa";
|
colorBackground[] = {0,0,0,0};
|
||||||
// x = "26.1 * (0.01875 * SafezoneH)";
|
};
|
||||||
// y = "26.8 * (0.025 * SafezoneH)";
|
class braf_elev_value: RscText
|
||||||
// w = "1.1 * (0.01875 * SafezoneH)";
|
{
|
||||||
// h = "0.7 * (0.025 * SafezoneH)";
|
idc = 1902;
|
||||||
//};
|
style = 0;
|
||||||
};
|
shadow = 0;
|
||||||
};
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
colorText[] = {1,1,1,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
x = "1 * (0.01875 * SafezoneH)";
|
||||||
|
y = "16.6 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2.1 * (0.025 * SafezoneH)";
|
||||||
|
text = "-120";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_arrow_horiz: braf_arrow_vert
|
||||||
|
{
|
||||||
|
idc = 1903;
|
||||||
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_hor_ca.paa";
|
||||||
|
x = "-12 * (0.01875 * SafezoneH)";
|
||||||
|
y = "30 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class braf_dir_value: braf_elev_value
|
||||||
|
{
|
||||||
|
idc = 1904;
|
||||||
|
style = 2;
|
||||||
|
x = "-12.95 * (0.01875 * SafezoneH)";
|
||||||
|
y = "20 * (0.025 * SafezoneH)";
|
||||||
|
w = "4.0 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2.1 * (0.025 * SafezoneH)";
|
||||||
|
text = "-180";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_compass_arrow: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1905;
|
||||||
|
style = 144;
|
||||||
|
shadow = 0;
|
||||||
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_north_ca.paa";
|
||||||
|
x = "57.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "25.5 * (0.02500 * SafezoneH)";
|
||||||
|
w = "10 * (0.01875 * SafezoneH)";
|
||||||
|
h = "10 * (0.02500 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class braf_compass_n: braf_elev_value
|
||||||
|
{
|
||||||
|
idc = -1;
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
x = "60 * (0.01875 * SafezoneH)";
|
||||||
|
y = "28 * (0.02500 * SafezoneH)";
|
||||||
|
w = "05 * (0.01875 * SafezoneH)";
|
||||||
|
h = "05 * (0.02500 * SafezoneH)";
|
||||||
|
text = "N";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_HDG: RscText
|
||||||
|
{
|
||||||
|
idc = 1906;
|
||||||
|
style = 2;
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
sizeEx = "0.02*SafezoneH";
|
||||||
|
colorText[] = {1,1,1,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
text = "HDG:";
|
||||||
|
x="60 * (0.01875 * SafezoneH)";
|
||||||
|
y = "4.4 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_HDG: BRAF_AirData_Label_HDG
|
||||||
|
{
|
||||||
|
idc = 1907;
|
||||||
|
style = 1;
|
||||||
|
text = "000";
|
||||||
|
x = "60 * (0.01875 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_IAS: BRAF_AirData_Label_HDG
|
||||||
|
{
|
||||||
|
idc = 1908;
|
||||||
|
text = "IAS:";
|
||||||
|
y = "5 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_IAS: BRAF_AirData_Value_HDG
|
||||||
|
{
|
||||||
|
idc = 1909;
|
||||||
|
text = "000";
|
||||||
|
y = "5 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_GS: BRAF_AirData_Label_HDG
|
||||||
|
{
|
||||||
|
idc = 1910;
|
||||||
|
text = "GS:";
|
||||||
|
y = "5.6 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_GS: BRAF_AirData_Value_HDG
|
||||||
|
{
|
||||||
|
idc = 1911;
|
||||||
|
text = "000";
|
||||||
|
y = "5.6 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_RALT: BRAF_AirData_Label_HDG
|
||||||
|
{
|
||||||
|
idc = 1912;
|
||||||
|
text = "RALT:";
|
||||||
|
y = "6.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_RALT: BRAF_AirData_Value_HDG
|
||||||
|
{
|
||||||
|
idc = 1913;
|
||||||
|
text = "0000";
|
||||||
|
y = "6.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_BARO: BRAF_AirData_Label_HDG
|
||||||
|
{
|
||||||
|
idc = 1914;
|
||||||
|
text = "BARO:";
|
||||||
|
y = "6.8 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_BARO: BRAF_AirData_Value_HDG
|
||||||
|
{
|
||||||
|
idc = 1915;
|
||||||
|
text = "0000";
|
||||||
|
y = "6.8 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_ROLL: BRAF_AirData_Label_HDG
|
||||||
|
{
|
||||||
|
idc = 1916;
|
||||||
|
text = "ROLL:";
|
||||||
|
y = "7.4 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_ROLL: BRAF_AirData_Value_HDG
|
||||||
|
{
|
||||||
|
idc = 1917;
|
||||||
|
text = "0";
|
||||||
|
y = "7.4 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_PTCH: BRAF_AirData_Label_HDG
|
||||||
|
{
|
||||||
|
idc = 1918;
|
||||||
|
text = "PTCH:";
|
||||||
|
y = "8 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_PTCH: BRAF_AirData_Value_HDG
|
||||||
|
{
|
||||||
|
idc = 1919;
|
||||||
|
text = "0";
|
||||||
|
y = "8 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class BRAF_RscOptics_Fennec: BRAF_RscOptics_A29
|
||||||
|
{
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class BRAF_A29_Gunner_Optics: Optics_Armored
|
class BRAF_A29_Gunner_Optics: Optics_Armored
|
||||||
{
|
{
|
||||||
class Wide: RCWSOptics
|
class Wide: RCWSOptics
|
||||||
|
{
|
||||||
|
initFov = 0.5236;
|
||||||
|
minFov = 0.5236;
|
||||||
|
maxFov = 0.5236;
|
||||||
|
opticsDisplayName = "WFOV";
|
||||||
|
visionMode[] = { "Normal", "TI" };
|
||||||
|
thermalMode[] = { 0, 1 };
|
||||||
|
thermalNoise[] = { 0.5, 1.25, 2.5, 0.75, 1, 0, 0, 0.95 };
|
||||||
|
|
||||||
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_w.p3d";
|
||||||
|
gunnerOpticsEffect[] = {};
|
||||||
|
|
||||||
|
directionStabilized = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Medium: Wide
|
||||||
|
{
|
||||||
|
opticsDisplayName = "MFOV";
|
||||||
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_m.p3d";
|
||||||
|
initFov = 0.0593;
|
||||||
|
minFov = 0.0593;
|
||||||
|
maxFov = 0.0593;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Narrow: Wide
|
||||||
|
{
|
||||||
|
opticsDisplayName = "NFOV";
|
||||||
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_n.p3d";
|
||||||
|
initFov = 0.0140;
|
||||||
|
minFov = 0.0140;
|
||||||
|
maxFov = 0.0140;
|
||||||
|
};
|
||||||
|
class Narrower: Narrow
|
||||||
{
|
{
|
||||||
initFov=0.4;
|
opticsDisplayName = "NFOV 2X";
|
||||||
minFov=0.4;
|
initFov = 0.0070;
|
||||||
maxFov=0.4;
|
minFov = 0.0070;
|
||||||
visionMode[]=
|
maxFov = 0.0070;
|
||||||
{
|
|
||||||
"Normal",
|
|
||||||
"TI"
|
|
||||||
};
|
|
||||||
thermalMode[]={0,1};
|
|
||||||
thermalNoise[]=
|
|
||||||
{
|
|
||||||
0.5, //intensity,
|
|
||||||
1.25, //sharpness,
|
|
||||||
2.5, //grainSize,
|
|
||||||
0.75, //intensityX0,
|
|
||||||
1, //intensityX1,
|
|
||||||
0, //monochromatic,
|
|
||||||
0, //static,
|
|
||||||
0.95 //blurCoef
|
|
||||||
};
|
|
||||||
gunnerOpticsModel="\braf\braf_air2\BRAF_Optics_Air2\A29\braf_a29_gunner_w.p3d";
|
|
||||||
gunnerOpticsEffect[]={};
|
|
||||||
directionStabilized=1;
|
|
||||||
};
|
};
|
||||||
class Medium: Wide
|
class UltraNarrow: Narrow
|
||||||
{
|
{
|
||||||
gunnerOpticsModel="\braf\braf_air2\BRAF_Optics_Air2\A29\braf_a29_gunner_m.p3d";
|
opticsDisplayName = "NFOV 4X";
|
||||||
initFov=0.07;
|
initFov = 0.0035;
|
||||||
minFov=0.07;
|
minFov = 0.0035;
|
||||||
maxFov=0.07;
|
maxFov = 0.0035;
|
||||||
};
|
};
|
||||||
class Narrow: Wide
|
};
|
||||||
{
|
class BRAF_Fennec_Gunner_Optics: BRAF_A29_Gunner_Optics
|
||||||
gunnerOpticsModel="\braf\braf_air2\BRAF_Optics_Air2\A29\braf_a29_gunner_n.p3d";
|
{
|
||||||
initFov=0.014;
|
class Wide;
|
||||||
minFov=0.014;
|
class Medium;
|
||||||
maxFov=0.014;
|
class Narrow;
|
||||||
};
|
class Narrower;
|
||||||
};
|
class UltraNarrow;
|
||||||
|
};
|
||||||
|
|||||||
@@ -0,0 +1,315 @@
|
|||||||
|
/*
|
||||||
|
Author: Brazilian Armed Forces
|
||||||
|
File: BRAF_AirOptics.hpp
|
||||||
|
Purpose:
|
||||||
|
Define a UI (InGame Optics) do A-29 com elementos vanilla + elementos custom (IDCs 9901..9905)
|
||||||
|
e instala um EventHandler para atualizar os controles em tempo real enquanto a optics estiver ativa.
|
||||||
|
|
||||||
|
Correções lógicas aplicadas (padrão Arma 3):
|
||||||
|
1) onLoad usa _this (minúsculo), não _This
|
||||||
|
2) EH 'Draw' entrega CONTROL; chamamos a função passando DISPLAY via ctrlParent
|
||||||
|
3) onUnload remove o EH, evitando acumular handlers após abrir/fechar optics
|
||||||
|
4) Caminhos usam barra simples '\' (padrão Arma 3), sem inventar '\\'
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
BRAF A-29 STARSAPHIRE - DICIONÁRIO DE IDCs (REFERÊNCIA)
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
IDDs
|
||||||
|
300 - Display do optics A-29 (BRAF_RscOptics_A29)
|
||||||
|
|
||||||
|
Grupos (ControlsGroup)
|
||||||
|
170 - CA_IGUI_elements_group (grupo principal do optics)
|
||||||
|
|
||||||
|
CUSTOM (BRAF)
|
||||||
|
9901 - Seta: indicador de elevação (trilho vertical)
|
||||||
|
9902 - Texto: valor numérico da elevação (ex: -12.3°)
|
||||||
|
9903 - Seta: indicador de direção (trilho horizontal)
|
||||||
|
9904 - Texto: valor numérico da direção (ex: -45°)
|
||||||
|
9905 - Seta: bússola (norte geográfico relativo ao apontamento)
|
||||||
|
*/
|
||||||
|
|
||||||
|
class ScrollBar;
|
||||||
|
class RscUnitInfo;
|
||||||
|
class RscControlsGroup;
|
||||||
|
class RscControlsGroupNoScrollbars;
|
||||||
|
class CA_HUDRscControlsGroup;
|
||||||
|
class RscText;
|
||||||
|
class RangeText: RscText{};
|
||||||
|
class RscPicture;
|
||||||
|
class RscOpticsText;
|
||||||
|
class RscOpticsValue;
|
||||||
|
class RscIGProgress;
|
||||||
|
|
||||||
|
class RscInGameUI
|
||||||
|
{
|
||||||
|
class BRAF_RscOptics_A29: RscUnitInfo
|
||||||
|
{
|
||||||
|
idd = 300;
|
||||||
|
controls[] = {"CA_Zeroing","CA_IGUI_elements_group","CA_VehicleToggles"};
|
||||||
|
class VScrollbar;
|
||||||
|
class HScrollbar;
|
||||||
|
onLoad = "[""onLoad"",_this,""RscUnitInfo"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay'); _this call BRAF_fnc_initRSC;";
|
||||||
|
onUnload = "[""onUnload"",_this,""RscUnitInfo"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')";
|
||||||
|
class CA_IGUI_elements_group: RscControlsGroup
|
||||||
|
{
|
||||||
|
idc = 170;
|
||||||
|
class VScrollbar: VScrollbar { width = 0; };
|
||||||
|
class HScrollbar: HScrollbar { height = 0; };
|
||||||
|
|
||||||
|
x = "000 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH)/2))";
|
||||||
|
y = "000 * (0.02500 * SafezoneH) + (SafezoneY)";
|
||||||
|
w = "100 * (0.01875 * SafezoneH)";
|
||||||
|
h = "080 * (0.02500 * SafezoneH)";
|
||||||
|
|
||||||
|
class controls
|
||||||
|
{
|
||||||
|
class ValueDistance: RscText
|
||||||
|
{
|
||||||
|
style=1;
|
||||||
|
sizeEx="0.038*SafezoneH";
|
||||||
|
shadow=0;
|
||||||
|
font="EtelkaMonospacePro";
|
||||||
|
idc=198; //idc=183;
|
||||||
|
text="245678";
|
||||||
|
colorText[] = {0,0,0,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
x="45.5 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
w="8 * (0.01875 * SafezoneH)";
|
||||||
|
h="1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextDistance: ValueDistance
|
||||||
|
{
|
||||||
|
style=0;
|
||||||
|
idc=1800;
|
||||||
|
text="Laser dist:";
|
||||||
|
x="42 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueGrid: ValueDistance
|
||||||
|
{
|
||||||
|
idc=171;
|
||||||
|
text="245678";
|
||||||
|
x="10 * (0.01875 * SafezoneH)";
|
||||||
|
y="34 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class Textweapon: ValueGrid
|
||||||
|
{
|
||||||
|
style=0;
|
||||||
|
idc=1801;
|
||||||
|
text="GPS grid:";
|
||||||
|
x="4.45 * (0.01875 * SafezoneH)";
|
||||||
|
y="34 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueWeapon: ValueDistance
|
||||||
|
{
|
||||||
|
idc=172;
|
||||||
|
text="245678";
|
||||||
|
x="10 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextTarget: ValueGrid
|
||||||
|
{
|
||||||
|
style=0;
|
||||||
|
idc=1802;
|
||||||
|
text="Target grid:";
|
||||||
|
x="4.45 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextElev: ValueGrid
|
||||||
|
{
|
||||||
|
style=0;
|
||||||
|
idc=1803;
|
||||||
|
text="Elev:";
|
||||||
|
x="32 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueElev: ValueDistance
|
||||||
|
{
|
||||||
|
idc=175;
|
||||||
|
text="245";
|
||||||
|
x="32 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextAz: ValueGrid
|
||||||
|
{
|
||||||
|
style=0;
|
||||||
|
idc=1804;
|
||||||
|
text="Az:";
|
||||||
|
x="24.5 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueAz: ValueDistance
|
||||||
|
{
|
||||||
|
idc=156;
|
||||||
|
text="245";
|
||||||
|
x="23 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextAlt: ValueGrid
|
||||||
|
{
|
||||||
|
style=0;
|
||||||
|
idc=1805;
|
||||||
|
text="Alt:";
|
||||||
|
x="24.5 * (0.01875 * SafezoneH)";
|
||||||
|
y="34 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueAlt: ValueDistance
|
||||||
|
{
|
||||||
|
idc=189;
|
||||||
|
text="245678";
|
||||||
|
x="24 * (0.01875 * SafezoneH)";
|
||||||
|
y="34 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Time: ValueGrid
|
||||||
|
{
|
||||||
|
idc=190;
|
||||||
|
style=0;
|
||||||
|
shadow=0;
|
||||||
|
text="XX:XX:xx";
|
||||||
|
x="54 * (0.01875 * SafezoneH)";
|
||||||
|
y="35.75 * (0.025 * SafezoneH)";
|
||||||
|
w="6.5 * (0.01875 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_VisionMode: RscText
|
||||||
|
{
|
||||||
|
idc=152;
|
||||||
|
sizeEx="0.03*SafezoneH";
|
||||||
|
style=0;
|
||||||
|
shadow=0;
|
||||||
|
font="EtelkaMonospacePro";
|
||||||
|
text="DTV";
|
||||||
|
x="1 * (0.01875 * SafezoneH)";
|
||||||
|
y="3 * (0.025 * SafezoneH)";
|
||||||
|
w="5 * (0.01875 * SafezoneH)";
|
||||||
|
h="1.2 * (0.025 * SafezoneH)";
|
||||||
|
colorText[] = {0,0,0,1};
|
||||||
|
};
|
||||||
|
class CA_FlirMode: CA_VisionMode
|
||||||
|
{
|
||||||
|
idc=153;
|
||||||
|
text="BHOT";
|
||||||
|
x="5 * (0.01875 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Laser: RscText
|
||||||
|
{
|
||||||
|
idc=158;
|
||||||
|
style="0x30 + 0x800";
|
||||||
|
sizeEx="0.038*SafezoneH";
|
||||||
|
colorText[]={0.70599997,0.074500002,0.0196,1};
|
||||||
|
shadow=0;
|
||||||
|
font="EtelkaMonospacePro";
|
||||||
|
text="\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
|
||||||
|
x="33 * (0.01875 * SafezoneH)";
|
||||||
|
y="8 * (0.025 * SafezoneH)";
|
||||||
|
w="3.5 * (0.01875 * SafezoneH)";
|
||||||
|
h="1.5 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_arrow_vert: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1901;
|
||||||
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_vert_ca.paa";
|
||||||
|
shadow = 2;
|
||||||
|
sizeEx = "0.06*SafezoneH";
|
||||||
|
x = "0 * (0.01875 * SafezoneH)";
|
||||||
|
y = "16.6 * (0.025 * SafezoneH)";
|
||||||
|
w = "4.2 * (0.01875 * SafezoneH)";
|
||||||
|
h = "4.2 * (0.025 * SafezoneH)";
|
||||||
|
color[] = {1,1,1,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
};
|
||||||
|
class braf_arrow_horiz: braf_arrow_vert
|
||||||
|
{
|
||||||
|
idc = 1903;
|
||||||
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_hor_ca.paa";
|
||||||
|
x = "24.45 * (0.01875 * SafezoneH)";
|
||||||
|
y = "29 * (0.025 * SafezoneH)";
|
||||||
|
w = "4.2 * (0.01875 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_compass_arrow: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1905;
|
||||||
|
style = 144;
|
||||||
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_north_ca.paa";
|
||||||
|
x = "56 * (0.01875 * SafezoneH)";
|
||||||
|
y = "28 * (0.02500 * SafezoneH)";
|
||||||
|
w = "05 * (0.01875 * SafezoneH)";
|
||||||
|
h = "05 * (0.02500 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_elev_value: RscText
|
||||||
|
{
|
||||||
|
idc = 1902;
|
||||||
|
style = 2;
|
||||||
|
shadow = 2;
|
||||||
|
sizeEx = "0.06*SafezoneH";
|
||||||
|
colorText[] = {1,1,1,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
x = "0 * (0.01875 * SafezoneH)";
|
||||||
|
y = "16.6 * (0.025 * SafezoneH)";
|
||||||
|
w = "4.2 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.5 * (0.025 * SafezoneH)";
|
||||||
|
text = "-120";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_dir_value: braf_elev_value
|
||||||
|
{
|
||||||
|
idc = 1904;
|
||||||
|
x = "24.15 * (0.01875 * SafezoneH)";
|
||||||
|
y = "28.45 * (0.025 * SafezoneH)";
|
||||||
|
w = "4.2 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.5 * (0.025 * SafezoneH)";
|
||||||
|
text = "-180";
|
||||||
|
};
|
||||||
|
class braf_compass_n: braf_elev_value
|
||||||
|
{
|
||||||
|
idc = -1;
|
||||||
|
style = 1;
|
||||||
|
x = "56 * (0.01875 * SafezoneH)";
|
||||||
|
y = "29.5 * (0.02500 * SafezoneH)";
|
||||||
|
w = "05 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2 * (0.02500 * SafezoneH)";
|
||||||
|
text = "N";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_A29_Gunner_Optics: Optics_Armored
|
||||||
|
{
|
||||||
|
class Wide: RCWSOptics
|
||||||
|
{
|
||||||
|
initFov = 0.4;
|
||||||
|
minFov = 0.4;
|
||||||
|
maxFov = 0.4;
|
||||||
|
|
||||||
|
visionMode[] = { "Normal", "TI" };
|
||||||
|
thermalMode[] = { 0, 1 };
|
||||||
|
thermalNoise[] = { 0.5, 1.25, 2.5, 0.75, 1, 0, 0, 0.95 };
|
||||||
|
|
||||||
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_w.p3d";
|
||||||
|
gunnerOpticsEffect[] = {};
|
||||||
|
|
||||||
|
directionStabilized = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Medium: Wide
|
||||||
|
{
|
||||||
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_m.p3d";
|
||||||
|
initFov = 0.07;
|
||||||
|
minFov = 0.07;
|
||||||
|
maxFov = 0.07;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Narrow: Wide
|
||||||
|
{
|
||||||
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_n.p3d";
|
||||||
|
initFov = 0.014;
|
||||||
|
minFov = 0.014;
|
||||||
|
maxFov = 0.014;
|
||||||
|
};
|
||||||
|
};
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -5,8 +5,10 @@ class CfgMovesBasic
|
|||||||
{
|
{
|
||||||
A29_Pilot="A29_Pilot";
|
A29_Pilot="A29_Pilot";
|
||||||
A29_Pilot_Dead="A29_Pilot_Dead";
|
A29_Pilot_Dead="A29_Pilot_Dead";
|
||||||
//A29_Copilot="A29_Copilot";
|
/*
|
||||||
//A29_Copilot_Dead="A29_Copilot_Dead";
|
braf_ejection_chute_Pilot = "braf_ejection_chute_Pilot";
|
||||||
|
braf_ejection_chute_KIA = "braf_ejection_chute_KIA";
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -19,8 +21,8 @@ class CfgMovesMaleSdr : CfgMovesBasic
|
|||||||
{
|
{
|
||||||
actions="DeadActions";
|
actions="DeadActions";
|
||||||
speed=0.5;
|
speed=0.5;
|
||||||
looped="false";
|
looped= 0;
|
||||||
terminal=true;
|
terminal= 1;
|
||||||
file="braf\braf_air2\Braf_air_anim\a29_pilot_kia.rtm";
|
file="braf\braf_air2\Braf_air_anim\a29_pilot_kia.rtm";
|
||||||
connectTo[]={"DeadState", 0.1};
|
connectTo[]={"DeadState", 0.1};
|
||||||
};
|
};
|
||||||
@@ -30,19 +32,29 @@ class CfgMovesMaleSdr : CfgMovesBasic
|
|||||||
interpolateTo[]={"A29_Pilot_Dead", 1};
|
interpolateTo[]={"A29_Pilot_Dead", 1};
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
class A29_Copilot_Dead: DefaultDie
|
class braf_ejection_chute_KIA: DefaultDie
|
||||||
{
|
{
|
||||||
actions="DeadActions";
|
actions = "DeadActions";
|
||||||
speed=0.5;
|
file = "\braf\braf_air2\braf_air_anim\braf_ejection_chute_KIA.rtm";
|
||||||
looped="false";
|
speed = 0.5;
|
||||||
terminal=true;
|
terminal = 1;
|
||||||
file="braf\braf_air2\Braf_air_anim\a29_copilot_kia.rtm";
|
soundEnabled = 0;
|
||||||
|
looped = 0;
|
||||||
connectTo[]={"DeadState", 0.1};
|
connectTo[]={"DeadState", 0.1};
|
||||||
};
|
};
|
||||||
class A29_Copilot: Crew
|
class braf_ejection_chute_Pilot: Crew
|
||||||
{
|
{
|
||||||
file="braf\braf_air2\Braf_air_anim\a29_copilot_alive.rtm";
|
file = "\braf\braf_air2\braf_air_anim\braf_ejection_chute_init.rtm";
|
||||||
interpolateTo[]={"A29_Copilot_Dead", 1};
|
interpolateTo[]={"braf_ejection_chute_KIA", 1};
|
||||||
|
interpolationSpeed = 1;
|
||||||
|
speed = -4;
|
||||||
|
hideWeaponsDriver = 1;
|
||||||
|
hideWeaponsGunner = 1;
|
||||||
|
hideWeaponsCargo = 1;
|
||||||
|
looped = 0;
|
||||||
|
useIdles = 0;
|
||||||
|
leftHandIKCurve[] = {1};
|
||||||
|
rightHandIKCurve[] = {1};
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
};
|
};
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -84,7 +84,7 @@ class Stage6
|
|||||||
};
|
};
|
||||||
class Stage7
|
class Stage7
|
||||||
{
|
{
|
||||||
texture = "a3\data\env_land_co.paa";
|
texture = "a3\data_f\env_land_co.paa";
|
||||||
useWorldEnvMap="true";
|
useWorldEnvMap="true";
|
||||||
uvSource="tex";
|
uvSource="tex";
|
||||||
class uvTransform
|
class uvTransform
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
#define _ARMA_
|
||||||
|
|
||||||
|
ambient[] = {1,1,1,1};
|
||||||
|
diffuse[] = {1,1,1,1};
|
||||||
|
forcedDiffuse[] = {0,0,0,0};
|
||||||
|
emmisive[] = {0,0,0,1};
|
||||||
|
specular[] = {0.2,0.4,0.3,1};
|
||||||
|
specularPower = 8;
|
||||||
|
PixelShaderID = "Super";
|
||||||
|
VertexShaderID = "Super";
|
||||||
|
class Stage1
|
||||||
|
{
|
||||||
|
texture = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\ejection_chute_nohq.paa";
|
||||||
|
uvSource = "tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1,0,0};
|
||||||
|
up[] = {0,1,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage2
|
||||||
|
{
|
||||||
|
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
|
||||||
|
uvSource = "tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {80,0,0};
|
||||||
|
up[] = {0,40,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage3
|
||||||
|
{
|
||||||
|
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||||
|
uvSource = "tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1,0,0};
|
||||||
|
up[] = {0,1,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage4
|
||||||
|
{
|
||||||
|
texture = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\ejection_chute_as.paa";
|
||||||
|
uvSource = "tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1,0,0};
|
||||||
|
up[] = {0,1,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage5
|
||||||
|
{
|
||||||
|
texture = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\ejection_chute_smdi.paa";
|
||||||
|
uvSource = "tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1,0,0};
|
||||||
|
up[] = {0,1,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage6
|
||||||
|
{
|
||||||
|
texture = "#(ai,128,128,1)fresnel(1.72,0.01)";
|
||||||
|
uvSource = "none";
|
||||||
|
};
|
||||||
|
class Stage7
|
||||||
|
{
|
||||||
|
texture = "a3\data_f\env_land_co.paa";
|
||||||
|
uvSource = "none";
|
||||||
|
};
|
||||||
|
class StageTI
|
||||||
|
{
|
||||||
|
texture = "a3\data_f\default_ti_ca.paa";
|
||||||
|
};
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -285,7 +285,7 @@ class braf_A29_base: Plane_Fighter_03_base_F
|
|||||||
armor=2;
|
armor=2;
|
||||||
explosionShielding=3;
|
explosionShielding=3;
|
||||||
passThrough=0.3;
|
passThrough=0.3;
|
||||||
radius=0.2L;
|
radius=0.2;
|
||||||
minimalHit=0.05;
|
minimalHit=0.05;
|
||||||
};
|
};
|
||||||
class HitLCElevator: HitHull
|
class HitLCElevator: HitHull
|
||||||
@@ -1014,7 +1014,7 @@ class braf_A29_base: Plane_Fighter_03_base_F
|
|||||||
};
|
};
|
||||||
class Eventhandlers : Eventhandlers
|
class Eventhandlers : Eventhandlers
|
||||||
{
|
{
|
||||||
init="if (local (_this select 0)) then { [(_this select 0), """", [], false] call BIS_fnc_initVehicle; };";
|
init="if (local (_this select 0)) then { [(_this select 0), """", [], false] call BIS_fnc_initVehicle; (_this select 0) setVariable ['BRAF_InterceptionLight', 0]; };";
|
||||||
hit="_this call bis_fnc_planeAiEject";
|
hit="_this call bis_fnc_planeAiEject";
|
||||||
};
|
};
|
||||||
hiddenSelections[]=
|
hiddenSelections[]=
|
||||||
@@ -1534,18 +1534,24 @@ class braf_A29B: BRAF_A29_base
|
|||||||
condition="this animationPhase 'BackFLIrMotion' > 0.5 and (player in this) and (driver this != player)";
|
condition="this animationPhase 'BackFLIrMotion' > 0.5 and (player in this) and (driver this != player)";
|
||||||
statement="this animate ['BackEICASMotion',1] && this animate ['BackFLIrMotion',0]";
|
statement="this animate ['BackEICASMotion',1] && this animate ['BackFLIrMotion',0]";
|
||||||
};
|
};
|
||||||
class BRAF_A29B_Eject
|
class BRAF_A29B_Pilot_Eject
|
||||||
{
|
{
|
||||||
priority=0.05;
|
priority=0.05;
|
||||||
shortcut="Eject";
|
shortcut="Eject";
|
||||||
displayName="<t color='#FF0000'>Eject</t>";
|
displayName="<t color='#FF0000'>Eject - Pilot</t>";
|
||||||
condition="(player in this) && {speed this > 1}";
|
condition="(driver this == player) && {speed this > 1}";
|
||||||
statement="[this] spawn BRAF_fnc_EjectPilot; [this] call BRAF_fnc_EjectCopilot";
|
statement="[this] spawn BRAF_fnc_EjectPilot";
|
||||||
position="pilotcontrol";
|
position="pilotcontrol";
|
||||||
radius=10;
|
radius=10;
|
||||||
onlyforplayer=1;
|
onlyforplayer=1;
|
||||||
showWindow=0;
|
showWindow=0;
|
||||||
hideOnUse=1;
|
hideOnUse=1;
|
||||||
|
};
|
||||||
|
class BRAF_A29B_Gunner_Eject: BRAF_A29B_Pilot_Eject
|
||||||
|
{
|
||||||
|
displayName="<t color='#FF0000'>Eject - Gunner</t>";
|
||||||
|
condition="(gunner this == player) && {speed this > 1}";
|
||||||
|
statement="[this] spawn BRAF_fnc_EjectCopilot";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class NewTurret;
|
class NewTurret;
|
||||||
@@ -1627,6 +1633,12 @@ class braf_A29B: BRAF_A29_base
|
|||||||
class Narrow: Narrow
|
class Narrow: Narrow
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
class Narrower: Narrower
|
||||||
|
{
|
||||||
|
};
|
||||||
|
class UltraNarrow: UltraNarrow
|
||||||
|
{
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class OpticsOut
|
class OpticsOut
|
||||||
{
|
{
|
||||||
@@ -2105,9 +2117,33 @@ class braf_A29B_90k: BRAF_A29B
|
|||||||
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Joker_co.paa"
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Joker_co.paa"
|
||||||
};
|
};
|
||||||
|
class TextureSources
|
||||||
|
{
|
||||||
|
class FAB_90k
|
||||||
|
{
|
||||||
|
displayName="A-29B Super Tucano Brazilian Air Force Comemorative 90k hours Joker Fighter Squadron";
|
||||||
|
author="BRAF Team";
|
||||||
|
factions[]=
|
||||||
|
{
|
||||||
|
"BRAF_FAB"
|
||||||
|
};
|
||||||
|
textures[]=
|
||||||
|
{
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\camo1_90k_co.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\camo2_co.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Joker_co.paa"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
textureList[]=
|
textureList[]=
|
||||||
{
|
{
|
||||||
"FAB_100k",1
|
"FAB_90k",1
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class braf_A29B_100k: BRAF_A29B
|
class braf_A29B_100k: BRAF_A29B
|
||||||
@@ -2122,7 +2158,7 @@ class braf_A29B_100k: BRAF_A29B
|
|||||||
editorPreview="\braf\braf_insignia\editorpreview\air2\BRAF_A29B.jpg";
|
editorPreview="\braf\braf_insignia\editorpreview\air2\BRAF_A29B.jpg";
|
||||||
class Armory
|
class Armory
|
||||||
{
|
{
|
||||||
description="A-29B Super Tucano Brazilian Air Force Comemorative 1o0k hours Joker Fighter Squadron";
|
description="A-29B Super Tucano Brazilian Air Force Comemorative 100k hours Joker Fighter Squadron";
|
||||||
};
|
};
|
||||||
crew="braf_characters_aviation_air_force_fighter_pilot";
|
crew="braf_characters_aviation_air_force_fighter_pilot";
|
||||||
typicalcargo[]={""};
|
typicalcargo[]={""};
|
||||||
@@ -2138,9 +2174,33 @@ class braf_A29B_100k: BRAF_A29B
|
|||||||
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Joker_co.paa"
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Joker_co.paa"
|
||||||
};
|
};
|
||||||
|
class TextureSources
|
||||||
|
{
|
||||||
|
class FAB_100k
|
||||||
|
{
|
||||||
|
displayName="A-29B Super Tucano Brazilian Air Force Comemorative 100k hours Joker Fighter Squadron";
|
||||||
|
author="BRAF Team";
|
||||||
|
factions[]=
|
||||||
|
{
|
||||||
|
"BRAF_FAB"
|
||||||
|
};
|
||||||
|
textures[]=
|
||||||
|
{
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\camo1_100k_co.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\camo2_co.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Joker_co.paa"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
textureList[]=
|
textureList[]=
|
||||||
{
|
{
|
||||||
"FAB_90k",1
|
"FAB_100k",1
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class braf_A29B_Jambock: BRAF_A29B
|
class braf_A29B_Jambock: BRAF_A29B
|
||||||
@@ -2175,6 +2235,30 @@ class braf_A29B_Jambock: BRAF_A29B
|
|||||||
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Jambock_co.paa"
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Jambock_co.paa"
|
||||||
};
|
};
|
||||||
|
class TextureSources
|
||||||
|
{
|
||||||
|
class FAB_Jambock
|
||||||
|
{
|
||||||
|
displayName="A-29B Super Tucano Brazilian Air Force Comemorative WW2 Jambock Squadron";
|
||||||
|
author="BRAF Team";
|
||||||
|
factions[]=
|
||||||
|
{
|
||||||
|
"BRAF_FAB"
|
||||||
|
};
|
||||||
|
textures[]=
|
||||||
|
{
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\camo1_Jambock_co.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\camo2_co.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\glass_ca.paa",
|
||||||
|
"braf\braf_air2\braf_airplanes\braf_super_tucano\Data\Extras_Jambock_co.paa"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
textureList[]=
|
textureList[]=
|
||||||
{
|
{
|
||||||
"FAB_Jambock",1
|
"FAB_Jambock",1
|
||||||
@@ -2316,4 +2400,64 @@ class braf_ejection_seat_A29: braf_ejection_seat_base
|
|||||||
count=3;
|
count=3;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
/*
|
||||||
|
class braf_ejection_chute_base: Steerable_Parachute_F
|
||||||
|
{
|
||||||
|
driverAction = "braf_ejection_chute_Pilot";
|
||||||
|
Author = "BRAF TEAM";
|
||||||
|
scope = 0;
|
||||||
|
mapSize = 20;
|
||||||
|
animationdrop = "\braf\braf_air2\braf_air_anim\braf_ejection_chute_close.rtm";
|
||||||
|
animationopen = "\braf\braf_air2\braf_air_anim\braf_ejection_chute_open.rtm";
|
||||||
|
airinfluence = "1,0";
|
||||||
|
liftgravity = -14;
|
||||||
|
maxrotationx = 0.1;
|
||||||
|
minrotationx = -0.1;
|
||||||
|
maxrotationz = 0.1;
|
||||||
|
minrotationz = -0.1;
|
||||||
|
maxsensitivityhorizontal = 0.005;
|
||||||
|
maxsensitivityvertical = 0;
|
||||||
|
minliftduration = 4;
|
||||||
|
minliftthrust = -14;
|
||||||
|
maxliftthrust = -12;
|
||||||
|
mingravity = -2;
|
||||||
|
maxgravity = -4;
|
||||||
|
normalgravity = -4;
|
||||||
|
thrustaccel = 0.1;
|
||||||
|
thrustdeccel = 0.1;
|
||||||
|
thrustnormal = 0.1;
|
||||||
|
turnforcescale = 0.022;
|
||||||
|
textSingular = "$STR_A3_nameSound_veh_air_parachute_s";
|
||||||
|
textPlural = "$STR_A3_nameSound_veh_air_parachute_p";
|
||||||
|
radarType = 0;
|
||||||
|
openingTime = 5;
|
||||||
|
hideWeaponsDriver = 0;
|
||||||
|
class ViewPilot
|
||||||
|
{
|
||||||
|
minFov = 0.25;
|
||||||
|
initFov = 0.7;
|
||||||
|
maxFov = 1.1;
|
||||||
|
initAngleX = 0;
|
||||||
|
minAngleX = -65;
|
||||||
|
maxAngleX = 85;
|
||||||
|
initAngleY = 0;
|
||||||
|
minAngleY = -150;
|
||||||
|
maxAngleY = 150;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class braf_ejection_chute: braf_ejection_chute_base
|
||||||
|
{
|
||||||
|
scope = 1;
|
||||||
|
displayName = "Ejection Seat Canopy";
|
||||||
|
model = "braf\braf_air2\braf_airplanes\braf_super_tucano\braf_ejection_chute.p3d";
|
||||||
|
hiddenSelections[] =
|
||||||
|
{
|
||||||
|
"camo"
|
||||||
|
};
|
||||||
|
hiddenSelectionsTextures[] =
|
||||||
|
{
|
||||||
|
"\braf\braf_air2\braf_airplanes\braf_super_tucano\Dataa\ejection_chute_co.paa"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
*/
|
||||||
Binary file not shown.
@@ -1,4 +1,3 @@
|
|||||||
// GENERAL
|
|
||||||
maxSpeed=800;
|
maxSpeed=800;
|
||||||
enginePower=1.193;
|
enginePower=1.193;
|
||||||
landingAOA=__EVAL(3*3.1415/180);
|
landingAOA=__EVAL(3*3.1415/180);
|
||||||
|
|||||||
@@ -178,6 +178,12 @@ class CfgSkeletons
|
|||||||
"canopy",""
|
"canopy",""
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
class Skeleton
|
||||||
|
{
|
||||||
|
isDiscrete=0;
|
||||||
|
skeletonInherit="";
|
||||||
|
skeletonBones[]={"body", "", "striska", "", "fl", "", "bl", "", "fm", "", "mb", "", "fr", "", "rb", ""};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class CfgModels
|
class CfgModels
|
||||||
{
|
{
|
||||||
@@ -1222,6 +1228,21 @@ class CfgModels
|
|||||||
unHideValue=-1;
|
unHideValue=-1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
class braf_ejection_chute
|
||||||
|
{
|
||||||
|
htMin=0;
|
||||||
|
htMax=0;
|
||||||
|
afMax=0;
|
||||||
|
mfMax=0;
|
||||||
|
mFact=0;
|
||||||
|
tBody=0;
|
||||||
|
skeletonName="Skeleton";
|
||||||
|
sectionsInherit="";
|
||||||
|
sections[]={};
|
||||||
|
class Animations
|
||||||
|
{
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class braf_ejection_seat_01: braf_a29_ejection_seat{};
|
class braf_ejection_seat_01: braf_a29_ejection_seat{};
|
||||||
class braf_A29_wreck: braf_A29{};
|
class braf_A29_wreck: braf_A29{};
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#define IGUI_GROUP 170
|
||||||
|
|
||||||
|
// IDCs (seus)
|
||||||
|
#define BRAF_ELEV_ARROW 1901
|
||||||
|
#define BRAF_ELEV_TXT 1902
|
||||||
|
#define BRAF_AZ_ARROW 1903
|
||||||
|
#define BRAF_AZ_TXT 1904
|
||||||
|
#define BRAF_NORTH_ARROW 1905
|
||||||
|
|
||||||
|
// RANGES da régua (fixos do seu pod)
|
||||||
|
#define BRAF_MIN_TURN -180
|
||||||
|
#define BRAF_MAX_TURN 180
|
||||||
|
#define BRAF_MIN_ELEV -120
|
||||||
|
#define BRAF_MAX_ELEV 30
|
||||||
|
|
||||||
|
// ====== CONSTANTES DO TAPE (mesmo conceito do USAF) ======
|
||||||
|
// Azimute (horizontal): X do ponto onde está -180 (início da régua)
|
||||||
|
// e distância total até +180 (largura da régua)
|
||||||
|
#define BRAF_AZ_BEG (0.035 * safeZoneW)
|
||||||
|
#define BRAF_AZ_DIS (0.5375 * safeZoneW)
|
||||||
|
#define BRAF_AZ_NUM_OFFSET (-0.009 * safeZoneW)
|
||||||
|
#define BRAF_AZ_TXT_Y_OFFSET (-0.5 * 0.025 * safeZoneH)
|
||||||
|
|
||||||
|
// Elevação (vertical): Y do ponto onde está +30 (topo) e distância total até -120 (base)
|
||||||
|
// (no USAF eles mapeiam para Y)
|
||||||
|
#define BRAF_EZ_BEG (0.196289 * safeZoneH)
|
||||||
|
#define BRAF_EZ_DIS (0.684570 * safeZoneH)
|
||||||
|
#define BRAF_EZ_NUM_OFFSET (0 * safeZoneH)
|
||||||
@@ -0,0 +1,290 @@
|
|||||||
|
/*
|
||||||
|
Author: Brazilian Armed Forces
|
||||||
|
File: fn_flirControls.sqf
|
||||||
|
|
||||||
|
Objetivo:
|
||||||
|
- Atualizar indicadores de AZ (direção) e EZ (elevação) do POD FLIR em relação ao corpo da aeronave
|
||||||
|
- Atualizar indicação de Norte geográfico relativa ao centro do apontamento (compasso)
|
||||||
|
|
||||||
|
Padrão adotado:
|
||||||
|
- Mesmo padrão (carrot/tape):
|
||||||
|
* ler ctrlPosition
|
||||||
|
* calcular posição com BEG/DIS/OFFSET
|
||||||
|
* ctrlSetPosition + ctrlCommit 0
|
||||||
|
|
||||||
|
Observação:
|
||||||
|
- Este script assume que:
|
||||||
|
* os controles estão acessíveis via _display displayCtrl <IDC>
|
||||||
|
* existem constantes BEG/DIS/OFFSET para a régua horizontal (AZ) e vertical (EZ)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define IGUI_GROUP 170
|
||||||
|
#define BRAF_ELEV_ARROW 1901
|
||||||
|
#define BRAF_ELEV_TXT 1902
|
||||||
|
#define BRAF_AZ_ARROW 1903
|
||||||
|
#define BRAF_AZ_TXT 1904
|
||||||
|
#define BRAF_NORTH_ARROW 1905
|
||||||
|
|
||||||
|
#define BRAF_HDG_VALUE 1907
|
||||||
|
#define BRAF_IAS_VALUE 1909
|
||||||
|
#define BRAF_GS_VALUE 1911
|
||||||
|
#define BRAF_RALT_VALUE 1913
|
||||||
|
#define BRAF_BARO_VALUE 1915
|
||||||
|
#define BRAF_ROLL_VALUE 1917
|
||||||
|
#define BRAF_PTCH_VALUE 1919
|
||||||
|
|
||||||
|
#define BRAF_MIN_TURN -180
|
||||||
|
#define BRAF_MAX_TURN 180
|
||||||
|
#define BRAF_MIN_ELEV -120
|
||||||
|
#define BRAF_MAX_ELEV 30
|
||||||
|
#define BRAF_AZ_BEG (0.04 * safeZoneW)
|
||||||
|
#define BRAF_AZ_DIS (0.5375 * safeZoneW)
|
||||||
|
#define BRAF_AZ_NUM_OFFSET (0.5 * safeZoneW)
|
||||||
|
#define BRAF_AZ_TXT_Y_OFFSET (-1 * 0.025 * safeZoneH)
|
||||||
|
#define BRAF_EZ_BEG (0.215 * safeZoneH)
|
||||||
|
#define BRAF_EZ_DIS (0.52 * safeZoneH)
|
||||||
|
#define BRAF_EZ_NUM_OFFSET (0 * safeZoneH)
|
||||||
|
disableSerialization;
|
||||||
|
|
||||||
|
params ["_display"];
|
||||||
|
|
||||||
|
// Segurança: display inválido
|
||||||
|
if (isNull _display) exitWith {};
|
||||||
|
|
||||||
|
// Segurança: só atualiza quando estiver em optics
|
||||||
|
if (cameraView != "GUNNER") exitWith {};
|
||||||
|
|
||||||
|
// Veículo base (corpo)
|
||||||
|
private _veh = vehicle player;
|
||||||
|
if (isNull _veh) exitWith {};
|
||||||
|
|
||||||
|
// CORREÇÃO: Validar que os controles customizados existem antes de acessá-los
|
||||||
|
// Previne crashes se os IDCs não foram criados corretamente na config
|
||||||
|
if (isNull (_display displayCtrl BRAF_ELEV_ARROW)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle de seta de elevação (IDC 1901) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_AZ_ARROW)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle de seta de azimute (IDC 1903) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_ELEV_TXT)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle de texto de elevação (IDC 1902) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_AZ_TXT)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle de texto de azimute (IDC 1904) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_NORTH_ARROW)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle da bússola norte (IDC 1905) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_HDG_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle HDG (IDC 1907) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_IAS_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle IAS (IDC 1909) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_GS_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle GS (IDC 1911) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_RALT_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle RALT (IDC 1913) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_BARO_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle BARO (IDC 1915) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_ROLL_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle ROLL (IDC 1917) não encontrado!";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_PTCH_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF A-29] ERRO: Controle PTCH (IDC 1919) não encontrado!";
|
||||||
|
};
|
||||||
|
// ======================================================================
|
||||||
|
// 1) Captura da direção REAL da câmera (mundo) e conversão para o corpo
|
||||||
|
// ======================================================================
|
||||||
|
|
||||||
|
// Vetor forward real da câmera ativa (mundo)
|
||||||
|
private _p0 = positionCameraToWorld [0, 0, 0];
|
||||||
|
private _p1 = positionCameraToWorld [0, 0, 1];
|
||||||
|
private _vW = _p1 vectorDiff _p0;
|
||||||
|
|
||||||
|
private _lenW = vectorMagnitude _vW;
|
||||||
|
if (_lenW < 0.0001) exitWith {};
|
||||||
|
_vW = _vW vectorMultiply (1/_lenW);
|
||||||
|
|
||||||
|
// Direção absoluta (mundo) em RADIANOS para o compasso
|
||||||
|
// atan2 retorna radianos: 0 = norte, π/2 = leste, π ou -π = sul, -π/2 = oeste
|
||||||
|
private _absDir_rad = (_vW select 0) atan2 (_vW select 1);
|
||||||
|
|
||||||
|
// Normalizar para [0, 2π) para ficar positivo
|
||||||
|
if (_absDir_rad < 0) then {
|
||||||
|
_absDir_rad = _absDir_rad + (2 * pi);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Converte vetor para o referencial do veículo (corpo)
|
||||||
|
private _vM = _veh vectorWorldToModel _vW;
|
||||||
|
|
||||||
|
private _lenM = vectorMagnitude _vM;
|
||||||
|
if (_lenM < 0.0001) exitWith {};
|
||||||
|
_vM = _vM vectorMultiply (1/_lenM);
|
||||||
|
|
||||||
|
private _x = _vM select 0;
|
||||||
|
private _y = _vM select 1;
|
||||||
|
private _z = _vM select 2;
|
||||||
|
|
||||||
|
// AZIMUTH (yaw) relativo ao corpo: [-180..+180] em GRAUS
|
||||||
|
private _azimuth = (_x atan2 _y);
|
||||||
|
if (_azimuth > 180) then {
|
||||||
|
_azimuth = _azimuth - 360;
|
||||||
|
};
|
||||||
|
if (_azimuth < -180) then {
|
||||||
|
_azimuth = _azimuth + 360;
|
||||||
|
};
|
||||||
|
|
||||||
|
// ELEVATION (pitch) relativo ao corpo, permitindo < -90 em GRAUS
|
||||||
|
private _h = sqrt (_x*_x + _y*_y);
|
||||||
|
private _signY = if (_y < 0) then {
|
||||||
|
-1
|
||||||
|
} else {
|
||||||
|
1
|
||||||
|
};
|
||||||
|
private _yPrime = _h * _signY;
|
||||||
|
private _elevation = (_z atan2 _yPrime);
|
||||||
|
|
||||||
|
// Clamp nos limites do POD
|
||||||
|
_azimuth = _azimuth max BRAF_MIN_TURN min BRAF_MAX_TURN; // -180..+180
|
||||||
|
_elevation = _elevation max BRAF_MIN_ELEV min BRAF_MAX_ELEV; // -120..+30
|
||||||
|
|
||||||
|
// ======================================================================
|
||||||
|
// 2) TURRET AZ (Azimute/Direção Horizontal)
|
||||||
|
// ======================================================================
|
||||||
|
|
||||||
|
private _turretAZcarrotCtrlPos = ctrlPosition (_display displayCtrl BRAF_AZ_ARROW);
|
||||||
|
private _turretAZtextCtrlPos = ctrlPosition (_display displayCtrl BRAF_AZ_TXT);
|
||||||
|
|
||||||
|
// X do carrot na régua de -180..+180
|
||||||
|
// CORREÇÃO: Referências de constantes alteradas para BRAF_AZ_BEG e BRAF_AZ_DIS
|
||||||
|
private _azPosX = BRAF_AZ_BEG + (((_azimuth + 180) / 360) * BRAF_AZ_DIS);
|
||||||
|
|
||||||
|
// Atualizar posição da seta horizontal (carrot) - IDC 1903
|
||||||
|
(_display displayCtrl BRAF_AZ_ARROW) ctrlSetPosition [
|
||||||
|
_azPosX,
|
||||||
|
_turretAZcarrotCtrlPos select 1,
|
||||||
|
_turretAZcarrotCtrlPos select 2,
|
||||||
|
_turretAZcarrotCtrlPos select 3
|
||||||
|
];
|
||||||
|
(_display displayCtrl BRAF_AZ_ARROW) ctrlCommit 0;
|
||||||
|
|
||||||
|
// Atualizar valor numérico do azimute - IDC 1904
|
||||||
|
// O texto usa o mesmo centro X da seta e fica acima dela.
|
||||||
|
(_display displayCtrl BRAF_AZ_TXT) ctrlSetText str (round _azimuth);
|
||||||
|
|
||||||
|
private _azArrowW = _turretAZcarrotCtrlPos select 2;
|
||||||
|
private _azTextW = _turretAZtextCtrlPos select 2;
|
||||||
|
|
||||||
|
(_display displayCtrl BRAF_AZ_TXT) ctrlSetPosition [
|
||||||
|
_azPosX + ((_azArrowW - _azTextW) / 2),
|
||||||
|
(_turretAZcarrotCtrlPos select 1) + BRAF_AZ_TXT_Y_OFFSET,
|
||||||
|
_azTextW,
|
||||||
|
_turretAZtextCtrlPos select 3
|
||||||
|
];
|
||||||
|
(_display displayCtrl BRAF_AZ_TXT) ctrlCommit 0;
|
||||||
|
|
||||||
|
// ======================================================================
|
||||||
|
// 3) TURRET EZ (Elevação/pitch Vertical)
|
||||||
|
// Régua: +30 (topo) -> -120 (base)
|
||||||
|
// ======================================================================
|
||||||
|
|
||||||
|
private _turretEZcarrotCtrlPos = ctrlPosition (_display displayCtrl BRAF_ELEV_ARROW);
|
||||||
|
private _turretEZtextCtrlPos = ctrlPosition (_display displayCtrl BRAF_ELEV_TXT);
|
||||||
|
|
||||||
|
// tEl: 0 no topo (+30), 1 na base (-120)
|
||||||
|
private _tEl = (BRAF_MAX_ELEV - _elevation) / (BRAF_MAX_ELEV - BRAF_MIN_ELEV);
|
||||||
|
if (_tEl < 0) then {
|
||||||
|
_tEl = 0;
|
||||||
|
};
|
||||||
|
if (_tEl > 1) then {
|
||||||
|
_tEl = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Y da régua
|
||||||
|
// CORREÇÃO: Referências de constantes alteradas para BRAF_EZ_BEG e BRAF_EZ_DIS
|
||||||
|
private _elevPos = BRAF_EZ_BEG + (_tEl * BRAF_EZ_DIS);
|
||||||
|
|
||||||
|
// Atualizar posição da seta vertical (carrot) - IDC 1901
|
||||||
|
(_display displayCtrl BRAF_ELEV_ARROW) ctrlSetPosition [
|
||||||
|
_turretEZcarrotCtrlPos select 0,
|
||||||
|
_elevPos,
|
||||||
|
_turretEZcarrotCtrlPos select 2,
|
||||||
|
_turretEZcarrotCtrlPos select 3
|
||||||
|
];
|
||||||
|
(_display displayCtrl BRAF_ELEV_ARROW) ctrlCommit 0;
|
||||||
|
|
||||||
|
// Atualizar valor numérico da elevação - IDC 1902
|
||||||
|
(_display displayCtrl BRAF_ELEV_TXT) ctrlSetText str (round _elevation);
|
||||||
|
(_display displayCtrl BRAF_ELEV_TXT) ctrlSetPosition [
|
||||||
|
_turretEZtextCtrlPos select 0,
|
||||||
|
_elevPos + BRAF_EZ_NUM_OFFSET,
|
||||||
|
_turretEZtextCtrlPos select 2,
|
||||||
|
_turretEZtextCtrlPos select 3
|
||||||
|
];
|
||||||
|
// CORREÇÃO: Referência de constante alterada para BRAF_EZ_NUM_OFFSET
|
||||||
|
(_display displayCtrl BRAF_ELEV_TXT) ctrlCommit 0;
|
||||||
|
|
||||||
|
// ======================================================================
|
||||||
|
// 4) AIRCRAFT DATA - HDG / IAS / GS / RALT / BARO / ROLL / PTCH
|
||||||
|
// ======================================================================
|
||||||
|
|
||||||
|
private _hdg = round (getDir _veh);
|
||||||
|
private _ias = round (speed _veh);
|
||||||
|
private _gs = round ((vectorMagnitude (velocity _veh)) * 3.6);
|
||||||
|
private _ralt = round ((getPosATL _veh) select 2);
|
||||||
|
private _baro = round ((getPosASL _veh) select 2);
|
||||||
|
|
||||||
|
private _pitchBank = _veh call BIS_fnc_getPitchBank;
|
||||||
|
private _ptch = round (_pitchBank select 0);
|
||||||
|
private _roll = round (_pitchBank select 1);
|
||||||
|
|
||||||
|
private _ctrlHDG = _display displayCtrl BRAF_HDG_VALUE;
|
||||||
|
private _ctrlIAS = _display displayCtrl BRAF_IAS_VALUE;
|
||||||
|
private _ctrlGS = _display displayCtrl BRAF_GS_VALUE;
|
||||||
|
private _ctrlRALT = _display displayCtrl BRAF_RALT_VALUE;
|
||||||
|
private _ctrlBARO = _display displayCtrl BRAF_BARO_VALUE;
|
||||||
|
private _ctrlROLL = _display displayCtrl BRAF_ROLL_VALUE;
|
||||||
|
private _ctrlPTCH = _display displayCtrl BRAF_PTCH_VALUE;
|
||||||
|
|
||||||
|
if (!isNull _ctrlHDG) then {
|
||||||
|
_ctrlHDG ctrlSetText format ["%1", _hdg];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlIAS) then {
|
||||||
|
_ctrlIAS ctrlSetText format ["%1", _ias];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlGS) then {
|
||||||
|
_ctrlGS ctrlSetText format ["%1", _gs];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlRALT) then {
|
||||||
|
_ctrlRALT ctrlSetText format ["%1", _ralt];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlBARO) then {
|
||||||
|
_ctrlBARO ctrlSetText format ["%1", _baro];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlROLL) then {
|
||||||
|
_ctrlROLL ctrlSetText format ["%1", _roll];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlPTCH) then {
|
||||||
|
_ctrlPTCH ctrlSetText format ["%1", _ptch];
|
||||||
|
};
|
||||||
|
|
||||||
|
// ======================================================================
|
||||||
|
// 5) COMPASS N (Bússola Norte Geográfico)
|
||||||
|
// ======================================================================
|
||||||
|
|
||||||
|
// CORREÇÃO: Referência de IDC alterada:
|
||||||
|
// COMPASS_N_ARROW → BRAF_NORTH_ARROW (IDC 1905)
|
||||||
|
// Motivo: Alinhar com nomenclatura definida em braf_constants.h
|
||||||
|
//
|
||||||
|
// A fórmula: rotação_seta = -_absDir_rad
|
||||||
|
// Isso faz a seta apontar para o NORTE true em relação ao que a câmera vê:
|
||||||
|
// - Se câmera aponta NORTE: -0° → seta aponta PARA CIMA (norte)
|
||||||
|
// - Se câmera aponta LESTE: -π/2 → seta aponta PARA A ESQUERDA (norte relativo)
|
||||||
|
// - Se câmera aponta SUL: -π → seta aponta PARA BAIXO (norte relativo)
|
||||||
|
// - Se câmera aponta OESTE: -(-π/2) = +π/2 → seta aponta PARA A DIREITA (norte relativo)
|
||||||
|
|
||||||
|
(_display displayCtrl BRAF_NORTH_ARROW) ctrlSetAngle [ -_absDir_rad, 0.5, 0.5 ];
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
Author: Brazilian Armed Forces
|
||||||
|
File: fn_initRSC.sqf
|
||||||
|
|
||||||
|
Objetivo:
|
||||||
|
- Cria e gerencia o loop EachFrame que chama uma função de atualização BRAF_fnc_flirControls
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
disableSerialization;
|
||||||
|
|
||||||
|
params ["_display"];
|
||||||
|
|
||||||
|
// Diagnóstico: Verificar se a função está definida
|
||||||
|
if (isNil "BRAF_fnc_flirControls") then {
|
||||||
|
systemChat "[BRAF A-29] AVISO: BRAF_fnc_flirControls não foi carregada!";
|
||||||
|
};
|
||||||
|
|
||||||
|
uiNamespace setVariable ["BRAF_A29_UI_Display", _display];
|
||||||
|
|
||||||
|
if ((uiNamespace getVariable ["BRAF_A29_PFH_eachFrame", -1]) > -1) then {
|
||||||
|
removeMissionEventHandler ["EachFrame", (uiNamespace getVariable "BRAF_A29_PFH_eachFrame")];
|
||||||
|
uiNamespace setVariable ["BRAF_A29_PFH_eachFrame", nil];
|
||||||
|
};
|
||||||
|
|
||||||
|
private _pfh = addMissionEventHandler ["EachFrame", {
|
||||||
|
if (cameraView != "GUNNER") exitWith {};
|
||||||
|
|
||||||
|
private _display = uiNamespace getVariable ["BRAF_A29_UI_Display", displayNull];
|
||||||
|
|
||||||
|
if (isNull _display) exitWith {
|
||||||
|
removeMissionEventHandler ["EachFrame", (uiNamespace getVariable "BRAF_A29_PFH_eachFrame")];
|
||||||
|
uiNamespace setVariable ["BRAF_A29_PFH_eachFrame", nil];
|
||||||
|
uiNamespace setVariable ["BRAF_A29_UI_Display", nil];
|
||||||
|
};
|
||||||
|
|
||||||
|
private _veh = vehicle player;
|
||||||
|
if (isNull _veh) exitWith {
|
||||||
|
removeMissionEventHandler ["EachFrame", (uiNamespace getVariable "BRAF_A29_PFH_eachFrame")];
|
||||||
|
uiNamespace setVariable ["BRAF_A29_PFH_eachFrame", nil];
|
||||||
|
uiNamespace setVariable ["BRAF_A29_UI_Display", nil];
|
||||||
|
};
|
||||||
|
|
||||||
|
[_display] call BRAF_fnc_flirControls;
|
||||||
|
}];
|
||||||
|
|
||||||
|
uiNamespace setVariable ["BRAF_A29_PFH_eachFrame", _pfh];
|
||||||
|
//systemChat "[BRAF A-29] Sistema FLIR iniciado com sucesso";
|
||||||
+1
-1
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
Requirments:
|
Requirments:
|
||||||
|
|
||||||
- Compatible aircrafat must have a config definition for all sub-sytems that will be invoked by this function.
|
- Compatible aircraft must have a config definition for all sub-sytems that will be invoked by this function.
|
||||||
|
|
||||||
1- Aircrfat model must have memory a point called "smoker_spawn" definig the position where to attach smoke generator.
|
1- Aircrfat model must have memory a point called "smoker_spawn" definig the position where to attach smoke generator.
|
||||||
|
|
||||||
+133
-144
@@ -1,11 +1,8 @@
|
|||||||
class CfgPatches
|
class CfgPatches {
|
||||||
{
|
class BRAF_Air2 {
|
||||||
class BRAF_Air2
|
|
||||||
{
|
|
||||||
author = "BRAF Team";
|
author = "BRAF Team";
|
||||||
addonRootClass = "braf";
|
addonRootClass = "braf";
|
||||||
requiredAddons[] =
|
requiredAddons[] = {
|
||||||
{
|
|
||||||
"A3_Air_F",
|
"A3_Air_F",
|
||||||
"A3_Air_F_Jets",
|
"A3_Air_F_Jets",
|
||||||
"A3_Air_F_Jets_Plane_Fighter_04",
|
"A3_Air_F_Jets_Plane_Fighter_04",
|
||||||
@@ -18,77 +15,74 @@ class CfgPatches
|
|||||||
"BRAF_Air",
|
"BRAF_Air",
|
||||||
};
|
};
|
||||||
requiredVersion = 0.1;
|
requiredVersion = 0.1;
|
||||||
units[] =
|
units[] = {
|
||||||
{
|
// Aircrafts
|
||||||
// Aircrafts
|
"BRAF_Gripen",
|
||||||
"BRAF_Gripen",
|
"BRAF_A29A",
|
||||||
"BRAF_A29A",
|
"BRAF_A29_EDA",
|
||||||
"BRAF_A29_EDA",
|
"BRAF_A29B",
|
||||||
"BRAF_A29B",
|
"BRAF_A29B_90k",
|
||||||
"BRAF_A29B_90k",
|
"BRAF_A29B_100k",
|
||||||
"BRAF_A29B_100k",
|
"BRAF_A29B_Jambock",
|
||||||
"BRAF_A29B_Jambock",
|
|
||||||
|
|
||||||
// Wreck_Model
|
|
||||||
"BRAF_A29A_wreck_F",
|
|
||||||
|
|
||||||
// Canopy
|
|
||||||
"BRAF_A29_canopy",
|
|
||||||
"BRAF_A29_canopy_EDA",
|
|
||||||
"BRAF_A29_canopy_Jambock",
|
|
||||||
|
|
||||||
//Ejection_Seats
|
|
||||||
"BRAF_ejection_seat_base",
|
|
||||||
"BRAF_ejection_seat_A29"
|
|
||||||
};
|
|
||||||
weapons[] =
|
|
||||||
{
|
|
||||||
// MG
|
|
||||||
"BRAF_M3W_A29",
|
|
||||||
|
|
||||||
// Master Safe
|
// Wreck_Model
|
||||||
"BRAF_master_arm_safe",
|
"BRAF_A29A_wreck_F",
|
||||||
|
|
||||||
// AA Missile
|
|
||||||
"BRAF_MAA1A_Launcher_weapon",
|
|
||||||
|
|
||||||
// Rockets
|
// Canopy
|
||||||
"BRAF_EQ_LMF_70_19_he_weapon",
|
"BRAF_A29_canopy",
|
||||||
"BRAF_EQ_LMF_70_19_ap_weapon",
|
"BRAF_A29_canopy_EDA",
|
||||||
"BRAF_EQ_LMF_70_7_he_weapon",
|
"BRAF_A29_canopy_Jambock",
|
||||||
"BRAF_EQ_LMF_70_7_ap_weapon",
|
|
||||||
|
// Ejection_Seats
|
||||||
// Bombs
|
"BRAF_ejection_seat_base",
|
||||||
"BRAF_EFT_weapon",
|
"BRAF_ejection_seat_A29"};
|
||||||
"BRAF_Mk82_weapon",
|
weapons[] = {
|
||||||
"BRAF_M117_weapon",
|
// MG
|
||||||
"BRAF_GBU12_weapon",
|
"BRAF_M3W_A29",
|
||||||
"BRAF_GBU58_weapon"
|
|
||||||
};
|
// Master Safe
|
||||||
|
"BRAF_master_arm_safe",
|
||||||
|
|
||||||
|
// AA Missile
|
||||||
|
"BRAF_MAA1A_Launcher_weapon",
|
||||||
|
|
||||||
|
// Rockets
|
||||||
|
"BRAF_EQ_LMF_70_19_he_weapon",
|
||||||
|
"BRAF_EQ_LMF_70_19_ap_weapon",
|
||||||
|
"BRAF_EQ_LMF_70_7_he_weapon",
|
||||||
|
"BRAF_EQ_LMF_70_7_ap_weapon",
|
||||||
|
|
||||||
|
// Bombs
|
||||||
|
"BRAF_EFT_weapon",
|
||||||
|
"BRAF_Mk82_weapon",
|
||||||
|
"BRAF_M117_weapon",
|
||||||
|
"BRAF_GBU12_weapon",
|
||||||
|
"BRAF_GBU58_weapon"};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class CfgFunctions {
|
class CfgFunctions {
|
||||||
class BRAF {
|
class BRAF {
|
||||||
tag = "BRAF";
|
tag = "BRAF";
|
||||||
class functions
|
class functions {
|
||||||
{
|
class EjectCopilot {
|
||||||
class EjectCopilot
|
file = "braf\braf_air2\braf_fnc\fn_copilot_eject.sqf";
|
||||||
{
|
|
||||||
file = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\fnc\fn_copilot_eject.sqf";
|
|
||||||
};
|
};
|
||||||
class EjectPilot
|
class EjectPilot {
|
||||||
{
|
file = "braf\braf_air2\braf_fnc\fn_pilot_eject.sqf";
|
||||||
file = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\fnc\fn_pilot_eject.sqf";
|
|
||||||
};
|
};
|
||||||
class Smoker
|
class Smoker {
|
||||||
{
|
file = "braf\braf_air2\braf_fnc\fn_smoker.sqf";
|
||||||
file = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\fnc\fn_smoker.sqf";
|
|
||||||
};
|
};
|
||||||
class RemoveBeforeFlight
|
/*class RemoveBeforeFlight
|
||||||
{
|
{
|
||||||
file = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\fnc\fn_remove_before_flight.sqf";
|
file = "braf\braf_air2\braf_fnc\fn_remove_before_flight.sqf";
|
||||||
};
|
};*/
|
||||||
|
};
|
||||||
|
class UI {
|
||||||
|
file = "braf\braf_air2\braf_fnc";
|
||||||
|
class initRSC {};
|
||||||
|
class flirControls {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -114,99 +108,94 @@ class SensorTemplateIR;
|
|||||||
class SensorTemplateVisual;
|
class SensorTemplateVisual;
|
||||||
class SensorTemplateMan;
|
class SensorTemplateMan;
|
||||||
class SensorTemplateNV;
|
class SensorTemplateNV;
|
||||||
class DefaultVehicleSystemsDisplayManagerLeft
|
class DefaultVehicleSystemsDisplayManagerLeft {
|
||||||
{
|
class components;
|
||||||
class components;
|
|
||||||
};
|
};
|
||||||
class DefaultVehicleSystemsDisplayManagerRight
|
class DefaultVehicleSystemsDisplayManagerRight {
|
||||||
{
|
class components;
|
||||||
class components;
|
|
||||||
};
|
};
|
||||||
class VehicleSystemsTemplateLeftPilot: DefaultVehicleSystemsDisplayManagerLeft
|
class VehicleSystemsTemplateLeftPilot
|
||||||
{
|
: DefaultVehicleSystemsDisplayManagerLeft {
|
||||||
class components;
|
class components;
|
||||||
};
|
};
|
||||||
class VehicleSystemsTemplateRightPilot: DefaultVehicleSystemsDisplayManagerRight
|
class VehicleSystemsTemplateRightPilot
|
||||||
{
|
: DefaultVehicleSystemsDisplayManagerRight {
|
||||||
class components;
|
class components;
|
||||||
};
|
};
|
||||||
class VehicleSystemsTemplateLeftDriver: DefaultVehicleSystemsDisplayManagerLeft
|
class VehicleSystemsTemplateLeftDriver
|
||||||
{
|
: DefaultVehicleSystemsDisplayManagerLeft {
|
||||||
class components;
|
class components;
|
||||||
};
|
};
|
||||||
class VehicleSystemsTemplateRightDriver: DefaultVehicleSystemsDisplayManagerRight
|
class VehicleSystemsTemplateRightDriver
|
||||||
{
|
: DefaultVehicleSystemsDisplayManagerRight {
|
||||||
class components;
|
class components;
|
||||||
};
|
};
|
||||||
class VehicleSystemsTemplateLeftCommander: DefaultVehicleSystemsDisplayManagerLeft
|
class VehicleSystemsTemplateLeftCommander
|
||||||
{
|
: DefaultVehicleSystemsDisplayManagerLeft {
|
||||||
class components;
|
class components;
|
||||||
};
|
};
|
||||||
class VehicleSystemsTemplateRightCommander: DefaultVehicleSystemsDisplayManagerRight
|
class VehicleSystemsTemplateRightCommander
|
||||||
{
|
: DefaultVehicleSystemsDisplayManagerRight {
|
||||||
class components;
|
class components;
|
||||||
};
|
};
|
||||||
class VehicleSystemsTemplateLeftGunner: DefaultVehicleSystemsDisplayManagerLeft
|
class VehicleSystemsTemplateLeftGunner
|
||||||
{
|
: DefaultVehicleSystemsDisplayManagerLeft {
|
||||||
class components;
|
class components;
|
||||||
};
|
};
|
||||||
class VehicleSystemsTemplateRightGunner: DefaultVehicleSystemsDisplayManagerRight
|
class VehicleSystemsTemplateRightGunner
|
||||||
{
|
: DefaultVehicleSystemsDisplayManagerRight {
|
||||||
class components;
|
class components;
|
||||||
};
|
};
|
||||||
class RCWSOptics;
|
class RCWSOptics;
|
||||||
class Optics_Armored;
|
class Optics_Armored;
|
||||||
#include "BRAF_Optics_Air2\BRAF_AirOptics.hpp"
|
|
||||||
#include "braf_air_anim\CfgMovesBasic.hpp"
|
#include "braf_air_anim\CfgMovesBasic.hpp"
|
||||||
class CfgVehicles
|
#include "braf_optics_air2\BRAF_AirOptics.hpp"
|
||||||
{
|
class CfgVehicles {
|
||||||
class Air;
|
class Air;
|
||||||
class Plane: Air
|
class ParachuteBase;
|
||||||
{
|
class B_Parachute;
|
||||||
class NewTurret;
|
class Steerable_Parachute_F;
|
||||||
class ViewPilot;
|
class NonSteerable_Parachute_F;
|
||||||
class HitPoints
|
class Plane : Air {
|
||||||
{
|
class NewTurret;
|
||||||
class HitHull;
|
class ViewPilot;
|
||||||
};
|
class HitPoints {
|
||||||
};
|
class HitHull;
|
||||||
class Plane_Base_F: Plane
|
};
|
||||||
{
|
};
|
||||||
class AnimationSources;
|
class Plane_Base_F : Plane {
|
||||||
class HitPoints: HitPoints
|
class AnimationSources;
|
||||||
{
|
class HitPoints : HitPoints {
|
||||||
class HitHull;
|
class HitHull;
|
||||||
};
|
};
|
||||||
class Turrets
|
class Turrets {
|
||||||
{
|
class CopilotTurret;
|
||||||
class CopilotTurret;
|
};
|
||||||
};
|
};
|
||||||
};
|
class Plane_Fighter_03_base_F : Plane_Base_F {
|
||||||
class Plane_Fighter_03_base_F : Plane_Base_F
|
class AnimationSources;
|
||||||
{
|
};
|
||||||
class AnimationSources;
|
class Plane_Fighter_04_Base_F : Plane_Base_F {};
|
||||||
};
|
class I_Plane_Fighter_04_F : Plane_Fighter_04_Base_F {};
|
||||||
class Plane_Fighter_04_Base_F : Plane_Base_F {};
|
class Ejection_Seat_Base_F;
|
||||||
class I_Plane_Fighter_04_F : Plane_Fighter_04_Base_F {};
|
class Plane_Canopy_Base_F;
|
||||||
class Ejection_Seat_Base_F;
|
|
||||||
class Plane_Canopy_Base_F;
|
|
||||||
|
|
||||||
// Attack and Fighter
|
// Attack and Fighter
|
||||||
#include "BRAF_airplanes\braf_super_tucano\a29_base.hpp"
|
#include "BRAF_airplanes\braf_super_tucano\a29_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\a4_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\a4_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\amx_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\amx_base.hpp"
|
||||||
#include "BRAF_airplanes\braf_gripen\f39_base.hpp"
|
#include "BRAF_airplanes\braf_gripen\f39_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\f5_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\f5_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\t27_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\t27_base.hpp"
|
||||||
|
|
||||||
// Patrol and Transport
|
// Patrol and Transport
|
||||||
//#include "BRAF_airplanes\braf_gripen\c95_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\c95_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\c105_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\c105_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\c130_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\c130_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\c390_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\c390_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\c98_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\c98_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\p95_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\p95_base.hpp"
|
||||||
//#include "BRAF_airplanes\braf_gripen\p3m_base.hpp"
|
// #include "BRAF_airplanes\braf_gripen\p3m_base.hpp"
|
||||||
};
|
};
|
||||||
#include "BRAF_Air_Weap2\Ammo.hpp"
|
#include "BRAF_Air_Weap2\Ammo.hpp"
|
||||||
#include "BRAF_Air_Weap2\Magazines.hpp"
|
#include "BRAF_Air_Weap2\Magazines.hpp"
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
braf_air2\braf_airplanes\braf_super_tucano\data\a29_sms_co.png
|
||||||
|
braf_air2\braf_optics_air2\a29\data\braf_a29_reticulo_m_white_ca.png
|
||||||
|
braf_air2\braf_optics_air2\a29\data\braf_a29_reticulo_n_white_ca.png
|
||||||
|
braf_air2\braf_optics_air2\a29\data\braf_a29_reticulo_w_white_ca.png
|
||||||
Reference in New Issue
Block a user