From 1f4488253d1916584cb607edb58fa05eb5f70175 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 15 Jul 2015 23:52:47 -0500 Subject: [PATCH] Only attach some triggers --- addons/explosives/ACE_Triggers.hpp | 12 ++++++++++-- addons/explosives/functions/fnc_setupExplosive.sqf | 13 ++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/addons/explosives/ACE_Triggers.hpp b/addons/explosives/ACE_Triggers.hpp index 5df3d005bc..86fbab1cef 100644 --- a/addons/explosives/ACE_Triggers.hpp +++ b/addons/explosives/ACE_Triggers.hpp @@ -1,5 +1,5 @@ class ACE_Triggers { -/* onPlace parameters: + /* onPlace parameters: 0: OBJECT - unit placing 1: OBJECT - Placed explosive 2: STRING - Magazine classname @@ -7,46 +7,54 @@ class ACE_Triggers { Last Index: ACE_Triggers config of trigger type. onSetup parameters: 0: STRING - Magazine Classname -*/ + */ class Command { + isAttachable = 1; displayName = CSTRING(clacker_displayName); picture = PATHTOF(Data\UI\Clacker.paa); onPlace = QUOTE(_this call FUNC(AddClacker);false); requires[] = {"ACE_Clacker"}; }; class MK16_Transmitter:Command { + isAttachable = 1; displayName = CSTRING(MK16_displayName); picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa); requires[] = {"ACE_M26_Clacker"}; }; class DeadManSwitch:Command { + isAttachable = 1; displayName = CSTRING(DeadManSwitch_displayName); picture = PATHTOF(Data\UI\DeadmanSwitch.paa); requires[] = {"ACE_DeadManSwitch"}; }; class Cellphone:Command { + isAttachable = 1; displayName = CSTRING(cellphone_displayName); picture = PATHTOF(Data\UI\Cellphone_UI.paa); onPlace = QUOTE(_this call FUNC(addCellphoneIED);false); requires[] = {"ACE_Cellphone"}; }; class PressurePlate { + isAttachable = 0; displayName = CSTRING(PressurePlate); picture = PATHTOF(Data\UI\PressurePlate.paa); onPlace = "_dist=GetNumber(ConfigFile >> 'CfgMagazines' >> (_this select 2) >> 'ACE_Triggers' >> 'PressurePlate' >> 'digDistance');_ex=_this select 1;_ex setPosATL ((getPosATL _ex) vectorDiff ((VectorUp _ex) vectorCrossProduct [0,0,_dist]));false"; }; class IRSensor { + isAttachable = 0; displayName = CSTRING(IRSensor); picture = PATHTOF(Data\UI\PressurePlate.paa); onPlace = "false"; }; class Timer { + isAttachable = 1; displayName = CSTRING(timerName); picture = PATHTOF(data\UI\Timer.paa); onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false); onSetup = QUOTE(_this call FUNC(openTimerSetUI);true); }; class Tripwire { + isAttachable = 0; displayName = CSTRING(TripWire); picture = PATHTOF(Data\UI\Tripwire.paa); onPlace = "false"; diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index aa87280b1a..ffd3ab0294 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -37,6 +37,13 @@ _unit setVariable [QGVAR(cancelActionEH), [_unit, "zoomtemp", {true}, {GVAR(plac (QGVAR(virtualAmmo) call BIS_fnc_rscLayer) cutRsc [QGVAR(virtualAmmo), "PLAIN", 0, false]; ((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetModel _p3dModel; +_isAttachable = false; +_supportedTriggers = getArray (configFile >> "CfgMagazines" >> _magClassname >> "ACE_Triggers" >> "SupportedTriggers"); +{ + if ((getNumber (configFile >> "ACE_Triggers" >> _x >> "isAttachable")) == 1) exitWith {_isAttachable = true;}; +} forEach _supportedTriggers; + + GVAR(pfeh_running) = true; GVAR(placeAction) = PLACE_WAITING; GVAR(TweakedAngle) = 0; @@ -46,7 +53,7 @@ GVAR(TweakedAngle) = 0; BEGIN_COUNTER(pfeh); PARAMS_2(_args,_pfID); - EXPLODE_3_PVT(_args,_unit,_magClassname,_setupObjectClass); + EXPLODE_4_PVT(_args,_unit,_magClassname,_setupObjectClass,_isAttachable); _lookDirVector = (positionCameraToWorld [0,0,0]) vectorFromTo (positionCameraToWorld [0,0,1]); _cameraAngle = (_lookDirVector select 0) atan2 (_lookDirVector select 1); @@ -73,7 +80,7 @@ GVAR(TweakedAngle) = 0; _attachVehicle = objNull; - if (_badPosition && {!isNull cursorTarget} && {(cursorTarget isKindOf "Car")}) then { + if (_isAttachable && _badPosition && {!isNull cursorTarget} && {(cursorTarget isKindOf "Car")}) then { _attachVehicle = cursorTarget; if ([0.05] call _testPositionIsValid) then { _min = 0.05; @@ -173,4 +180,4 @@ GVAR(TweakedAngle) = 0; END_COUNTER(pfeh); -}, 0, [_unit, _magClassname, _setupObjectClass]] call CBA_fnc_addPerFrameHandler; +}, 0, [_unit, _magClassname, _setupObjectClass, _isAttachable]] call CBA_fnc_addPerFrameHandler;