mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge pull request #6402 from mharis001/explosives-timer
Explosives - New Timer UI
This commit is contained in:
commit
66da48fcdb
@ -4,7 +4,7 @@ class EGVAR(arsenal,stats) {
|
||||
scope = 2;
|
||||
priority = 1;
|
||||
stats[] = {QGVAR(Range)};
|
||||
displayName= CSTRING(statExploRange);
|
||||
displayName = CSTRING(statExploRange);
|
||||
showText = 1;
|
||||
textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _exploRangeStat = getNumber (_config >> _stat select 0); format [ARR_3('%1m (%2ft)', _exploRangeStat, (_exploRangeStat / 0.3048) toFixed 1)]);
|
||||
condition = QUOTE(params [ARR_2('', '_config')]; (getNumber (_config >> QQGVAR(Detonator))) > 0);
|
||||
|
@ -1,13 +1,19 @@
|
||||
class ACE_Triggers {
|
||||
/* onPlace parameters:
|
||||
0: OBJECT - unit placing
|
||||
1: OBJECT - Placed explosive
|
||||
2: STRING - Magazine classname
|
||||
3: ARRAY - vars
|
||||
Last Index: ACE_Triggers config of trigger type.
|
||||
onSetup parameters:
|
||||
0: STRING - Magazine Classname
|
||||
*/
|
||||
/* onPlace Parameters:
|
||||
* 0: Unit placing <OBJECT>
|
||||
* 1: Explosive <OBJECT>
|
||||
* 2: Magazine classname <STRING>
|
||||
* 3: Additional arguments <ARRAY>
|
||||
* - Same as those passed to FUNC(placeExplosive) for specific trigger type
|
||||
* - Last element is ACE_Triggers config of the trigger type <CONFIG>
|
||||
*
|
||||
* onSetup Parameters:
|
||||
* 0: Explosive <OBJECT>
|
||||
* 1: Magazine classname <STRING>
|
||||
*
|
||||
* For both, expected return type is BOOL.
|
||||
* True indicates manual handling of explosive setup/placement.
|
||||
*/
|
||||
class Command {
|
||||
isAttachable = 1;
|
||||
displayName = CSTRING(clacker_displayName);
|
||||
@ -50,8 +56,8 @@ onSetup parameters:
|
||||
isAttachable = 1;
|
||||
displayName = CSTRING(timerName);
|
||||
picture = QPATHTOF(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);
|
||||
onPlace = QUOTE([ARR_2(_this select 1, _this select 3 select 0)] call FUNC(startTimer); false);
|
||||
onSetup = QUOTE(_this call FUNC(openTimerUI));
|
||||
};
|
||||
class Tripwire {
|
||||
isAttachable = 0;
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
|
@ -1,19 +1,4 @@
|
||||
#define GUI_GRID_X (0)
|
||||
#define GUI_GRID_Y (0)
|
||||
#define GUI_GRID_W (0.025)
|
||||
#define GUI_GRID_H (0.04)
|
||||
|
||||
#define ST_CENTER 0x02
|
||||
#define X_OFFSET 0.25
|
||||
|
||||
class RscText;
|
||||
class RscButton;
|
||||
class RscXSliderH;
|
||||
class IGUIBack;
|
||||
class RscPicture;
|
||||
class RscEdit;
|
||||
|
||||
class Rsc_ACE_CallScreen_Edit:RscEdit {
|
||||
class Rsc_ACE_CallScreen_Edit: RscEdit {
|
||||
canModify = 1;
|
||||
colorBackground[] = {0,0,0,0};
|
||||
colorText[] = {0,0,0,1};
|
||||
@ -32,7 +17,7 @@ class Rsc_ACE_CallScreen_Edit:RscEdit {
|
||||
w = 0.0825 * safezoneW;
|
||||
h = 0.044 * safezoneH;
|
||||
};
|
||||
class Rsc_ACE_HiddenButton:RscButton {
|
||||
class Rsc_ACE_HiddenButton: RscButton {
|
||||
colorText[] = {0, 0, 0, 0};
|
||||
colorDisabled[] = {0, 0, 0, 0};
|
||||
colorBackground[] = {0, 0, 0, 0};
|
||||
@ -46,66 +31,7 @@ class Rsc_ACE_HiddenButton:RscButton {
|
||||
shadow = 0;
|
||||
};
|
||||
|
||||
class Rsc_ACE_Timer_Slider:RscXSliderH {
|
||||
x = 0.4;
|
||||
y = 0.2;
|
||||
w = 0.3;
|
||||
h = "1*((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
};
|
||||
|
||||
class RscACE_SelectTimeUI {
|
||||
idd = 8854;
|
||||
movingEnable = 0;
|
||||
class controls {
|
||||
class back:IGUIBack {
|
||||
x = X_OFFSET;
|
||||
y = 0;
|
||||
w = 0.5;
|
||||
h = 0.2;
|
||||
colorBackground[] = {0, 0, 0, 0.5};
|
||||
};
|
||||
class header: RscText{
|
||||
idc = 8870;
|
||||
x = X_OFFSET + 0.005;
|
||||
y = 0.005;
|
||||
w = 0.49;
|
||||
h = 0.05;
|
||||
style = ST_CENTER;
|
||||
text = "";
|
||||
};
|
||||
class slider: Rsc_ACE_Timer_Slider {
|
||||
idc = 8845;
|
||||
x = X_OFFSET + 0.005;
|
||||
y = 0.06;
|
||||
w = 0.49;
|
||||
h = 0.025;
|
||||
onSliderPosChanged = "_mins = floor((_this select 1)/60);_secs=floor((_this select 1) - (_mins*60));ctrlSetText [8870, format[localize 'STR_ACE_Explosives_TimerMenu',_mins, _secs]];";
|
||||
};
|
||||
class cancelBtn: RscButton {
|
||||
idc = 8855;
|
||||
x = X_OFFSET + 0.005;
|
||||
w = 0.15;
|
||||
h = 0.1;
|
||||
y = 0.09;
|
||||
style = ST_CENTER;
|
||||
text = CSTRING(Cancel);
|
||||
action = "closeDialog 0;";
|
||||
};
|
||||
class approveBtn: RscButton {
|
||||
idc = 8860;
|
||||
x = X_OFFSET + 0.345;
|
||||
y = 0.09;
|
||||
h = 0.1;
|
||||
w = 0.15;
|
||||
style = ST_CENTER;
|
||||
text = CSTRING(SetTime);
|
||||
action = "closeDialog 0;";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Rsc_ACE_NumKeyButton: Rsc_ACE_HiddenButton{};
|
||||
class Rsc_ACE_NumKeyButton: Rsc_ACE_HiddenButton {};
|
||||
class Rsc_ACE_PhoneInterface {
|
||||
idd = 8855;
|
||||
movingEnable = 1;
|
||||
|
97
addons/explosives/TimerDialog.hpp
Normal file
97
addons/explosives/TimerDialog.hpp
Normal file
@ -0,0 +1,97 @@
|
||||
class GVAR(timerUI) {
|
||||
idd = -1;
|
||||
movingEnable = 1;
|
||||
enableSimulation = 1;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(timerDisplay), _this select 0)]);
|
||||
class controlsBackground {
|
||||
class Header: RscText {
|
||||
idc = -1;
|
||||
text = CSTRING(ExplosiveTimer);
|
||||
x = 13.5 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
y = 5 * GUI_GRID_H + GUI_GRID_CENTER_Y;
|
||||
w = 13 * GUI_GRID_W;
|
||||
h = GUI_GRID_H;
|
||||
colorBackground[] = GUI_BCG_COLOR;
|
||||
moving = 1;
|
||||
};
|
||||
class Background: RscText {
|
||||
idd = -1;
|
||||
x = 13.5 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
y = 6.1 * GUI_GRID_H + GUI_GRID_CENTER_Y;
|
||||
w = 13 * GUI_GRID_W;
|
||||
h = 6.5 * GUI_GRID_H;
|
||||
colorBackground[] = {0, 0, 0, 0.8};
|
||||
};
|
||||
};
|
||||
class controls {
|
||||
class DigitBackground_1: RscPicture {
|
||||
idc = -1;
|
||||
text = QPATHTOF(UI\seven_segment_8.paa);
|
||||
x = 14 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
y = 6.6 * GUI_GRID_H + GUI_GRID_CENTER_Y;
|
||||
w = 4 * GUI_GRID_W;
|
||||
h = 4 * GUI_GRID_H;
|
||||
colorText[] = {0.3, 0.3, 0.3, 0.5};
|
||||
};
|
||||
class DigitBackground_2: DigitBackground_1 {
|
||||
x = 16.4 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
};
|
||||
class DigitBackground_3: DigitBackground_1 {
|
||||
x = 19.7 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
};
|
||||
class DigitBackground_4: DigitBackground_1 {
|
||||
x = 22.1 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
};
|
||||
class DigitSeparator: DigitBackground_1 {
|
||||
text = QPATHTOF(UI\seven_segment_separator.paa);
|
||||
x = 18.025 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
colorText[] = {1, 0.05, 0.05, 1};
|
||||
};
|
||||
class Digit_1: DigitBackground_1 {
|
||||
idc = IDC_TIMER_DIGIT_1;
|
||||
text = QPATHTOF(UI\seven_segment_0.paa);
|
||||
colorText[] = {1, 0.05, 0.05, 1};
|
||||
};
|
||||
class Digit_2: Digit_1 {
|
||||
idc = IDC_TIMER_DIGIT_2;
|
||||
x = 16.4 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
};
|
||||
class Digit_3: Digit_1 {
|
||||
idc = IDC_TIMER_DIGIT_3;
|
||||
x = 19.7 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
};
|
||||
class Digit_4: Digit_1 {
|
||||
idc = IDC_TIMER_DIGIT_4;
|
||||
x = 22.1 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
};
|
||||
class Slider: ctrlXSliderH {
|
||||
idc = IDC_TIMER_SLIDER;
|
||||
x = 14 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
y = 11.1 * GUI_GRID_H + GUI_GRID_CENTER_Y;
|
||||
w = 12 * GUI_GRID_W;
|
||||
h = GUI_GRID_H;
|
||||
color[] = {0.3, 0.3, 0.3, 0.7};
|
||||
colorActive[] = {0.3, 0.3, 0.3, 0.7};
|
||||
sliderRange[] = {TIMER_VALUE_MIN, TIMER_VALUE_MAX};
|
||||
sliderPosition = TIMER_VALUE_DEFAULT;
|
||||
};
|
||||
class CancelButton: RscButton {
|
||||
idc = -1;
|
||||
text = CSTRING(Cancel);
|
||||
onButtonClick = QUOTE(closeDialog 0);
|
||||
x = 13.5 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
y = 12.7 * GUI_GRID_H + GUI_GRID_CENTER_Y;
|
||||
w = 5 * GUI_GRID_W;
|
||||
h = GUI_GRID_H;
|
||||
colorActive[] = {0, 0, 0, 1};
|
||||
colorBackground[] = {0, 0, 0, 0.8};
|
||||
colorFocused[] = {0, 0, 0, 0.8};
|
||||
};
|
||||
class ConfirmButton: CancelButton {
|
||||
idc = IDC_TIMER_CONFIRM;
|
||||
text = CSTRING(SetTime);
|
||||
onButtonClick = "";
|
||||
x = 21.5 * GUI_GRID_W + GUI_GRID_CENTER_X;
|
||||
};
|
||||
};
|
||||
};
|
BIN
addons/explosives/UI/seven_segment_0.paa
Normal file
BIN
addons/explosives/UI/seven_segment_0.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_1.paa
Normal file
BIN
addons/explosives/UI/seven_segment_1.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_2.paa
Normal file
BIN
addons/explosives/UI/seven_segment_2.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_3.paa
Normal file
BIN
addons/explosives/UI/seven_segment_3.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_4.paa
Normal file
BIN
addons/explosives/UI/seven_segment_4.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_5.paa
Normal file
BIN
addons/explosives/UI/seven_segment_5.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_6.paa
Normal file
BIN
addons/explosives/UI/seven_segment_6.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_7.paa
Normal file
BIN
addons/explosives/UI/seven_segment_7.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_8.paa
Normal file
BIN
addons/explosives/UI/seven_segment_8.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_9.paa
Normal file
BIN
addons/explosives/UI/seven_segment_9.paa
Normal file
Binary file not shown.
BIN
addons/explosives/UI/seven_segment_separator.paa
Normal file
BIN
addons/explosives/UI/seven_segment_separator.paa
Normal file
Binary file not shown.
@ -1,4 +1,3 @@
|
||||
|
||||
PREP(addCellphoneIED);
|
||||
PREP(addClacker);
|
||||
PREP(addDetonateActions);
|
||||
@ -16,28 +15,19 @@ PREP(detonateExplosive);
|
||||
PREP(detonateExplosiveAll);
|
||||
PREP(dialPhone);
|
||||
PREP(dialingPhone);
|
||||
|
||||
PREP(handleScrollWheel);
|
||||
|
||||
PREP(hasExplosives);
|
||||
PREP(hasPlacedExplosives);
|
||||
|
||||
PREP(interactEH);
|
||||
|
||||
PREP(getDetonators);
|
||||
PREP(getPlacedExplosives);
|
||||
PREP(getSpeedDialExplosive);
|
||||
|
||||
PREP(module);
|
||||
|
||||
PREP(onIncapacitated);
|
||||
PREP(onInventoryChanged);
|
||||
|
||||
PREP(openTimerSetUI);
|
||||
|
||||
PREP(openTimerUI);
|
||||
PREP(placeExplosive);
|
||||
PREP(removeFromSpeedDial);
|
||||
|
||||
PREP(scriptedExplosive);
|
||||
PREP(selectTrigger);
|
||||
PREP(setupExplosive);
|
||||
|
@ -8,16 +8,14 @@ class CfgPatches {
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interaction"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"Garth 'L-H' de Wet"};
|
||||
authors[] = {"Garth 'L-H' de Wet", "mharis001"};
|
||||
url = ECSTRING(main,URL);
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "ACE_Settings.hpp"
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
#include "CfgAmmo.hpp"
|
||||
#include "CfgMagazines.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
@ -25,10 +23,18 @@ class CfgPatches {
|
||||
#include "CfgCloudlets.hpp"
|
||||
|
||||
#include "ACE_Triggers.hpp"
|
||||
#include "ExplosivesUI.hpp"
|
||||
#include "GUI_VirtualAmmo.hpp"
|
||||
#include "ACE_Arsenal_Stats.hpp"
|
||||
|
||||
// UI stuff
|
||||
class RscText;
|
||||
class RscEdit;
|
||||
class RscPicture;
|
||||
class RscButton;
|
||||
class ctrlXSliderH;
|
||||
#include "ExplosivesUI.hpp"
|
||||
#include "TimerDialog.hpp"
|
||||
#include "GUI_VirtualAmmo.hpp"
|
||||
|
||||
class CfgActions {
|
||||
class None;
|
||||
class ActivateMine: None {
|
||||
|
@ -1,44 +0,0 @@
|
||||
/*
|
||||
* Author: Garth 'L-H' de Wet
|
||||
* Opens the UI for timer setting of an explosive
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Explosive <OBJECT>
|
||||
* 1: Magazine <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_explosive, "SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_openTimerSetUI;
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_explosive", "_mag"];
|
||||
TRACE_2("params",_explosive,_mag);
|
||||
|
||||
createDialog "RscACE_SelectTimeUI";
|
||||
sliderSetRange [8845, 5, 900]; // 5seconds - 15minutes
|
||||
sliderSetPosition [8845, 30];
|
||||
|
||||
GVAR(explosive) = _explosive;
|
||||
|
||||
DFUNC(SetTimer) = {
|
||||
[
|
||||
ACE_player,
|
||||
getPosATL GVAR(explosive),
|
||||
GVAR(explosive) getVariable QGVAR(Direction),
|
||||
GVAR(explosive) getVariable QGVAR(class),
|
||||
"Timer",
|
||||
[floor sliderPosition 8845],
|
||||
GVAR(explosive)
|
||||
] call FUNC(placeExplosive);
|
||||
closeDialog 0;
|
||||
};
|
||||
|
||||
buttonSetAction [8860, QUOTE(call DFUNC(SetTimer);)];
|
||||
buttonSetAction [8855, QUOTE(closeDialog 0;)];
|
||||
|
||||
ctrlSetText [8870, format[localize LSTRING(TimerMenu),0, 30]];
|
84
addons/explosives/functions/fnc_openTimerUI.sqf
Normal file
84
addons/explosives/functions/fnc_openTimerUI.sqf
Normal file
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Author: mharis001
|
||||
* Opens the Explosive Timer UI for given explosive.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Explosive <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* True <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [_explosive] call ace_explosives_fnc_openTimerUI
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_explosive"];
|
||||
TRACE_1("Opening timer UI",_explosive);
|
||||
|
||||
createDialog QGVAR(timerUI);
|
||||
private _display = uiNamespace getVariable [QGVAR(timerDisplay), displayNull];
|
||||
|
||||
// Update slider speed to 1s
|
||||
(_display displayCtrl IDC_TIMER_SLIDER) sliderSetSpeed [1, 1];
|
||||
|
||||
// Add confirm button action
|
||||
GVAR(explosive) = _explosive;
|
||||
(_display displayCtrl IDC_TIMER_CONFIRM) ctrlAddEventHandler ["ButtonClick", {
|
||||
params ["_button"];
|
||||
|
||||
private _slider = ctrlParent _button displayCtrl IDC_TIMER_SLIDER;
|
||||
private _time = floor sliderPosition _slider;
|
||||
private _explosive = GVAR(explosive);
|
||||
[
|
||||
ACE_player,
|
||||
getPosATL _explosive,
|
||||
_explosive getVariable QGVAR(Direction),
|
||||
_explosive getVariable QGVAR(class),
|
||||
"Timer",
|
||||
[_time],
|
||||
_explosive
|
||||
] call FUNC(placeExplosive);
|
||||
closeDialog 0;
|
||||
}];
|
||||
|
||||
// Add EH to allow for changing values by scrolling
|
||||
_display displayAddEventHandler ["MouseZChanged", {
|
||||
params ["_display", "_scroll"];
|
||||
|
||||
private _change = round _scroll;
|
||||
if (cba_events_control) then {_change = _change * 10};
|
||||
|
||||
private _slider = _display displayCtrl IDC_TIMER_SLIDER;
|
||||
private _value = (sliderPosition _slider + _change) max TIMER_VALUE_MIN min TIMER_VALUE_MAX;
|
||||
_slider sliderSetPosition _value;
|
||||
}];
|
||||
|
||||
// Add PFH to update the digit display (delay of 0.1s)
|
||||
// Done like this to avoid flicker that would happen when rapidly changing values through EH method
|
||||
[{
|
||||
params ["_display", "_pfhID"];
|
||||
|
||||
// Make sure explosive still exists and is near player
|
||||
if ((!isNull _display) && {!alive ACE_player} || {!alive GVAR(explosive)} || {(ACE_player distance GVAR(explosive)) > 5}) exitWith {
|
||||
INFO_2("explosive became invalid",ACE_player,GVAR(explosive));
|
||||
closeDialog 0;
|
||||
_pfhID call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
if (isNull _display) exitWith {
|
||||
_pfhID call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
private _value = sliderPosition (_display displayCtrl IDC_TIMER_SLIDER);
|
||||
private _minutes = floor (_value / 60);
|
||||
private _seconds = floor (_value % 60);
|
||||
private _digitArray = [floor (_minutes / 10), _minutes mod 10, floor (_seconds / 10), _seconds mod 10];
|
||||
{
|
||||
(_display displayCtrl _x) ctrlSetText format [QPATHTOF(UI\seven_segment_%1.paa), _digitArray select _forEachIndex];
|
||||
} forEach TIMER_DIGIT_IDCs;
|
||||
}, 0.1, _display] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
true
|
@ -5,7 +5,7 @@
|
||||
* Arguments:
|
||||
* 0: Explosive <OBJECT>
|
||||
* 1: Time till detonate <NUMBER>
|
||||
* 2: Trigger Item Classname <STRING> (default: "#timer")
|
||||
* 2: Trigger classname <STRING> (default: "#timer")
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
@ -17,13 +17,13 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_explosive", "_delay", ["_triggerClassname", "#timer", [""]]];
|
||||
TRACE_3("startTimer",_explosive,_delay,_triggerClassname);
|
||||
params ["_explosive", "_delay", ["_trigger", "#timer", [""]]];
|
||||
TRACE_3("Starting timer",_explosive,_delay,_trigger);
|
||||
|
||||
[{
|
||||
params ["_explosive", "_triggerClassname"];
|
||||
TRACE_1("Explosive Going Boom",_explosive);
|
||||
params ["_explosive", "_trigger"];
|
||||
TRACE_1("Explosive detonating from timer",_explosive);
|
||||
if (!isNull _explosive) then {
|
||||
[_explosive, -1, [_explosive, 0], _triggerClassname] call FUNC(detonateExplosive);
|
||||
[_explosive, -1, [_explosive, 0], _trigger] call FUNC(detonateExplosive);
|
||||
};
|
||||
}, [_explosive, _triggerClassname], _delay] call CBA_fnc_waitAndExecute;
|
||||
}, [_explosive, _trigger], _delay] call CBA_fnc_waitAndExecute;
|
||||
|
@ -16,6 +16,21 @@
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#include "\a3\ui_f\hpp\defineCommonGrids.inc"
|
||||
#include "\a3\ui_f\hpp\defineCommonColors.inc"
|
||||
|
||||
#define IDC_TIMER_DIGIT_1 8501
|
||||
#define IDC_TIMER_DIGIT_2 8502
|
||||
#define IDC_TIMER_DIGIT_3 8503
|
||||
#define IDC_TIMER_DIGIT_4 8504
|
||||
#define IDC_TIMER_SLIDER 8505
|
||||
#define IDC_TIMER_CONFIRM 8506
|
||||
#define TIMER_DIGIT_IDCs [IDC_TIMER_DIGIT_1, IDC_TIMER_DIGIT_2, IDC_TIMER_DIGIT_3, IDC_TIMER_DIGIT_4]
|
||||
|
||||
#define TIMER_VALUE_MIN 5
|
||||
#define TIMER_VALUE_MAX 900
|
||||
#define TIMER_VALUE_DEFAULT 30
|
||||
|
||||
#define PLACE_WAITING -1
|
||||
#define PLACE_CANCEL 0
|
||||
#define PLACE_APPROVE 1
|
||||
|
@ -1027,5 +1027,8 @@
|
||||
<Chinese>爆炸範圍</Chinese>
|
||||
<Italian>Raggio di detonazione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_ExplosiveTimer">
|
||||
<English>Explosive Timer</English>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
Loading…
Reference in New Issue
Block a user