mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
scripted approach to hand flares, fix #1079
This commit is contained in:
parent
acfc48efc2
commit
be56fd7d46
@ -28,66 +28,66 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class ACE_F_Hand_White: F_20mm_White {
|
class ACE_F_Hand_White: F_20mm_White {
|
||||||
grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
|
|
||||||
grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
|
|
||||||
soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
|
|
||||||
SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
|
|
||||||
SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
|
|
||||||
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
|
|
||||||
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
|
|
||||||
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
|
|
||||||
timeToLive = 60;
|
timeToLive = 60;
|
||||||
};
|
};
|
||||||
|
|
||||||
class F_20mm_Red;
|
class F_20mm_Red;
|
||||||
class ACE_F_Hand_Red: F_20mm_Red {
|
class ACE_F_Hand_Red: F_20mm_Red {
|
||||||
grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
|
|
||||||
grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
|
|
||||||
soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
|
|
||||||
SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
|
|
||||||
SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
|
|
||||||
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
|
|
||||||
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
|
|
||||||
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
|
|
||||||
timeToLive = 60;
|
timeToLive = 60;
|
||||||
};
|
};
|
||||||
|
|
||||||
class F_20mm_Green;
|
class F_20mm_Green;
|
||||||
class ACE_F_Hand_Green: F_20mm_Green {
|
class ACE_F_Hand_Green: F_20mm_Green {
|
||||||
grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
|
|
||||||
grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
|
|
||||||
soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
|
|
||||||
SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
|
|
||||||
SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
|
|
||||||
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
|
|
||||||
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
|
|
||||||
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
|
|
||||||
timeToLive = 60;
|
timeToLive = 60;
|
||||||
};
|
};
|
||||||
|
|
||||||
class F_20mm_Yellow;
|
class F_20mm_Yellow;
|
||||||
class ACE_F_Hand_Yellow: F_20mm_Yellow {
|
class ACE_F_Hand_Yellow: F_20mm_Yellow {
|
||||||
grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
|
|
||||||
grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
|
|
||||||
soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
|
|
||||||
SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
|
|
||||||
SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
|
|
||||||
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
|
|
||||||
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
|
|
||||||
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
|
|
||||||
timeToLive = 60;
|
timeToLive = 60;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SmokeShell;
|
class SmokeShell;
|
||||||
|
class ACE_G_Handflare_White: SmokeShell {
|
||||||
|
GVAR(flare) = 1;
|
||||||
|
GVAR(color)[] = {0.5,0.5,0.5,0.5};
|
||||||
|
model = "\A3\weapons_f\ammo\flare_white";
|
||||||
|
dangerRadiusHit = -1;
|
||||||
|
suppressionRadiusHit = -1;
|
||||||
|
typicalSpeed = 22;
|
||||||
|
cost = 100;
|
||||||
|
deflecting = 30;
|
||||||
|
explosionTime = 3;
|
||||||
|
timeToLive = 60;
|
||||||
|
grenadeFireSound[] = {};
|
||||||
|
grenadeBurningSound[] = {};
|
||||||
|
aiAmmoUsageFlags = "4 + 2";
|
||||||
|
smokeColor[] = {0,0,0,0};
|
||||||
|
effectsSmoke = "ACE_HandFlareEffect";
|
||||||
|
whistleDist = 0;
|
||||||
|
};
|
||||||
|
class ACE_G_Handflare_Red: ACE_G_Handflare_White {
|
||||||
|
GVAR(color)[] = {0.5,0.25,0.25,0.5};
|
||||||
|
model = "\A3\weapons_f\ammo\flare_red";
|
||||||
|
};
|
||||||
|
class ACE_G_Handflare_Green: ACE_G_Handflare_White {
|
||||||
|
GVAR(color)[] = {0.25,0.5,0.25,0.5};
|
||||||
|
model = "\A3\weapons_f\ammo\flare_green";
|
||||||
|
};
|
||||||
|
class ACE_G_Handflare_Yellow: ACE_G_Handflare_White {
|
||||||
|
GVAR(color)[] = {0.5,0.5,0.25,0.5};
|
||||||
|
model = "\A3\weapons_f\ammo\flare_yellow";
|
||||||
|
};
|
||||||
|
|
||||||
class ACE_G_M84: SmokeShell {
|
class ACE_G_M84: SmokeShell {
|
||||||
|
GVAR(flashbang) = 1;
|
||||||
model = PATHTOF(models\ACE_m84_thrown.p3d);
|
model = PATHTOF(models\ACE_m84_thrown.p3d);
|
||||||
dangerRadiusHit = -1;
|
dangerRadiusHit = -1;
|
||||||
suppressionRadiusHit = 20;
|
suppressionRadiusHit = 20;
|
||||||
typicalSpeed = 22;
|
typicalSpeed = 22;
|
||||||
cost = 40;
|
cost = 40;
|
||||||
deflecting = 15;
|
deflecting = 15;
|
||||||
|
explosionTime = 2.3;
|
||||||
timeToLive = 6;
|
timeToLive = 6;
|
||||||
fuseDistance = 2.3;
|
|
||||||
grenadeFireSound[] = {};
|
grenadeFireSound[] = {};
|
||||||
grenadeBurningSound[] = {};
|
grenadeBurningSound[] = {};
|
||||||
aiAmmoUsageFlags = "0";
|
aiAmmoUsageFlags = "0";
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
class CfgMagazines {
|
class CfgMagazines {
|
||||||
class HandGrenade;
|
class HandGrenade;
|
||||||
class ACE_HandFlare_Base: HandGrenade {
|
class ACE_HandFlare_Base: HandGrenade {
|
||||||
@ -8,55 +9,60 @@ class CfgMagazines {
|
|||||||
mass = 4;
|
mass = 4;
|
||||||
initSpeed = 22;
|
initSpeed = 22;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ACE_HandFlare_White: ACE_HandFlare_Base {
|
class ACE_HandFlare_White: ACE_HandFlare_Base {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
ammo = "ACE_F_Hand_White";
|
|
||||||
displayname = CSTRING(M127A1_White_Name);
|
displayname = CSTRING(M127A1_White_Name);
|
||||||
descriptionshort = CSTRING(M127A1_White_Description);
|
descriptionshort = CSTRING(M127A1_White_Description);
|
||||||
displayNameShort = CSTRING(M127A1_White_NameShort);
|
displayNameShort = CSTRING(M127A1_White_NameShort);
|
||||||
model = "\A3\weapons_f\ammo\flare_white";
|
model = "\A3\weapons_f\ammo\flare_white";
|
||||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa";
|
picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa";
|
||||||
|
ammo = "ACE_G_Handflare_White";
|
||||||
};
|
};
|
||||||
|
|
||||||
class ACE_HandFlare_Red: ACE_HandFlare_Base {
|
class ACE_HandFlare_Red: ACE_HandFlare_Base {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
ammo = "ACE_F_Hand_Red";
|
|
||||||
displayname = CSTRING(M127A1_Red_Name);
|
displayname = CSTRING(M127A1_Red_Name);
|
||||||
descriptionshort = CSTRING(M127A1_Red_Description);
|
descriptionshort = CSTRING(M127A1_Red_Description);
|
||||||
displayNameShort = CSTRING(M127A1_Red_NameShort);
|
displayNameShort = CSTRING(M127A1_Red_NameShort);
|
||||||
model = "\A3\weapons_f\ammo\flare_red";
|
model = "\A3\weapons_f\ammo\flare_red";
|
||||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa";
|
picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa";
|
||||||
|
ammo = "ACE_G_Handflare_Red";
|
||||||
};
|
};
|
||||||
|
|
||||||
class ACE_HandFlare_Green: ACE_HandFlare_Base {
|
class ACE_HandFlare_Green: ACE_HandFlare_Base {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
ammo = "ACE_F_Hand_Green";
|
|
||||||
displayname = CSTRING(M127A1_Green_Name);
|
displayname = CSTRING(M127A1_Green_Name);
|
||||||
descriptionshort = CSTRING(M127A1_Green_Description);
|
descriptionshort = CSTRING(M127A1_Green_Description);
|
||||||
displayNameShort = CSTRING(M127A1_Green_NameShort);
|
displayNameShort = CSTRING(M127A1_Green_NameShort);
|
||||||
model = "\A3\weapons_f\ammo\flare_green";
|
model = "\A3\weapons_f\ammo\flare_green";
|
||||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa";
|
picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa";
|
||||||
|
ammo = "ACE_G_Handflare_Green";
|
||||||
};
|
};
|
||||||
|
|
||||||
class ACE_HandFlare_Yellow: ACE_HandFlare_Base {
|
class ACE_HandFlare_Yellow: ACE_HandFlare_Base {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
ammo = "ACE_F_Hand_Yellow";
|
|
||||||
displayname = CSTRING(M127A1_Yellow_Name);
|
displayname = CSTRING(M127A1_Yellow_Name);
|
||||||
descriptionshort = CSTRING(M127A1_Yellow_Description);
|
descriptionshort = CSTRING(M127A1_Yellow_Description);
|
||||||
displayNameShort = CSTRING(M127A1_Yellow_NameShort);
|
displayNameShort = CSTRING(M127A1_Yellow_NameShort);
|
||||||
model = "\A3\weapons_f\ammo\flare_yellow";
|
model = "\A3\weapons_f\ammo\flare_yellow";
|
||||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa";
|
picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa";
|
||||||
|
ammo = "ACE_G_Handflare_Yellow";
|
||||||
};
|
};
|
||||||
|
|
||||||
class ACE_M84: HandGrenade {
|
class ACE_M84: HandGrenade {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
ammo = "ACE_G_M84";
|
|
||||||
displayname = CSTRING(M84_Name);
|
displayname = CSTRING(M84_Name);
|
||||||
descriptionshort = CSTRING(M84_Description);
|
descriptionshort = CSTRING(M84_Description);
|
||||||
displayNameShort = "M84";
|
displayNameShort = "M84";
|
||||||
mass = 4;
|
|
||||||
model = PATHTOF(models\ACE_m84.p3d);
|
model = PATHTOF(models\ACE_m84.p3d);
|
||||||
picture = PATHTOF(UI\ACE_m84_x_ca.paa);
|
picture = PATHTOF(UI\ACE_m84_x_ca.paa);
|
||||||
|
ammo = "ACE_G_M84";
|
||||||
|
mass = 4;
|
||||||
};
|
};
|
||||||
|
|
||||||
class 3Rnd_UGL_FlareGreen_F;
|
class 3Rnd_UGL_FlareGreen_F;
|
||||||
@ -65,6 +71,7 @@ class CfgMagazines {
|
|||||||
ammo = "F_40mm_Green";
|
ammo = "F_40mm_Green";
|
||||||
initSpeed = 120;
|
initSpeed = 120;
|
||||||
};
|
};
|
||||||
|
|
||||||
class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F {
|
class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
ammo = "F_40mm_Red";
|
ammo = "F_40mm_Red";
|
||||||
|
@ -2,3 +2,7 @@
|
|||||||
class ACE_M84FlashbangEffect {
|
class ACE_M84FlashbangEffect {
|
||||||
// empty
|
// empty
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ACE_HandFlareEffect {
|
||||||
|
// empty
|
||||||
|
};
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP(flare);
|
||||||
PREP(flashbangExplosionEH);
|
PREP(flashbangExplosionEH);
|
||||||
PREP(flashbangThrownFuze);
|
PREP(flashbangThrownFuze);
|
||||||
PREP(nextMode);
|
PREP(nextMode);
|
||||||
|
23
addons/grenades/functions/fnc_flare.sqf
Normal file
23
addons/grenades/functions/fnc_flare.sqf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// by commy2
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_projectile", "_color", "_intensity", "_timeToLive"];
|
||||||
|
|
||||||
|
private "_light";
|
||||||
|
_light = "#lightpoint" createVehicleLocal position _projectile;
|
||||||
|
|
||||||
|
_light setLightColor _color;
|
||||||
|
_light setLightAmbient _color;
|
||||||
|
_light setLightIntensity _intensity;
|
||||||
|
_light setLightBrightness 0.8;
|
||||||
|
|
||||||
|
_light setLightUseFlare true;
|
||||||
|
_light setLightFlareSize 3.0;
|
||||||
|
_light setLightFlareMaxDistance 1000;
|
||||||
|
|
||||||
|
_light setLightDayLight true;
|
||||||
|
|
||||||
|
_light lightAttachObject [_projectile, [0,0,0]];
|
||||||
|
//_light attachTo [_projectile, [0,0,0]];
|
||||||
|
|
||||||
|
[{deleteVehicle _this}, _light, _timeToLive, 1] call EFUNC(common,waitAndExecute);
|
@ -21,17 +21,40 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_mode", "_fuzeTime"];
|
params ["_unit", "_weapon", "", "", "_ammo", "", "_projectile"];
|
||||||
params ["_unit", "_weapon", "", "", "", "", "_projectile"];
|
|
||||||
|
|
||||||
if (_unit != ACE_player) exitWith {};
|
|
||||||
if (_weapon != "Throw") exitWith {};
|
if (_weapon != "Throw") exitWith {};
|
||||||
|
|
||||||
|
// handle speial grenades
|
||||||
|
if (local _unit) then {
|
||||||
|
if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flashbang)) == 1) then {
|
||||||
|
private "_fuzeTime";
|
||||||
|
_fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime");
|
||||||
|
|
||||||
|
[FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flare)) == 1) then {
|
||||||
|
private ["_fuzeTime", "_timeToLive", "_color", "_intensity"];
|
||||||
|
|
||||||
|
_fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime");
|
||||||
|
_timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "timeToLive");
|
||||||
|
_color = getArray (configFile >> "CfgAmmo" >> _ammo >> QGVAR(color));
|
||||||
|
_intensity = _color select 3;
|
||||||
|
_color resize 3;
|
||||||
|
|
||||||
|
[FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call EFUNC(common,waitAndExecute);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// handle throw modes
|
||||||
|
if (_unit != ACE_player) exitWith {};
|
||||||
|
|
||||||
|
private "_mode";
|
||||||
_mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0];
|
_mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0];
|
||||||
|
|
||||||
if (_mode != 0) then {
|
if (_mode != 0) then {
|
||||||
private "_velocity";
|
private "_velocity";
|
||||||
|
|
||||||
_velocity = velocity _projectile;
|
_velocity = velocity _projectile;
|
||||||
|
|
||||||
switch (_mode) do {
|
switch (_mode) do {
|
||||||
@ -59,9 +82,3 @@ if (_mode != 0) then {
|
|||||||
|
|
||||||
_projectile setVelocity _velocity;
|
_projectile setVelocity _velocity;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (typeOf _projectile == "ACE_G_M84") then {
|
|
||||||
_fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "fuseDistance");
|
|
||||||
// _fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "explosionTime"); //@toDo pretty sure this should be explosionTime not fuseDistance
|
|
||||||
[FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute);
|
|
||||||
};
|
|
||||||
|
Loading…
Reference in New Issue
Block a user