Merge branch 'master' into macroSTR

Conflicts:
	addons/nametags/ACE_Settings.hpp
	addons/nametags/CfgVehicles.hpp
	addons/nametags/stringtable.xml
This commit is contained in:
jonpas 2015-06-02 22:22:51 +02:00
commit 5496333c26
23 changed files with 246 additions and 145 deletions

View File

@ -6,8 +6,7 @@ class CfgPatches {
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"}; requiredAddons[] = {"ace_common"};
author[] = {"TaoSensai","commy2","Ruthberg"}; author[] = {"commy2","Ruthberg"};
authorUrl = "https://github.com/Taosenai/tmr";
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };

View File

@ -66,7 +66,7 @@ class ACE_Medical_Actions {
displayNameProgress = CSTRING(PlacingInBodyBag); displayNameProgress = CSTRING(PlacingInBodyBag);
treatmentLocations[] = {"All"}; treatmentLocations[] = {"All"};
requiredMedic = 0; requiredMedic = 0;
treatmentTime = 2; treatmentTime = 4;
items[] = {"ACE_bodyBag"}; items[] = {"ACE_bodyBag"};
condition = "!alive (_this select 1);"; condition = "!alive (_this select 1);";
callbackSuccess = QUOTE(DFUNC(actionPlaceInBodyBag)); callbackSuccess = QUOTE(DFUNC(actionPlaceInBodyBag));

View File

@ -1,31 +1,40 @@
/* /*
* Author: Glowbal * Author: Glowbal
* Replace a dead body by a bodybag * Replace a (dead) body by a body bag
* *
* Arguments: * Arguments:
* 0: The patient <OBJECT> * 0: The actor <OBJECT>
* 1: The new item classname <STRING> * 1: The patient <OBJECT>
* *
* Return Value: * Return Value:
* nil * body bag <OBJECT>
* *
* Public: Yes * Public: Yes
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_target","_caller", "_nameOfUnit", "_onPosition", "_bodyBagCreated"]; PARAMS_2(_caller,_target);
_caller = _this select 0;
_target = _this select 1; private ["_position", "_headPos", "_spinePos", "_dirVect", "_direction", "_bodyBag"];
_nameOfUnit = [_target] call EFUNC(common,getName);
if (alive _target) then { if (alive _target) then {
[_target, true] call FUNC(setDead); [_target, true] call FUNC(setDead);
}; };
_onPosition = getPosASL _target;
deleteVehicle _target;
_bodyBagCreated = createVehicle ["ACE_bodyBagObject", _onPosition, [], 0, "NONE"];
// reset the position to ensure it is on the correct one.
_bodyBagCreated setPosASL [_onPosition select 0, _onPosition select 1, (_onPosition select 2) + 0.2];
_bodyBagCreated; _position = (getPosASL _target) vectorAdd [0, 0, 0.2];
_headPos = _target modelToWorldVisual (_target selectionPosition "head");
_spinePos = _target modelToWorldVisual (_target selectionPosition "Spine3");
_dirVect = _headPos vectorFromTo _spinePos;
_direction = _dirVect call CBA_fnc_vectDir;
deleteVehicle _target;
_bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, "CAN_COLLIDE"];
// prevent body bag from flipping
_bodyBag setPosASL _position;
_bodyBag setDir _direction;
_bodyBag

View File

@ -43,4 +43,4 @@
}; };
}; };
}foreach GVAR(moduleInitCollection); }foreach GVAR(moduleInitCollection);
}] call FUNC(addEventhandler); }] call EFUNC(common,addEventhandler);

View File

@ -11,7 +11,7 @@ class ACE_Settings {
isClientSettable = 1; isClientSettable = 1;
displayName = CSTRING(ShowPlayerNames); displayName = CSTRING(ShowPlayerNames);
description = CSTRING(ShowPlayerNames_Desc); description = CSTRING(ShowPlayerNames_Desc);
values[] = {CSTRING(Disabled), CSTRING(Enabled), CSTRING(OnlyCursor), CSTRING(OnlyOnKeypress), CSTRING(OnlyCursorAndKeyPress)}; values[] = {CSTRING(Disabled), CSTRING(Enabled), CSTRING(OnlyCursor), CSTRING(OnlyKeypress), CSTRING(OnlyCursorAndKeypress)};
}; };
class GVAR(showPlayerRanks) { class GVAR(showPlayerRanks) {
value = 1; value = 1;
@ -44,12 +44,12 @@ class ACE_Settings {
description = CSTRING(ShowSoundWaves_Desc); description = CSTRING(ShowSoundWaves_Desc);
values[] = {CSTRING(Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)}; values[] = {CSTRING(Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)};
}; };
class GVAR(PlayerNamesViewDistance) { class GVAR(playerNamesViewDistance) {
value = 5; value = 5;
typeName = "SCALAR"; typeName = "SCALAR";
isClientSettable = 0; isClientSettable = 0;
}; };
class GVAR(PlayerNamesMaxAlpha) { class GVAR(playerNamesMaxAlpha) {
value = 0.8; value = 0.8;
typeName = "SCALAR"; typeName = "SCALAR";
isClientSettable = 0; isClientSettable = 0;
@ -58,8 +58,8 @@ class ACE_Settings {
value = 2; value = 2;
typeName = "SCALAR"; typeName = "SCALAR";
isClientSettable = 1; isClientSettable = 1;
displayName = "$STR_ACE_nametags_tagsize_name"; displayName = CSTRING(TagSize_Name);
description = "$STR_ACE_nametags_tagsize_description"; description = CSTRING(TagSize_Description);
values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"}; values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"};
}; };
}; };

View File

@ -15,6 +15,38 @@ class CfgVehicles {
typeName = "NUMBER"; typeName = "NUMBER";
defaultValue = 5; defaultValue = 5;
}; };
class showPlayerNames {
displayName = CSTRING(ShowPlayerNames);
description = CSTRING(ShowPlayerNames_Desc);
typeName = "NUMBER";
class values {
class DoNotForce {
default = 1;
name = CSTRING(DoNotForce);
value = -1;
};
class ForceHide {
name = CSTRING(ForceHide);
value = 0;
};
class ForceShow {
name = CSTRING(ForceShow);
value = 1;
};
class ForceShowOnlyCursor {
name = CSTRING(ForceShowOnlyCursor);
value = 2;
};
class ForceShowOnlyKeypress {
name = CSTRING(ForceShowOnlyKeypress);
value = 3;
};
class ForceShowOnlyCursorAndKeypress {
name = CSTRING(ForceShowOnlyCursorAndKeypress);
value = 4;
};
};
};
class showNamesForAI { class showNamesForAI {
displayName = CSTRING(showNamesForAI_DisplayName); displayName = CSTRING(showNamesForAI_DisplayName);
description = CSTRING(showNamesForAI_Description); description = CSTRING(showNamesForAI_Description);

View File

@ -5,7 +5,7 @@
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
GVAR(ShowNamesTime) = -10; GVAR(showNamesTime) = -10;
// Add keybinds // Add keybinds
["ACE3 Common", QGVAR(showNameTags), localize LSTRING(ShowNames), ["ACE3 Common", QGVAR(showNameTags), localize LSTRING(ShowNames),
@ -14,7 +14,7 @@ GVAR(ShowNamesTime) = -10;
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false};
// Statement // Statement
GVAR(ShowNamesTime) = ACE_time; GVAR(showNamesTime) = ACE_time;
if (call FUNC(canShow)) then{ call FUNC(doShow); }; if (call FUNC(canShow)) then{ call FUNC(doShow); };
// Return false so it doesn't block other actions // Return false so it doesn't block other actions
false false
@ -61,5 +61,13 @@ GVAR(ShowNamesTime) = -10;
// Wait until the colors are defined before starting to draw the nametags // Wait until the colors are defined before starting to draw the nametags
["SettingsInitialized", { ["SettingsInitialized", {
// Draw handle // Draw handle
addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; call FUNC(updateSettings);
}] call EFUNC(common,addEventHandler);
// Change settings accordingly when they are changed
["SettingChanged", {
PARAMS_1(_name);
if (_name == QGVAR(showPlayerNames)) then {
call FUNC(updateSettings);
};
}] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler);

View File

@ -10,5 +10,6 @@ PREP(initIsSpeaking);
PREP(moduleNameTags); PREP(moduleNameTags);
PREP(onDraw3d); PREP(onDraw3d);
PREP(setText); PREP(setText);
PREP(updateSettings);
ADDON = true; ADDON = true;

View File

@ -13,6 +13,7 @@ class CfgPatches {
}; };
#include "CfgEventHandlers.hpp" #include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"
#include "ACE_Settings.hpp" #include "ACE_Settings.hpp"
#include "CfgVehicles.hpp"
#include <RscTitles.hpp> #include <RscTitles.hpp>

View File

@ -1,13 +1,9 @@
/* /*
Author: aeroson * Author: aeroson
* Images, index in images and order of roles.
Description: * Defined number also implies order, lower number shows more on top of the list.
Images, index in images and order of roles.
Defined number also implies order, lower number shows more on top of the list.
*/ */
#include "script_component.hpp"
#define PILOT 0 #define PILOT 0
#define DRIVER 1 #define DRIVER 1
#define COPILOT PILOT #define COPILOT PILOT

View File

@ -1,16 +1,19 @@
/* /*
Author: aeroson * Author: aeroson
* Checks if crew info can be shown.
Description: * Might be called several times a second.
Might be called several times a second *
* Arguments:
Parameters: * None
None *
* Return Value:
Returns: * Can show Crew Info <BOOL>
true if CrewInfo can be shown, false otherwise *
* Example:
* call ace_nametags_fnc_doShow
*
* Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_player"]; private ["_player"];

View File

@ -1,16 +1,18 @@
/* /*
Author: aeroson * Author: aeroson
* Shows the actual text and sets text the crew info.
Description: *
Shows the actual text and sets text the crew info * Arguments:
* None
Parameters: *
None * Return Value:
* None
Returns: *
Nothing * Example:
* call ace_nametags_fnc_doShow
*
* Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
#include "common.hpp"; #include "common.hpp";

View File

@ -1,17 +1,21 @@
/* /*
* Author: commy2, esteldunedain * Author: commy2, esteldunedain
*
* Draw the nametag and rank icon. * Draw the nametag and rank icon.
* *
* Argument: * Arguments:
* 0: Unit (Player) <OBJECT> * 0: Unit (Player) <OBJECT>
* 1: Target <OBJECT> * 1: Target <OBJECT>
* 2: alpha (Number) * 2: Alpha <NUMBER>
* 4: Height offset (Number) * 4: Height offset <NUMBER>
* 5: Draw Type <NUMBER> * 5: Draw Type <NUMBER>
* *
* Return value: * Return value:
* None. * None
*
* Example:
* [ACE_player, _target, _alpha, _distance * 0.026, _icon] call ace_nametags_fnc_drawNameTagIcon
*
* Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"

View File

@ -1,46 +1,38 @@
/* /*
Author: aeroson * Author: aeroson
* Gathers and caches data needed by AGM_CrewInfo_fnc_doShow.
Description: * What really does make difference for the engine is simulation of CfgAmmo.
Gathers and caches data needed by AGM_CrewInfo_fnc_doShow * Priority of roles is: driver/pilot, gunner, copilot, commander, FFV, cargo.
What really does make difference for the engine is simulation of CfgAmmo *
Priority of roles is: driver/pilot, gunner, copilot, commander, ffv, cargo * Arguments:
* None
Parameters: *
None * Return Value:
* Data <ARRAY>
Returns: * 0: Vehicle inherits from Air <BOOL>
[ * 1: Categorized vehicle's turrets <ARRAY>
Is vehicle inherited from Air ? *
Array categorizing each vehicle's turret * Example:
] * call ace_nametags_fnc_updateSettings
*
* Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
#include "common.hpp"; #include "common.hpp";
private ["_type", "_varName", "_data", "_isAir", "_config", "_fnc_addTurret", "_fnc_addTurretUnit"];
private ["_type", "_varName", "_data"]; PARAMS_1(_type);
_type = _this select 0;
_varName = format ["ACE_CrewInfo_Cache_%1", _type]; _varName = format ["ACE_CrewInfo_Cache_%1", _type];
_data = + (uiNamespace getVariable _varName); _data = + (uiNamespace getVariable _varName);
if (!isNil "_data") exitWith { if (!isNil "_data") exitWith {_data};
_data
};
_data = []; _data = [];
private ["_isAir", "_config", "_fnc_addTurret", "_fnc_addTurretUnit"];
_isAir = _type isKindOf "Air"; _isAir = _type isKindOf "Air";
_fnc_addTurretUnit = { _fnc_addTurretUnit = {
private ["_config", "_path", "_role", "_simulationEmpty", "_simulationLaserDesignate", "_simulationOther", "_magazine", "_ammo", "_simulation"]; private ["_config", "_path", "_role", "_simulationEmpty", "_simulationLaserDesignate", "_simulationOther", "_magazine", "_ammo", "_simulation"];
_config = _this select 0; _config = _this select 0;
@ -83,7 +75,6 @@ _fnc_addTurretUnit = {
}; };
_data pushBack [_path, _role]; _data pushBack [_path, _role];
}; };
@ -108,9 +99,7 @@ _fnc_addTurret = {
} else { } else {
_offset = _offset + 1; _offset = _offset + 1;
}; };
}; };
}; };

View File

@ -4,13 +4,13 @@
* Compatiblity with TFR/ACRE and Arma's VON * Compatiblity with TFR/ACRE and Arma's VON
* *
* Arguments: * Arguments:
* NONE * None
* *
* Return Value: * Return Value:
* NONE * None
* *
* Example: * Example:
* [] call ACE_nametags_fnc_initIsSpeaking * [] call ace_nametags_fnc_initIsSpeaking
* *
* Public: No * Public: No
*/ */

View File

@ -20,9 +20,14 @@ if !(_activated) exitWith {};
GVAR(Module) = true; GVAR(Module) = true;
[_logic, QGVAR(PlayerNamesViewDistance), "PlayerNamesViewDistance" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(playerNamesViewDistance), "playerNamesViewDistance" ] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(ShowNamesForAI), "ShowNamesForAI" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showNamesForAI), "showNamesForAI" ] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(showVehicleCrewInfo), "showVehicleCrewInfo" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showVehicleCrewInfo), "showVehicleCrewInfo" ] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles" ] call EFUNC(common,readSettingFromModule);
// Do Not Force - read module setting only non-default is set due to using SCALAR
if ((_logic getVariable "showPlayerNames") != -1) then {
[_logic, QGVAR(showPlayerNames), "showPlayerNames" ] call EFUNC(common,readSettingFromModule);
};
diag_log text "[ACE]: NameTags Module Initialized."; diag_log text "[ACE]: NameTags Module Initialized.";

View File

@ -1,3 +1,18 @@
/*
* Author: <N/A>
* Draws names and icons.
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* call ace_nametags_fnc_onDraw3d
*
* Public: No
*/
#include "script_component.hpp" #include "script_component.hpp"
private ["_onKeyPressAlphaMax", "_defaultIcon", "_distance", "_alpha", "_icon", "_targets", "_pos2", "_vecy", "_relPos", "_projDist", "_pos", "_target", "_targetEyePosASL", "_ambientBrightness", "_maxDistance"]; private ["_onKeyPressAlphaMax", "_defaultIcon", "_distance", "_alpha", "_icon", "_targets", "_pos2", "_vecy", "_relPos", "_projDist", "_pos", "_target", "_targetEyePosASL", "_ambientBrightness", "_maxDistance"];
@ -9,7 +24,7 @@ _ambientBrightness = ((([] call EFUNC(common,ambientBrightness)) + ([0, 0.4] sel
_maxDistance = _ambientBrightness * GVAR(PlayerNamesViewDistance); _maxDistance = _ambientBrightness * GVAR(PlayerNamesViewDistance);
_onKeyPressAlphaMax = if ((GVAR(showPlayerNames) in [3,4])) then { _onKeyPressAlphaMax = if ((GVAR(showPlayerNames) in [3,4])) then {
2 + (GVAR(ShowNamesTime) - ACE_time); //after release 1 second of full opacity, 1 second of fading to 0 2 + (GVAR(showNamesTime) - ACE_time); //after release 1 second of full opacity, 1 second of fading to 0
} else { } else {
1 1
}; };
@ -29,10 +44,10 @@ if (GVAR(showCursorTagForVehicles) && {_onKeyPressAlphaMax > 0}) then {
if ((!isNull _target) && if ((!isNull _target) &&
{(side (group _target)) == (side (group ACE_player))} && {(side (group _target)) == (side (group ACE_player))} &&
{_target != ACE_player} && {_target != ACE_player} &&
{GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
{!(_target getVariable ["ACE_hideName", false])}) then { {!(_target getVariable ["ACE_hideName", false])}) then {
_distance = ACE_player distance _target; _distance = ACE_player distance _target;
_alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(PlayerNamesMaxAlpha)) min _onKeyPressAlphaMax; _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(playerNamesMaxAlpha)) min _onKeyPressAlphaMax;
[ACE_player, _target, _alpha, _distance * 0.026, _defaultIcon] call FUNC(drawNameTagIcon); [ACE_player, _target, _alpha, _distance * 0.026, _defaultIcon] call FUNC(drawNameTagIcon);
}; };
}; };
@ -45,10 +60,10 @@ if ((GVAR(showPlayerNames) in [2,4]) && {_onKeyPressAlphaMax > 0}) then {
{_target isKindOf "CAManBase"} && {_target isKindOf "CAManBase"} &&
{(side (group _target)) == (side (group ACE_player))} && {(side (group _target)) == (side (group ACE_player))} &&
{_target != ACE_player} && {_target != ACE_player} &&
{GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
{!(_target getVariable ["ACE_hideName", false])}) then { {!(_target getVariable ["ACE_hideName", false])}) then {
_distance = ACE_player distance _target; _distance = ACE_player distance _target;
_alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(PlayerNamesMaxAlpha)) min _onKeyPressAlphaMax; _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(playerNamesMaxAlpha)) min _onKeyPressAlphaMax;
_icon = ICON_NONE; _icon = ICON_NONE;
if (GVAR(showSoundWaves) == 2) then { //icon will be drawn below, so only show name here if (GVAR(showSoundWaves) == 2) then { //icon will be drawn below, so only show name here
_icon = if (([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target}) then {ICON_NAME} else {_defaultIcon}; _icon = if (([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target}) then {ICON_NAME} else {_defaultIcon};
@ -87,7 +102,7 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho
if ((_icon != ICON_NONE) && if ((_icon != ICON_NONE) &&
{(side (group _target)) == (side (group ACE_player))} && {(side (group _target)) == (side (group ACE_player))} &&
{_target != ACE_player} && {_target != ACE_player} &&
{GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
{!(_target getVariable ["ACE_hideName", false])}) then { {!(_target getVariable ["ACE_hideName", false])}) then {
_targetEyePosASL = eyePos _target; _targetEyePosASL = eyePos _target;
@ -97,7 +112,7 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho
_distance = vectorMagnitude _relPos; _distance = vectorMagnitude _relPos;
_projDist = _relPos vectorDistance (_vecy vectorMultiply (_relPos vectorDotProduct _vecy)); _projDist = _relPos vectorDistance (_vecy vectorMultiply (_relPos vectorDotProduct _vecy));
_alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(PlayerNamesMaxAlpha)) min _onKeyPressAlphaMax; _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(playerNamesMaxAlpha)) min _onKeyPressAlphaMax;
[ACE_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon); [ACE_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon);
}; };

View File

@ -1,25 +1,28 @@
/* /*
Author: aeroson * Author: aeroson
* Sets the text on the dialog.
Description: *
Sets the text on the dialog * Arguments:
* 0: Text <STRING>
Parameters: *
None * Return Value:
* None
Returns: *
Nothing * Example:
* call ace_nametags_fnc_setText
*
* Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
#define TextIDC 11123 #define TextIDC 11123
private["_text", "_ctrl"]; PARAMS_1(_text);
private["_ctrl"];
disableSerialization; disableSerialization;
_text = _this select 0;
_ctrl = (uiNamespace getVariable QGVAR(dialog)) displayCtrl TextIDC; _ctrl = (uiNamespace getVariable QGVAR(dialog)) displayCtrl TextIDC;
_ctrl ctrlSetStructuredText parseText _text; _ctrl ctrlSetStructuredText parseText _text;
_ctrl ctrlCommit 0; _ctrl ctrlCommit 0;

View File

@ -0,0 +1,25 @@
/*
* Author: Jonpas
* Dynamically adds and removes Draw3D based on settings on run-time.
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* call ace_nametags_fnc_updateSettings
*
* Public: No
*/
#include "script_component.hpp"
if (isNil QGVAR(drawHandler) && {GVAR(showPlayerNames) != 0}) then {
GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}];
} else {
if (!isNil QGVAR(drawHandler) && {GVAR(showPlayerNames) == 0}) then {
removeMissionEventHandler ["Draw3D", GVAR(drawHandler)];
GVAR(drawHandler) = nil;
};
};

View File

@ -152,7 +152,7 @@
<German>Verstecken erzwingen</German> <German>Verstecken erzwingen</German>
</Key> </Key>
<Key ID="STR_ACE_NameTags_ForceShow"> <Key ID="STR_ACE_NameTags_ForceShow">
<English>Force show</English> <English>Force Show</English>
<Polish>Wymuś wyświetlanie</Polish> <Polish>Wymuś wyświetlanie</Polish>
<Spanish>Mostrar forzado</Spanish> <Spanish>Mostrar forzado</Spanish>
<German>Anzeigen erzwingen</German> <German>Anzeigen erzwingen</German>
@ -182,7 +182,7 @@
<German>Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein</German> <German>Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein</German>
</Key> </Key>
<Key ID="STR_ACE_NameTags_Module_Description"> <Key ID="STR_ACE_NameTags_Module_Description">
<English></English> <English>This module allows you to customize settings and range of Name Tags.</English>
<Polish>Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion.</Polish> <Polish>Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion.</Polish>
<German>Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern.</German> <German>Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern.</German>
</Key> </Key>
@ -199,23 +199,32 @@
<German>Aktiviert</German> <German>Aktiviert</German>
</Key> </Key>
<Key ID="STR_ACE_NameTags_OnlyCursor"> <Key ID="STR_ACE_NameTags_OnlyCursor">
<English>Only Cursor</English> <English>Only on Cursor</English>
<Polish>Tylko pod kursorem</Polish> <Polish>Tylko pod kursorem</Polish>
<Spanish>Solo cursor</Spanish> <Spanish>Solo cursor</Spanish>
<German>Nur bei Maus</German> <German>Nur bei Maus</German>
</Key> </Key>
<Key ID="STR_ACE_NameTags_OnlyOnKeypress"> <Key ID="STR_ACE_NameTags_OnlyKeypress">
<English>Only On Keypress</English> <English>Only on Keypress</English>
<Polish>Tylko po wciśnięciu klawisza</Polish> <Polish>Tylko po wciśnięciu klawisza</Polish>
<Spanish>Solo al pulsar tecla</Spanish> <Spanish>Solo al pulsar tecla</Spanish>
<German>Nur bei Tastendruck</German> <German>Nur bei Tastendruck</German>
</Key> </Key>
<Key ID="STR_ACE_NameTags_OnlyCursorAndKeyPress"> <Key ID="STR_ACE_NameTags_OnlyCursorAndKeypress">
<English>Only Cursor and KeyPress</English> <English>Only on Cursor and Keypress</English>
<Polish>Tylko pod kursorem i po wciśnięciu klawisza</Polish> <Polish>Tylko pod kursorem i po wciśnięciu klawisza</Polish>
<Spanish>En cursor y al pulsar tecla</Spanish> <Spanish>En cursor y al pulsar tecla</Spanish>
<German>Nur Maus und Tastendruck</German> <German>Nur Maus und Tastendruck</German>
</Key> </Key>
<Key ID="STR_ACE_NameTags_ForceShowOnlyCursor">
<English>Force Show Only on Cursor</English>
</Key>
<Key ID="STR_ACE_NameTags_ForceShowOnlyKeypress">
<English>Force Show Only on Keypress</English>
</Key>
<Key ID="STR_ACE_NameTags_ForceShowOnlyCursorAndKeypress">
<English>Force Show Only on Cursor and Keypress</English>
</Key>
<Key ID="STR_ACE_NameTags_NameTagSettings"> <Key ID="STR_ACE_NameTags_NameTagSettings">
<English>Use Nametag settings</English> <English>Use Nametag settings</English>
<Polish>Użyj ustawień imion</Polish> <Polish>Użyj ustawień imion</Polish>
@ -229,17 +238,17 @@
<German>Immer alle zeigen</German> <German>Immer alle zeigen</German>
</Key> </Key>
<Key ID="STR_ACE_NameTags_ShowPlayerNames_Desc"> <Key ID="STR_ACE_NameTags_ShowPlayerNames_Desc">
<English></English> <English>Show player names and set their activation. Default: Enabled</English>
<Polish>Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -&gt; ACE3.</Polish> <Polish>Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -&gt; ACE3.</Polish>
</Key> </Key>
<Key ID="STR_ACE_NameTags_ShowSoundWaves_Desc"> <Key ID="STR_ACE_NameTags_ShowSoundWaves_Desc">
<English></English> <English>Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2.</English>
<Polish>Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2.</Polish> <Polish>Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2.</Polish>
</Key> </Key>
<Key ID="STR_ACE_nametags_tagsize_name"> <Key ID="STR_ACE_NameTags_TagSize_Name">
<English>Nametags Size</English> <English>Nametags Size</English>
</Key> </Key>
<Key ID="STR_ACE_nametags_tagsize_description"> <Key ID="STR_ACE_NameTags_TagSize_Description">
<English>Text and Icon Size Scaling</English> <English>Text and Icon Size Scaling</English>
</Key> </Key>
</Package> </Package>

View File

@ -6,7 +6,6 @@ class Extended_PreInit_EventHandlers {
class Extended_PostInit_EventHandlers { class Extended_PostInit_EventHandlers {
class ADDON { class ADDON {
clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) ); init = QUOTE( call COMPILE_FILE(XEH_postInit) );
}; };
}; };

View File

@ -16,6 +16,7 @@
#include "script_component.hpp" #include "script_component.hpp"
if (missionNamespace getVariable [QGVAR(EnableSwitchUnits), false]) then { if (missionNamespace getVariable [QGVAR(EnableSwitchUnits), false]) then {
[player] call FUNC(startSwitchUnits); [player] call FUNC(startSwitchUnits);
} else { } else {