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";