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

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

View File

@ -8,7 +8,7 @@ class Cfg3DEN {
control = "Checkbox"; control = "Checkbox";
displayName = CSTRING(ModuleHandcuffed_DisplayName); displayName = CSTRING(ModuleHandcuffed_DisplayName);
tooltip = CSTRING(ModuleHandcuffed_Description); 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"; typeName = "BOOL";
condition = "objectBrain"; condition = "objectBrain";
defaultValue = false; defaultValue = false;
@ -18,7 +18,7 @@ class Cfg3DEN {
control = "Checkbox"; control = "Checkbox";
displayName = CSTRING(ModuleSurrender_DisplayName); displayName = CSTRING(ModuleSurrender_DisplayName);
tooltip = CSTRING(ModuleSurrender_Description); 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"; typeName = "BOOL";
condition = "objectBrain"; condition = "objectBrain";
defaultValue = false; defaultValue = false;

View File

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

View File

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

View File

@ -24,7 +24,7 @@
["UnloadCargo", { ["UnloadCargo", {
(_this select 0) params ["_item","_vehicle", ["_unloader", objNull]]; (_this select 0) params ["_item","_vehicle", ["_unloader", objNull]];
TRACE_3("UnloadCargo EH",_item,_vehicle,_unloader); TRACE_3("UnloadCargo EH",_item,_vehicle,_unloader);
private _unloaded = [_item, _vehicle, _unloader] call FUNC(unloadItem); //returns true if sucessful private _unloaded = [_item, _vehicle, _unloader] call FUNC(unloadItem); //returns true if sucessful
private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item}; private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
@ -43,3 +43,10 @@
// TOOO maybe drag/carry the unloaded item? // TOOO maybe drag/carry the unloaded item?
}] call EFUNC(common,addEventHandler); }] 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 { if (_item isEqualType objNull) then {
detach _item; detach _item;
_item setPosASL (AGLtoASL _emptyPosAGL); // hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly
["hideObjectGlobal", [_item, false]] call EFUNC(common,serverEvent); // do both on server to ensure they are executed in the correct order
["ServerUnloadCargo", [_item, _emptyPosAGL]] call EFUNC(common,serverEvent);
} else { } else {
private _newItem = createVehicle [_item, _emptyPosAGL, [], 0, ""]; private _newItem = createVehicle [_item, _emptyPosAGL, [], 0, ""];
_newItem setPosASL (AGLtoASL _emptyPosAGL); _newItem setPosASL (AGLtoASL _emptyPosAGL);

View File

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

View File

@ -149,6 +149,9 @@ if (isServer) then {
["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler); ["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler);
["selectLeader", {(_this select 0) selectLeader (_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); ["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 { if (isServer) then {
["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler); ["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler);

View File

@ -1,6 +1,5 @@
/* /*
* Author: commy2 * Author: commy2
*
* Execute an animation. This is used to not break things like the unconsciousness animation. * Execute an animation. This is used to not break things like the unconsciousness animation.
* *
* Arguments: * Arguments:
@ -10,15 +9,20 @@
* 0 = PlayMove * 0 = PlayMove
* 1 = PlayMoveNow * 1 = PlayMoveNow
* 2 = SwitchMove (no transitional animation, doesn't overwrite priority 1) * 2 = SwitchMove (no transitional animation, doesn't overwrite priority 1)
* 3: Force overwritting unconscious (default: false) <BOOL>
* *
* Return Value: * Return Value:
* None * None
* *
* Example:
* [player, "AmovPercMstpSnonWnonDnon_exerciseKata", 1] call ace_common_fnc_doAnimation
*
* Public: Yes * Public: Yes
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_unit", "_animation", ["_priority", 0], ["_force", false]]; params ["_unit", "_animation", ["_priority", 0], ["_force", false]];
TRACE_4("params",_unit,_animation,_priority,_force);
// don't overwrite more important animations // don't overwrite more important animations
if (_unit getVariable ["ACE_isUnconscious", false] && {(_animation != "Unconscious")} && {!_force}) exitWith {}; if (_unit getVariable ["ACE_isUnconscious", false] && {(_animation != "Unconscious")} && {!_force}) exitWith {};
@ -33,36 +37,38 @@ if (_animation == "") then {
//if (_animation == animationState _unit) exitWith {}; //if (_animation == animationState _unit) exitWith {};
TRACE_2("",local _unit,vehicle _unit);
switch (_priority) do { switch (_priority) do {
case 0: { case 0: {
if (_unit == vehicle _unit) then { if (_unit == vehicle _unit) then {
[_unit, format ["{_this playMove '%1'}", _animation], _unit] call FUNC(execRemoteFnc); ["playMove", _unit, [_unit, _animation]] call FUNC(objectEvent);
} else { } else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. // 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: { case 1: {
if (_unit == vehicle _unit) then { if (_unit == vehicle _unit) then {
[_unit, format ["{_this playMoveNow '%1'}", _animation], _unit] call FUNC(execRemoteFnc); ["playMoveNow", _unit, [_unit, _animation]] call FUNC(objectEvent);
} else { } else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. // 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); ["playMoveNow", [_unit, _animation]] call FUNC(globalEvent);
}; };
}; };
case 2: { case 2: {
// try playMoveNow first // try playMoveNow first
if (_unit == vehicle _unit) then { if (_unit == vehicle _unit) then {
[_unit, format ["{_this playMoveNow '%1'}", _animation], _unit] call FUNC(execRemoteFnc); ["playMoveNow", _unit, [_unit, _animation]] call FUNC(objectEvent);
} else { } else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. // 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); ["playMoveNow", [_unit, _animation]] call FUNC(globalEvent);
}; };
// if animation doesn't respond, do switchMove // if animation doesn't respond, do switchMove
if (animationState _unit != _animation) then { if (animationState _unit != _animation) then {
TRACE_1("did not respond to playMoveNow",animationState _unit);
// Execute on all machines. SwitchMove has local effects. // Execute on all machines. SwitchMove has local effects.
[_unit, format ["{_this switchMove '%1'}", _animation]] call FUNC(execRemoteFnc); ["switchMove", [_unit, _animation]] call FUNC(globalEvent);
}; };
}; };
default {}; 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[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = { requiredAddons[] = {
// Vanilla
"3den",
"a3_air_f", "a3_air_f",
"a3_air_f_beta", "a3_air_f_beta",
"a3_air_f_beta_heli_attack_01", "a3_air_f_beta_heli_attack_01",
@ -49,6 +51,7 @@ class CfgPatches {
"a3_anims_f_config_sdr", "a3_anims_f_config_sdr",
"a3_anims_f_epa", "a3_anims_f_epa",
"a3_anims_f_epc", "a3_anims_f_epc",
"a3_anims_f_exp_a",
"a3_anims_f_heli", "a3_anims_f_heli",
"a3_anims_f_kart", "a3_anims_f_kart",
"a3_anims_f_mark_deployment", "a3_anims_f_mark_deployment",
@ -106,6 +109,9 @@ class CfgPatches {
"a3_data_f_curator_misc", "a3_data_f_curator_misc",
"a3_data_f_curator_respawn", "a3_data_f_curator_respawn",
"a3_data_f_curator_virtual", "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_heli",
"a3_data_f_hook", "a3_data_f_hook",
"a3_data_f_kart", "a3_data_f_kart",
@ -119,6 +125,7 @@ class CfgPatches {
"a3_functions_f_curator", "a3_functions_f_curator",
"a3_functions_f_epa", "a3_functions_f_epa",
"a3_functions_f_epc", "a3_functions_f_epc",
"a3_functions_f_exp_a",
"a3_functions_f_heli", "a3_functions_f_heli",
"a3_functions_f_mark", "a3_functions_f_mark",
"a3_functions_f_mp_mark", "a3_functions_f_mp_mark",
@ -129,6 +136,7 @@ class CfgPatches {
"a3_language_f_epa", "a3_language_f_epa",
"a3_language_f_epb", "a3_language_f_epb",
"a3_language_f_epc", "a3_language_f_epc",
"a3_language_f_exp_a",
"a3_language_f_gamma", "a3_language_f_gamma",
"a3_language_f_heli", "a3_language_f_heli",
"a3_language_f_kart", "a3_language_f_kart",
@ -154,6 +162,7 @@ class CfgPatches {
"a3_missions_f_epa", "a3_missions_f_epa",
"a3_missions_f_epb", "a3_missions_f_epb",
"a3_missions_f_epc", "a3_missions_f_epc",
"a3_missions_f_exp_a",
"a3_missions_f_gamma", "a3_missions_f_gamma",
"a3_missions_f_heli", "a3_missions_f_heli",
"a3_missions_f_kart", "a3_missions_f_kart",
@ -186,6 +195,7 @@ class CfgPatches {
"a3_modules_f_epb", "a3_modules_f_epb",
"a3_modules_f_epb_misc", "a3_modules_f_epb_misc",
"a3_modules_f_events", "a3_modules_f_events",
"a3_modules_f_exp_a",
"a3_modules_f_groupmodifiers", "a3_modules_f_groupmodifiers",
"a3_modules_f_hc", "a3_modules_f_hc",
"a3_modules_f_heli", "a3_modules_f_heli",
@ -215,6 +225,9 @@ class CfgPatches {
"a3_music_f_heli", "a3_music_f_heli",
"a3_music_f_mark", "a3_music_f_mark",
"a3_plants_f_bush", "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_roads_f",
"a3_rocks_f", "a3_rocks_f",
"a3_signs_f", "a3_signs_f",
@ -253,6 +266,8 @@ class CfgPatches {
"a3_sounds_f_bootcamp", "a3_sounds_f_bootcamp",
"a3_sounds_f_epb", "a3_sounds_f_epb",
"a3_sounds_f_epc", "a3_sounds_f_epc",
"a3_sounds_f_exp_a",
"a3_sounds_f_mark",
"a3_static_f", "a3_static_f",
"a3_static_f_beta_mortar_01", "a3_static_f_beta_mortar_01",
"a3_static_f_gamma", "a3_static_f_gamma",
@ -337,6 +352,9 @@ class CfgPatches {
"a3_structures_f_epc_items_documents", "a3_structures_f_epc_items_documents",
"a3_structures_f_epc_items_electronics", "a3_structures_f_epc_items_electronics",
"a3_structures_f_epc_walls", "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_furniture",
"a3_structures_f_heli_civ_accessories", "a3_structures_f_heli_civ_accessories",
"a3_structures_f_heli_civ_constructions", "a3_structures_f_heli_civ_constructions",
@ -446,6 +464,7 @@ class CfgPatches {
"a3_ui_f", "a3_ui_f",
"a3_ui_f_bootcamp", "a3_ui_f_bootcamp",
"a3_ui_f_curator", "a3_ui_f_curator",
"a3_ui_f_exp_a",
"a3_ui_f_heli", "a3_ui_f_heli",
"a3_ui_f_kart", "a3_ui_f_kart",
"a3_ui_f_mark", "a3_ui_f_mark",
@ -541,7 +560,12 @@ class CfgPatches {
"a3_weapons_f_vests", "a3_weapons_f_vests",
"a3data", "a3data",
"map_vr", "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)}; author[] = {ECSTRING(common,ACETeam)};
authorUrl = "http://ace3mod.com/"; authorUrl = "http://ace3mod.com/";
@ -564,10 +588,3 @@ class CfgMods {
#include "CfgModuleCategories.hpp" #include "CfgModuleCategories.hpp"
#include "CfgVehicleClasses.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 #ifdef DISABLE_COMPILE_CACHE
#define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf)) #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf))
#else #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 #endif
#define PREP_MODULE(folder) [] call compile preprocessFileLineNumbers QUOTE(PATHTOF(folder\__PREP__.sqf)) #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 #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD
// MINIMAL required version for the Mod. Components can specify others.. // 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 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 Object {
class AttributeCategories { class AttributeCategories {
class ace_attributes { class ace_attributes {
class Attributes { class Attributes {
class ace_isMedic { class ace_isMedic {
property = QUOTE(ace_isMedic); property = QUOTE(ace_isMedic);
value = 0; control = QGVAR(isMedicControl);
control = "Combo";
displayName = CSTRING(AssignMedicRoles_role_DisplayName); displayName = CSTRING(AssignMedicRoles_role_DisplayName);
tooltip = CSTRING(Attributes_isMedic_Description); 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"; typeName = "NUMBER";
condition = "objectBrain"; condition = "objectBrain";
defaultValue = 0; defaultValue = "-1";
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;};
};
}; };
class ace_isMedicalVehicle { class ace_isMedicalVehicle {
property = QUOTE(ace_isMedicalVehicle); property = QUOTE(ace_isMedicalVehicle);
@ -25,7 +47,7 @@ class Cfg3DEN {
control = "CheckboxNumber"; control = "CheckboxNumber";
displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName); displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName);
tooltip = CSTRING(Attributes_isMedicalVehicle_Description); 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"; typeName = "NUMBER";
condition = "objectVehicle"; condition = "objectVehicle";
defaultValue = 0; defaultValue = 0;
@ -36,7 +58,7 @@ class Cfg3DEN {
control = "Checkbox"; control = "Checkbox";
displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName); displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName);
tooltip = CSTRING(AssignMedicalFacility_enabled_Description); 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"; typeName = "BOOL";
condition = "(1 - objectBrain) * (1 - objectVehicle)"; condition = "(1 - objectBrain) * (1 - objectVehicle)";
defaultValue = "false"; defaultValue = "false";

View File

@ -3815,6 +3815,18 @@
<Hungarian>Doktor (csak fejlett orvosok)</Hungarian> <Hungarian>Doktor (csak fejlett orvosok)</Hungarian>
<Italian>Dottore (Solo Medici Avanzati)</Italian> <Italian>Dottore (Solo Medici Avanzati)</Italian>
</Key> </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"> <Key ID="STR_ACE_Medical_AssignMedicRoles_Module_Description">
<English>Assigns the ACE medic class to a unit</English> <English>Assigns the ACE medic class to a unit</English>
<Russian>Задает юниту класс медика</Russian> <Russian>Задает юниту класс медика</Russian>

View File

@ -145,66 +145,87 @@
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_useAmmoHandling_DisplayName"> <Key ID="STR_ACE_Mk6Mortar_useAmmoHandling_DisplayName">
<English>Use Ammunition handling</English> <English>Use Ammunition handling</English>
<German>Aktiviere Munitionshandhabung</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_useAmmoHandling_Description"> <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> <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>
<Key ID="STR_ACE_Mk6Mortar_unloadMortar"> <Key ID="STR_ACE_Mk6Mortar_unloadMortar">
<English>Remove Round</English> <English>Remove Round</English>
<German>Entferne Patrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_loadMortar"> <Key ID="STR_ACE_Mk6Mortar_loadMortar">
<English>Load Mortar</English> <English>Load Mortar</English>
<German>Lade Mörser</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_unloadingMortar"> <Key ID="STR_ACE_Mk6Mortar_unloadingMortar">
<English>Unloading Round</English> <English>Unloading Round</English>
<German>Mörser entladen</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_loadingMortar"> <Key ID="STR_ACE_Mk6Mortar_loadingMortar">
<English>Preparing Round</English> <English>Preparing Round</English>
<German>Patrone vorbereiten</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE"> <Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE">
<English>Load HE</English> <English>Load HE</English>
<German>Lade Sprengpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_Smoke"> <Key ID="STR_ACE_Mk6Mortar_loadMagazine_Smoke">
<English>Load Smoke</English> <English>Load Smoke</English>
<German>Lade Nebelpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_Illum"> <Key ID="STR_ACE_Mk6Mortar_loadMagazine_Illum">
<English>Load Illumination</English> <English>Load Illumination</English>
<German>Lade Leuchtpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE_Guided"> <Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE_Guided">
<English>Load Guided HE</English> <English>Load Guided HE</English>
<German>Lade gelenkte Sprengpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE_LaserGuided"> <Key ID="STR_ACE_Mk6Mortar_loadMagazine_HE_LaserGuided">
<English>Load Laser Guided HE</English> <English>Load Laser Guided HE</English>
<German>Lade lasergelenkte Sprengpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_HE_displayName"> <Key ID="STR_ACE_Mk6Mortar_magazine_HE_displayName">
<English>82mm HE Round</English> <English>82mm HE Round</English>
<German>82mm Sprengpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_Smoke_displayName"> <Key ID="STR_ACE_Mk6Mortar_magazine_Smoke_displayName">
<English>82mm Smoke Round</English> <English>82mm Smoke Round</English>
<German>82mm Nebelpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_Illum_displayName"> <Key ID="STR_ACE_Mk6Mortar_magazine_Illum_displayName">
<English>82mm Illumination Round</English> <English>82mm Illumination Round</English>
<German>82mm Leuchtpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_HE_Guided_displayName"> <Key ID="STR_ACE_Mk6Mortar_magazine_HE_Guided_displayName">
<English>82mm Guided HE Round</English> <English>82mm Guided HE Round</English>
<German>82mm gelenkte Sprengpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_HE_LaserGuided_displayName"> <Key ID="STR_ACE_Mk6Mortar_magazine_HE_LaserGuided_displayName">
<English>82mm Laser Guided HE Round</English> <English>82mm Laser Guided HE Round</English>
<German>82mm lasergelenkte Sprengpatrone</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_magazine_descriptionShort"> <Key ID="STR_ACE_Mk6Mortar_magazine_descriptionShort">
<English>Used in Mk6 mortar</English> <English>Used in Mk6 mortar</English>
<German>Wird im Mk6 Mörser verwendet</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_HEBox_DisplayName"> <Key ID="STR_ACE_Mk6Mortar_HEBox_DisplayName">
<English>[ACE] 82mm HE Rounds Box</English> <English>[ACE] 82mm HE Rounds Box</English>
<German>[ACE] 82mm Sprengpatronenkiste</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_SmokeBox_DisplayName"> <Key ID="STR_ACE_Mk6Mortar_SmokeBox_DisplayName">
<English>[ACE] 82mm Smoke Rounds Box</English> <English>[ACE] 82mm Smoke Rounds Box</English>
<German>[ACE] 82mm Nebelpatronenkiste</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_IllumBox_DisplayName"> <Key ID="STR_ACE_Mk6Mortar_IllumBox_DisplayName">
<English>[ACE] 82mm Illumination Rounds Box</English> <English>[ACE] 82mm Illumination Rounds Box</English>
<German>[ACE] 82mm Leuchtpatronenkiste</German>
</Key> </Key>
<Key ID="STR_ACE_Mk6Mortar_ComboBox_DisplayName"> <Key ID="STR_ACE_Mk6Mortar_ComboBox_DisplayName">
<English>[ACE] 82mm Default Loadout Box</English> <English>[ACE] 82mm Default Loadout Box</English>
<German>[ACE] 82mm Standardkiste</German>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,23 +1,46 @@
class ctrlToolbox;
class Cfg3DEN { 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 Object {
class AttributeCategories { class AttributeCategories {
class ace_attributes { class ace_attributes {
class Attributes { class Attributes {
class ace_isEngineer { class ace_isEngineer {
property = QUOTE(ace_isEngineer); property = QUOTE(ace_isEngineer);
value = 0;
control = "Combo";
displayName = CSTRING(AssignEngineerRole_role_DisplayName); displayName = CSTRING(AssignEngineerRole_role_DisplayName);
tooltip = CSTRING(AssignEngineerRole_role_Description); tooltip = CSTRING(AssignEngineerRole_role_Description);
expression = "_this setVariable ['%s',_value];"; expression = "if (_value != -1) then {_this setVariable ['%s',_value, true];}";
typeName = "NUMBER"; typeName = "NUMBER";
condition = "objectBrain"; condition = "objectBrain";
defaultValue = 0; defaultValue = "-1";
class values { control = QGVAR(isEngineerControl);
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;};
};
}; };
class ace_isRepairVehicle { class ace_isRepairVehicle {
property = QUOTE(ace_isRepairVehicle); property = QUOTE(ace_isRepairVehicle);
@ -25,7 +48,7 @@ class Cfg3DEN {
control = "CheckboxNumber"; control = "CheckboxNumber";
displayName = CSTRING(AssignRepairVehicle_role_DisplayName); displayName = CSTRING(AssignRepairVehicle_role_DisplayName);
tooltip = CSTRING(AssignRepairVehicle_role_Description); tooltip = CSTRING(AssignRepairVehicle_role_Description);
expression = "_this setVariable ['%s',_value];"; expression = "_this setVariable ['%s',_value, true];";
typeName = "NUMBER"; typeName = "NUMBER";
condition = "objectVehicle"; condition = "objectVehicle";
defaultValue = 0; defaultValue = 0;
@ -36,7 +59,7 @@ class Cfg3DEN {
control = "CheckboxNumber"; control = "CheckboxNumber";
displayName = CSTRING(AssignRepairFacility_role_DisplayName); displayName = CSTRING(AssignRepairFacility_role_DisplayName);
tooltip = CSTRING(AssignRepairFacility_role_Description); tooltip = CSTRING(AssignRepairFacility_role_Description);
expression = "_this setVariable ['%s',_value];"; expression = "_this setVariable ['%s',_value, true];";
typeName = "NUMBER"; typeName = "NUMBER";
condition = "(1 - objectBrain) * (1 - objectVehicle)"; condition = "(1 - objectBrain) * (1 - objectVehicle)";
defaultValue = 0; defaultValue = 0;