made it work
This commit is contained in:
@@ -8,4 +8,8 @@ PREP(canUnfold);
|
||||
PREP(fold);
|
||||
PREP(unfold);
|
||||
PREP(fired);
|
||||
PREP(eject);
|
||||
PREP(eject);
|
||||
PREP(canLoad);
|
||||
PREP(canUnload);
|
||||
PREP(load);
|
||||
PREP(unload);
|
||||
|
||||
@@ -6,3 +6,18 @@
|
||||
[QUOTE(TBD_M119), "fired", {_this call FUNC(fired)}] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
ADDON = true;
|
||||
|
||||
[
|
||||
QGVAR(loadShell),
|
||||
{
|
||||
params ["_arty", "_shell", "_turret"];
|
||||
|
||||
// Remove all mags in given turret
|
||||
private _mags = _arty magazinesTurret [_turret];
|
||||
{
|
||||
_arty removeMagazineTurret [_x, [_turret]];
|
||||
} forEach _mags;
|
||||
|
||||
_arty addMagazineTurret [_shell, [_turret], 1];
|
||||
}
|
||||
] call CBA_fnc_addEventHandler;
|
||||
|
||||
44
addons/m119/functions/fnc_canLoad.sqf
Normal file
44
addons/m119/functions/fnc_canLoad.sqf
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
FILE: fnc_canLoad.sqf
|
||||
|
||||
Name: tbd_m119_m119_fnc_canLoad
|
||||
|
||||
Author(s):
|
||||
ilbinek
|
||||
|
||||
Description:
|
||||
Check if the M119 can be loaded with this type of round
|
||||
|
||||
Parameters:
|
||||
_arty - object - M119 to be loaded
|
||||
_shell - string - type of round to be loaded
|
||||
|
||||
Returns:
|
||||
bool - true if the M119 can be loaded, false otherwise
|
||||
|
||||
Examples:
|
||||
> [_arty, tbd_mortars_105mm_he_round_1] call tbd_m119_m119_fnc_canLoad;
|
||||
|
||||
Public:
|
||||
No
|
||||
*/
|
||||
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
params ["_arty", "_shell"];
|
||||
|
||||
if !(_arty getVariable[QGVAR(breech), false]) exitWith {false};
|
||||
|
||||
// Check of the mortar is empty
|
||||
private _mags = _arty magazinesTurret [0];
|
||||
if (count _mags != 0) exitWith {false};
|
||||
|
||||
// Check if this shell is nearby
|
||||
private _veh = nearestObjects [player, [_shell], 3];
|
||||
|
||||
private _ret = false;
|
||||
{
|
||||
if (typeOf _x == _shell) exitWith {_ret = true;};
|
||||
} forEach _veh;
|
||||
|
||||
_ret
|
||||
34
addons/m119/functions/fnc_canUnload.sqf
Normal file
34
addons/m119/functions/fnc_canUnload.sqf
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
FILE: fnc_canUnload.sqf
|
||||
|
||||
Name: tbd_m119_m119_fnc_canUnload
|
||||
|
||||
Author(s):
|
||||
ilbinek
|
||||
|
||||
Description:
|
||||
Check if the M119 can be unloaded
|
||||
|
||||
Parameters:
|
||||
_arty - object - M119 to be checked
|
||||
|
||||
Returns:
|
||||
bool - true if the M119 can be unloaded, false otherwise
|
||||
|
||||
Examples:
|
||||
> [_arty] call tbd_m119_m119_fnc_canUnload;
|
||||
|
||||
Public:
|
||||
No
|
||||
*/
|
||||
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
params ["_arty"];
|
||||
|
||||
if !(_arty getVariable[QGVAR(breech), false]) exitWith {false};
|
||||
|
||||
// Check of the mortar is empty
|
||||
private _mags = _arty magazinesTurret [0];
|
||||
if (count _mags == 0) exitWith {false};
|
||||
true
|
||||
@@ -26,3 +26,18 @@
|
||||
|
||||
params ["_arty"];
|
||||
|
||||
// tbd_mortars_105mm_casing_spent
|
||||
private _spawnPoint = _arty modelToWorldVisual (_arty selectionPosition ["casing_spawn", "Memory"]);
|
||||
private _dirAndUp = _arty selectionVectorDirAndUp ["casing_spawn", "Memory"];
|
||||
|
||||
_dirAndUp set [0, _arty vectorModelToWorld _dirAndUp#0];
|
||||
_dirAndUp set [1, _arty vectorModelToWorld _dirAndUp#1];
|
||||
|
||||
// Spawn a new magazine at this position
|
||||
private _casing = createVehicle ["tbd_mortars_105mm_casing_spent", _spawnPoint, [], 0, "CAN_COLLIDE"];
|
||||
_casing setVectorDirAndUp _dirAndUp;
|
||||
|
||||
_casing allowDamage false;
|
||||
|
||||
// Add vertical force to the magazine
|
||||
[{params ["_casing"]; _casing addForce [_casing vectorModelToWorld [0, -100, 0], [0, 0, 0]];}, [_casing]] call CBA_fnc_execNextFrame;
|
||||
|
||||
@@ -32,3 +32,11 @@ _arty animateSource ["recoil_barrel_source", 2, 20];
|
||||
[{params ["_arty"]; _arty animateSource ["recoil_rest_source", 0, 0.2];}, [_arty], 0.1] call CBA_fnc_waitAndExecute;
|
||||
|
||||
_arty setVariable [QGVAR(fired), true, true];
|
||||
|
||||
private _mags = _arty magazinesTurret [0];
|
||||
{
|
||||
_arty removeMagazinesTurret [_x, [0]];
|
||||
} forEach _mags;
|
||||
|
||||
_arty animateSource ["magazine_hide_source", 1, true];
|
||||
_arty animateSource ["magazine_load_source", 0, true];
|
||||
|
||||
@@ -34,3 +34,14 @@ _arty setVariable [QGVAR(towed), false, true];
|
||||
_arty setVariable [QGVAR(fired), false, true];
|
||||
|
||||
_arty enableRopeAttach true;
|
||||
|
||||
_arty addAction [
|
||||
"",
|
||||
{},
|
||||
nil,
|
||||
-1e10,
|
||||
false,
|
||||
false,
|
||||
"defaultAction",
|
||||
'_target getVariable [(QGVAR(breech)),false]'
|
||||
];
|
||||
|
||||
55
addons/m119/functions/fnc_load.sqf
Normal file
55
addons/m119/functions/fnc_load.sqf
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
FILE: fnc_load.sqf
|
||||
|
||||
Name: tbd_m119_m119_fnc_load
|
||||
|
||||
Author(s):
|
||||
ilbinek
|
||||
|
||||
Description:
|
||||
Load the round into the M119
|
||||
|
||||
Parameters:
|
||||
_arty - object - M119 to be loaded
|
||||
_shell - string - type of round to be loaded
|
||||
_turret - number - path to turret
|
||||
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
Examples:
|
||||
> [_arty, tbd_mortars_105mm_he_round_1, 0] call tbd_m119_m119_fnc_load;
|
||||
|
||||
Public:
|
||||
No
|
||||
*/
|
||||
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
params ["_arty", "_shell", "_turret"];
|
||||
|
||||
if !([_arty, _shell] call FUNC(canLoad)) exitWith {};
|
||||
|
||||
private _mag = "";
|
||||
|
||||
switch (_shell) do {
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_1): {_mag = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_1)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_2): {_mag = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_2)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_3): {_mag = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_3)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_4): {_mag = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_5): {_mag = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_5)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_6): {_mag = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_6)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_7): {_mag = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_7)};
|
||||
};
|
||||
|
||||
[QGVAR(loadShell), [_arty, _mag, _turret], _arty, [-1]] call CBA_fnc_turretEvent;
|
||||
|
||||
// Delete closest
|
||||
private _veh = nearestObjects [player, [_shell], 3];
|
||||
{
|
||||
if (typeOf _x == _shell) exitWith {deleteVehicle _x};
|
||||
} forEach _veh;
|
||||
|
||||
_arty animateSource ["magazine_load_source", 0, true];
|
||||
_arty animateSource ["magazine_hide_source", 0, true];
|
||||
_arty animateSource ["magazine_load_source", 0.36, 0.2];
|
||||
52
addons/m119/functions/fnc_unload.sqf
Normal file
52
addons/m119/functions/fnc_unload.sqf
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
FILE: fnc_unload.sqf
|
||||
|
||||
Name: tbd_m119_m119_fnc_unload
|
||||
|
||||
Author(s):
|
||||
ilbinek
|
||||
|
||||
Description:
|
||||
Fired EH for the M119. This script is called when the M119 is fired. It animates the recoil of the M119.
|
||||
|
||||
Parameters:
|
||||
_arty - object - M119 that fired
|
||||
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
Examples:
|
||||
> [_arty] call tbd_m119_m119_fnc_unload;
|
||||
|
||||
Public:
|
||||
No
|
||||
*/
|
||||
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
params ["_arty", "_turret"];
|
||||
|
||||
if !([_arty] call FUNC(canUnload)) exitWith {};
|
||||
|
||||
private _mags = _arty magazinesTurret [_turret];
|
||||
{
|
||||
_arty removeMagazinesTurret [_x, [_turret]];
|
||||
} forEach _mags;
|
||||
|
||||
private _veh = "";
|
||||
|
||||
switch (_mags#0) do {
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_1): {_veh = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_1)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_2): {_veh = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_2)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_3): {_veh = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_3)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4): {_veh = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_4)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_5): {_veh = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_5)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_6): {_veh = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_6)};
|
||||
case QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_7): {_veh = QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_7)};
|
||||
};
|
||||
|
||||
_arty animateSource ["magazine_hide_source", 1];
|
||||
_arty animateSource ["magazine_load_source", 0];
|
||||
|
||||
private _s = _veh createVehicle (getPos player);
|
||||
[player, _s] call ace_dragging_fnc_startCarry;
|
||||
@@ -23,6 +23,14 @@
|
||||
#define TBD_M119_SHOT_SOUNDSET tbd_m119_shot_soundset
|
||||
#define TBD_M119_SHOT_SOUNDSHADER tbd_M119_shot_soundshader
|
||||
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_1 tbd_mortars_105mm_round_he_charge_1
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_2 tbd_mortars_105mm_round_he_charge_2
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_3 tbd_mortars_105mm_round_he_charge_3
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_4 tbd_mortars_105mm_round_he_charge_4
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_5 tbd_mortars_105mm_round_he_charge_5
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_6 tbd_mortars_105mm_round_he_charge_6
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_7 tbd_mortars_105mm_round_he_charge_7
|
||||
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_1 tbd_mortars_105mm_round_he_charge_mag_1
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_2 tbd_mortars_105mm_round_he_charge_mag_2
|
||||
#define TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_3 tbd_mortars_105mm_round_he_charge_mag_3
|
||||
|
||||
@@ -21,5 +21,13 @@
|
||||
<English>Unfold</English>
|
||||
<Czech>Rozložit</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_TBD_M119_M119_LOAD">
|
||||
<English>Load</English>
|
||||
<Czech>Nabít</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_TBD_M119_M119_UNLOAD">
|
||||
<English>Unload</English>
|
||||
<Czech>Vybít</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
||||
@@ -94,7 +94,7 @@ class CfgVehicles {
|
||||
memoryPointsGetInGunnerDir = "pos_gunner_dir";
|
||||
proxyType = "CPGunner";
|
||||
proxyIndex = 1;
|
||||
magazines[] = {QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4),QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4),QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4),QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4),QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4),QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4),QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_MAG_4)};
|
||||
magazines[] = {};
|
||||
};
|
||||
};
|
||||
htMin = 1;
|
||||
@@ -261,6 +261,82 @@ class CfgVehicles {
|
||||
displayName = CSTRING(close_breech);
|
||||
statement = QUOTE([ARR_1(_target)] call FUNC(closeBreech));
|
||||
};
|
||||
|
||||
class TBD_Load {
|
||||
isplayName = CSTRING(load);
|
||||
distance = 1.5;
|
||||
showDisabled=0;
|
||||
exceptions[]={};
|
||||
priority=5;
|
||||
selection = "casing_spawn";
|
||||
icon = "x\tbd_mortars\addons\main\data\load.paa";
|
||||
|
||||
class TBD_LoadHECh1 {
|
||||
displayName = "$STR_TBD_MORTARS_105mm_HE_CHARGE_1";
|
||||
condition = QUOTE([ARR_2(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_1)))] call FUNC(canLoad));
|
||||
statement = QUOTE([ARR_3(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_1)),0)] call FUNC(load));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
};
|
||||
|
||||
class TBD_LoadHECh2 {
|
||||
displayName = "$STR_TBD_MORTARS_105mm_HE_CHARGE_2";
|
||||
condition = QUOTE([ARR_2(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_2)))] call FUNC(canLoad));
|
||||
statement = QUOTE([ARR_3(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_2)),0)] call FUNC(load));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
};
|
||||
|
||||
class TBD_LoadHECh3 {
|
||||
displayName = "$STR_TBD_MORTARS_105mm_HE_CHARGE_3";
|
||||
condition = QUOTE([ARR_2(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_3)))] call FUNC(canLoad));
|
||||
statement = QUOTE([ARR_3(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_3)),0)] call FUNC(load));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
};
|
||||
|
||||
class TBD_LoadHECh4 {
|
||||
displayName = "$STR_TBD_MORTARS_105mm_HE_CHARGE_4";
|
||||
condition = QUOTE([ARR_2(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_4)))] call FUNC(canLoad));
|
||||
statement = QUOTE([ARR_3(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_4)),0)] call FUNC(load));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
};
|
||||
|
||||
class TBD_LoadHECh5 {
|
||||
displayName = "$STR_TBD_MORTARS_105mm_HE_CHARGE_5";
|
||||
condition = QUOTE([ARR_2(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_5)))] call FUNC(canLoad));
|
||||
statement = QUOTE([ARR_3(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_5)),0)] call FUNC(load));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
};
|
||||
|
||||
class TBD_LoadHECh6 {
|
||||
displayName = "$STR_TBD_MORTARS_105mm_HE_CHARGE_6";
|
||||
condition = QUOTE([ARR_2(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_6)))] call FUNC(canLoad));
|
||||
statement = QUOTE([ARR_3(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_6)),0)] call FUNC(load));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
};
|
||||
|
||||
class TBD_LoadHECh7 {
|
||||
displayName = "$STR_TBD_MORTARS_105mm_HE_CHARGE_7";
|
||||
condition = QUOTE([ARR_2(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_7)))] call FUNC(canLoad));
|
||||
statement = QUOTE([ARR_3(_target,QUOTE(QUOTE(TBD_MORTARS_105mm_ROUND_HE_CHARGE_7)),0)] call FUNC(load));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
};
|
||||
};
|
||||
|
||||
class TBD_Unload {
|
||||
selection = "casing_spawn";
|
||||
distance = 1.5;
|
||||
showDisabled = 0;
|
||||
displayName = CSTRING(unload);
|
||||
condition = QUOTE([ARR_1(_target)] call FUNC(canUnload));
|
||||
statement = QUOTE([ARR_2(_target,0)] call FUNC(unload));
|
||||
icon = "x\tbd_mortars\addons\main\data\unload.paa";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
BIN
addons/m119/tbd_m119/sounds/casing_drop.ogg
Normal file
BIN
addons/m119/tbd_m119/sounds/casing_drop.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user