diff --git a/A3A/addons/core/Stringtable.xml b/A3A/addons/core/Stringtable.xml index 62bd72f3ab..c44c565c41 100644 --- a/A3A/addons/core/Stringtable.xml +++ b/A3A/addons/core/Stringtable.xml @@ -2284,7 +2284,7 @@ 弹药补给车队 - A convoy from %1 is about to depart at %2. It will reinforce %3 with armored vehicles. Try to intercept it. Steal or destroy the armor before it reaches it's destination. + A convoy from %1 is about to depart at %2. It will reinforce %3 with armored vehicles. Try to intercept it. Steal or destroy the armor before it reaches its destination. Un convoglio da %1 è in procinto di partire alle %2. Rinforzerà %3 con veicoli corazzati. Prova ad intercettarlo. Ruba o distruggi i veicoli prima che raggiungano la destinazione. %1에서 온 수송대가 %2에서 출발하려고 하며, 이는 %3의 기갑 차량을 증원할 것입니다. 수송을 방해하여 그것이 목적지에 도달하기 전에 훔치거나 파괴하십시오. Konvoj z %1 bude odjíždět v %2. Posílí %3 obrněnými vozidly. Zkus ho zachytit. Ukradni nebo znič náklaďák než dosáhne cíle. @@ -6321,7 +6321,7 @@ 招募AI - Group %1 at your command.<br/><br/>Groups are managed from the High Command bar (Default: CTRL+SPACE)<br/><br/>If the group gets stuck, use the AI Control feature to make them start moving. Mounted Static teams tend to get stuck (solving this is WiP)<br/><br/>To assign a vehicle for this group, look at some vehicle, and use Vehicle Squad Management option in Y menu. + Group %1 at your command.<br/><br/>Groups are managed from the High Command bar (Default: CTRL+SPACE)<br/><br/>If the group gets stuck, use the AI Control feature to make them start moving.<br/><br/>To assign a vehicle for this group, look at a vehicle and use the Add Vehicle option in the Y menu. Gruppo %1 a rapporto.<br/><br/>I gruppi sono gestiti dalla barra dell'Alto Comando (Default: CTRL+SPAZIO)<br/><br/>Se il gruppo rimane bloccato, usa la funzione di Controllo IA per farli muovere. I team di Statiche tendono a bloccarsi (stiamo cercando di risolvere)<br/><br/>Per assegnare un veicolo a questo gruppo, guarda un veicolo e usa l'opzione Gestione Veicolo di Squadra nel menù Y. Groupe %1 à votre commandement.<br/><br/>Les Groupes sont gérer depuis la barre HC (Par défaut: CTRL+ESPACE)<br/><br/>Si le groupe est coincé, utilisez la fonction de Contrôle d'IA afin de les faire bouger. Les équipes d'armes statiques montés ont tendance à se bloquer (la résolution est en cours)<br/><br/>Pour assigner un véhicule pour ce groupe, regardez un véhicule et utiliser l'option de Gestion de Véhicule d'Escouade dans le menu Y. 당신의 명령으로 %1 그룹을 생성하십시오.<br/><br/>그룹은 하이 커맨드 표시줄(기본값: 컨트롤 + 스페이스 키)에서 관리됩니다.<br/<br/>그룹이 끼었다면 AI 조종 기능을 사용하여 이동을 시작하십시오. 고정화기 탑승 팀은 자주 끼이는 경향이 있습니다 (아직 해결 중).<br/><br/>그룹에 차량을 할당하려면 이 차량을 보고 Y 메뉴의 차량 분대 관리 옵션을 사용하십시오. @@ -7470,7 +7470,7 @@ [ACE] 开局拥有可食用物品 - Experimental] Allow futuristic supports to be used by the enemy + [Experimental] Allow futuristic supports to be used by the enemy Sperimentale] Permetti al nemico di usare supporti futuristici [Experimental] Permitir al enemigo usar apoyos futuristas <br/>[Expérimental] Autoriser des supports futuristes pour l'ennemi @@ -8798,7 +8798,7 @@ %1 세력이 공습을 준비 중 - %1. Estimated arrival in %2 minutes. + Estimated arrival in %1 minutes. %1 is preparing a heavy artillery position. @@ -8857,7 +8857,7 @@ %1 세력이 지대공미사일 발사기를 준비 중 - %1. Estimated setup: %2 minutes. + Estimated setup: %1 minutes. %1 is sending a spotting UAV. diff --git a/A3A/addons/core/functions/Base/fn_garbageCleaner.sqf b/A3A/addons/core/functions/Base/fn_garbageCleaner.sqf index 88b199ea0a..2f61a5a55f 100644 --- a/A3A/addons/core/functions/Base/fn_garbageCleaner.sqf +++ b/A3A/addons/core/functions/Base/fn_garbageCleaner.sqf @@ -13,6 +13,12 @@ private _fnc_distCheck = { if (_rebelSpawners inAreaArray [getPosATL _object, _dist, _dist] isEqualTo []) then { deleteVehicle _object }; }; +Debug("Moving dead solders out of vehicles...") +{ + if !(isNull objectParent _x) then { moveOut _x }; +} forEach allDeadMen; +Debug("Finished moving soldiers out of vehicles; executing garbage clean.") +sleep 0.5; { deleteVehicle _x } forEach allDead; { deleteVehicle _x } forEach (allMissionObjects "WeaponHolder"); diff --git a/A3A/addons/core/functions/Dialogs/fn_createDialog_shouldLoadPersonalSave.sqf b/A3A/addons/core/functions/Dialogs/fn_createDialog_shouldLoadPersonalSave.sqf index 8e54d3c30b..e851428097 100644 --- a/A3A/addons/core/functions/Dialogs/fn_createDialog_shouldLoadPersonalSave.sqf +++ b/A3A/addons/core/functions/Dialogs/fn_createDialog_shouldLoadPersonalSave.sqf @@ -1,5 +1,5 @@ //TODO: add header -private _autoSaveInterval = [false,str (autoSaveInterval/60)] select autoSave; +private _autoSaveInterval = [false,(autoSaveInterval/60)] select autoSave; _autoSaveInterval = "" + str _autoSaveInterval + ""; private _saveString = (localize "STR_A3A_fn_dialogs_createDialog_SLPS_line1") + "

"; diff --git a/A3A/addons/core/functions/Missions/fn_DES_Heli.sqf b/A3A/addons/core/functions/Missions/fn_DES_Heli.sqf index 0a4ac4f0c0..f7d61db5ac 100644 --- a/A3A/addons/core/functions/Missions/fn_DES_Heli.sqf +++ b/A3A/addons/core/functions/Missions/fn_DES_Heli.sqf @@ -43,8 +43,8 @@ while {true} do { private _heliPool = (_faction get "vehiclesHelisLight") + (_faction get "vehiclesHelisTransport") + (_faction get "vehiclesHelisAttack") + (_faction get "vehiclesHelisLightAttack"); private _typeVehH = selectRandom (_heliPool select {_x isKindOf "Helicopter"}); if (isNil "_typeVehH") exitWith { - ["DES"] remoteExecCall ["A3A_fnc_missionRequest",2]; Error("No aircrafts in arrays vehiclesHelisLight, vehiclesHelisTransport or vehiclesHelisAttack. Reselecting DES mission"); + ["DES"] remoteExec ["A3A_fnc_missionRequest",2]; }; private _isAttackHeli = _typeVehH in ((_faction get "vehiclesHelisAttack") + (_faction get "vehiclesHelisLightAttack")); diff --git a/A3A/addons/core/functions/OrgPlayers/fn_promotePlayer.sqf b/A3A/addons/core/functions/OrgPlayers/fn_promotePlayer.sqf index 8890e67c63..4a7275d90b 100644 --- a/A3A/addons/core/functions/OrgPlayers/fn_promotePlayer.sqf +++ b/A3A/addons/core/functions/OrgPlayers/fn_promotePlayer.sqf @@ -5,7 +5,7 @@ private ["_puntMax","_textX","_multiplier","_newRank","_selectable","_disconnect _puntMax = 0; _multiplier = 1; -private _textX = localize "STR_A3A_fn_orgp_promotedPlayers" + ":

"; +private _textX = localize "STR_A3A_fn_orgp_promotedPlayers" + "

"; _promoted = false; { diff --git a/A3A/addons/core/functions/Supports/fn_showInterceptedSetupCall.sqf b/A3A/addons/core/functions/Supports/fn_showInterceptedSetupCall.sqf index 8c7a719a40..fdc0a1efe1 100644 --- a/A3A/addons/core/functions/Supports/fn_showInterceptedSetupCall.sqf +++ b/A3A/addons/core/functions/Supports/fn_showInterceptedSetupCall.sqf @@ -111,11 +111,11 @@ if(_reveal >= 0.8) then { if(toupper _supportType in ["QRFLAND", "QRFAIR", "COUNTERATTACK", "MAJORATTACK"]) then { - _text = format [localize "STR_A3A_fn_support_showIntStpCll_arrivalTime", _text, _timeStr]; + _text = [_text,format[localize "STR_A3A_fn_support_showIntStpCll_arrivalTime",_timeStr]] joinString " "; } else { - _text = format [localize "STR_A3A_fn_support_showIntStpCll_setupTime", _text, _timeStr]; + _text = [_text,format[localize "STR_A3A_fn_support_showIntStpCll_setupTime",_timeStr]] joinString " "; }; }; diff --git a/A3A/addons/core/functions/init/fn_resourcecheck.sqf b/A3A/addons/core/functions/init/fn_resourcecheck.sqf index 09e569535f..474786180f 100644 --- a/A3A/addons/core/functions/init/fn_resourcecheck.sqf +++ b/A3A/addons/core/functions/init/fn_resourcecheck.sqf @@ -182,7 +182,7 @@ while {true} do _changingX = true; destroyedSites = destroyedSites - [_x]; _nameX = [_x] call A3A_fnc_localizar; - ["TaskSucceeded", ["", format [localize "STR_A3A_fn_init_resourceCheck_rebuilt",_nameX]]] remoteExec ["BIS_fnc_showNotification",[teamPlayer,civilian]]; + ["TaskSucceeded", ["", format [localize "STR_A3A_fn_base_rebasset_done_1",_nameX]]] remoteExec ["BIS_fnc_showNotification",[teamPlayer,civilian]]; sleep 2; }; } forEach ((destroyedSites - citiesX) select {sidesX getVariable [_x,sideUnknown] != teamPlayer}); diff --git a/A3A/addons/garage/Core/fn_onLoad.sqf b/A3A/addons/garage/Core/fn_onLoad.sqf index 8382bfc6fd..444053175c 100644 --- a/A3A/addons/garage/Core/fn_onLoad.sqf +++ b/A3A/addons/garage/Core/fn_onLoad.sqf @@ -98,13 +98,6 @@ HR_GRG_Cats = [HR_GRG_IDC_CatCar,HR_GRG_IDC_CatArmored,HR_GRG_IDC_CatAir,HR_GRG_ } forEach HR_GRG_Cats; [0] call HR_GRG_fnc_switchCategory; -if !(call HR_GRG_Cnd_canAccessAir) then { - private _airBttn = _disp displayCtrl HR_GRG_IDC_BttnAir; - _airBttn ctrlEnable false; - _airBttn ctrlSetTextColor [0.7,0,0,1]; - _airBttn ctrlSetTooltip localize "STR_HR_GRG_Generic_AirDisabled"; -}; - //extras list init if ( !HR_GRG_Pylons_Enabled //Pylon editing disabled diff --git a/A3A/addons/garage/Core/fn_switchCategory.sqf b/A3A/addons/garage/Core/fn_switchCategory.sqf index e91400c4f6..26ecd20d6a 100644 --- a/A3A/addons/garage/Core/fn_switchCategory.sqf +++ b/A3A/addons/garage/Core/fn_switchCategory.sqf @@ -54,3 +54,5 @@ private _text = switch _index do { }; _textCtrl = _disp displayCtrl HR_GRG_IDC_CatText; _textCtrl ctrlSetStructuredText text _text; + +[true] spawn HR_GRG_fnc_toggleConfirmBttn; diff --git a/A3A/addons/garage/Core/fn_toggleConfirmBttn.sqf b/A3A/addons/garage/Core/fn_toggleConfirmBttn.sqf index 157a484e56..a6231daf50 100644 --- a/A3A/addons/garage/Core/fn_toggleConfirmBttn.sqf +++ b/A3A/addons/garage/Core/fn_toggleConfirmBttn.sqf @@ -26,5 +26,14 @@ private _disp = findDisplay HR_GRG_IDD_Garage; private _ctrlCnfrm = _disp displayCtrl HR_GRG_IDC_Confirm; private _ctrlLock = _disp displayCtrl HR_GRG_IDC_tLock; -_ctrlCnfrm ctrlEnable _enable; _ctrlLock ctrlEnable _enable; +// first checks if the currently selected vehicle or category is air; then, checks if air is accessible, and toggles the button accordingly +if (((HR_GRG_Cats findIf {ctrlShown _x} == 2) || (HR_GRG_SelectedVehicles#0 == 2)) && {!(call HR_GRG_Cnd_canAccessAir)}) then { + _ctrlCnfrm ctrlEnable false; + _ctrlCnfrm ctrlSetTextColor [0.7,0,0,1]; + _ctrlCnfrm ctrlSetTooltip localize "STR_HR_GRG_Generic_AirDisabled"; +} else { + _ctrlCnfrm ctrlEnable _enable; + _ctrlCnfrm ctrlSetTextColor [1,1,1,1]; + _ctrlCnfrm ctrlSetTooltip ""; +}; diff --git a/A3A/addons/jeroen_arsenal/JNA/fn_arsenal_loadInventory.sqf b/A3A/addons/jeroen_arsenal/JNA/fn_arsenal_loadInventory.sqf index 1ff66a7245..433691097b 100644 --- a/A3A/addons/jeroen_arsenal/JNA/fn_arsenal_loadInventory.sqf +++ b/A3A/addons/jeroen_arsenal/JNA/fn_arsenal_loadInventory.sqf @@ -473,11 +473,11 @@ _reportReplaced = ""; { _nameNew = [_x select 0] call _lookupConfigName; _nameOld = [_x select 1] call _lookupConfigName; - _reportReplaced = _reportReplaced + _nameOld + localize "STR_A3A_JNA_loadinventory_kept" + _nameNew + "\n"; + _reportReplaced = _reportReplaced + _nameOld + localize "STR_A3A_JNA_loadinventory_kept" + "
" + _nameNew + "\n"; } forEach _arrayReplaced; if!(_reportReplaced isEqualTo "")then{ - _reportTotal = (localize "STR_A3A_JNA_loadinventory_notin_kept" + _reportReplaced+"\n"); + _reportTotal = (localize "STR_A3A_JNA_loadinventory_notin_kept" + "
" + _reportReplaced +"\n"); }; _reportMissing = ""; diff --git a/A3A/addons/jeroen_arsenal/Stringtable.xml b/A3A/addons/jeroen_arsenal/Stringtable.xml index c55fcb6dc6..d3b5c429a4 100644 --- a/A3A/addons/jeroen_arsenal/Stringtable.xml +++ b/A3A/addons/jeroen_arsenal/Stringtable.xml @@ -227,7 +227,7 @@ 已经被保存,因为当前缺少
- These items were not in the Arsenal:<br/> + These items were not in the Arsenal: Questi oggetti non erano nell'Arsenale:<br/> Estos objetos no estaban en el Arsenal:<br/> Ces objets n'étaient pas dans l'Arsenal:<br/> @@ -237,7 +237,7 @@ 这些物品之前并不在武器库内:<br/> - These items were not in the Arsenal, so the originals have been kept:<br/> + These items were not in the Arsenal, so the originals have been kept: Diese Ausrüstungsgegenstände waren nicht im Arsenl, daher wurden die bereits ausgerüsteten Gegenstände beibehalten: Questi oggetti non erano nell'Arsenale, quindi sono stati mantenuti gli originali:<br/> Estos objetos no estaban en el Arsenal, asi que se mantuvieron los originales:<br/> diff --git a/A3A/addons/patcom/functions/Patcom/fn_patrolArmStatics.sqf b/A3A/addons/patcom/functions/Patcom/fn_patrolArmStatics.sqf index efb20dabfe..384624f1fb 100644 --- a/A3A/addons/patcom/functions/Patcom/fn_patrolArmStatics.sqf +++ b/A3A/addons/patcom/functions/Patcom/fn_patrolArmStatics.sqf @@ -39,6 +39,11 @@ _staticsNear = _staticsNear select {(crew _x) isequalto []}; // Only get statics which are not current assigned. _staticsNear = _staticsNear select {(_x getVariable ["PATCOM_STATIC_ASSIGNED", false]) == false}; +// Only get statics with no players nearby. +if (side _leader != teamPlayer) then { + _staticsNear = _staticsNear select {allPlayers inAreaArray [getPosATL _x, 50, 50] isEqualTo [];}; +}; + // Exit if no statics are near. if (count _staticsNear == 0) exitWith {}; @@ -72,7 +77,7 @@ if (count _assignedPairs isEqualTo 0) exitWith {}; _x spawn { params ["_unit", "_static", "_group"]; private _assignedGunner = assignedGunner _static; - if ((isNull _assignedGunner) && ((_static getVariable ["PATCOM_STATIC_ASSIGNED", false]) == false)) then { + if ((isNull _assignedGunner) && {(_static getVariable ["PATCOM_STATIC_ASSIGNED", false]) == false}) then { [_unit] joinSilent grpnull; _static setVariable ["PATCOM_STATIC_ASSIGNED", true]; _unit setCombatBehaviour "SAFE";