mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge pull request #2219 from acemod/handSignals
Hand signals enhancement
This commit is contained in:
commit
15267c0433
11
addons/gestures/CfgEventHandlers.hpp
Normal file
11
addons/gestures/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
145
addons/gestures/CfgVehicles.hpp
Normal file
145
addons/gestures/CfgVehicles.hpp
Normal file
@ -0,0 +1,145 @@
|
||||
class CfgVehicles {
|
||||
|
||||
class Man;
|
||||
class CAManBase: Man {
|
||||
class ACE_SelfActions {
|
||||
class ADDON {
|
||||
displayName = CSTRING(Gestures);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = "";
|
||||
showDisabled = 1;
|
||||
priority = 3.5;
|
||||
icon = PATHTOF(UI\gestures_ca.paa);
|
||||
|
||||
class GVAR(Advance) {
|
||||
displayName = CSTRING(BIgestureAdvance);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureAdvance';);
|
||||
showDisabled = 1;
|
||||
priority = 1.9;
|
||||
};
|
||||
class GVAR(Go) {
|
||||
displayName = CSTRING(BIgestureGo);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2););
|
||||
showDisabled = 1;
|
||||
priority = 1.8;
|
||||
};
|
||||
class GVAR(Follow) {
|
||||
displayName = CSTRING(BIgestureFollow);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureFollow';);
|
||||
showDisabled = 1;
|
||||
priority = 1.7;
|
||||
};
|
||||
class GVAR(Up) {
|
||||
displayName = CSTRING(BIgestureUp);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureUp';);
|
||||
showDisabled = 1;
|
||||
priority = 1.5;
|
||||
};
|
||||
class GVAR(CeaseFire) {
|
||||
displayName = CSTRING(BIgestureCeaseFire);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureCeaseFire';);
|
||||
showDisabled = 1;
|
||||
priority = 1.3;
|
||||
};
|
||||
class GVAR(Freeze) {
|
||||
displayName = CSTRING(BIgestureFreeze);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureFreeze';);
|
||||
showDisabled = 1;
|
||||
priority = 1.2;
|
||||
};
|
||||
class GVAR(Forward) {
|
||||
displayName = CSTRING(forward);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = QUOTE(QUOTE(QGVAR(forward)) call FUNC(playSignal));
|
||||
showDisabled = 1;
|
||||
priority = 1.9;
|
||||
};
|
||||
class GVAR(Regroup) {
|
||||
displayName = CSTRING(regroup);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = QUOTE(QUOTE(QGVAR(regroup)) call FUNC(playSignal));
|
||||
showDisabled = 1;
|
||||
priority = 1.8;
|
||||
};
|
||||
class GVAR(Stop) {
|
||||
displayName = CSTRING(stop);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = QUOTE(QUOTE(QGVAR(stop)) call FUNC(playSignal));
|
||||
showDisabled = 1;
|
||||
priority = 1.7;
|
||||
};
|
||||
class GVAR(Cover) {
|
||||
displayName = CSTRING(cover);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = QUOTE(QUOTE(QGVAR(cover)) call FUNC(playSignal));
|
||||
showDisabled = 1;
|
||||
priority = 1.6;
|
||||
};
|
||||
class GVAR(Point) {
|
||||
displayName = CSTRING(point);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = QUOTE(QUOTE(QGVAR(point)) call FUNC(playSignal));
|
||||
showDisabled = 1;
|
||||
priority = 1.5;
|
||||
};
|
||||
class GVAR(Engage) {
|
||||
displayName = CSTRING(engage);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = QUOTE(QUOTE(QGVAR(engage)) call FUNC(playSignal));
|
||||
showDisabled = 1;
|
||||
priority = 1.4;
|
||||
};
|
||||
class GVAR(Hold) {
|
||||
displayName = CSTRING(hold);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = QUOTE(QUOTE(QGVAR(hold)) call FUNC(playSignal));
|
||||
showDisabled = 1;
|
||||
priority = 1.3;
|
||||
};
|
||||
class GVAR(Warning) {
|
||||
displayName = CSTRING(warning);
|
||||
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
|
||||
statement = QUOTE(QUOTE(QGVAR(warning)) call FUNC(playSignal));
|
||||
showDisabled = 1;
|
||||
priority = 1.2;
|
||||
};
|
||||
/*
|
||||
class class GVAR(Yes) {
|
||||
displayName = ECSTRING(common,Yes);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2););
|
||||
showDisabled = 1;
|
||||
priority = 1.1;
|
||||
hotkey = "8";
|
||||
};
|
||||
|
||||
class class GVAR(No) {
|
||||
displayName = ECSTRING(common,No);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureNo';);
|
||||
showDisabled = 1;
|
||||
priority = 1.0;
|
||||
hotkey = "9";
|
||||
};
|
||||
|
||||
class class GVAR(Hi) {
|
||||
displayName = CSTRING(Gestures_Hi);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3););
|
||||
showDisabled = 1;
|
||||
priority = 0.9;
|
||||
hotkey = "0";
|
||||
};
|
||||
*/
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
38
addons/gestures/XEH_postInit.sqf
Normal file
38
addons/gestures/XEH_postInit.sqf
Normal file
@ -0,0 +1,38 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
#include "key.sqf"
|
||||
|
||||
// reload mutex, you can't play signal while reloading
|
||||
GVAR(ReloadMutex) = true;
|
||||
|
||||
// Event for main display to be loaded:
|
||||
["mainDisplayLoaded", {
|
||||
// handle reloading
|
||||
(findDisplay 46) displayAddEventHandler ["KeyDown", {
|
||||
if ((_this select 1) in actionKeys "ReloadMagazine") then {
|
||||
if ((isNull ACE_player) || {!alive ACE_player}) exitWith {false};
|
||||
private _weapon = currentWeapon ACE_player;
|
||||
|
||||
if (_weapon != "") then {
|
||||
GVAR(ReloadMutex) = false;
|
||||
|
||||
private _gesture = getText (configfile >> "CfgWeapons" >> _weapon >> "reloadAction");
|
||||
private _isLauncher = _weapon isKindOf ["Launcher", (configFile >> "CfgWeapons")];
|
||||
private _config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher;
|
||||
private _duration = getNumber (configfile >> _config >> "States" >> _gesture >> "speed");
|
||||
|
||||
if (_duration != 0) then {
|
||||
_duration = if (_duration < 0) then { abs _duration } else { 1 / _duration };
|
||||
} else {
|
||||
_duration = 3;
|
||||
};
|
||||
|
||||
TRACE_2("Reloading, blocking gestures",_weapon,_duration);
|
||||
[{GVAR(ReloadMutex) = true;}, [], _duration] call EFUNC(common,waitAndExecute);
|
||||
};
|
||||
};
|
||||
false
|
||||
}];
|
||||
}] call EFUNC(common,addEventHandler);
|
7
addons/gestures/XEH_preInit.sqf
Normal file
7
addons/gestures/XEH_preInit.sqf
Normal file
@ -0,0 +1,7 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(playSignal);
|
||||
|
||||
ADDON = true;
|
BIN
addons/gestures/anim/ace_cover.rtm
Normal file
BIN
addons/gestures/anim/ace_cover.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_cover_stand_lowered.rtm
Normal file
BIN
addons/gestures/anim/ace_cover_stand_lowered.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_engage.rtm
Normal file
BIN
addons/gestures/anim/ace_engage.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_engage_stand_lowered.rtm
Normal file
BIN
addons/gestures/anim/ace_engage_stand_lowered.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_forward.rtm
Normal file
BIN
addons/gestures/anim/ace_forward.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_forward_stand_lowered.rtm
Normal file
BIN
addons/gestures/anim/ace_forward_stand_lowered.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_hold.rtm
Normal file
BIN
addons/gestures/anim/ace_hold.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_hold_stand_lowered.rtm
Normal file
BIN
addons/gestures/anim/ace_hold_stand_lowered.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_point.rtm
Normal file
BIN
addons/gestures/anim/ace_point.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_point_stand_lowered.rtm
Normal file
BIN
addons/gestures/anim/ace_point_stand_lowered.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_regroup.rtm
Normal file
BIN
addons/gestures/anim/ace_regroup.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_regroup_stand_lowered.rtm
Normal file
BIN
addons/gestures/anim/ace_regroup_stand_lowered.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_stop.rtm
Normal file
BIN
addons/gestures/anim/ace_stop.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_stop_stand_lowered.rtm
Normal file
BIN
addons/gestures/anim/ace_stop_stand_lowered.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_warning.rtm
Normal file
BIN
addons/gestures/anim/ace_warning.rtm
Normal file
Binary file not shown.
BIN
addons/gestures/anim/ace_warning_stand_lowered.rtm
Normal file
BIN
addons/gestures/anim/ace_warning_stand_lowered.rtm
Normal file
Binary file not shown.
200
addons/gestures/cfgMovesBasic.hpp
Normal file
200
addons/gestures/cfgMovesBasic.hpp
Normal file
@ -0,0 +1,200 @@
|
||||
class CfgMovesBasic {
|
||||
class ManActions {
|
||||
GVAR(forward) = QGVAR(forward);
|
||||
GVAR(stop) = QGVAR(stop);
|
||||
GVAR(cover) = QGVAR(cover);
|
||||
GVAR(regroup) = QGVAR(regroup);
|
||||
GVAR(engage) = QGVAR(engage);
|
||||
GVAR(point) = QGVAR(point);
|
||||
GVAR(hold) = QGVAR(hold);
|
||||
GVAR(warning) = QGVAR(warningS);
|
||||
|
||||
GVAR(forwardStandLowered) = QGVAR(forwardStandLowered);
|
||||
GVAR(stopStandLowered) = QGVAR(stopStandLowered);
|
||||
GVAR(coverStandLowered) = QGVAR(coverStandLowered);
|
||||
GVAR(regroupStandLowered) = QGVAR(regroupStandLowered);
|
||||
GVAR(engageStandLowered) = QGVAR(engageStandLowered);
|
||||
GVAR(pointStandLowered) = QGVAR(pointStandLowered);
|
||||
GVAR(holdStandLowered) = QGVAR(holdStandLowered);
|
||||
GVAR(warningStandLowered) = QGVAR(warningStandLowered);
|
||||
};
|
||||
|
||||
class Actions {
|
||||
class NoActions: ManActions {
|
||||
GVAR(forward)[] = {QGVAR(forward), "Gesture"};
|
||||
GVAR(stop)[] = {QGVAR(stop), "Gesture"};
|
||||
GVAR(cover)[] = {QGVAR(cover), "Gesture"};
|
||||
GVAR(regroup)[] = {QGVAR(regroup), "Gesture"};
|
||||
GVAR(engage)[] = {QGVAR(engage), "Gesture"};
|
||||
GVAR(point)[] = {QGVAR(point), "Gesture"};
|
||||
GVAR(hold)[] = {QGVAR(hold), "Gesture"};
|
||||
GVAR(warning)[] = {QGVAR(warning), "Gesture"};
|
||||
|
||||
GVAR(forwardStandLowered)[] = {QGVAR(forwardStandLowered), "Gesture"};
|
||||
GVAR(stopStandLowered)[] = {QGVAR(stopStandLowered), "Gesture"};
|
||||
GVAR(coverStandLowered)[] = {QGVAR(coverStandLowered), "Gesture"};
|
||||
GVAR(regroupStandLowered)[] = {QGVAR(regroupStandLowered), "Gesture"};
|
||||
GVAR(engageStandLowered)[] = {QGVAR(engageStandLowered), "Gesture"};
|
||||
GVAR(pointStandLowered)[] = {QGVAR(pointStandLowered), "Gesture"};
|
||||
GVAR(holdStandLowered)[] = {QGVAR(holdStandLowered), "Gesture"};
|
||||
GVAR(warningStandLowered)[] = {QGVAR(warningStandLowered), "Gesture"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class CfgGesturesMale {
|
||||
class Default;
|
||||
|
||||
class BlendAnims {
|
||||
GVAR(LeftArm)[] = {
|
||||
"LeftShoulder", 1,
|
||||
"LeftArm", 1,
|
||||
"LeftArmRoll", 1,
|
||||
"LeftForeArm", 1,
|
||||
"LeftForeArmRoll", 1,
|
||||
"LeftHand", 1,
|
||||
"LeftHandIndex1", 1,
|
||||
"LeftHandIndex2", 1,
|
||||
"LeftHandIndex3", 1,
|
||||
"LeftHandMiddle1", 1,
|
||||
"LeftHandMiddle2", 1,
|
||||
"LeftHandMiddle3", 1,
|
||||
"LeftHandPinky1", 1,
|
||||
"LeftHandMiddle2", 1,
|
||||
"LeftHandMiddle3", 1,
|
||||
"LeftHandPinky1", 1,
|
||||
"LeftHandPinky2", 1,
|
||||
"LeftHandPinky3", 1,
|
||||
"LeftHandRing", 1,
|
||||
"LeftHandRing1", 1,
|
||||
"LeftHandRing2", 1,
|
||||
"LeftHandRing3", 1,
|
||||
"LeftHandThumb1", 1,
|
||||
"LeftHandThumb2", 1,
|
||||
"LeftHandThumb3", 1
|
||||
};
|
||||
};
|
||||
|
||||
class States {
|
||||
class GVAR(Base): Default {
|
||||
actions = "NoActions";
|
||||
canPullTrigger = 0;
|
||||
connectAs = "";
|
||||
connectFrom[] = {};
|
||||
connectTo[] = {};
|
||||
disableWeapons = 0;
|
||||
enableBinocular = 1;
|
||||
enableMissile = 1;
|
||||
enableOptics = 0;
|
||||
equivalentTo = "";
|
||||
file = "\A3\anims_f\Data\anim\Sdr\gst\GestureHi.rtm";
|
||||
forceAim = 0;
|
||||
headBobMode = 0;
|
||||
headBobStrength = 0;
|
||||
interpolateFrom[] = {};
|
||||
interpolateTo[] = {};
|
||||
interpolateWith[] = {};
|
||||
interpolationRestart = 0;
|
||||
interpolationSpeed = 6;
|
||||
looped = 0;
|
||||
mask = QGVAR(LeftArm);
|
||||
minPlayTime = 0.5;
|
||||
preload = 0;
|
||||
ragdoll = 0;
|
||||
relSpeedMax = 1;
|
||||
relSpeedMin = 1;
|
||||
showHandGun = 0;
|
||||
showItemInHand = 0;
|
||||
showItemInRightHand = 0;
|
||||
showWeaponAim = 1;
|
||||
soundEdge[] = {0.5,1};
|
||||
soundEnabled = 1;
|
||||
soundOverride = "";
|
||||
speed = -2;
|
||||
static = 0;
|
||||
terminal = 0;
|
||||
Walkcycles = 1;
|
||||
weaponIK = 1;
|
||||
|
||||
leftHandIKBeg = 1;
|
||||
leftHandIKCurve[] = {0, 1, 0.1, 0, 0.8, 0, 1, 1};
|
||||
leftHandIKEnd = 1;
|
||||
|
||||
rightHandIKBeg = 1;
|
||||
rightHandIKCurve[] = {1};
|
||||
rightHandIKEnd = 1;
|
||||
};
|
||||
|
||||
class GVAR(forward): GVAR(Base) {
|
||||
file = QUOTE(PATHTOF(anim\ace_forward.rtm));
|
||||
speed = 1;
|
||||
};
|
||||
|
||||
class GVAR(forwardStandLowered): GVAR(forward) {
|
||||
file = QUOTE(PATHTOF(anim\ace_forward_stand_lowered.rtm));
|
||||
};
|
||||
|
||||
class GVAR(stop): GVAR(forward) {
|
||||
file = QUOTE(PATHTOF(anim\ace_stop.rtm));
|
||||
speed = 0.6;
|
||||
};
|
||||
|
||||
class GVAR(stopStandLowered): GVAR(stop) {
|
||||
file = QUOTE(PATHTOF(anim\ace_stop_stand_lowered.rtm));
|
||||
};
|
||||
|
||||
class GVAR(cover): GVAR(forward) {
|
||||
file = QUOTE(PATHTOF(anim\ace_cover.rtm));
|
||||
speed = 0.8;
|
||||
};
|
||||
|
||||
class GVAR(coverStandLowered): GVAR(cover) {
|
||||
file = QUOTE(PATHTOF(anim\ace_cover_stand_lowered.rtm));
|
||||
};
|
||||
|
||||
class GVAR(regroup): GVAR(forward) {
|
||||
file = QUOTE(PATHTOF(anim\ace_regroup.rtm));
|
||||
speed = 0.8;
|
||||
};
|
||||
|
||||
class GVAR(regroupStandLowered): GVAR(regroup) {
|
||||
file = QUOTE(PATHTOF(anim\ace_regroup_stand_lowered.rtm));
|
||||
};
|
||||
|
||||
class GVAR(engage): GVAR(forward) {
|
||||
file = QUOTE(PATHTOF(anim\ace_engage.rtm));
|
||||
speed = 0.9;
|
||||
};
|
||||
|
||||
class GVAR(engageStandLowered): GVAR(engage) {
|
||||
file = QUOTE(PATHTOF(anim\ace_engage_stand_lowered.rtm));
|
||||
};
|
||||
|
||||
class GVAR(point): GVAR(forward) {
|
||||
file = QUOTE(PATHTOF(anim\ace_point.rtm));
|
||||
speed = 0.8;
|
||||
};
|
||||
|
||||
class GVAR(pointStandLowered): GVAR(point) {
|
||||
file = QUOTE(PATHTOF(anim\ace_point_stand_lowered.rtm));
|
||||
};
|
||||
|
||||
class GVAR(hold): GVAR(forward) {
|
||||
file = QUOTE(PATHTOF(anim\ace_hold.rtm));
|
||||
speed = 0.8;
|
||||
};
|
||||
|
||||
class GVAR(holdStandLowered): GVAR(hold) {
|
||||
file = QUOTE(PATHTOF(anim\ace_hold_stand_lowered.rtm));
|
||||
};
|
||||
|
||||
class GVAR(warning): GVAR(forward) {
|
||||
file = QUOTE(PATHTOF(anim\ace_warning.rtm));
|
||||
speed = 0.8;
|
||||
};
|
||||
|
||||
class GVAR(warningStandLowered): GVAR(warning) {
|
||||
file = QUOTE(PATHTOF(anim\ace_warning_stand_lowered.rtm));
|
||||
};
|
||||
};
|
||||
};
|
17
addons/gestures/config.cpp
Normal file
17
addons/gestures/config.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interact_menu"};
|
||||
author[] = {"joko // Jonas", "Emperias", "Zigomarvin"};
|
||||
authorUrl = "https://github.com/commy2/";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgMovesBasic.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
33
addons/gestures/functions/fnc_playSignal.sqf
Normal file
33
addons/gestures/functions/fnc_playSignal.sqf
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Author: joko // Jonas, Emperias, Zigomarvin
|
||||
* Detect if the player and play the Gesture Animation
|
||||
*
|
||||
* Arguments:
|
||||
* Animation <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* "GeniusAnimation" call ace_gestures_fnc_playSignal
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
TRACE_1("params",_this);
|
||||
|
||||
if (!GVAR(ReloadMutex)) exitWith {false};
|
||||
|
||||
private _gesture = if (_this select [0,2] == "BI") then {
|
||||
_this select [2]
|
||||
} else {
|
||||
if (((animationState ACE_player) select [0, 12]) in ["amovpercmstp", "amovpercmwlk", "amovpercmtac"] && weaponLowered ACE_player) then {
|
||||
format ["%1StandLowered", _this]
|
||||
} else {
|
||||
_this
|
||||
};
|
||||
};
|
||||
|
||||
ACE_player playAction _gesture;
|
||||
true
|
1
addons/gestures/functions/script_component.hpp
Normal file
1
addons/gestures/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\gestures\script_component.hpp"
|
38
addons/gestures/key.sqf
Normal file
38
addons/gestures/key.sqf
Normal file
@ -0,0 +1,38 @@
|
||||
#include "\a3\editor_f\Data\Scripts\dikCodes.h"
|
||||
|
||||
{
|
||||
_x params ["_currentName","_key"];
|
||||
|
||||
if (_currentName select [0,1] == "BI") then {
|
||||
_currentName = _currentName select [2];
|
||||
};
|
||||
|
||||
private _code = (compile format [QUOTE(QUOTE(QGVAR(%1)) call FUNC(playSignal);), _currentName]);
|
||||
|
||||
[
|
||||
"ACE3 Gestures",
|
||||
_currentName,
|
||||
localize format[LSTRING(%1), _currentName],
|
||||
_code,
|
||||
{false},
|
||||
[_key, [false, (_key != -1), false]],
|
||||
false
|
||||
] call CBA_fnc_addKeybind;
|
||||
|
||||
false
|
||||
} count [
|
||||
["stop", DIK_NUMPAD2],
|
||||
["cover", DIK_NUMPAD3],
|
||||
["forward", DIK_NUMPAD4],
|
||||
["regroup", DIK_NUMPAD5],
|
||||
["engage", DIK_NUMPAD6],
|
||||
["point", DIK_NUMPAD7],
|
||||
["hold", DIK_NUMPAD8],
|
||||
["warning", DIK_NUMPAD9],
|
||||
["BIgestureGo", -1],
|
||||
["BIgestureAdvance", -1],
|
||||
["BIgestureFollow", -1],
|
||||
["BIgestureUp", -1],
|
||||
["BIgestureFreeze", -1],
|
||||
["BIgestureCeaseFire", -1]
|
||||
];
|
12
addons/gestures/script_component.hpp
Normal file
12
addons/gestures/script_component.hpp
Normal file
@ -0,0 +1,12 @@
|
||||
#define COMPONENT Gestures
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
#ifdef DEBUG_ENABLED_GESTURES
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_SETTINGS_GESTURES
|
||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_GESTURES
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
198
addons/gestures/stringtable.xml
Normal file
198
addons/gestures/stringtable.xml
Normal file
@ -0,0 +1,198 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Gestures">
|
||||
<Key ID="STR_ACE_Gestures_Name">
|
||||
<English>ACE Gestures</English>
|
||||
<German>ACE Gesten</German>
|
||||
<Polish>ACE Gesty</Polish>
|
||||
<Czech>ACE Posunky</Czech>
|
||||
<French>ACE Signaux</French>
|
||||
<Hungarian>ACE Kézjelek</Hungarian>
|
||||
<Italian>ACE Gesti</Italian>
|
||||
<Portuguese>ACE Gestos</Portuguese>
|
||||
<Russian>ACE Жесты</Russian>
|
||||
<Spanish>ACE Gestos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_Gestures">
|
||||
<English>Gestures</English>
|
||||
<German>Gesten</German>
|
||||
<Spanish>Gestos</Spanish>
|
||||
<Polish>Gesty</Polish>
|
||||
<Czech>Posunky</Czech>
|
||||
<French>Signaux</French>
|
||||
<Russian>Жесты</Russian>
|
||||
<Hungarian>Kézjelek</Hungarian>
|
||||
<Portuguese>Gestos</Portuguese>
|
||||
<Italian>Gesti</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_BIgestureAdvance">
|
||||
<English>Advance</English>
|
||||
<German>Vordringen</German>
|
||||
<Spanish>Avanzar</Spanish>
|
||||
<Polish>Naprzód</Polish>
|
||||
<Czech>Postoupit</Czech>
|
||||
<French>Avancer</French>
|
||||
<Russian>Продвигаться</Russian>
|
||||
<Hungarian>Előre</Hungarian>
|
||||
<Portuguese>Avançar</Portuguese>
|
||||
<Italian>Avanzare</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_BIgestureGo">
|
||||
<English>Go</English>
|
||||
<German>Los</German>
|
||||
<Spanish>Adelante</Spanish>
|
||||
<Polish>Szybko</Polish>
|
||||
<Czech>Jít</Czech>
|
||||
<French>Aller</French>
|
||||
<Russian>Идти</Russian>
|
||||
<Hungarian>Mozgás</Hungarian>
|
||||
<Portuguese>Mover-se</Portuguese>
|
||||
<Italian>Muoversi</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_BIgestureFollow">
|
||||
<English>Follow</English>
|
||||
<German>Folgen</German>
|
||||
<Spanish>Seguirme</Spanish>
|
||||
<Polish>Za mną</Polish>
|
||||
<Czech>Následovat</Czech>
|
||||
<French>Suivre</French>
|
||||
<Russian>Следовать</Russian>
|
||||
<Hungarian>Utánam</Hungarian>
|
||||
<Portuguese>Seguir</Portuguese>
|
||||
<Italian>Seguire</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_BIgestureUp">
|
||||
<English>Up</English>
|
||||
<German>Aufstehen</German>
|
||||
<Spanish>Arriba</Spanish>
|
||||
<Polish>Do góry</Polish>
|
||||
<Czech>Vztyk</Czech>
|
||||
<French>Debout</French>
|
||||
<Russian>Вверх</Russian>
|
||||
<Hungarian>Fel</Hungarian>
|
||||
<Portuguese>Acima</Portuguese>
|
||||
<Italian>Alzarsi</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_BIgestureCeaseFire">
|
||||
<English>Cease Fire</English>
|
||||
<German>Feuer einstellen</German>
|
||||
<Spanish>Alto el fuego</Spanish>
|
||||
<Polish>Wstrzymać ogień</Polish>
|
||||
<Czech>Zastavit palbu</Czech>
|
||||
<French>Halte au feu</French>
|
||||
<Russian>Прекратить огонь</Russian>
|
||||
<Hungarian>Tüzet szüntess</Hungarian>
|
||||
<Portuguese>Cessar Fogo</Portuguese>
|
||||
<Italian>Cessare il Fuoco</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_BIGesturesPoint">
|
||||
<English>Point</English>
|
||||
<German>Zeigen</German>
|
||||
<Spanish>Señalar</Spanish>
|
||||
<Polish>Wskazać</Polish>
|
||||
<Czech>Ukázat</Czech>
|
||||
<French>Pointer</French>
|
||||
<Russian>Точка</Russian>
|
||||
<Hungarian>Mutat</Hungarian>
|
||||
<Portuguese>Apontar</Portuguese>
|
||||
<Italian>Puntare a</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_BIgestureFreeze">
|
||||
<English>Freeze</English>
|
||||
<German>Keine Bewegung</German>
|
||||
<Spanish>Alto</Spanish>
|
||||
<Polish>Stać</Polish>
|
||||
<Czech>Stát</Czech>
|
||||
<French>Halte</French>
|
||||
<Russian>Замереть</Russian>
|
||||
<Hungarian>Állj</Hungarian>
|
||||
<Portuguese>Alto</Portuguese>
|
||||
<Italian>Fermi</Italian>
|
||||
</Key>
|
||||
<!-- STOP -->
|
||||
<Key ID="STR_ACE_Gestures_stop">
|
||||
<English>Stop</English>
|
||||
<French>Stop</French>
|
||||
<German>Stop</German>
|
||||
<Polish>Stop</Polish>
|
||||
</Key>
|
||||
<!-- COVER -->
|
||||
<Key ID="STR_ACE_Gestures_cover">
|
||||
<English>Cover</English>
|
||||
<German>Deckung</German>
|
||||
<Spanish>Cubrirse</Spanish>
|
||||
<Polish>Do osłony</Polish>
|
||||
<Czech>Krýt se</Czech>
|
||||
<French>A couvert</French>
|
||||
<Russian>Укрыться</Russian>
|
||||
<Hungarian>Fedezékbe</Hungarian>
|
||||
<Portuguese>Proteger-se</Portuguese>
|
||||
<Italian>Copertura</Italian>
|
||||
</Key>
|
||||
<!-- REGROUP -->
|
||||
<Key ID="STR_ACE_Gestures_regroup">
|
||||
<English>Rally up</English>
|
||||
<French>Regroupement</French>
|
||||
<German>Sammeln</German>
|
||||
<Polish>Zbiórka</Polish>
|
||||
</Key>
|
||||
<!-- FORWARD -->
|
||||
<Key ID="STR_ACE_Gestures_forward">
|
||||
<English>Move forward</English>
|
||||
<French>En avant</French>
|
||||
<German>Vorwärts Bewegen</German>
|
||||
<Polish>Naprzód</Polish>
|
||||
</Key>
|
||||
<!-- ENGAGE -->
|
||||
<Key ID="STR_ACE_Gestures_engage">
|
||||
<English>Engage</English>
|
||||
<French>Engager</French>
|
||||
<Polish>Atak</Polish>
|
||||
</Key>
|
||||
<!-- POINT -->
|
||||
<Key ID="STR_ACE_Gestures_point">
|
||||
<English>Point</English>
|
||||
<French>Pointer</French>
|
||||
<German>Zeigen</German>
|
||||
<Polish>Wskaż</Polish>
|
||||
</Key>
|
||||
<!-- HOLD -->
|
||||
<Key ID="STR_ACE_Gestures_hold">
|
||||
<English>Hold</English>
|
||||
<French>Tenir</French>
|
||||
<German>Anhalten</German>
|
||||
<Polish>Wstrzymać</Polish>
|
||||
</Key>
|
||||
<!-- WARNING -->
|
||||
<Key ID="STR_ACE_Gestures_warning">
|
||||
<English>Warning</English>
|
||||
<French>Attention</French>
|
||||
<German>Achtung</German>
|
||||
<Polish>Uwaga</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_Hi">
|
||||
<English>Hi</English>
|
||||
<German>Hallo</German>
|
||||
<Spanish>Hola</Spanish>
|
||||
<Polish>Witaj</Polish>
|
||||
<Czech>Ahoj</Czech>
|
||||
<French>Salut</French>
|
||||
<Russian>Привет</Russian>
|
||||
<Hungarian>Helló</Hungarian>
|
||||
<Portuguese>Olá</Portuguese>
|
||||
<Italian>Ciao</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gestures_Attack">
|
||||
<English>Attack</English>
|
||||
<German>Angreifen</German>
|
||||
<Spanish>Atacar</Spanish>
|
||||
<Polish>Do ataku</Polish>
|
||||
<Czech>Zaútočit</Czech>
|
||||
<French>Attaquer</French>
|
||||
<Russian>Атаковать</Russian>
|
||||
<Hungarian>Támadás</Hungarian>
|
||||
<Portuguese>Atacar</Portuguese>
|
||||
<Italian>Attaccare</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -297,112 +297,6 @@ class CfgVehicles {
|
||||
hotkey = "M";
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_Gestures {
|
||||
displayName = CSTRING(Gestures);
|
||||
condition = "canStand _target";
|
||||
statement = "";
|
||||
showDisabled = 1;
|
||||
priority = 3.5;
|
||||
icon = PATHTOF(UI\gestures_ca.paa);
|
||||
hotkey = "G";
|
||||
|
||||
/*class ACE_Gesture_Advance {
|
||||
displayName = CSTRING(Gestures_Attack);
|
||||
condition = "canStand _target";
|
||||
statement = "_target playActionNow 'gestureAttack';";
|
||||
showDisabled = 1;
|
||||
priority = 2.0;
|
||||
};*/
|
||||
class ACE_Gesture_Advance {
|
||||
displayName = CSTRING(Gestures_Advance);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureAdvance';);
|
||||
showDisabled = 1;
|
||||
priority = 1.9;
|
||||
hotkey = "1";
|
||||
};
|
||||
class ACE_Gesture_Go {
|
||||
displayName = CSTRING(Gestures_Go);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2););
|
||||
showDisabled = 1;
|
||||
priority = 1.8;
|
||||
hotkey = "2";
|
||||
};
|
||||
class ACE_Gesture_Follow {
|
||||
displayName = CSTRING(Gestures_Follow);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureFollow';);
|
||||
showDisabled = 1;
|
||||
priority = 1.7;
|
||||
hotkey = "3";
|
||||
};
|
||||
/*class ACE_Gesture_Point {
|
||||
displayName = CSTRING(Gestures_Point);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gesturePoint';);
|
||||
showDisabled = 1;
|
||||
priority = 1.6;
|
||||
};*/
|
||||
class ACE_Gesture_Up {
|
||||
displayName = CSTRING(Gestures_Up);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureUp';);
|
||||
showDisabled = 1;
|
||||
priority = 1.5;
|
||||
hotkey = "4";
|
||||
};
|
||||
class ACE_Gesture_Cover {
|
||||
displayName = CSTRING(Gestures_Cover);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureCover';);
|
||||
showDisabled = 1;
|
||||
priority = 1.4;
|
||||
hotkey = "5";
|
||||
};
|
||||
class ACE_Gesture_CeaseFire {
|
||||
displayName = CSTRING(Gestures_Cease_Fire);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureCeaseFire';);
|
||||
showDisabled = 1;
|
||||
priority = 1.3;
|
||||
hotkey = "6";
|
||||
};
|
||||
class ACE_Gesture_Freeze {
|
||||
displayName = CSTRING(Gestures_Freeze);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureFreeze';);
|
||||
showDisabled = 1;
|
||||
priority = 1.2;
|
||||
hotkey = "7";
|
||||
};
|
||||
class ACE_Gesture_Yes {
|
||||
displayName = ECSTRING(common,Yes);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2););
|
||||
showDisabled = 1;
|
||||
priority = 1.1;
|
||||
hotkey = "8";
|
||||
};
|
||||
class ACE_Gesture_No {
|
||||
displayName = ECSTRING(common,No);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureNo';);
|
||||
showDisabled = 1;
|
||||
priority = 1.0;
|
||||
hotkey = "9";
|
||||
};
|
||||
class ACE_Gesture_Hi {
|
||||
displayName = CSTRING(Gestures_Hi);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3););
|
||||
showDisabled = 1;
|
||||
priority = 0.9;
|
||||
hotkey = "0";
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_Equipment {
|
||||
displayName = CSTRING(Equipment);
|
||||
condition = QUOTE(true);
|
||||
|
@ -253,138 +253,6 @@
|
||||
<Portuguese><< Voltar</Portuguese>
|
||||
<Italian><< Indietro</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures">
|
||||
<English>Gestures</English>
|
||||
<German>Gesten</German>
|
||||
<Spanish>Gestos</Spanish>
|
||||
<Polish>Gesty</Polish>
|
||||
<Czech>Posunky</Czech>
|
||||
<French>Signaux</French>
|
||||
<Russian>Жесты</Russian>
|
||||
<Hungarian>Kézjelek</Hungarian>
|
||||
<Portuguese>Gestos</Portuguese>
|
||||
<Italian>Gesti</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Attack">
|
||||
<English>Attack</English>
|
||||
<German>Angreifen</German>
|
||||
<Spanish>Atacar</Spanish>
|
||||
<Polish>Do ataku</Polish>
|
||||
<Czech>Zaútočit</Czech>
|
||||
<French>Attaquer</French>
|
||||
<Russian>Атаковать</Russian>
|
||||
<Hungarian>Támadás</Hungarian>
|
||||
<Portuguese>Atacar</Portuguese>
|
||||
<Italian>Attaccare</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Advance">
|
||||
<English>Advance</English>
|
||||
<German>Vordringen</German>
|
||||
<Spanish>Avanzar</Spanish>
|
||||
<Polish>Naprzód</Polish>
|
||||
<Czech>Postoupit</Czech>
|
||||
<French>Avancer</French>
|
||||
<Russian>Продвигаться</Russian>
|
||||
<Hungarian>Előre</Hungarian>
|
||||
<Portuguese>Avançar</Portuguese>
|
||||
<Italian>Avanzare</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Go">
|
||||
<English>Go</English>
|
||||
<German>Los</German>
|
||||
<Spanish>Adelante</Spanish>
|
||||
<Polish>Szybko</Polish>
|
||||
<Czech>Jít</Czech>
|
||||
<French>Aller</French>
|
||||
<Russian>Идти</Russian>
|
||||
<Hungarian>Mozgás</Hungarian>
|
||||
<Portuguese>Mover-se</Portuguese>
|
||||
<Italian>Muoversi</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Follow">
|
||||
<English>Follow</English>
|
||||
<German>Folgen</German>
|
||||
<Spanish>Seguirme</Spanish>
|
||||
<Polish>Za mną</Polish>
|
||||
<Czech>Následovat</Czech>
|
||||
<French>Suivre</French>
|
||||
<Russian>Следовать</Russian>
|
||||
<Hungarian>Utánam</Hungarian>
|
||||
<Portuguese>Seguir</Portuguese>
|
||||
<Italian>Seguire</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Point">
|
||||
<English>Point</English>
|
||||
<German>Zeigen</German>
|
||||
<Spanish>Señalar</Spanish>
|
||||
<Polish>Wskazać</Polish>
|
||||
<Czech>Ukázat</Czech>
|
||||
<French>Pointer</French>
|
||||
<Russian>Точка</Russian>
|
||||
<Hungarian>Mutat</Hungarian>
|
||||
<Portuguese>Apontar</Portuguese>
|
||||
<Italian>Puntare a</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Up">
|
||||
<English>Up</English>
|
||||
<German>Aufstehen</German>
|
||||
<Spanish>Arriba</Spanish>
|
||||
<Polish>Do góry</Polish>
|
||||
<Czech>Vztyk</Czech>
|
||||
<French>Debout</French>
|
||||
<Russian>Вверх</Russian>
|
||||
<Hungarian>Fel</Hungarian>
|
||||
<Portuguese>Acima</Portuguese>
|
||||
<Italian>Alzarsi</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Cover">
|
||||
<English>Cover</English>
|
||||
<German>Deckung</German>
|
||||
<Spanish>Cubrirse</Spanish>
|
||||
<Polish>Do osłony</Polish>
|
||||
<Czech>Krýt se</Czech>
|
||||
<French>A couvert</French>
|
||||
<Russian>Укрыться</Russian>
|
||||
<Hungarian>Fedezékbe</Hungarian>
|
||||
<Portuguese>Proteger-se</Portuguese>
|
||||
<Italian>Copertura</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Cease_Fire">
|
||||
<English>Cease Fire</English>
|
||||
<German>Feuer einstellen</German>
|
||||
<Spanish>Alto el fuego</Spanish>
|
||||
<Polish>Wstrzymać ogień</Polish>
|
||||
<Czech>Zastavit palbu</Czech>
|
||||
<French>Halte au feu</French>
|
||||
<Russian>Прекратить огонь</Russian>
|
||||
<Hungarian>Tüzet szüntess</Hungarian>
|
||||
<Portuguese>Cessar Fogo</Portuguese>
|
||||
<Italian>Cessare il Fuoco</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Freeze">
|
||||
<English>Freeze</English>
|
||||
<German>Keine Bewegung</German>
|
||||
<Spanish>Alto</Spanish>
|
||||
<Polish>Stać</Polish>
|
||||
<Czech>Stát</Czech>
|
||||
<French>Halte</French>
|
||||
<Russian>Замереть</Russian>
|
||||
<Hungarian>Állj</Hungarian>
|
||||
<Portuguese>Alto</Portuguese>
|
||||
<Italian>Fermi</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Hi">
|
||||
<English>Hi</English>
|
||||
<German>Hallo</German>
|
||||
<Spanish>Hola</Spanish>
|
||||
<Polish>Witaj</Polish>
|
||||
<Czech>Ahoj</Czech>
|
||||
<French>Salut</French>
|
||||
<Russian>Привет</Russian>
|
||||
<Hungarian>Helló</Hungarian>
|
||||
<Portuguese>Olá</Portuguese>
|
||||
<Italian>Ciao</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_WeaponOnBack">
|
||||
<English>Put weapon on back</English>
|
||||
<German>Waffe wegstecken</German>
|
||||
|
Loading…
Reference in New Issue
Block a user