Merge branch 'master' into release-3.13.3

This commit is contained in:
PabstMirror 2020-06-29 12:34:07 -05:00
commit 68662e21c0
19 changed files with 201 additions and 28 deletions

View File

@ -44,7 +44,6 @@ Andrea "AtixNeon" Verano <veranoandrea88@gmail.com>
Anthariel <Contact@storm-simulation.com>
Arcanum417 <lubos.len@gmail.com>
Anton
Arcanum417 <lubos.len@gmail.com>
Arkhir <wonsz666@gmail.com >
Asgar Serran <piechottaf@web.de>
BaerMitUmlaut
@ -139,6 +138,7 @@ Robert Boklahánics <bokirobi@gmail.com>
ruPaladin <happyworm24@rambler.ru>
Rutger "RedBery" Meijering <c.redbery@gmail.com>
Schwaggot <tom.ryan@posteo.de>
shukari
simon84 <badguy360th@gmail.com>
Skengman2
Smith <smitt14ua@gmail.com>

View File

@ -1,5 +1,6 @@
PREP(addDefaultLoadout);
PREP(addListBoxItem);
PREP(addRightPanelButton);
PREP(addStat);
PREP(addVirtualItems);
PREP(attributeAddCompatible);

View File

@ -15,6 +15,7 @@ class CfgPatches {
};
#include "ui\RscAttributes.hpp"
#include "ui\RscCustomArsenalButton.hpp"
#include "Display3DEN.hpp"
#include "Cfg3DEN.hpp"
#include "CfgEventHandlers.hpp"

Binary file not shown.

View File

@ -172,10 +172,12 @@
#define FADE_DELAY 0.15
#define CAM_DIS_MAX 5
#define RIGHT_PANEL_CUSTOM_BUTTONS 61, 63, 65, 67, 69, 71, 73, 75, 77, 79
#define RIGHT_PANEL_CUSTOM_BACKGROUND 60, 62, 64, 66, 68, 70, 72, 74, 76, 78
#define RIGHT_PANEL_ACC_IDCS IDC_buttonOptic, IDC_buttonItemAcc, IDC_buttonMuzzle, IDC_buttonBipod
#define RIGHT_PANEL_ACC_BACKGROUND_IDCS IDC_iconBackgroundOptic, IDC_iconBackgroundItemAcc, IDC_iconBackgroundMuzzle, IDC_iconBackgroundBipod
#define RIGHT_PANEL_ITEMS_IDCS IDC_buttonMag, IDC_buttonMagALL, IDC_buttonThrow, IDC_buttonPut, IDC_buttonMisc
#define RIGHT_PANEL_ITEMS_BACKGROUND_IDCS IDC_iconBackgroundMag, IDC_iconBackgroundMagALL, IDC_iconBackgroundThrow, IDC_iconBackgroundPut, IDC_iconBackgroundMisc
#define RIGHT_PANEL_ITEMS_IDCS IDC_buttonMag, IDC_buttonMagALL, IDC_buttonThrow, IDC_buttonPut, IDC_buttonMisc, RIGHT_PANEL_CUSTOM_BUTTONS
#define RIGHT_PANEL_ITEMS_BACKGROUND_IDCS IDC_iconBackgroundMag, IDC_iconBackgroundMagALL, IDC_iconBackgroundThrow, IDC_iconBackgroundPut, IDC_iconBackgroundMisc, RIGHT_PANEL_CUSTOM_BACKGROUND
#define ARROWS_IDCS IDC_arrowMinus, IDC_arrowPlus
#define GETDLC\
@ -304,7 +306,38 @@ _buttonCurrentMag2Ctrl ctrlCommit FADE_DELAY;\
} foreach [\
IDC_blockRightFrame,\
IDC_blockRighttBackground\
];
];\
if (!isNil QGVAR(customRightPanelButtons)) then {\
private _miscOffset = 0;\
{\
if (!isNil "_x") then {\
_x params ["", "_picture", "_tooltip"];\
_miscOffset = _forEachIndex + 1;\
private _ctrl = _display ctrlCreate [QGVAR(customArsenalButton_Background), 60 + (_forEachIndex * 2)];\
_ctrl ctrlSetPosition [\
safezoneW + safezoneX - 13 * GRID_W,\
safezoneY + (88 + (10 * _forEachIndex)) * GRID_H\
];\
_ctrl ctrlCommit 0;\
_ctrl = _display ctrlCreate [QGVAR(customArsenalButton_Button), 61 + (_forEachIndex * 2)];\
_ctrl ctrlSetPosition [\
safezoneW + safezoneX - 10 * GRID_W,\
safezoneY + (88 + (10 * _forEachIndex)) * GRID_H\
];\
_ctrl ctrlSetText _picture;\
_ctrl ctrlSetTooltip _tooltip;\
_ctrl ctrlCommit 0;\
};\
} forEach GVAR(customRightPanelButtons);\
{\
_x = _display displayCtrl _x;\
_x ctrlSetPosition [\
safezoneW + safezoneX - (10 + (3 * _forEachIndex)) * GRID_W,\
safezoneY + (88 + (10 * _miscOffset)) * GRID_H\
];\
_x ctrlCommit 0;\
} forEach [IDC_buttonMisc, IDC_iconBackgroundMisc];\
};
#define TOGGLE_RIGHT_PANEL_HIDE\
{\

View File

@ -0,0 +1,55 @@
#include "script_component.hpp"
#include "..\defines.hpp"
/*
* Author: shukari, Schwaggot
* Adds a right panel button for uniforms, vests and backpacks with
* defined misc items.
*
* Arguments:
* 0: items only misc items <ARRAY of STRING>
* 1: tooltip <STRING> (Optional)
* 2: picture path <STRING> (Optional)
* 3: override a spezific button (0-9) <NUMBER> (Optional)
*
* Return Value:
* successful: number of the slot; error: -1 <NUMBER>
*
* Example:
* [["ACE_bloodIV_500", "ACE_Banana"], "MedicalStuff", "\z\ace\addons\arsenal\data\iconCustom.paa", 5] call ace_arsenal_fnc_addRightPanelButton
*
* Public: Yes
*/
params [["_items", [], [[]]], ["_tooltip", "", [""]], ["_picture", QPATHTOF(data\iconCustom.paa), [""]], ["_override", -1, [0]]];
if (isNil QGVAR(customRightPanelButtons)) then {
GVAR(customRightPanelButtons) = [];
};
private _position = count GVAR(customRightPanelButtons);
if (_override != -1 && {_override >= 0} && {_override <= 9}) then {
_position = _override;
} else {
private _emptyPos = GVAR(customRightPanelButtons) findIf {isNil "_x"};
if (_emptyPos != -1) then {
_position = _emptyPos;
};
};
private _return = -1;
if (_position >= 0 && _position <= 9) then {
private _cfgWeapons = configFile >> "CfgWeapons";
_items = _items select {
private _configItemInfo = _cfgWeapons >> _x >> "ItemInfo";
_x isKindOf ["CBA_MiscItem", _cfgWeapons] && {getNumber (_configItemInfo >> "type") in [TYPE_MUZZLE, TYPE_OPTICS, TYPE_FLASHLIGHT, TYPE_BIPOD]} ||
{getNumber (_configItemInfo >> "type") in [TYPE_FIRST_AID_KIT, TYPE_MEDIKIT, TYPE_TOOLKIT]} ||
{getText (_cfgWeapons >> _x >> "simulation") == "ItemMineDetector"}
};
_return = _position;
GVAR(customRightPanelButtons) set [_position, [_items apply {toLower _x}, _picture, _tooltip]];
};
_return

View File

@ -273,9 +273,20 @@ switch (_ctrlIDC) do {
};
case IDC_buttonMisc : {
// hide custom button items
private _blockItems = [];
if (!isNil QGVAR(customRightPanelButtons)) then {
{
if (!isNil "_x") then {
_blockItems append (_x select 0);
};
} forEach GVAR(customRightPanelButtons);
};
{
["CfgWeapons", _x, false] call _fnc_fill_right_Container;
} foreach (GVAR(virtualItems) select 17);
} forEach ((GVAR(virtualItems) select 17) select {!((toLower _x) in _blockItems)});
{
["CfgWeapons", _x, false, true] call _fnc_fill_right_Container;
} foreach (GVAR(virtualItems) select 18);
@ -286,6 +297,20 @@ switch (_ctrlIDC) do {
["CfgGlasses", _x, false, true] call _fnc_fill_right_Container;
} foreach (GVAR(virtualItems) select 24);
};
default {
private _index = [RIGHT_PANEL_CUSTOM_BUTTONS] find _ctrlIDC;
if (_index != -1) then {
private _data = GVAR(customRightPanelButtons) param [_index];
if (!isNil "_data") then {
private _items = _data select 0;
{
["CfgWeapons", _x, true] call _fnc_fill_right_Container;
} foreach ((GVAR(virtualItems) select 17) select {(toLower _x) in _items});
};
};
};
};
(_display displayCtrl IDC_rightSearchbar) ctrlSetText "";

View File

@ -787,7 +787,7 @@ class GVAR(display) {
colorBackground[]={0,0,0,1};
fade=1;
enable=0;
x = QUOTE(safezoneW + safezoneX - 13 * GRID_W);
x = QUOTE(safezoneW + safezoneX - 13 * GRID_W);
y = QUOTE(safezoneY + 8 * GRID_H);
w = QUOTE(12 * GRID_W);
h = QUOTE(9 * GRID_H);
@ -798,7 +798,7 @@ class GVAR(display) {
text="\A3\Ui_f\data\GUI\Rsc\RscDisplayArsenal\ItemOptic_ca.paa";
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(fillRightPanel));
colorBackground[]={0,0,0,0.5};
x = QUOTE(safezoneW + safezoneX - 10 * GRID_W);
x = QUOTE(safezoneW + safezoneX - 10 * GRID_W);
y = QUOTE(safezoneY + 8 * GRID_H);
w = QUOTE(9 * GRID_W);
h = QUOTE(9 * GRID_H);
@ -903,6 +903,7 @@ class GVAR(display) {
tooltip="$STR_A3_RscDisplayArsenal_tab_CargoMisc";
y = QUOTE(safezoneY + 88 * GRID_H);
};
class buttonRemoveAll: ctrlButtonPicture {
idc = IDC_buttonRemoveAll;
text = QPATHTOF(data\iconClearContainer.paa);
@ -911,7 +912,7 @@ class GVAR(display) {
onButtonClick = QUOTE(ctrlParent (_this select 0) call FUNC(buttonClearAll));
fade=1;
enable=0;
x = QUOTE(safezoneW + safezoneX - 11 * GRID_W);
x = QUOTE(safezoneW + safezoneX - 11 * GRID_W);
y = QUOTE(safeZoneH + safezoneY - 29 * GRID_H);
w = QUOTE(9 * GRID_W);
h = QUOTE(9 * GRID_H);
@ -926,7 +927,7 @@ class GVAR(loadoutsDisplay) {
class controls {
class centerBox: ctrlControlsGroupNoScrollbars {
idc = IDC_centerBox;
x = QUOTE(safezoneW + safezoneX - (180 * GRID_W));
x = QUOTE(safezoneW + safezoneX - (180 * GRID_W));
y = QUOTE(safezoneY + (5 * GRID_H));
w = QUOTE(160 * GRID_W);
h = QUOTE(safezoneH - (34 * GRID_H));
@ -1056,7 +1057,7 @@ class GVAR(loadoutsDisplay) {
};
class buttonClose: ctrlButton {
idc = -1;
x = QUOTE(safezoneW + safezoneX - 32 * GRID_W);
x = QUOTE(safezoneW + safezoneX - 32 * GRID_W);
y = QUOTE(safezoneH + safezoneY - 9 * GRID_H);
w = QUOTE(30 * GRID_W);
h = QUOTE(7 * GRID_H);

View File

@ -0,0 +1,22 @@
class GVAR(customArsenalButton_Button) : RscButtonArsenal {
x = QUOTE(safezoneW + safezoneX - 10 * GRID_W);
y = QUOTE(safezoneY + 88 * GRID_H);
w = QUOTE(9 * GRID_W);
h = QUOTE(9 * GRID_H);
text = QPATHTOF(data\iconCustom.paa);
tooltip = "";
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(fillRightPanel));
colorBackground[] = {0,0,0,0.5};
};
class GVAR(customArsenalButton_Background) : ctrlStaticBackground {
x = QUOTE(safezoneW + safezoneX - 13 * GRID_W);
y = QUOTE(safezoneY + 88 * GRID_H);
w = QUOTE(12 * GRID_W);
h = QUOTE(9 * GRID_H);
colorBackground[] = {0,0,0,1};
fade = 1;
enable = 0;
};

View File

@ -406,6 +406,7 @@
<Spanish>[CSW] M2 estática con escudo</Spanish>
<Czech>[CSW] Statická zbraň M2 se štítem</Czech>
<French>[CSW] Mitrailleuse statique M2 ac. bouclier</French>
<Polish>[CSW] Statyczny karabin maszynowy M2 z tarczą</Polish>
<Russian>[CSW] Станковый M2 со щитом</Russian>
</Key>
<Key ID="STR_ACE_CSW_StaticAutoHMGBag_displayName">

View File

@ -69,21 +69,24 @@
<English>Exchange weapon in gunbag</English>
<Polish>Wymień broń w torbie</Polish>
<Russian>Заменить оружие в чехле</Russian>
<French>Échanger les armes</French>
</Key>
<Key ID="STR_ACE_Gunbag_SwapGunbagEnabled_DisplayName">
<English>Enable Weapon Swap</English>
<Polish>Aktywuj wymiane broni</Polish>
<Polish>Aktywuj wymianę broni</Polish>
<Russian>Включить обмен оружием</Russian>
<French>Activer l'échange d'arme</French>
</Key>
<Key ID="STR_ACE_Gunbag_SwapGunbagEnabled_Description">
<English>Allows interaction to directly swap the primary weapon and stored weapon.</English>
<Polish>Pozwala na interkacje do wymiany broni głównej na bron schowaną</Polish>
<Polish>Pozwala na interakcje do wymiany broni głównej na bron schowaną.</Polish>
<Russian>Разрешает действие прямого обмена основного оружия и спрятанного в чехле.</Russian>
<French>Permet d'échanger directement l'arme primaire et l'arme stockée dans la housse, via le menu d'interaction personnelle.</French>
</Key>
<Key ID="STR_ACE_Gunbag_OffGunbag">
<English>Get weapon out of gunbag</English>
<German>Hole Waffe aus Waffentasche</German>
<French>Extraire l'arme de la housse</French>
<French>Prendre l'arme de la housse</French>
<Russian>Расчехлить оружие</Russian>
<Czech>Vytáhnout zbraň z pouzdra</Czech>
<Japanese>ガンバッグから武器を出す</Japanese>

View File

@ -6,18 +6,18 @@ class CfgVehicles {
};
};
class Helicopter_Base_F: Helicopter {
class ACE_Actions: ACE_Actions{
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {};
};
};
class UAV_01_base_F: Helicopter_Base_F {
fuelCapacity = 19; // Around 30 minutes hovering
class ACE_Actions: ACE_Actions{
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
class GVAR(RefuelUAV) {
displayName = CSTRING(Recharge);
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRefuelUAV));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(refuelUAV));
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canRefuelUAV));
statement = QUOTE([ARR_2(_player,_target)] call FUNC(refuelUAV));
icon = QPATHTOF(ui\UAV_battery_ca.paa);
};
};
@ -25,12 +25,36 @@ class CfgVehicles {
};
class UAV_06_base_F: Helicopter_Base_F {
fuelCapacity = 16; // Around 25 minutes hovering
class ACE_Actions: ACE_Actions{
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
class GVAR(RefuelUAV) {
displayName = CSTRING(Recharge);
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRefuelUAV));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(refuelUAV));
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canRefuelUAV));
statement = QUOTE([ARR_2(_player,_target)] call FUNC(refuelUAV));
icon = QPATHTOF(ui\UAV_battery_ca.paa);
};
};
};
};
class LandVehicle;
class Tank: LandVehicle {
class ACE_Actions {
class ACE_MainActions;
};
};
class Tank_F: Tank {
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {};
};
};
class UGV_02_Base_F: Tank_F {
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
class GVAR(RefuelUAV) {
displayName = CSTRING(Recharge);
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canRefuelUAV));
statement = QUOTE([ARR_2(_player,_target)] call FUNC(refuelUAV));
icon = QPATHTOF(ui\UAV_battery_ca.paa);
};
};

View File

@ -269,10 +269,12 @@
<English>Only Show Friendly Gestures</English>
<Russian>Показывать только союзные жесты</Russian>
<Polish>Pokazuj jedynie sojusznicze gesty</Polish>
<French>Afficher uniquement le pointage des alliés</French>
</Key>
<Key ID="STR_ACE_Map_Gestures_onlyShowFriendlys_description">
<English>Shows only Gestures from Units that are from the same side or a Friendly side.</English>
<Russian>Показывать жесты только от игроков союзной стороны.</Russian>
<French>Affiche uniquement les pointages effectués par des unités qui sont du même camp, ou d'un camp allié.</French>
</Key>
<Key ID="STR_ACE_Map_Gestures_moduleGroupSettings_displayName">
<English>Map Gestures - Group Settings</English>

View File

@ -190,7 +190,7 @@
<Chinesesimp>骨折概率</Chinesesimp>
<Czech>Šance na zlomeninu</Czech>
<Russian>Шанс перелома</Russian>
<Polish>Szansa na pęknięcie kości</Polish>
<Polish>Szansa na złamanie</Polish>
</Key>
<Key ID="STR_ACE_Medical_FractureChance_Description">
<English>The probability of a fracture causing wound resulting in a fracture.</English>
@ -199,7 +199,7 @@
<Chinesesimp>骨折导致的伤口再次骨折的可能性。</Chinesesimp>
<Czech>Výška šance kdy zranění způsobující zlomeniny skutečně způsobí zlomeninu.</Czech>
<Russian>Вероятность перелома при получении соответствующих ран.</Russian>
<Polish>Prawdopodobieństwo faktycznego pęknięcia kości od rany powodującej pęknięcia kosci</Polish>
<Polish>Prawdopodobieństwo złamania kości w wyniku rany mogącej powodować złamania.</Polish>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableFor_DisplayName">
<English>Enabled for</English>

View File

@ -673,7 +673,7 @@
<Japanese>ユニットのダメージしきい値</Japanese>
<Czech>Práh poškození</Czech>
<Russian>Порог урона</Russian>
<Polish>Pułap Obrażeń jednostki</Polish>
<Polish>Próg obrażeń jednostki</Polish>
</Key>
<Key ID="STR_ACE_Medical_Damage_Eden_threshold_Description">
<English>Sets the amount of damage a unit can receive before going unconscious. (0 for mission default)</English>
@ -682,7 +682,7 @@
<Japanese>ユニットが気絶するまで許容できるダメージ値を設定できます。標準: 0</Japanese>
<Czech>Určuje kolik poškození může jednotka utrpět než upadne do bezvědomí. (pro použití standardní hodnoty mise zadejte 0)</Czech>
<Russian>Устанавливает количество урона, которое может получить юнит перед тем, как потерять сознание. (0 для значения миссии)</Russian>
<Polish>Ustawia Pułap obrażeń jakie może otrzymać jednostka przed utratą przytomności. (0 jako ustawienie domyślne misji)</Polish>
<Polish>Ustawia próg obrażeń jakie może otrzymać jednostka przed utratą przytomności. (0 jako ustawienie domyślne misji)</Polish>
</Key>
</Package>
</Project>

View File

@ -118,7 +118,7 @@
<French>Permet de choisir quel effet provoque un faible volume sanguin.</French>
<Japanese>低血液量時の効果を選択できます。</Japanese>
<Czech>Nastavuje který efekt pro nízké množství krve bude používán.</Czech>
<Polish>Wybiera efekt ktory bedzie pokazywany po utracie znacznej ilości krwi</Polish>
<Polish>Wybiera efekt ktory będzie pokazywany po utracie znacznej ilości krwi.</Polish>
</Key>
<Key ID="STR_ACE_Medical_Feedback_BloodVolumeEffectType_colorCorrection">
<English>Color Fading</English>

View File

@ -122,7 +122,7 @@
<German>Koeffizient zur Kontrolle der Wundöffnungswahrscheinlichkeit. Die endgültige Wiedereröffnungschance wird bestimmt, indem dieser Wert mit der spezifischen Wiedereröffnungschance für den verwendeten Wundtyp und Verband multipliziert wird.</German>
<Czech>Koeficient pro řízení šance na opětovné otevření rány. Konečná šance na opětovné otevření se stanoví vynásobením této hodnoty specifickou šancí na opětovné otevření pro použitý typ rány a obvaz.</Czech>
<Russian>Коэффициент контроля вероятности повторного открытия раны. Окончательный шанс повторного открытия определяется путем умножения этого значения на определенный шанс повторного открытия для используемого типа раны и повязки.</Russian>
<Polish>Współczynnik kontroluje szanse na ponowne otworzenie rany. Końcowa szansa na otworzenie jest ustalana przez pomnożenie tej wartości z wartościaą szansy na otworzenie rany dla typu rany oraz typu bandaża.</Polish>
<Polish>Współczynnik kontroluje szanse na ponowne otworzenie rany. Końcowa szansa na otworzenie jest ustalana przez pomnożenie tej wartości z wartością szansy na otworzenie rany dla typu rany oraz typu bandaża.</Polish>
</Key>
<Key ID="STR_ACE_Medical_Treatment_ClearTraumaAfterBandage_DisplayName">
<English>Clear Trauma After Bandage</English>

View File

@ -358,6 +358,11 @@ class CfgVehicles {
GVAR(canReceive) = 0;
};
class UGV_02_Base_F: Tank_F {
// ED-1D and ED-1E are electrical
GVAR(canReceive) = 0;
};
class UAV: Plane {};
class UAV_02_base_F: UAV {

View File

@ -23,8 +23,8 @@ PROJECT_NAME = "ACE"
def check_stringtable(filepath):
try:
tree = ET.parse(filepath)
except:
print(" ERROR: Failed to parse file.")
except Exception as e:
print(" ERROR: Failed to parse file. {}".format(e))
return 1
errors = 0