diff --git a/addons/malyutka/CfgVehicles.hpp b/addons/malyutka/CfgVehicles.hpp index fbe62a40dd..57afce3e66 100644 --- a/addons/malyutka/CfgVehicles.hpp +++ b/addons/malyutka/CfgVehicles.hpp @@ -99,31 +99,14 @@ class CfgVehicles { }; }; }; - }; - class ThingX; - class GVAR(plug): ThingX { - displayName = QGVAR(plug); - scope = 1; - scopeCurator = 1; - model = "\a3\Structures_F_Orange\VR\Helpers\Sign_sphere10cm_Geometry_F.p3d"; - destrType = "DestructNo"; - - class ACE_Actions { - class ACE_MainActions { - displayName = CSTRING(plug); - condition = "true"; - distance = 2; - class GVAR(pickup) { - displayName = CSTRING(pickupPlug); - condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPickupPlug)); - statement = QUOTE([ARR_2(_player,_target)] call FUNC(pickupPlug)); - }; - class GVAR(unattach) { - displayName = CSTRING(unattachPlug); - condition = QUOTE([ARR_2(_player,_target)] call FUNC(canUnattachPlug)); - statement = QUOTE([ARR_2(_player,_target)] call FUNC(unattachPlug)); - }; + class AnimationSources { + class missile_hide { + source = "user"; + animPeriod = 0.0001; + initPhase = 0; + maxValue = "1"; + minValue = "0"; }; }; }; @@ -165,8 +148,8 @@ class CfgVehicles { optics = 1; turretInfoType = "RscWeaponEmpty"; gunnerOpticsModel = "\a3\weapons_f_gamma\reticle\GMG_01_Optics_Gunner_F"; - minElev = 0; - maxElev = 0; + minElev = -30; + maxElev = 20; weapons[] = { QGVAR(9s415_dummy_weapon) }; magazines[] = { QGVAR(9s415_dummy) }; @@ -211,6 +194,34 @@ class CfgVehicles { class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { displayName = CSTRING(9s415); + selection = "center"; + }; + }; + }; + + class ThingX; + class GVAR(plug): ThingX { + displayName = QGVAR(plug); + scope = 1; + scopeCurator = 1; + model = "\a3\Structures_F_Orange\VR\Helpers\Sign_sphere10cm_Geometry_F.p3d"; + destrType = "DestructNo"; + + class ACE_Actions { + class ACE_MainActions { + displayName = CSTRING(plug); + condition = "true"; + distance = 2; + class GVAR(pickup) { + displayName = CSTRING(pickupPlug); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPickupPlug)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(pickupPlug)); + }; + class GVAR(unattach) { + displayName = CSTRING(unattachPlug); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canUnattachPlug)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(unattachPlug)); + }; }; }; }; diff --git a/addons/malyutka/data/9m14_joystick.p3d b/addons/malyutka/data/9m14_joystick.p3d index 76c9ad07d2..502790eab0 100644 Binary files a/addons/malyutka/data/9m14_joystick.p3d and b/addons/malyutka/data/9m14_joystick.p3d differ diff --git a/addons/malyutka/data/9m14_mount.p3d b/addons/malyutka/data/9m14_mount.p3d index c64171d2af..2a592289ef 100644 Binary files a/addons/malyutka/data/9m14_mount.p3d and b/addons/malyutka/data/9m14_mount.p3d differ diff --git a/addons/malyutka/data/model.cfg b/addons/malyutka/data/model.cfg index 6b3e3a5183..a6e4362780 100644 --- a/addons/malyutka/data/model.cfg +++ b/addons/malyutka/data/model.cfg @@ -2,11 +2,20 @@ class CfgSkeletons { class Default { isDiscrete = 1; skeletonInherit = ""; - skeletonBones[] = {}; + skeletonBones[] = { + "suitcase", "", + "missile", "suitcase" + }; }; class 9m14_skeleton: Default {}; class 9m14_mount_skeleton: Default {}; - class 9m14_joystick_skeleton: Default {}; + class 9m14_joystick_skeleton: Default { + skeletonBones[] = { + "box", "", + "periscope", "box", + "view_pos", "periscope" + }; + }; }; class CfgModels { class Default { @@ -23,10 +32,50 @@ class CfgModels { sectionsInherit = ""; sections[] = {}; skeletonName = "9m14_mount_skeleton"; + class Animations { + class missile_hide { + type = "hide"; + source = "user"; + selection = "missile"; + animPeriod = 0.0001; + minValue = 0; + maxValue = 1; + minPhase = 0; + maxPhase = 1; + hideValue = 0.99; + }; + }; }; class 9m14_joystick: Default { sectionsInherit = ""; sections[] = {}; skeletonName = "9m14_joystick_skeleton"; + class Animations { + class MainGun { + type = "rotation"; + selection = "view_pos"; + sourceAddress = "clamp"; + source = "MainGun"; + axis = "elevation_axis"; + animPeriod = 0.01; + initPhase = 0; + maxValue = "rad 360"; + minValue = "rad -360"; + angle1 = "rad -360"; + angle0 = "rad +360"; + }; + class MainTurret { + type = "rotation"; + source = "MainTurret"; + selection = "periscope"; + sourceAddress = "loop"; + axis = "rotation_axis"; + animPeriod = 0.005; + minValue = "rad -360"; + maxValue = "rad +360"; + angle1 = "rad -360"; + angle0 = "rad +360"; + }; + }; }; }; \ No newline at end of file diff --git a/addons/malyutka/functions/fnc_onFired.sqf b/addons/malyutka/functions/fnc_onFired.sqf index de6e6e5fbf..9fdec49428 100644 --- a/addons/malyutka/functions/fnc_onFired.sqf +++ b/addons/malyutka/functions/fnc_onFired.sqf @@ -28,6 +28,7 @@ private _statuses = _controlBox getVariable QGVAR(plugStatus); private _availableIndex = _statuses findIf { (_x isNotEqualTo objNull) && (someAmmo _x) }; if (_availableIndex >= 0) then { private _malyutka = _statuses select _availableIndex; + _malyutka animate ["missile_hide", 1]; [_malyutka, QGVAR(9m14)] call BIS_fnc_fire; } else { // how did we get here?