diff --git a/CHANGE LOG 1.0.6.txt b/CHANGE LOG 1.0.6.txt
index 161ee1fb5..7921f6232 100644
--- a/CHANGE LOG 1.0.6.txt
+++ b/CHANGE LOG 1.0.6.txt
@@ -42,6 +42,7 @@
[FIXED] Opening supply crates over water no longer drops the items on the sea floor @pj999 @icomrade #1558
[FIXED] Plot pole required message not updating to reflect DZE_PlotPole radius @mathewjknott @icomrade #1274
[FIXED] Slow login timer and incorrect loading screen message when login times out @icomrade
+[FIXED] Combine mags not working for Revolver and M1911 ammo @Terrien @ebaydayz #1313
[UPDATED] .hpp files updated in dayz_epoch_b CfgLootPos > CfgBuildingPos. @Uro1
[UPDATED] .bat files updated in Config-Examples @Raziel23x
diff --git a/SQF/dayz_code/actions/player_reloadMags.sqf b/SQF/dayz_code/actions/player_reloadMags.sqf
index 8e0ab0341..5dc1dc15b 100644
--- a/SQF/dayz_code/actions/player_reloadMags.sqf
+++ b/SQF/dayz_code/actions/player_reloadMags.sqf
@@ -1,27 +1,34 @@
-private ["_item","_config","_consumeArr","_consumeMagAmmo","_consume","_create","_item_ammo","_consume_magsize","_create_magsize","_consume_type","_slotstart","_slotend","_dialog","_qty_total_ammo","_qty_consume_ammo","_qty_create_ammo","_qty_consume_mags","_qty_create_mags","_qty_free_slots","_control","_mag","_qtynew_create_ammo","_qtynew_consume_ammo","_qtynew_create_mags","_qtynew_consume_mags","_qtynew_consume_mags_full","_qtynew_create_mags_full","_qtynew_consume_ammo_rest","_qtynew_create_ammo_rest"];
-
+private ["_item","_config","_consume","_create","_item_ammo","_consume_magsize","_create_magsize","_consume_type","_slotstart","_slotend","_dialog","_qty_total_ammo","_qty_consume_ammo","_qty_create_ammo","_qty_consume_mags","_qty_create_mags","_qty_free_slots","_control","_mag","_qtynew_create_ammo","_qtynew_consume_ammo","_qtynew_create_mags","_qtynew_consume_mags","_qtynew_consume_mags_full","_qtynew_create_mags_full","_qtynew_consume_ammo_rest","_qtynew_create_ammo_rest"];
disableSerialization;
call gear_ui_init;
//note - one slot ammo can be used!
+r_action_count = r_action_count + 1;
+if (r_action_count != 1) exitWith { cutText [localize "str_player_actionslimit", "PLAIN DOWN"]; };
+_item = _this;
-_item = _this;
+if (!(_item in magazines player)) exitWith {r_action_count = 0;};
-_config = configFile >> "CfgMagazines" >> _item;
+_config = configFile >> "CfgMagazines" >> _item;
-_consumeArr = getArray (_config >> "ItemActions" >> "ReloadMag" >> "use");
-_consume = _consumeArr select 0;
-_create = getArray (_config >> "ItemActions" >> "ReloadMag" >> "output") select 0;
+_consume = getArray (_config >> "ItemActions" >> "ReloadMag" >> "use") select 0;
+_create = getArray (_config >> "ItemActions" >> "ReloadMag" >> "output") select 0;
_item_ammo = gearSlotAmmoCount (uiNamespace getVariable 'uiControl');
-//add check if weapon can use create (if not - show message)
+//add check if weapon can use _create (if not - show message)
+/*
+if (currentWeapon player != "") then {
+ _mags = [] + getArray (configFile >> "cfgWeapons" >> (currentWeapon player) >> "magazines");
+};
+if !(_create in _mags) exitWith {cutText [localize "str_must_have_weapon", "PLAIN DOWN"];};
+*/
player playActionNow "PutDown";
-_consume_magsize = getNumber(configFile >> "CfgMagazines" >> _consume >> "count");
-_create_magsize = getNumber(configFile >> "CfgMagazines" >> _create >> "count");
+_consume_magsize = getNumber(configFile >> "CfgMagazines" >> _consume >> "count");
+_create_magsize = getNumber(configFile >> "CfgMagazines" >> _create >> "count");
_consume_type = getNumber(configFile >> "CfgMagazines" >> _consume >> "type");
@@ -31,8 +38,8 @@ _slotend = 0;
if (_consume_type == 256) then {
_slotstart = 109;
_slotend = 120;
-};
-if ( _consume_type == 16) then {
+};
+if (_consume_type == 16) then {
_slotstart = 122;
_slotend = 129;
};
@@ -45,22 +52,18 @@ _qty_create_ammo = 0;
_qty_consume_mags = 0;
_qty_create_mags = 0;
_qty_free_slots = 0;
-_consumeMagAmmo = 0;
for "_i" from _slotstart to _slotend do {
_control =_dialog displayCtrl _i;
_mag = gearSlotData _control;
if (_mag == _consume) then {
_qty_total_ammo = _qty_total_ammo + gearSlotAmmoCount _control;
- _consumeMagAmmo = gearSlotAmmoCount _control;
- _qty_consume_ammo = _qty_consume_ammo + _consumeMagAmmo;
- if (_consumeMagAmmo >= (floor (0.85 * _consume_magsize))) then {
- _qty_consume_mags = _qty_consume_mags + 1;
- };
+ _qty_consume_ammo = _qty_consume_ammo + gearSlotAmmoCount _control;
+ _qty_consume_mags = _qty_consume_mags+1;
};
- if (_mag == _create) then {
+ if (_mag == _create) then {
_qty_total_ammo = _qty_total_ammo + gearSlotAmmoCount _control;
_qty_create_ammo = _qty_create_ammo + gearSlotAmmoCount _control;
- _qty_create_mags = _qty_create_mags + 1;
+ _qty_create_mags = _qty_create_mags+1;
};
if (_mag == "") then {
_qty_free_slots = _qty_free_slots + 1;
@@ -78,7 +81,7 @@ _qtynew_consume_ammo_rest = 0;
_qtynew_create_ammo_rest = 0;
-if ( _consume_magsize > _create_magsize) then {
+if (_consume_magsize > _create_magsize) then {
_qtynew_create_ammo = _qty_create_ammo + _item_ammo;
_qtynew_consume_ammo = _qty_consume_ammo - _item_ammo;
_qtynew_create_mags = ceil(_qtynew_create_ammo/_create_magsize);
@@ -89,6 +92,7 @@ if ( _consume_magsize > _create_magsize) then {
};
if ((_qtynew_create_mags + _qtynew_consume_mags) > (_qty_create_mags + _qty_consume_mags + _qty_free_slots)) exitWith {
+ r_action_count = 0;
cutText [localize "str_player_24", "PLAIN DOWN"];
};
_qtynew_consume_mags_full = floor(_qtynew_consume_ammo/_consume_magsize);
@@ -96,16 +100,9 @@ _qtynew_create_mags_full = floor(_qtynew_create_ammo/_create_magsize);
_qtynew_consume_ammo_rest = _qtynew_consume_ammo - (_qtynew_consume_mags_full*_consume_magsize);
_qtynew_create_ammo_rest = _qtynew_create_ammo - (_qtynew_create_mags_full*_create_magsize);
-// abort if no complete mags || partial mag is less than 15% full
-if(_qtynew_create_ammo_rest > 0 && _qty_consume_mags >= (count _consumeArr)) exitWith { cutText [(localize "str_epoch_player_81"), "PLAIN DOWN"]; };
-
-//remove all _consume && _create mags (we already have total ammo count)
-
-{
- player removeMagazines _x;
-} count _consumeArr;
-
-player removeMagazines _create;
+//remove all _consume and _create mags (we already have total ammo count)
+player removeMagazines _consume;
+player removeMagazines _create;
for "_i" from 1 to _qtynew_consume_mags_full do {
player addMagazine _consume;
@@ -118,4 +115,6 @@ for "_i" from 1 to _qtynew_create_mags_full do {
};
if (_qtynew_create_ammo_rest != 0) then {
player addMagazine [_create,_qtynew_create_ammo_rest];
-};
\ No newline at end of file
+};
+sleep 1;
+r_action_count = 0;
\ No newline at end of file
diff --git a/SQF/dayz_code/actions/player_wearClothes.sqf b/SQF/dayz_code/actions/player_wearClothes.sqf
index 09d99642d..41846d15d 100644
--- a/SQF/dayz_code/actions/player_wearClothes.sqf
+++ b/SQF/dayz_code/actions/player_wearClothes.sqf
@@ -9,7 +9,7 @@ DZE_ActionInProgress = true;
_item = _this;
call gear_ui_init;
-
+r_action_count = 0; //reset for strange glitch
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_player_21") , "PLAIN DOWN"]};
diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf
index 36211022a..667e535a8 100644
--- a/SQF/dayz_code/init/variables.sqf
+++ b/SQF/dayz_code/init/variables.sqf
@@ -317,6 +317,9 @@ isInTraderCity = false;
NORRN_dropAction = -1;
DZE_PROTOBOX = objNull;
+//count actions
+r_action_count = 0;
+
//ammo routine
r_player_actions2 = [];
r_action2 = false;
diff --git a/SQF/dayz_epoch_b/stringtable.xml b/SQF/dayz_epoch_b/stringtable.xml
index 10724e879..399079891 100644
--- a/SQF/dayz_epoch_b/stringtable.xml
+++ b/SQF/dayz_epoch_b/stringtable.xml
@@ -710,6 +710,14 @@
Son nom était %1, il semble qu'il soit mort d' %2
Jeho jméno bylo %1, vypadá to, že je mrtvý kvůli %2
+
+ Wait for the previous action to complete to perform another!
+ Du musst erst das eine beenden, bevor du etwas neues startest!
+ Дождитесь завершения предыдущего действия, перед тем, как начинать новое!
+ ¡Espera a terminar la acción previa para realizar otra!
+ Attendez la fin de l'action en cours avant d'en commencer une autre !
+ Než začnete dělat něco jiného, musíte dokončit aktuální akci.
+
a gunshot to the head
a gunshot to the head