From 300a33ea0a6191a3c45e27124331112557610fc0 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 19 Jun 2015 22:53:25 +0200 Subject: [PATCH 01/23] Initial work --- addons/medical/functions/fnc_handleDamage.sqf | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index ab6e6f2a68..75a0e70c41 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -80,9 +80,11 @@ if (GVAR(level) < 2) then { } else { _damageReturn = _damageReturn min 0.89; }; + }; [_unit] call FUNC(addToInjuredCollection); +_unit setHit [_selection, _damageReturn]; if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitWith { if (vehicle _unit != _unit and {damage (vehicle _unit) >= 1}) then { @@ -98,8 +100,8 @@ if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitW if (_damageReturn >= 0.9 && {_selection in ["", "head", "body"]}) exitWith { if (_unit getvariable ["ACE_isUnconscious", false]) exitwith { - [_unit] call FUNC(setDead); - 0.89 + if ([_unit] call FUNC(setDead)) exitwith {1}; + 0; }; if (_delayedUnconsicous) then { [{ @@ -110,9 +112,9 @@ if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitW [_this select 0, true] call FUNC(setUnconscious); }, [_unit]] call EFUNC(common,execNextFrame); }; - 0.89 + 0; }; - _damageReturn min 0.89; + 0; }; if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_damageReturn >= 0.9} && {_selection in ["", "head", "body"]}) exitWith { @@ -120,8 +122,10 @@ if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_dam [_unit] call EFUNC(common,unloadPerson); }; [_unit] call FUNC(setDead); - - 0.89 + 0; }; -_damageReturn +if (_damageReturn < 1) exitwith { + 0; +}; +1; From 5887c59c05082981ad3292fff5fe47898f0a5930 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 19 Jun 2015 23:03:31 +0200 Subject: [PATCH 02/23] Made fix properly for advanced medical --- addons/medical/functions/fnc_handleDamage.sqf | 17 ++++++----------- .../functions/fnc_handleDamage_advanced.sqf | 2 -- .../functions/fnc_handleDamage_caching.sqf | 5 +++++ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index 75a0e70c41..aad69ee2fa 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -84,8 +84,6 @@ if (GVAR(level) < 2) then { }; [_unit] call FUNC(addToInjuredCollection); -_unit setHit [_selection, _damageReturn]; - if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitWith { if (vehicle _unit != _unit and {damage (vehicle _unit) >= 1}) then { [_unit] call EFUNC(common,unloadPerson); @@ -100,8 +98,8 @@ if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitW if (_damageReturn >= 0.9 && {_selection in ["", "head", "body"]}) exitWith { if (_unit getvariable ["ACE_isUnconscious", false]) exitwith { - if ([_unit] call FUNC(setDead)) exitwith {1}; - 0; + [_unit] call FUNC(setDead); + 0.89; }; if (_delayedUnconsicous) then { [{ @@ -112,9 +110,9 @@ if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitW [_this select 0, true] call FUNC(setUnconscious); }, [_unit]] call EFUNC(common,execNextFrame); }; - 0; + 0.89; }; - 0; + 0.89; }; if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_damageReturn >= 0.9} && {_selection in ["", "head", "body"]}) exitWith { @@ -122,10 +120,7 @@ if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_dam [_unit] call EFUNC(common,unloadPerson); }; [_unit] call FUNC(setDead); - 0; + 0.89; }; -if (_damageReturn < 1) exitwith { - 0; -}; -1; +_damageReturn; diff --git a/addons/medical/functions/fnc_handleDamage_advanced.sqf b/addons/medical/functions/fnc_handleDamage_advanced.sqf index 9da0d065ed..e617738a90 100644 --- a/addons/medical/functions/fnc_handleDamage_advanced.sqf +++ b/addons/medical/functions/fnc_handleDamage_advanced.sqf @@ -39,8 +39,6 @@ _damageBodyParts = _unit getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; _damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage]; _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; -[_unit] call FUNC(handleDamage_advancedSetDamage); - _typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage); [_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_assignWounds); diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf index 9760770d71..99816ee274 100644 --- a/addons/medical/functions/fnc_handleDamage_caching.sqf +++ b/addons/medical/functions/fnc_handleDamage_caching.sqf @@ -81,12 +81,17 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t _args = _this select 0; if (diag_frameno > (_args select 1) + 2) then { + (_args select 0) setDamage 0; + _cache_params = (_args select 0) getVariable [QGVAR(cachedHandleDamageParams), []]; _cache_damages = (_args select 0) getVariable QGVAR(cachedDamages); { _params = _x + [_cache_damages select _foreachIndex]; _params call FUNC(handleDamage_advanced); }foreach _cache_params; + + [(_args select 0)] call FUNC(handleDamage_advancedSetDamage); + [(_this select 1)] call cba_fnc_removePerFrameHandler; }; }, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler; From c3e2d1bf9cb541810f1514569b1f3600164d1bfd Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 20 Jun 2015 12:23:40 +0200 Subject: [PATCH 03/23] Removed always unconscious for basic medical --- addons/medical/functions/fnc_getUnconsciousCondition.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/medical/functions/fnc_getUnconsciousCondition.sqf b/addons/medical/functions/fnc_getUnconsciousCondition.sqf index 83955f7bd1..19d3bdec1d 100644 --- a/addons/medical/functions/fnc_getUnconsciousCondition.sqf +++ b/addons/medical/functions/fnc_getUnconsciousCondition.sqf @@ -16,7 +16,6 @@ private ["_unit","_return"]; _unit = _this select 0; -if (GVAR(level) == 1) exitwith {true}; if (isnil QGVAR(unconsciousConditions)) then { GVAR(unconsciousConditions) = []; }; From 3f5a050745d1f1204ceb3436bca7fa50478f7d99 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 20 Jun 2015 12:38:12 +0200 Subject: [PATCH 04/23] Fixed #1693 --- .../functions/fnc_handleBandageOpening.sqf | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/addons/medical/functions/fnc_handleBandageOpening.sqf b/addons/medical/functions/fnc_handleBandageOpening.sqf index a92bf9029c..a86077cb3b 100644 --- a/addons/medical/functions/fnc_handleBandageOpening.sqf +++ b/addons/medical/functions/fnc_handleBandageOpening.sqf @@ -58,10 +58,10 @@ if (isClass (_config >> _className)) then { _bandagedWounds = _target getvariable [QGVAR(bandagedWounds), []]; _exist = false; -_injuryId = _injury select 0; +_injuryType = _injury select 1; _bandagedInjury = []; { - if ((_x select 0) == _injuryId) exitwith { + if ((_x select 1) == _injuryType && (_x select 2) == (_injury select 2)) exitwith { _exist = true; _existingInjury = _x; _existingInjury set [3, (_existingInjury select 3) + _impact]; @@ -73,16 +73,11 @@ _bandagedInjury = []; if !(_exist) then { // [ID, classID, bodypart, percentage treated, bloodloss rate] - _bandagedInjury = [_injuryId, _injury select 1, _injury select 2, _impact, _injury select 4]; + _bandagedInjury = [_injury select 0, _injury select 1, _injury select 2, _impact, _injury select 4]; _bandagedWounds pushback _bandagedInjury; }; -_target setvariable [QGVAR(bandagedWounds), _bandagedWounds, !USE_WOUND_EVENT_SYNC]; - -if (USE_WOUND_EVENT_SYNC) then { - // sync _bandagedInjury - -}; +_target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true]; // Check if we are ever going to reopen this if (random(1) <= _reopeningChance) then { @@ -95,22 +90,19 @@ if (random(1) <= _reopeningChance) then { _injuryIndex = _this select 3; _injury = _this select 4; - if (alive _target) then { + //if (alive _target) then { _openWounds = _target getvariable [QGVAR(openWounds), []]; if ((count _openWounds)-1 < _injuryIndex) exitwith {}; _selectedInjury = _openWounds select _injuryIndex; - if (_selectedInjury select 0 == _injury select 0) then { // matching the IDs + if (_selectedInjury select 1 == _injury select 1 && (_selectedInjury select 2) == (_injury select 2)) then { // matching the IDs _selectedInjury set [3, (_selectedInjury select 3) + _impact]; _openWounds set [_injuryIndex, _selectedInjury]; - _target setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; - if (USE_WOUND_EVENT_SYNC) then { - ["medical_propagateWound", [_target, _selectedInjury]] call EFUNC(common,globalEvent); - }; + _bandagedWounds = _target getvariable [QGVAR(bandagedWounds), []]; _exist = false; - _injuryId = _injury select 0; + _injuryId = _injury select 1; { - if ((_x select 0) == _injuryId) exitwith { + if ((_x select 1) == _injuryId && (_x select 2) == (_injury select 2)) exitwith { _exist = true; _existingInjury = _x; _existingInjury set [3, ((_existingInjury select 3) - _impact) max 0]; @@ -119,10 +111,11 @@ if (random(1) <= _reopeningChance) then { }foreach _bandagedWounds; if (_exist) then { - _target setvariable [QGVAR(bandagedWounds), _bandagedWounds, !USE_WOUND_EVENT_SYNC]; + _target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true]; + _target setvariable [QGVAR(openWounds), _openWounds, true]; }; }; // Otherwise something went wrong, we we don't reopen them.. - }; - }, [_target, _impact, _part, _injuryIndex, _injury], _delay, 0] call EFUNC(common,waitAndExecute); + //}; + }, [_target, _impact, _part, _injuryIndex, +_injury], _delay, 0] call EFUNC(common,waitAndExecute); }; From 9795647d9ce079d1c5d38be4130078b54bd38404 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 20 Jun 2015 12:44:29 +0200 Subject: [PATCH 05/23] While in revive state, ensure vitals are never above 0 for adv medical --- addons/medical/functions/fnc_setDead.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index fe18ac581f..831a1fa6a0 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -66,6 +66,11 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == _unit setvariable [QGVAR(reviveStartTime), nil]; [(_this select 1)] call cba_fnc_removePerFrameHandler; }; + if (GVAR(level) >= 2) then { + if (_unit getvariable [QGVAR(heartRate), 60] > 0) then { + _unit setvariable [QGVAR(heartRate), 0]; + }; + }; }, 1, [_unit] ] call CBA_fnc_addPerFrameHandler; false; }; From 385baf133138d492f6c8ceeb9089619e2c6fe275 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 20 Jun 2015 12:44:52 +0200 Subject: [PATCH 06/23] Using CPR while in revive state will extend the life timer --- .../functions/fnc_treatmentAdvanced_CPRLocal.sqf | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf index 4bb14e1139..61723319a5 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf @@ -14,17 +14,15 @@ #include "script_component.hpp" -private ["_caller","_target", "_n"]; +private ["_caller","_target", "_reviveStartTime"]; _caller = _this select 0; _target = _this select 1; -_n = _target getvariable [QEGVAR(common,ENABLE_REVIVE_COUNTER),0]; -if (_n > 0) then { - _n = _n - random(20); - if (_n < 0) then { - _n = 0; +if (_target getvariable [QGVAR(inReviveState), false]) exitwith { + _reviveStartTime = _target getvariable [QGVAR(reviveStartTime),0]; + if (_reviveStartTime > 0) then { + _target setvariable [QGVAR(reviveStartTime), (_reviveStartTime + random(20)) min ACE_time]; }; - _target setvariable [QEGVAR(common,ENABLE_REVIVE_COUNTER), _n]; }; if (random(1)>= 0.6) exitwith { From ea0be1f56342ee634a20e590e131df656f60f544 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 20 Jun 2015 12:46:26 +0200 Subject: [PATCH 07/23] Only execute the local handling of CPR when in a valid state --- addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf index 0a49420783..e732920661 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf @@ -23,7 +23,7 @@ _selectionName = _this select 2; _className = _this select 3; _items = _this select 4; -// TODO replace by event system instead -[[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_CPRLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ - +if (_target getvariable [QGVAR(inCardiacArrest), false] || _target getvariable [QGVAR(inReviveState), false]) then { + [[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_CPRLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ +}; true; From c4283404e82c1159284519102472137b6cda13ea Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 20 Jun 2015 12:51:01 +0200 Subject: [PATCH 08/23] Changed CPR to be available for all unconscious units Including dead --- addons/medical/ACE_Medical_Treatments.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 8eacf39006..3576d89295 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -266,10 +266,10 @@ class ACE_Medical_Actions { requiredMedic = 0; treatmentTime = 15; items[] = {}; - condition = "((_this select 1) getvariable ['ACE_medical_inCardiacArrest', false])"; + condition = "!([(_this select 1)] call ace_common_fnc_isAwake)"; callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_CPR)); callbackFailure = ""; - callbackProgress = "(((_this select 0) select 1) getvariable ['ACE_medical_inCardiacArrest', false])"; + callbackProgress = "!([((_this select 0) select 1)] call ace_common_fnc_isAwake)"; animationPatient = ""; animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback"; animationCaller = "AinvPknlMstpSlayWnonDnon_medic"; From 9e00fc479bab52b14527c64eb31733f2201a8d19 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 20 Jun 2015 12:51:42 +0200 Subject: [PATCH 09/23] CPR local is now also only executed when the target is still alive. Otherwise it's quite useless --- addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf index e732920661..ade74a6ccb 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf @@ -23,7 +23,7 @@ _selectionName = _this select 2; _className = _this select 3; _items = _this select 4; -if (_target getvariable [QGVAR(inCardiacArrest), false] || _target getvariable [QGVAR(inReviveState), false]) then { +if (alive _target && {(_target getvariable [QGVAR(inCardiacArrest), false] || _target getvariable [QGVAR(inReviveState), false])}) then { [[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_CPRLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ }; true; From e153e47bb2d6624723fea4056317c8219e7c9eb1 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 20 Jun 2015 12:54:00 +0200 Subject: [PATCH 10/23] Disabled litter on treatment failure. #1403 We give back the items, so litter does not make sense at the moment. In the future we need to expand this with conditions for success/failure. --- addons/medical/functions/fnc_treatment_failure.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf index 19352e5441..53fd03d2f3 100644 --- a/addons/medical/functions/fnc_treatment_failure.sqf +++ b/addons/medical/functions/fnc_treatment_failure.sqf @@ -60,4 +60,4 @@ if (isNil _callback) then { _args call _callback; -_args call FUNC(createLitter); +// _args call FUNC(createLitter); From e4f89a96b793ec75ef80416ec481ec6cc24d9b34 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 23 Jun 2015 14:27:49 +0100 Subject: [PATCH 11/23] CheckPBO should ensure client isn't running any addons the server isn't --- addons/common/XEH_postInit.sqf | 2 +- addons/common/functions/fnc_checkFiles.sqf | 27 ++++++++++++++----- addons/common/functions/fnc_checkPBOs.sqf | 4 +-- .../common/functions/fnc_moduleCheckPBOs.sqf | 4 ++- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 3796a4fdc8..970d1f7a58 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -6,7 +6,7 @@ //Singe PFEH to handle execNextFrame and waitAndExec: [{ private ["_entry"]; - + //Handle the waitAndExec array: while {((count GVAR(waitAndExecArray)) > 0) && {((GVAR(waitAndExecArray) select 0) select 0) <= ACE_Time}} do { _entry = GVAR(waitAndExecArray) deleteAt 0; diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 631329ecee..1783588b76 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -56,20 +56,23 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); } forEach getArray (configFile >> "ACE_Extensions" >> "extensions"); /////////////// -// check server version +// check server version/addons /////////////// if (isMultiplayer) then { if (isServer) then { // send servers version of ACE to all clients GVAR(ServerVersion) = _version; + GVAR(ServerAddons) = _addons; publicVariable QGVAR(ServerVersion); + publicVariable QGVAR(ServerAddons); } else { - // clients have to wait for the variable + // clients have to wait for the variables [{ - if (isNil QGVAR(ServerVersion)) exitWith {}; + if (isNil QGVAR(ServerVersion) || isNil QGVAR(ServerAddons)) exitWith {}; - private "_version"; - _version = _this select 0; + private ["_version","_addons"]; + _version = (_this select 0) select 0; + _addons = (_this select 0) select 1; if (_version != GVAR(ServerVersion)) then { private "_errorMsg"; @@ -82,7 +85,19 @@ if (isMultiplayer) then { }; }; + { + if !(_x in GVAR(ServerAddons)) then { + _errorMsg = format ["Client/Server Addon Mismatch. Client has extra addon: %1.",_x]; + + diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + + if (hasInterface) then {diag_log str "1"; + ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + }; + }; + } forEach _addons; + [_this select 1] call CBA_fnc_removePerFrameHandler; - }, 1, _version] call CBA_fnc_addPerFrameHandler; + }, 1, [_version,_addons]] call CBA_fnc_addPerFrameHandler; }; }; diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index 4733f1a81f..ac6d8fb270 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -8,8 +8,8 @@ * 0: Warn once * 1: Warn permanently * 2: Kick - * 1: Check all PBOs? (Optional - default: "[]") - * 2: Whitelist (Optinal - default: false) + * 1: Check all PBOs? (Optional - default: false) + * 2: Whitelist (Optinal - default: "[]") * * Return value: * None diff --git a/addons/common/functions/fnc_moduleCheckPBOs.sqf b/addons/common/functions/fnc_moduleCheckPBOs.sqf index 9543b3a5c9..c75324c9a3 100644 --- a/addons/common/functions/fnc_moduleCheckPBOs.sqf +++ b/addons/common/functions/fnc_moduleCheckPBOs.sqf @@ -3,7 +3,9 @@ * Initializes the check-PBOs module. * * Arguments: - * Whatever the module provides. (I dunno.) + * 0: The module logic + * 1: units + * 2: activated * * Return Value: * None From 873936dc319dc44b2194dcf361e46981177b963e Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 29 Jun 2015 14:15:46 +0100 Subject: [PATCH 12/23] Simplify addon checking code --- addons/common/functions/fnc_checkFiles.sqf | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 1783588b76..647a1b00a6 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -85,17 +85,16 @@ if (isMultiplayer) then { }; }; - { - if !(_x in GVAR(ServerAddons)) then { - _errorMsg = format ["Client/Server Addon Mismatch. Client has extra addon: %1.",_x]; + _addons = _addons - GVAR(ServerAddons); + if !(_addons isEqualTo []) then { + _errorMsg = format ["Client/Server Addon Mismatch. Client has extra addons: %1.",_addons]; - diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + diag_log text format ["[ACE] ERROR: %1", _errorMsg]; - if (hasInterface) then {diag_log str "1"; - ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); - }; + if (hasInterface) then {diag_log str "1"; + ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); }; - } forEach _addons; + }; [_this select 1] call CBA_fnc_removePerFrameHandler; }, 1, [_version,_addons]] call CBA_fnc_addPerFrameHandler; From c2e4ee431f2d1336e2cd5174a846e6ff644ed5bf Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Thu, 2 Jul 2015 13:56:56 +0200 Subject: [PATCH 13/23] no pain effect in zeus camera --- addons/medical/XEH_postInit.sqf | 86 +++++++++++++++++---------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 0b51f57165..53ba7eee32 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -174,52 +174,54 @@ GVAR(lastHeartBeatSound) = ACE_time; if ((ACE_time > GVAR(lastHeartBeat) + _interval)) then { GVAR(lastHeartBeat) = ACE_time; - // Pain effect - _strength = (_pain - (ACE_player getvariable [QGVAR(painSuppress), 0])) max 0; - _strength = _strength * (ACE_player getVariable [QGVAR(painCoefficient), GVAR(painCoefficient)]); - if (GVAR(painEffectType) == 1) then { - GVAR(effectPainCC) ppEffectEnable false; - if (_pain > (ACE_player getvariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then { - _strength = _strength * 0.15; - GVAR(effectPainCA) ppEffectEnable true; - GVAR(effectPainCA) ppEffectAdjust [_strength, _strength, false]; - GVAR(effectPainCA) ppEffectCommit 0.01; - [{ - GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; - GVAR(effectPainCA) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute); - [{ - GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; + // Pain effect, no pain effect in zeus camera + if (isNull (findDisplay 312)) then { + _strength = (_pain - (ACE_player getvariable [QGVAR(painSuppress), 0])) max 0; + _strength = _strength * (ACE_player getVariable [QGVAR(painCoefficient), GVAR(painCoefficient)]); + if (GVAR(painEffectType) == 1) then { + GVAR(effectPainCC) ppEffectEnable false; + if (_pain > (ACE_player getvariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then { + _strength = _strength * 0.15; + GVAR(effectPainCA) ppEffectEnable true; + GVAR(effectPainCA) ppEffectAdjust [_strength, _strength, false]; GVAR(effectPainCA) ppEffectCommit 0.01; - }, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute); - [{ - GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; - GVAR(effectPainCA) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute); + [{ + GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; + GVAR(effectPainCA) ppEffectCommit (_this select 1); + }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute); + [{ + GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; + GVAR(effectPainCA) ppEffectCommit 0.01; + }, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute); + [{ + GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; + GVAR(effectPainCA) ppEffectCommit (_this select 1); + }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute); + } else { + GVAR(effectPainCA) ppEffectEnable false; + }; } else { GVAR(effectPainCA) ppEffectEnable false; - }; - } else { - GVAR(effectPainCA) ppEffectEnable false; - if (_pain > (ACE_player getvariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then { - _strength = _strength * 0.9; - GVAR(effectPainCC) ppEffectEnable true; - GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - _strength,1 - _strength,0,0,0,0.2,2]]; - GVAR(effectPainCC) ppEffectCommit 0.01; - [{ - GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; - GVAR(effectPainCC) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute); - [{ - GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; + if (_pain > (ACE_player getvariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then { + _strength = _strength * 0.9; + GVAR(effectPainCC) ppEffectEnable true; + GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - _strength,1 - _strength,0,0,0,0.2,2]]; GVAR(effectPainCC) ppEffectCommit 0.01; - }, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute); - [{ - GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; - GVAR(effectPainCC) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute); - } else { - GVAR(effectPainCC) ppEffectEnable false; + [{ + GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; + GVAR(effectPainCC) ppEffectCommit (_this select 1); + }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute); + [{ + GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; + GVAR(effectPainCC) ppEffectCommit 0.01; + }, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute); + [{ + GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; + GVAR(effectPainCC) ppEffectCommit (_this select 1); + }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute); + } else { + GVAR(effectPainCC) ppEffectEnable false; + }; }; }; }; From 13999fdd3195755dcdb2a02ea0897e67586c492c Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Thu, 2 Jul 2015 19:36:34 +0200 Subject: [PATCH 14/23] finddisplay into curatorcamera --- addons/medical/XEH_postInit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 53ba7eee32..f9f821eeb3 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -92,7 +92,7 @@ GVAR(effectTimeBlood) = ACE_time; [{ private["_bleeding", "_blood"]; // Zeus interface is open or player is dead; disable everything - if (!(isNull (findDisplay 312)) or !(alive ACE_player)) exitWith { + if (!(isNull curatorCamera) or !(alive ACE_player)) exitWith { GVAR(effectUnconsciousCC) ppEffectEnable false; GVAR(effectUnconsciousRB) ppEffectEnable false; GVAR(effectBlindingCC) ppEffectEnable false; @@ -175,7 +175,7 @@ GVAR(lastHeartBeatSound) = ACE_time; GVAR(lastHeartBeat) = ACE_time; // Pain effect, no pain effect in zeus camera - if (isNull (findDisplay 312)) then { + if (isNull curatorCamera) then { _strength = (_pain - (ACE_player getvariable [QGVAR(painSuppress), 0])) max 0; _strength = _strength * (ACE_player getVariable [QGVAR(painCoefficient), GVAR(painCoefficient)]); if (GVAR(painEffectType) == 1) then { From ca36b62356985d80683a5d10f6f2aad9df97da0b Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 3 Jul 2015 13:11:55 +0100 Subject: [PATCH 15/23] Zeus interactions string cleanup --- addons/interaction/ACE_ZeusActions.hpp | 68 +++++++++++++------------- addons/interaction/stringtable.xml | 6 +-- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/addons/interaction/ACE_ZeusActions.hpp b/addons/interaction/ACE_ZeusActions.hpp index 913e7a7c85..80626f6d43 100644 --- a/addons/interaction/ACE_ZeusActions.hpp +++ b/addons/interaction/ACE_ZeusActions.hpp @@ -43,26 +43,26 @@ class ACE_ZeusActions { displayName = CSTRING(Zeus_Behaviour); class careless { - displayName = CSTRING(Zeus_Behaviour_careless); + displayName = "$STR_Combat_Careless"; statement = "{ _x setBehaviour 'CARELESS'; } forEach (curatorSelected select 1);"; }; class safe { - displayName = "$STR_safe"; + displayName = "$STR_Combat_Safe"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\safe_ca.paa"; statement = "{ _x setBehaviour 'SAFE'; } forEach (curatorSelected select 1);"; }; class aware { - displayName = "$STR_aware"; + displayName = "$STR_Combat_Aware"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\aware_ca.paa"; statement = "{ _x setBehaviour 'AWARE'; } forEach (curatorSelected select 1);"; }; class combat { - displayName = "$STR_combat"; + displayName = "$STR_Combat_Combat"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\combat_ca.paa"; statement = "{ _x setBehaviour 'COMBAT'; } forEach (curatorSelected select 1);"; }; class stealth { - displayName = "$STR_stealth"; + displayName = "$STR_Combat_Stealth"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\stealth_ca.paa"; statement = "{ _x setBehaviour 'STEALTH'; } forEach (curatorSelected select 1);"; }; @@ -71,17 +71,17 @@ class ACE_ZeusActions { displayName = CSTRING(Zeus_Speed); class limited { - displayName = "$STR_speed_limited"; + displayName = "$STR_Speed_Limited"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\limited_ca.paa"; statement = "{_x setSpeedMode 'LIMITED';} forEach (curatorSelected select 1);"; }; class normal { - displayName = "$STR_speed_normal"; + displayName = "$STR_Speed_Normal"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\normal_ca.paa"; statement = "{_x setSpeedMode 'NORMAL';} forEach (curatorSelected select 1);"; }; class full { - displayName = "$STR_speed_full"; + displayName = "$STR_Speed_Full"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\full_ca.paa"; statement = "{_x setSpeedMode 'FULL';} forEach (curatorSelected select 1);"; }; @@ -114,47 +114,47 @@ class ACE_ZeusActions { displayName = CSTRING(Zeus_Formation); class wedge { - displayName = "$STR_wedge"; + displayName = "$STR_Wedge"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\wedge_ca.paa"; statement = "{_x setFormation 'WEDGE';} forEach (curatorSelected select 1);"; }; class vee { - displayName = "$STR_vee"; + displayName = "$STR_Vee"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\vee_ca.paa"; statement = "{_x setFormation 'VEE';} forEach (curatorSelected select 1);"; }; class line { - displayName = "$STR_line"; + displayName = "$STR_Line"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\line_ca.paa"; statement = "{_x setFormation 'LINE';} forEach (curatorSelected select 1);"; }; class column { - displayName = "$STR_column"; + displayName = "$STR_Column"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\column_ca.paa"; statement = "{_x setFormation 'COLUMN';} forEach (curatorSelected select 1);"; }; class file { - displayName = "$STR_file"; + displayName = "$STR_File"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\file_ca.paa"; statement = "{_x setFormation 'FILE';} forEach (curatorSelected select 1);"; }; class stag_column { - displayName = "$STR_staggered"; + displayName = "$STR_Staggered"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\stag_column_ca.paa"; statement = "{_x setFormation 'STAG COLUMN';} forEach (curatorSelected select 1);"; }; class ech_left { - displayName = "$STR_echl"; + displayName = "$STR_EchL"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_left_ca.paa"; statement = "{_x setFormation 'ECH LEFT';} forEach (curatorSelected select 1);"; }; class ech_right { - displayName = "$STR_echr"; + displayName = "$STR_EchR"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_right_ca.paa"; statement = "{_x setFormation 'ECH RIGHT';} forEach (curatorSelected select 1);"; }; class diamond { - displayName = "$STR_diamond"; + displayName = "$STR_Diamond"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\diamond_ca.paa"; statement = "{_x setFormation 'DIAMOND';} forEach (curatorSelected select 1);"; }; @@ -168,26 +168,26 @@ class ACE_ZeusActions { displayName = CSTRING(Zeus_Behaviour); class careless { - displayName = CSTRING(Zeus_Behaviour_careless); + displayName = "$STR_Combat_Careless"; statement = "{ _x setWaypointBehaviour 'CARELESS'; } forEach (curatorSelected select 2);"; }; class safe { - displayName = "$STR_safe"; + displayName = "$STR_Combat_Safe"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\safe_ca.paa"; statement = "{ _x setWaypointBehaviour 'SAFE'; } forEach (curatorSelected select 2);"; }; class aware { - displayName = "$STR_aware"; + displayName = "$STR_Combat_Aware"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\aware_ca.paa"; statement = "{ _x setWaypointBehaviour 'AWARE'; } forEach (curatorSelected select 2);"; }; class combat { - displayName = "$STR_combat"; + displayName = "$STR_Combat_Combat"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\combat_ca.paa"; statement = "{ _x setWaypointBehaviour 'COMBAT'; } forEach (curatorSelected select 2);"; }; class stealth { - displayName = "$STR_stealth"; + displayName = "$STR_Combat_Stealth"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\stealth_ca.paa"; statement = "{ _x setWaypointBehaviour 'STEALTH'; } forEach (curatorSelected select 2);"; }; @@ -196,17 +196,17 @@ class ACE_ZeusActions { displayName = CSTRING(Zeus_Speed); class limited { - displayName = "$STR_speed_limited"; + displayName = "$STR_Speed_Limited"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\limited_ca.paa"; statement = "{ _x setWaypointSpeed 'LIMITED'; } forEach (curatorSelected select 2);"; }; class normal { - displayName = "$STR_speed_normal"; + displayName = "$STR_Speed_Normal"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\normal_ca.paa"; statement = "{ _x setWaypointSpeed 'NORMAL'; } forEach (curatorSelected select 2);"; }; class full { - displayName = "$STR_speed_full"; + displayName = "$STR_Speed_Full"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\full_ca.paa"; statement = "{ _x setWaypointSpeed 'FULL'; } forEach (curatorSelected select 2);"; }; @@ -215,47 +215,47 @@ class ACE_ZeusActions { displayName = CSTRING(Zeus_Formation); class wedge { - displayName = "$STR_wedge"; + displayName = "$STR_Wedge"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\wedge_ca.paa"; statement = "{_x setWaypointFormation 'WEDGE';} forEach (curatorSelected select 1);"; }; class vee { - displayName = "$STR_vee"; + displayName = "$STR_Vee"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\vee_ca.paa"; statement = "{_x setWaypointFormation 'VEE';} forEach (curatorSelected select 1);"; }; class line { - displayName = "$STR_line"; + displayName = "$STR_Line"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\line_ca.paa"; statement = "{_x setWaypointFormation 'LINE';} forEach (curatorSelected select 1);"; }; class column { - displayName = "$STR_column"; + displayName = "$STR_Column"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\column_ca.paa"; statement = "{_x setWaypointFormation 'COLUMN';} forEach (curatorSelected select 1);"; }; class file { - displayName = "$STR_file"; + displayName = "$STR_File"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\file_ca.paa"; statement = "{_x setWaypointFormation 'FILE';} forEach (curatorSelected select 1);"; }; class stag_column { - displayName = "$STR_staggered"; + displayName = "$STR_Staggered"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\stag_column_ca.paa"; statement = "{_x setWaypointFormation 'STAG COLUMN';} forEach (curatorSelected select 1);"; }; class ech_left { - displayName = "$STR_echl"; + displayName = "$STR_EchL"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_left_ca.paa"; statement = "{_x setWaypointFormation 'ECH LEFT';} forEach (curatorSelected select 1);"; }; class ech_right { - displayName = "$STR_echr"; + displayName = "$STR_EchR"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_right_ca.paa"; statement = "{_x setWaypointFormation 'ECH RIGHT';} forEach (curatorSelected select 1);"; }; class diamond { - displayName = "$STR_diamond"; + displayName = "$STR_Diamond"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\diamond_ca.paa"; statement = "{_x setWaypointFormation 'DIAMOND';} forEach (curatorSelected select 1);"; }; diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 2e99ed0cef..d173029444 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -832,10 +832,6 @@ Behaviour Zachowanie - - Careless - Beztroski - Formation Formacja @@ -845,4 +841,4 @@ Prędkość - \ No newline at end of file + From bbadc9242b08ee681ca89898bdcea40ffcac4a09 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 3 Jul 2015 14:21:21 +0100 Subject: [PATCH 16/23] Further zeus actions cleanup --- addons/interaction/ACE_ZeusActions.hpp | 50 +++++++------------------- addons/interaction/stringtable.xml | 12 ------- 2 files changed, 13 insertions(+), 49 deletions(-) diff --git a/addons/interaction/ACE_ZeusActions.hpp b/addons/interaction/ACE_ZeusActions.hpp index 80626f6d43..195a979955 100644 --- a/addons/interaction/ACE_ZeusActions.hpp +++ b/addons/interaction/ACE_ZeusActions.hpp @@ -8,23 +8,23 @@ class ACE_ZeusActions { class stance { displayName = "$STR_A3_RscAttributeUnitPos_Title"; - class limited { - displayName = "$STR_A3_RscAttributeUnitPos_Down_tooltip"; + class prone { + displayName = "$STR_Pos_Down"; icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_prone_ca.paa"; statement = "{_x setUnitPos 'DOWN';} forEach (curatorSelected select 0);"; }; - class normal { - displayName = "$STR_A3_RscAttributeUnitPos_Crouch_tooltip"; + class crouch { + displayName = "$STR_Pos_Crouch"; icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_crouch_ca.paa"; statement = "{_x setUnitPos 'MIDDLE';} forEach (curatorSelected select 0);"; }; - class full { - displayName = "$STR_A3_RscAttributeUnitPos_Up_tooltip"; + class stand { + displayName = "$STR_Pos_Up"; icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_stand_ca.paa"; statement = "{_x setUnitPos 'UP';} forEach (curatorSelected select 0);"; }; class auto { - displayName = "$STR_A3_RscAttributeUnitPos_Auto_tooltip"; + displayName = "$STR_Pos_Automatic"; icon = "\A3\UI_F_Curator\Data\default_ca.paa"; statement = "{_x setUnitPos 'AUTO';} forEach (curatorSelected select 0);"; }; @@ -40,7 +40,7 @@ class ACE_ZeusActions { icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeGroups_ca.paa"; class behaviour { - displayName = CSTRING(Zeus_Behaviour); + displayName = "$STR_Combat_Mode"; class careless { displayName = "$STR_Combat_Careless"; @@ -68,7 +68,7 @@ class ACE_ZeusActions { }; }; class speed { - displayName = CSTRING(Zeus_Speed); + displayName = "$STR_HC_Menu_Speed"; class limited { displayName = "$STR_Speed_Limited"; @@ -86,32 +86,8 @@ class ACE_ZeusActions { statement = "{_x setSpeedMode 'FULL';} forEach (curatorSelected select 1);"; }; }; - class stance { - displayName = "$STR_A3_RscAttributeUnitPos_Title"; - - class limited { - displayName = "$STR_A3_RscAttributeUnitPos_Down_tooltip"; - icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_prone_ca.paa"; - statement = "{ {_x setUnitPos 'DOWN'} forEach (units _x); } forEach (curatorSelected select 1);"; - }; - class normal { - displayName = "$STR_A3_RscAttributeUnitPos_Crouch_tooltip"; - icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_crouch_ca.paa"; - statement = "{ {_x setUnitPos 'MIDDLE'} forEach (units _x); } forEach (curatorSelected select 1);"; - }; - class full { - displayName = "$STR_A3_RscAttributeUnitPos_Up_tooltip"; - icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_stand_ca.paa"; - statement = "{ {_x setUnitPos 'UP'} forEach (units _x); } forEach (curatorSelected select 1);"; - }; - class auto { - displayName = "$STR_A3_RscAttributeUnitPos_Auto_tooltip"; - icon = "\A3\UI_F_Curator\Data\default_ca.paa"; - statement = "{ {_x setUnitPos 'AUTO'} forEach (units _x); } forEach (curatorSelected select 1);"; - }; - }; class formation { - displayName = CSTRING(Zeus_Formation); + displayName = "$STR_Formation"; class wedge { displayName = "$STR_Wedge"; @@ -165,7 +141,7 @@ class ACE_ZeusActions { icon = "\A3\UI_F_Curator\Data\CfgCurator\waypoint_ca.paa"; class behaviour { - displayName = CSTRING(Zeus_Behaviour); + displayName = "$STR_Combat_Mode"; class careless { displayName = "$STR_Combat_Careless"; @@ -193,7 +169,7 @@ class ACE_ZeusActions { }; }; class speed { - displayName = CSTRING(Zeus_Speed); + displayName = "$STR_HC_Menu_Speed"; class limited { displayName = "$STR_Speed_Limited"; @@ -212,7 +188,7 @@ class ACE_ZeusActions { }; }; class formation { - displayName = CSTRING(Zeus_Formation); + displayName = "$STR_Formation"; class wedge { displayName = "$STR_Wedge"; diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index d173029444..962d55eca9 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -828,17 +828,5 @@ Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. - - Behaviour - Zachowanie - - - Formation - Formacja - - - Speed Mode - Prędkość - From 9edf1b1adff27202d2b45285204e5c98b4266e27 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 3 Jul 2015 22:16:18 +0200 Subject: [PATCH 17/23] Implemented use conditions for PAK and SurgicalKit It is now possible to only have a treatment action show up for stable (not bleeding) patients --- addons/medical/ACE_Medical_Treatments.hpp | 4 +++ addons/medical/ACE_Settings.hpp | 14 +++++++++ addons/medical/CfgVehicles.hpp | 18 +++++++++-- addons/medical/XEH_preInit.sqf | 1 + addons/medical/functions/fnc_canTreat.sqf | 11 +++++-- .../functions/fnc_isInStableCondition.sqf | 30 +++++++++++++++++++ .../fnc_moduleAdvancedMedicalSettings.sqf | 2 ++ addons/medical/functions/fnc_treatment.sqf | 15 +++++++--- addons/medical/stringtable.xml | 20 ++++++++++++- 9 files changed, 105 insertions(+), 10 deletions(-) create mode 100644 addons/medical/functions/fnc_isInStableCondition.sqf diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 3576d89295..079ae40506 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -11,6 +11,7 @@ class ACE_Medical_Actions { treatmentTimeSelfCoef = 1; items[] = {{"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_quikclot"}}; condition = ""; + patientStateCondition = 0; itemConsumed = 1; callbackSuccess = QUOTE(DFUNC(treatmentBasic_bandage)); @@ -107,6 +108,7 @@ class ACE_Medical_Actions { // Item required for the action. Leave empty for no item required. items[] = {"ACE_fieldDressing"}; condition = ""; + patientStateCondition = 0; // Callbacks callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_bandage)); callbackFailure = ""; @@ -206,6 +208,7 @@ class ACE_Medical_Actions { items[] = {"ACE_surgicalKit"}; treatmentLocations[] = {QGVAR(useLocation_SurgicalKit)}; requiredMedic = QGVAR(medicSetting_SurgicalKit); + patientStateCondition = QGVAR(useCondition_SurgicalKit); treatmentTime = "(count ((_this select 1) getVariable ['ACE_Medical_bandagedWounds', []]) * 5)"; callbackSuccess = ""; callbackProgress = QUOTE(DFUNC(treatmentAdvanced_surgicalKit_onProgress)); @@ -219,6 +222,7 @@ class ACE_Medical_Actions { items[] = {"ACE_personalAidKit"}; treatmentLocations[] = {QGVAR(useLocation_PAK)}; requiredMedic = QGVAR(medicSetting_PAK); + patientStateCondition = QGVAR(useCondition_PAK); treatmentTime = QUOTE((_this select 1) call FUNC(treatmentAdvanced_fullHealTreatmentTime)); callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_fullHeal)); itemConsumed = QGVAR(consumeItem_PAK); diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index 2b28e91882..fcaba03aa0 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -133,6 +133,20 @@ class ACE_Settings { value = 2; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; }; + class GVAR(useCondition_PAK) { + displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName); + description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description); + typeName = "SCALAR"; + value = 0; + values[] = {"Anytime", "Stable"}; + }; + class GVAR(useCondition_SurgicalKit) { + displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); + description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); + typeName = "SCALAR"; + value = 0; + values[] = {"Anytime", "Stable"}; + }; class GVAR(keepLocalSettingsSynced) { typeName = "BOOL"; value = 1; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index c8a4528ca5..0af23c9995 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -196,13 +196,21 @@ class CfgVehicles { class consumeItem_PAK { displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName); 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 useCondition_PAK { + displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName); + description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description); + typeName = "NUMBER"; + class values { + class AnyTime { name = CSTRING(AnyTime); value = 0; }; + class Stable { name = CSTRING(Stable); value = 1; default = 1; }; + }; + }; class useLocation_PAK { displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName); description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description); @@ -227,15 +235,19 @@ class CfgVehicles { displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName); description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description); }; + class useCondition_SurgicalKit: useCondition_PAK { + displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); + description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); + }; class healHitPointAfterAdvBandage { displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName); - description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description); + description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description); typeName = "BOOL"; defaultValue = 0; }; class painIsOnlySuppressed { displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName); - description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description); + description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description); typeName = "BOOL"; defaultValue = 1; }; diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index a932ee5c9d..b479383468 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -56,6 +56,7 @@ PREP(isInMedicalFacility); PREP(isInMedicalVehicle); PREP(isMedic); PREP(isMedicalVehicle); +PREP(isInStableCondition); PREP(itemCheck); PREP(modifyMedicalAction); PREP(onMedicationUsage); diff --git a/addons/medical/functions/fnc_canTreat.sqf b/addons/medical/functions/fnc_canTreat.sqf index 062a696fcd..4795ccc561 100644 --- a/addons/medical/functions/fnc_canTreat.sqf +++ b/addons/medical/functions/fnc_canTreat.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition"]; +private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition", "_patientStateCondition"]; _caller = _this select 0; _target = _this select 1; _selectionName = _this select 2; @@ -44,7 +44,6 @@ if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false}; _items = getArray (_config >> "items"); if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false}; -_locations = getArray (_config >> "treatmentLocations"); _return = true; if (getText (_config >> "condition") != "") then { @@ -62,6 +61,14 @@ if (getText (_config >> "condition") != "") then { }; if (!_return) exitwith {false}; +_patientStateCondition = if (isText(_config >> "patientStateCondition")) then { + missionNamespace getvariable [getText(_config >> "patientStateCondition"), 0] +} else { + getNumber(_config >> "patientStateCondition") +}; +if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false}; + +_locations = getArray (_config >> "treatmentLocations"); if ("All" in _locations) exitwith {true}; private [ "_medFacility", "_medVeh"]; diff --git a/addons/medical/functions/fnc_isInStableCondition.sqf b/addons/medical/functions/fnc_isInStableCondition.sqf new file mode 100644 index 0000000000..f7c22ed085 --- /dev/null +++ b/addons/medical/functions/fnc_isInStableCondition.sqf @@ -0,0 +1,30 @@ +/* +* Author: Glowbal +* Check if a unit is in a stable condition +* +* Arguments: +* 0: The patient +* +* Return Value: +* Is in stable condition +* +* Public: No +*/ + +#include "script_component.hpp" + +private ["_unit"]; +_unit = _this select 0; + +if (GVAR(level) <= 1) exitwith { + ([_unit] call FUNC(getBloodloss)) == 0; +}; + +_totalBloodLoss = 0; +_openWounds = _unit getvariable [QGVAR(openWounds), []]; +{ + // total bleeding ratio * percentage of injury left + _totalBloodLoss = _totalBloodLoss + ((_x select 4) * (_x select 3)); +}foreach _openWounds; + +(_totalBloodLoss == 0); diff --git a/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf b/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf index 5263044583..2960c65b9d 100644 --- a/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf +++ b/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf @@ -33,5 +33,7 @@ if !(_activated) exitWith {}; [_logic, QGVAR(consumeItem_SurgicalKit), "consumeItem_SurgicalKit"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(useLocation_PAK), "useLocation_PAK"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(useLocation_SurgicalKit), "useLocation_SurgicalKit"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(useCondition_PAK), "useCondition_PAK"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(useCondition_SurgicalKit), "useCondition_SurgicalKit"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(healHitPointAfterAdvBandage), "healHitPointAfterAdvBandage"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(painIsOnlySuppressed), "painIsOnlySuppressed"] call EFUNC(common,readSettingFromModule); diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index 06cea8dfe3..18f3406df2 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -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"]; +private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig", "_patientStateCondition"]; _caller = _this select 0; _target = _this select 1; _selectionName = _this select 2; @@ -53,9 +53,6 @@ if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false}; _items = getArray (_config >> "items"); if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false}; -// Check allowed locations -_locations = getArray (_config >> "treatmentLocations"); - _return = true; if (isText (_config >> "Condition")) then { _condition = getText(_config >> "condition"); @@ -74,6 +71,16 @@ if (isText (_config >> "Condition")) then { }; if (!_return) exitwith {false}; +_patientStateCondition = if (isText(_config >> "patientStateCondition")) then { + missionNamespace getvariable [getText(_config >> "patientStateCondition"), 0] +} else { + getNumber(_config >> "patientStateCondition") +}; +if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false}; + +// Check allowed locations +_locations = getArray (_config >> "treatmentLocations"); + if ("All" in _locations) then { _return = true; } else { diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 6fa58bb759..b41cc05544 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3123,13 +3123,19 @@ Lokace osobní lékárničky - Where can the personal aid kit be used? + Where can the Personal Aid Kit be used? Где может использоваться аптечка? Gdzie można korzystać z apteczek osobistych? ¿Dónde se puede utilizar el equipo de primeros auxilios? Wo kann der Erstehilfekasten verwendet werden? Kde může být osobní lékárnička použita? + + Condition PAK + + + When can the Personal Aid Kit be used? + Anywhere Где угодно @@ -3218,6 +3224,12 @@ Wo kann der Operationskasten verwendet werden? Kde může být použita chirurgická souprava? + + Condition Surgical kit (Adv) + + + When can the Surgical kit be used? + Bloodstains Blutflecken @@ -3509,5 +3521,11 @@ Não No + + Anytime + + + Stable + \ No newline at end of file From fd649aee38d05db789c7c4a171d7e455078e5717 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 3 Jul 2015 22:17:31 +0200 Subject: [PATCH 18/23] Changed default value for surgical kit. Should be use anytime --- addons/medical/CfgVehicles.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 0af23c9995..66df5550fc 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -238,6 +238,10 @@ class CfgVehicles { class useCondition_SurgicalKit: useCondition_PAK { displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); + class values { + class AnyTime { name = CSTRING(AnyTime); value = 0; default = 1; }; + class Stable { name = CSTRING(Stable); value = 1; }; + }; }; class healHitPointAfterAdvBandage { displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName); From 89a9218e59d507d0a2715e1037cbb8221b09d0a9 Mon Sep 17 00:00:00 2001 From: ProfessorCZ Date: Sat, 4 Jul 2015 15:56:00 +0200 Subject: [PATCH 19/23] CZ Translation - Update --- addons/common/stringtable.xml | 3 +++ addons/explosives/stringtable.xml | 2 ++ addons/interact_menu/stringtable.xml | 3 +++ addons/interaction/stringtable.xml | 3 ++- addons/map/stringtable.xml | 2 ++ addons/medical/stringtable.xml | 10 +++++++++- addons/optionsmenu/stringtable.xml | 2 ++ addons/sitting/stringtable.xml | 5 +++++ addons/spectator/stringtable.xml | 30 ++++++++++++++-------------- 9 files changed, 43 insertions(+), 17 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index ccc94b361b..28a40e382a 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -579,18 +579,21 @@ Seleccionar dispositivo de mano Ativa dispositivo de mão Przełącz urządzenie podręczne + Přepnout ruční zařízení Close Handheld Device Cerrar dispositivo de mano Fecha dispositivo de mão Zamknij urządzenie podręczne + Zavřít ruční zařízení Cycle Handheld Devices Cambiar dispositivos de mano Troca dispositivos de mão Następne urządzenie podręczne + Procházet ruční zařízení \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 40e436656b..a2c3612b24 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -549,11 +549,13 @@ Explode on defusal? Explosão no desarmamento? Eksplozja przy rozbrajaniu? + Explodovat při zneškodňování? Enable certain explosives to explode on defusal? Default: Yes Ativa certos explosivos para detonar no desarmamento? Padrão: Sim Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak + Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index f87880e83c..4ab84e1c51 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -88,6 +88,7 @@ Zeus Actions Akcje Zeusa + Akce Zeuse Interaction - Text Max @@ -252,10 +253,12 @@ Show actions for buildings Pokazuj akcje dla budynków + Zobrazit akci pro budovy Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns) Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach. + 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.) \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 962d55eca9..7b20dde7c0 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -796,6 +796,7 @@ Open Otwórz + Otevřít Interaction System @@ -829,4 +830,4 @@ O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. - + \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 89e7bf5571..0f252d5b97 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -92,11 +92,13 @@ BFT Enable RFA ativo Aktywuj BFT + Povolit BFT Enable Blue Force Tracking. Default: No Ativa Rastreio de Forças Azuis. Padrão: Não Aktywuj Blue Force Tracking. Domyślnie: Nie + Povolit Blue Force Tracking. Výchozí: Ne Interval diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index b6278fb47e..35f989e8a1 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -2919,12 +2919,14 @@ IA controlada remotamente IA controlada remotamente Zdalnie sterowane AI + Vzdáleně ovládané AI Treat remote controlled units as AI not players? ¿Tratar unidades remotamente controladas como IA? Tratar unidades remotamente controladas como IA? Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? + Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče? Disabled @@ -3184,14 +3186,16 @@ Gdzie można korzystać z apteczek osobistych? ¿Dónde se puede utilizar el equipo de primeros auxilios? Wo kann der Erstehilfekasten verwendet werden? - Kde může být osobní lékárnička použita? + Kde může být použita osobní lékárnička? Onde o kit de primeiros socorros pode ser utilizado? Condition PAK + Podmínka osobní lékárničky When can the Personal Aid Kit be used? + Kde může být použita osobní lékárnička? Anywhere @@ -3294,9 +3298,11 @@ Condition Surgical kit (Adv) + Podmínka chirurgické soupravy (Pokr.) When can the Surgical kit be used? + Kde může být použita chirurgická souprava? Bloodstains @@ -3625,9 +3631,11 @@ Anytime + Kdykoli Stable + Stabilní \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 3af9ca8b30..d1b6199413 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -348,12 +348,14 @@ Noticias ACE Notícias do ACE Wiadomości ACE + ACE Novinky Show News on Main Menu Mostrar noticias en el menú principal Mostrar notícias no menu principal Pokazuj wiadomości ACE w menu głównym + Zobrazit novinky v hlavním menu \ No newline at end of file diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index 2287ba2ae8..cbf63d2117 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -5,26 +5,31 @@ Sit Down Usiądź Sentar + Sednout si Stand Up Wstań Levantar + Vstát Enable Sitting Habilitar opção para sentar Aktywuj siadanie + Povolit sezení Sitting Sentado Siadanie + Sedící This module allows you to disable the ability to sit on chairs and toilets. Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros. Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. + Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. \ No newline at end of file diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 368944c3d3..10b6462678 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -6,105 +6,105 @@ Obserwator - + Pozorovatel Enable Spectator Aktywuj obserwatora - + Povolit pozorovatele Begin spectating on player death? Włącz obserwatora po śmierci gracza? - + Přepnout do pozorovatele po hráčově smrti? Player Side Only Tylko strona gracza - + Pouze strana hráče Only spectate units belonging to player's side? Pozwól obserwować jednostki będące tylko po stronie gracza? - + Pozorovat pouze jednotky patřící k hráčově straně? Spectate AI Obserwacja AI - + Pozorovat AI Allow spectating of AI units? Pozwól obserwować jednostki AI? - + Umožnit pozorovat AI jednotky? Track Units Śledź jednostki - + Sledovat jednotky Track units' movements throughout mission? Śledź ruch jednostek w trakcie misji? - + Sledovat pohyby jednotek napříč misí? Start Position Pozycja startowa - + Počáteční pozice Use this module as a starting position for spectator camera? Użyj pozycji modułu jako pozycje startową dla kamery obserwatora? - + Použít tento modul jako počáteční pozici pro pozorovací kameru? End Mission Zakończ misję - + Konec mise End mission when all players dead (default BIS behaviour)? Zakończ misję kiedy wszyscy gracze będą martwi (domyślne zachowanie BIS)? - + Ukončit misi když umřou všichni hráči (výchozí BIS chování)? View Distance Zasięg widzenia - + Dohlednost OK OK - + OK \ No newline at end of file From fcb638333719f95bf9a62ca82980fef242201a5a Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 4 Jul 2015 16:19:53 +0200 Subject: [PATCH 20/23] remove some empty xml nodes --- addons/advanced_ballistics/stringtable.xml | 1 - addons/spectator/stringtable.xml | 30 ---------------------- 2 files changed, 31 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 8ba88dee2b..5c6dd58d6e 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -210,7 +210,6 @@ Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis - Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice. Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa. diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 10b6462678..f271bfabf5 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -4,106 +4,76 @@ Spectator Obserwator - - Pozorovatel Enable Spectator Aktywuj obserwatora - - Povolit pozorovatele Begin spectating on player death? Włącz obserwatora po śmierci gracza? - - Přepnout do pozorovatele po hráčově smrti? Player Side Only Tylko strona gracza - - Pouze strana hráče Only spectate units belonging to player's side? Pozwól obserwować jednostki będące tylko po stronie gracza? - - Pozorovat pouze jednotky patřící k hráčově straně? Spectate AI Obserwacja AI - - Pozorovat AI Allow spectating of AI units? Pozwól obserwować jednostki AI? - - Umožnit pozorovat AI jednotky? Track Units Śledź jednostki - - Sledovat jednotky Track units' movements throughout mission? Śledź ruch jednostek w trakcie misji? - - Sledovat pohyby jednotek napříč misí? Start Position Pozycja startowa - - Počáteční pozice Use this module as a starting position for spectator camera? Użyj pozycji modułu jako pozycje startową dla kamery obserwatora? - - Použít tento modul jako počáteční pozici pro pozorovací kameru? End Mission Zakończ misję - - Konec mise End mission when all players dead (default BIS behaviour)? Zakończ misję kiedy wszyscy gracze będą martwi (domyślne zachowanie BIS)? - - Ukončit misi když umřou všichni hráči (výchozí BIS chování)? View Distance Zasięg widzenia - - Dohlednost OK OK - - OK From e56f022f5bf774c1231a705c5e21a83433fa80cc Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 4 Jul 2015 16:21:59 +0200 Subject: [PATCH 21/23] Fix anchor link in documentation --- .../development/setting-up-the-development-environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/development/setting-up-the-development-environment.md b/documentation/development/setting-up-the-development-environment.md index 5264760785..e02760f96d 100644 --- a/documentation/development/setting-up-the-development-environment.md +++ b/documentation/development/setting-up-the-development-environment.md @@ -23,7 +23,7 @@ This page describes how you can setup your development environment for ACE3, all ## 2. Why so complicated? -If you have contributed to AGM you might be used to an easier build process, where there was even an .exe you could use for building. ACE3, however, makes use of CBA macros to simplify things and give the developer access to a better debug process, which requires a stricter build environment. Additionally, Mikero's tools are stricter and report more errors than AddonBuilder does. The structure of this development environment also allows for [file patching](#file-patching), which is very useful for debugging. +If you have contributed to AGM you might be used to an easier build process, where there was even an .exe you could use for building. ACE3, however, makes use of CBA macros to simplify things and give the developer access to a better debug process, which requires a stricter build environment. Additionally, Mikero's tools are stricter and report more errors than AddonBuilder does. The structure of this development environment also allows for [file patching](#7-file-patching), which is very useful for debugging. Not offering .exes for the Python scripts we use allows us to make easy changes without the hassle of compiling self-extracting exes all the time. From 19c16b1f59dfe2f583dcde60cce25e660f0795fa Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 4 Jul 2015 17:40:23 +0100 Subject: [PATCH 22/23] Comment out dev branch command --- addons/common/functions/fnc_hideUnit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_hideUnit.sqf b/addons/common/functions/fnc_hideUnit.sqf index b3cd6f7b77..94857335f4 100644 --- a/addons/common/functions/fnc_hideUnit.sqf +++ b/addons/common/functions/fnc_hideUnit.sqf @@ -29,6 +29,6 @@ if !(_reason in _setHiddenReasons) then { _unit setVariable [QGVAR(setHiddenReasons), _setHiddenReasons, true]; }; -if !(isObjectHidden _unit) then { +//if !(isObjectHidden _unit) then { (Uncomment when isObjectHidden hits stable branch) ["hideObjectGlobal",[_unit,true]] call FUNC(serverEvent); -}; +//}; From 815365fd2eb80831ded33c6002828382afc303d4 Mon Sep 17 00:00:00 2001 From: Joko Date: Sat, 4 Jul 2015 23:03:16 +0200 Subject: [PATCH 23/23] Small Performace Improvement in Nametags --- addons/nametags/functions/fnc_drawNameTagIcon.sqf | 2 +- addons/nametags/script_component.hpp | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/addons/nametags/functions/fnc_drawNameTagIcon.sqf b/addons/nametags/functions/fnc_drawNameTagIcon.sqf index 7b6bbda138..021a4e2a0b 100644 --- a/addons/nametags/functions/fnc_drawNameTagIcon.sqf +++ b/addons/nametags/functions/fnc_drawNameTagIcon.sqf @@ -35,7 +35,7 @@ if ((_iconType == ICON_NAME_SPEAK) || (_iconType == ICON_SPEAK)) then { _alpha = _alpha max 0.6;//Boost alpha when speaking } else { if (_iconType == ICON_NAME_RANK) then { - _icon = TEXTURES_RANKS select ((["PRIVATE", "CORPORAL", "SERGEANT", "LIEUTENANT", "CAPTAIN", "MAJOR", "COLONEL"] find (rank _target)) + 1); + _icon = format["\A3\Ui_f\data\GUI\Cfg\Ranks\%1_gs.paa",(toLower(rank _target))]; _size = 1; }; }; diff --git a/addons/nametags/script_component.hpp b/addons/nametags/script_component.hpp index da912b48c4..7bf0acbc4a 100644 --- a/addons/nametags/script_component.hpp +++ b/addons/nametags/script_component.hpp @@ -16,15 +16,3 @@ #define ICON_NAME_RANK 2 #define ICON_NAME_SPEAK 3 #define ICON_SPEAK 4 - -//todo?: custom rank icons?? -#define TEXTURES_RANKS [ \ - "", \ - "\A3\Ui_f\data\GUI\Cfg\Ranks\private_gs.paa", \ - "\A3\Ui_f\data\GUI\Cfg\Ranks\corporal_gs.paa", \ - "\A3\Ui_f\data\GUI\Cfg\Ranks\sergeant_gs.paa", \ - "\A3\Ui_f\data\GUI\Cfg\Ranks\lieutenant_gs.paa", \ - "\A3\Ui_f\data\GUI\Cfg\Ranks\captain_gs.paa", \ - "\A3\Ui_f\data\GUI\Cfg\Ranks\major_gs.paa", \ - "\A3\Ui_f\data\GUI\Cfg\Ranks\colonel_gs.paa" \ - ] \ No newline at end of file