Merge branch 'master' of github.com:KoffeinFlummi/ACE3

This commit is contained in:
esteldunedain 2016-02-25 09:51:56 -03:00
commit 4f6fa74690
17 changed files with 209 additions and 54 deletions

View File

@ -8,7 +8,7 @@ class Cfg3DEN {
control = "Checkbox";
displayName = CSTRING(ModuleHandcuffed_DisplayName);
tooltip = CSTRING(ModuleHandcuffed_Description);
expression = QUOTE([ARR_2(_this,_value)]call FUNC(setHandcuffed));
expression = QUOTE(if (_value) then {[ARR_3(objNull,[_this],true)] call FUNC(moduleHandcuffed)});
typeName = "BOOL";
condition = "objectBrain";
defaultValue = false;
@ -18,7 +18,7 @@ class Cfg3DEN {
control = "Checkbox";
displayName = CSTRING(ModuleSurrender_DisplayName);
tooltip = CSTRING(ModuleSurrender_Description);
expression = QUOTE([ARR_2(_this,_value)]call FUNC(setSurrendered));
expression = QUOTE(if (_value) then {[ARR_3(objNull,[_this],true)] call FUNC(moduleSurrender)});
typeName = "BOOL";
condition = "objectBrain";
defaultValue = false;

View File

@ -1,6 +1,7 @@
/*
* Author: PabstMirror
* Module Function to make a unit handcuffed (can be called from editor)
* Also used for threeden attribute expression with dummy Logic Object
*
* Arguments:
* 0: The Module Logic <OBJECT>
@ -11,7 +12,7 @@
* Nothing
*
* Example:
* Called from module
* [objNull, [player], true] call ace_captives_fnc_moduleHandcuffed
*
* Public: No
*/
@ -28,8 +29,11 @@ if (!isServer) exitWith {};
[{
params ["_units"];
{
TRACE_2("event",_x,local _x);
["SetHandcuffed", [_x], [_x, true]] call EFUNC(common,targetEvent);
} forEach _units;
}, [_units], 0.05] call EFUNC(common,waitAndExecute);
deleteVehicle _logic;
if (!isNull _logic) then {
deleteVehicle _logic;
};

View File

@ -1,6 +1,7 @@
/*
* Author: PabstMirror
* Module Function to make a unit surrender (can be called from editor)
* Also used for threeden attribute expression with dummy Logic Object
*
* Arguments:
* 0: The Module Logic <OBJECT>
@ -11,7 +12,7 @@
* Nothing
*
* Example:
* Called from module
* [objNull, [player], true] call ace_captives_fnc_moduleSurrender
*
* Public: No
*/
@ -28,8 +29,11 @@ if (!isServer) exitWith {};
[{
params ["_units"];
{
TRACE_2("event",_x,local _x);
["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
} forEach _units;
}, [_units], 0.05] call EFUNC(common,waitAndExecute);
deleteVehicle _logic;
if (!isNull _logic) then {
deleteVehicle _logic;
};

View File

@ -24,7 +24,7 @@
["UnloadCargo", {
(_this select 0) params ["_item","_vehicle", ["_unloader", objNull]];
TRACE_3("UnloadCargo EH",_item,_vehicle,_unloader);
private _unloaded = [_item, _vehicle, _unloader] call FUNC(unloadItem); //returns true if sucessful
private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
@ -43,3 +43,10 @@
// TOOO maybe drag/carry the unloaded item?
}] call EFUNC(common,addEventHandler);
["ServerUnloadCargo", {
params ["_item", "_emptyPosAGL"];
_item hideObjectGlobal false;
_item setPosASL (AGLtoASL _emptyPosAGL);
}] call EFUNC(common,addEventHandler);

View File

@ -50,8 +50,9 @@ _vehicle setVariable [QGVAR(space), (_space + _itemSize), true];
if (_item isEqualType objNull) then {
detach _item;
_item setPosASL (AGLtoASL _emptyPosAGL);
["hideObjectGlobal", [_item, false]] call EFUNC(common,serverEvent);
// hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly
// do both on server to ensure they are executed in the correct order
["ServerUnloadCargo", [_item, _emptyPosAGL]] call EFUNC(common,serverEvent);
} else {
private _newItem = createVehicle [_item, _emptyPosAGL, [], 0, ""];
_newItem setPosASL (AGLtoASL _emptyPosAGL);

View File

@ -33,7 +33,7 @@ class GVAR(menu) {
w = "13 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
style = ST_LEFT + ST_SHADOW;
font = "PuristaMedium";
font = "RobotoCondensed";
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])"};
@ -67,7 +67,7 @@ class GVAR(menu) {
colorSelectBackground[] = {0.3, 0.3, 0.3, 1.0};
colorSelectBackground2[] = {0.3, 0.3, 0.3, 1.0};
};
class btnUnload: ACE_gui_buttonBase {
class btnCancel: ACE_gui_buttonBase {
text = "Cancel";
idc = 11;
x = "13.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
@ -93,7 +93,7 @@ class GVAR(menu) {
periodOver = 1;
action = QUOTE(closeDialog 0);
};
class btnCancel: btnUnload {
class btnUnload: btnCancel {
text = CSTRING(unloadObject);
idc = 12;
x = "20.9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";

View File

@ -241,6 +241,7 @@ PREP(fixCrateContent);
PREP(globalEvent);
PREP(_handleNetEvent);
PREP(addEventHandler);
PREP(objectEvent);
PREP(targetEvent);
PREP(serverEvent);
PREP(localEvent);

View File

@ -149,6 +149,9 @@ if (isServer) then {
["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler);
["selectLeader", {(_this select 0) selectLeader (_this select 1)}] call FUNC(addEventHandler);
["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call FUNC(addEventHandler);
["playMove", {(_this select 0) playMove (_this select 1)}] call FUNC(addEventHandler);
["playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call FUNC(addEventHandler);
["switchMove", {(_this select 0) switchMove (_this select 1)}] call FUNC(addEventHandler);
if (isServer) then {
["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler);

View File

@ -1,6 +1,5 @@
/*
* Author: commy2
*
* Execute an animation. This is used to not break things like the unconsciousness animation.
*
* Arguments:
@ -10,15 +9,20 @@
* 0 = PlayMove
* 1 = PlayMoveNow
* 2 = SwitchMove (no transitional animation, doesn't overwrite priority 1)
* 3: Force overwritting unconscious (default: false) <BOOL>
*
* Return Value:
* None
*
* Example:
* [player, "AmovPercMstpSnonWnonDnon_exerciseKata", 1] call ace_common_fnc_doAnimation
*
* Public: Yes
*/
#include "script_component.hpp"
params ["_unit", "_animation", ["_priority", 0], ["_force", false]];
TRACE_4("params",_unit,_animation,_priority,_force);
// don't overwrite more important animations
if (_unit getVariable ["ACE_isUnconscious", false] && {(_animation != "Unconscious")} && {!_force}) exitWith {};
@ -33,36 +37,38 @@ if (_animation == "") then {
//if (_animation == animationState _unit) exitWith {};
TRACE_2("",local _unit,vehicle _unit);
switch (_priority) do {
case 0: {
if (_unit == vehicle _unit) then {
[_unit, format ["{_this playMove '%1'}", _animation], _unit] call FUNC(execRemoteFnc);
["playMove", _unit, [_unit, _animation]] call FUNC(objectEvent);
} else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles.
[_unit, format ["{_this playMove '%1'}", _animation]] call FUNC(execRemoteFnc);
["playMove", [_unit, _animation]] call FUNC(globalEvent);
};
};
case 1: {
if (_unit == vehicle _unit) then {
[_unit, format ["{_this playMoveNow '%1'}", _animation], _unit] call FUNC(execRemoteFnc);
["playMoveNow", _unit, [_unit, _animation]] call FUNC(objectEvent);
} else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles.
[_unit, format ["{_this playMoveNow '%1'}", _animation]] call FUNC(execRemoteFnc);
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles.
["playMoveNow", [_unit, _animation]] call FUNC(globalEvent);
};
};
case 2: {
// try playMoveNow first
if (_unit == vehicle _unit) then {
[_unit, format ["{_this playMoveNow '%1'}", _animation], _unit] call FUNC(execRemoteFnc);
["playMoveNow", _unit, [_unit, _animation]] call FUNC(objectEvent);
} else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles.
[_unit, format ["{_this playMoveNow '%1'}", _animation]] call FUNC(execRemoteFnc);
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles.
["playMoveNow", [_unit, _animation]] call FUNC(globalEvent);
};
// if animation doesn't respond, do switchMove
if (animationState _unit != _animation) then {
TRACE_1("did not respond to playMoveNow",animationState _unit);
// Execute on all machines. SwitchMove has local effects.
[_unit, format ["{_this switchMove '%1'}", _animation]] call FUNC(execRemoteFnc);
["switchMove", [_unit, _animation]] call FUNC(globalEvent);
};
};
default {};

View File

@ -0,0 +1,34 @@
/*
* Author: PabstMirror
* Execute an event where object is local.
* If local there is no network traffic/delay (Unlike targetEvent)
*
* Arguments:
* 0: Event name (STRING)
* 1: Event target <OBJECT>
* 2: Event args <ANY>
*
* Return Value:
* None
*
* Example:
* ["doThing", vehicle player, []] call ace_common_fnc_objectEvent
*
* Public: Yes
*/
#include "script_component.hpp"
params ["_eventName", "_eventTarget", "_eventArgs"];
#ifdef DEBUG_EVENTS
ACE_LOGINFO_2("* Object Event: %1 - %2",_eventName,_eventTarget);
ACE_LOGINFO_1(" args=%1",_eventArgs);
#endif
if (local _eventTarget) then {
[_eventName, _eventArgs] call FUNC(localEvent);
} else {
_this call FUNC(targetEvent);
};
nil

View File

@ -6,6 +6,8 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
// Vanilla
"3den",
"a3_air_f",
"a3_air_f_beta",
"a3_air_f_beta_heli_attack_01",
@ -49,6 +51,7 @@ class CfgPatches {
"a3_anims_f_config_sdr",
"a3_anims_f_epa",
"a3_anims_f_epc",
"a3_anims_f_exp_a",
"a3_anims_f_heli",
"a3_anims_f_kart",
"a3_anims_f_mark_deployment",
@ -106,6 +109,9 @@ class CfgPatches {
"a3_data_f_curator_misc",
"a3_data_f_curator_respawn",
"a3_data_f_curator_virtual",
"a3_data_f_exp_a",
"a3_data_f_exp_a_virtual",
"a3_data_f_exp_b",
"a3_data_f_heli",
"a3_data_f_hook",
"a3_data_f_kart",
@ -119,6 +125,7 @@ class CfgPatches {
"a3_functions_f_curator",
"a3_functions_f_epa",
"a3_functions_f_epc",
"a3_functions_f_exp_a",
"a3_functions_f_heli",
"a3_functions_f_mark",
"a3_functions_f_mp_mark",
@ -129,6 +136,7 @@ class CfgPatches {
"a3_language_f_epa",
"a3_language_f_epb",
"a3_language_f_epc",
"a3_language_f_exp_a",
"a3_language_f_gamma",
"a3_language_f_heli",
"a3_language_f_kart",
@ -154,6 +162,7 @@ class CfgPatches {
"a3_missions_f_epa",
"a3_missions_f_epb",
"a3_missions_f_epc",
"a3_missions_f_exp_a",
"a3_missions_f_gamma",
"a3_missions_f_heli",
"a3_missions_f_kart",
@ -186,6 +195,7 @@ class CfgPatches {
"a3_modules_f_epb",
"a3_modules_f_epb_misc",
"a3_modules_f_events",
"a3_modules_f_exp_a",
"a3_modules_f_groupmodifiers",
"a3_modules_f_hc",
"a3_modules_f_heli",
@ -215,6 +225,9 @@ class CfgPatches {
"a3_music_f_heli",
"a3_music_f_mark",
"a3_plants_f_bush",
"a3_props_f_exp_a",
"a3_props_f_exp_a_military",
"a3_props_f_exp_a_military_equipment",
"a3_roads_f",
"a3_rocks_f",
"a3_signs_f",
@ -253,6 +266,8 @@ class CfgPatches {
"a3_sounds_f_bootcamp",
"a3_sounds_f_epb",
"a3_sounds_f_epc",
"a3_sounds_f_exp_a",
"a3_sounds_f_mark",
"a3_static_f",
"a3_static_f_beta_mortar_01",
"a3_static_f_gamma",
@ -337,6 +352,9 @@ class CfgPatches {
"a3_structures_f_epc_items_documents",
"a3_structures_f_epc_items_electronics",
"a3_structures_f_epc_walls",
"a3_structures_f_exp_a",
"a3_structures_f_exp_a_vr_blocks",
"a3_structures_f_exp_a_vr_helpers",
"a3_structures_f_furniture",
"a3_structures_f_heli_civ_accessories",
"a3_structures_f_heli_civ_constructions",
@ -446,6 +464,7 @@ class CfgPatches {
"a3_ui_f",
"a3_ui_f_bootcamp",
"a3_ui_f_curator",
"a3_ui_f_exp_a",
"a3_ui_f_heli",
"a3_ui_f_kart",
"a3_ui_f_mark",
@ -541,7 +560,12 @@ class CfgPatches {
"a3_weapons_f_vests",
"a3data",
"map_vr",
"extended_eventhandlers", "cba_ui", "cba_xeh", "cba_xeh_a3", "cba_jr"
// CBA
"extended_eventhandlers",
"cba_ui",
"cba_xeh",
"cba_xeh_a3",
"cba_jr"
};
author[] = {ECSTRING(common,ACETeam)};
authorUrl = "http://ace3mod.com/";
@ -564,10 +588,3 @@ class CfgMods {
#include "CfgModuleCategories.hpp"
#include "CfgVehicleClasses.hpp"
// @todo delete this after CBA update, defines undefined global variable
class Extended_PreStart_EventHandlers {
class ADDON {
init = "with uiNamespace do {SLX_XEH_COMPILE_NEW = CBA_fnc_compileFunction};";
};
};

View File

@ -84,7 +84,7 @@
#ifdef DISABLE_COMPILE_CACHE
#define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf))
#else
#define PREP(fncName) [QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf)), QFUNC(fncName)] call SLX_XEH_COMPILE_NEW
#define PREP(fncName) [QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf)), QFUNC(fncName)] call CBA_fnc_compileFunction
#endif
#define PREP_MODULE(folder) [] call compile preprocessFileLineNumbers QUOTE(PATHTOF(folder\__PREP__.sqf))

View File

@ -12,4 +12,4 @@
#define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD
// MINIMAL required version for the Mod. Components can specify others..
#define REQUIRED_VERSION 1.54
#define REQUIRED_VERSION 1.56

View File

@ -1,23 +1,45 @@
class ctrlToolbox;
class Cfg3DEN {
class Attributes {
class Default;
class Title: Default {
class Controls {
class Title;
};
};
class GVAR(isMedicControl): Title {
attributeLoad = "(_this controlsGroupCtrl 100) lbsetcursel (((_value + 1) min 3) max 0);";
attributeSave = "(missionnamespace getvariable ['ace_isMeidc_temp',0]) - 1;";
class Controls: Controls {
class Title: Title{};
class Value: ctrlToolbox {
idc = 100;
style = "0x02";
x = "48 * (pixelW * 1.25 * 4)";
w = "82 * (pixelW * 1.25 * 4)";
h = "5 * (pixelH * 1.25 * 4)";
rows = 1;
columns = 4;
strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignMedicRoles_role_none), CSTRING(AssignMedicRoles_role_medic), CSTRING(AssignMedicRoles_role_doctorShort)};
onToolboxSelChanged = "missionnamespace setvariable ['ace_isMeidc_temp',_this select 1];";
};
};
};
};
class Object {
class AttributeCategories {
class ace_attributes {
class Attributes {
class ace_isMedic {
property = QUOTE(ace_isMedic);
value = 0;
control = "Combo";
control = QGVAR(isMedicControl);
displayName = CSTRING(AssignMedicRoles_role_DisplayName);
tooltip = CSTRING(Attributes_isMedic_Description);
expression = QUOTE(_this setVariable [ARR_2(QUOTE(QGVAR(medicClass)),_value)];);
expression = QUOTE(if (_value != -1) then {_this setVariable [ARR_3(QUOTE(QGVAR(medicClass)),_value, true)];};);
typeName = "NUMBER";
condition = "objectBrain";
defaultValue = 0;
class values {
class none {name = CSTRING(AssignMedicRoles_role_none); value = 0; default = 1;};
class medic {name = CSTRING(AssignMedicRoles_role_medic); value = 1; default = 0;};
class doctor {name = CSTRING(AssignMedicRoles_role_doctor); value = 2; default = 0;};
};
defaultValue = "-1";
};
class ace_isMedicalVehicle {
property = QUOTE(ace_isMedicalVehicle);
@ -25,7 +47,7 @@ class Cfg3DEN {
control = "CheckboxNumber";
displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName);
tooltip = CSTRING(Attributes_isMedicalVehicle_Description);
expression = QUOTE(_this setVariable [ARR_2(QUOTE(QGVAR(medicClass)),_value)];);
expression = QUOTE(_this setVariable [ARR_3(QUOTE(QGVAR(medicClass)),_value, true)];);
typeName = "NUMBER";
condition = "objectVehicle";
defaultValue = 0;
@ -36,7 +58,7 @@ class Cfg3DEN {
control = "Checkbox";
displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName);
tooltip = CSTRING(AssignMedicalFacility_enabled_Description);
expression = QUOTE(_this setVariable [ARR_2(QUOTE(QGVAR(isMedicalFacility)),_value)];);
expression = QUOTE(_this setVariable [ARR_3(QUOTE(QGVAR(isMedicalFacility)),_value, true)];);
typeName = "BOOL";
condition = "(1 - objectBrain) * (1 - objectVehicle)";
defaultValue = "false";

View File

@ -3815,6 +3815,18 @@
<Hungarian>Doktor (csak fejlett orvosok)</Hungarian>
<Italian>Dottore (Solo Medici Avanzati)</Italian>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_doctorShort">
<English>Doctor</English>
<Russian>Врач</Russian>
<Polish>Doktor</Polish>
<Spanish>Doctor</Spanish>
<German>Arzt</German>
<Czech>Doktor</Czech>
<Portuguese>Doutor</Portuguese>
<French>Médecin</French>
<Hungarian>Doktor</Hungarian>
<Italian>Dottore</Italian>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_Module_Description">
<English>Assigns the ACE medic class to a unit</English>
<Russian>Задает юниту класс медика</Russian>

View File

@ -145,66 +145,87 @@
</Key>
<Key ID="STR_ACE_Mk6Mortar_useAmmoHandling_DisplayName">
<English>Use Ammunition handling</English>
<German>Aktiviere Munitionshandhabung</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_useAmmoHandling_Description">
<English>Removes mortar magazines, requiring individual rounds to be loaded by the gunner or loader. Does not affect AI mortars.</English>
<German>Enfernt das Magzin des Mörsers. Es ist nun erforderlich, die einzelnen Patronen manuell zu laden. Dies beeinflusst nicht die KI-Truppen.</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_unloadMortar">
<English>Remove Round</English>
<German>Entferne Patrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_loadMortar">
<English>Load Mortar</English>
<German>Lade Mörser</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_unloadingMortar">
<English>Unloading Round</English>
<German>Mörser entladen</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_loadingMortar">
<English>Preparing Round</English>
<German>Patrone vorbereiten</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE">
<English>Load HE</English>
<German>Lade Sprengpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_Smoke">
<English>Load Smoke</English>
<German>Lade Nebelpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_Illum">
<English>Load Illumination</English>
<German>Lade Leuchtpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE_Guided">
<English>Load Guided HE</English>
<German>Lade gelenkte Sprengpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE_LaserGuided">
<English>Load Laser Guided HE</English>
<German>Lade lasergelenkte Sprengpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_HE_displayName">
<English>82mm HE Round</English>
<German>82mm Sprengpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_Smoke_displayName">
<English>82mm Smoke Round</English>
<German>82mm Nebelpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_Illum_displayName">
<English>82mm Illumination Round</English>
<German>82mm Leuchtpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_HE_Guided_displayName">
<English>82mm Guided HE Round</English>
<German>82mm gelenkte Sprengpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_HE_LaserGuided_displayName">
<English>82mm Laser Guided HE Round</English>
<German>82mm lasergelenkte Sprengpatrone</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_descriptionShort">
<English>Used in Mk6 mortar</English>
<German>Wird im Mk6 Mörser verwendet</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_HEBox_DisplayName">
<English>[ACE] 82mm HE Rounds Box</English>
<German>[ACE] 82mm Sprengpatronenkiste</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_SmokeBox_DisplayName">
<English>[ACE] 82mm Smoke Rounds Box</English>
<German>[ACE] 82mm Nebelpatronenkiste</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_IllumBox_DisplayName">
<English>[ACE] 82mm Illumination Rounds Box</English>
<German>[ACE] 82mm Leuchtpatronenkiste</German>
</Key>
<Key ID="STR_ACE_Mk6Mortar_ComboBox_DisplayName">
<English>[ACE] 82mm Default Loadout Box</English>
<German>[ACE] 82mm Standardkiste</German>
</Key>
</Package>
</Project>

View File

@ -1,23 +1,46 @@
class ctrlToolbox;
class Cfg3DEN {
class Attributes {
class Default;
class Title: Default {
class Controls {
class Title;
};
};
class GVAR(isEngineerControl): Title {
attributeLoad = "(_this controlsGroupCtrl 100) lbsetcursel (((_value + 1) min 3) max 0);";
attributeSave = "(missionnamespace getvariable ['ace_isEng_temp',0]) - 1;";
class Controls: Controls {
class Title: Title{};
class Value: ctrlToolbox {
idc = 100;
style = "0x02";
x = "48 * (pixelW * 1.25 * 4)";
w = "82 * (pixelW * 1.25 * 4)";
h = "5 * (pixelH * 1.25 * 4)";
rows = 1;
columns = 4;
strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignEngineerRole_role_none), CSTRING(AssignEngineerRole_role_engineer), CSTRING(AssignEngineerRole_role_specialist)};
onToolboxSelChanged = "missionnamespace setvariable ['ace_isEng_temp',_this select 1];";
};
};
};
};
class Object {
class AttributeCategories {
class ace_attributes {
class Attributes {
class ace_isEngineer {
property = QUOTE(ace_isEngineer);
value = 0;
control = "Combo";
displayName = CSTRING(AssignEngineerRole_role_DisplayName);
tooltip = CSTRING(AssignEngineerRole_role_Description);
expression = "_this setVariable ['%s',_value];";
expression = "if (_value != -1) then {_this setVariable ['%s',_value, true];}";
typeName = "NUMBER";
condition = "objectBrain";
defaultValue = 0;
class values {
class none {name = CSTRING(AssignEngineerRole_role_none); value = 0; default = 1;};
class engineer {name = CSTRING(AssignEngineerRole_role_engineer); value = 1; default = 0;};
class specialist {name = CSTRING(AssignEngineerRole_role_specialist); value = 2; default = 0;};
};
defaultValue = "-1";
control = QGVAR(isEngineerControl);
};
class ace_isRepairVehicle {
property = QUOTE(ace_isRepairVehicle);
@ -25,7 +48,7 @@ class Cfg3DEN {
control = "CheckboxNumber";
displayName = CSTRING(AssignRepairVehicle_role_DisplayName);
tooltip = CSTRING(AssignRepairVehicle_role_Description);
expression = "_this setVariable ['%s',_value];";
expression = "_this setVariable ['%s',_value, true];";
typeName = "NUMBER";
condition = "objectVehicle";
defaultValue = 0;
@ -36,7 +59,7 @@ class Cfg3DEN {
control = "CheckboxNumber";
displayName = CSTRING(AssignRepairFacility_role_DisplayName);
tooltip = CSTRING(AssignRepairFacility_role_Description);
expression = "_this setVariable ['%s',_value];";
expression = "_this setVariable ['%s',_value, true];";
typeName = "NUMBER";
condition = "(1 - objectBrain) * (1 - objectVehicle)";
defaultValue = 0;