mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into require-surrender-captive
This commit is contained in:
commit
54ad9d1444
@ -107,3 +107,4 @@ VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
|
||||
Winter <simon@agius-muscat.net>
|
||||
zGuba
|
||||
Drill <drill87@gmail.com>
|
||||
MikeMatrix <m.braun92@gmail.com>
|
||||
|
@ -31,7 +31,7 @@ _actions = [];
|
||||
if (getText (_item >> "ACE_Attachable") != "") then {
|
||||
_displayName = getText(_item >> "displayName");
|
||||
_picture = getText(_item >> "picture");
|
||||
_action = [_x, _displayName, _picture, {_this call FUNC(attach)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
|
||||
_action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
|
||||
_actions pushBack [_action, [], _target];
|
||||
};
|
||||
};
|
||||
@ -44,7 +44,7 @@ _actions = [];
|
||||
if (getText (_item >> "ACE_Attachable") != "") then {
|
||||
_displayName = getText(_item >> "displayName");
|
||||
_picture = getText(_item >> "picture");
|
||||
_action = [_x, _displayName, _picture, {_this call FUNC(attach)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
|
||||
_action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
|
||||
_actions pushBack [_action, [], _target];
|
||||
};
|
||||
};
|
||||
|
@ -1,9 +1,9 @@
|
||||
// by commy2
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_wall", "_paper"];
|
||||
private "_paper";
|
||||
|
||||
_wall = _this select 0;
|
||||
params ["_wall"];
|
||||
|
||||
if (local _wall) then {
|
||||
_paper = "UserTexture_1x2_F" createVehicle position _wall;
|
||||
|
@ -341,6 +341,14 @@ if(isMultiplayer && { ACE_time > 0 || isNull player } ) then {
|
||||
GVAR(deviceKeyHandlingArray) = [];
|
||||
GVAR(deviceKeyCurrentIndex) = -1;
|
||||
|
||||
// Register localizations for the Keybinding categories
|
||||
["ACE3 Equipment", localize LSTRING(ACEKeybindCategoryEquipment)] call cba_fnc_registerKeybindModPrettyName;
|
||||
["ACE3 Common", localize LSTRING(ACEKeybindCategoryCommon)] call cba_fnc_registerKeybindModPrettyName;
|
||||
["ACE3 Weapons", localize LSTRING(ACEKeybindCategoryWeapons)] call cba_fnc_registerKeybindModPrettyName;
|
||||
["ACE3 Movement", localize LSTRING(ACEKeybindCategoryMovement)] call cba_fnc_registerKeybindModPrettyName;
|
||||
["ACE3 Scope Adjustment", localize LSTRING(ACEKeybindCategoryScopeAdjustment)] call cba_fnc_registerKeybindModPrettyName;
|
||||
["ACE3 Vehicles", localize LSTRING(ACEKeybindCategoryVehicles)] call cba_fnc_registerKeybindModPrettyName;
|
||||
|
||||
["ACE3 Equipment", QGVAR(openDevice), (localize "STR_ACE_Common_toggleHandheldDevice"),
|
||||
{
|
||||
[] call FUNC(deviceKeyFindValidIndex);
|
||||
|
@ -65,7 +65,8 @@ if (isNil _name) then {
|
||||
localizedDescription,
|
||||
possibleValues,
|
||||
isForced,
|
||||
defaultValue
|
||||
defaultValue,
|
||||
category
|
||||
];*/
|
||||
_settingData = [
|
||||
_name,
|
||||
@ -75,7 +76,8 @@ if (isNil _name) then {
|
||||
getText (_optionEntry >> "description"),
|
||||
getArray (_optionEntry >> "values"),
|
||||
getNumber (_optionEntry >> "force") > 0,
|
||||
_value
|
||||
_value,
|
||||
getText (_optionEntry >> "category")
|
||||
];
|
||||
|
||||
//Strings in the values array won't be localized from the config, so just do that now:
|
||||
|
@ -30,14 +30,14 @@ if (_vehicle isKindOf "Ship" ) then {
|
||||
_emptyPos = (getPosASL _vehicle) call EFUNC(common,ASLtoPosition);
|
||||
_emptyPos = [(_emptyPos select 0) + random(5), (_emptyPos select 1) + random(5), _emptyPos select 2 ];
|
||||
} else {
|
||||
if !(speed _vehicle <1 && {isTouchingGround _vehicle}) then {_validVehiclestate = false};
|
||||
if !(speed _vehicle <1 && {(((getPosATL _vehicle) select 2) < 2)}) then {_validVehiclestate = false};
|
||||
TRACE_1("Vehicle Ground Check", isTouchingGround _vehicle);
|
||||
_emptyPos = ((getPosASL _vehicle) call EFUNC(common,ASLtoPosition) findEmptyPosition [0, 13, typeof _unit]);
|
||||
};
|
||||
};
|
||||
|
||||
TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle);
|
||||
if (!_validVehiclestate) exitwith { diag_log format["Unable to unload patient because invalid vehicle state. Either moving or Not close enough on the ground. %1", getPos _vehicle]; false };
|
||||
if (!_validVehiclestate) exitwith { diag_log format["Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4", _vehicle, getPos _vehicle, isTouchingGround _vehicle, speed _vehicle]; false };
|
||||
|
||||
diag_log str _emptyPos;
|
||||
|
||||
|
@ -598,5 +598,86 @@
|
||||
<Polish>Następne urządzenie podręczne</Polish>
|
||||
<Czech>Procházet ruční zařízení</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Disabled">
|
||||
<English>Disabled</English>
|
||||
<Czech>Zakázáno</Czech>
|
||||
<French>Non</French>
|
||||
<German>Deaktiviert</German>
|
||||
<Italian>Disattivato</Italian>
|
||||
<Polish>Wyłączone</Polish>
|
||||
<Portuguese>Desativado</Portuguese>
|
||||
<Russian>Откл.</Russian>
|
||||
<Spanish>Desactivado</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Enabled">
|
||||
<English>Enabled</English>
|
||||
<Czech>Zapnuto</Czech>
|
||||
<French>Oui</French>
|
||||
<German>Aktiviert</German>
|
||||
<Italian>Attivato</Italian>
|
||||
<Polish>Włączone</Polish>
|
||||
<Portuguese>Ativado</Portuguese>
|
||||
<Russian>Вкл.</Russian>
|
||||
<Spanish>Activado</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Yes">
|
||||
<English>Yes</English>
|
||||
<German>Ja</German>
|
||||
<Spanish>Si</Spanish>
|
||||
<Polish>Tak</Polish>
|
||||
<Czech>Ano</Czech>
|
||||
<French>Oui</French>
|
||||
<Russian>Да</Russian>
|
||||
<Hungarian>Igen</Hungarian>
|
||||
<Portuguese>Sim</Portuguese>
|
||||
<Italian>Si</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_No">
|
||||
<English>No</English>
|
||||
<German>Nein</German>
|
||||
<Spanish>No</Spanish>
|
||||
<Polish>Nie</Polish>
|
||||
<Czech>Ne</Czech>
|
||||
<French>Non</French>
|
||||
<Russian>Нет</Russian>
|
||||
<Hungarian>Nem</Hungarian>
|
||||
<Portuguese>Não</Portuguese>
|
||||
<Italian>No</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_VehiclesOnly">
|
||||
<English>Vehicles only</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_DoNotForce">
|
||||
<English>Do Not Force</English>
|
||||
<Polish>Nie wymuszaj</Polish>
|
||||
<Spanish>No forzar</Spanish>
|
||||
<German>Nicht erzwingen</German>
|
||||
<Czech>Nevynucovat</Czech>
|
||||
<Portuguese>Não forçar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment">
|
||||
<English>ACE3 Equipment</English>
|
||||
<Polish>ACE3 Wyposażenie</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryCommon">
|
||||
<English>ACE3 Common</English>
|
||||
<Polish>ACE3 Ogólne</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons">
|
||||
<English>ACE3 Weapons</English>
|
||||
<Polish>ACE3 Broń</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryMovement">
|
||||
<English>ACE3 Movement</English>
|
||||
<Polish>ACE3 Ruch</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment">
|
||||
<English>ACE3 Scope Adjustment</English>
|
||||
<Polish>ACE3 Regulacja optyki</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles">
|
||||
<English>ACE3 Vehicles</English>
|
||||
<Polish>ACE3 Pojazdy</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -123,7 +123,8 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_ROLLWIRE";
|
||||
distance = 4;
|
||||
condition = "true";
|
||||
statement = QUOTE([ARR_2(_target,_player)] call FUNC(deploy));
|
||||
//wait a frame to handle "Do When releasing action menu key" option:
|
||||
statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [ARR_2(_target,_player)])] call EFUNC(common,execNextFrame));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
priority = 5;
|
||||
|
@ -37,7 +37,7 @@ deleteVehicle _wirecoil;
|
||||
_unit setVariable [QGVAR(wireDeployed), false];
|
||||
|
||||
GVAR(deployPFH) = [{
|
||||
EXPLODE_4_PVT(_this select 0,_wireNoGeo,_wireNoGeoPos,_unit,_action);
|
||||
EXPLODE_3_PVT(_this select 0,_wireNoGeo,_wireNoGeoPos,_unit);
|
||||
|
||||
private ["_range", "_posStart", "_posEnd", "_dirVect", "_dir", "_anim", "_wire"];
|
||||
_posStart = (_wireNoGeo modelToWorldVisual (_wireNoGeo selectionPosition "start")) call EFUNC(common,positionToASL);
|
||||
@ -73,7 +73,7 @@ GVAR(deployPFH) = [{
|
||||
{
|
||||
_wireNoGeo animate [_x, _anim];
|
||||
} foreach WIRE_FAST;
|
||||
}, 0, [_wireNoGeo, _wireNoGeoPos, _unit, _action]] call CBA_fnc_addPerFrameHandler;
|
||||
}, 0, [_wireNoGeo, _wireNoGeoPos, _unit]] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
[localize "STR_ACE_ROLLWIRE", "", ""] call EFUNC(interaction,showMouseHint);
|
||||
|
||||
|
@ -2,6 +2,8 @@ class ACE_Settings {
|
||||
class GVAR(EnableCombatDeafness) {
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(CombatDeafness_DisplayName);
|
||||
description = CSTRING(CombatDeafness_Description);
|
||||
};
|
||||
class GVAR(EarplugsVolume) {
|
||||
value = 0.5;
|
||||
|
@ -109,6 +109,27 @@ class CfgVehicles {
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class DisableEarRinging {
|
||||
displayName = CSTRING(DisableEarRinging);
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class DoNotForce {
|
||||
default = 1;
|
||||
name = ECSTRING(common,DoNotForce);
|
||||
value = -1;
|
||||
};
|
||||
/* Probably don't want to allow forcing ear ringing for people who have serious problems with the effect
|
||||
class NotDisabled {
|
||||
name = ECSTRING(common,No);
|
||||
value = 0;
|
||||
};
|
||||
*/
|
||||
class IsDisabled {
|
||||
name = ECSTRING(common,Yes);
|
||||
value = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = CSTRING(Module_Description);
|
||||
|
@ -16,4 +16,9 @@ if !(_activated) exitWith {};
|
||||
|
||||
[_logic, QGVAR(enableCombatDeafness), "EnableCombatDeafness"] call EFUNC(common,readSettingFromModule);
|
||||
|
||||
// Do Not Force - read module setting only non-default is set due to using SCALAR
|
||||
if ((_logic getVariable "DisableEarRinging") != -1) then {
|
||||
[_logic, QGVAR(DisableEarRinging), "DisableEarRinging"] call EFUNC(common,readSettingFromModule);
|
||||
};
|
||||
|
||||
diag_log text "[ACE]: Hearing Module Initialized.";
|
||||
|
@ -126,7 +126,7 @@
|
||||
<Portuguese>Ativar surdez em combate?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_CombatDeafness_Description">
|
||||
<English>Enable combat deafness?</English>
|
||||
<English>Reduces the hearing ability as the player takes hearing damage</English>
|
||||
<Polish>Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów</Polish>
|
||||
<Spanish>Habilita la sordera de combate</Spanish>
|
||||
<German>Aktiviere Taubheit im Gefecht?</German>
|
||||
@ -134,7 +134,7 @@
|
||||
<Portuguese>Ativar surdez em combate?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_Module_Description">
|
||||
<English></English>
|
||||
<English>Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection</English>
|
||||
<Polish>Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu.</Polish>
|
||||
<German>Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet.</German>
|
||||
<Czech>Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat.</Czech>
|
||||
|
@ -3,12 +3,14 @@ class ACE_Settings {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(AlwaysUseCursorSelfInteraction);
|
||||
};
|
||||
class GVAR(cursorKeepCentered) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(cursorKeepCentered);
|
||||
description = CSTRING(cursorKeepCenteredDescription);
|
||||
};
|
||||
@ -16,42 +18,49 @@ class ACE_Settings {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(AlwaysUseCursorInteraction);
|
||||
};
|
||||
class GVAR(UseListMenu) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(UseListMenu);
|
||||
};
|
||||
class GVAR(colorTextMax) {
|
||||
value[] = {1, 1, 1, 1};
|
||||
typeName = "COLOR";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(ColorTextMax);
|
||||
};
|
||||
class GVAR(colorTextMin) {
|
||||
value[] = {1, 1, 1, 0.25};
|
||||
typeName = "COLOR";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(ColorTextMin);
|
||||
};
|
||||
class GVAR(colorShadowMax) {
|
||||
value[] = {0, 0, 0, 1};
|
||||
typeName = "COLOR";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(ColorShadowMax);
|
||||
};
|
||||
class GVAR(colorShadowMin) {
|
||||
value[] = {0, 0, 0, 0.25};
|
||||
typeName = "COLOR";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(ColorShadowMin);
|
||||
};
|
||||
class GVAR(textSize) {
|
||||
value = 2;
|
||||
typeName = "SCALAR";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(textSize);
|
||||
values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"};
|
||||
};
|
||||
@ -59,6 +68,7 @@ class ACE_Settings {
|
||||
value = 2;
|
||||
typeName = "SCALAR";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(shadowSetting);
|
||||
description = CSTRING(shadowSettingDescription);
|
||||
values[] = {"$STR_A3_OPTIONS_DISABLED", "$STR_A3_OPTIONS_ENABLED", CSTRING(shadowOutline)};
|
||||
@ -67,12 +77,14 @@ class ACE_Settings {
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(ActionOnKeyRelease);
|
||||
};
|
||||
class GVAR(menuBackground) {
|
||||
value = 0;
|
||||
typeName = "SCALAR";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(background);
|
||||
values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(backgroundBlur), CSTRING(backgroundBlack)};
|
||||
};
|
||||
@ -80,6 +92,7 @@ class ACE_Settings {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
category = LSTRING(Category_InteractionMenu);
|
||||
displayName = CSTRING(addBuildingActions);
|
||||
description = CSTRING(addBuildingActionsDescription);
|
||||
};
|
||||
|
@ -267,5 +267,9 @@
|
||||
<Czech>Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) </Czech>
|
||||
<Spanish>Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_Category_InteractionMenu">
|
||||
<English>Interaction Menu</English>
|
||||
<Polish>Menu interakcji</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -91,7 +91,7 @@ class CfgVehicles {
|
||||
|
||||
class ACE_JoinGroup {
|
||||
displayName = CSTRING(JoinGroup);
|
||||
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinGroup));
|
||||
condition = QUOTE(GVAR(EnableTeamManagement) && {[ARR_2(_player,_target)] call DFUNC(canJoinGroup)});
|
||||
statement = QUOTE([_player] joinSilent group _target);
|
||||
showDisabled = 0;
|
||||
priority = 2.6;
|
||||
@ -351,7 +351,7 @@ class CfgVehicles {
|
||||
hotkey = "7";
|
||||
};
|
||||
class ACE_Gesture_Yes {
|
||||
displayName = CSTRING(Gestures_Yes);
|
||||
displayName = ECSTRING(common,Yes);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2););
|
||||
showDisabled = 1;
|
||||
@ -359,7 +359,7 @@ class CfgVehicles {
|
||||
hotkey = "8";
|
||||
};
|
||||
class ACE_Gesture_No {
|
||||
displayName = CSTRING(Gestures_No);
|
||||
displayName = ECSTRING(common,No);
|
||||
condition = QUOTE(canStand _target);
|
||||
statement = QUOTE(_target playActionNow 'gestureNo';);
|
||||
showDisabled = 1;
|
||||
|
@ -385,30 +385,6 @@
|
||||
<Portuguese>Olá</Portuguese>
|
||||
<Italian>Ciao</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_Yes">
|
||||
<English>Yes</English>
|
||||
<German>Ja</German>
|
||||
<Spanish>Si</Spanish>
|
||||
<Polish>Tak</Polish>
|
||||
<Czech>Ano</Czech>
|
||||
<French>Oui</French>
|
||||
<Russian>Да</Russian>
|
||||
<Hungarian>Igen</Hungarian>
|
||||
<Portuguese>Sim</Portuguese>
|
||||
<Italian>Si</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Gestures_No">
|
||||
<English>No</English>
|
||||
<German>Nein</German>
|
||||
<Spanish>No</Spanish>
|
||||
<Polish>Nie</Polish>
|
||||
<Czech>Ne</Czech>
|
||||
<French>Non</French>
|
||||
<Russian>Нет</Russian>
|
||||
<Hungarian>Nem</Hungarian>
|
||||
<Portuguese>Não</Portuguese>
|
||||
<Italian>No</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_WeaponOnBack">
|
||||
<English>Put weapon on back</English>
|
||||
<German>Waffe wegstecken</German>
|
||||
|
@ -14,7 +14,13 @@
|
||||
|
||||
visibleMap &&
|
||||
{alive ACE_player} &&
|
||||
{"ItemMap" in (assignedItems ACE_player)} &&
|
||||
{
|
||||
scopeName "hasMap";
|
||||
{
|
||||
if (_x isKindOf ["ItemMap", configFile >> "CfgWeapons"]) exitWith {true breakOut "hasMap"};
|
||||
} forEach (assignedItems ACE_player);
|
||||
false
|
||||
} &&
|
||||
{"ACE_MapTools" in (items ACE_player)} &&
|
||||
{!GVAR(mapTool_isDragging)} &&
|
||||
{!GVAR(mapTool_isRotating)}
|
||||
|
@ -4,8 +4,9 @@ class ACE_Medical_Actions {
|
||||
class Bandage {
|
||||
displayName = CSTRING(Bandage);
|
||||
displayNameProgress = CSTRING(Bandaging);
|
||||
|
||||
category = "bandage";
|
||||
treatmentLocations[] = {"All"};
|
||||
allowedSelections[] = {"All"};
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 5;
|
||||
treatmentTimeSelfCoef = 1;
|
||||
@ -25,11 +26,13 @@ class ACE_Medical_Actions {
|
||||
animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther";
|
||||
animationCallerSelf = "AinvPknlMstpSlayW[wpn]Dnon_medic";
|
||||
animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic";
|
||||
litter[] = { {"All", "", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}} };
|
||||
litter[] = { {"All", "_previousDamage > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_previousDamage <= 0", {"ACE_MedicalLitter_clean"}} };
|
||||
};
|
||||
class Morphine: Bandage {
|
||||
displayName = CSTRING(Inject_Morphine);
|
||||
displayNameProgress = CSTRING(Injecting_Morphine);
|
||||
allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"};
|
||||
category = "medication";
|
||||
treatmentTime = 2;
|
||||
items[] = {"ACE_morphine"};
|
||||
callbackSuccess = QUOTE(DFUNC(treatmentBasic_morphine));
|
||||
@ -39,6 +42,8 @@ class ACE_Medical_Actions {
|
||||
class Epinephrine: Bandage {
|
||||
displayName = CSTRING(Inject_Epinephrine);
|
||||
displayNameProgress = CSTRING(Injecting_Epinephrine);
|
||||
allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"};
|
||||
category = "medication";
|
||||
requiredMedic = 1;
|
||||
treatmentTime = 3;
|
||||
items[] = {"ACE_epinephrine"};
|
||||
@ -49,6 +54,8 @@ class ACE_Medical_Actions {
|
||||
class BloodIV: Bandage {
|
||||
displayName = CSTRING(Transfuse_Blood);
|
||||
displayNameProgress = CSTRING(Transfusing_Blood);
|
||||
allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"};
|
||||
category = "advanced";
|
||||
requiredMedic = 1;
|
||||
treatmentTime = 20;
|
||||
items[] = {"ACE_bloodIV"};
|
||||
@ -57,14 +64,17 @@ class ACE_Medical_Actions {
|
||||
litter[] = {};
|
||||
};
|
||||
class BloodIV_500: BloodIV {
|
||||
category = "advanced";
|
||||
items[] = {"ACE_bloodIV_500"};
|
||||
};
|
||||
class BloodIV_250: BloodIV {
|
||||
category = "advanced";
|
||||
items[] = {"ACE_bloodIV_250"};
|
||||
};
|
||||
class BodyBag: Bandage {
|
||||
displayName = CSTRING(PlaceInBodyBag);
|
||||
displayNameProgress = CSTRING(PlacingInBodyBag);
|
||||
category = "advanced";
|
||||
treatmentLocations[] = {"All"};
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 4;
|
||||
@ -81,7 +91,9 @@ class ACE_Medical_Actions {
|
||||
class Diagnose: Bandage {
|
||||
displayName = CSTRING(Actions_Diagnose);
|
||||
displayNameProgress = CSTRING(Actions_Diagnosing);
|
||||
category = "examine";
|
||||
treatmentLocations[] = {"All"};
|
||||
allowedSelections[] = {"head"};
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 1;
|
||||
items[] = {};
|
||||
@ -97,10 +109,12 @@ class ACE_Medical_Actions {
|
||||
|
||||
class Advanced {
|
||||
class FieldDressing {
|
||||
displayName = CSTRING(Bandage);
|
||||
displayName = CSTRING(Actions_FieldDressing);
|
||||
displayNameProgress = CSTRING(Bandaging);
|
||||
category = "bandage";
|
||||
// Which locations can this treatment action be used? Available: Field, MedicalFacility, MedicalVehicle, All.
|
||||
treatmentLocations[] = {"All"};
|
||||
allowedSelections[] = {"All"};
|
||||
// What is the level of medical skill required for this treatment action? 0 = all soldiers, 1 = medic, 2 = doctor
|
||||
requiredMedic = 0;
|
||||
// The time it takes for a treatment action to complete. Time is in seconds.
|
||||
@ -121,20 +135,24 @@ class ACE_Medical_Actions {
|
||||
animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther";
|
||||
animationCallerSelf = "AinvPknlMstpSlayW[wpn]Dnon_medic";
|
||||
animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic";
|
||||
litter[] = { {"All", "", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}} };
|
||||
litter[] = { {"All", "_previousDamage > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_previousDamage <= 0", {"ACE_MedicalLitter_clean"}} };
|
||||
};
|
||||
class PackingBandage: fieldDressing {
|
||||
displayName = CSTRING(Actions_PackingBandage);
|
||||
items[] = {"ACE_packingBandage"};
|
||||
};
|
||||
class ElasticBandage: fieldDressing {
|
||||
displayName = CSTRING(Actions_ElasticBandage);
|
||||
items[] = {"ACE_elasticBandage"};
|
||||
};
|
||||
class QuikClot: fieldDressing {
|
||||
displayName = CSTRING(Actions_QuikClot);
|
||||
items[] = {"ACE_quikclot"};
|
||||
};
|
||||
class Tourniquet: fieldDressing {
|
||||
displayName = CSTRING(Apply_Tourniquet);
|
||||
displayNameProgress = CSTRING(Applying_Tourniquet);
|
||||
allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r", "body"};
|
||||
items[] = {"ACE_tourniquet"};
|
||||
treatmentTime = 6;
|
||||
callbackSuccess = QUOTE(DFUNC(treatmentTourniquet));
|
||||
@ -144,6 +162,8 @@ class ACE_Medical_Actions {
|
||||
class Morphine: fieldDressing {
|
||||
displayName = CSTRING(Inject_Morphine);
|
||||
displayNameProgress = CSTRING(Injecting_Morphine);
|
||||
allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"};
|
||||
category = "medication";
|
||||
items[] = {"ACE_morphine"};
|
||||
treatmentTime = 3;
|
||||
callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_medication));
|
||||
@ -163,8 +183,10 @@ class ACE_Medical_Actions {
|
||||
litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} };
|
||||
};
|
||||
class BloodIV: fieldDressing {
|
||||
displayName = CSTRING(Transfuse_Blood);
|
||||
displayName = CSTRING(Actions_Blood4_1000);
|
||||
displayNameProgress = CSTRING(Transfusing_Blood);
|
||||
allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"};
|
||||
category = "advanced";
|
||||
items[] = {"ACE_bloodIV"};
|
||||
requiredMedic = 1;
|
||||
treatmentTime = 7;
|
||||
@ -173,38 +195,45 @@ class ACE_Medical_Actions {
|
||||
litter[] = {};
|
||||
};
|
||||
class BloodIV_500: BloodIV {
|
||||
displayName = CSTRING(Actions_Blood4_500);
|
||||
items[] = {"ACE_bloodIV_500"};
|
||||
};
|
||||
class BloodIV_250: BloodIV {
|
||||
displayName = CSTRING(Actions_Blood4_250);
|
||||
items[] = {"ACE_bloodIV_250"};
|
||||
};
|
||||
class PlasmaIV: BloodIV {
|
||||
displayName = CSTRING(Transfuse_Plasma);
|
||||
displayName = CSTRING(Actions_Plasma4_1000);
|
||||
displayNameProgress = CSTRING(Transfusing_Plasma);
|
||||
items[] = {"ACE_plasmaIV"};
|
||||
animationCaller = "AinvPknlMstpSnonWnonDnon_medic1";
|
||||
};
|
||||
class PlasmaIV_500: PlasmaIV {
|
||||
displayName = CSTRING(Actions_Plasma4_500);
|
||||
items[] = {"ACE_plasmaIV_500"};
|
||||
};
|
||||
class PlasmaIV_250: PlasmaIV {
|
||||
displayName = CSTRING(Actions_Plasma4_250);
|
||||
items[] = {"ACE_plasmaIV_250"};
|
||||
};
|
||||
class SalineIV: BloodIV {
|
||||
displayName = CSTRING(Transfuse_Saline);
|
||||
displayName = CSTRING(Actions_Saline4_1000);
|
||||
displayNameProgress = CSTRING(Transfusing_Saline);
|
||||
items[] = {"ACE_salineIV"};
|
||||
animationCaller = "AinvPknlMstpSnonWnonDnon_medic1";
|
||||
};
|
||||
class SalineIV_500: SalineIV {
|
||||
displayName = CSTRING(Actions_Saline4_500);
|
||||
items[] = {"ACE_salineIV_500"};
|
||||
};
|
||||
class SalineIV_250: SalineIV {
|
||||
displayName = CSTRING(Actions_Saline4_250);
|
||||
items[] = {"ACE_salineIV_250"};
|
||||
};
|
||||
class SurgicalKit: fieldDressing {
|
||||
displayName = "";
|
||||
displayName = CSTRING(Use_SurgicalKit);
|
||||
displayNameProgress = CSTRING(TreatmentAction);
|
||||
category = "advanced";
|
||||
items[] = {"ACE_surgicalKit"};
|
||||
treatmentLocations[] = {QGVAR(useLocation_SurgicalKit)};
|
||||
requiredMedic = QGVAR(medicSetting_SurgicalKit);
|
||||
@ -217,8 +246,9 @@ class ACE_Medical_Actions {
|
||||
litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"} }};
|
||||
};
|
||||
class PersonalAidKit: fieldDressing {
|
||||
displayName = "";
|
||||
displayName = CSTRING(Use_Aid_Kit);
|
||||
displayNameProgress = CSTRING(TreatmentAction);
|
||||
category = "advanced";
|
||||
items[] = {"ACE_personalAidKit"};
|
||||
treatmentLocations[] = {QGVAR(useLocation_PAK)};
|
||||
requiredMedic = QGVAR(medicSetting_PAK);
|
||||
@ -235,8 +265,9 @@ class ACE_Medical_Actions {
|
||||
litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"}}, {"All", "", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}} }, {"All", "", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}} };
|
||||
};
|
||||
class CheckPulse: fieldDressing {
|
||||
displayName = "";
|
||||
displayName = CSTRING(Actions_CheckPulse);
|
||||
displayNameProgress = CSTRING(Check_Pulse_Content);
|
||||
category = "examine";
|
||||
treatmentLocations[] = {"All"};
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 2;
|
||||
@ -246,18 +277,23 @@ class ACE_Medical_Actions {
|
||||
callbackProgress = "";
|
||||
animationPatient = "";
|
||||
animationCaller = ""; // TODO
|
||||
animationCallerProne = "";
|
||||
animationCallerSelfProne = "";
|
||||
itemConsumed = 0;
|
||||
litter[] = {};
|
||||
};
|
||||
class CheckBloodPressure: CheckPulse {
|
||||
displayName = CSTRING(Actions_CheckBloodPressure);
|
||||
callbackSuccess = QUOTE(DFUNC(actionCheckBloodPressure));
|
||||
displayNameProgress = CSTRING(Check_Bloodpressure_Content);
|
||||
};
|
||||
class CheckResponse: CheckPulse {
|
||||
displayName = CSTRING(Check_Response);
|
||||
callbackSuccess = QUOTE(DFUNC(actionCheckResponse));
|
||||
displayNameProgress = CSTRING(Check_Response_Content);
|
||||
};
|
||||
class RemoveTourniquet: CheckPulse {
|
||||
class RemoveTourniquet: Tourniquet {
|
||||
displayName = CSTRING(Actions_RemoveTourniquet);
|
||||
treatmentTime = 2.5;
|
||||
callbackSuccess = QUOTE(DFUNC(actionRemoveTourniquet));
|
||||
condition = QUOTE([ARR_2(_this select 1, _this select 2)] call FUNC(hasTourniquetAppliedTo));
|
||||
@ -266,7 +302,9 @@ class ACE_Medical_Actions {
|
||||
class CPR: fieldDressing {
|
||||
displayName = CSTRING(Actions_CPR);
|
||||
displayNameProgress = CSTRING(Actions_PerformingCPR);
|
||||
category = "advanced";
|
||||
treatmentLocations[] = {"All"};
|
||||
allowedSelections[] = {"body"};
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 15;
|
||||
items[] = {};
|
||||
@ -286,6 +324,7 @@ class ACE_Medical_Actions {
|
||||
class BodyBag: fieldDressing {
|
||||
displayName = CSTRING(PlaceInBodyBag);
|
||||
displayNameProgress = CSTRING(PlacingInBodyBag);
|
||||
category = "advanced";
|
||||
treatmentLocations[] = {"All"};
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 2;
|
||||
@ -817,9 +856,9 @@ class ACE_Medical_Advanced {
|
||||
// specific details for the ACE_Morphine treatment action
|
||||
class Morphine {
|
||||
painReduce = 15;
|
||||
hrIncreaseLow[] = {-10, -30, 35};
|
||||
hrIncreaseNormal[] = {-10, -50, 40};
|
||||
hrIncreaseHigh[] = {-10, -40, 50};
|
||||
hrIncreaseLow[] = {-10, -20, 35};
|
||||
hrIncreaseNormal[] = {-10, -30, 35};
|
||||
hrIncreaseHigh[] = {-10, -35, 50};
|
||||
timeInSystem = 900;
|
||||
maxDose = 4;
|
||||
inCompatableMedication[] = {};
|
||||
|
@ -1,94 +1,116 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(level) {
|
||||
category = LSTRING(Category_Medical);
|
||||
value = 1;
|
||||
typeName = "SCALAR";
|
||||
values[] = {"Disabled", "Basic", "Advanced"};
|
||||
};
|
||||
class GVAR(medicSetting) {
|
||||
category = LSTRING(Category_Medical);
|
||||
value = 1;
|
||||
typeName = "SCALAR";
|
||||
values[] = {"Disabled", "Normal", "Advanced"};
|
||||
};
|
||||
class GVAR(enableFor) {
|
||||
category = LSTRING(Category_Medical);
|
||||
value = 0;
|
||||
typeName = "SCALAR";
|
||||
values[] = {"Players only", "Players and AI"};
|
||||
};
|
||||
class GVAR(enableOverdosing) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(bleedingCoefficient) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(painCoefficient) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(enableAirway) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = false;
|
||||
};
|
||||
class GVAR(enableFractures) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = false;
|
||||
};
|
||||
class GVAR(enableAdvancedWounds) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = false;
|
||||
};
|
||||
class GVAR(enableVehicleCrashes) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(enableScreams) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(playerDamageThreshold) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(AIDamageThreshold) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(enableUnconsciousnessAI) {
|
||||
category = LSTRING(Category_Medical);
|
||||
value = 1;
|
||||
typeName = "SCALAR";
|
||||
values[] = {"Disabled", "50/50", "Enabled"};
|
||||
};
|
||||
class GVAR(remoteControlledAI) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(preventInstaDeath) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(enableRevive) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 0;
|
||||
values[] = {"Disabled", "Players only", "Players and AI"};
|
||||
};
|
||||
class GVAR(maxReviveTime) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 120;
|
||||
};
|
||||
class GVAR(amountOfReviveLives) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = -1;
|
||||
};
|
||||
class GVAR(allowDeadBodyMovement) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(allowLitterCreation) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(litterSimulationDetail) {
|
||||
category = LSTRING(Category_Medical);
|
||||
displayName = CSTRING(litterSimulationDetail);
|
||||
description = CSTRING(litterSimulationDetail_Desc);
|
||||
typeName = "SCALAR";
|
||||
@ -100,40 +122,48 @@ class ACE_Settings {
|
||||
isClientSettable = 1;
|
||||
};
|
||||
class GVAR(litterCleanUpDelay) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(medicSetting_PAK) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 1;
|
||||
values[] = {"Anyone", "Medics only", "Doctors only"};
|
||||
};
|
||||
class GVAR(medicSetting_SurgicalKit) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 1;
|
||||
values[] = {"Anyone", "Medics only", "Doctors only"};
|
||||
};
|
||||
class GVAR(consumeItem_PAK) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 0;
|
||||
values[] = {"No", "Yes"};
|
||||
};
|
||||
class GVAR(consumeItem_SurgicalKit) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 0;
|
||||
values[] = {"No", "Yes"};
|
||||
};
|
||||
class GVAR(useLocation_PAK) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 3;
|
||||
values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"};
|
||||
};
|
||||
class GVAR(useLocation_SurgicalKit) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "SCALAR";
|
||||
value = 2;
|
||||
values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"};
|
||||
};
|
||||
class GVAR(useCondition_PAK) {
|
||||
category = LSTRING(Category_Medical);
|
||||
displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description);
|
||||
typeName = "SCALAR";
|
||||
@ -141,6 +171,7 @@ class ACE_Settings {
|
||||
values[] = {"Anytime", "Stable"};
|
||||
};
|
||||
class GVAR(useCondition_SurgicalKit) {
|
||||
category = LSTRING(Category_Medical);
|
||||
displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description);
|
||||
typeName = "SCALAR";
|
||||
@ -148,20 +179,24 @@ class ACE_Settings {
|
||||
values[] = {"Anytime", "Stable"};
|
||||
};
|
||||
class GVAR(keepLocalSettingsSynced) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(healHitPointAfterAdvBandage) {
|
||||
category = LSTRING(Category_Medical);
|
||||
displayName = CSTRING(healHitPointAfterAdvBandage);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(painIsOnlySuppressed) {
|
||||
category = LSTRING(Category_Medical);
|
||||
displayName = CSTRING(painIsOnlySuppressed);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
class GVAR(painEffectType) {
|
||||
category = LSTRING(Category_Medical);
|
||||
displayName = CSTRING(painEffectType);
|
||||
typeName = "SCALAR";
|
||||
value = 0;
|
||||
@ -169,15 +204,18 @@ class ACE_Settings {
|
||||
isClientSettable = 1;
|
||||
};
|
||||
class GVAR(allowUnconsciousAnimationOnTreatment) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
class GVAR(moveUnitsFromGroupOnUnconscious) {
|
||||
category = LSTRING(Category_Medical);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
};
|
||||
|
||||
class GVAR(menuTypeStyle) {
|
||||
category = LSTRING(Category_Medical);
|
||||
displayName = CSTRING(menuTypeDisplay);
|
||||
description = CSTRING(menuTypeDescription);
|
||||
typeName = "SCALAR";
|
||||
|
@ -92,7 +92,7 @@ class CfgVehicles {
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class disable {
|
||||
name = CSTRING(disabled);
|
||||
name = ECSTRING(common,Disabled);
|
||||
value = 0;
|
||||
};
|
||||
class normal {
|
||||
@ -101,7 +101,7 @@ class CfgVehicles {
|
||||
default = 1;
|
||||
};
|
||||
class full {
|
||||
name = CSTRING(enabled);
|
||||
name = ECSTRING(common,Enabled);
|
||||
value = 2;
|
||||
};
|
||||
};
|
||||
@ -198,8 +198,8 @@ class CfgVehicles {
|
||||
description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description);
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class keep { name = CSTRING(No); value = 0; };
|
||||
class remove { name = CSTRING(Yes); value = 1; default = 1; };
|
||||
class keep { name = ECSTRING(common,No); value = 0; };
|
||||
class remove { name = ECSTRING(common,Yes); value = 1; default = 1; };
|
||||
};
|
||||
};
|
||||
class useCondition_PAK {
|
||||
@ -220,7 +220,7 @@ class CfgVehicles {
|
||||
class vehicle { name = CSTRING(AdvancedMedicalSettings_vehicle); value = 1; };
|
||||
class facility { name = CSTRING(AdvancedMedicalSettings_facility); value = 2; };
|
||||
class vehicleAndFacility { name = CSTRING(AdvancedMedicalSettings_vehicleAndFacility); value = 3; default = 1; };
|
||||
class disabled { name = CSTRING(AdvancedMedicalSettings_disabled); value = 4;};
|
||||
class disabled { name = ECSTRING(common,Disabled); value = 4;};
|
||||
};
|
||||
};
|
||||
class medicSetting_SurgicalKit: medicSetting_PAK {
|
||||
@ -280,7 +280,7 @@ class CfgVehicles {
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 0;
|
||||
class values {
|
||||
class disable { name = CSTRING(disabled); value = 0; default = 1;};
|
||||
class disable { name = ECSTRING(common,Disabled); value = 0; default = 1;};
|
||||
class playerOnly { name = CSTRING(playeronly); value = 1; };
|
||||
class playerAndAI { name = CSTRING(playersandai); value = 2; };
|
||||
};
|
||||
@ -373,11 +373,11 @@ class CfgVehicles {
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class none {
|
||||
name = CSTRING(No);
|
||||
name = ECSTRING(common,No);
|
||||
value = 0;
|
||||
};
|
||||
class medic {
|
||||
name = CSTRING(Yes);
|
||||
name = ECSTRING(common,Yes);
|
||||
value = 1;
|
||||
default = 1;
|
||||
};
|
||||
@ -717,6 +717,9 @@ class CfgVehicles {
|
||||
destrType = "DestructNo";
|
||||
model = QUOTE(PATHTOF(data\littergeneric.p3d));
|
||||
};
|
||||
class ACE_MedicalLitter_clean: ACE_MedicalLitterBase {
|
||||
model = QUOTE(PATHTOF(data\littergeneric_clean.p3d));
|
||||
};
|
||||
class ACE_MedicalLitter_bandage1: ACE_MedicalLitterBase {
|
||||
model = QUOTE(PATHTOF(data\littergeneric_bandages1.p3d));
|
||||
};
|
||||
|
BIN
addons/medical/data/ace_litterclean_co.paa
Normal file
BIN
addons/medical/data/ace_litterclean_co.paa
Normal file
Binary file not shown.
BIN
addons/medical/data/littergeneric_clean.p3d
Normal file
BIN
addons/medical/data/littergeneric_clean.p3d
Normal file
Binary file not shown.
@ -58,4 +58,5 @@ if ([_caller] call FUNC(isMedic)) then {
|
||||
|
||||
if (_logOutPut != "") then {
|
||||
[_target,"activity", LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog);
|
||||
[_target,"quick_view", LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog);
|
||||
};
|
||||
|
@ -50,4 +50,5 @@ if (_heartRate > 1.0) then {
|
||||
|
||||
if (_logOutPut != "") then {
|
||||
[_unit,"activity", LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog);
|
||||
[_unit,"quick_view", LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog);
|
||||
};
|
||||
|
@ -28,3 +28,4 @@ if ([_target] call EFUNC(common,isAwake)) then {
|
||||
["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName)], 2, _caller]] call EFUNC(common,targetEvent);
|
||||
|
||||
[_target,"activity",_output, [[_target] call EFUNC(common,getName)]] call FUNC(addToLog);
|
||||
[_target,"quick_view",_output, [[_target] call EFUNC(common,getName)]] call FUNC(addToLog);
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition", "_patientStateCondition"];
|
||||
private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition", "_patientStateCondition", "_allowedSelections"];
|
||||
_caller = _this select 0;
|
||||
_target = _this select 1;
|
||||
_selectionName = _this select 2;
|
||||
@ -44,6 +44,8 @@ if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false};
|
||||
_items = getArray (_config >> "items");
|
||||
if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false};
|
||||
|
||||
_allowedSelections = getArray (_config >> "allowedSelections");
|
||||
if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith {false};
|
||||
|
||||
_return = true;
|
||||
if (getText (_config >> "condition") != "") then {
|
||||
|
@ -16,12 +16,13 @@
|
||||
|
||||
#define MIN_ENTRIES_LITTER_CONFIG 3
|
||||
|
||||
private ["_target", "_className", "_config", "_litter", "_createLitter", "_position", "_createdLitter", "_caller", "_selectionName", "_usersOfItems"];
|
||||
private ["_target", "_className", "_config", "_litter", "_createLitter", "_position", "_createdLitter", "_caller", "_selectionName", "_usersOfItems", "_previousDamage"];
|
||||
_caller = _this select 0;
|
||||
_target = _this select 1;
|
||||
_selectionName = _this select 2;
|
||||
_className = _this select 3;
|
||||
_usersOfItems = _this select 5;
|
||||
_previousDamage = _this select 6;
|
||||
|
||||
if !(GVAR(allowLitterCreation)) exitwith {};
|
||||
if (vehicle _caller != _caller || vehicle _target != _target) exitwith {};
|
||||
@ -76,7 +77,7 @@ _createdLitter = [];
|
||||
_litterCondition = missionNamespace getvariable _litterCondition;
|
||||
if (typeName _litterCondition != "CODE") then {_litterCondition = {false}};
|
||||
};
|
||||
if !([_caller, _target, _selectionName, _className, _usersOfItems] call _litterCondition) exitwith {};
|
||||
if !([_caller, _target, _selectionName, _className, _usersOfItems, _previousDamage] call _litterCondition) exitwith {};
|
||||
|
||||
if (typeName _litterOptions == "ARRAY") then {
|
||||
// Loop through through the litter options and place the litter
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig", "_patientStateCondition"];
|
||||
private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig", "_patientStateCondition", "_allowedSelections"];
|
||||
_caller = _this select 0;
|
||||
_target = _this select 1;
|
||||
_selectionName = _this select 2;
|
||||
@ -49,6 +49,9 @@ _medicRequired = if (isNumber (_config >> "requiredMedic")) then {
|
||||
|
||||
if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false};
|
||||
|
||||
_allowedSelections = getArray (_config >> "allowedSelections");
|
||||
if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith {false};
|
||||
|
||||
// Check item
|
||||
_items = getArray (_config >> "items");
|
||||
if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false};
|
||||
@ -156,7 +159,7 @@ if (_caller == _target) then {
|
||||
_callerAnim = [getText (_config >> "animationCallerSelf"), getText (_config >> "animationCallerSelfProne")] select (stance _caller == "PRONE");
|
||||
};
|
||||
|
||||
_caller setvariable [QGVAR(selectedWeaponOnTreatment), currentWeapon _caller];
|
||||
_caller setvariable [QGVAR(selectedWeaponOnTreatment), (weaponState _caller)];
|
||||
|
||||
// Cannot use secondairy weapon for animation
|
||||
if (currentWeapon _caller == secondaryWeapon _caller) then {
|
||||
|
@ -31,4 +31,7 @@ if (random(1)>= 0.6) exitwith {
|
||||
_target setvariable [QGVAR(bloodPressure), [50,70]];
|
||||
};
|
||||
|
||||
[_target, "activity", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
|
||||
[_target, "activity_view", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message
|
||||
|
||||
true;
|
||||
|
@ -38,5 +38,6 @@ if !([_target] call FUNC(hasMedicalEnabled)) exitwith {
|
||||
}foreach _items;*/
|
||||
|
||||
[_target, "activity", LSTRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
|
||||
[_target, "activity_view", LSTRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message
|
||||
|
||||
true;
|
||||
|
@ -68,4 +68,7 @@ if (alive _target) exitwith {
|
||||
|
||||
// Resetting damage
|
||||
_target setDamage 0;
|
||||
|
||||
[_target, "activity", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
|
||||
[_target, "activity_view", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message
|
||||
};
|
||||
|
@ -33,5 +33,6 @@ _items = _this select 4;
|
||||
}foreach _items;
|
||||
|
||||
[_target, "activity", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog);
|
||||
[_target, "activity_view", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog); // TODO expand message
|
||||
|
||||
true;
|
||||
|
@ -30,3 +30,4 @@ _removeItem = _items select 0;
|
||||
[[_target, _className], QUOTE(DFUNC(treatmentIVLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */
|
||||
[_target, _removeItem] call FUNC(addToTriageCard);
|
||||
[_target, "activity", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
|
||||
[_target, "activity_view", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message
|
||||
|
@ -44,6 +44,7 @@ _removeItem = _items select 0;
|
||||
|
||||
[_target, _removeItem] call FUNC(addToTriageCard);
|
||||
[_target, "activity", LSTRING(Activity_appliedTourniquet), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
|
||||
[_target, "activity_view", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message
|
||||
|
||||
|
||||
true;
|
||||
|
@ -44,9 +44,14 @@ if (vehicle _caller == _caller) then {
|
||||
};
|
||||
_caller setvariable [QGVAR(treatmentPrevAnimCaller), nil];
|
||||
|
||||
_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), ""]);
|
||||
if (_weaponSelect != "") then {
|
||||
_caller selectWeapon _weaponSelect;
|
||||
_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), []]);
|
||||
if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") && {_previousWeapon in (weapons _caller)}}) then {
|
||||
for "_index" from 0 to 99 do {
|
||||
_caller action ["SwitchWeapon", _caller, _caller, _index];
|
||||
//Just check weapon, muzzle and mode (ignore ammo in case they were reloading)
|
||||
if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {TRACE_1("Restoring", (weaponState _caller));};
|
||||
if ((weaponState _caller) isEqualTo ["","","","",0]) exitWith {ERROR("weaponState not found");};
|
||||
};
|
||||
} else {
|
||||
_caller action ["SwitchWeapon", _caller, _caller, 99];
|
||||
};
|
||||
|
@ -42,9 +42,14 @@ if (vehicle _caller == _caller) then {
|
||||
};
|
||||
_caller setvariable [QGVAR(treatmentPrevAnimCaller), nil];
|
||||
|
||||
_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), ""]);
|
||||
if (_weaponSelect != "") then {
|
||||
_caller selectWeapon _weaponSelect;
|
||||
_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), []]);
|
||||
if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") && {_previousWeapon in (weapons _caller)}}) then {
|
||||
for "_index" from 0 to 99 do {
|
||||
_caller action ["SwitchWeapon", _caller, _caller, _index];
|
||||
//Just check weapon, muzzle and mode (ignore ammo in case they were reloading)
|
||||
if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {TRACE_1("Restoring", (weaponState _caller));};
|
||||
if ((weaponState _caller) isEqualTo ["","","","",0]) exitWith {ERROR("weaponState not found");};
|
||||
};
|
||||
} else {
|
||||
_caller action ["SwitchWeapon", _caller, _caller, 99];
|
||||
};
|
||||
@ -62,11 +67,24 @@ if (isNil _callback) then {
|
||||
_callback = missionNamespace getvariable _callback;
|
||||
};
|
||||
|
||||
_args call _callback;
|
||||
//Get current damage before treatment (for litter)
|
||||
_previousDamage = switch (toLower _selectionName) do {
|
||||
case ("head"): {_target getHitPointDamage "HitHead"};
|
||||
case ("body"): {_target getHitPointDamage "HitBody"};
|
||||
case ("hand_l"): {_target getHitPointDamage "HitLeftArm"};
|
||||
case ("hand_r"): {_target getHitPointDamage "HitRightArm"};
|
||||
case ("leg_l"): {_target getHitPointDamage "HitLeftLeg"};
|
||||
case ("leg_r"): {_target getHitPointDamage "HitRightLeg"};
|
||||
default {damage _target};
|
||||
};
|
||||
|
||||
_args call _callback;
|
||||
_args pushBack _previousDamage;
|
||||
_args call FUNC(createLitter);
|
||||
|
||||
//If we're not already tracking vitals, start:
|
||||
if (!(_target getvariable [QGVAR(addedToUnitLoop),false])) then {
|
||||
[_target] call FUNC(addToInjuredCollection);
|
||||
};
|
||||
|
||||
["medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call EFUNC(common,localEvent);
|
||||
|
@ -2928,24 +2928,6 @@
|
||||
<Polish>Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy?</Polish>
|
||||
<Czech>Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče?</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_disabled">
|
||||
<English>Disabled</English>
|
||||
<Russian>Отключено</Russian>
|
||||
<Polish>Wyłączone</Polish>
|
||||
<Spanish>Desactivado</Spanish>
|
||||
<German>Deaktiviert</German>
|
||||
<Czech>Zakázáno</Czech>
|
||||
<Portuguese>Desativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_enabled">
|
||||
<English>Enabled</English>
|
||||
<Russian>Включено</Russian>
|
||||
<Polish>Włączone</Polish>
|
||||
<Spanish>Activado</Spanish>
|
||||
<German>Aktiviert</German>
|
||||
<Czech>Povoleno</Czech>
|
||||
<Portuguese>Ativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_preventInstaDeath_DisplayName">
|
||||
<English>Prevent instant death</English>
|
||||
<Russian>Отключить мгновенную смерть</Russian>
|
||||
@ -3237,15 +3219,6 @@
|
||||
<Czech>Vozidla a zařízení</Czech>
|
||||
<Portuguese>Veículos e instalações</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_disabled">
|
||||
<English>Disabled</English>
|
||||
<Russian>Отключено</Russian>
|
||||
<Polish>Wyłączone</Polish>
|
||||
<Spanish>Desactivado</Spanish>
|
||||
<German>Deaktiviert</German>
|
||||
<Czech>Zakázáno</Czech>
|
||||
<Portuguese>Desativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName">
|
||||
<English>Allow Surgical kit (Adv)</English>
|
||||
<Russian>Разрешить хирургический набор (усл.)</Russian>
|
||||
@ -3612,30 +3585,6 @@
|
||||
<Czech>[ACE] Zdravotnické zásoby (pokročilé)</Czech>
|
||||
<Portuguese>[ACE] Caixa com suprimentos médicos (Avançados)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Yes">
|
||||
<English>Yes</English>
|
||||
<German>Ja</German>
|
||||
<Spanish>Si</Spanish>
|
||||
<Polish>Tak</Polish>
|
||||
<Czech>Ano</Czech>
|
||||
<French>Oui</French>
|
||||
<Russian>Да</Russian>
|
||||
<Hungarian>Igen</Hungarian>
|
||||
<Portuguese>Sim</Portuguese>
|
||||
<Italian>Si</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_No">
|
||||
<English>No</English>
|
||||
<German>Nein</German>
|
||||
<Spanish>No</Spanish>
|
||||
<Polish>Nie</Polish>
|
||||
<Czech>Ne</Czech>
|
||||
<French>Non</French>
|
||||
<Russian>Нет</Russian>
|
||||
<Hungarian>Nem</Hungarian>
|
||||
<Portuguese>Não</Portuguese>
|
||||
<Italian>No</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AnyTime">
|
||||
<English>Anytime</English>
|
||||
<Czech>Kdykoli</Czech>
|
||||
@ -3648,5 +3597,17 @@
|
||||
<Spanish>Estable</Spanish>
|
||||
<Polish>Po stabilizacji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Category_Medical">
|
||||
<English>Medical</English>
|
||||
<Czech>Zdravotní</Czech>
|
||||
<French>Médical</French>
|
||||
<German>Sanitäter</German>
|
||||
<Italian>Medico</Italian>
|
||||
<Polish>Medyczne</Polish>
|
||||
<Portuguese>Médico</Portuguese>
|
||||
<Russian>Медик</Russian>
|
||||
<Spanish>Médico</Spanish>
|
||||
<Hungarian>Orvosi</Hungarian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 52 KiB |
1
addons/medical_menu/$PBOPREFIX$
Normal file
1
addons/medical_menu/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\medical_menu
|
25
addons/medical_menu/ACE_Settings.hpp
Normal file
25
addons/medical_menu/ACE_Settings.hpp
Normal file
@ -0,0 +1,25 @@
|
||||
|
||||
class ACE_Settings {
|
||||
class GVAR(allow) {
|
||||
displayName = CSTRING(allow);
|
||||
description = CSTRING(allow_Descr);
|
||||
value = 1;
|
||||
typeName = "SCALAR";
|
||||
values[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled), ECSTRING(common,VehiclesOnly)};
|
||||
};
|
||||
class GVAR(useMenu) {
|
||||
displayName = CSTRING(useMenu);
|
||||
description = CSTRING(useMenu_Descr);
|
||||
value = 0;
|
||||
typeName = "SCALAR";
|
||||
values[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled), ECSTRING(common,VehiclesOnly)};
|
||||
isClientSettable = 1;
|
||||
};
|
||||
class GVAR(openAfterTreatment) {
|
||||
displayName = CSTRING(openAfterTreatment);
|
||||
description = CSTRING(openAfterTreatment_Descr);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
isClientSettable = 1;
|
||||
};
|
||||
};
|
11
addons/medical_menu/CfgEventHandlers.hpp
Normal file
11
addons/medical_menu/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
70
addons/medical_menu/CfgVehicles.hpp
Normal file
70
addons/medical_menu/CfgVehicles.hpp
Normal file
@ -0,0 +1,70 @@
|
||||
|
||||
class CfgVehicles {
|
||||
|
||||
class ACE_Module;
|
||||
class ACE_moduleMedicalSettings: ACE_Module {
|
||||
scope = 2;
|
||||
displayName = CSTRING(module_DisplayName);
|
||||
icon = QUOTE(PATHTOEF(medical,UI\Icon_Module_Medical_ca.paa));
|
||||
category = "ACE_medical";
|
||||
function = QUOTE(DFUNC(module));
|
||||
functionPriority = 1;
|
||||
isGlobal = 1;
|
||||
isTriggerActivated = 0;
|
||||
author = ECSTRING(common,ACETeam);
|
||||
class Arguments {
|
||||
class allow {
|
||||
displayName = CSTRING(allow);
|
||||
description = CSTRING(allow_Descr);
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class disable {
|
||||
name = ECSTRING(common,Disabled);
|
||||
value = 0;
|
||||
};
|
||||
class enable {
|
||||
name = ECSTRING(common,Enabled);
|
||||
value = 1;
|
||||
default = 1;
|
||||
};
|
||||
class VehiclesOnly {
|
||||
name = ECSTRING(common,VehiclesOnly);
|
||||
value = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = CSTRING(module_Desc);
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
|
||||
class Man;
|
||||
class CAManBase: Man {
|
||||
class ACE_SelfActions {
|
||||
class Medical_Menu {
|
||||
displayName = CSTRING(OpenMenu);
|
||||
runOnHover = 0;
|
||||
exceptions[] = {"isNotInside"};
|
||||
condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu));
|
||||
statement = QUOTE([_target] call DFUNC(openMenu));
|
||||
icon = PATHTOEF(medical,UI\icons\medical_cross.paa);
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_Actions {
|
||||
// Create a consolidates medical menu for treatment while boarded
|
||||
class ACE_MainActions {
|
||||
class Medical_Menu {
|
||||
displayName = CSTRING(OpenMenu);
|
||||
runOnHover = 0;
|
||||
exceptions[] = {"isNotInside"};
|
||||
condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu));
|
||||
statement = QUOTE([_target] call DFUNC(openMenu));
|
||||
icon = PATHTOEF(medical,UI\icons\medical_cross.paa);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
10
addons/medical_menu/README.md
Normal file
10
addons/medical_menu/README.md
Normal file
@ -0,0 +1,10 @@
|
||||
ace_medical_menu
|
||||
===============
|
||||
|
||||
Provides the CSE medical menu for the advanced medical system.
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [Glowbal](https://github.com/Glowbal)
|
34
addons/medical_menu/XEH_postInit.sqf
Normal file
34
addons/medical_menu/XEH_postInit.sqf
Normal file
@ -0,0 +1,34 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitwith {};
|
||||
|
||||
["medical_treatmentSuccess", {
|
||||
|
||||
if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then {
|
||||
GVAR(pendingReopen) = false;
|
||||
[{
|
||||
[GVAR(INTERACTION_TARGET)] call FUNC(openMenu);
|
||||
}, []] call EFUNC(common,execNextFrame);
|
||||
};
|
||||
}] call EFUNC(common,addEventhandler);
|
||||
|
||||
|
||||
["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey),
|
||||
{
|
||||
_target = cursorTarget;
|
||||
if (!(_target isKindOf "CAManBase") || ACE_player distance _target > 10) then {_target = ACE_player};
|
||||
// Conditions: canInteract
|
||||
if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
if !([ACE_player, _target] call FUNC(canOpenMenu)) exitwith {false};
|
||||
|
||||
// Statement
|
||||
[_target] call FUNC(openMenu);
|
||||
false
|
||||
},
|
||||
{
|
||||
if (ACE_time - GVAR(lastOpenedOn) > 0.5) then {
|
||||
[ObjNull] call FUNC(openMenu);
|
||||
};
|
||||
},
|
||||
[35, [false, false, false]], false, 0] call CBA_fnc_addKeybind;
|
||||
|
29
addons/medical_menu/XEH_preInit.sqf
Normal file
29
addons/medical_menu/XEH_preInit.sqf
Normal file
@ -0,0 +1,29 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(onMenuOpen);
|
||||
PREP(openMenu);
|
||||
|
||||
PREP(canOpenMenu);
|
||||
PREP(updateIcons);
|
||||
PREP(updateUIInfo);
|
||||
PREP(handleUI_DisplayOptions);
|
||||
PREP(handleUI_dropDownTriageCard);
|
||||
PREP(getTreatmentOptions);
|
||||
PREP(updateActivityLog);
|
||||
PREP(updateQuickViewLog);
|
||||
PREP(updateBodyImage);
|
||||
PREP(updateInformationLists);
|
||||
PREP(setTriageStatus);
|
||||
PREP(collectActions);
|
||||
PREP(module);
|
||||
|
||||
GVAR(INTERACTION_TARGET) = objNull;
|
||||
GVAR(actionsOther) = [];
|
||||
GVAR(actionsSelf) = [];
|
||||
GVAR(selectedBodyPart) = 0;
|
||||
|
||||
call FUNC(collectActions);
|
||||
|
||||
ADDON = true;
|
18
addons/medical_menu/config.cpp
Normal file
18
addons/medical_menu/config.cpp
Normal file
@ -0,0 +1,18 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_medical"};
|
||||
author[] = {$STR_ACE_Common_ACETeam, "Glowbal"};
|
||||
authorUrl = "http://ace3mod.com";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "ui\menu.hpp"
|
||||
#include "ACE_Settings.hpp"
|
||||
#include "CfgVehicles.hpp"
|
BIN
addons/medical_menu/data/background_img.paa
Normal file
BIN
addons/medical_menu/data/background_img.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/advanced_treatment_small.paa
Normal file
BIN
addons/medical_menu/data/icons/advanced_treatment_small.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/airway_management_small.paa
Normal file
BIN
addons/medical_menu/data/icons/airway_management_small.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/bandage_fracture_small.paa
Normal file
BIN
addons/medical_menu/data/icons/bandage_fracture_small.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/examine_patient_small.paa
Normal file
BIN
addons/medical_menu/data/icons/examine_patient_small.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_advanced_treatment.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_advanced_treatment.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_airway_management.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_airway_management.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_bandage_fracture.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_bandage_fracture.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_bleeding.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_bleeding.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_carry.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_carry.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_examine_patient.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_examine_patient.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_medication.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_medication.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_toggle_self.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_toggle_self.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_tourniquet.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_tourniquet.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_tourniquet_small.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_tourniquet_small.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/icon_triage_card.paa
Normal file
BIN
addons/medical_menu/data/icons/icon_triage_card.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/medication_small.paa
Normal file
BIN
addons/medical_menu/data/icons/medication_small.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/toggle_self_small.paa
Normal file
BIN
addons/medical_menu/data/icons/toggle_self_small.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/icons/triage_card_small.paa
Normal file
BIN
addons/medical_menu/data/icons/triage_card_small.paa
Normal file
Binary file not shown.
BIN
addons/medical_menu/data/ui_background.paa
Normal file
BIN
addons/medical_menu/data/ui_background.paa
Normal file
Binary file not shown.
24
addons/medical_menu/functions/fnc_canOpenMenu.sqf
Normal file
24
addons/medical_menu/functions/fnc_canOpenMenu.sqf
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Check if ACE_player can Open the medical menu
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Caller <OBJECT>
|
||||
* 1: Target <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Can open <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_medical_menu_canOpenMenu
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_caller", "_target"];
|
||||
|
||||
if !(GVAR(allow) == 1 || (GVAR(allow) == 2 && {vehicle _caller != _caller || vehicle _target != _target} && {alive ACE_player})) exitwith {false};
|
||||
if !(GVAR(useMenu) == 1 || (GVAR(useMenu) == 2 && {vehicle _caller != _caller || vehicle _target != _target} && {alive ACE_player})) exitwith {false};
|
||||
|
||||
true;
|
42
addons/medical_menu/functions/fnc_collectActions.sqf
Normal file
42
addons/medical_menu/functions/fnc_collectActions.sqf
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Collect treatment actions from medical config
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_medical_menu_fnc_collectActions
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_configBasic", "_configAdvanced", "_fnc_compileActionsLevel"];
|
||||
_configBasic = (configFile >> "ACE_Medical_Actions" >> "Basic");
|
||||
_configAdvanced = (configFile >> "ACE_Medical_Actions" >> "Advanced");
|
||||
|
||||
_fnc_compileActionsLevel = {
|
||||
private ["_entryCount", "_actions", "_displayName", "_condition", "_category", "_statement"];
|
||||
params ["_config"];
|
||||
_actions = [];
|
||||
|
||||
{
|
||||
if (isClass _x) then {
|
||||
_displayName = getText (_x >> "displayName");
|
||||
_category = getText (_x >> "category");
|
||||
_condition = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,canTreatCached)), configName _x];
|
||||
_statement = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,treatment)), configName _x];
|
||||
_actions pushBack [_displayName, _category, compile _condition, compile _statement];
|
||||
};
|
||||
nil
|
||||
}count ("true" configClasses _config);
|
||||
|
||||
_actions // return
|
||||
};
|
||||
|
||||
GVAR(actionsBasic) = [_configBasic] call _fnc_compileActionsLevel;
|
||||
GVAR(actionsAdvanced) = [_configAdvanced] call _fnc_compileActionsLevel;
|
42
addons/medical_menu/functions/fnc_getTreatmentOptions.sqf
Normal file
42
addons/medical_menu/functions/fnc_getTreatmentOptions.sqf
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Grab available treatment options for given category
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The medic <OBJECT>
|
||||
* 1: The patient <OBJECT>
|
||||
* 2: Category name <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Available actions <ARRAY>
|
||||
*
|
||||
* Exmaple:
|
||||
* [ACE_player, poor_dude, "some category"] call ace_medical_menu_fnc_getTreatmentOptions
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private "_actions";
|
||||
params ["_player", "_target", "_name"];
|
||||
|
||||
if (!([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitwith {[]};
|
||||
|
||||
_actions = if (EGVAR(medical,level) == 2) then {
|
||||
GVAR(actionsAdvanced);
|
||||
} else {
|
||||
GVAR(actionsBasic);
|
||||
};
|
||||
|
||||
_collectedActions = [];
|
||||
|
||||
_bodyPart = EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart);
|
||||
{
|
||||
_x params ["", "_currentCategory", "_currentCondition"];
|
||||
if (_name == _currentCategory && {call _currentCondition}) then {
|
||||
_collectedActions pushBack _x;
|
||||
};
|
||||
nil
|
||||
} count _actions;
|
||||
|
||||
_collectedActions // return
|
110
addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf
Normal file
110
addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf
Normal file
@ -0,0 +1,110 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Display the available treatment options in category
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Category name <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* ["some category"] call ace_medical_menu_handleUI_DisplayOptions
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define START_IDC 20
|
||||
#define END_IDC 27
|
||||
#define AMOUNT_OF_ENTRIES (count _entries)
|
||||
|
||||
if (!hasInterface) exitwith{};
|
||||
|
||||
private ["_entries", "_display", "_newTarget", "_card", "_ctrl", "_code"];
|
||||
|
||||
params ["_name"];
|
||||
|
||||
disableSerialization;
|
||||
|
||||
_display = uiNamespace getVariable QGVAR(medicalMenu);
|
||||
if (isNil "_display") exitwith {}; // no valid dialog present
|
||||
|
||||
if (_name isEqualTo "toggle") exitwith {
|
||||
if (GVAR(INTERACTION_TARGET) != ACE_player) then {
|
||||
_newTarget = ACE_player;
|
||||
} else {
|
||||
_newTarget = GVAR(INTERACTION_TARGET_PREVIOUS);
|
||||
};
|
||||
|
||||
GVAR(INTERACTION_TARGET_PREVIOUS) = GVAR(INTERACTION_TARGET);
|
||||
[_newTarget] spawn {
|
||||
closeDialog 0;
|
||||
sleep 0.1;
|
||||
[_this select 0] call FUNC(openMenu);
|
||||
};
|
||||
};
|
||||
|
||||
// Clean the dropdown options list from all actions
|
||||
for [{_x = START_IDC}, {_x <= END_IDC}, {_x = _x + 1}] do {
|
||||
_ctrl = (_display displayCtrl (_x));
|
||||
_ctrl ctrlSetText "";
|
||||
_ctrl ctrlShow false;
|
||||
_ctrl ctrlSetEventHandler ["ButtonClick",""];
|
||||
_ctrl ctrlSetTooltip "";
|
||||
_ctrl ctrlCommit 0;
|
||||
};
|
||||
|
||||
GVAR(LatestDisplayOptionMenu) = _name;
|
||||
|
||||
// The triage card has no options available
|
||||
lbClear 212;
|
||||
if (_name isEqualTo "triage") exitwith {
|
||||
|
||||
ctrlEnable [212, true];
|
||||
private ["_log", "_triageCardTexts", "_message"];
|
||||
_log = GVAR(INTERACTION_TARGET) getvariable [QEGVAR(medical,triageCard), []];
|
||||
_triageCardTexts = [];
|
||||
{
|
||||
_x params ["_item", "_amount", "_time"];
|
||||
_message = _item;
|
||||
if (isClass(configFile >> "CfgWeapons" >> _item)) then {
|
||||
_message = getText(configFile >> "CfgWeapons" >> _item >> "DisplayName");
|
||||
} else {
|
||||
if (isLocalized _message) then {
|
||||
_message = localize _message;
|
||||
};
|
||||
};
|
||||
_triageCardTexts pushback format["%1x - %2 (%3m)", _amount, _message, round((ACE_time - _time) / 60)];
|
||||
nil;
|
||||
}count _log;
|
||||
|
||||
if (count _triageCardTexts == 0) exitwith {
|
||||
lbAdd [212,(localize ELSTRING(medical,TriageCard_NoEntry))];
|
||||
};
|
||||
{
|
||||
lbAdd [212,_x];
|
||||
nil;
|
||||
}count _triageCardTexts;
|
||||
};
|
||||
|
||||
ctrlEnable [212, false];
|
||||
|
||||
_entries = [ACE_player, GVAR(INTERACTION_TARGET), _name] call FUNC(getTreatmentOptions);
|
||||
|
||||
{
|
||||
//player sidechat format["TRIGGERED: %1",_x];
|
||||
if (_forEachIndex > END_IDC) exitwith {};
|
||||
_ctrl = (_display displayCtrl (START_IDC + _forEachIndex));
|
||||
if (!(_forEachIndex > AMOUNT_OF_ENTRIES)) then {
|
||||
_ctrl ctrlSetText (_x select 0);
|
||||
_code = format ["ace_medical_menu_pendingReopen = true; call %1;", (_x select 3)];
|
||||
_ctrl ctrlSetEventHandler ["ButtonClick", _code];
|
||||
_ctrl ctrlSetTooltip (_x select 0); // TODO implement
|
||||
_ctrl ctrlShow true;
|
||||
} else {
|
||||
_ctrl ctrlSetText "";
|
||||
_ctrl ctrlSetEventHandler ["ButtonClick", ""];
|
||||
};
|
||||
_ctrl ctrlCommit 0;
|
||||
} forEach _entries;
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Handle the triage card display
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_medical_menu_handleUI_dropDownTriageCard
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_display", "_pos", "_ctrl", "_currentPos", "_idc"];
|
||||
|
||||
disableSerialization;
|
||||
|
||||
_display = uiNamespace getVariable QGVAR(medicalMenu);
|
||||
_pos = [0, 0, 0, 0];
|
||||
_currentPos = ctrlPosition (_display displayCtrl 2002);
|
||||
_currentPos params ["_currentPosX", "_currentPosY"];
|
||||
if (_currentPosX == 0 && _currentPosY == 0) then {
|
||||
_pos = ctrlPosition (_display displayCtrl 2001);
|
||||
};
|
||||
|
||||
for "_idc" from 2002 to 2006 step 1 do {
|
||||
_pos set [1, (_pos select 1) + (_pos select 3)];
|
||||
_ctrl = _display displayCtrl _idc;
|
||||
_ctrl ctrlSetPosition _pos;
|
||||
_ctrl ctrlCommit 0;
|
||||
};
|
22
addons/medical_menu/functions/fnc_module.sqf
Normal file
22
addons/medical_menu/functions/fnc_module.sqf
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Module for adjusting the medical menu settings
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The module logic <LOGIC>
|
||||
* 1: units <ARRAY>
|
||||
* 2: activated <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* None <NIL>
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_logic", "_units", "_activated"];
|
||||
|
||||
if !(_activated) exitWith {};
|
||||
|
||||
[_logic, QGVAR(allow), "allow"] call EFUNC(common,readSettingFromModule);
|
77
addons/medical_menu/functions/fnc_onMenuOpen.sqf
Normal file
77
addons/medical_menu/functions/fnc_onMenuOpen.sqf
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Handle medical menu opened
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Medical Menu display <DISPLAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [medical_menu] call ace_medical_menu_onMenuOpen
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private "_target";
|
||||
|
||||
params ["_display"];
|
||||
|
||||
if (isNil "_display") exitwith {};
|
||||
|
||||
if (isNil QGVAR(LatestDisplayOptionMenu)) then {
|
||||
GVAR(LatestDisplayOptionMenu) = "triage";
|
||||
} else {
|
||||
if (GVAR(LatestDisplayOptionMenu) == "toggle") then {
|
||||
GVAR(LatestDisplayOptionMenu) = "triage";
|
||||
GVAR(INTERACTION_TARGET) = GVAR(INTERACTION_TARGET_PREVIOUS);
|
||||
};
|
||||
};
|
||||
|
||||
_target = GVAR(INTERACTION_TARGET);
|
||||
if (isNil QGVAR(INTERACTION_TARGET_PREVIOUS)) then {
|
||||
GVAR(INTERACTION_TARGET_PREVIOUS) = _target;
|
||||
};
|
||||
[GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions);
|
||||
|
||||
disableSerialization;
|
||||
|
||||
[_target, _display] call FUNC(updateUIInfo);
|
||||
|
||||
(_display displayCtrl 11) ctrlSetTooltip localize LSTRING(VIEW_TRIAGE_CARD);
|
||||
(_display displayCtrl 12) ctrlSetTooltip localize LSTRING(EXAMINE_PATIENT);
|
||||
(_display displayCtrl 13) ctrlSetTooltip localize LSTRING(BANDAGE_FRACTURES);
|
||||
(_display displayCtrl 14) ctrlSetTooltip localize LSTRING(MEDICATION);
|
||||
(_display displayCtrl 15) ctrlSetTooltip localize LSTRING(AIRWAY_MANAGEMENT);
|
||||
(_display displayCtrl 16) ctrlSetTooltip localize LSTRING(ADVANCED_TREATMENT);
|
||||
(_display displayCtrl 17) ctrlSetTooltip localize LSTRING(DRAG_CARRY);
|
||||
(_display displayCtrl 18) ctrlSetTooltip localize LSTRING(TOGGLE_SELF);
|
||||
|
||||
(_display displayCtrl 301) ctrlSetTooltip localize LSTRING(SELECT_HEAD);
|
||||
(_display displayCtrl 302) ctrlSetTooltip localize LSTRING(SELECT_TORSO);
|
||||
(_display displayCtrl 303) ctrlSetTooltip localize LSTRING(SELECT_ARM_R);
|
||||
(_display displayCtrl 304) ctrlSetTooltip localize LSTRING(SELECT_ARM_L);
|
||||
(_display displayCtrl 305) ctrlSetTooltip localize LSTRING(SELECT_LEG_R);
|
||||
(_display displayCtrl 306) ctrlSetTooltip localize LSTRING(SELECT_LEG_L);
|
||||
(_display displayCtrl 2001) ctrlSetTooltip localize LSTRING(SELECT_TRIAGE_STATUS);
|
||||
|
||||
(_display displayCtrl 1) ctrlSetText format ["%1", [_target] call EFUNC(common,getName)];
|
||||
setMousePosition [0.4, 0.4];
|
||||
|
||||
[QGVAR(onMenuOpen), "onEachFrame", {
|
||||
params ["_display"];
|
||||
if (isNull GVAR(INTERACTION_TARGET)) then {
|
||||
GVAR(INTERACTION_TARGET) = ACE_player;
|
||||
};
|
||||
[GVAR(INTERACTION_TARGET), _display] call FUNC(updateUIInfo);
|
||||
[GVAR(INTERACTION_TARGET)] call FUNC(updateIcons);
|
||||
[GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions);
|
||||
|
||||
_status = [GVAR(INTERACTION_TARGET)] call FUNC(getTriageStatus);
|
||||
(_display displayCtrl 2000) ctrlSetText (_status select 0);
|
||||
(_display displayCtrl 2000) ctrlSetBackgroundColor (_status select 2);
|
||||
}, [_display]] call BIS_fnc_addStackedEventHandler;
|
||||
|
||||
["Medical_onMenuOpen", [ACE_player, _interactionTarget]] call EFUNC(common,localEvent);
|
33
addons/medical_menu/functions/fnc_openMenu.sqf
Normal file
33
addons/medical_menu/functions/fnc_openMenu.sqf
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Open the medical menu for target
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Target <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [some_player] call ace_medical_menu_openMenu
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_interactionTarget"];
|
||||
|
||||
if (dialog || isNull _interactionTarget) exitwith {
|
||||
disableSerialization;
|
||||
|
||||
private "_display";
|
||||
_display = uiNamespace getVariable QGVAR(medicalMenu);
|
||||
if (!isNil "_display") then {
|
||||
closeDialog 314412;
|
||||
};
|
||||
};
|
||||
|
||||
GVAR(INTERACTION_TARGET) = _interactionTarget;
|
||||
|
||||
createDialog QGVAR(medicalMenu);
|
||||
GVAR(lastOpenedOn) = ACE_time;
|
18
addons/medical_menu/functions/fnc_setTriageStatus.sqf
Normal file
18
addons/medical_menu/functions/fnc_setTriageStatus.sqf
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Set the triage status of object
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Target <OBJECT>
|
||||
* 1: Status <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_target", "_status"];
|
||||
|
||||
_target setvariable [QEGVAR(medical,triageLevel), _status, true];
|
42
addons/medical_menu/functions/fnc_updateActivityLog.sqf
Normal file
42
addons/medical_menu/functions/fnc_updateActivityLog.sqf
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Update the activity log
|
||||
*
|
||||
* Arguments:
|
||||
* 0: display <DISPLAY>
|
||||
* 1: log collection <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [some_display, log] call ace_medical_menu_updateActivityLog
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private "_logCtrl";
|
||||
|
||||
params ["_display", "_logs"];
|
||||
|
||||
_logCtrl = _display displayCtrl 214;
|
||||
lbClear _logCtrl;
|
||||
|
||||
{
|
||||
_x params ["_message", "_moment", "_dummy", "_arguments"];
|
||||
|
||||
if (isLocalized _message) then {
|
||||
_message = localize _message;
|
||||
};
|
||||
|
||||
{
|
||||
if (typeName _x == "STRING" && {isLocalized _x}) then {
|
||||
_arguments set [_foreachIndex, localize _x];
|
||||
};
|
||||
} forEach _arguments;
|
||||
|
||||
_message = format ([_message] + _arguments);
|
||||
_logCtrl lbAdd format ["%1 %2", _moment, _message];
|
||||
nil
|
||||
} count _logs;
|
42
addons/medical_menu/functions/fnc_updateBodyImage.sqf
Normal file
42
addons/medical_menu/functions/fnc_updateBodyImage.sqf
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Update the body image on the menu
|
||||
*
|
||||
* Arguments:
|
||||
* 0: selection bloodloss <ARRAY>
|
||||
* 1: display <DISPLAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [0.3, some_display] call ace_medical_menu_updateBodyImage
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_selectionBloodLoss", "_display"];
|
||||
|
||||
// Handle the body image coloring
|
||||
_availableSelections = [50, 51, 52, 53, 54, 55];
|
||||
{
|
||||
private ["_red", "_green", "_blue"];
|
||||
|
||||
_red = 1;
|
||||
_green = 1;
|
||||
_blue = 1;
|
||||
|
||||
if (_x > 0) then {
|
||||
if (_damaged select _forEachIndex) then {
|
||||
_green = (0.9 - _x) max 0;
|
||||
_blue = _green;
|
||||
} else {
|
||||
_green = (0.9 - _x) max 0;
|
||||
_red = _green;
|
||||
//_blue = _green;
|
||||
};
|
||||
};
|
||||
|
||||
(_display displayCtrl (_availableSelections select _forEachIndex)) ctrlSetTextColor [_red, _green, _blue, 1.0];
|
||||
} forEach _selectionBloodLoss;
|
35
addons/medical_menu/functions/fnc_updateIcons.sqf
Normal file
35
addons/medical_menu/functions/fnc_updateIcons.sqf
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Update the category icons
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_medical_menu_updateIcons
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define START_IDC 111
|
||||
#define END_IDC 118
|
||||
|
||||
private ["_display", "_idc", "_options", "_name", "_amount"];
|
||||
|
||||
disableSerialization;
|
||||
|
||||
_display = uiNamespace getVariable QGVAR(medicalMenu);
|
||||
|
||||
_options = ["triage" , "examine", "bandage", "medication", "airway", "advanced", "drag", "toggle"];
|
||||
for "_idc" from START_IDC to END_IDC step 1 do {
|
||||
_amount = [ACE_player, GVAR(INTERACTION_TARGET), _options select (_idc - START_IDC)] call FUNC(getTreatmentOptions);
|
||||
if ((count _amount) > 0 || _idc == START_IDC || _idc == END_IDC) then {
|
||||
(_display displayCtrl _idc) ctrlSettextColor [1, 1, 1, 1];
|
||||
} else {
|
||||
(_display displayCtrl _idc) ctrlSettextColor [0.4, 0.4, 0.4, 1];
|
||||
};
|
||||
};
|
36
addons/medical_menu/functions/fnc_updateInformationLists.sqf
Normal file
36
addons/medical_menu/functions/fnc_updateInformationLists.sqf
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Update the treatment information list
|
||||
*
|
||||
* Arguments:
|
||||
* 0: display <DISPLAY>
|
||||
* 1: message collection <ARRAY>
|
||||
* 2: injury collection <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private "_lbCtrl";
|
||||
|
||||
params ["_display", "_genericMessages", "_allInjuryTexts"];
|
||||
|
||||
_lbCtrl = _display displayCtrl 213;
|
||||
lbClear _lbCtrl;
|
||||
{
|
||||
_lbCtrl lbAdd (_x select 0);
|
||||
_lbCtrl lbSetColor [_forEachIndex, _x select 1];
|
||||
} forEach _genericMessages;
|
||||
|
||||
_amountOfGeneric = count _genericMessages;
|
||||
{
|
||||
_lbCtrl lbAdd (_x select 0);
|
||||
_lbCtrl lbSetColor [_forEachIndex + _amountOfGeneric, _x select 1];
|
||||
} forEach _allInjuryTexts;
|
||||
|
||||
if (count _allInjuryTexts == 0) then {
|
||||
_lbCtrl lbAdd localize ELSTRING(medical,NoInjuriesBodypart);
|
||||
};
|
42
addons/medical_menu/functions/fnc_updateQuickViewLog.sqf
Normal file
42
addons/medical_menu/functions/fnc_updateQuickViewLog.sqf
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Update the quick view log
|
||||
*
|
||||
* Arguments:
|
||||
* 0: display <DISPLAY>
|
||||
* 1: log collection <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [some_display, log] call ace_medical_menu_updateQuickViewLog
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private "_logCtrl";
|
||||
|
||||
params ["_display", "_logs"];
|
||||
|
||||
_logCtrl = _display displayCtrl 215;
|
||||
lbClear _logCtrl;
|
||||
|
||||
{
|
||||
_x params ["_message", "_moment", "_dummy", "_arguments"];
|
||||
|
||||
if (isLocalized _message) then {
|
||||
_message = localize _message;
|
||||
};
|
||||
|
||||
{
|
||||
if (typeName _x == "STRING" && {isLocalized _x}) then {
|
||||
_arguments set [_foreachIndex, localize _x];
|
||||
};
|
||||
} forEach _arguments;
|
||||
|
||||
_message = format ([_message] + _arguments);
|
||||
_logCtrl lbAdd format ["%1 %2", _moment, _message];
|
||||
nil
|
||||
} count _logs;
|
144
addons/medical_menu/functions/fnc_updateUIInfo.sqf
Normal file
144
addons/medical_menu/functions/fnc_updateUIInfo.sqf
Normal file
@ -0,0 +1,144 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Update all UI information in the medical menu
|
||||
*
|
||||
* Arguments:
|
||||
* 0: target <OBJECT>
|
||||
* 1: display <DISPLAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [some_player, some_display] call ace_medical_menu_updateUIInfo
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_genericMessages", "_totalIvVolume", "_damaged", "_selectionBloodLoss", "_allInjuryTexts"];
|
||||
|
||||
params ["_target", "_display"];
|
||||
|
||||
_selectionN = GVAR(selectedBodyPart);
|
||||
if (_selectionN < 0 || _selectionN > 5) exitwith {};
|
||||
|
||||
_genericMessages = [];
|
||||
if (EGVAR(medical,level) >= 2) then {
|
||||
_partText = [ELSTRING(medical,Head), ELSTRING(medical,Torso), ELSTRING(medical,LeftArm) ,ELSTRING(medical,RightArm) ,ELSTRING(medical,LeftLeg), ELSTRING(medical,RightLeg)] select _selectionN;
|
||||
_genericMessages pushBack [localize _partText, [1, 1, 1, 1]];
|
||||
};
|
||||
|
||||
if (_target getVariable [QGVAR(isBleeding), false]) then {
|
||||
_genericMessages pushBack [localize ELSTRING(medical,Status_Bleeding), [1, 0.1, 0.1, 1]];
|
||||
};
|
||||
|
||||
if (_target getVariable [QGVAR(hasLostBlood), 0] > 1) then {
|
||||
_genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood), [1, 0.1, 0.1, 1]];
|
||||
};
|
||||
|
||||
if (((_target getVariable [QGVAR(tourniquets), [0, 0, 0, 0, 0, 0]]) select _selectionN) > 0) then {
|
||||
_genericMessages pushBack [localize ELSTRING(medical,Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]];
|
||||
};
|
||||
|
||||
if (_target getVariable [QGVAR(hasPain), false]) then {
|
||||
_genericMessages pushBack [localize ELSTRING(medical,Status_Pain), [1, 1, 1, 1]];
|
||||
};
|
||||
|
||||
_totalIvVolume = 0;
|
||||
{
|
||||
private "_value";
|
||||
_value = _target getVariable _x;
|
||||
if (!isNil "_value") then {
|
||||
_totalIvVolume = _totalIvVolume + (_target getVariable [_x, 0]);
|
||||
};
|
||||
} count GVAR(IVBags);
|
||||
|
||||
if (_totalIvVolume >= 1) then {
|
||||
_genericMessages pushBack [format [localize ELSTRING(medical,receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]];
|
||||
};
|
||||
|
||||
_damaged = [false, false, false, false, false, false];
|
||||
_selectionBloodLoss = [0, 0, 0, 0, 0, 0];
|
||||
|
||||
_allInjuryTexts = [];
|
||||
if (EGVAR(medical,level) >= 2) then {
|
||||
_openWounds = _target getVariable [QEGVAR(medical,openWounds), []];
|
||||
private "_amountOf";
|
||||
{
|
||||
_amountOf = _x select 3;
|
||||
// Find how much this bodypart is bleeding
|
||||
if (_amountOf > 0) then {
|
||||
_damaged set [_x select 2, true];
|
||||
_selectionBloodLoss set [_x select 2, (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))];
|
||||
|
||||
if (_selectionN == (_x select 2)) then {
|
||||
// Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this]
|
||||
if (_amountOf >= 1) then {
|
||||
// TODO localization
|
||||
_allInjuryTexts pushBack [format["%2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [1,1,1,1]];
|
||||
} else {
|
||||
// TODO localization
|
||||
_allInjuryTexts pushBack [format["Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [1,1,1,1]];
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _openWounds;
|
||||
|
||||
_bandagedwounds = _target getVariable [QEGVAR(medical,bandagedWounds), []];
|
||||
{
|
||||
_amountOf = _x select 3;
|
||||
// Find how much this bodypart is bleeding
|
||||
if !(_damaged select (_x select 2)) then {
|
||||
_selectionBloodLoss set [_x select 2, (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))];
|
||||
};
|
||||
if (_selectionN == (_x select 2)) then {
|
||||
// Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this]
|
||||
if (_amountOf > 0) then {
|
||||
if (_amountOf >= 1) then {
|
||||
// TODO localization
|
||||
_allInjuryTexts pushBack [format ["[B] %2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [0.88,0.7,0.65,1]];
|
||||
} else {
|
||||
// TODO localization
|
||||
_allInjuryTexts pushBack [format ["[B] Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [0.88,0.7,0.65,1]];
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _bandagedwounds;
|
||||
} else {
|
||||
_damaged = [true, true, true, true, true, true];
|
||||
{
|
||||
_selectionBloodLoss set [_forEachIndex, _target getHitPointDamage _x];
|
||||
|
||||
if (_target getHitPointDamage _x > 0 && _forEachIndex == _selectionN) then {
|
||||
_pointDamage = _target getHitPointDamage _x;
|
||||
_severity = switch (true) do {
|
||||
case (_pointDamage > 0.5): {localize ELSTRING(medical,HeavilyWounded)};
|
||||
case (_pointDamage > 0.1): {localize ELSTRING(medical,LightlyWounded)};
|
||||
default {localize ELSTRING(medical,VeryLightlyWounded)};
|
||||
};
|
||||
_part = localize ([
|
||||
ELSTRING(medical,Head),
|
||||
ELSTRING(medical,Torso),
|
||||
ELSTRING(medical,LeftArm),
|
||||
ELSTRING(medical,RightArm),
|
||||
ELSTRING(medical,LeftLeg),
|
||||
ELSTRING(medical,RightLeg)
|
||||
] select _forEachIndex);
|
||||
_allInjuryTexts pushBack [format ["%1 %2", _severity, toLower _part], [1,1,1,1]];
|
||||
};
|
||||
} forEach ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
|
||||
};
|
||||
|
||||
[_selectionBloodLoss, _display] call FUNC(updateBodyImage);
|
||||
[_display, _genericMessages, _allInjuryTexts] call FUNC(updateInformationLists);
|
||||
|
||||
_logs = _target getVariable [QEGVAR(medical,logFile_activity_view), []];
|
||||
[_display, _logs] call FUNC(updateActivityLog);
|
||||
|
||||
_logs = _target getVariable [QEGVAR(medical,logFile_quick_view), []];
|
||||
[_display, _logs] call FUNC(updateQuickViewLog);
|
||||
|
||||
_triageStatus = [_target] call EFUNC(medical,getTriageStatus);
|
||||
(_display displayCtrl 2000) ctrlSetText (_triageStatus select 0);
|
||||
(_display displayCtrl 2000) ctrlSetBackgroundColor (_triageStatus select 2);
|
1
addons/medical_menu/functions/script_component.hpp
Normal file
1
addons/medical_menu/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\medical_menu\script_component.hpp"
|
12
addons/medical_menu/script_component.hpp
Normal file
12
addons/medical_menu/script_component.hpp
Normal file
@ -0,0 +1,12 @@
|
||||
#define COMPONENT medical_menu
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
#ifdef DEBUG_ENABLED_MEDICAL_MENU
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_SETTINGS_MEDICAL_MENU
|
||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_MEDICAL_MENU
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
391
addons/medical_menu/stringtable.xml
Normal file
391
addons/medical_menu/stringtable.xml
Normal file
@ -0,0 +1,391 @@
|
||||
<?xml version="1.0"encoding="UTF-8"?>
|
||||
<Project name="Combat Space Enhancement">
|
||||
<Package name="Combat Medical System">
|
||||
<Container name="UI">
|
||||
<Key ID="STR_ACE_Medical_Menu_OpenMenu">
|
||||
<English>Medical Menu</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_allow">
|
||||
<English>Allow Medical Menu</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_allow_Descr">
|
||||
<English>Allow clients to use the medical menu</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_useMenu">
|
||||
<English>Use Medical menu</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_useMenu_Descr">
|
||||
<English>If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_openAfterTreatment">
|
||||
<English>Re-open Medical menu</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_openAfterTreatment_Descr">
|
||||
<English>Re-open the medical menu after succesful treatment</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_DisplayMenuKey">
|
||||
<English>Open Medical Menu</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_module_DisplayName">
|
||||
<English>Medical Menu Settings</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_module_Desc">
|
||||
<English>Configure the usage of the Medical Menu</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_EXAMINE_TREATMENT">
|
||||
<Original>EXAMINE & TREATMENT</Original>
|
||||
<Russian>ОСМОТР И ЛЕЧЕНИЕ</Russian>
|
||||
<English>EXAMINE & TREATMENT</English>
|
||||
<Spanish>EXAMINAR & TRATAMIENTO</Spanish>
|
||||
<French>EXAMINER & TRAITEMENTS</French>
|
||||
<Polish>BADANIE & LECZENIE</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_STATUS">
|
||||
<Original>STATUS</Original>
|
||||
<Russian>СОСТОЯНИЕ</Russian>
|
||||
<English>STATUS</English>
|
||||
<Spanish>ESTADO</Spanish>
|
||||
<French>ÉTATS</French>
|
||||
<Polish>STATUS</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_OVERVIEW">
|
||||
<Original>OVERVIEW</Original>
|
||||
<Russian>ОБЩАЯ ИНФОРМАЦИЯ</Russian>
|
||||
<English>OVERVIEW</English>
|
||||
<Spanish>DESCRIPCIÓN</Spanish>
|
||||
<French>DESCRIPTION</French>
|
||||
<Polish>OPIS</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_ACTIVITY_LOG">
|
||||
<Original>ACTIVITY LOG</Original>
|
||||
<Russian>ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ</Russian>
|
||||
<English>ACTIVITY LOG</English>
|
||||
<Spanish>REGISTRO DE ACTIVIDAD</Spanish>
|
||||
<French>REGISTRE DES SOINS</French>
|
||||
<Polish>LOGI AKTYWNOŚCI</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_QUICK_VIEW">
|
||||
<Original>QUICK VIEW</Original>
|
||||
<Russian>БЫСТРЫЙ ОСМОТР</Russian>
|
||||
<English>QUICK VIEW</English>
|
||||
<Spanish>VISTA RÁPIDA</Spanish>
|
||||
<French>VUE RAPIDE</French>
|
||||
<Polish>SZYBKI PODGLĄD</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_TRIAGE_NONE">
|
||||
<Original>None</Original>
|
||||
<Russian>Не ранен</Russian>
|
||||
<Spanish>Ninguno</Spanish>
|
||||
<French>Aucun</French>
|
||||
<Polish>Brak</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_TRIAGE_MINOR">
|
||||
<Original>Minor</Original>
|
||||
<Russian>Несрочная помощь</Russian>
|
||||
<Spanish>Menor</Spanish>
|
||||
<French>Mineur</French>
|
||||
<Polish>Normalny</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_TRIAGE_DELAYED">
|
||||
<Original>Delayed</Original>
|
||||
<Russian>Срочная помощь</Russian>
|
||||
<Spanish>Diferido</Spanish>
|
||||
<French>Urgent</French>
|
||||
<Polish>Opóźniony</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_TRIAGE_IMMEDIATE">
|
||||
<Original>Immediate</Original>
|
||||
<Russian>Неотложная помощь</Russian>
|
||||
<Spanish>Inmediato</Spanish>
|
||||
<French>Immédiat</French>
|
||||
<Polish>Natychmiastowy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_TRIAGE_DECEASED">
|
||||
<Original>Deceased</Original>
|
||||
<Russian>Морг</Russian>
|
||||
<Spanish>Fallecido</Spanish>
|
||||
<French>Décédé</French>
|
||||
<Polish>Nie żyje</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_VIEW_TRIAGE_CARD">
|
||||
<Original>View triage Card</Original>
|
||||
<Russian>Смотреть первичную карточку</Russian>
|
||||
<Spanish>Ver Triage</Spanish>
|
||||
<French>Voir Carte de Triage</French>
|
||||
<Polish>Pokaż kartę segregacyjną</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_EXAMINE_PATIENT">
|
||||
<Original>Examine Patient</Original>
|
||||
<Russian>Осмотреть пациента</Russian>
|
||||
<Spanish>Examinar Paciente</Spanish>
|
||||
<French>Examiner Patient</French>
|
||||
<Polish>Zbadaj pacjenta</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_BANDAGE_FRACTURES">
|
||||
<Original>Bandage / Fractures</Original>
|
||||
<Russian>Раны / переломы</Russian>
|
||||
<Spanish>Vendajes/Fracturas </Spanish>
|
||||
<French>Bandages / Fractures</French>
|
||||
<Polish>Bandaże / Złamania</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_MEDICATION">
|
||||
<Original>Medication</Original>
|
||||
<Russian>Медикаменты</Russian>
|
||||
<Spanish>Medicación</Spanish>
|
||||
<French>Médications</French>
|
||||
<Polish>Leki</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_AIRWAY_MANAGEMENT">
|
||||
<Original>Airway Management</Original>
|
||||
<Russian>Дыхательные пути</Russian>
|
||||
<Spanish>Vías Aéreas</Spanish>
|
||||
<French>Gestion Des Voie REspiratoire</French>
|
||||
<Polish>Drogi oddechowe</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_ADVANCED_TREATMENT">
|
||||
<Original>Advanced Treatments</Original>
|
||||
<Russian>Специальная медпомощь</Russian>
|
||||
<Spanish>Tratamientos Avanzados</Spanish>
|
||||
<French>Traitement Avancé</French>
|
||||
<Polish>Zaawansowane zabiegi</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_DRAG_CARRY">
|
||||
<Original>Drag/Carry</Original>
|
||||
<Russian>Тащить/нести</Russian>
|
||||
<Spanish>Arrastrar/Cargar</Spanish>
|
||||
<French>Glisser/Porter</French>
|
||||
<Polish>Ciągnij/Nieś</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_TOGGLE_SELF">
|
||||
<Original>Toggle (Self)</Original>
|
||||
<Russian>Лечить себя/другого раненого</Russian>
|
||||
<French>Activer (sois)</French>
|
||||
<Polish>Przełącz (na siebie)</Polish>
|
||||
<Spanish>Alternar</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SELECT_TRIAGE_STATUS">
|
||||
<Original>Select triage status</Original>
|
||||
<Russian>Сортировка</Russian>
|
||||
<Spanish>Seleccionar estado de Triage</Spanish>
|
||||
<French>Selectioner l'état de Triage</French>
|
||||
<Polish>Wybierz priorytet</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SELECT_HEAD">
|
||||
<Original>Select Head</Original>
|
||||
<Russian>Выбрать голову</Russian>
|
||||
<Spanish>Seleccionar Cabeza</Spanish>
|
||||
<French>Selectioner Tête</French>
|
||||
<Polish>Wybierz głowę</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SELECT_TORSO">
|
||||
<Original>Select Torso</Original>
|
||||
<Russian>Выбрать торс</Russian>
|
||||
<Spanish>Seleccionar Torso</Spanish>
|
||||
<French>Selectioner Torse</French>
|
||||
<Polish>Wybierz tors</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SELECT_ARM_L">
|
||||
<Original>Select Left Arm</Original>
|
||||
<Russian>Выбрать левую руку</Russian>
|
||||
<Spanish>Seleccionar Brazo Izquierdo</Spanish>
|
||||
<French>Selectioner Bras Gauche</French>
|
||||
<Polish>Wybierz lewą rękę</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SELECT_ARM_R">
|
||||
<Original>Select Right Arm</Original>
|
||||
<Russian>Выбрать правую руку</Russian>
|
||||
<Spanish>Seleccionar Brazo Derecho</Spanish>
|
||||
<French>Selectioner Bras Droit</French>
|
||||
<Polish>Wybierz prawą rękę</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SELECT_LEG_L">
|
||||
<Original>Select Left Leg</Original>
|
||||
<Russian>Выбрать левую ногу</Russian>
|
||||
<Spanish>Seleccionar Pierna Izquierda</Spanish>
|
||||
<French>Selectioner Jambe Gauche</French>
|
||||
<Polish>Wybierz lewą nogę</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SELECT_LEG_R">
|
||||
<Original>Select Right Leg</Original>
|
||||
<Russian>Выбрать правую ногу</Russian>
|
||||
<Spanish>Seleccionar Pierna Derecha</Spanish>
|
||||
<French>Selectioner Jambe Droite</French>
|
||||
<Polish>Wybierz prawą nogę</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_HEAD">
|
||||
<Original>Head</Original>
|
||||
<Russian>Голова</Russian>
|
||||
<Spanish>Cabeza</Spanish>
|
||||
<French>Tête</French>
|
||||
<Polish>Głowa</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_TORSO">
|
||||
<Original>Torso</Original>
|
||||
<Russian>Торс</Russian>
|
||||
<French>Torse</French>
|
||||
<Polish>Tors</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_ARM_L">
|
||||
<Original>Left Arm</Original>
|
||||
<Russian>Левая рука</Russian>
|
||||
<Spanish>Brazo Izquierdo</Spanish>
|
||||
<French>Bras Gauche</French>
|
||||
<Polish>Lewa ręka</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_ARM_R">
|
||||
<Original>Right Arm</Original>
|
||||
<Russian>Правая рука</Russian>
|
||||
<Spanish>Brazo Derecho</Spanish>
|
||||
<French>Bras Droit</French>
|
||||
<Polish>Prawa ręka</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_LEG_L">
|
||||
<Original>Left Leg</Original>
|
||||
<Russian>Левая нога</Russian>
|
||||
<Spanish>Pierna Izquierda</Spanish>
|
||||
<French>Jambe Gauche</French>
|
||||
<Polish>Lewa noga</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_LEG_R">
|
||||
<Original>Right Leg</Original>
|
||||
<Russian>Правая нога</Russian>
|
||||
<Spanish>Pierna Derecha</Spanish>
|
||||
<French>Jambe Droite</French>
|
||||
<Polish>Prawa noga</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SELECTED_BODY_PART">
|
||||
<Original>Body Part: %1</Original>
|
||||
<Russian>Часть тела: %1</Russian>
|
||||
<Spanish>Parte del cuerpo: %1</Spanish>
|
||||
<French>Partie du corps: %1</French>
|
||||
<Polish>Część ciała: %1</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SMALL">
|
||||
<Original>Small</Original>
|
||||
<Russian>малого размера</Russian>
|
||||
<Spanish>Pequeña</Spanish>
|
||||
<French>Petite</French>
|
||||
<Polish>małym</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_MEDIUM">
|
||||
<Original>Medium</Original>
|
||||
<Russian>среднего размера</Russian>
|
||||
<Spanish>Mediana</Spanish>
|
||||
<French>moyenne</French>
|
||||
<Polish>średnim</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_LARGE">
|
||||
<Original>Large</Original>
|
||||
<Russian>большого размера</Russian>
|
||||
<Spanish>Grande</Spanish>
|
||||
<French>Grande</French>
|
||||
<Polish>dużym</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_MULTIPLE_OPEN_WOUNDS">
|
||||
<Original>There are %2 %1 Open Wounds</Original>
|
||||
<Russian>%2 открытые раны %1</Russian>
|
||||
<Spanish>Hay %2 Heridas Abiertas %1</Spanish>
|
||||
<French>Il y a %2 %1 Blessure Ouverte</French>
|
||||
<Polish>Widzisz otwarte rany w ilości %2 o %1 rozmiarze</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SINGLE_OPEN_WOUND">
|
||||
<Original>There is 1 %1 Open Wound</Original>
|
||||
<Russian>Открытая рана %1</Russian>
|
||||
<Spanish>Hay 1 Herida Abierta %1</Spanish>
|
||||
<French>Il y a 1 blessure ouverte %1</French>
|
||||
<Polish>Widzisz 1 otwartą ranę o %1 rozmiarze</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_PARTIAL_OPEN_WOUND">
|
||||
<Original>There is a partial %1 Open wound</Original>
|
||||
<Russian>Частично открытая рана %1</Russian>
|
||||
<Spanish>Hay una herida parcial abierta %1</Spanish>
|
||||
<French>Il y a une Blessure Patiellement Ouverte %1</French>
|
||||
<Polish>Widzisz częściowo otwartą ranę o %1 rozmiarze</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_MULTIPLE_BANDAGED_WOUNDS">
|
||||
<Original>There are %2 %1 Bandaged Wounds</Original>
|
||||
<Russian>%2 перевязанные раны %1</Russian>
|
||||
<Spanish>Hay %2 Heridas %1 Vendadas</Spanish>
|
||||
<French>Il y a %2 %1 Blessure Bandée</French>
|
||||
<Polish>Widzisz %2 zabandażowanych ran o %1 rozmiarze</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_SINGLE_BANDAGED_WOUND">
|
||||
<Original>There is 1 %1 Bandaged Wound</Original>
|
||||
<Russian>1 перевязанная рана %1</Russian>
|
||||
<Spanish>Hay 1 Herida Vendada %1</Spanish>
|
||||
<French>Il y a 1 %1 Blessure Bandée</French>
|
||||
<Polish>Widzisz 1 zabandażowaną ranę o %1 rozmiarze</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_PARTIAL_BANDAGED_WOUND">
|
||||
<Original>There is a partial %1 Bandaged wound</Original>
|
||||
<Russian>Частично перевязанная рана %1</Russian>
|
||||
<Spanish>Hay una Herida parcial %1 Vendada</Spanish>
|
||||
<French>Il y a %1 Blessure Partielment Bandée</French>
|
||||
<Polish>Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_NORMAL_BREATHING">
|
||||
<Original>Normal breathing</Original>
|
||||
<Russian>Дыхание в норме</Russian>
|
||||
<Spanish>Respiración normal</Spanish>
|
||||
<French>Respiration Normale</French>
|
||||
<Polish>Normalny oddech</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_NO_BREATHING">
|
||||
<Original>No breathing</Original>
|
||||
<Russian>Дыхания нет</Russian>
|
||||
<Spanish>No respira</Spanish>
|
||||
<French>Apnée</French>
|
||||
<Polish>Brak oddechu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_DIFFICULT_BREATHING">
|
||||
<Original>Difficult breathing</Original>
|
||||
<Russian>Дыхание затруднено</Russian>
|
||||
<Spanish>Dificultad para respirar</Spanish>
|
||||
<French>Difficultée Respiratoire</French>
|
||||
<Polish>Trudności z oddychaniem</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_ALMOST_NO_BREATHING">
|
||||
<Original>Almost no breathing</Original>
|
||||
<Russian>Дыхания почти нет</Russian>
|
||||
<Spanish>Casi sin respirar</Spanish>
|
||||
<French>Respiration Faible</French>
|
||||
<Polish>Prawie brak oddechu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_STATUS_BLEEDING">
|
||||
<Original>Bleeding</Original>
|
||||
<Russian>Кровотечение</Russian>
|
||||
<Spanish>Sangrando</Spanish>
|
||||
<French>Seignement</French>
|
||||
<Polish>Krwawienie zewnętrzne</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_STATUS_PAIN">
|
||||
<Original>in Pain</Original>
|
||||
<Russian>Испытывает боль</Russian>
|
||||
<Spanish>Con Dolor</Spanish>
|
||||
<French>A De La Douleur</French>
|
||||
<Polish>W bólu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_STATUS_LOST_BLOOD">
|
||||
<Original>Lost a lot of Blood</Original>
|
||||
<Russian>Большая кровопотеря</Russian>
|
||||
<Spanish>Mucha Sangre perdida</Spanish>
|
||||
<French>A Perdu Bcp de Sang</French>
|
||||
<Polish>Stracił dużo krwi</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_STATUS_TOURNIQUET_APPLIED">
|
||||
<Original>Tourniquet [CAT]</Original>
|
||||
<Russian>Жгут</Russian>
|
||||
<Spanish>Torniquete [CAT]</Spanish>
|
||||
<French>Garot [CAT]</French>
|
||||
<Polish>Opaska uciskowa [CAT]</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_STATUS_NPA_APPLIED">
|
||||
<Original>Nasopharyngeal Tube [NPA]</Original>
|
||||
<Russian>Назотрахеальная трубка</Russian>
|
||||
<Spanish>Torniquete [CAT]</Spanish>
|
||||
<French>Canule Naseaupharyngée [NPA]</French>
|
||||
<Polish>Rurka nosowo-gardłowa [NPA]</Polish>
|
||||
</Key>
|
||||
</Container>
|
||||
</Package>
|
||||
</Project>
|
570
addons/medical_menu/ui/menu.hpp
Normal file
570
addons/medical_menu/ui/menu.hpp
Normal file
@ -0,0 +1,570 @@
|
||||
#include "\z\ace\addons\common\define.hpp"
|
||||
|
||||
class GVAR(medicalMenu) {
|
||||
idd = 314412;
|
||||
movingEnable = true;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(medicalMenu)), _this select 0)]; [ARR_2(QUOTE(QGVAR(id)), true)] call EFUNC(common,blurScreen); [_this select 0] call FUNC(onMenuOpen););
|
||||
onUnload = QUOTE([ARR_2(QUOTE(QGVAR(id)), false)] call EFUNC(common,blurScreen); [ARR_2(QUOTE(QGVAR(onMenuOpen)), 'onEachFrame')] call BIS_fnc_removeStackedEventHandler;);
|
||||
class controlsBackground {
|
||||
class HeaderBackground: ACE_gui_backgroundBase{
|
||||
idc = -1;
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
text = "#(argb,8,8,3)color(0,0,0,0)";
|
||||
};
|
||||
class CenterBackground: HeaderBackground {
|
||||
y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
h = "16 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
text = "#(argb,8,8,3)color(0,0,0,0.8)";
|
||||
colorText[] = {0, 0, 0, "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
|
||||
colorBackground[] = {0,0,0,"(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
|
||||
};
|
||||
class BottomBackground: CenterBackground {
|
||||
y = "(18.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))";
|
||||
h = "9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
};
|
||||
};
|
||||
|
||||
class controls {
|
||||
class HeaderName {
|
||||
idc = 1;
|
||||
type = CT_STATIC;
|
||||
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
style = ST_LEFT + ST_SHADOW;
|
||||
font = "PuristaMedium";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
colorText[] = {0.95, 0.95, 0.95, 0.75};
|
||||
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
|
||||
text = "";
|
||||
};
|
||||
|
||||
class IconsBackGroundBar: ACE_gui_backgroundBase{
|
||||
idc = -1;
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "3.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
text = QUOTE(PATHTOF(data\background_img.paa));
|
||||
colorText[] = {1, 1, 1, 0.0};
|
||||
};
|
||||
class CatagoryLeft: HeaderName {
|
||||
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "2.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
style = ST_CENTER;
|
||||
colorText[] = {1, 1, 1.0, 0.9};
|
||||
colorBackground[] = {0,0,0,0};
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)";
|
||||
text = $STR_ACE_Medical_Menu_EXAMINE_TREATMENT;
|
||||
};
|
||||
class CatagoryCenter: CatagoryLeft {
|
||||
x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = $STR_ACE_Medical_Menu_STATUS;
|
||||
};
|
||||
class CatagoryRight: CatagoryCenter{
|
||||
x = "25.66 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = $STR_ACE_Medical_Menu_OVERVIEW;
|
||||
};
|
||||
class Line: ACE_gui_backgroundBase {
|
||||
idc = -1;
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "3.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "37 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "0.03 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
text = "#(argb,8,8,3)color(1,1,1,0.5)";
|
||||
};
|
||||
|
||||
class iconImg1: ACE_gui_backgroundBase {
|
||||
idc = 111;
|
||||
x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)";
|
||||
colorBackground[] = {0,0,0,1};
|
||||
colorPicture[] = {1,1,1,1};
|
||||
colorText[] = {1,1,1,1};
|
||||
text = QUOTE(PATHTOF(data\icons\triage_card_small.paa));
|
||||
};
|
||||
class iconImg2: iconImg1 {
|
||||
idc = 112;
|
||||
x = "3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = QUOTE(PATHTOF(data\icons\examine_patient_small.paa));
|
||||
};
|
||||
class iconImg3: iconImg1 {
|
||||
idc = 113;
|
||||
x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = QUOTE(PATHTOF(data\icons\bandage_fracture_small.paa));
|
||||
};
|
||||
class iconImg4: iconImg1 {
|
||||
idc = 114;
|
||||
x = "6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = QUOTE(PATHTOF(data\icons\medication_small.paa));
|
||||
};
|
||||
class iconImg5: iconImg1 {
|
||||
idc = 115;
|
||||
x = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = QUOTE(PATHTOF(data\icons\airway_management_small.paa));
|
||||
};
|
||||
class iconImg6: iconImg1 {
|
||||
idc = 116;
|
||||
x = "9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = QUOTE(PATHTOF(data\icons\advanced_treatment_small.paa));
|
||||
};
|
||||
class iconImg7: iconImg1 {
|
||||
idc = 117;
|
||||
x = "10.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = QUOTE(PATHTOF(data\icons\icon_carry.paa));
|
||||
};
|
||||
class iconImg8: iconImg1 {
|
||||
idc = 118;
|
||||
x = "12 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = QUOTE(PATHTOF(data\icons\toggle_self_small.paa));
|
||||
};
|
||||
|
||||
|
||||
class BtnIconLeft1: ACE_gui_buttonBase {
|
||||
idc = 11;
|
||||
x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
action = QUOTE(['triage'] call FUNC(handleUI_DisplayOptions););
|
||||
};
|
||||
class BtnIconLeft2: BtnIconLeft1 {
|
||||
idc = 12;
|
||||
x = "3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(['examine'] call FUNC(handleUI_DisplayOptions););
|
||||
};
|
||||
class BtnIconLeft3: BtnIconLeft1 {
|
||||
idc = 13;
|
||||
x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(['bandage'] call FUNC(handleUI_DisplayOptions););
|
||||
};
|
||||
class BtnIconLeft4: BtnIconLeft1 {
|
||||
idc = 14;
|
||||
x = "6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(['medication'] call FUNC(handleUI_DisplayOptions););
|
||||
};
|
||||
class BtnIconLeft5: BtnIconLeft1 {
|
||||
idc = 15;
|
||||
x = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(['airway'] call FUNC(handleUI_DisplayOptions););
|
||||
};
|
||||
class BtnIconLeft6: BtnIconLeft1 {
|
||||
idc = 16;
|
||||
x = "9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(['advanced'] call FUNC(handleUI_DisplayOptions););
|
||||
};
|
||||
class BtnIconLeft7: BtnIconLeft1 {
|
||||
idc = 17;
|
||||
x = "10.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(['drag'] call FUNC(handleUI_DisplayOptions););
|
||||
};
|
||||
class BtnIconLeft8: BtnIconLeft1 {
|
||||
idc = 18;
|
||||
x = "12 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(['toggle'] call FUNC(handleUI_DisplayOptions););
|
||||
};
|
||||
|
||||
class TriageCardList: ACE_gui_listBoxBase {
|
||||
idc = 212;
|
||||
x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "12 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)";
|
||||
rowHeight = 0.03;
|
||||
colorBackground[] = {0, 0, 0, 0.2};
|
||||
colorText[] = {1,1, 1, 1.0};
|
||||
colorScrollbar[] = {0.95, 0.95, 0.95, 1};
|
||||
colorSelect[] = {0.95, 0.95, 0.95, 1};
|
||||
colorSelect2[] = {0.95, 0.95, 0.95, 1};
|
||||
colorSelectBackground[] = {0, 0, 0, 0.0};
|
||||
colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0};
|
||||
};
|
||||
|
||||
// Left side
|
||||
class BtnMenu1: BtnIconLeft1 {
|
||||
idc = 20;
|
||||
y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "12 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
text = "";
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.9)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.8)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.5)";
|
||||
animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
color[] = {1, 1, 1, 1};
|
||||
color2[] = {0,0,0, 1};
|
||||
colorBackgroundFocused[] = {1,1,1,1};
|
||||
colorBackground[] = {1,1,1,1};
|
||||
colorbackground2[] = {1,1,1,1};
|
||||
colorDisabled[] = {0.5,0.5,0.5,0.8};
|
||||
colorFocused[] = {0,0,0,1};
|
||||
periodFocus = 1;
|
||||
periodOver = 1;
|
||||
action = "";
|
||||
};
|
||||
class BtnMenu2: BtnMenu1 {
|
||||
idc = 21;
|
||||
y = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
text = "";
|
||||
};
|
||||
class BtnMenu3: BtnMenu1 {
|
||||
idc = 22;
|
||||
y = "7.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
text = "";
|
||||
};
|
||||
class BtnMenu4: BtnMenu1 {
|
||||
idc = 23;
|
||||
y = "8.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
text ="";
|
||||
};
|
||||
class BtnMenu5: BtnMenu1 {
|
||||
idc = 24;
|
||||
y = "9.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
text = "";
|
||||
};
|
||||
class BtnMenu6: BtnMenu1 {
|
||||
idc = 25;
|
||||
y = "10.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
text = "";
|
||||
};
|
||||
class BtnMenu7: BtnMenu1 {
|
||||
idc = 26;
|
||||
y = "12 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
text = "";
|
||||
};
|
||||
class BtnMenu8: BtnMenu1 {
|
||||
idc = 27;
|
||||
y = "13.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
text = "";
|
||||
};
|
||||
// center
|
||||
|
||||
class bodyImgBackground: ACE_gui_backgroundBase {
|
||||
idc = -1;
|
||||
x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "12.33 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)";
|
||||
colorBackground[] = {1,1,1,1};
|
||||
colorPicture[] = {1,1,1,1};
|
||||
colorText[] = {1,1,1,1};
|
||||
text = QUOTE(PATHTOEF(medical,ui\body_background.paa));
|
||||
};
|
||||
class bodyImgHead: bodyImgBackground {
|
||||
idc = 50;
|
||||
x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "12.33 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)";
|
||||
colorBackground[] = {1,1,1,1};
|
||||
colorPicture[] = {1,1,1,0.75};
|
||||
colorText[] = {1,1,1,0.75};
|
||||
text = QUOTE(PATHTOEF(medical,ui\body_head.paa));
|
||||
};
|
||||
|
||||
class bodyImgTorso: bodyImgHead {
|
||||
idc = 51;
|
||||
text = QUOTE(PATHTOEF(medical,ui\body_torso.paa));
|
||||
};
|
||||
class bodyImgArms_l: bodyImgHead {
|
||||
idc = 52;
|
||||
text = QUOTE(PATHTOEF(medical,ui\body_arm_left.paa));
|
||||
};
|
||||
class bodyImgArms_r: bodyImgHead {
|
||||
idc = 53;
|
||||
text = QUOTE(PATHTOEF(medical,ui\body_arm_right.paa));
|
||||
};
|
||||
class bodyImgLegs_l: bodyImgHead {
|
||||
idc = 54;
|
||||
text = QUOTE(PATHTOEF(medical,ui\body_leg_left.paa));
|
||||
};
|
||||
class bodyImgLegs_r: bodyImgHead {
|
||||
idc = 55;
|
||||
text = QUOTE(PATHTOEF(medical,ui\body_leg_right.paa));
|
||||
};
|
||||
|
||||
|
||||
class selectHead: ACE_gui_buttonBase {
|
||||
idc = 301;
|
||||
x = "18.8 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "3.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "1.4 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
action = QUOTE(GVAR(selectedBodyPart) = 0; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
|
||||
};
|
||||
class selectTorso : selectHead {
|
||||
idc = 302;
|
||||
x = "18.4 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "2.2 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "4.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
action = QUOTE(GVAR(selectedBodyPart) = 1; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
|
||||
};
|
||||
class selectLeftArm: selectHead{
|
||||
idc = 303;
|
||||
x = "17.4 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "5.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "4.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
action = QUOTE(GVAR(selectedBodyPart) = 3; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
|
||||
};
|
||||
class selectRightArm: selectLeftArm{
|
||||
idc = 304;
|
||||
x = "20.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(GVAR(selectedBodyPart) = 2; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
|
||||
};
|
||||
class selectLeftLeg :selectHead {
|
||||
idc = 305;
|
||||
x = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
action = QUOTE(GVAR(selectedBodyPart) = 5; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
|
||||
};
|
||||
class selectRightLeg :selectLeftLeg {
|
||||
idc = 306;
|
||||
x = "19.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE(GVAR(selectedBodyPart) = 4; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo););
|
||||
};
|
||||
|
||||
|
||||
class TriageTextBottom: HeaderName {
|
||||
idc = 2000;
|
||||
x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "16.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
style = ST_CENTER;
|
||||
colorText[] = {1, 1, 1.0, 1};
|
||||
colorBackground[] = {0,0.0,0.0,0.7};
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
text = "";
|
||||
};
|
||||
|
||||
// Right side
|
||||
class InjuryList: ACE_gui_listBoxBase {
|
||||
idc = 213;
|
||||
x = "25.66 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "5.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)";
|
||||
rowHeight = 0.03;
|
||||
colorBackground[] = {0, 0, 0, 0.2};
|
||||
colorText[] = {1,1, 1, 1.0};
|
||||
colorScrollbar[] = {0.95, 0.95, 0.95, 1};
|
||||
colorSelect[] = {0.95, 0.95, 0.95, 1};
|
||||
colorSelect2[] = {0.95, 0.95, 0.95, 1};
|
||||
colorSelectBackground[] = {0, 0, 0, 0.0};
|
||||
colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5};
|
||||
};
|
||||
// bottom
|
||||
|
||||
class ActivityLogHeader: CatagoryLeft {
|
||||
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "18.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
style = ST_CENTER;
|
||||
colorText[] = {0.6, 0.7, 1.0, 1};
|
||||
colorBackground[] = {0,0,0,0};
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
text = $STR_ACE_Medical_Menu_ACTIVITY_LOG;
|
||||
};
|
||||
class QuickViewHeader: ActivityLogHeader {
|
||||
x = "19.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
text = $STR_ACE_Medical_Menu_QUICK_VIEW;
|
||||
};
|
||||
class LineBottomHeaders: Line {
|
||||
y = "19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
};
|
||||
class ActivityLog: InjuryList {
|
||||
idc = 214;
|
||||
//style = 16;
|
||||
//type = 102;
|
||||
//rows=1;
|
||||
colorBackground[] = {0, 0, 0, 0};
|
||||
x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "(19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))";
|
||||
w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)";
|
||||
//colorSelectBackground[] = {0, 0, 0, 0.0};
|
||||
//colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0};
|
||||
//columns[] = {0.0, 0.08};
|
||||
//canDrag=true;
|
||||
//arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
// arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
drawSideArrows = 0;
|
||||
//idcLeft = -1;
|
||||
//idcRight = -1;
|
||||
};
|
||||
|
||||
class QuikViewLog: InjuryList {
|
||||
idc = 215;
|
||||
//style = 16;
|
||||
//type = 102;
|
||||
//rows=1;
|
||||
colorBackground[] = {0, 0, 0, 0};
|
||||
x = "21.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "(19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))";
|
||||
w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)";
|
||||
colorSelectBackground[] = {0, 0, 0, 0.0};
|
||||
colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0};
|
||||
|
||||
//columns[] = {0.0, 0.08};
|
||||
//canDrag=true;
|
||||
//arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
// arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
drawSideArrows = 0;
|
||||
//idcLeft = -1;
|
||||
//idcRight = -1;
|
||||
};
|
||||
|
||||
class selectTriageStatus: ACE_gui_buttonBase {
|
||||
idc = 2001;
|
||||
x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "16.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
h = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||
style = ST_CENTER;
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)";
|
||||
action = QUOTE([] call FUNC(handleUI_dropDownTriageCard););
|
||||
};
|
||||
class selectTriageStatusNone: selectTriageStatus {
|
||||
idc = 2002;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 0;
|
||||
h = 0;
|
||||
text = $STR_ACE_Medical_Menu_TRIAGE_NONE;
|
||||
style = ST_CENTER;
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTextureOver = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),0)] call FUNC(setTriageStatus););
|
||||
};
|
||||
|
||||
class selectTriageStatusMinor: selectTriageStatus {
|
||||
idc = 2003;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 0;
|
||||
h = 0;
|
||||
text = $STR_ACE_Medical_Menu_TRIAGE_MINOR;
|
||||
style = ST_CENTER;
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(0,0.5,0,0.9)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(0,0.5,0,0.9)";
|
||||
animTextureOver = "#(argb,8,8,3)color(0,0.5,0,0.9)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(0,0.5,0,0.9)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(0,0.5,0,0.9)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(0,0.5,0,0.9)";
|
||||
action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),1)] call FUNC(setTriageStatus););
|
||||
};
|
||||
class selectTriageStatusDelayed: selectTriageStatus {
|
||||
idc = 2004;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 0;
|
||||
h = 0;
|
||||
text = $STR_ACE_Medical_Menu_TRIAGE_DELAYED;
|
||||
style = ST_CENTER;
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)";
|
||||
animTextureOver = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)";
|
||||
action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),2)] call FUNC(setTriageStatus););
|
||||
};
|
||||
class selectTriageStatusImmediate: selectTriageStatus {
|
||||
idc = 2005;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 0;
|
||||
h = 0;
|
||||
text = $STR_ACE_Medical_Menu_TRIAGE_IMMEDIATE;
|
||||
style = ST_CENTER;
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(1,0.2,0.2,0.9)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(1,0.2,0.2,0.9)";
|
||||
animTextureOver = "#(argb,8,8,3)color(1,0.2,0.2,0.9)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(1,0.2,0.2,0.9)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(1,0.2,0.2,0.9)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(1,0.2,0.2,0.9)";
|
||||
action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),3)] call FUNC(setTriageStatus););
|
||||
};
|
||||
class selectTriageStatusDeceased: selectTriageStatus {
|
||||
idc = 2006;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 0;
|
||||
h = 0;
|
||||
text = $STR_ACE_Medical_Menu_TRIAGE_DECEASED;
|
||||
style = ST_CENTER;
|
||||
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
|
||||
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTextureOver = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)";
|
||||
action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),4)] call FUNC(setTriageStatus););
|
||||
};
|
||||
};
|
||||
};
|
@ -11,7 +11,7 @@ class ACE_Settings {
|
||||
isClientSettable = 1;
|
||||
displayName = CSTRING(ShowPlayerNames);
|
||||
description = CSTRING(ShowPlayerNames_Desc);
|
||||
values[] = {CSTRING(Disabled), CSTRING(Enabled), CSTRING(OnlyCursor), CSTRING(OnlyKeypress), CSTRING(OnlyCursorAndKeypress)};
|
||||
values[] = {ECSTRING(common,Disabled), CSTRING(Enabled), CSTRING(OnlyCursor), CSTRING(OnlyKeypress), CSTRING(OnlyCursorAndKeypress)};
|
||||
};
|
||||
class GVAR(showPlayerRanks) {
|
||||
value = 1;
|
||||
@ -42,7 +42,7 @@ class ACE_Settings {
|
||||
isClientSettable = 1;
|
||||
displayName = CSTRING(ShowSoundWaves);
|
||||
description = CSTRING(ShowSoundWaves_Desc);
|
||||
values[] = {CSTRING(Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)};
|
||||
values[] = {ECSTRING(common,Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)};
|
||||
};
|
||||
class GVAR(playerNamesViewDistance) {
|
||||
value = 5;
|
||||
|
@ -16,7 +16,7 @@ class CfgVehicles {
|
||||
class values {
|
||||
class DoNotForce {
|
||||
default = 1;
|
||||
name = CSTRING(DoNotForce);
|
||||
name = ECSTRING(common,DoNotForce);
|
||||
value = -1;
|
||||
};
|
||||
class ForceHide {
|
||||
@ -54,7 +54,7 @@ class CfgVehicles {
|
||||
class values {
|
||||
class DoNotForce {
|
||||
default = 1;
|
||||
name = CSTRING(DoNotForce);
|
||||
name = ECSTRING(common,DoNotForce);
|
||||
value = -1;
|
||||
};
|
||||
class ForceHide {
|
||||
@ -74,7 +74,7 @@ class CfgVehicles {
|
||||
class values {
|
||||
class DoNotForce {
|
||||
default = 1;
|
||||
name = CSTRING(DoNotForce);
|
||||
name = ECSTRING(common,DoNotForce);
|
||||
value = -1;
|
||||
};
|
||||
class ForceHide {
|
||||
|
@ -149,14 +149,6 @@
|
||||
<Czech>Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat</Czech>
|
||||
<Portuguese>Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_DoNotForce">
|
||||
<English>Do Not Force</English>
|
||||
<Polish>Nie wymuszaj</Polish>
|
||||
<Spanish>No forzar</Spanish>
|
||||
<German>Nicht erzwingen</German>
|
||||
<Czech>Nevynucovat</Czech>
|
||||
<Portuguese>Não forçar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_ForceHide">
|
||||
<English>Force Hide</English>
|
||||
<Polish>Wymuś ukrycie</Polish>
|
||||
@ -213,22 +205,6 @@
|
||||
<Czech>Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky.</Czech>
|
||||
<Portuguese>Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_Disabled">
|
||||
<English>Disabled</English>
|
||||
<Polish>Wyłączone</Polish>
|
||||
<Spanish>Desactivado</Spanish>
|
||||
<German>Deaktiviert</German>
|
||||
<Czech>Zakázáno</Czech>
|
||||
<Portuguese>Desativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_Enabled">
|
||||
<English>Enabled</English>
|
||||
<Polish>Włączone</Polish>
|
||||
<Spanish>Activado</Spanish>
|
||||
<German>Aktiviert</German>
|
||||
<Czech>Povoleno</Czech>
|
||||
<Portuguese>Ativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_OnlyCursor">
|
||||
<English>Only on Cursor</English>
|
||||
<Polish>Tylko pod kursorem</Polish>
|
||||
|
@ -1,5 +1,10 @@
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
11
addons/optionsmenu/XEH_postInit.sqf
Normal file
11
addons/optionsmenu/XEH_postInit.sqf
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
["SettingsInitialized", {
|
||||
GVAR(categories) pushback ""; //Ensure All Catagories is at top
|
||||
{
|
||||
if !(_x select 8 in GVAR(categories)) then {
|
||||
GVAR(categories) pushback (_x select 8);
|
||||
};
|
||||
}foreach EGVAR(common,settings);
|
||||
}] call EFUNC(common,addEventHandler);
|
@ -10,16 +10,19 @@ PREP(onSliderPosChanged);
|
||||
PREP(onServerSaveInputField);
|
||||
PREP(onServerSettingsMenuOpen);
|
||||
PREP(onServerListBoxShowSelectionChanged);
|
||||
PREP(onCategorySelectChanged);
|
||||
PREP(resetSettings);
|
||||
PREP(serverResetSettings);
|
||||
PREP(settingsMenuUpdateKeyView);
|
||||
PREP(settingsMenuUpdateList);
|
||||
PREP(serverSettingsMenuUpdateKeyView);
|
||||
PREP(serverSettingsMenuUpdateList);
|
||||
PREP(onServerCategorySelectChanged);
|
||||
PREP(updateSetting);
|
||||
PREP(exportSettings);
|
||||
PREP(toggleIncludeClientSettings);
|
||||
PREP(moduleAllowConfigExport);
|
||||
PREP(stringEscape);
|
||||
|
||||
GVAR(clientSideOptions) = [];
|
||||
GVAR(clientSideColors) = [];
|
||||
@ -29,5 +32,7 @@ GVAR(ClientSettingsExportIncluded) = false;
|
||||
GVAR(serverSideOptions) = [];
|
||||
GVAR(serverSideColors) = [];
|
||||
GVAR(serverSideValues) = [];
|
||||
GVAR(categories) = [];
|
||||
GVAR(currentCategorySelection) = 0;
|
||||
|
||||
ADDON = true;
|
||||
|
@ -40,7 +40,7 @@ private ["_compiledConfig", "_name", "_typeName", "_isClientSetable", "_localize
|
||||
|
||||
if (GVAR(ClientSettingsExportIncluded) || !_isClientSetable) then {
|
||||
_value = missionNamespace getvariable [_name, _defaultValue];
|
||||
if (_typeName == "STRING") then { // I dont think we have string values, but just in case
|
||||
if (_typeName == "STRING") then {
|
||||
_value = format['"%1"', _value];
|
||||
};
|
||||
if (_typeName == "BOOL") then {
|
||||
|
27
addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf
Normal file
27
addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Changes which category is selected
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ACE_optionsmenu_fnc_onCategorySelectChanged
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_settingsMenu"];
|
||||
|
||||
disableSerialization;
|
||||
_settingsMenu = uiNamespace getVariable 'ACE_settingsMenu';
|
||||
|
||||
_ctrlComboBox = (_settingsMenu displayCtrl 14);
|
||||
GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox;
|
||||
|
||||
[false] call FUNC(settingsMenuUpdateList);
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Changes which category is selected
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ACE_optionsmenu_fnc_onCategorySelectChanged
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_settingsMenu", "_ctrlComboBox"];
|
||||
disableSerialization;
|
||||
_settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu';
|
||||
|
||||
_ctrlComboBox = (_settingsMenu displayCtrl 14);
|
||||
GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox;
|
||||
|
||||
[false] call FUNC(serverSettingsMenuUpdateList);
|
@ -29,7 +29,10 @@ switch (GVAR(optionMenu_openTab)) do {
|
||||
_settingName = _setting select 0;
|
||||
|
||||
_convertedValue = switch (toUpper (_setting select 1)) do {
|
||||
case "STRING": {format ['"%1"', _inputText]};
|
||||
case "STRING": {
|
||||
ctrlSetText [414, _inputText call FUNC(stringEscape)];
|
||||
format ['%1', _inputText call FUNC(stringEscape)];
|
||||
};
|
||||
case "ARRAY": {format [call compile "[%1]", _inputText]};
|
||||
case "SCALAR": {parseNumber _inputText;};
|
||||
default {throw "Error"};
|
||||
|
@ -61,7 +61,19 @@ _menu = uiNamespace getvariable "ACE_serverSettingsMenu";
|
||||
(_menu displayCtrl 1003) ctrlEnable false;
|
||||
|
||||
if (GVAR(ClientSettingsExportIncluded)) then {
|
||||
(_settingsMenu displayCtrl 1102) ctrlSetText localize (LSTRING(exClientSettings));
|
||||
(_settingsMenu displayCtrl 1102) ctrlSetText localize (CSTRING(exClientSettings));
|
||||
} else {
|
||||
(_settingsMenu displayCtrl 1102) ctrlSetText localize (LSTRING(inClientSettings));
|
||||
(_settingsMenu displayCtrl 1102) ctrlSetText localize (CSTRING(inClientSettings));
|
||||
};
|
||||
|
||||
|
||||
lbClear (_menu displayCtrl 14);
|
||||
{
|
||||
if (_x == "") then {
|
||||
_x = localize "STR_ACE_OptionsMenu_category_all";
|
||||
};
|
||||
if (isLocalized _x) then {_x = localize _x};
|
||||
(_menu displayCtrl 14) lbAdd _x;
|
||||
} forEach GVAR(categories);
|
||||
|
||||
(_menu displayCtrl 14) lbSetCurSel GVAR(currentCategorySelection); //All Catagoies
|
||||
|
@ -52,3 +52,16 @@ if (GVAR(serverConfigGeneration) == 0) then {
|
||||
(_menu displayCtrl 1102) ctrlEnable false;
|
||||
(_menu displayCtrl 1102) ctrlShow false;
|
||||
};
|
||||
|
||||
lbClear (_menu displayCtrl 14);
|
||||
{
|
||||
if (_x == "") then {
|
||||
_x = localize "STR_ACE_OptionsMenu_category_all";
|
||||
};
|
||||
if (isLocalized _x) then {_x = localize _x};
|
||||
(_menu displayCtrl 14) lbAdd _x;
|
||||
} forEach GVAR(categories);
|
||||
|
||||
(_menu displayCtrl 14) lbSetCurSel GVAR(currentCategorySelection); //All Catagoies
|
||||
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_settingsMenu", "_ctrlList", "_collection", "_settingIndex", "_setting", "_entryName", "_localizedName", "_localizedDescription", "_possibleValues", "_settingsValue", "_currentColor", "_expectedType"];
|
||||
private ["_settingsMenu", "_ctrlList", "_collection", "_settingIndex", "_setting", "_entryName", "_localizedName", "_localizedDescription", "_possibleValues", "_settingsValue", "_currentColor", "_expectedType", "_filteredCollection", "_selectedCategory"];
|
||||
disableSerialization;
|
||||
|
||||
_settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu';
|
||||
@ -29,16 +29,24 @@ _collection = switch (GVAR(optionMenu_openTab)) do {
|
||||
default {[]};
|
||||
};
|
||||
|
||||
if (count _collection > 0) then {
|
||||
_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection);
|
||||
_filteredCollection = [];
|
||||
{
|
||||
if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then {
|
||||
_filteredCollection pushBack _x;
|
||||
};
|
||||
} forEach _collection;
|
||||
|
||||
if (count _filteredCollection > 0) then {
|
||||
_settingIndex = (lbCurSel _ctrlList);
|
||||
if (_settingIndex > (count _collection)) then {
|
||||
_settingIndex = count _collection - 1;
|
||||
if (_settingIndex > (count _filteredCollection)) then {
|
||||
_settingIndex = count _filteredCollection - 1;
|
||||
};
|
||||
|
||||
if (_settingIndex < 0) then {
|
||||
_settingIndex = 0;
|
||||
};
|
||||
_setting = _collection select _settingIndex;
|
||||
_setting = _filteredCollection select _settingIndex;
|
||||
|
||||
_entryName = _setting select 0;
|
||||
_localizedName = _setting select 3;
|
||||
@ -52,12 +60,12 @@ if (count _collection > 0) then {
|
||||
switch (GVAR(optionMenu_openTab)) do {
|
||||
case (MENU_TAB_SERVER_OPTIONS): {
|
||||
_possibleValues = _setting select 5;
|
||||
_settingsValue = _setting select 8;
|
||||
_settingsValue = _setting select 9;
|
||||
// Created disable/enable options for bools
|
||||
if ((_setting select 1) == "BOOL") then {
|
||||
lbClear 400;
|
||||
lbAdd [400, (localize LSTRING(Disabled))];
|
||||
lbAdd [400, (localize LSTRING(Enabled))];
|
||||
lbAdd [400, (localize ELSTRING(common,No))];
|
||||
lbAdd [400, (localize ELSTRING(common,Yes))];
|
||||
_settingsValue = [0, 1] select _settingsValue;
|
||||
} else {
|
||||
lbClear 400;
|
||||
@ -66,14 +74,14 @@ if (count _collection > 0) then {
|
||||
(_settingsMenu displayCtrl 400) lbSetCurSel _settingsValue;
|
||||
};
|
||||
case (MENU_TAB_SERVER_COLORS): {
|
||||
_currentColor = _setting select 8;
|
||||
_currentColor = _setting select 9;
|
||||
{
|
||||
sliderSetPosition [_x, (255 * (_currentColor select _forEachIndex))];
|
||||
} forEach [410, 411, 412, 413];
|
||||
};
|
||||
case (MENU_TAB_SERVER_VALUES): {
|
||||
// TODO implement
|
||||
_settingsValue = _setting select 8;
|
||||
_settingsValue = _setting select 9;
|
||||
|
||||
// Created disable/enable options for bools
|
||||
_expectedType = switch (_setting select 1) do {
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue"];
|
||||
private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue", "_selectedCategory"];
|
||||
DEFAULT_PARAM(0,_updateKeyView,true);
|
||||
|
||||
disableSerialization;
|
||||
@ -24,55 +24,65 @@ _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu';
|
||||
_ctrlList = _settingsMenu displayCtrl 200;
|
||||
|
||||
lbclear _ctrlList;
|
||||
|
||||
_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection);
|
||||
|
||||
|
||||
switch (GVAR(optionMenu_openTab)) do {
|
||||
case (MENU_TAB_SERVER_OPTIONS): {
|
||||
{
|
||||
if ((_x select 3) != "") then {
|
||||
_ctrlList lbadd (_x select 3);
|
||||
} else {
|
||||
_ctrlList lbadd (_x select 0);
|
||||
if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then {
|
||||
if ((_x select 3) != "") then {
|
||||
_ctrlList lbadd (_x select 3);
|
||||
} else {
|
||||
_ctrlList lbadd (_x select 0);
|
||||
};
|
||||
|
||||
_settingsValue = _x select 9;
|
||||
|
||||
// Created disable/enable options for bools
|
||||
_settingsText = if ((_x select 1) == "BOOL") then {
|
||||
[(localize ELSTRING(common,No)), (localize ELSTRING(common,Yes))] select _settingsValue;
|
||||
} else {
|
||||
(_x select 5) select _settingsValue;
|
||||
};
|
||||
|
||||
_ctrlList lbadd (_settingsText);
|
||||
};
|
||||
|
||||
_settingsValue = _x select 8;
|
||||
|
||||
// Created disable/enable options for bools
|
||||
_settingsText = if ((_x select 1) == "BOOL") then {
|
||||
[(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue;
|
||||
} else {
|
||||
(_x select 5) select _settingsValue;
|
||||
};
|
||||
|
||||
_ctrlList lbadd (_settingsText);
|
||||
}foreach GVAR(serverSideOptions);
|
||||
};
|
||||
case (MENU_TAB_SERVER_COLORS): {
|
||||
{
|
||||
_color = +(_x select 8);
|
||||
{
|
||||
_color set [_forEachIndex, ((round (_x * 100))/100)];
|
||||
} forEach _color;
|
||||
_settingsColor = str _color;
|
||||
if ((_x select 3) != "") then {
|
||||
_ctrlList lbadd (_x select 3);
|
||||
} else {
|
||||
_ctrlList lbadd (_x select 0);
|
||||
if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then {
|
||||
_color = +(_x select 9);
|
||||
{
|
||||
_color set [_forEachIndex, ((round (_x * 100))/100)];
|
||||
} forEach _color;
|
||||
_settingsColor = str _color;
|
||||
if ((_x select 3) != "") then {
|
||||
_ctrlList lbadd (_x select 3);
|
||||
} else {
|
||||
_ctrlList lbadd (_x select 0);
|
||||
};
|
||||
_ctrlList lbadd (_settingsColor);
|
||||
_ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)];
|
||||
};
|
||||
_ctrlList lbadd (_settingsColor);
|
||||
_ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 8)];
|
||||
}foreach GVAR(serverSideColors);
|
||||
};
|
||||
case (MENU_TAB_SERVER_VALUES): {
|
||||
{
|
||||
if ((_x select 3) != "") then {
|
||||
_ctrlList lbadd (_x select 3);
|
||||
} else {
|
||||
_ctrlList lbadd (_x select 0);
|
||||
if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then {
|
||||
if ((_x select 3) != "") then {
|
||||
_ctrlList lbadd (_x select 3);
|
||||
} else {
|
||||
_ctrlList lbadd (_x select 0);
|
||||
};
|
||||
_settingsValue = _x select 9;
|
||||
if (typeName _settingsValue != "STRINg") then {
|
||||
_settingsValue = format["%1", _settingsValue];
|
||||
};
|
||||
_ctrlList lbadd (_settingsValue);
|
||||
};
|
||||
_settingsValue = _x select 8;
|
||||
if (typeName _settingsValue != "STRINg") then {
|
||||
_settingsValue = format["%1", _settingsValue];
|
||||
};
|
||||
_ctrlList lbadd (_settingsValue);
|
||||
}foreach GVAR(serverSideValues);
|
||||
};
|
||||
};
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user