Merge branch 'master' into cargo

This commit is contained in:
PabstMirror 2015-08-15 03:11:19 -05:00
commit a2897e6d32
78 changed files with 496 additions and 513 deletions

View File

@ -1,3 +1,3 @@
#include "script_component.hpp" #include "script_component.hpp"
["backpackOpened", {_this call FUNC(backpackOpened)}] call EFUNC(common,addEventHandler); ["backpackOpened", DFUNC(backpackOpened)] call EFUNC(common,addEventHandler);

View File

@ -12,8 +12,8 @@
* None. * None.
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_sounds", "_position"];
PARAMS_3(_unit,_target,_backpack); params ["_target", "_backpack"];
// do cam shake if the target is the player // do cam shake if the target is the player
if ([_target] call EFUNC(common,isPlayer)) then { if ([_target] call EFUNC(common,isPlayer)) then {
@ -21,7 +21,6 @@ if ([_target] call EFUNC(common,isPlayer)) then {
}; };
// play a rustling sound // play a rustling sound
private ["_sounds", "_position"];
_sounds = [ _sounds = [
/*"a3\sounds_f\characters\ingame\AinvPknlMstpSlayWpstDnon_medic.wss", /*"a3\sounds_f\characters\ingame\AinvPknlMstpSlayWpstDnon_medic.wss",

View File

@ -4,19 +4,19 @@
* Returns the unit that has the given backpack object equipped. * Returns the unit that has the given backpack object equipped.
* *
* Argument: * Argument:
* 0: A backpack object (Object) * 0: Executing Unit (Object)
* 1: A backpack object (Object)
* *
* Return value: * Return value:
* Unit that has the backpack equipped. (Object) * Unit that has the backpack equipped. (Object)
*/ */
#include "script_component.hpp" #include "script_component.hpp"
scopeName "main";
private ["_backpack", "_unit"]; params ["_unit","_backpack"];
_target = objNull;
_backpack = _this select 0;
_unit = objNull;
{ {
if (backpackContainer _x == _backpack) exitWith {_unit = _x}; if (backpackContainer _x == _backpack) then {_target = _x; breakTo "main"};
} forEach (allUnits + allDeadMen); } count nearestObjects [_unit, ["Man"], 5];
_unit if (isNull _target) exitWith {ACE_Player};
_target

View File

@ -11,9 +11,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_backpack", "_config"]; private ["_config"];
params ["_backpack"];
_backpack = _this select 0;
if (typeName _backpack == "OBJECT") then { if (typeName _backpack == "OBJECT") then {
_backpack = typeOf _backpack; _backpack = typeOf _backpack;

View File

@ -11,20 +11,18 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit", "_backpack"]; private "_target";
params ["","_backpack"];
_unit = _this select 0;
_backpack = _this select 1;
// exit if the target is not a backpack // exit if the target is not a backpack
if !([_backpack] call FUNC(isBackpack)) exitWith {}; if !([_backpack] call FUNC(isBackpack)) exitWith {};
// get the unit that wears the backpack object // get the unit that wears the backpack object
private "_target"; _target = _this call FUNC(getBackpackAssignedUnit);
_target = [_backpack] call FUNC(getBackpackAssignedUnit);
if (isNull _target) exitWith {false};
// raise event on target unit // raise event on target unit
["backpackOpened", _target, [_unit, _target, _backpack]] call EFUNC(common,targetEvent); ["backpackOpened", _target, [_target, _backpack]] call EFUNC(common,targetEvent);
// return false to open inventory as usual // return false to open inventory as usual
false false

View File

@ -190,8 +190,8 @@ class CfgVehicles {
defaultValue = 1; defaultValue = 1;
}; };
class requireSurrender { class requireSurrender {
displayName = CSTRING(ModuleSettings_allowSurrender_name); displayName = CSTRING(ModuleSettings_requireSurrender_name);
description = CSTRING(ModuleSettings_allowSurrender_description); description = CSTRING(ModuleSettings_requireSurrender_description);
typeName = "NUMBER"; typeName = "NUMBER";
class values { class values {
class disable { class disable {

View File

@ -27,7 +27,7 @@ if (isNull _target) then {
}; };
if (isNull _vehicle) then { if (isNull _vehicle) then {
_objects = nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship_F"], 10]; _objects = nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship"], 10];
if ((count _objects) > 0) then {_vehicle = _objects select 0;}; if ((count _objects) > 0) then {_vehicle = _objects select 0;};
}; };

View File

@ -29,7 +29,7 @@ if (isNull _target) then {
if (isNull _target) exitWith {}; if (isNull _target) exitWith {};
if (isNull _vehicle) then { if (isNull _vehicle) then {
_objects = nearestObjects [_unit, ["Car_F", "Tank_F", "Helicopter_F", "Boat_F", "Plane_F"], 10]; _objects = nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship"], 10];
if ((count _objects) > 0) then {_vehicle = _objects select 0;}; if ((count _objects) > 0) then {_vehicle = _objects select 0;};
}; };
if (isNull _vehicle) exitWith {}; if (isNull _vehicle) exitWith {};

View File

@ -75,16 +75,6 @@ if (isServer) then {
["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler); ["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler);
}; };
// hack to get PFH to work in briefing
[QGVAR(onBriefingPFH), "onEachFrame", {
if (ACE_time > 0) exitWith {
[QGVAR(onBriefingPFH), "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
};
call cba_common_fnc_onFrame;
}] call BIS_fnc_addStackedEventHandler;
/////
QGVAR(remoteFnc) addPublicVariableEventHandler { QGVAR(remoteFnc) addPublicVariableEventHandler {
(_this select 1) call FUNC(execRemoteFnc); (_this select 1) call FUNC(execRemoteFnc);
}; };

View File

@ -27,6 +27,8 @@ _whitelist = [_whitelist, {toLower _this}] call FUNC(map);
ACE_Version_CheckAll = _checkAll; ACE_Version_CheckAll = _checkAll;
ACE_Version_Whitelist = _whitelist; ACE_Version_Whitelist = _whitelist;
if (!_checkAll) exitWith {}; //ACE is checked by FUNC(checkFiles)
if (!isServer) then { if (!isServer) then {
[_mode, _checkAll, _whitelist] spawn { [_mode, _checkAll, _whitelist] spawn {
private ["_missingAddon", "_missingAddonServer", "_oldVersionClient", "_oldVersionServer", "_text", "_error", "_rscLayer", "_ctrlHint"]; private ["_missingAddon", "_missingAddonServer", "_oldVersionClient", "_oldVersionServer", "_text", "_error", "_rscLayer", "_ctrlHint"];

View File

@ -20,6 +20,7 @@ _parseConfigForDisplayNames = {
if !(isClass _optionEntry) exitwith {false}; if !(isClass _optionEntry) exitwith {false};
_x set [3, getText (_optionEntry >> "displayName")]; _x set [3, getText (_optionEntry >> "displayName")];
_x set [4, getText (_optionEntry >> "description")]; _x set [4, getText (_optionEntry >> "description")];
_x set [8, getText (_optionEntry >> "category")];
private "_values"; private "_values";
_values = _x select 5; _values = _x select 5;

View File

@ -1,4 +1,4 @@
#include "script_component.hpp" #include "script_component.hpp"
["DisarmDropItems", {_this call FUNC(eventTargetStart)}] call EFUNC(common,addEventHandler); ["DisarmDropItems", FUNC(eventTargetStart)] call EFUNC(common,addEventHandler);
["DisarmDebugCallback", {_this call FUNC(eventCallerFinish)}] call EFUNC(common,addEventHandler); ["DisarmDebugCallback", FUNC(eventCallerFinish)] call EFUNC(common,addEventHandler);

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Checks the conditions for being able to disarm a unit * Checks the conditions for being able to disarm a unit
* *
* Arguments: * Arguments:
@ -15,17 +16,17 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_1(_target);
private ["_animationStateCfgMoves", "_putDownAnim"]; private ["_animationStateCfgMoves", "_putDownAnim"];
params ["_target"];
//Check animationState for putDown anim //Check animationState for putDown anim
//This ensures the unit doesn't have to actualy do any animation to drop something //This ensures the unit doesn't have to actualy do any animation to drop something
//This should always be true for the 3 possible status effects that allow disarming //This should always be true for the 3 possible status effects that allow disarming
_animationStateCfgMoves = getText (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _target) >> "actions"); _animationStateCfgMoves = getText (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _target) >> "actions");
if (_animationStateCfgMoves == "") exitWith {false}; if (_animationStateCfgMoves == "") exitWith { false };
_putDownAnim = getText (configFile >> "CfgMovesBasic" >> "Actions" >> _animationStateCfgMoves >> "PutDown"); _putDownAnim = getText (configFile >> "CfgMovesBasic" >> "Actions" >> _animationStateCfgMoves >> "PutDown");
if (_putDownAnim != "") exitWith {false}; if (_putDownAnim != "") exitWith { false };
(alive _target) && (alive _target) &&

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Checks the conditions for being able to disarm a unit * Checks the conditions for being able to disarm a unit
* *
* Arguments: * Arguments:
@ -16,7 +17,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_2(_player,_target); params ["_player", "_target"];
([_target] call FUNC(canBeDisarmed)) && ([_target] call FUNC(canBeDisarmed)) &&
{([_player, _target, []] call EFUNC(common,canInteractWith))} {([_player, _target, []] call EFUNC(common,canInteractWith))}

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Makes a unit drop items * Makes a unit drop items
* *
* Arguments: * Arguments:
@ -22,13 +23,11 @@
private ["_fncSumArray", "_return", "_holder", "_dropPos", "_targetMagazinesStart", "_holderMagazinesStart", "_xClassname", "_xAmmo", "_targetMagazinesEnd", "_holderMagazinesEnd", "_holderItemsStart", "_targetItemsStart", "_addToCrateClassnames", "_addToCrateCount", "_index", "_holderItemsEnd", "_targetItemsEnd", "_holderIsEmpty"]; private ["_fncSumArray", "_return", "_holder", "_dropPos", "_targetMagazinesStart", "_holderMagazinesStart", "_xClassname", "_xAmmo", "_targetMagazinesEnd", "_holderMagazinesEnd", "_holderItemsStart", "_targetItemsStart", "_addToCrateClassnames", "_addToCrateCount", "_index", "_holderItemsEnd", "_targetItemsEnd", "_holderIsEmpty"];
params ["_caller", "_target", "_listOfItemsToRemove", ["_doNotDropAmmo", false, [false]]]; //By default units drop all weapon mags when dropping a weapon
PARAMS_3(_caller,_target,_listOfItemsToRemove);
DEFAULT_PARAM(3,_doNotDropAmmo,false); //By default units drop all weapon mags when dropping a weapon
_fncSumArray = { _fncSumArray = {
_return = 0; _return = 0;
{_return = _return + _x;} forEach (_this select 0); {_return = _return + _x;} count (_this select 0);
_return _return
}; };
@ -48,7 +47,7 @@ if (!_doNotDropAmmo) then {
if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith { if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith {
_holder = _x; _holder = _x;
}; };
} forEach ((getpos _target) nearObjects [DISARM_CONTAINER, 3]); } count ((getpos _target) nearObjects [DISARM_CONTAINER, 3]);
}; };
//Create a new weapon holder //Create a new weapon holder

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Recieves a possible error code from FUNC(eventTargetFinish) * Recieves a possible error code from FUNC(eventTargetFinish)
* *
* Arguments: * Arguments:
@ -17,7 +18,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_3(_caller,_target,_errorMsg); params ["_caller", "_target", "_errorMsg"];
if (_caller != ACE_player) exitWith {}; if (_caller != ACE_player) exitWith {};

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* After FUNC(disarmDropItems) has completed, passing a possible error code. * After FUNC(disarmDropItems) has completed, passing a possible error code.
* Passes that error back to orginal caller. * Passes that error back to orginal caller.
* *
@ -18,7 +19,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_3(_caller,_target,_errorMsg); params ["_caller", "_target", "_errorMsg"];
if (_errorMsg != "") then { if (_errorMsg != "") then {
diag_log text format ["[ACE_Disarming] %1 - eventTargetFinish: %2", ACE_time, _this]; diag_log text format ["[ACE_Disarming] %1 - eventTargetFinish: %2", ACE_time, _this];

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Disarm Event Handler, Starting func, called on the target. * Disarm Event Handler, Starting func, called on the target.
* If target has to remove uniform/vest, this will add all uniform/vest items to the drop list. * If target has to remove uniform/vest, this will add all uniform/vest items to the drop list.
* *
@ -18,7 +19,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_3(_caller,_target,_listOfObjectsToRemove); params ["_caller", "_target", "_listOfObjectsToRemove"];
private "_itemsToAdd"; private "_itemsToAdd";

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Helper function to get all gear of a container * Helper function to get all gear of a container
* *
* Arguments: * Arguments:
@ -15,15 +16,16 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_1(_target); params ["_target"];
private ["_allGear"]; private ["_items", "_counts"];
_allGear = [[],[]];
_items = [];
_counts = [];
{ {
(_allGear select 0) append (_x select 0); _x params ["_item", "_count"];
(_allGear select 1) append (_x select 1); _items append _item;
_counts append _count;
} forEach [(getWeaponCargo _target), (getItemCargo _target), (getMagazineCargo _target), (getBackpackCargo _target)]; } forEach [(getWeaponCargo _target), (getItemCargo _target), (getMagazineCargo _target), (getBackpackCargo _target)];
_allGear [_items,_counts] // Return

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Helper function to get all gear of a unit. * Helper function to get all gear of a unit.
* *
* Arguments: * Arguments:
@ -15,7 +16,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_1(_target); params ["_target"];
private ["_allItems", "_classnamesCount", "_index", "_uniqueClassnames"]; private ["_allItems", "_classnamesCount", "_index", "_uniqueClassnames"];

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Opens the disarm dialog (allowing a person to remove items) * Opens the disarm dialog (allowing a person to remove items)
* *
* Arguments: * Arguments:
@ -15,21 +16,9 @@
* Public: No * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_caller", "_target"];
#define TEXTURES_RANKS [ \
"", \
"\A3\Ui_f\data\GUI\Cfg\Ranks\private_gs.paa", \
"\A3\Ui_f\data\GUI\Cfg\Ranks\corporal_gs.paa", \
"\A3\Ui_f\data\GUI\Cfg\Ranks\sergeant_gs.paa", \
"\A3\Ui_f\data\GUI\Cfg\Ranks\lieutenant_gs.paa", \
"\A3\Ui_f\data\GUI\Cfg\Ranks\captain_gs.paa", \
"\A3\Ui_f\data\GUI\Cfg\Ranks\major_gs.paa", \
"\A3\Ui_f\data\GUI\Cfg\Ranks\colonel_gs.paa" \
]
PARAMS_2(_caller,_target);
private "_display"; private "_display";
#define DEFUALTPATH "\A3\Ui_f\data\GUI\Cfg\Ranks\%1_gs.paa"
//Sanity Checks //Sanity Checks
if (_caller != ACE_player) exitwith {ERROR("Player isn't caller?");}; if (_caller != ACE_player) exitwith {ERROR("Player isn't caller?");};
if (!([_player, _target] call FUNC(canPlayerDisarmUnit))) exitWith {ERROR("Can't Disarm Unit");}; if (!([_player, _target] call FUNC(canPlayerDisarmUnit))) exitWith {ERROR("Can't Disarm Unit");};
@ -47,8 +36,8 @@ GVAR(disarmTarget) = _target;
//Setup Drop Event (on right pannel) //Setup Drop Event (on right pannel)
(_display displayCtrl 632) ctrlAddEventHandler ["LBDrop", { (_display displayCtrl 632) ctrlAddEventHandler ["LBDrop", {
if (isNull GVAR(disarmTarget)) exitWith {}; if (isNull GVAR(disarmTarget)) exitWith {};
PARAMS_5(_ctrl,_xPos,_yPos,_idc,_itemInfo); params ["_ctrl", "_xPos", "_yPos", "_idc", "_itemInfo"];
EXPLODE_3_PVT((_itemInfo select 0),_displayText,_value,_data); (_itemInfo select 0) params ["_displayText", "_value", "_data"];
if (isNull GVAR(disarmTarget)) exitWith {ERROR("disarmTarget is null");}; if (isNull GVAR(disarmTarget)) exitWith {ERROR("disarmTarget is null");};
@ -60,18 +49,18 @@ GVAR(disarmTarget) = _target;
//Setup PFEH //Setup PFEH
[{ [{
private ["_groundContainer", "_targetContainer", "_playerName", "_rankPicture", "_rankIndex", "_targetUniqueItems", "_holderUniqueItems", "_holder"]; private ["_groundContainer", "_targetContainer", "_playerName", "_icon", "_rankPicture", "_targetUniqueItems", "_holderUniqueItems", "_holder"];
disableSerialization; disableSerialization;
EXPLODE_2_PVT(_this,_args,_pfID); params ["_args", "_idPFH"];
EXPLODE_3_PVT(_args,_player,_target,_display); _args params ["_player", "_target", "_display"];
if ((!([_player, _target] call FUNC(canPlayerDisarmUnit))) || if ((!([_player, _target] call FUNC(canPlayerDisarmUnit))) ||
{isNull _display} || {isNull _display} ||
{_player != ACE_player}) then { {_player != ACE_player}) then {
[_pfID] call CBA_fnc_removePerFrameHandler; [_idPFH] call CBA_fnc_removePerFrameHandler;
GVAR(disarmTarget) = objNull; GVAR(disarmTarget) = objNull;
if (!isNull _display) then {closeDialog 0;}; //close dialog if still open if (!isNull _display) then { closeDialog 0; }; //close dialog if still open
} else { } else {
_groundContainer = _display displayCtrl 632; _groundContainer = _display displayCtrl 632;
@ -80,8 +69,9 @@ GVAR(disarmTarget) = _target;
_rankPicture = _display displayCtrl 1203; _rankPicture = _display displayCtrl 1203;
//Show rank and name (just like BIS's inventory) //Show rank and name (just like BIS's inventory)
_rankIndex = ((["PRIVATE", "CORPORAL", "SERGEANT", "LIEUTENANT", "CAPTAIN", "MAJOR", "COLONEL"] find (rank _target)) + 1); _icon = format [DEFUALTPATH, toLower (rank _target)];
_rankPicture ctrlSetText (TEXTURES_RANKS select _rankIndex); if (_icon isEqualTo DEFUALTPATH) then {_icon = ""};
_rankPicture ctrlSetText _icon;
_playerName ctrlSetText ([GVAR(disarmTarget)] call EFUNC(common,getName)); _playerName ctrlSetText ([GVAR(disarmTarget)] call EFUNC(common,getName));
//Clear both inventory lists: //Clear both inventory lists:
@ -98,7 +88,7 @@ GVAR(disarmTarget) = _target;
if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith { if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith {
_holder = _x; _holder = _x;
}; };
} forEach ((getpos _target) nearObjects [DISARM_CONTAINER, 3]); } count ((getpos _target) nearObjects [DISARM_CONTAINER, 3]);
//If a holder exists, show it's inventory //If a holder exists, show it's inventory
if (!isNull _holder) then { if (!isNull _holder) then {

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Shows a list of inventory items in a listBox control. * Shows a list of inventory items in a listBox control.
* *
* Arguments: * Arguments:
@ -17,11 +18,12 @@
#include "script_component.hpp" #include "script_component.hpp"
disableSerialization; disableSerialization;
PARAMS_2(_listBoxCtrl,_itemsCountArray);
private ["_classname", "_count", "_displayName", "_picture"]; private ["_classname", "_count", "_displayName", "_picture"];
params ["_listBoxCtrl", "_itemsCountArray"];
{ {
private "_configPath";
_displayName = ""; _displayName = "";
_picture = ""; _picture = "";
@ -32,20 +34,24 @@ private ["_classname", "_count", "_displayName", "_picture"];
switch (true) do { switch (true) do {
case (isClass (configFile >> "CfgWeapons" >> _classname)): { case (isClass (configFile >> "CfgWeapons" >> _classname)): {
_displayName = getText (configFile >> "CfgWeapons" >> _classname >> "displayName"); _configPath = (configFile >> "CfgWeapons");
_picture = getText (configFile >> "CfgWeapons" >> _classname >> "picture"); _displayName = getText (_configPath >> _classname >> "displayName");
_picture = getText (_configPath >> _classname >> "picture");
}; };
case (isClass (configFile >> "CfgMagazines" >> _classname)): { case (isClass (configFile >> "CfgMagazines" >> _classname)): {
_displayName = getText (configFile >> "CfgMagazines" >> _classname >> "displayName"); _configPath = (configFile >> "CfgMagazines");
_picture = getText (configFile >> "CfgMagazines" >> _classname >> "picture"); _displayName = getText (_configPath >> _classname >> "displayName");
_picture = getText (_configPath >> _classname >> "picture");
}; };
case (isClass (configFile >> "CfgVehicles" >> _classname)): { case (isClass (configFile >> "CfgVehicles" >> _classname)): {
_displayName = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); _configPath = (configFile >> "CfgVehicles");
_picture = getText (configFile >> "CfgVehicles" >> _classname >> "picture"); _displayName = getText (_configPath >> _classname >> "displayName");
_picture = getText (_configPath >> _classname >> "picture");
}; };
case (isClass (configFile >> "CfgGlasses" >> _classname)): { case (isClass (configFile >> "CfgGlasses" >> _classname)): {
_displayName = getText (configFile >> "CfgGlasses" >> _classname >> "displayName"); _configPath = (configFile >> "CfgGlasses");
_picture = getText (configFile >> "CfgGlasses" >> _classname >> "picture"); _displayName = getText (_configPath >> _classname >> "displayName");
_picture = getText (_configPath >> _classname >> "picture");
}; };
default { default {
ERROR(format ["[%1] - bad classname", _classname]); ERROR(format ["[%1] - bad classname", _classname]);

View File

@ -1,5 +1,6 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
*
* Verifies magazines moved with exact ammo counts preserved. * Verifies magazines moved with exact ammo counts preserved.
* Arrays will be in format from magazinesAmmo/magazinesAmmoCargo * Arrays will be in format from magazinesAmmo/magazinesAmmoCargo
* e.g.: [["30Rnd_65x39_caseless_mag",15], ["30Rnd_65x39_caseless_mag",30]] * e.g.: [["30Rnd_65x39_caseless_mag",15], ["30Rnd_65x39_caseless_mag",30]]

View File

@ -22,7 +22,7 @@ class Extended_FiredBIS_EventHandlers {
class Extended_InitPost_EventHandlers { class Extended_InitPost_EventHandlers {
class CAManBase { class CAManBase {
class ADDON { class ADDON {
init = QUOTE([ARR_2(_this select 0, secondaryWeapon (_this select 0))] call FUNC(takeLoadedATWeapon)); init = QUOTE([_this select 0] call FUNC(takeLoadedATWeapon));
}; };
}; };
}; };

View File

@ -12,14 +12,4 @@ class CfgMagazines {
class ACE_FiredMissileDummy: ACE_PreloadedMissileDummy { class ACE_FiredMissileDummy: ACE_PreloadedMissileDummy {
count = 0; count = 0;
}; };
class ACE_UsedTube_F: NLAW_F {
author = ECSTRING(common,ACETeam);
displayName = CSTRING(UsedTube);
descriptionShort = CSTRING(UsedTubeDescription);
displayNameShort = "-";
count = 0;
weaponPoolAvailable = 0;
modelSpecial = "";
mass = 0;
};
}; };

View File

@ -3,9 +3,12 @@
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
["inventoryDisplayLoaded", {[ACE_player, _this select 0] call FUNC(updateInventoryDisplay)}] call EFUNC(common,addEventHandler); ["inventoryDisplayLoaded", {
[ACE_player, _this select 0] call FUNC(updateInventoryDisplay)
}] call EFUNC(common,addEventHandler);
["playerInventoryChanged", { ["playerInventoryChanged", {
params ["_unit", "_items"]; params ["_unit"];
[_unit, _items select 11] call FUNC(takeLoadedATWeapon); [_unit] call FUNC(takeLoadedATWeapon);
[_unit] call FUNC(updateInventoryDisplay); [_unit] call FUNC(updateInventoryDisplay);
}] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler);

View File

@ -1,10 +0,0 @@
// by commy2
// The Arma InventoryOpened EH fires actually before the inventory dialog is opened (findDisplay 602 => displayNull).
#include "script_component.hpp"
["inventoryDisplayLoaded",{
[ACE_player] call FUNC(takeLoadedATWeapon);
[ACE_player, (_this select 0)] call FUNC(updateInventoryDisplay);
}] call EFUNC(common,addEventHandler);

View File

@ -21,14 +21,14 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_replacementTube", "_items"];
params ["_unit", "_weapon", "", "", "", "", "_projectile"]; params ["_unit", "_weapon", "", "", "", "", "_projectile"];
TRACE_3("params",_unit,_weapon,_projectile);
if (!local _unit) exitWith {}; if ((!local _unit) || {_weapon != (secondaryWeapon _unit)}) exitWith {};
private ["_replacementTube", "_items"];
_replacementTube = getText (configFile >> "CfgWeapons" >> _weapon >> "ACE_UsedTube"); _replacementTube = getText (configFile >> "CfgWeapons" >> _weapon >> "ACE_UsedTube");
if (_replacementTube == "") exitWith {}; //If no replacement defined just exit if (_replacementTube == "") exitWith {}; //If no replacement defined just exit
if (_weapon != (secondaryWeapon _unit)) exitWith {}; //just to be sure
//Save array of items attached to launcher //Save array of items attached to launcher

View File

@ -15,17 +15,18 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit", "_launcher", "_config"];
params ["_unit"]; params ["_unit"];
TRACE_1("params",_unit);
if (!local _unit) exitWith {}; if (!local _unit) exitWith {};
private ["_launcher", "_config"];
_launcher = secondaryWeapon _unit; _launcher = secondaryWeapon _unit;
_config = configFile >> "CfgWeapons" >> _launcher; _config = configFile >> "CfgWeapons" >> _launcher;
if (isClass _config && {getText (_config >> "ACE_UsedTube") != ""} && {getNumber (_config >> "ACE_isUsedLauncher") != 1} && {count secondaryWeaponMagazine _unit == 0}) then { if (isClass _config && {getText (_config >> "ACE_UsedTube") != ""} && {getNumber (_config >> "ACE_isUsedLauncher") != 1} && {count secondaryWeaponMagazine _unit == 0}) then {
private ["_magazine", "_isLauncherSelected"]; private ["_magazine", "_isLauncherSelected", "_didAdd"];
_magazine = getArray (_config >> "magazines") select 0; _magazine = getArray (_config >> "magazines") select 0;
@ -35,14 +36,22 @@ if (isClass _config && {getText (_config >> "ACE_UsedTube") != ""} && {getNumber
if (backpack _unit == "") then { if (backpack _unit == "") then {
_unit addBackpack "Bag_Base"; _unit addBackpack "Bag_Base";
_unit addMagazine _magazine; _unit addMagazine _magazine;
_didAdd = _magazine in (magazines _unit);
_unit addWeapon _launcher; _unit addWeapon _launcher;
if (!_didAdd) then {
TRACE_1("Failed To Add Disposable Magazine Normally, doing backup method (no backpack)",_unit);
_unit addSecondaryWeaponItem _magazine;
};
removeBackpack _unit; removeBackpack _unit;
} else { } else {
_unit addMagazine _magazine; _unit addMagazine _magazine;
_didAdd = _magazine in (magazines _unit);
_unit addWeapon _launcher; _unit addWeapon _launcher;
if (!_didAdd) then {
TRACE_2("Failed To Add Disposable Magazine Normally, doing backup method",_unit,(backpack _unit));
_unit addSecondaryWeaponItem _magazine;
};
}; };
if (_isLauncherSelected) then { if (_isLauncherSelected) then {

View File

@ -17,6 +17,7 @@
disableSerialization; disableSerialization;
params ["_player", ["_display",(findDisplay 602),[displayNull]]]; params ["_player", ["_display",(findDisplay 602),[displayNull]]];
TRACE_2("params",_player,_display);
_player removeMagazines "ACE_PreloadedMissileDummy"; _player removeMagazines "ACE_PreloadedMissileDummy";
_player removeMagazines "ACE_FiredMissileDummy"; _player removeMagazines "ACE_FiredMissileDummy";

View File

@ -1,6 +1,8 @@
#define COMPONENT disposable #define COMPONENT disposable
#include "\z\ace\addons\main\script_mod.hpp" #include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
#ifdef DEBUG_ENABLED_ATTACH #ifdef DEBUG_ENABLED_ATTACH
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif

View File

@ -16,10 +16,10 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_2(_sourceUnit,_fingerPosPrecise);
private ["_data", "_fingerPos"]; private ["_data", "_fingerPos"];
params ["_sourceUnit", "_fingerPosPrecise"];
//add some random float to location if it's not our own finger: //add some random float to location if it's not our own finger:
_fingerPos = if (_sourceUnit == ACE_player) then { _fingerPos = if (_sourceUnit == ACE_player) then {
_fingerPosPrecise _fingerPosPrecise

View File

@ -38,7 +38,7 @@ _sendFingerToPlayers = [];
_nearbyMen = (ACE_player nearObjects ["CAManBase", (GVAR(maxRange) + 2)]); _nearbyMen = (ACE_player nearObjects ["CAManBase", (GVAR(maxRange) + 2)]);
{ {
_nearbyMen append (crew _x); _nearbyMen append (crew _x);
} forEach (ACE_player nearObjects ["StaticWeapon", (GVAR(maxRange) + 2)]); } count (ACE_player nearObjects ["StaticWeapon", (GVAR(maxRange) + 2)]);
{ {
if ((((eyePos _x) vectorDistance _playerEyePos) < GVAR(maxRange)) && if ((((eyePos _x) vectorDistance _playerEyePos) < GVAR(maxRange)) &&
@ -50,7 +50,8 @@ _nearbyMen = (ACE_player nearObjects ["CAManBase", (GVAR(maxRange) + 2)]);
_sendFingerToPlayers pushBack _x; _sendFingerToPlayers pushBack _x;
}; };
} forEach _nearbyMen; true
} count _nearbyMen;
TRACE_1("sending finger to",_sendFingerToPlayers); TRACE_1("sending finger to",_sendFingerToPlayers);

View File

@ -13,8 +13,7 @@
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_1(_logic); params ["_logic"];
if !(isServer) exitWith {}; if !(isServer) exitWith {};
[_logic, QGVAR(enabled), "enabled"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(enabled), "enabled"] call EFUNC(common,readSettingFromModule);

View File

@ -30,7 +30,7 @@ _iconSize = BASE_SIZE * _fovCorrection;
{ {
_data = HASH_GET(GVAR(fingersHash), _x); _data = HASH_GET(GVAR(fingersHash), _x);
EXPLODE_3_PVT(_data,_lastTime,_pos,_name); _data params ["_lastTime", "_pos", "_name"];
_timeLeftToShow = _lastTime + FP_TIMEOUT - ACE_diagTime; _timeLeftToShow = _lastTime + FP_TIMEOUT - ACE_diagTime;
if (_timeLeftToShow <= 0) then { if (_timeLeftToShow <= 0) then {
HASH_REM(GVAR(fingersHash), _x); HASH_REM(GVAR(fingersHash), _x);
@ -43,7 +43,7 @@ _iconSize = BASE_SIZE * _fovCorrection;
drawIcon3D [QUOTE(PATHTOF(UI\fp_icon.paa)), _drawColor, _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "PuristaMedium"]; drawIcon3D [QUOTE(PATHTOF(UI\fp_icon.paa)), _drawColor, _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "PuristaMedium"];
}; };
} forEach (GVAR(fingersHash) select 0); } count (GVAR(fingersHash) select 0);
if ((count (GVAR(fingersHash) select 0)) == 0) then { if ((count (GVAR(fingersHash) select 0)) == 0) then {
[GVAR(pfeh_id)] call CBA_fnc_removePerFrameHandler; [GVAR(pfeh_id)] call CBA_fnc_removePerFrameHandler;

View File

@ -2,7 +2,7 @@
#include "script_component.hpp" #include "script_component.hpp"
["flashbangExplosion", {_this call FUNC(flashbangExplosionEH)}] call EFUNC(common,addEventHandler); ["flashbangExplosion", DFUNC(flashbangExplosionEH)] call EFUNC(common,addEventHandler);
if !(hasInterface) exitWith {}; if !(hasInterface) exitWith {};

View File

@ -6,7 +6,7 @@
* 0: The grenade <OBJECT> * 0: The grenade <OBJECT>
* *
* Return Value: * Return Value:
* Nothing * None
* *
* Example: * Example:
* [theGrenade] call ace_grenades_fnc_flashbangExplosionEH * [theGrenade] call ace_grenades_fnc_flashbangExplosionEH
@ -15,9 +15,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_affected", "_strength", "_posGrenade", "_posUnit", "_angleGrenade", "_angleView", "_angleDiff", "_light", "_losCount", "_dirToUnitVector", "_eyeDir", "_eyePos"]; private ["_affected", "_strength", "_posGrenade", "_angleDiff", "_light", "_losCount", "_dirToUnitVector", "_eyeDir", "_eyePos"];
params ["_grenade"];
PARAMS_1(_grenade);
_affected = _grenade nearEntities ["CAManBase", 20]; _affected = _grenade nearEntities ["CAManBase", 20];
@ -34,7 +33,7 @@ _affected = _grenade nearEntities ["CAManBase", 20];
_x setSkill ((skill _x) / 50); _x setSkill ((skill _x) / 50);
[{ [{
PARAMS_1(_unit); params ["_unit"];
//Make sure we don't enable AI for unconscious units //Make sure we don't enable AI for unconscious units
if (!(_unit getVariable ["ace_isunconscious", false])) then { if (!(_unit getVariable ["ace_isunconscious", false])) then {
[_unit, false] call EFUNC(common,disableAI); [_unit, false] call EFUNC(common,disableAI);
@ -48,13 +47,11 @@ _affected = _grenade nearEntities ["CAManBase", 20];
_eyePos = eyePos ACE_player; //PositionASL _eyePos = eyePos ACE_player; //PositionASL
_posGrenade set [2, (_posGrenade select 2) + 0.2]; // compensate for grenade glitching into ground _posGrenade set [2, (_posGrenade select 2) + 0.2]; // compensate for grenade glitching into ground
_losCount = 0;
//Check for line of sight (check 4 points in case grenade is stuck in an object or underground) //Check for line of sight (check 4 points in case grenade is stuck in an object or underground)
{ _losCount = {
if (!lineIntersects [(_posGrenade vectorAdd _x), _eyePos, _grenade, ACE_player]) then { (!lineIntersects [(_posGrenade vectorAdd _x), _eyePos, _grenade, ACE_player])
_losCount = _losCount + 1; } count [[0,0,0], [0,0,0.2], [0.1, 0.1, 0.1], [-0.1, -0.1, 0.1]];
};
} forEach [[0,0,0], [0,0,0.2], [0.1, 0.1, 0.1], [-0.1, -0.1, 0.1]];
TRACE_1("Line of sight count (out of 4)",_losCount); TRACE_1("Line of sight count (out of 4)",_losCount);
if (_losCount <= 1) then { if (_losCount <= 1) then {
_strength = _strength / 10; _strength = _strength / 10;
@ -78,7 +75,6 @@ _affected = _grenade nearEntities ["CAManBase", 20];
TRACE_1("Final strength for player",_strength); TRACE_1("Final strength for player",_strength);
//Add ace_medical pain effect: //Add ace_medical pain effect:
if ((isClass (configFile >> "CfgPatches" >> "ACE_Medical")) && {_strength > 0.1}) then { if ((isClass (configFile >> "CfgPatches" >> "ACE_Medical")) && {_strength > 0.1}) then {
[ACE_player, (_strength / 2)] call EFUNC(medical,adjustPainLevel); [ACE_player, (_strength / 2)] call EFUNC(medical,adjustPainLevel);
@ -93,7 +89,7 @@ _affected = _grenade nearEntities ["CAManBase", 20];
//Delete the light after 0.1 seconds //Delete the light after 0.1 seconds
[{ [{
PARAMS_1(_light); params ["_light"];
deleteVehicle _light; deleteVehicle _light;
}, [_light], 0.1] call EFUNC(common,waitAndExecute); }, [_light], 0.1] call EFUNC(common,waitAndExecute);
@ -105,7 +101,7 @@ _affected = _grenade nearEntities ["CAManBase", 20];
//PARTIALRECOVERY - start decreasing effect over ACE_time //PARTIALRECOVERY - start decreasing effect over ACE_time
[{ [{
PARAMS_1(_strength); params ["_strength"];
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]]; GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength); GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength);
}, [_strength], (7 * _strength), 0] call EFUNC(common,waitAndExecute); }, [_strength], (7 * _strength), 0] call EFUNC(common,waitAndExecute);
@ -117,4 +113,5 @@ _affected = _grenade nearEntities ["CAManBase", 20];
}; };
}; };
}; };
} forEach _affected; true
} count _affected;

View File

@ -6,7 +6,7 @@
* 0: projectile - Flashbang Grenade <OBJECT> * 0: projectile - Flashbang Grenade <OBJECT>
* *
* Return Value: * Return Value:
* Nothing * None
* *
* Example: * Example:
* [theFlashbang] call ace_grenades_fnc_flashbangThrownFuze * [theFlashbang] call ace_grenades_fnc_flashbangThrownFuze
@ -14,8 +14,7 @@
* Public: No * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_projectile"];
PARAMS_1(_projectile);
if (alive _projectile) then { if (alive _projectile) then {
playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400];

View File

@ -3,7 +3,7 @@
* Select the next throwing mode and display message. * Select the next throwing mode and display message.
* *
* Arguments: * Arguments:
* Nothing * None
* *
* Return Value: * Return Value:
* Handeled <BOOL> * Handeled <BOOL>

View File

@ -12,7 +12,7 @@
* 6: projectile - Object of the projectile that was shot <OBJECT> * 6: projectile - Object of the projectile that was shot <OBJECT>
* *
* Return Value: * Return Value:
* Nothing * None
* *
* Example: * Example:
* [clientFiredBIS-XEH] call ace_grenades_fnc_throwGrenade * [clientFiredBIS-XEH] call ace_grenades_fnc_throwGrenade
@ -21,11 +21,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit", "_weapon", "_projectile", "_mode", "_fuzeTime"]; private ["_mode", "_fuzeTime"];
params ["_unit", "_weapon", "", "", "", "", "_projectile"];
_unit = _this select 0;
_weapon = _this select 1;
_projectile = _this select 6;
if (_unit != ACE_player) exitWith {}; if (_unit != ACE_player) exitWith {};
if (_weapon != "Throw") exitWith {}; if (_weapon != "Throw") exitWith {};

View File

@ -1,11 +1,7 @@
// by commy2 // by commy2
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit", "_firer", "_damage"]; params ["_unit", "_firer", "_damage"];
_unit = _this select 0;
_firer = _this select 1;
_damage = _this select 2;
// don't fall on collision damage // don't fall on collision damage
if (_unit == _firer) exitWith {}; if (_unit == _firer) exitWith {};

View File

@ -3,14 +3,14 @@ class ACE_Settings {
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(AlwaysUseCursorSelfInteraction); displayName = CSTRING(AlwaysUseCursorSelfInteraction);
}; };
class GVAR(cursorKeepCentered) { class GVAR(cursorKeepCentered) {
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(cursorKeepCentered); displayName = CSTRING(cursorKeepCentered);
description = CSTRING(cursorKeepCenteredDescription); description = CSTRING(cursorKeepCenteredDescription);
}; };
@ -18,49 +18,49 @@ class ACE_Settings {
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(AlwaysUseCursorInteraction); displayName = CSTRING(AlwaysUseCursorInteraction);
}; };
class GVAR(UseListMenu) { class GVAR(UseListMenu) {
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(UseListMenu); displayName = CSTRING(UseListMenu);
}; };
class GVAR(colorTextMax) { class GVAR(colorTextMax) {
value[] = {1, 1, 1, 1}; value[] = {1, 1, 1, 1};
typeName = "COLOR"; typeName = "COLOR";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(ColorTextMax); displayName = CSTRING(ColorTextMax);
}; };
class GVAR(colorTextMin) { class GVAR(colorTextMin) {
value[] = {1, 1, 1, 0.25}; value[] = {1, 1, 1, 0.25};
typeName = "COLOR"; typeName = "COLOR";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(ColorTextMin); displayName = CSTRING(ColorTextMin);
}; };
class GVAR(colorShadowMax) { class GVAR(colorShadowMax) {
value[] = {0, 0, 0, 1}; value[] = {0, 0, 0, 1};
typeName = "COLOR"; typeName = "COLOR";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(ColorShadowMax); displayName = CSTRING(ColorShadowMax);
}; };
class GVAR(colorShadowMin) { class GVAR(colorShadowMin) {
value[] = {0, 0, 0, 0.25}; value[] = {0, 0, 0, 0.25};
typeName = "COLOR"; typeName = "COLOR";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(ColorShadowMin); displayName = CSTRING(ColorShadowMin);
}; };
class GVAR(textSize) { class GVAR(textSize) {
value = 2; value = 2;
typeName = "SCALAR"; typeName = "SCALAR";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(textSize); displayName = CSTRING(textSize);
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"};
}; };
@ -68,7 +68,7 @@ class ACE_Settings {
value = 2; value = 2;
typeName = "SCALAR"; typeName = "SCALAR";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(shadowSetting); displayName = CSTRING(shadowSetting);
description = CSTRING(shadowSettingDescription); description = CSTRING(shadowSettingDescription);
values[] = {"$STR_A3_OPTIONS_DISABLED", "$STR_A3_OPTIONS_ENABLED", CSTRING(shadowOutline)}; values[] = {"$STR_A3_OPTIONS_DISABLED", "$STR_A3_OPTIONS_ENABLED", CSTRING(shadowOutline)};
@ -77,14 +77,14 @@ class ACE_Settings {
value = 1; value = 1;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(ActionOnKeyRelease); displayName = CSTRING(ActionOnKeyRelease);
}; };
class GVAR(menuBackground) { class GVAR(menuBackground) {
value = 0; value = 0;
typeName = "SCALAR"; typeName = "SCALAR";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(background); displayName = CSTRING(background);
values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(backgroundBlur), CSTRING(backgroundBlack)}; values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(backgroundBlur), CSTRING(backgroundBlack)};
}; };
@ -92,7 +92,7 @@ class ACE_Settings {
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
category = LSTRING(Category_InteractionMenu); category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(addBuildingActions); displayName = CSTRING(addBuildingActions);
description = CSTRING(addBuildingActionsDescription); description = CSTRING(addBuildingActionsDescription);
}; };

View File

@ -4,6 +4,7 @@ ADDON = false;
PREP(addActionToClass); PREP(addActionToClass);
PREP(addActionToObject); PREP(addActionToObject);
PREP(addMainAction);
PREP(compileMenu); PREP(compileMenu);
PREP(compileMenuSelfAction); PREP(compileMenuSelfAction);
PREP(compileMenuZeus); PREP(compileMenuZeus);

View File

@ -19,7 +19,9 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_objectType", "_typeNum", "_parentPath", "_action"]; if (!params [["_objectType", "", [""]], ["_typeNum", 0, [0]], ["_parentPath", [], [[]]], ["_action", [], [[]], 11]]) exitWith {
ERROR("Bad Params");
};
// Ensure the config menu was compiled first // Ensure the config menu was compiled first
if (_typeNum == 0) then { if (_typeNum == 0) then {
@ -35,8 +37,15 @@ if((count _actionTrees) == 0) then {
missionNamespace setVariable [_varName, _actionTrees]; missionNamespace setVariable [_varName, _actionTrees];
}; };
if (_parentPath isEqualTo ["ACE_MainActions"]) then {
[_objectType, _typeNum] call FUNC(addMainAction);
};
_parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode); _parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode);
if (isNil {_parentNode}) exitWith {}; if (isNil {_parentNode}) exitWith {
ERROR("Failed to add action");
diag_log text format ["action (%1) to parent %2 on object %3 [%4]", (_action select 0), _parentPath, _objectType, _typeNum];
};
// Add action node as children of the correct node of action tree // Add action node as children of the correct node of action tree
(_parentNode select 1) pushBack [_action,[]]; (_parentNode select 1) pushBack [_action,[]];

View File

@ -19,7 +19,9 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_object", "_typeNum", "_parentPath", "_action"]; if (!params [["_object", objNull, [objNull]], ["_typeNum", 0, [0]], ["_parentPath", [], [[]]], ["_action", [], [[]], 11]]) exitWith {
ERROR("Bad Params");
};
private ["_varName","_actionList"]; private ["_varName","_actionList"];
_varName = [QGVAR(actions),QGVAR(selfActions)] select _typeNum; _varName = [QGVAR(actions),QGVAR(selfActions)] select _typeNum;
@ -28,6 +30,10 @@ if((count _actionList) == 0) then {
_object setVariable [_varName, _actionList]; _object setVariable [_varName, _actionList];
}; };
if (_parentPath isEqualTo ["ACE_MainActions"]) then {
[(typeOf _object), _typeNum] call FUNC(addMainAction);
};
// Add action and parent path to the list of object actions // Add action and parent path to the list of object actions
_actionList pushBack [_action, +_parentPath]; _actionList pushBack [_action, +_parentPath];

View File

@ -0,0 +1,31 @@
/*
* Author: Jonpas, PabstMirror
* Makes sure there is a ACE_MainActions on the object type
*
* Argument:
* 0: Object classname <STRING>
* 1: Type of action, 0 for actions, 1 for self-actions <NUMBER>
*
* Return value:
* None
*
* Example:
* ["Table", 0] call ace_interact_menu_fnc_addMainAction;
*
* Public: No
*/
#include "script_component.hpp"
params ["_objectType", "_typeNum"];
private["_actionTrees", "_mainAction", "_parentNode", "_varName"];
_varName = format [[QGVAR(Act_%1), QGVAR(SelfAct_%1)] select _typeNum, _objectType];
_actionTrees = missionNamespace getVariable [_varName, []];
_parentNode = [_actionTrees, ["ACE_MainActions"]] call FUNC(findActionNode);
if (isNil {_parentNode}) then {
TRACE_2("No Main Action on object", _objectType, _typeNum);
_mainAction = ["ACE_MainActions", localize ELSTRING(interaction,MainAction), "", {}, {true}] call FUNC(createAction);
[_objectType, _typeNum, [], _mainAction] call EFUNC(interact_menu,addActionToClass);
};

View File

@ -8,7 +8,7 @@
* 1: Path <ARRAY> * 1: Path <ARRAY>
* *
* Return value: * Return value:
* Action node <ARRAY>. * Action node <ARRAY> or <NIL> if not found
* *
* Example: * Example:
* [_actionTree, ["ACE_TapShoulderRight","VulcanPinchAction"]] call ace_interact_menu_fnc_findActionNode; * [_actionTree, ["ACE_TapShoulderRight","VulcanPinchAction"]] call ace_interact_menu_fnc_findActionNode;

View File

@ -24,4 +24,4 @@
}; };
}, },
{false}, {false},
[18, [true, true, true]], false, 0] call CBA_fnc_addKeybind; // (ALT+CTRL+E) [18, [false, true, true]], false, 0] call CBA_fnc_addKeybind; // (ALT+CTRL+E)

View File

@ -125,13 +125,6 @@ class RscDisplayDiary {
}; };
}; };
}; };
// scale up the compass
class objects {
class Compass: RscObject {
scale = 0.7;
zoomDuration = 0;
};
};
}; };
// BRIEFING SCREEN // BRIEFING SCREEN
@ -149,13 +142,6 @@ class RscDisplayGetReady: RscDisplayMainMap {
#include "MapControls.hpp" #include "MapControls.hpp"
}; };
}; };
// scale up the compass
class objects {
class Compass: RscObject {
scale = 0.7;
zoomDuration = 0;
};
};
}; };
class RscDisplayClientGetReady: RscDisplayGetReady { class RscDisplayClientGetReady: RscDisplayGetReady {
// get rid of the "center to player position" - button (as it works even on elite) // get rid of the "center to player position" - button (as it works even on elite)
@ -164,13 +150,6 @@ class RscDisplayClientGetReady: RscDisplayGetReady {
#include "MapControls.hpp" #include "MapControls.hpp"
}; };
}; };
// scale up the compass
class objects {
class Compass: RscObject {
scale = 0.7;
zoomDuration = 0;
};
};
}; };
class RscDisplayServerGetReady: RscDisplayGetReady { class RscDisplayServerGetReady: RscDisplayGetReady {
// get rid of the "center to player position" - button (as it works even on elite) // get rid of the "center to player position" - button (as it works even on elite)
@ -179,11 +158,4 @@ class RscDisplayServerGetReady: RscDisplayGetReady {
#include "MapControls.hpp" #include "MapControls.hpp"
}; };
}; };
// scale up the compass
class objects {
class Compass: RscObject {
scale = 0.7;
zoomDuration = 0;
};
};
}; };

View File

@ -1,116 +1,116 @@
class ACE_Settings { class ACE_Settings {
class GVAR(level) { class GVAR(level) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
value = 1; value = 1;
typeName = "SCALAR"; typeName = "SCALAR";
values[] = {"Disabled", "Basic", "Advanced"}; values[] = {"Disabled", "Basic", "Advanced"};
}; };
class GVAR(medicSetting) { class GVAR(medicSetting) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
value = 1; value = 1;
typeName = "SCALAR"; typeName = "SCALAR";
values[] = {"Disabled", "Normal", "Advanced"}; values[] = {"Disabled", "Normal", "Advanced"};
}; };
class GVAR(enableFor) { class GVAR(enableFor) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
value = 0; value = 0;
typeName = "SCALAR"; typeName = "SCALAR";
values[] = {"Players only", "Players and AI"}; values[] = {"Players only", "Players and AI"};
}; };
class GVAR(enableOverdosing) { class GVAR(enableOverdosing) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(bleedingCoefficient) { class GVAR(bleedingCoefficient) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 1; value = 1;
}; };
class GVAR(painCoefficient) { class GVAR(painCoefficient) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 1; value = 1;
}; };
class GVAR(enableAirway) { class GVAR(enableAirway) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = false; value = false;
}; };
class GVAR(enableFractures) { class GVAR(enableFractures) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = false; value = false;
}; };
class GVAR(enableAdvancedWounds) { class GVAR(enableAdvancedWounds) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = false; value = false;
}; };
class GVAR(enableVehicleCrashes) { class GVAR(enableVehicleCrashes) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(enableScreams) { class GVAR(enableScreams) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(playerDamageThreshold) { class GVAR(playerDamageThreshold) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 1; value = 1;
}; };
class GVAR(AIDamageThreshold) { class GVAR(AIDamageThreshold) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 1; value = 1;
}; };
class GVAR(enableUnconsciousnessAI) { class GVAR(enableUnconsciousnessAI) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
value = 1; value = 1;
typeName = "SCALAR"; typeName = "SCALAR";
values[] = {"Disabled", "50/50", "Enabled"}; values[] = {"Disabled", "50/50", "Enabled"};
}; };
class GVAR(remoteControlledAI) { class GVAR(remoteControlledAI) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(preventInstaDeath) { class GVAR(preventInstaDeath) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(enableRevive) { class GVAR(enableRevive) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 0; value = 0;
values[] = {"Disabled", "Players only", "Players and AI"}; values[] = {"Disabled", "Players only", "Players and AI"};
}; };
class GVAR(maxReviveTime) { class GVAR(maxReviveTime) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 120; value = 120;
}; };
class GVAR(amountOfReviveLives) { class GVAR(amountOfReviveLives) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = -1; value = -1;
}; };
class GVAR(allowDeadBodyMovement) { class GVAR(allowDeadBodyMovement) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(allowLitterCreation) { class GVAR(allowLitterCreation) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(litterSimulationDetail) { class GVAR(litterSimulationDetail) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
displayName = CSTRING(litterSimulationDetail); displayName = CSTRING(litterSimulationDetail);
description = CSTRING(litterSimulationDetail_Desc); description = CSTRING(litterSimulationDetail_Desc);
typeName = "SCALAR"; typeName = "SCALAR";
@ -122,48 +122,48 @@ class ACE_Settings {
isClientSettable = 1; isClientSettable = 1;
}; };
class GVAR(litterCleanUpDelay) { class GVAR(litterCleanUpDelay) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 0; value = 0;
}; };
class GVAR(medicSetting_PAK) { class GVAR(medicSetting_PAK) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 1; value = 1;
values[] = {"Anyone", "Medics only", "Doctors only"}; values[] = {"Anyone", "Medics only", "Doctors only"};
}; };
class GVAR(medicSetting_SurgicalKit) { class GVAR(medicSetting_SurgicalKit) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 1; value = 1;
values[] = {"Anyone", "Medics only", "Doctors only"}; values[] = {"Anyone", "Medics only", "Doctors only"};
}; };
class GVAR(consumeItem_PAK) { class GVAR(consumeItem_PAK) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 0; value = 0;
values[] = {"No", "Yes"}; values[] = {"No", "Yes"};
}; };
class GVAR(consumeItem_SurgicalKit) { class GVAR(consumeItem_SurgicalKit) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 0; value = 0;
values[] = {"No", "Yes"}; values[] = {"No", "Yes"};
}; };
class GVAR(useLocation_PAK) { class GVAR(useLocation_PAK) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 3; value = 3;
values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"};
}; };
class GVAR(useLocation_SurgicalKit) { class GVAR(useLocation_SurgicalKit) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 2; value = 2;
values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"};
}; };
class GVAR(useCondition_PAK) { class GVAR(useCondition_PAK) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName); displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description); description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description);
typeName = "SCALAR"; typeName = "SCALAR";
@ -171,7 +171,7 @@ class ACE_Settings {
values[] = {"Anytime", "Stable"}; values[] = {"Anytime", "Stable"};
}; };
class GVAR(useCondition_SurgicalKit) { class GVAR(useCondition_SurgicalKit) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description);
typeName = "SCALAR"; typeName = "SCALAR";
@ -179,24 +179,24 @@ class ACE_Settings {
values[] = {"Anytime", "Stable"}; values[] = {"Anytime", "Stable"};
}; };
class GVAR(keepLocalSettingsSynced) { class GVAR(keepLocalSettingsSynced) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(healHitPointAfterAdvBandage) { class GVAR(healHitPointAfterAdvBandage) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
displayName = CSTRING(healHitPointAfterAdvBandage); displayName = CSTRING(healHitPointAfterAdvBandage);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(painIsOnlySuppressed) { class GVAR(painIsOnlySuppressed) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
displayName = CSTRING(painIsOnlySuppressed); displayName = CSTRING(painIsOnlySuppressed);
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(painEffectType) { class GVAR(painEffectType) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
displayName = CSTRING(painEffectType); displayName = CSTRING(painEffectType);
typeName = "SCALAR"; typeName = "SCALAR";
value = 0; value = 0;
@ -204,18 +204,18 @@ class ACE_Settings {
isClientSettable = 1; isClientSettable = 1;
}; };
class GVAR(allowUnconsciousAnimationOnTreatment) { class GVAR(allowUnconsciousAnimationOnTreatment) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(moveUnitsFromGroupOnUnconscious) { class GVAR(moveUnitsFromGroupOnUnconscious) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(menuTypeStyle) { class GVAR(menuTypeStyle) {
category = LSTRING(Category_Medical); category = CSTRING(Category_Medical);
displayName = CSTRING(menuTypeDisplay); displayName = CSTRING(menuTypeDisplay);
description = CSTRING(menuTypeDescription); description = CSTRING(menuTypeDescription);
typeName = "SCALAR"; typeName = "SCALAR";

View File

@ -1,4 +1,4 @@
<?xml version="1.0"encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Project name="Combat Space Enhancement"> <Project name="Combat Space Enhancement">
<Package name="Combat Medical System"> <Package name="Combat Medical System">
<Container name="UI"> <Container name="UI">
@ -33,354 +33,349 @@
<English>Configure the usage of the Medical Menu</English> <English>Configure the usage of the Medical Menu</English>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_EXAMINE_TREATMENT"> <Key ID="STR_ACE_Medical_Menu_EXAMINE_TREATMENT">
<Original>EXAMINE &amp; TREATMENT</Original>
<Russian>ОСМОТР И ЛЕЧЕНИЕ</Russian>
<English>EXAMINE &amp; TREATMENT</English> <English>EXAMINE &amp; TREATMENT</English>
<Russian>ОСМОТР И ЛЕЧЕНИЕ</Russian>
<Spanish>EXAMINAR &amp; TRATAMIENTO</Spanish> <Spanish>EXAMINAR &amp; TRATAMIENTO</Spanish>
<French>EXAMINER &amp; TRAITEMENTS</French> <French>EXAMINER &amp; TRAITEMENTS</French>
<Polish>BADANIE &amp; LECZENIE</Polish> <Polish>BADANIE &amp; LECZENIE</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_STATUS"> <Key ID="STR_ACE_Medical_Menu_STATUS">
<Original>STATUS</Original>
<Russian>СОСТОЯНИЕ</Russian>
<English>STATUS</English> <English>STATUS</English>
<Russian>СОСТОЯНИЕ</Russian>
<Spanish>ESTADO</Spanish> <Spanish>ESTADO</Spanish>
<French>ÉTATS</French> <French>ÉTATS</French>
<Polish>STATUS</Polish> <Polish>STATUS</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_OVERVIEW"> <Key ID="STR_ACE_Medical_Menu_OVERVIEW">
<Original>OVERVIEW</Original>
<Russian>ОБЩАЯ ИНФОРМАЦИЯ</Russian>
<English>OVERVIEW</English> <English>OVERVIEW</English>
<Russian>ОБЩАЯ ИНФОРМАЦИЯ</Russian>
<Spanish>DESCRIPCIÓN</Spanish> <Spanish>DESCRIPCIÓN</Spanish>
<French>DESCRIPTION</French> <French>DESCRIPTION</French>
<Polish>OPIS</Polish> <Polish>OPIS</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_ACTIVITY_LOG"> <Key ID="STR_ACE_Medical_Menu_ACTIVITY_LOG">
<Original>ACTIVITY LOG</Original>
<Russian>ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ</Russian>
<English>ACTIVITY LOG</English> <English>ACTIVITY LOG</English>
<Russian>ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ</Russian>
<Spanish>REGISTRO DE ACTIVIDAD</Spanish> <Spanish>REGISTRO DE ACTIVIDAD</Spanish>
<French>REGISTRE DES SOINS</French> <French>REGISTRE DES SOINS</French>
<Polish>LOGI AKTYWNOŚCI</Polish> <Polish>LOGI AKTYWNOŚCI</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_QUICK_VIEW"> <Key ID="STR_ACE_Medical_Menu_QUICK_VIEW">
<Original>QUICK VIEW</Original>
<Russian>БЫСТРЫЙ ОСМОТР</Russian>
<English>QUICK VIEW</English> <English>QUICK VIEW</English>
<Russian>БЫСТРЫЙ ОСМОТР</Russian>
<Spanish>VISTA RÁPIDA</Spanish> <Spanish>VISTA RÁPIDA</Spanish>
<French>VUE RAPIDE</French> <French>VUE RAPIDE</French>
<Polish>SZYBKI PODGLĄD</Polish> <Polish>SZYBKI PODGLĄD</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_TRIAGE_NONE"> <Key ID="STR_ACE_Medical_Menu_TRIAGE_NONE">
<Original>None</Original> <English>None</English>
<Russian>Не ранен</Russian> <Russian>Не ранен</Russian>
<Spanish>Ninguno</Spanish> <Spanish>Ninguno</Spanish>
<French>Aucun</French> <French>Aucun</French>
<Polish>Brak</Polish> <Polish>Brak</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_TRIAGE_MINOR"> <Key ID="STR_ACE_Medical_Menu_TRIAGE_MINOR">
<Original>Minor</Original> <English>Minor</English>
<Russian>Несрочная помощь</Russian> <Russian>Несрочная помощь</Russian>
<Spanish>Menor</Spanish> <Spanish>Menor</Spanish>
<French>Mineur</French> <French>Mineur</French>
<Polish>Normalny</Polish> <Polish>Normalny</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_TRIAGE_DELAYED"> <Key ID="STR_ACE_Medical_Menu_TRIAGE_DELAYED">
<Original>Delayed</Original> <English>Delayed</English>
<Russian>Срочная помощь</Russian> <Russian>Срочная помощь</Russian>
<Spanish>Diferido</Spanish> <Spanish>Diferido</Spanish>
<French>Urgent</French> <French>Urgent</French>
<Polish>Opóźniony</Polish> <Polish>Opóźniony</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_TRIAGE_IMMEDIATE"> <Key ID="STR_ACE_Medical_Menu_TRIAGE_IMMEDIATE">
<Original>Immediate</Original> <English>Immediate</English>
<Russian>Неотложная помощь</Russian> <Russian>Неотложная помощь</Russian>
<Spanish>Inmediato</Spanish> <Spanish>Inmediato</Spanish>
<French>Immédiat</French> <French>Immédiat</French>
<Polish>Natychmiastowy</Polish> <Polish>Natychmiastowy</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_TRIAGE_DECEASED"> <Key ID="STR_ACE_Medical_Menu_TRIAGE_DECEASED">
<Original>Deceased</Original> <English>Deceased</English>
<Russian>Морг</Russian> <Russian>Морг</Russian>
<Spanish>Fallecido</Spanish> <Spanish>Fallecido</Spanish>
<French>Décédé</French> <French>Décédé</French>
<Polish>Nie żyje</Polish> <Polish>Nie żyje</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_VIEW_TRIAGE_CARD"> <Key ID="STR_ACE_Medical_Menu_VIEW_TRIAGE_CARD">
<Original>View triage Card</Original> <English>View triage Card</English>
<Russian>Смотреть первичную карточку</Russian> <Russian>Смотреть первичную карточку</Russian>
<Spanish>Ver Triage</Spanish> <Spanish>Ver Triage</Spanish>
<French>Voir Carte de Triage</French> <French>Voir Carte de Triage</French>
<Polish>Pokaż kartę segregacyjną</Polish> <Polish>Pokaż kartę segregacyjną</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_EXAMINE_PATIENT"> <Key ID="STR_ACE_Medical_Menu_EXAMINE_PATIENT">
<Original>Examine Patient</Original> <English>Examine Patient</English>
<Russian>Осмотреть пациента</Russian> <Russian>Осмотреть пациента</Russian>
<Spanish>Examinar Paciente</Spanish> <Spanish>Examinar Paciente</Spanish>
<French>Examiner Patient</French> <French>Examiner Patient</French>
<Polish>Zbadaj pacjenta</Polish> <Polish>Zbadaj pacjenta</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_BANDAGE_FRACTURES"> <Key ID="STR_ACE_Medical_Menu_BANDAGE_FRACTURES">
<Original>Bandage / Fractures</Original> <English>Bandage / Fractures</English>
<Russian>Раны / переломы</Russian> <Russian>Раны / переломы</Russian>
<Spanish>Vendajes/Fracturas </Spanish> <Spanish>Vendajes/Fracturas </Spanish>
<French>Bandages / Fractures</French> <French>Bandages / Fractures</French>
<Polish>Bandaże / Złamania</Polish> <Polish>Bandaże / Złamania</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_MEDICATION"> <Key ID="STR_ACE_Medical_Menu_MEDICATION">
<Original>Medication</Original> <English>Medication</English>
<Russian>Медикаменты</Russian> <Russian>Медикаменты</Russian>
<Spanish>Medicación</Spanish> <Spanish>Medicación</Spanish>
<French>Médications</French> <French>Médications</French>
<Polish>Leki</Polish> <Polish>Leki</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_AIRWAY_MANAGEMENT"> <Key ID="STR_ACE_Medical_Menu_AIRWAY_MANAGEMENT">
<Original>Airway Management</Original> <English>Airway Management</English>
<Russian>Дыхательные пути</Russian> <Russian>Дыхательные пути</Russian>
<Spanish>Vías Aéreas</Spanish> <Spanish>Vías Aéreas</Spanish>
<French>Gestion Des Voie REspiratoire</French> <French>Gestion Des Voie REspiratoire</French>
<Polish>Drogi oddechowe</Polish> <Polish>Drogi oddechowe</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_ADVANCED_TREATMENT"> <Key ID="STR_ACE_Medical_Menu_ADVANCED_TREATMENT">
<Original>Advanced Treatments</Original> <English>Advanced Treatments</English>
<Russian>Специальная медпомощь</Russian> <Russian>Специальная медпомощь</Russian>
<Spanish>Tratamientos Avanzados</Spanish> <Spanish>Tratamientos Avanzados</Spanish>
<French>Traitement Avancé</French> <French>Traitement Avancé</French>
<Polish>Zaawansowane zabiegi</Polish> <Polish>Zaawansowane zabiegi</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_DRAG_CARRY"> <Key ID="STR_ACE_Medical_Menu_DRAG_CARRY">
<Original>Drag/Carry</Original> <English>Drag/Carry</English>
<Russian>Тащить/нести</Russian> <Russian>Тащить/нести</Russian>
<Spanish>Arrastrar/Cargar</Spanish> <Spanish>Arrastrar/Cargar</Spanish>
<French>Glisser/Porter</French> <French>Glisser/Porter</French>
<Polish>Ciągnij/Nieś</Polish> <Polish>Ciągnij/Nieś</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_TOGGLE_SELF"> <Key ID="STR_ACE_Medical_Menu_TOGGLE_SELF">
<Original>Toggle (Self)</Original> <English>Toggle (Self)</English>
<Russian>Лечить себя/другого раненого</Russian> <Russian>Лечить себя/другого раненого</Russian>
<French>Activer (sois)</French> <French>Activer (sois)</French>
<Polish>Przełącz (na siebie)</Polish> <Polish>Przełącz (na siebie)</Polish>
<Spanish>Alternar</Spanish> <Spanish>Alternar</Spanish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SELECT_TRIAGE_STATUS"> <Key ID="STR_ACE_Medical_Menu_SELECT_TRIAGE_STATUS">
<Original>Select triage status</Original> <English>Select triage status</English>
<Russian>Сортировка</Russian> <Russian>Сортировка</Russian>
<Spanish>Seleccionar estado de Triage</Spanish> <Spanish>Seleccionar estado de Triage</Spanish>
<French>Selectioner l'état de Triage</French> <French>Selectioner l'état de Triage</French>
<Polish>Wybierz priorytet</Polish> <Polish>Wybierz priorytet</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SELECT_HEAD"> <Key ID="STR_ACE_Medical_Menu_SELECT_HEAD">
<Original>Select Head</Original> <English>Select Head</English>
<Russian>Выбрать голову</Russian> <Russian>Выбрать голову</Russian>
<Spanish>Seleccionar Cabeza</Spanish> <Spanish>Seleccionar Cabeza</Spanish>
<French>Selectioner Tête</French> <French>Selectioner Tête</French>
<Polish>Wybierz głowę</Polish> <Polish>Wybierz głowę</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SELECT_TORSO"> <Key ID="STR_ACE_Medical_Menu_SELECT_TORSO">
<Original>Select Torso</Original> <English>Select Torso</English>
<Russian>Выбрать торс</Russian> <Russian>Выбрать торс</Russian>
<Spanish>Seleccionar Torso</Spanish> <Spanish>Seleccionar Torso</Spanish>
<French>Selectioner Torse</French> <French>Selectioner Torse</French>
<Polish>Wybierz tors</Polish> <Polish>Wybierz tors</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SELECT_ARM_L"> <Key ID="STR_ACE_Medical_Menu_SELECT_ARM_L">
<Original>Select Left Arm</Original> <English>Select Left Arm</English>
<Russian>Выбрать левую руку</Russian> <Russian>Выбрать левую руку</Russian>
<Spanish>Seleccionar Brazo Izquierdo</Spanish> <Spanish>Seleccionar Brazo Izquierdo</Spanish>
<French>Selectioner Bras Gauche</French> <French>Selectioner Bras Gauche</French>
<Polish>Wybierz lewą rękę</Polish> <Polish>Wybierz lewą rękę</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SELECT_ARM_R"> <Key ID="STR_ACE_Medical_Menu_SELECT_ARM_R">
<Original>Select Right Arm</Original> <English>Select Right Arm</English>
<Russian>Выбрать правую руку</Russian> <Russian>Выбрать правую руку</Russian>
<Spanish>Seleccionar Brazo Derecho</Spanish> <Spanish>Seleccionar Brazo Derecho</Spanish>
<French>Selectioner Bras Droit</French> <French>Selectioner Bras Droit</French>
<Polish>Wybierz prawą rękę</Polish> <Polish>Wybierz prawą rękę</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SELECT_LEG_L"> <Key ID="STR_ACE_Medical_Menu_SELECT_LEG_L">
<Original>Select Left Leg</Original> <English>Select Left Leg</English>
<Russian>Выбрать левую ногу</Russian> <Russian>Выбрать левую ногу</Russian>
<Spanish>Seleccionar Pierna Izquierda</Spanish> <Spanish>Seleccionar Pierna Izquierda</Spanish>
<French>Selectioner Jambe Gauche</French> <French>Selectioner Jambe Gauche</French>
<Polish>Wybierz lewą nogę</Polish> <Polish>Wybierz lewą nogę</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SELECT_LEG_R"> <Key ID="STR_ACE_Medical_Menu_SELECT_LEG_R">
<Original>Select Right Leg</Original> <English>Select Right Leg</English>
<Russian>Выбрать правую ногу</Russian> <Russian>Выбрать правую ногу</Russian>
<Spanish>Seleccionar Pierna Derecha</Spanish> <Spanish>Seleccionar Pierna Derecha</Spanish>
<French>Selectioner Jambe Droite</French> <French>Selectioner Jambe Droite</French>
<Polish>Wybierz prawą nogę</Polish> <Polish>Wybierz prawą nogę</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_HEAD"> <Key ID="STR_ACE_Medical_Menu_HEAD">
<Original>Head</Original> <English>Head</English>
<Russian>Голова</Russian> <Russian>Голова</Russian>
<Spanish>Cabeza</Spanish> <Spanish>Cabeza</Spanish>
<French>Tête</French> <French>Tête</French>
<Polish>Głowa</Polish> <Polish>Głowa</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_TORSO"> <Key ID="STR_ACE_Medical_Menu_TORSO">
<Original>Torso</Original> <English>Torso</English>
<Russian>Торс</Russian> <Russian>Торс</Russian>
<French>Torse</French> <French>Torse</French>
<Polish>Tors</Polish> <Polish>Tors</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_ARM_L"> <Key ID="STR_ACE_Medical_Menu_ARM_L">
<Original>Left Arm</Original> <English>Left Arm</English>
<Russian>Левая рука</Russian> <Russian>Левая рука</Russian>
<Spanish>Brazo Izquierdo</Spanish> <Spanish>Brazo Izquierdo</Spanish>
<French>Bras Gauche</French> <French>Bras Gauche</French>
<Polish>Lewa ręka</Polish> <Polish>Lewa ręka</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_ARM_R"> <Key ID="STR_ACE_Medical_Menu_ARM_R">
<Original>Right Arm</Original> <English>Right Arm</English>
<Russian>Правая рука</Russian> <Russian>Правая рука</Russian>
<Spanish>Brazo Derecho</Spanish> <Spanish>Brazo Derecho</Spanish>
<French>Bras Droit</French> <French>Bras Droit</French>
<Polish>Prawa ręka</Polish> <Polish>Prawa ręka</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_LEG_L"> <Key ID="STR_ACE_Medical_Menu_LEG_L">
<Original>Left Leg</Original> <English>Left Leg</English>
<Russian>Левая нога</Russian> <Russian>Левая нога</Russian>
<Spanish>Pierna Izquierda</Spanish> <Spanish>Pierna Izquierda</Spanish>
<French>Jambe Gauche</French> <French>Jambe Gauche</French>
<Polish>Lewa noga</Polish> <Polish>Lewa noga</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_LEG_R"> <Key ID="STR_ACE_Medical_Menu_LEG_R">
<Original>Right Leg</Original> <English>Right Leg</English>
<Russian>Правая нога</Russian> <Russian>Правая нога</Russian>
<Spanish>Pierna Derecha</Spanish> <Spanish>Pierna Derecha</Spanish>
<French>Jambe Droite</French> <French>Jambe Droite</French>
<Polish>Prawa noga</Polish> <Polish>Prawa noga</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SELECTED_BODY_PART"> <Key ID="STR_ACE_Medical_Menu_SELECTED_BODY_PART">
<Original>Body Part: %1</Original> <English>Body Part: %1</English>
<Russian>Часть тела: %1</Russian> <Russian>Часть тела: %1</Russian>
<Spanish>Parte del cuerpo: %1</Spanish> <Spanish>Parte del cuerpo: %1</Spanish>
<French>Partie du corps: %1</French> <French>Partie du corps: %1</French>
<Polish>Część ciała: %1</Polish> <Polish>Część ciała: %1</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SMALL"> <Key ID="STR_ACE_Medical_Menu_SMALL">
<Original>Small</Original> <English>Small</English>
<Russian>малого размера</Russian> <Russian>малого размера</Russian>
<Spanish>Pequeña</Spanish> <Spanish>Pequeña</Spanish>
<French>Petite</French> <French>Petite</French>
<Polish>małym</Polish> <Polish>małym</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_MEDIUM"> <Key ID="STR_ACE_Medical_Menu_MEDIUM">
<Original>Medium</Original> <English>Medium</English>
<Russian>среднего размера</Russian> <Russian>среднего размера</Russian>
<Spanish>Mediana</Spanish> <Spanish>Mediana</Spanish>
<French>moyenne</French> <French>moyenne</French>
<Polish>średnim</Polish> <Polish>średnim</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_LARGE"> <Key ID="STR_ACE_Medical_Menu_LARGE">
<Original>Large</Original> <English>Large</English>
<Russian>большого размера</Russian> <Russian>большого размера</Russian>
<Spanish>Grande</Spanish> <Spanish>Grande</Spanish>
<French>Grande</French> <French>Grande</French>
<Polish>dużym</Polish> <Polish>dużym</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_MULTIPLE_OPEN_WOUNDS"> <Key ID="STR_ACE_Medical_Menu_MULTIPLE_OPEN_WOUNDS">
<Original>There are %2 %1 Open Wounds</Original> <English>There are %2 %1 Open Wounds</English>
<Russian>%2 открытые раны %1</Russian> <Russian>%2 открытые раны %1</Russian>
<Spanish>Hay %2 Heridas Abiertas %1</Spanish> <Spanish>Hay %2 Heridas Abiertas %1</Spanish>
<French>Il y a %2 %1 Blessure Ouverte</French> <French>Il y a %2 %1 Blessure Ouverte</French>
<Polish>Widzisz otwarte rany w ilości %2 o %1 rozmiarze</Polish> <Polish>Widzisz otwarte rany w ilości %2 o %1 rozmiarze</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SINGLE_OPEN_WOUND"> <Key ID="STR_ACE_Medical_Menu_SINGLE_OPEN_WOUND">
<Original>There is 1 %1 Open Wound</Original> <English>There is 1 %1 Open Wound</English>
<Russian>Открытая рана %1</Russian> <Russian>Открытая рана %1</Russian>
<Spanish>Hay 1 Herida Abierta %1</Spanish> <Spanish>Hay 1 Herida Abierta %1</Spanish>
<French>Il y a 1 blessure ouverte %1</French> <French>Il y a 1 blessure ouverte %1</French>
<Polish>Widzisz 1 otwartą ranę o %1 rozmiarze</Polish> <Polish>Widzisz 1 otwartą ranę o %1 rozmiarze</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_PARTIAL_OPEN_WOUND"> <Key ID="STR_ACE_Medical_Menu_PARTIAL_OPEN_WOUND">
<Original>There is a partial %1 Open wound</Original> <English>There is a partial %1 Open wound</English>
<Russian>Частично открытая рана %1</Russian> <Russian>Частично открытая рана %1</Russian>
<Spanish>Hay una herida parcial abierta %1</Spanish> <Spanish>Hay una herida parcial abierta %1</Spanish>
<French>Il y a une Blessure Patiellement Ouverte %1</French> <French>Il y a une Blessure Patiellement Ouverte %1</French>
<Polish>Widzisz częściowo otwartą ranę o %1 rozmiarze</Polish> <Polish>Widzisz częściowo otwartą ranę o %1 rozmiarze</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_MULTIPLE_BANDAGED_WOUNDS"> <Key ID="STR_ACE_Medical_Menu_MULTIPLE_BANDAGED_WOUNDS">
<Original>There are %2 %1 Bandaged Wounds</Original> <English>There are %2 %1 Bandaged Wounds</English>
<Russian>%2 перевязанные раны %1</Russian> <Russian>%2 перевязанные раны %1</Russian>
<Spanish>Hay %2 Heridas %1 Vendadas</Spanish> <Spanish>Hay %2 Heridas %1 Vendadas</Spanish>
<French>Il y a %2 %1 Blessure Bandée</French> <French>Il y a %2 %1 Blessure Bandée</French>
<Polish>Widzisz %2 zabandażowanych ran o %1 rozmiarze</Polish> <Polish>Widzisz %2 zabandażowanych ran o %1 rozmiarze</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_SINGLE_BANDAGED_WOUND"> <Key ID="STR_ACE_Medical_Menu_SINGLE_BANDAGED_WOUND">
<Original>There is 1 %1 Bandaged Wound</Original> <English>There is 1 %1 Bandaged Wound</English>
<Russian>1 перевязанная рана %1</Russian> <Russian>1 перевязанная рана %1</Russian>
<Spanish>Hay 1 Herida Vendada %1</Spanish> <Spanish>Hay 1 Herida Vendada %1</Spanish>
<French>Il y a 1 %1 Blessure Bandée</French> <French>Il y a 1 %1 Blessure Bandée</French>
<Polish>Widzisz 1 zabandażowaną ranę o %1 rozmiarze</Polish> <Polish>Widzisz 1 zabandażowaną ranę o %1 rozmiarze</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_PARTIAL_BANDAGED_WOUND"> <Key ID="STR_ACE_Medical_Menu_PARTIAL_BANDAGED_WOUND">
<Original>There is a partial %1 Bandaged wound</Original> <English>There is a partial %1 Bandaged wound</English>
<Russian>Частично перевязанная рана %1</Russian> <Russian>Частично перевязанная рана %1</Russian>
<Spanish>Hay una Herida parcial %1 Vendada</Spanish> <Spanish>Hay una Herida parcial %1 Vendada</Spanish>
<French>Il y a %1 Blessure Partielment Bandée</French> <French>Il y a %1 Blessure Partielment Bandée</French>
<Polish>Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze</Polish> <Polish>Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_NORMAL_BREATHING"> <Key ID="STR_ACE_Medical_Menu_NORMAL_BREATHING">
<Original>Normal breathing</Original> <English>Normal breathing</English>
<Russian>Дыхание в норме</Russian> <Russian>Дыхание в норме</Russian>
<Spanish>Respiración normal</Spanish> <Spanish>Respiración normal</Spanish>
<French>Respiration Normale</French> <French>Respiration Normale</French>
<Polish>Normalny oddech</Polish> <Polish>Normalny oddech</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_NO_BREATHING"> <Key ID="STR_ACE_Medical_Menu_NO_BREATHING">
<Original>No breathing</Original> <English>No breathing</English>
<Russian>Дыхания нет</Russian> <Russian>Дыхания нет</Russian>
<Spanish>No respira</Spanish> <Spanish>No respira</Spanish>
<French>Apnée</French> <French>Apnée</French>
<Polish>Brak oddechu</Polish> <Polish>Brak oddechu</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_DIFFICULT_BREATHING"> <Key ID="STR_ACE_Medical_Menu_DIFFICULT_BREATHING">
<Original>Difficult breathing</Original> <English>Difficult breathing</English>
<Russian>Дыхание затруднено</Russian> <Russian>Дыхание затруднено</Russian>
<Spanish>Dificultad para respirar</Spanish> <Spanish>Dificultad para respirar</Spanish>
<French>Difficultée Respiratoire</French> <French>Difficultée Respiratoire</French>
<Polish>Trudności z oddychaniem</Polish> <Polish>Trudności z oddychaniem</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_ALMOST_NO_BREATHING"> <Key ID="STR_ACE_Medical_Menu_ALMOST_NO_BREATHING">
<Original>Almost no breathing</Original> <English>Almost no breathing</English>
<Russian>Дыхания почти нет</Russian> <Russian>Дыхания почти нет</Russian>
<Spanish>Casi sin respirar</Spanish> <Spanish>Casi sin respirar</Spanish>
<French>Respiration Faible</French> <French>Respiration Faible</French>
<Polish>Prawie brak oddechu</Polish> <Polish>Prawie brak oddechu</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_STATUS_BLEEDING"> <Key ID="STR_ACE_Medical_Menu_STATUS_BLEEDING">
<Original>Bleeding</Original> <English>Bleeding</English>
<Russian>Кровотечение</Russian> <Russian>Кровотечение</Russian>
<Spanish>Sangrando</Spanish> <Spanish>Sangrando</Spanish>
<French>Seignement</French> <French>Seignement</French>
<Polish>Krwawienie zewnętrzne</Polish> <Polish>Krwawienie zewnętrzne</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_STATUS_PAIN"> <Key ID="STR_ACE_Medical_Menu_STATUS_PAIN">
<Original>in Pain</Original> <English>in Pain</English>
<Russian>Испытывает боль</Russian> <Russian>Испытывает боль</Russian>
<Spanish>Con Dolor</Spanish> <Spanish>Con Dolor</Spanish>
<French>A De La Douleur</French> <French>A De La Douleur</French>
<Polish>W bólu</Polish> <Polish>W bólu</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_STATUS_LOST_BLOOD"> <Key ID="STR_ACE_Medical_Menu_STATUS_LOST_BLOOD">
<Original>Lost a lot of Blood</Original> <English>Lost a lot of Blood</English>
<Russian>Большая кровопотеря</Russian> <Russian>Большая кровопотеря</Russian>
<Spanish>Mucha Sangre perdida</Spanish> <Spanish>Mucha Sangre perdida</Spanish>
<French>A Perdu Bcp de Sang</French> <French>A Perdu Bcp de Sang</French>
<Polish>Stracił dużo krwi</Polish> <Polish>Stracił dużo krwi</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_STATUS_TOURNIQUET_APPLIED"> <Key ID="STR_ACE_Medical_Menu_STATUS_TOURNIQUET_APPLIED">
<Original>Tourniquet [CAT]</Original> <English>Tourniquet [CAT]</English>
<Russian>Жгут</Russian> <Russian>Жгут</Russian>
<Spanish>Torniquete [CAT]</Spanish> <Spanish>Torniquete [CAT]</Spanish>
<French>Garot [CAT]</French> <French>Garot [CAT]</French>
<Polish>Opaska uciskowa [CAT]</Polish> <Polish>Opaska uciskowa [CAT]</Polish>
</Key> </Key>
<Key ID="STR_ACE_Medical_Menu_STATUS_NPA_APPLIED"> <Key ID="STR_ACE_Medical_Menu_STATUS_NPA_APPLIED">
<Original>Nasopharyngeal Tube [NPA]</Original> <English>Nasopharyngeal Tube [NPA]</English>
<Russian>Назотрахеальная трубка</Russian> <Russian>Назотрахеальная трубка</Russian>
<Spanish>Torniquete [CAT]</Spanish> <Spanish>Torniquete [CAT]</Spanish>
<French>Canule Naseaupharyngée [NPA]</French> <French>Canule Naseaupharyngée [NPA]</French>

View File

@ -4,6 +4,7 @@ class ACE_Settings {
typeName = "COLOR"; typeName = "COLOR";
isClientSettable = 1; isClientSettable = 1;
displayName = CSTRING(DefaultNametagColor); displayName = CSTRING(DefaultNametagColor);
category = CSTRING(Module_DisplayName);
}; };
class GVAR(showPlayerNames) { class GVAR(showPlayerNames) {
value = 1; value = 1;
@ -12,29 +13,34 @@ class ACE_Settings {
displayName = CSTRING(ShowPlayerNames); displayName = CSTRING(ShowPlayerNames);
description = CSTRING(ShowPlayerNames_Desc); description = CSTRING(ShowPlayerNames_Desc);
values[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled), CSTRING(OnlyCursor), CSTRING(OnlyKeypress), CSTRING(OnlyCursorAndKeypress)}; values[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled), CSTRING(OnlyCursor), CSTRING(OnlyKeypress), CSTRING(OnlyCursorAndKeypress)};
category = CSTRING(Module_DisplayName);
}; };
class GVAR(showPlayerRanks) { class GVAR(showPlayerRanks) {
value = 1; value = 1;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
displayName = CSTRING(ShowPlayerRanks); displayName = CSTRING(ShowPlayerRanks);
category = CSTRING(Module_DisplayName);
}; };
class GVAR(showVehicleCrewInfo) { class GVAR(showVehicleCrewInfo) {
value = 1; value = 1;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
displayName = CSTRING(ShowVehicleCrewInfo); displayName = CSTRING(ShowVehicleCrewInfo);
category = CSTRING(Module_DisplayName);
}; };
class GVAR(showNamesForAI) { class GVAR(showNamesForAI) {
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 1; isClientSettable = 1;
displayName = CSTRING(ShowNamesForAI); displayName = CSTRING(ShowNamesForAI);
category = CSTRING(Module_DisplayName);
}; };
class GVAR(showCursorTagForVehicles) { class GVAR(showCursorTagForVehicles) {
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
isClientSettable = 0; isClientSettable = 0;
category = CSTRING(Module_DisplayName);
}; };
class GVAR(showSoundWaves) { class GVAR(showSoundWaves) {
value = 1; value = 1;
@ -43,16 +49,19 @@ class ACE_Settings {
displayName = CSTRING(ShowSoundWaves); displayName = CSTRING(ShowSoundWaves);
description = CSTRING(ShowSoundWaves_Desc); description = CSTRING(ShowSoundWaves_Desc);
values[] = {ECSTRING(common,Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)}; values[] = {ECSTRING(common,Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)};
category = CSTRING(Module_DisplayName);
}; };
class GVAR(playerNamesViewDistance) { class GVAR(playerNamesViewDistance) {
value = 5; value = 5;
typeName = "SCALAR"; typeName = "SCALAR";
isClientSettable = 0; isClientSettable = 0;
category = CSTRING(Module_DisplayName);
}; };
class GVAR(playerNamesMaxAlpha) { class GVAR(playerNamesMaxAlpha) {
value = 0.8; value = 0.8;
typeName = "SCALAR"; typeName = "SCALAR";
isClientSettable = 0; isClientSettable = 0;
category = CSTRING(Module_DisplayName);
}; };
class GVAR(tagSize) { class GVAR(tagSize) {
value = 2; value = 2;
@ -61,5 +70,6 @@ class ACE_Settings {
displayName = CSTRING(TagSize_Name); displayName = CSTRING(TagSize_Name);
description = CSTRING(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"};
category = CSTRING(Module_DisplayName);
}; };
}; };

View File

@ -66,7 +66,7 @@ GVAR(showNamesTime) = -10;
// Change settings accordingly when they are changed // Change settings accordingly when they are changed
["SettingChanged", { ["SettingChanged", {
PARAMS_1(_name); params ["_name"];
if (_name == QGVAR(showPlayerNames)) then { if (_name == QGVAR(showPlayerNames)) then {
call FUNC(updateSettings); call FUNC(updateSettings);
}; };

View File

@ -10,16 +10,12 @@
* Can show Crew Info <BOOL> * Can show Crew Info <BOOL>
* *
* Example: * Example:
* call ace_nametags_fnc_doShow * call ace_nametags_fnc_canShow
* *
* Public: No * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_player"]; ((vehicle ACE_player) != ACE_player) &&
_player = ACE_player;
vehicle _player != _player &&
{GVAR(ShowCrewInfo)} && {GVAR(ShowCrewInfo)} &&
{!(vehicle _player isKindOf "ParachuteBase")}; {!(vehicle ACE_player isKindOf "ParachuteBase")};

View File

@ -13,26 +13,26 @@
* None * None
* *
* Example: * Example:
* [ACE_player, _target, _alpha, _distance * 0.026, _icon] call ace_nametags_fnc_drawNameTagIcon * [ACE_player, bob, 0.5, height, ICON_NAME_SPEAK] call ace_nametags_fnc_drawNameTagIcon
* *
* Public: No * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_5(_player,_target,_alpha,_heightOffset,_iconType); params ["_player", "_target", "_alpha", "_heightOffset", "_iconType"];
private ["_position", "_color", "_name", "_rank", "_size", "_icon", "_scale"];
if (_iconType == ICON_NONE) exitWith {}; //Don't waste time if not visable if (_iconType == ICON_NONE) exitWith {}; //Don't waste time if not visable
private ["_position", "_color", "_name", "_size", "_icon", "_scale"];
//Set Icon: //Set Icon:
_icon = ""; _icon = "";
_size = 0; _size = 0;
if ((_iconType == ICON_NAME_SPEAK) || (_iconType == ICON_SPEAK)) then { if (_iconType in [ICON_NAME_SPEAK, ICON_SPEAK]) then {
_icon = QUOTE(PATHTOF(UI\soundwave)) + str (floor (random 10)) + ".paa"; _icon = QUOTE(PATHTOF(UI\soundwave)) + str (floor (random 10)) + ".paa";
_size = 1; _size = 1;
_alpha = _alpha max 0.6;//Boost alpha when speaking _alpha = (_alpha max 0.2) + 0.2;//Boost alpha when speaking
} else { } else {
if (_iconType == ICON_NAME_RANK) then { if (_iconType == ICON_NAME_RANK) then {
_icon = format["\A3\Ui_f\data\GUI\Cfg\Ranks\%1_gs.paa",(toLower(rank _target))]; _icon = format["\A3\Ui_f\data\GUI\Cfg\Ranks\%1_gs.paa",(toLower(rank _target))];
@ -50,7 +50,7 @@ _name = if (_iconType in [ICON_NAME, ICON_NAME_RANK, ICON_NAME_SPEAK]) then {
}; };
//Set Color: //Set Color:
if !(group _target == group _player) then { if ((group _target) != (group _player)) then {
_color = +GVAR(defaultNametagColor); //Make a copy, then multiply both alpha values (allows client to decrease alpha in settings) _color = +GVAR(defaultNametagColor); //Make a copy, then multiply both alpha values (allows client to decrease alpha in settings)
_color set [3, (_color select 3) * _alpha]; _color set [3, (_color select 3) * _alpha];
} else { } else {
@ -58,7 +58,7 @@ if !(group _target == group _player) then {
}; };
// Convert position to ASLW (expected by drawIcon3D) and add height offsets // Convert position to ASLW (expected by drawIcon3D) and add height offsets
_position = _target modelToWorldVisual ((_target selectionPosition "pilot") vectorAdd [0,0,(_heightOffset + .35)]); _position = _target modelToWorldVisual ((_target selectionPosition "pilot") vectorAdd [0,0,(_heightOffset + .3)]);
_scale = [0.333, 0.5, 0.666, 0.83333, 1] select GVAR(tagSize); _scale = [0.333, 0.5, 0.666, 0.83333, 1] select GVAR(tagSize);

View File

@ -22,7 +22,7 @@
private ["_type", "_varName", "_data", "_isAir", "_config", "_fnc_addTurret", "_fnc_addTurretUnit"]; private ["_type", "_varName", "_data", "_isAir", "_config", "_fnc_addTurret", "_fnc_addTurretUnit"];
PARAMS_1(_type); params ["_type"];
_varName = format ["ACE_CrewInfo_Cache_%1", _type]; _varName = format ["ACE_CrewInfo_Cache_%1", _type];
_data = + (uiNamespace getVariable _varName); _data = + (uiNamespace getVariable _varName);

View File

@ -19,7 +19,7 @@
if (isServer) then { if (isServer) then {
//If someone disconnects while speaking, reset their variable //If someone disconnects while speaking, reset their variable
addMissionEventHandler ["HandleDisconnect", { addMissionEventHandler ["HandleDisconnect", {
PARAMS_1(_disconnectedPlayer); params ["_disconnectedPlayer"];
if (_disconnectedPlayer getVariable [QGVAR(isSpeakingInGame), false]) then { if (_disconnectedPlayer getVariable [QGVAR(isSpeakingInGame), false]) then {
_disconnectedPlayer setVariable [QGVAR(isSpeakingInGame), false, true]; _disconnectedPlayer setVariable [QGVAR(isSpeakingInGame), false, true];
}; };
@ -30,7 +30,7 @@ if (!hasInterface) exitWith {};
["playerChanged", { ["playerChanged", {
//When player changes, make sure to reset old unit's variable //When player changes, make sure to reset old unit's variable
PARAMS_2(_newUnit,_oldUnit); params ["", "_oldUnit"];
if ((!isNull _oldUnit) && {_oldUnit getVariable [QGVAR(isSpeakingInGame), false]}) then { if ((!isNull _oldUnit) && {_oldUnit getVariable [QGVAR(isSpeakingInGame), false]}) then {
_oldUnit setVariable [QGVAR(isSpeakingInGame), false, true]; _oldUnit setVariable [QGVAR(isSpeakingInGame), false, true];
}; };
@ -40,14 +40,14 @@ if (!hasInterface) exitWith {};
if (isClass (configFile >> "cfgPatches" >> "acre_api")) then { if (isClass (configFile >> "cfgPatches" >> "acre_api")) then {
diag_log text format ["[ACE_nametags] - ACRE Detected"]; diag_log text format ["[ACE_nametags] - ACRE Detected"];
DFUNC(isSpeaking) = { DFUNC(isSpeaking) = {
PARAMS_1(_unit); params ["_unit"];
(([_unit] call acre_api_fnc_isSpeaking) || ([ACE_player] call acre_api_fnc_isBroadcasting)) && {!(_unit getVariable ["ACE_isUnconscious", false])} (([_unit] call acre_api_fnc_isSpeaking) || {[ACE_player] call acre_api_fnc_isBroadcasting}) && {!(_unit getVariable ["ACE_isUnconscious", false])}
}; };
} else { } else {
if (isClass (configFile >> "cfgPatches" >> "task_force_radio")) then { if (isClass (configFile >> "cfgPatches" >> "task_force_radio")) then {
diag_log text format ["[ACE_nametags] - TFR Detected"]; diag_log text format ["[ACE_nametags] - TFR Detected"];
DFUNC(isSpeaking) = { DFUNC(isSpeaking) = {
PARAMS_1(_unit); params ["_unit"];
(_unit getVariable ["tf_isSpeaking", false]) && {!(_unit getVariable ["ACE_isUnconscious", false])} (_unit getVariable ["tf_isSpeaking", false]) && {!(_unit getVariable ["ACE_isUnconscious", false])}
}; };
} else { } else {
@ -64,7 +64,7 @@ if (isClass (configFile >> "cfgPatches" >> "acre_api")) then {
} , 0.1, []] call CBA_fnc_addPerFrameHandler; } , 0.1, []] call CBA_fnc_addPerFrameHandler;
DFUNC(isSpeaking) = { DFUNC(isSpeaking) = {
PARAMS_1(_unit); params ["_unit"];
(_unit getVariable [QGVAR(isSpeakingInGame), false]) && {!(_unit getVariable ["ACE_isUnconscious", false])} (_unit getVariable [QGVAR(isSpeakingInGame), false]) && {!(_unit getVariable ["ACE_isUnconscious", false])}
}; };
}; };

View File

@ -1,6 +1,5 @@
/* /*
* Author: esteldunedain * Author: esteldunedain
*
* Initializes the name tags module. * Initializes the name tags module.
* *
* Arguments: * Arguments:
@ -14,7 +13,7 @@
if !(isServer) exitWith {}; if !(isServer) exitWith {};
PARAMS_3(_logic,_units,_activated); params ["_logic", "", "_activated"];
if !(_activated) exitWith {}; if !(_activated) exitWith {};

View File

@ -17,8 +17,8 @@
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"];
//don't show nametags in spectator //don't show nametags in spectator or if RscDisplayMPInterrupt is open
if ((isNull ACE_player) || {!alive ACE_player}) exitWith {}; if ((isNull ACE_player) || {!alive ACE_player} || {!isNull (findDisplay 49)}) exitWith {};
_ambientBrightness = ((([] call EFUNC(common,ambientBrightness)) + ([0, 0.4] select ((currentVisionMode ace_player) != 0))) min 1) max 0; _ambientBrightness = ((([] call EFUNC(common,ambientBrightness)) + ([0, 0.4] select ((currentVisionMode ace_player) != 0))) min 1) max 0;
_maxDistance = _ambientBrightness * GVAR(PlayerNamesViewDistance); _maxDistance = _ambientBrightness * GVAR(PlayerNamesViewDistance);
@ -63,6 +63,7 @@ if ((GVAR(showPlayerNames) in [2,4]) && {_onKeyPressAlphaMax > 0}) then {
{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;
if (_distance > (_maxDistance + 5)) exitWith {};
_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
@ -116,5 +117,6 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho
[ACE_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon); [ACE_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon);
}; };
} forEach _targets; nil
} count _targets;
}; };

View File

@ -17,7 +17,7 @@
#define TextIDC 11123 #define TextIDC 11123
PARAMS_1(_text); params ["_text"];
private["_ctrl"]; private["_ctrl"];

View File

@ -16,7 +16,7 @@
#include "script_component.hpp" #include "script_component.hpp"
private ["_settingsMenu"]; private ["_settingsMenu", "_ctrlComboBox"];
disableSerialization; disableSerialization;
_settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; _settingsMenu = uiNamespace getVariable 'ACE_settingsMenu';
@ -24,4 +24,4 @@ _settingsMenu = uiNamespace getVariable 'ACE_settingsMenu';
_ctrlComboBox = (_settingsMenu displayCtrl 14); _ctrlComboBox = (_settingsMenu displayCtrl 14);
GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox; GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox;
[false] call FUNC(settingsMenuUpdateList); [true] call FUNC(settingsMenuUpdateList);

View File

@ -18,11 +18,15 @@
private ["_settingIndex", "_rightDropDownIndex"]; private ["_settingIndex", "_rightDropDownIndex"];
_settingIndex = lbCurSel 200; //Index of left list
_rightDropDownIndex = lbCurSel 400; //Index of right drop down _rightDropDownIndex = lbCurSel 400; //Index of right drop down
if (_rightDropDownIndex < 0) then {_rightDropDownIndex = 0;}; if (_rightDropDownIndex < 0) then {_rightDropDownIndex = 0;};
_settingIndex = -1;
if (((lnbCurSelRow 200) >= 0) && {(lnbCurSelRow 200) < ((lnbSize 200) select 0)}) then {
_settingIndex = lnbValue [200, [(lnbCurSelRow 200), 0]];
};
if (_settingIndex == -1) exitWith {};
switch (GVAR(optionMenu_openTab)) do { switch (GVAR(optionMenu_openTab)) do {
case (MENU_TAB_OPTIONS): { case (MENU_TAB_OPTIONS): {
if ((_settingIndex >= 0) && (_settingIndex < (count GVAR(clientSideOptions)))) then { if ((_settingIndex >= 0) && (_settingIndex < (count GVAR(clientSideOptions)))) then {

View File

@ -23,4 +23,4 @@ _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu';
_ctrlComboBox = (_settingsMenu displayCtrl 14); _ctrlComboBox = (_settingsMenu displayCtrl 14);
GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox; GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox;
[false] call FUNC(serverSettingsMenuUpdateList); [true] call FUNC(serverSettingsMenuUpdateList);

View File

@ -18,9 +18,13 @@
private ["_settingIndex", "_inputText", "_setting", "_settingName", "_convertedValue"]; private ["_settingIndex", "_inputText", "_setting", "_settingName", "_convertedValue"];
_settingIndex = lbCurSel 200; //Index of left list
_inputText = ctrlText 414; //Index of right drop down _inputText = ctrlText 414; //Index of right drop down
_settingIndex = -1;
if (((lnbCurSelRow 200) >= 0) && {(lnbCurSelRow 200) < ((lnbSize 200) select 0)}) then {
_settingIndex = lnbValue [200, [(lnbCurSelRow 200), 0]];
};
switch (GVAR(optionMenu_openTab)) do { switch (GVAR(optionMenu_openTab)) do {
case (MENU_TAB_SERVER_VALUES): { case (MENU_TAB_SERVER_VALUES): {
if ((_settingIndex >= 0) && (_settingIndex < (count GVAR(serverSideValues)))) then { if ((_settingIndex >= 0) && (_settingIndex < (count GVAR(serverSideValues)))) then {

View File

@ -72,7 +72,6 @@ lbClear (_menu displayCtrl 14);
if (_x == "") then { if (_x == "") then {
_x = localize (LSTRING(category_all)); _x = localize (LSTRING(category_all));
}; };
if (isLocalized _x) then {_x = localize _x};
(_menu displayCtrl 14) lbAdd _x; (_menu displayCtrl 14) lbAdd _x;
} forEach GVAR(categories); } forEach GVAR(categories);

View File

@ -56,9 +56,8 @@ if (GVAR(serverConfigGeneration) == 0) then {
lbClear (_menu displayCtrl 14); lbClear (_menu displayCtrl 14);
{ {
if (_x == "") then { if (_x == "") then {
_x = localize "STR_ACE_OptionsMenu_category_all"; _x = localize LSTRING(category_all);
}; };
if (isLocalized _x) then {_x = localize _x};
(_menu displayCtrl 14) lbAdd _x; (_menu displayCtrl 14) lbAdd _x;
} forEach GVAR(categories); } forEach GVAR(categories);

View File

@ -18,7 +18,11 @@
private ["_newColor", "_settingIndex"]; private ["_newColor", "_settingIndex"];
_settingIndex = lbCurSel 200; _settingIndex = -1;
if (((lnbCurSelRow 200) >= 0) && {(lnbCurSelRow 200) < ((lnbSize 200) select 0)}) then {
_settingIndex = lnbValue [200, [(lnbCurSelRow 200), 0]];
};
if (_settingIndex == -1) exitWith {};
switch (GVAR(optionMenu_openTab)) do { switch (GVAR(optionMenu_openTab)) do {
case (MENU_TAB_COLORS): { case (MENU_TAB_COLORS): {

View File

@ -30,8 +30,8 @@ private ["_name", "_default", "_lastSelected"];
[MENU_TAB_COLORS, _name, _default] call FUNC(updateSetting); [MENU_TAB_COLORS, _name, _default] call FUNC(updateSetting);
} forEach GVAR(clientSideColors); } forEach GVAR(clientSideColors);
_lastSelected = lbCurSel 200; _lastSelected = lnbCurSelRow 200;
[GVAR(optionMenu_openTab)] call FUNC(onListBoxShowSelectionChanged); [GVAR(optionMenu_openTab)] call FUNC(onListBoxShowSelectionChanged);
if (_lastSelected != -1) then { if (_lastSelected != -1) then {
lbSetCurSel [200, _lastSelected]; lnbSetCurSelRow [200, _lastSelected];
}; };

View File

@ -36,7 +36,7 @@ private ["_name", "_default", "_lastSelected"];
[MENU_TAB_SERVER_VALUES, _name, _default] call FUNC(updateSetting); [MENU_TAB_SERVER_VALUES, _name, _default] call FUNC(updateSetting);
} forEach GVAR(serverSideVakyes); } forEach GVAR(serverSideVakyes);
_lastSelected = lbCurSel 200; _lastSelected = lnbCurSelRow 200;
[GVAR(optionMenu_openTab)] call FUNC(onserverListBoxShowSelectionChanged); [GVAR(optionMenu_openTab)] call FUNC(onserverListBoxShowSelectionChanged);
if (_lastSelected != -1) then { if (_lastSelected != -1) then {
lbSetCurSel [200, _lastSelected]; lbSetCurSel [200, _lastSelected];

View File

@ -16,11 +16,10 @@
#include "script_component.hpp" #include "script_component.hpp"
private ["_settingsMenu", "_ctrlList", "_collection", "_settingIndex", "_setting", "_entryName", "_localizedName", "_localizedDescription", "_possibleValues", "_settingsValue", "_currentColor", "_expectedType", "_filteredCollection", "_selectedCategory"]; private ["_settingsMenu", "_collection", "_settingIndex", "_setting", "_entryName", "_localizedName", "_localizedDescription", "_possibleValues", "_settingsValue", "_currentColor", "_expectedType"];
disableSerialization; disableSerialization;
_settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu'; _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu';
_ctrlList = _settingsMenu displayCtrl 200;
_collection = switch (GVAR(optionMenu_openTab)) do { _collection = switch (GVAR(optionMenu_openTab)) do {
case MENU_TAB_SERVER_OPTIONS: {GVAR(serverSideOptions)}; case MENU_TAB_SERVER_OPTIONS: {GVAR(serverSideOptions)};
@ -29,24 +28,13 @@ _collection = switch (GVAR(optionMenu_openTab)) do {
default {[]}; default {[]};
}; };
_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); _settingIndex = -1;
_filteredCollection = []; if (((lnbCurSelRow 200) >= 0) && {(lnbCurSelRow 200) < ((lnbSize 200) select 0)}) then {
{ _settingIndex = lnbValue [200, [(lnbCurSelRow 200), 0]];
if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then { };
_filteredCollection pushBack _x;
};
} forEach _collection;
if (count _filteredCollection > 0) then { if ((_settingIndex >= 0) && {_settingIndex <= (count _collection)}) then {
_settingIndex = (lbCurSel _ctrlList); _setting = _collection select _settingIndex;
if (_settingIndex > (count _filteredCollection)) then {
_settingIndex = count _filteredCollection - 1;
};
if (_settingIndex < 0) then {
_settingIndex = 0;
};
_setting = _filteredCollection select _settingIndex;
_entryName = _setting select 0; _entryName = _setting select 0;
_localizedName = _setting select 3; _localizedName = _setting select 3;

View File

@ -16,26 +16,26 @@
#include "script_component.hpp" #include "script_component.hpp"
private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue", "_selectedCategory"]; private ["_settingName", "_added", "_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue", "_selectedCategory"];
DEFAULT_PARAM(0,_updateKeyView,true); DEFAULT_PARAM(0,_updateKeyView,true);
disableSerialization; disableSerialization;
_settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu'; _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu';
_ctrlList = _settingsMenu displayCtrl 200; _ctrlList = _settingsMenu displayCtrl 200;
lbclear _ctrlList; lnbClear _ctrlList;
_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); _selectedCategory = GVAR(categories) select GVAR(currentCategorySelection);
_added = 0;
switch (GVAR(optionMenu_openTab)) do { switch (GVAR(optionMenu_openTab)) do {
case (MENU_TAB_SERVER_OPTIONS): { case (MENU_TAB_SERVER_OPTIONS): {
{ {
if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then {
if ((_x select 3) != "") then { _settingName = if ((_x select 3) != "") then {
_ctrlList lbadd (_x select 3); (_x select 3);
} else { } else {
_ctrlList lbadd (_x select 0); (_x select 0);
}; };
_settingsValue = _x select 9; _settingsValue = _x select 9;
@ -47,41 +47,45 @@ switch (GVAR(optionMenu_openTab)) do {
(_x select 5) select _settingsValue; (_x select 5) select _settingsValue;
}; };
_ctrlList lbadd (_settingsText); _added = _ctrlList lnbAddRow [_settingName, _settingsText];
_ctrlList lnbSetValue [[_added, 0], _forEachIndex];
}; };
}foreach GVAR(serverSideOptions); }foreach GVAR(serverSideOptions);
}; };
case (MENU_TAB_SERVER_COLORS): { case (MENU_TAB_SERVER_COLORS): {
{ {
if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then {
_color = +(_x select 9); _color = +(_x select 9);
{ {
_color set [_forEachIndex, ((round (_x * 100))/100)]; _color set [_forEachIndex, ((round (_x * 100))/100)];
} forEach _color; } forEach _color;
_settingsColor = str _color; _settingsColor = str _color;
if ((_x select 3) != "") then { _settingName = if ((_x select 3) != "") then {
_ctrlList lbadd (_x select 3); (_x select 3);
} else { } else {
_ctrlList lbadd (_x select 0); (_x select 0);
}; };
_ctrlList lbadd (_settingsColor);
_added = _ctrlList lnbAddRow [_settingName, _settingsColor];
_ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)]; _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)];
_ctrlList lnbSetValue [[_added, 0], _forEachIndex];
}; };
}foreach GVAR(serverSideColors); }foreach GVAR(serverSideColors);
}; };
case (MENU_TAB_SERVER_VALUES): { case (MENU_TAB_SERVER_VALUES): {
{ {
if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then {
if ((_x select 3) != "") then { _settingName = if ((_x select 3) != "") then {
_ctrlList lbadd (_x select 3); (_x select 3);
} else { } else {
_ctrlList lbadd (_x select 0); (_x select 0);
}; };
_settingsValue = _x select 9; _settingsValue = _x select 9;
if (typeName _settingsValue != "STRINg") then { if (typeName _settingsValue != "STRING") then {
_settingsValue = format["%1", _settingsValue]; _settingsValue = format["%1", _settingsValue];
}; };
_ctrlList lbadd (_settingsValue); _added = _ctrlList lnbAddRow [_settingName, _settingsValue];
_ctrlList lnbSetValue [[_added, 0], _forEachIndex];
}; };
}foreach GVAR(serverSideValues); }foreach GVAR(serverSideValues);
}; };

View File

@ -28,24 +28,13 @@ _collection = switch (GVAR(optionMenu_openTab)) do {
default {[]}; default {[]};
}; };
_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); _settingIndex = -1;
_filteredCollection = []; if (((lnbCurSelRow 200) >= 0) && {(lnbCurSelRow 200) < ((lnbSize 200) select 0)}) then {
{ _settingIndex = lnbValue [200, [(lnbCurSelRow 200), 0]];
if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then { };
_filteredCollection pushBack _x;
};
} forEach _collection;
if (count _filteredCollection > 0) then { if ((_settingIndex >= 0) && {_settingIndex <= (count _collection)}) then {
_settingIndex = (lbCurSel _ctrlList); _setting = _collection select _settingIndex;
if (_settingIndex > (count _filteredCollection)) then {
_settingIndex = count _filteredCollection - 1;
};
if (_settingIndex < 0) then {
_settingIndex = 0;
};
_setting = _filteredCollection select _settingIndex;
_entryName = _setting select 0; _entryName = _setting select 0;
_localizedName = _setting select 3; _localizedName = _setting select 3;

View File

@ -16,22 +16,22 @@
#include "script_component.hpp" #include "script_component.hpp"
private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue", "_selectedCategory"]; private ["_settingName", "_added", "_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue", "_selectedCategory"];
DEFAULT_PARAM(0,_updateKeyView,true); DEFAULT_PARAM(0,_updateKeyView,true);
disableSerialization; disableSerialization;
_settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; _settingsMenu = uiNamespace getVariable 'ACE_settingsMenu';
_ctrlList = _settingsMenu displayCtrl 200; _ctrlList = _settingsMenu displayCtrl 200;
lbclear _ctrlList; lnbClear _ctrlList;
_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); _selectedCategory = GVAR(categories) select GVAR(currentCategorySelection);
switch (GVAR(optionMenu_openTab)) do { switch (GVAR(optionMenu_openTab)) do {
case (MENU_TAB_OPTIONS): { case (MENU_TAB_OPTIONS): {
{ {
if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then {
_ctrlList lbadd (_x select 3); _settingName = (_x select 3);
_settingsValue = _x select 9; _settingsValue = _x select 9;
// Created disable/enable options for bools // Created disable/enable options for bools
@ -40,21 +40,24 @@ switch (GVAR(optionMenu_openTab)) do {
} else { } else {
(_x select 5) select _settingsValue; (_x select 5) select _settingsValue;
}; };
_ctrlList lbadd (_settingsText); _added = _ctrlList lnbAddRow [_settingName, _settingsText];
_ctrlList lnbSetValue [[_added, 0], _forEachIndex];
}; };
}foreach GVAR(clientSideOptions); } foreach GVAR(clientSideOptions);
}; };
case (MENU_TAB_COLORS): { case (MENU_TAB_COLORS): {
{ {
if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then {
_color = +(_x select 9); _color = +(_x select 9);
{ {
_color set [_forEachIndex, ((round (_x * 100))/100)]; _color set [_forEachIndex, ((round (_x * 100))/100)];
} forEach _color; } forEach _color;
_settingsColor = str _color; _settingsColor = str _color;
_ctrlList lbadd (_x select 3); _settingName = (_x select 3);
_ctrlList lbadd (_settingsColor);
_added = _ctrlList lnbAddRow [_settingName, _settingsColor];
_ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)]; _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)];
_ctrlList lnbSetValue [[_added, 0], _forEachIndex];
}; };
}foreach GVAR(clientSideColors); }foreach GVAR(clientSideColors);
}; };

View File

@ -14,7 +14,7 @@
* Public: No * Public: No
*/ */
private ["_str", "_array", "_maxIndex"]; private ["_str", "_array", "_maxIndex", "_isEven"];
_str = _this; _str = _this;
_isEven = { _isEven = {

View File

@ -256,7 +256,7 @@ class ACE_settingsMenu {
idc = 1102; idc = 1102;
text = CSTRING(OpenExport); text = CSTRING(OpenExport);
x = X_PART(18); x = X_PART(18);
action = QUOTE(if (GVAR(serverConfigGeneration) > 0) then {createDialog 'ACE_serverSettingsMenu'; }); action = QUOTE(if (GVAR(serverConfigGeneration) > 0) then {closeDialog 0; createDialog 'ACE_serverSettingsMenu';});
}; };
class action_debug: actionClose { class action_debug: actionClose {
idc = 1102; idc = 1102;

View File

@ -62,15 +62,6 @@ if !(["ace_interact_menu"] call EFUNC(common,isModLoaded)) then {
// Add interactions if automatic transitions are disabled, else setup automatic transitions // Add interactions if automatic transitions are disabled, else setup automatic transitions
if (_duration == 0) then { if (_duration == 0) then {
{ {
// Add MainAction if one does not already exist
_actionsObject = _x getVariable [QEGVAR(interact_menu,actions), []];
_actionsClass = missionNamespace getVariable [format [QEGVAR(interact_menu,Act_%1), typeOf _x], []];
if (count _actionsObject == 0 && {count _actionsClass == 0}) then {
_mainAction = ["ACE_MainActions", localize ELSTRING(interaction,MainAction), "", {}, {true}] call EFUNC(interact_menu,createAction);
[_x, 0, [], _mainAction] call EFUNC(interact_menu,addActionToObject);
TRACE_2("Adding ACE_MainActions",_actionsObject,_actionsClass);
};
// Add Slides sub-action and populate with images // Add Slides sub-action and populate with images
_slidesAction = [QGVAR(Slides), localize LSTRING(Interaction), "", {}, {true}, {(_this select 2) call FUNC(addSlideActions)}, [_objects,_images,_names,_x,_currentSlideshow], [0,0,0], 2] call EFUNC(interact_menu,createAction); _slidesAction = [QGVAR(Slides), localize LSTRING(Interaction), "", {}, {true}, {(_this select 2) call FUNC(addSlideActions)}, [_objects,_images,_names,_x,_currentSlideshow], [0,0,0], 2] call EFUNC(interact_menu,createAction);
[_x, 0, ["ACE_MainActions"], _slidesAction] call EFUNC(interact_menu,addActionToObject); [_x, 0, ["ACE_MainActions"], _slidesAction] call EFUNC(interact_menu,addActionToObject);

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB