mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
CSE Nametags module
Initial version of the name tags module port from CSE to ACE structure.
This commit is contained in:
parent
b46f7a349e
commit
1a200e11b8
11
TO_MERGE/cse/nametags/CfgEventHandlers.hpp
Normal file
11
TO_MERGE/cse/nametags/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
class Extended_PreInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_preInit.sqf) );
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_PostInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_postInit.sqf) );
|
||||||
|
};
|
||||||
|
};
|
64
TO_MERGE/cse/nametags/CfgVehicles.hpp
Normal file
64
TO_MERGE/cse/nametags/CfgVehicles.hpp
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
// TODO Check what faction classes are available within ACE and move this to a core pbo
|
||||||
|
class CfgFactionClasses
|
||||||
|
{
|
||||||
|
class NO_CATEGORY;
|
||||||
|
class ACEMisc: NO_CATEGORY {
|
||||||
|
displayName = "ACE Misc Modules";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class CfgVehicles
|
||||||
|
{
|
||||||
|
class Logic;
|
||||||
|
class Module_F: Logic {
|
||||||
|
class ArgumentsBaseUnits {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class GVAR(Module): Module_F {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_ACE_NameTags_Title;
|
||||||
|
icon = QUOTE(PATHOF(data\module_icon.paa));
|
||||||
|
category = "ACEMisc";
|
||||||
|
function = QUOTE(FUNC(initalizeModule));
|
||||||
|
functionPriority = 1;
|
||||||
|
isGlobal = 1;
|
||||||
|
isTriggerActivated = 0;
|
||||||
|
class Arguments {
|
||||||
|
class enableModule {
|
||||||
|
displayName = $STR_ACE_NameTags_Arg_enable;
|
||||||
|
description = $STR_ACE_NameTags_Arg_enable_Desc;
|
||||||
|
typeName = "BOOL";
|
||||||
|
defaultValue = 0;
|
||||||
|
};
|
||||||
|
class indirectDistance {
|
||||||
|
displayName = $STR_ACE_NameTags_Arg_indirectDistance;
|
||||||
|
description = $STR_ACE_NameTags_Arg_indirectDistance_Desc;
|
||||||
|
typeName = "NUMBER";
|
||||||
|
defaultValue = 7.5;
|
||||||
|
};
|
||||||
|
class cursorTargetDistance {
|
||||||
|
displayName = $STR_ACE_NameTags_Arg_directDistance;
|
||||||
|
description = $STR_ACE_NameTags_Arg_directDistance_Desc;
|
||||||
|
typeName = "NUMBER";
|
||||||
|
defaultValue = 20;
|
||||||
|
};
|
||||||
|
class allowDifferentSides {
|
||||||
|
displayName = $STR_ACE_NameTags_Arg_differentSides;
|
||||||
|
description = $STR_ACE_NameTags_Arg_differentSides_Desc;
|
||||||
|
typeName = "BOOL";
|
||||||
|
defaultValue = 0;
|
||||||
|
};
|
||||||
|
class enableSoundWaves {
|
||||||
|
displayName = $STR_ACE_NameTags_Arg_soundWaves;
|
||||||
|
description = $STR_ACE_NameTags_Arg_soundWaves_Desc;
|
||||||
|
typeName = "BOOL";
|
||||||
|
defaultValue = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class ModuleDescription {
|
||||||
|
description = $STR_ACE_NameTags_ModuleDesc;
|
||||||
|
sync[] = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
66
TO_MERGE/cse/nametags/XEH_postInit.sqf
Normal file
66
TO_MERGE/cse/nametags/XEH_postInit.sqf
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/**
|
||||||
|
* XEH_postInit.sqf
|
||||||
|
* @Descr: N/A
|
||||||
|
* @Author: Glowbal
|
||||||
|
*
|
||||||
|
* @Arguments: []
|
||||||
|
* @Return:
|
||||||
|
* @PublicAPI: false
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!hasInterface) exitwith {}; // No need for this module on HC or dedicated server.
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
// Settings
|
||||||
|
if (isNil QUOTE(ACE_NameTagsModule)) then {
|
||||||
|
GVAR(INDIRECT_TAGS_DISTANCE) = 7.5;
|
||||||
|
GVAR(DIRECT_TAG_DISTANCE) = 20;
|
||||||
|
GVAR(ENABLE_SOUNDWAVES) = false;
|
||||||
|
GVAR(ALLOW_OWN_SIDE_ONLY) = true;
|
||||||
|
GVAR(ENABLE_MODULE) = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// In case the module has been placed and the enable setting has been put to false
|
||||||
|
if (!GVAR(ENABLE_MODULE)) exitwith {};
|
||||||
|
|
||||||
|
// Client side options
|
||||||
|
// TODO Implement a framework for adjusting client side settings.
|
||||||
|
GVAR(DRAW_TAG_ICONS) = true;
|
||||||
|
GVAR(ENABLE_INDIRECT) = false;
|
||||||
|
GVAR(TAG_DISPLAY_COLOR) = [1,1,1,1];
|
||||||
|
GVAR(SHOW_SOUNDWAVES) = false;
|
||||||
|
GVAR(DISPLAY_RANK) = false;
|
||||||
|
|
||||||
|
// If the distance values are set incorrectly, ensure we handle this
|
||||||
|
if (GVAR(DIRECT_TAG_DISTANCE) < GVAR(INDIRECT_TAGS_DISTANCE)) then {
|
||||||
|
GVAR(DIRECT_TAG_DISTANCE) = GVAR(INDIRECT_TAGS_DISTANCE);
|
||||||
|
};
|
||||||
|
|
||||||
|
// If both are below 1m, exit because they will not show up.
|
||||||
|
if (GVAR(DIRECT_TAG_DISTANCE) < 1) exitwith {};
|
||||||
|
|
||||||
|
// Draw the icons for each nametag
|
||||||
|
// TODO Look into replacement with cutRsc instead of icon3d
|
||||||
|
addMissionEventHandler ["Draw3D", FUNC(drawNameTags)];
|
||||||
|
|
||||||
|
if (GVAR(ENABLE_SOUNDWAVES)) then {
|
||||||
|
|
||||||
|
GVAR(SOUNDWAVE_ICONS) = [QUOTE(PATHTOF(data\soundwaves\soundwave1.paa)),QUOTE(PATHTOF(data\soundwaves\soundwave2.paa)), QUOTE(PATHTOF(data\soundwaves\soundwave3.paa)), QUOTE(PATHTOF(data\soundwaves\soundwave4.paa)), QUOTE(PATHTOF(data\soundwaves\soundwave5.paa)), QUOTE(PATHTOF(data\soundwaves\soundwave6.paa)), QUOTE(PATHTOF(data\soundwaves\soundwave7.paa)), QUOTE(PATHTOF(data\soundwaves\soundwave8.paa)), QUOTE(PATHTOF(data\soundwaves\soundwave9.paa)), QUOTE(PATHTOF(data\soundwaves\soundwave_silent.paa))];
|
||||||
|
|
||||||
|
// TODO Implement function for checking if an addon is loaded
|
||||||
|
//if (["task_force_radio"] call ace_fnc_isModLoaded_F) then {
|
||||||
|
if (isnil "TFAR_fnc_isSpeaking") then {
|
||||||
|
TFAR_fnc_isSpeaking = { if (!isnil "TF_tangent_lr_pressed") then {(TF_tangent_lr_pressed || TF_tangent_sw_pressed || TF_tangent_dd_pressed)} else { false }; };
|
||||||
|
};
|
||||||
|
//};
|
||||||
|
|
||||||
|
// TODO Move to unscheduled environment with PFH
|
||||||
|
[] spawn {
|
||||||
|
waituntil{
|
||||||
|
waituntil {alive player};
|
||||||
|
/*ACE_player*/ player call FUNC(handleSpeaking);
|
||||||
|
!GVAR(ENABLE_SOUNDWAVES); // exit when the soundwaves have been disabled
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
17
TO_MERGE/cse/nametags/XEH_preInit.sqf
Normal file
17
TO_MERGE/cse/nametags/XEH_preInit.sqf
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* XEH_preInit.sqf
|
||||||
|
* @Descr: N/A
|
||||||
|
* @Author: Glowbal
|
||||||
|
*
|
||||||
|
* @Arguments: []
|
||||||
|
* @Return:
|
||||||
|
* @PublicAPI: false
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
PREP(drawNameTags);
|
||||||
|
PREP(findNearbyUnits);
|
||||||
|
PREP(handleSpeaking);
|
||||||
|
PREP(allowSide);
|
||||||
|
PREP(initalizeModule);
|
24
TO_MERGE/cse/nametags/config.cpp
Normal file
24
TO_MERGE/cse/nametags/config.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {"ACE_gui","ACE_main"};
|
||||||
|
version = VERSION;
|
||||||
|
author[] = {$STR_ACE_Core_ACETeam};
|
||||||
|
authorUrl = "http://ACEmod.com"; // TODO website link?
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class CfgAddons {
|
||||||
|
class PreloadAddons {
|
||||||
|
class ADDON {
|
||||||
|
list[] = {QUOTE(ADDON)};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "CfgVehicles.hpp"
|
||||||
|
#include "CfgEventHandlers.hpp"
|
BIN
TO_MERGE/cse/nametags/data/empty.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/empty.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/module_icon.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/module_icon.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave1.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave1.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave2.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave2.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave3.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave3.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave4.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave4.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave5.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave5.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave6.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave6.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave7.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave7.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave8.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave8.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave9.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave9.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave_silent.paa
Normal file
BIN
TO_MERGE/cse/nametags/data/soundwaves/soundwave_silent.paa
Normal file
Binary file not shown.
15
TO_MERGE/cse/nametags/functions/fnc_allowSide.sqf
Normal file
15
TO_MERGE/cse/nametags/functions/fnc_allowSide.sqf
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* fn_allowSide_TAGS.sqf
|
||||||
|
* @Descr: N/A
|
||||||
|
* @Author: Glowbal
|
||||||
|
*
|
||||||
|
* @Arguments: side
|
||||||
|
* @Return:
|
||||||
|
* @PublicAPI: false
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (GVAR(ALLOW_OWN_SIDE_ONLY)) exitwith {
|
||||||
|
_this == playerSide; /* side ACE_player */
|
||||||
|
};
|
||||||
|
((_this getFriend playerSide /* side ACE_player */ ) >= 0.6);
|
71
TO_MERGE/cse/nametags/functions/fnc_drawNameTags.sqf
Normal file
71
TO_MERGE/cse/nametags/functions/fnc_drawNameTags.sqf
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/**
|
||||||
|
* fn_drawNameTags_TAGS.sqf
|
||||||
|
* @Descr: N/A
|
||||||
|
* @Author: Glowbal
|
||||||
|
*
|
||||||
|
* @Arguments: []
|
||||||
|
* @Return:
|
||||||
|
* @PublicAPI: false
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
#define FONT "EtelkaMonospacePro"
|
||||||
|
|
||||||
|
private ["_cursor","_soundWaves", "_nameOfUnit","_pos","_color", "_nearbyUnits", "_iconOptions", "_iconSets", "_unit", "_colorOfIcon", "_nearObj"];
|
||||||
|
if (visibleMap || !GVAR(DRAW_TAG_ICONS)) exitwith {};
|
||||||
|
|
||||||
|
_nearObj = if (isNull curatorCamera) then {/* ACE_player */ if (isNull (missionnamespace getvariable ["bis_fnc_moduleRemoteControl_unit",objnull])) then { player} else {(missionnamespace getvariable ["bis_fnc_moduleRemoteControl_unit",objnull]) }; } else { curatorCamera };
|
||||||
|
|
||||||
|
if (GVAR(ENABLE_INDIRECT)) then {
|
||||||
|
{
|
||||||
|
_nameOfUnit = _x select 0;
|
||||||
|
_pos = _x select 1;
|
||||||
|
_color = _x select 2;
|
||||||
|
_unit = _x select 3;
|
||||||
|
_iconDrawn = QUOTE(PATHTOF(data\empty.paa));
|
||||||
|
if (_unit getvariable [QGVAR(isSpeaking),false] && GVAR(SHOW_SOUNDWAVES)) then {
|
||||||
|
_iconDrawn = (GVAR(SOUNDWAVE_ICONS) select ((round(random (count GVAR(SOUNDWAVE_ICONS) - 1)))));
|
||||||
|
};
|
||||||
|
drawIcon3D [_iconDrawn,_color, _pos, 2, 2, 1 ,toUpper _nameOfUnit, 1, 0.03, FONT];
|
||||||
|
false;
|
||||||
|
}count (_nearObj call FUNC(findNearbyUnits));
|
||||||
|
};
|
||||||
|
|
||||||
|
_cursor = cursortarget;
|
||||||
|
if (_cursor == _cursor && isTouchingGround _cursor) then {
|
||||||
|
if (_cursor isKindOf "CAManBase" && ((_cursor distance _nearObj) < GVAR(DIRECT_TAG_DISTANCE)) && ((side _cursor) call FUNC(allowSide))) then {
|
||||||
|
|
||||||
|
// TODO Improve this switch statement
|
||||||
|
_pos = visiblePositionASL _cursor;
|
||||||
|
switch (stance _cursor) do {
|
||||||
|
case "STAND": {
|
||||||
|
_pos set [2, ((_cursor modelToWorld [0,0,0]) select 2)+2];
|
||||||
|
};
|
||||||
|
case "CROUCH": {
|
||||||
|
_pos set [2, ((_cursor modelToWorld [0,0,0]) select 2)+1.5];
|
||||||
|
};
|
||||||
|
case "PRONE": {
|
||||||
|
_pos set [2, ((_cursor modelToWorld [0,0,0]) select 2)+0.5];
|
||||||
|
};
|
||||||
|
default {
|
||||||
|
_pos set [2, ((_cursor modelToWorld [0,0,0]) select 2) + 1.5];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
_color = +GVAR(TAG_DISPLAY_COLOR);
|
||||||
|
|
||||||
|
_nameOfUnit = name _cursor; //[_cursor] call FUNC(getName); // TODO Implement a getName function
|
||||||
|
// TODO implement module checking
|
||||||
|
/*if (ACE_NameTags_SYS_MEDICAL_SYSTEM_ENABLED_TAGS) then {
|
||||||
|
_status = [_cursor] call FUNC(getTriageStatus_CMS);
|
||||||
|
if ((_status select 1) >0) then {
|
||||||
|
_nameOfUnit = _nameOfUnit + " ["+ (_status select 0) + "]";
|
||||||
|
_color = _status select 2;
|
||||||
|
};
|
||||||
|
};*/
|
||||||
|
_iconDrawn = QUOTE(PATHTOF(data\empty.paa));
|
||||||
|
if (_unit getvariable [QGVAR(isSpeaking),false] && GVAR(SHOW_SOUNDWAVES)) then {
|
||||||
|
_iconDrawn = (GVAR(SOUNDWAVE_ICONS) select ((round(random (count GVAR(SOUNDWAVE_ICONS) - 1)))));
|
||||||
|
};
|
||||||
|
drawIcon3D [_iconDrawn,_color, _pos, 2, 2, 1 ,toUpper _nameOfUnit, 1, 0.03, FONT];
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
65
TO_MERGE/cse/nametags/functions/fnc_findNearbyUnits.sqf
Normal file
65
TO_MERGE/cse/nametags/functions/fnc_findNearbyUnits.sqf
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
/**
|
||||||
|
* fn_findNearbyUnits_TAGS.sqf
|
||||||
|
* @Descr: N/A
|
||||||
|
* @Author: Glowbal
|
||||||
|
*
|
||||||
|
* @Arguments: []
|
||||||
|
* @Return:
|
||||||
|
* @PublicAPI: false
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_info", "_nameOfUnit", "_color", "_isTalking", "_pos", "_nearest"];
|
||||||
|
_info = [];
|
||||||
|
if (alive player) then {
|
||||||
|
_nearest = (_this nearEntities [["CAManBase"], GVAR(INDIRECT_TAGS_DISTANCE)]);
|
||||||
|
{
|
||||||
|
if (_x != _this && (vehicle _x == _x) && isTouchingGround _X) then {
|
||||||
|
if (lineIntersects [eyePos _this, eyePos _x, _x, _this]) exitwith{};
|
||||||
|
if ((side _x) call FUNC(allowSide) && !(_x == cursortarget)) then {
|
||||||
|
_nameOfUnit = name _x;
|
||||||
|
if (_x getvariable ["ACE_isDead",false]) then { // TODO, how do we check for dead units?
|
||||||
|
_nameOfUnit = _unit getvariable ["ACE_name","Unknown"]; // TODO is there are function to get the name of a unit?
|
||||||
|
};
|
||||||
|
_pos = visiblePositionASL _x;
|
||||||
|
|
||||||
|
// TODO This can be done better
|
||||||
|
switch (stance _x) do {
|
||||||
|
case "STAND": {
|
||||||
|
_pos set [2, ((_x modelToWorld [0,0,0]) select 2)+2];
|
||||||
|
};
|
||||||
|
case "CROUCH": {
|
||||||
|
_pos set [2, ((_x modelToWorld [0,0,0]) select 2)+1.5];
|
||||||
|
};
|
||||||
|
case "PRONE": {
|
||||||
|
_pos set [2, ((_x modelToWorld [0,0,0]) select 2) + 0.5];
|
||||||
|
};
|
||||||
|
default {
|
||||||
|
_pos set [2, ((_x modelToWorld [0,0,0]) select 2) + 1.5];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
_color = +GVAR(TAG_DISPLAY_COLOR);
|
||||||
|
_color set [3, 0];
|
||||||
|
_isTalking = (_x getvariable [QGVAR(isSpeaking),false]);
|
||||||
|
|
||||||
|
// TODO implement module checking
|
||||||
|
/*if (ACE_NameTags_SYS_MEDICAL_SYSTEM_ENABLED_TAGS) then {
|
||||||
|
_status = [_x] call FUNC(getTriageStatus_CMS;
|
||||||
|
if ((_status select 1) >0) then {
|
||||||
|
_nameOfUnit = _nameOfUnit + " ["+ (_status select 0) + "]";
|
||||||
|
_color = _status select 2;
|
||||||
|
};
|
||||||
|
};*/
|
||||||
|
if (GVAR(DISPLAY_RANK)) then {
|
||||||
|
_nameOfUnit = (rank _x) + " " + _nameOfUnit;
|
||||||
|
};
|
||||||
|
_color set [3,(1-((_x distance _this) / GVAR(INDIRECT_TAGS_DISTANCE))) + 0.05];
|
||||||
|
_info pushback [_nameOfUnit, _pos, _color, _x];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}foreach _nearest;
|
||||||
|
};
|
||||||
|
|
||||||
|
_info;
|
40
TO_MERGE/cse/nametags/functions/fnc_handleSpeaking.sqf
Normal file
40
TO_MERGE/cse/nametags/functions/fnc_handleSpeaking.sqf
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/**
|
||||||
|
* fn_handleSpeaking_TAGS.sqf
|
||||||
|
* @Descr: N/A
|
||||||
|
* @Author: Glowbal
|
||||||
|
*
|
||||||
|
* @Arguments: []
|
||||||
|
* @Return:
|
||||||
|
* @PublicAPI: false
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
// TODO Implement a check mod loaded function
|
||||||
|
#define ACTION_PUSH_TO_TALK_PRESSED (inputAction "PushToTalk" > 0)
|
||||||
|
#define ACTION_TFAR_RADIO_ACTIVE false // [] call {if (["task_force_radio"] call FUNC(isModLoaded_F)) then {player call TFAR_fnc_isSpeaking} else { false };}
|
||||||
|
#define ACTION_ACRE_RADIO_ACTIVE false // [] call {if (["acre_api"] call FUNC(isModLoaded_F)) then {[player] call ACRE_api_fnc_isBroadcasting} else { false };}
|
||||||
|
|
||||||
|
private ["_unit"];
|
||||||
|
_unit = _this select 0;
|
||||||
|
|
||||||
|
if (_unit != player /* _unit != ACE_Player */) exitwith {};
|
||||||
|
|
||||||
|
// TODO check mod loaded function
|
||||||
|
/*if (["task_force_radio"] call FUNC(isModLoaded_F)) then {
|
||||||
|
waituntil {!isnil "TF_tangent_lr_pressed"};
|
||||||
|
};*/
|
||||||
|
|
||||||
|
waituntil {
|
||||||
|
if (ACTION_TFAR_RADIO_ACTIVE || ACTION_PUSH_TO_TALK_PRESSED || ACTION_ACRE_RADIO_ACTIVE) then {
|
||||||
|
if !(_unit getvariable [QGVAR(isSpeaking), false]) then {
|
||||||
|
_unit setvariable [QGVAR(isSpeaking), true, true];
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
if (_unit getvariable [QGVAR(isSpeaking), false]) then {
|
||||||
|
_unit setvariable [QGVAR(isSpeaking), false, true];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
!(alive _unit) /* _unit != ACE_Player */
|
||||||
|
};
|
||||||
|
|
||||||
|
_unit setvariable [QGVAR(isSpeaking),nil,true];
|
24
TO_MERGE/cse/nametags/functions/fnc_initalizeModule.sqf
Normal file
24
TO_MERGE/cse/nametags/functions/fnc_initalizeModule.sqf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/**
|
||||||
|
* fnc_initalizeModule.sqf
|
||||||
|
* @Descr: N/A
|
||||||
|
* @Author: Glowbal
|
||||||
|
*
|
||||||
|
* @Arguments: []
|
||||||
|
* @Return:
|
||||||
|
* @PublicAPI: false
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!hasInterface) exitwith {}; // No need for this module on HC or dedicated server.
|
||||||
|
|
||||||
|
private ["_logic"];
|
||||||
|
_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param;
|
||||||
|
if (!isNull _logic) then {
|
||||||
|
// TODO default values should be defined somewhere through an include, so they are the same in CfgVehicles and here.
|
||||||
|
GVAR(ENABLE_MODULE) = _logic getvariable ["enableModule", false];
|
||||||
|
GVAR(INDIRECT_TAGS_DISTANCE) = _logic getvariable ["indirectDistance", 7.5];
|
||||||
|
GVAR(DIRECT_TAG_DISTANCE) = _logic getvariable ["cursorTargetDistance", 20];
|
||||||
|
GVAR(ALLOW_OWN_SIDE_ONLY) = !(_logic getvariable ["allowDifferentSides", false]);
|
||||||
|
GVAR(ENABLE_SOUNDWAVES) = _logic getvariable ["enableSoundWaves", false];
|
||||||
|
};
|
12
TO_MERGE/cse/nametags/script_component.hpp
Normal file
12
TO_MERGE/cse/nametags/script_component.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#define COMPONENT nametags
|
||||||
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_NAMETAGS
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_SETTINGS_NAMETAGS
|
||||||
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_NAMETAGS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "\z\ace\addons\main\script_macros.hpp"
|
43
TO_MERGE/cse/nametags/stringtable.xml
Normal file
43
TO_MERGE/cse/nametags/stringtable.xml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Project name="ACE3">
|
||||||
|
<Package name="nametags">
|
||||||
|
<Container ID="Module">
|
||||||
|
<Key ID="STR_ACE_NameTags_Title">
|
||||||
|
<Original>Name Tags [ACE]</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_enable">
|
||||||
|
<Original>Enable Name Tags</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_enable_Desc">
|
||||||
|
<Original>Enable the name tags</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_indirectDistance">
|
||||||
|
<Original>Indirect Distance</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_indirectDistance_Desc">
|
||||||
|
<Original>Distance for indirect Tags</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_directDistance">
|
||||||
|
<Original>Target Distance</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_directDistance_Desc">
|
||||||
|
<Original>Distance for the direct Tag (Cursortarget)</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_soundWaves">
|
||||||
|
<Original>Enable Soundwaves</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_soundWaves_Desc">
|
||||||
|
<Original>Enable Soundwaves when a player is speaking</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_differentSides">
|
||||||
|
<Original>Allow Different sides</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_Arg_differentSides_Desc">
|
||||||
|
<Original>Allow name tags for all friendly sides, instead of only player side</Original>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_NameTags_ModuleDesc">
|
||||||
|
<Original>Adjust the name tags settings.</Original>
|
||||||
|
</Key>
|
||||||
|
</Container>
|
||||||
|
</Package>
|
||||||
|
</Project>
|
Loading…
Reference in New Issue
Block a user