Braf_Air2 atualizado
This commit is contained in:
18
.vscode/c_cpp_properties.json
vendored
Normal file
18
.vscode/c_cpp_properties.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "windows-gcc-x64",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"compilerPath": "gcc",
|
||||
"cStandard": "${default}",
|
||||
"cppStandard": "${default}",
|
||||
"intelliSenseMode": "windows-gcc-x64",
|
||||
"compilerArgs": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
24
.vscode/launch.json
vendored
Normal file
24
.vscode/launch.json
vendored
Normal file
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
59
.vscode/settings.json
vendored
Normal file
59
.vscode/settings.json
vendored
Normal file
@@ -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
braf_air2/.vscode/c_cpp_properties.json
vendored
Normal file
18
braf_air2/.vscode/c_cpp_properties.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "windows-gcc-x64",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"compilerPath": "gcc",
|
||||
"cStandard": "${default}",
|
||||
"cppStandard": "${default}",
|
||||
"intelliSenseMode": "windows-gcc-x64",
|
||||
"compilerArgs": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
24
braf_air2/.vscode/launch.json
vendored
Normal file
24
braf_air2/.vscode/launch.json
vendored
Normal file
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
59
braf_air2/.vscode/settings.json
vendored
Normal file
59
braf_air2/.vscode/settings.json
vendored
Normal file
@@ -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.
BIN
braf_air2/BRAF_Optics_Air2/A29/data/BRAF_A29_reticulo_m_white_ca.png
LFS
Normal file
BIN
braf_air2/BRAF_Optics_Air2/A29/data/BRAF_A29_reticulo_m_white_ca.png
LFS
Normal file
Binary file not shown.
Binary file not shown.
BIN
braf_air2/BRAF_Optics_Air2/A29/data/BRAF_A29_reticulo_n_white_ca.png
LFS
Normal file
BIN
braf_air2/BRAF_Optics_Air2/A29/data/BRAF_A29_reticulo_n_white_ca.png
LFS
Normal file
Binary file not shown.
Binary file not shown.
BIN
braf_air2/BRAF_Optics_Air2/A29/data/BRAF_A29_reticulo_w_white_ca.png
LFS
Normal file
BIN
braf_air2/BRAF_Optics_Air2/A29/data/BRAF_A29_reticulo_w_white_ca.png
LFS
Normal file
Binary file not shown.
BIN
braf_air2/BRAF_Optics_Air2/A29/data/braf_arrow_hor_ca.paa
LFS
Normal file
BIN
braf_air2/BRAF_Optics_Air2/A29/data/braf_arrow_hor_ca.paa
LFS
Normal file
Binary file not shown.
BIN
braf_air2/BRAF_Optics_Air2/A29/data/braf_arrow_north_ca.paa
LFS
Normal file
BIN
braf_air2/BRAF_Optics_Air2/A29/data/braf_arrow_north_ca.paa
LFS
Normal file
Binary file not shown.
BIN
braf_air2/BRAF_Optics_Air2/A29/data/braf_arrow_north_ca.png
LFS
Normal file
BIN
braf_air2/BRAF_Optics_Air2/A29/data/braf_arrow_north_ca.png
LFS
Normal file
Binary file not shown.
BIN
braf_air2/BRAF_Optics_Air2/A29/data/braf_arrow_vert_ca.paa
LFS
Normal file
BIN
braf_air2/BRAF_Optics_Air2/A29/data/braf_arrow_vert_ca.paa
LFS
Normal file
Binary file not shown.
@@ -23,21 +23,6 @@ class CfgModels
|
||||
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
|
||||
{
|
||||
|
||||
@@ -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 RscUnitInfo;
|
||||
class RscControlsGroup
|
||||
{
|
||||
class VScrollbar;
|
||||
class HScrollbar;
|
||||
class Controls;
|
||||
};
|
||||
class RscControlsGroup;
|
||||
class RscControlsGroupNoScrollbars;
|
||||
class CA_HUDRscControlsGroup;
|
||||
class RscText;
|
||||
class RangeText: RscText{};
|
||||
class RscPicture;
|
||||
class RscOpticsText;
|
||||
class RscOpticsValue;
|
||||
class RscIGProgress;
|
||||
|
||||
class RscInGameUI
|
||||
{
|
||||
class RscOptics_MBT_01_gunner;
|
||||
class BRAF_RscOptics_A29: RscUnitInfo
|
||||
{
|
||||
idd=300;
|
||||
controls[]=
|
||||
{
|
||||
"CA_IGUI_elements_group"
|
||||
};
|
||||
class CA_IGUI_elements_group: RscControlsGroup
|
||||
{
|
||||
idc=170;
|
||||
class VScrollbar: VScrollbar
|
||||
{
|
||||
width=0;
|
||||
};
|
||||
class HScrollbar: HScrollbar
|
||||
{
|
||||
height=0;
|
||||
};
|
||||
x="0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||
y="0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||
w="70";
|
||||
h="40 * (0.025 * SafezoneH)";
|
||||
class controls
|
||||
{
|
||||
class ValueDistance: RscText
|
||||
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 = "-4 * (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;
|
||||
idc=198;
|
||||
text="245678";
|
||||
colorText[] = {0,0,0,1};
|
||||
colorBackground[] = {0,0,0,0};
|
||||
@@ -66,7 +94,7 @@ class RscInGameUI
|
||||
x="10 * (0.01875 * SafezoneH)";
|
||||
y="34 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class Textweapon: ValueGrid
|
||||
class TextGrid: ValueGrid
|
||||
{
|
||||
style=0;
|
||||
idc=1801;
|
||||
@@ -144,6 +172,22 @@ class RscInGameUI
|
||||
y="35.75 * (0.025 * 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
|
||||
{
|
||||
idc=152;
|
||||
@@ -151,18 +195,19 @@ class RscInGameUI
|
||||
style=0;
|
||||
shadow=0;
|
||||
font="EtelkaMonospacePro";
|
||||
text="DAY";
|
||||
x="1 * (0.01875 * SafezoneH)";
|
||||
text="DTV";
|
||||
x="4.5 * (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)";
|
||||
x="7 * (0.01875 * SafezoneH)";
|
||||
};
|
||||
class CA_Laser: RscText
|
||||
{
|
||||
@@ -173,73 +218,251 @@ class RscInGameUI
|
||||
shadow=0;
|
||||
font="EtelkaMonospacePro";
|
||||
text="\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
|
||||
x="31.1 * (0.01875 * SafezoneH)";
|
||||
y="12.85 * (0.025 * SafezoneH)";
|
||||
x="33 * (0.01875 * SafezoneH)";
|
||||
y="8 * (0.025 * SafezoneH)";
|
||||
w="3.5 * (0.01875 * SafezoneH)";
|
||||
h="1.5 * (0.025 * SafezoneH)";
|
||||
};
|
||||
//class braf_tri_vert: RscPicture
|
||||
//{
|
||||
// idc = 1806;
|
||||
// text = "rhsusf\addons\rhsusf_optics\data\tex\tri_vert.paa";
|
||||
// x = "12.9 * (0.01875 * SafezoneH)";
|
||||
// y = "14.65 * (0.025 * SafezoneH)";
|
||||
// w = "0.7 * (0.01875 * SafezoneH)";
|
||||
// h = "1.1 * (0.025 * SafezoneH)";
|
||||
//};
|
||||
//class braf_tri_horiz: braf_tri_vert
|
||||
//{
|
||||
// idc = 1807;
|
||||
// text = "rhsusf\addons\rhsusf_optics\data\tex\tri_hor.paa";
|
||||
// x = "26.1 * (0.01875 * SafezoneH)";
|
||||
// y = "26.8 * (0.025 * SafezoneH)";
|
||||
// w = "1.1 * (0.01875 * SafezoneH)";
|
||||
// h = "0.7 * (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 = 0;
|
||||
sizeEx = "0.03*SafezoneH";
|
||||
x = "-0.5 * (0.01875 * SafezoneH)";
|
||||
y = "16.6 * (0.025 * SafezoneH)";
|
||||
w = "2.1 * (0.01875 * SafezoneH)";
|
||||
h = "2.1 * (0.025 * SafezoneH)";
|
||||
color[] = {1,1,1,1};
|
||||
colorBackground[] = {0,0,0,0};
|
||||
};
|
||||
class braf_elev_value: RscText
|
||||
{
|
||||
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 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;
|
||||
minFov=0.4;
|
||||
maxFov=0.4;
|
||||
visionMode[]=
|
||||
{
|
||||
"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;
|
||||
opticsDisplayName = "NFOV 2X";
|
||||
initFov = 0.0070;
|
||||
minFov = 0.0070;
|
||||
maxFov = 0.0070;
|
||||
};
|
||||
class Medium: Wide
|
||||
class UltraNarrow: Narrow
|
||||
{
|
||||
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;
|
||||
opticsDisplayName = "NFOV 4X";
|
||||
initFov = 0.0035;
|
||||
minFov = 0.0035;
|
||||
maxFov = 0.0035;
|
||||
};
|
||||
};
|
||||
class BRAF_Fennec_Gunner_Optics: BRAF_A29_Gunner_Optics
|
||||
{
|
||||
class Wide;
|
||||
class Medium;
|
||||
class Narrow;
|
||||
class Narrower;
|
||||
class UltraNarrow;
|
||||
};
|
||||
|
||||
315
braf_air2/BRAF_Optics_Air2/BRAF_AirOptics_bk.hpp
Normal file
315
braf_air2/BRAF_Optics_Air2/BRAF_AirOptics_bk.hpp
Normal file
@@ -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.
BIN
braf_air2/braf_air_anim/braf_ejection_chute.zip
LFS
Normal file
BIN
braf_air2/braf_air_anim/braf_ejection_chute.zip
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_air_anim/braf_landing_anim.rtm
LFS
Normal file
BIN
braf_air2/braf_air_anim/braf_landing_anim.rtm
LFS
Normal file
Binary file not shown.
@@ -5,8 +5,10 @@ class CfgMovesBasic
|
||||
{
|
||||
A29_Pilot="A29_Pilot";
|
||||
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";
|
||||
speed=0.5;
|
||||
looped="false";
|
||||
terminal=true;
|
||||
looped= 0;
|
||||
terminal= 1;
|
||||
file="braf\braf_air2\Braf_air_anim\a29_pilot_kia.rtm";
|
||||
connectTo[]={"DeadState", 0.1};
|
||||
};
|
||||
@@ -30,19 +32,29 @@ class CfgMovesMaleSdr : CfgMovesBasic
|
||||
interpolateTo[]={"A29_Pilot_Dead", 1};
|
||||
};
|
||||
/*
|
||||
class A29_Copilot_Dead: DefaultDie
|
||||
class braf_ejection_chute_KIA: DefaultDie
|
||||
{
|
||||
actions="DeadActions";
|
||||
speed=0.5;
|
||||
looped="false";
|
||||
terminal=true;
|
||||
file="braf\braf_air2\Braf_air_anim\a29_copilot_kia.rtm";
|
||||
actions = "DeadActions";
|
||||
file = "\braf\braf_air2\braf_air_anim\braf_ejection_chute_KIA.rtm";
|
||||
speed = 0.5;
|
||||
terminal = 1;
|
||||
soundEnabled = 0;
|
||||
looped = 0;
|
||||
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";
|
||||
interpolateTo[]={"A29_Copilot_Dead", 1};
|
||||
file = "\braf\braf_air2\braf_air_anim\braf_ejection_chute_init.rtm";
|
||||
interpolateTo[]={"braf_ejection_chute_KIA", 1};
|
||||
interpolationSpeed = 1;
|
||||
speed = -4;
|
||||
hideWeaponsDriver = 1;
|
||||
hideWeaponsGunner = 1;
|
||||
hideWeaponsCargo = 1;
|
||||
looped = 0;
|
||||
useIdles = 0;
|
||||
leftHandIKCurve[] = {1};
|
||||
rightHandIKCurve[] = {1};
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_high_in.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_high_in.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_high_out.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_high_out.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_low_in.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_low_in.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_low_out.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_low_out.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_shutdown.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_shutdown.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_start.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/engine_start.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/flaps.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/flaps.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/forsage_ext.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/forsage_ext.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/gear_down.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/gear_down.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/gear_up.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/gear_up.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/stall_horn.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/stall_horn.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/wind_int.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/wind_int.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/wind_out.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/wind_out.ogg
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/xcarfltn2strt.ogg
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/Sounds/xcarfltn2strt.ogg
LFS
Normal file
Binary file not shown.
@@ -84,7 +84,7 @@ class Stage6
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture = "a3\data\env_land_co.paa";
|
||||
texture = "a3\data_f\env_land_co.paa";
|
||||
useWorldEnvMap="true";
|
||||
uvSource="tex";
|
||||
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";
|
||||
};
|
||||
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/ejection_chute_as.paa
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/ejection_chute_as.paa
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/ejection_chute_co.paa
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/ejection_chute_co.paa
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/ejection_chute_nohq.paa
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/ejection_chute_nohq.paa
LFS
Normal file
Binary file not shown.
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/ejection_chute_smdi.paa
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/Data/ejection_chute_smdi.paa
LFS
Normal file
Binary file not shown.
@@ -285,7 +285,7 @@ class braf_A29_base: Plane_Fighter_03_base_F
|
||||
armor=2;
|
||||
explosionShielding=3;
|
||||
passThrough=0.3;
|
||||
radius=0.2L;
|
||||
radius=0.2;
|
||||
minimalHit=0.05;
|
||||
};
|
||||
class HitLCElevator: HitHull
|
||||
@@ -1014,7 +1014,7 @@ class braf_A29_base: Plane_Fighter_03_base_F
|
||||
};
|
||||
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";
|
||||
};
|
||||
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)";
|
||||
statement="this animate ['BackEICASMotion',1] && this animate ['BackFLIrMotion',0]";
|
||||
};
|
||||
class BRAF_A29B_Eject
|
||||
class BRAF_A29B_Pilot_Eject
|
||||
{
|
||||
priority=0.05;
|
||||
shortcut="Eject";
|
||||
displayName="<t color='#FF0000'>Eject</t>";
|
||||
condition="(player in this) && {speed this > 1}";
|
||||
statement="[this] spawn BRAF_fnc_EjectPilot; [this] call BRAF_fnc_EjectCopilot";
|
||||
position="pilotcontrol";
|
||||
radius=10;
|
||||
onlyforplayer=1;
|
||||
showWindow=0;
|
||||
hideOnUse=1;
|
||||
priority=0.05;
|
||||
shortcut="Eject";
|
||||
displayName="<t color='#FF0000'>Eject - Pilot</t>";
|
||||
condition="(driver this == player) && {speed this > 1}";
|
||||
statement="[this] spawn BRAF_fnc_EjectPilot";
|
||||
position="pilotcontrol";
|
||||
radius=10;
|
||||
onlyforplayer=1;
|
||||
showWindow=0;
|
||||
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;
|
||||
@@ -1627,6 +1633,12 @@ class braf_A29B: BRAF_A29_base
|
||||
class Narrow: Narrow
|
||||
{
|
||||
};
|
||||
class Narrower: Narrower
|
||||
{
|
||||
};
|
||||
class UltraNarrow: UltraNarrow
|
||||
{
|
||||
};
|
||||
};
|
||||
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\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[]=
|
||||
{
|
||||
"FAB_100k",1
|
||||
"FAB_90k",1
|
||||
};
|
||||
};
|
||||
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";
|
||||
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";
|
||||
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\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[]=
|
||||
{
|
||||
"FAB_90k",1
|
||||
"FAB_100k",1
|
||||
};
|
||||
};
|
||||
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\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[]=
|
||||
{
|
||||
"FAB_Jambock",1
|
||||
@@ -2317,3 +2401,63 @@ class braf_ejection_seat_A29: braf_ejection_seat_base
|
||||
};
|
||||
};
|
||||
};
|
||||
/*
|
||||
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"
|
||||
};
|
||||
};
|
||||
*/
|
||||
BIN
braf_air2/braf_airplanes/braf_super_tucano/braf_ejection_chute.p3d
LFS
Normal file
BIN
braf_air2/braf_airplanes/braf_super_tucano/braf_ejection_chute.p3d
LFS
Normal file
Binary file not shown.
@@ -1,4 +1,3 @@
|
||||
// GENERAL
|
||||
maxSpeed=800;
|
||||
enginePower=1.193;
|
||||
landingAOA=__EVAL(3*3.1415/180);
|
||||
|
||||
@@ -178,6 +178,12 @@ class CfgSkeletons
|
||||
"canopy",""
|
||||
};
|
||||
};
|
||||
class Skeleton
|
||||
{
|
||||
isDiscrete=0;
|
||||
skeletonInherit="";
|
||||
skeletonBones[]={"body", "", "striska", "", "fl", "", "bl", "", "fm", "", "mb", "", "fr", "", "rb", ""};
|
||||
};
|
||||
};
|
||||
class CfgModels
|
||||
{
|
||||
@@ -1222,6 +1228,21 @@ class CfgModels
|
||||
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_A29_wreck: braf_A29{};
|
||||
|
||||
28
braf_air2/braf_fnc/braf_constants.h
Normal file
28
braf_air2/braf_fnc/braf_constants.h
Normal file
@@ -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)
|
||||
290
braf_air2/braf_fnc/fn_flirControls.sqf
Normal file
290
braf_air2/braf_fnc/fn_flirControls.sqf
Normal file
@@ -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 ];
|
||||
48
braf_air2/braf_fnc/fn_initRSC.sqf
Normal file
48
braf_air2/braf_fnc/fn_initRSC.sqf
Normal file
@@ -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";
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
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,11 +1,8 @@
|
||||
class CfgPatches
|
||||
{
|
||||
class BRAF_Air2
|
||||
{
|
||||
class CfgPatches {
|
||||
class BRAF_Air2 {
|
||||
author = "BRAF Team";
|
||||
addonRootClass = "braf";
|
||||
requiredAddons[] =
|
||||
{
|
||||
requiredAddons[] = {
|
||||
"A3_Air_F",
|
||||
"A3_Air_F_Jets",
|
||||
"A3_Air_F_Jets_Plane_Fighter_04",
|
||||
@@ -18,77 +15,74 @@ class CfgPatches
|
||||
"BRAF_Air",
|
||||
};
|
||||
requiredVersion = 0.1;
|
||||
units[] =
|
||||
{
|
||||
// Aircrafts
|
||||
"BRAF_Gripen",
|
||||
"BRAF_A29A",
|
||||
"BRAF_A29_EDA",
|
||||
"BRAF_A29B",
|
||||
"BRAF_A29B_90k",
|
||||
"BRAF_A29B_100k",
|
||||
"BRAF_A29B_Jambock",
|
||||
units[] = {
|
||||
// Aircrafts
|
||||
"BRAF_Gripen",
|
||||
"BRAF_A29A",
|
||||
"BRAF_A29_EDA",
|
||||
"BRAF_A29B",
|
||||
"BRAF_A29B_90k",
|
||||
"BRAF_A29B_100k",
|
||||
"BRAF_A29B_Jambock",
|
||||
|
||||
// Wreck_Model
|
||||
"BRAF_A29A_wreck_F",
|
||||
// Wreck_Model
|
||||
"BRAF_A29A_wreck_F",
|
||||
|
||||
// Canopy
|
||||
"BRAF_A29_canopy",
|
||||
"BRAF_A29_canopy_EDA",
|
||||
"BRAF_A29_canopy_Jambock",
|
||||
// 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",
|
||||
// Ejection_Seats
|
||||
"BRAF_ejection_seat_base",
|
||||
"BRAF_ejection_seat_A29"};
|
||||
weapons[] = {
|
||||
// MG
|
||||
"BRAF_M3W_A29",
|
||||
|
||||
// Master Safe
|
||||
"BRAF_master_arm_safe",
|
||||
// Master Safe
|
||||
"BRAF_master_arm_safe",
|
||||
|
||||
// AA Missile
|
||||
"BRAF_MAA1A_Launcher_weapon",
|
||||
// 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",
|
||||
// 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"
|
||||
};
|
||||
// Bombs
|
||||
"BRAF_EFT_weapon",
|
||||
"BRAF_Mk82_weapon",
|
||||
"BRAF_M117_weapon",
|
||||
"BRAF_GBU12_weapon",
|
||||
"BRAF_GBU58_weapon"};
|
||||
};
|
||||
};
|
||||
|
||||
class CfgFunctions {
|
||||
class BRAF {
|
||||
tag = "BRAF";
|
||||
class functions
|
||||
{
|
||||
class EjectCopilot
|
||||
{
|
||||
file = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\fnc\fn_copilot_eject.sqf";
|
||||
class functions {
|
||||
class EjectCopilot {
|
||||
file = "braf\braf_air2\braf_fnc\fn_copilot_eject.sqf";
|
||||
};
|
||||
class EjectPilot
|
||||
{
|
||||
file = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\fnc\fn_pilot_eject.sqf";
|
||||
class EjectPilot {
|
||||
file = "braf\braf_air2\braf_fnc\fn_pilot_eject.sqf";
|
||||
};
|
||||
class Smoker
|
||||
{
|
||||
file = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\fnc\fn_smoker.sqf";
|
||||
class Smoker {
|
||||
file = "braf\braf_air2\braf_fnc\fn_smoker.sqf";
|
||||
};
|
||||
class RemoveBeforeFlight
|
||||
{
|
||||
file = "braf\braf_air2\braf_airplanes\braf_super_tucano\data\fnc\fn_remove_before_flight.sqf";
|
||||
};
|
||||
/*class RemoveBeforeFlight
|
||||
{
|
||||
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 SensorTemplateMan;
|
||||
class SensorTemplateNV;
|
||||
class DefaultVehicleSystemsDisplayManagerLeft
|
||||
{
|
||||
class components;
|
||||
class DefaultVehicleSystemsDisplayManagerLeft {
|
||||
class components;
|
||||
};
|
||||
class DefaultVehicleSystemsDisplayManagerRight
|
||||
{
|
||||
class components;
|
||||
class DefaultVehicleSystemsDisplayManagerRight {
|
||||
class components;
|
||||
};
|
||||
class VehicleSystemsTemplateLeftPilot: DefaultVehicleSystemsDisplayManagerLeft
|
||||
{
|
||||
class components;
|
||||
class VehicleSystemsTemplateLeftPilot
|
||||
: DefaultVehicleSystemsDisplayManagerLeft {
|
||||
class components;
|
||||
};
|
||||
class VehicleSystemsTemplateRightPilot: DefaultVehicleSystemsDisplayManagerRight
|
||||
{
|
||||
class components;
|
||||
class VehicleSystemsTemplateRightPilot
|
||||
: DefaultVehicleSystemsDisplayManagerRight {
|
||||
class components;
|
||||
};
|
||||
class VehicleSystemsTemplateLeftDriver: DefaultVehicleSystemsDisplayManagerLeft
|
||||
{
|
||||
class components;
|
||||
class VehicleSystemsTemplateLeftDriver
|
||||
: DefaultVehicleSystemsDisplayManagerLeft {
|
||||
class components;
|
||||
};
|
||||
class VehicleSystemsTemplateRightDriver: DefaultVehicleSystemsDisplayManagerRight
|
||||
{
|
||||
class components;
|
||||
class VehicleSystemsTemplateRightDriver
|
||||
: DefaultVehicleSystemsDisplayManagerRight {
|
||||
class components;
|
||||
};
|
||||
class VehicleSystemsTemplateLeftCommander: DefaultVehicleSystemsDisplayManagerLeft
|
||||
{
|
||||
class components;
|
||||
class VehicleSystemsTemplateLeftCommander
|
||||
: DefaultVehicleSystemsDisplayManagerLeft {
|
||||
class components;
|
||||
};
|
||||
class VehicleSystemsTemplateRightCommander: DefaultVehicleSystemsDisplayManagerRight
|
||||
{
|
||||
class components;
|
||||
class VehicleSystemsTemplateRightCommander
|
||||
: DefaultVehicleSystemsDisplayManagerRight {
|
||||
class components;
|
||||
};
|
||||
class VehicleSystemsTemplateLeftGunner: DefaultVehicleSystemsDisplayManagerLeft
|
||||
{
|
||||
class components;
|
||||
class VehicleSystemsTemplateLeftGunner
|
||||
: DefaultVehicleSystemsDisplayManagerLeft {
|
||||
class components;
|
||||
};
|
||||
class VehicleSystemsTemplateRightGunner: DefaultVehicleSystemsDisplayManagerRight
|
||||
{
|
||||
class components;
|
||||
class VehicleSystemsTemplateRightGunner
|
||||
: DefaultVehicleSystemsDisplayManagerRight {
|
||||
class components;
|
||||
};
|
||||
class RCWSOptics;
|
||||
class Optics_Armored;
|
||||
#include "BRAF_Optics_Air2\BRAF_AirOptics.hpp"
|
||||
#include "braf_air_anim\CfgMovesBasic.hpp"
|
||||
class CfgVehicles
|
||||
{
|
||||
class Air;
|
||||
class Plane: Air
|
||||
{
|
||||
class NewTurret;
|
||||
class ViewPilot;
|
||||
class HitPoints
|
||||
{
|
||||
class HitHull;
|
||||
};
|
||||
};
|
||||
class Plane_Base_F: Plane
|
||||
{
|
||||
class AnimationSources;
|
||||
class HitPoints: HitPoints
|
||||
{
|
||||
class HitHull;
|
||||
};
|
||||
class Turrets
|
||||
{
|
||||
class CopilotTurret;
|
||||
};
|
||||
};
|
||||
class Plane_Fighter_03_base_F : Plane_Base_F
|
||||
{
|
||||
class AnimationSources;
|
||||
};
|
||||
class Plane_Fighter_04_Base_F : Plane_Base_F {};
|
||||
class I_Plane_Fighter_04_F : Plane_Fighter_04_Base_F {};
|
||||
class Ejection_Seat_Base_F;
|
||||
class Plane_Canopy_Base_F;
|
||||
#include "braf_optics_air2\BRAF_AirOptics.hpp"
|
||||
class CfgVehicles {
|
||||
class Air;
|
||||
class ParachuteBase;
|
||||
class B_Parachute;
|
||||
class Steerable_Parachute_F;
|
||||
class NonSteerable_Parachute_F;
|
||||
class Plane : Air {
|
||||
class NewTurret;
|
||||
class ViewPilot;
|
||||
class HitPoints {
|
||||
class HitHull;
|
||||
};
|
||||
};
|
||||
class Plane_Base_F : Plane {
|
||||
class AnimationSources;
|
||||
class HitPoints : HitPoints {
|
||||
class HitHull;
|
||||
};
|
||||
class Turrets {
|
||||
class CopilotTurret;
|
||||
};
|
||||
};
|
||||
class Plane_Fighter_03_base_F : Plane_Base_F {
|
||||
class AnimationSources;
|
||||
};
|
||||
class Plane_Fighter_04_Base_F : Plane_Base_F {};
|
||||
class I_Plane_Fighter_04_F : Plane_Fighter_04_Base_F {};
|
||||
class Ejection_Seat_Base_F;
|
||||
class Plane_Canopy_Base_F;
|
||||
|
||||
// Attack and Fighter
|
||||
#include "BRAF_airplanes\braf_super_tucano\a29_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\a4_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\amx_base.hpp"
|
||||
#include "BRAF_airplanes\braf_gripen\f39_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\f5_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\t27_base.hpp"
|
||||
// Attack and Fighter
|
||||
#include "BRAF_airplanes\braf_super_tucano\a29_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\a4_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\amx_base.hpp"
|
||||
#include "BRAF_airplanes\braf_gripen\f39_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\f5_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\t27_base.hpp"
|
||||
|
||||
// Patrol and Transport
|
||||
//#include "BRAF_airplanes\braf_gripen\c95_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\c105_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\c130_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\c390_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\c98_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\p95_base.hpp"
|
||||
//#include "BRAF_airplanes\braf_gripen\p3m_base.hpp"
|
||||
// Patrol and Transport
|
||||
// #include "BRAF_airplanes\braf_gripen\c95_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\c105_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\c130_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\c390_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\c98_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\p95_base.hpp"
|
||||
// #include "BRAF_airplanes\braf_gripen\p3m_base.hpp"
|
||||
};
|
||||
#include "BRAF_Air_Weap2\Ammo.hpp"
|
||||
#include "BRAF_Air_Weap2\Magazines.hpp"
|
||||
|
||||
4
braf_air2/textures.lst
Normal file
4
braf_air2/textures.lst
Normal file
@@ -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