Braf_Air2 atualizado

This commit is contained in:
2026-06-14 21:25:45 -03:00
parent e4ac56b038
commit 63626ca260
62 changed files with 1734 additions and 306 deletions

View File

@@ -0,0 +1,98 @@
/*
Author: Brazilian Armed Forces
-Rodrigo "Ogrinho" Arantes
Description:
- This function is designed to implement smoke ejection from A-29 exhaust
Exucution:
- call the function via user action added to the aircrfat itself.
to activate smoke emitter:
class BRAF_Smoke_Toggle
{
priority=0.05;
shortcut="Smoke On";
displayName="Fumaça já!";
condition="player in this && {
speed this > 1
}";
statement="[this] spawn BRAF_fnc_SmokeOn";
position="pilotcontrol";
radius=10;
onlyforplayer=1;
showWindow=0;
};
Requirments:
- 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.
Result: Smoke effect particles will be ejected from aircrafts right exhaustor, and vehicleChat will say "Fumaça Já!"
*/
/*--------------------------------------------------------------------------------------------------
Conditions to play the function:
1- Aircraft is alive.
2- Aircraft speed > 1.
3- "braf_smoke_on" variable == true
--------------------------------------------------------------------------------------------------*/
private _plane = param [0, objNull];
if (isNull _plane ||
{
!alive _plane ||
{
speed _plane < 1
}
}
) exitWith {};
if (_plane getVariable ["braf_smoke_on", true]) then {
/*--------------------------------------------------------------------------------------------------
Creation of smoke generator and attaching it to vehicle's "smoker_spawn" memory point
--------------------------------------------------------------------------------------------------*/
_plane spawn
{
private _plane = _this;
_plane vehicleChat "Fumaça Já!";
sleep 0.25;
private _smoker = "#particlesource" createVehicleLocal [0, 0, 0];
_smoker setParticleParams
[
["\A3\Data_F\ParticleEffects\Universal\Universal", 16, 7, 16, 1],
"", "Billboard", 1, 16, // AnimationName, type, timerPeriod, lifeTime
[0, 0, 0], // position relative to referenceObject
[0, 0, 0], // velocity
0, 10, 7.9, 0.066, [1, 3, 6], // Rotation, Weight, Volume, Rubbing, size
[
[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 0.75], [1, 1, 1, 0.5], [1, 1, 1, 0.25], [1, 1, 1, 0] // Array for smoke colors [R, G, B, A]
],
[0.25], // animationPhase
1, 0, // randomDerictionPeriod, randomDirectionIntensity
"", "", // onTimer, beforeDestroy
_smoker// referenceObject
];
_smoker setParticleRandom [0, [0.25, 0.25, 0], [0.2, 0.2, 0], 0, 0.25, [0, 0, 0, 0.1], 0, 0];
_smoker setDropInterval 0.025;
_smoker setDir (getDir _plane);
_smoker setPosASL (_plane modelToWorld [0, 0, 0]);
_smoker attachTo [_plane, [0, 0, 0], "smoker_spawn"];
_plane setVariable ["smoker", _smoker];
_plane setVariable ["braf_smoke_on", false];
};
} else {
private _smoker = _plane GetVariable ["smoker", objNull];
deleteVehicle _smoker;
_plane vehicleChat "Fumaça Off!";
_plane setVariable ["smoker", nil];
_plane setVariable ["braf_smoke_on", true];
};