diff --git a/CHANGE LOG 1.0.6.1.txt b/CHANGE LOG 1.0.6.1.txt index d2fe2f0d6..03a0fca93 100644 --- a/CHANGE LOG 1.0.6.1.txt +++ b/CHANGE LOG 1.0.6.1.txt @@ -31,6 +31,7 @@ [FIXED] Hive connection error after the first and only online player disconnects during the object stream at server start up. #1822 @AirwavesMan @ebayShopper [FIXED] Vanilla player_craftItem not exiting when action is already in progress. #1826 @schwanzkopfhegel [FIXED] Fire barrel kit can be crafted with partially full matchboxes now. #1830 @AirwavesMan +[FIXED] Fuel barrels no longer use 40 litres of fuel from a tank. #1834 @schwanzkopfhegel @oiad [NOTE] Updated server files were released with the four hotfixes below on December 11th, 2016 (http://dayzepoch.com/a2dayzepoch.php) [FIXED] Hive child 309 errors that resulted in broken saving of newly built storage object inventory. @icomrade diff --git a/SQF/dayz_code/actions/jerry_fill.sqf b/SQF/dayz_code/actions/jerry_fill.sqf index fd589113e..c1660b13e 100644 --- a/SQF/dayz_code/actions/jerry_fill.sqf +++ b/SQF/dayz_code/actions/jerry_fill.sqf @@ -1,6 +1,6 @@ if (dayz_actionInProgress) exitWith {localize "str_epoch_player_34" call dayz_rollingMessages;}; dayz_actionInProgress = true; -private ["_qty","_dis","_sfx","_started","_finished","_animState","_isRefuel","_fuelcans","_qty20","_qty5","_qty40","_magazines","_cursorTarget","_fuelAmount"]; +private ["_qty","_dis","_sfx","_started","_finished","_animState","_isRefuel","_fuelCans","_qty20","_qty5","_qty210","_magazines","_cursorTarget","_fuelAmount","_fuelNeeded"]; player removeAction s_player_fillfuel; //s_player_fillfuel = -1; @@ -11,22 +11,22 @@ _magazines = magazines player; _fuelAmount = _cursorTarget getVariable "FuelAmount"; if (isNil "_fuelAmount") then { - _fuelAmount = floor(Random dayz_randomMaxFuelAmount); + _fuelAmount = floor(Random dayz_randomMaxFuelAmount) max (dayz_randomMaxFuelAmount * 0.10); _cursorTarget setVariable ["FuelAmount",_fuelAmount,true]; }; -if (_fuelAmount < 5) exitWith { format[localize "str_fill_notenough",typeOf _cursorTarget,_fuelAmount] call dayz_rollingMessages; }; +_qty5 = {_x == "ItemFuelcanEmpty"} count _magazines; +_qty20 = {_x == "ItemJerrycanEmpty"} count _magazines; +_qty210 = {_x == "ItemFuelBarrelEmpty"} count _magazines; -diag_log format["Fill Jerry, %1 - %2",_cursorTarget,_fuelAmount]; +_fuelNeeded = (_qty5 * 5) + (_qty20 * 20) + (_qty210 * 210); -_fuelcans = ["ItemFuelcanEmpty","ItemJerrycanEmpty","ItemFuelBarrelEmpty"]; +if (_fuelAmount < _fuelNeeded) then {format[localize "str_fill_notenough",typeOf _cursorTarget,_fuelAmount,_fuelNeeded] call dayz_rollingMessages;}; + +_fuelCans = ["ItemFuelcanEmpty","ItemJerrycanEmpty","ItemFuelBarrelEmpty"]; _qty = 0; -_qty = {_x in _fuelcans} count _magazines; - -_qty20 = {_x == "ItemJerrycanEmpty"} count _magazines; -_qty5 = {_x == "ItemFuelcanEmpty"} count _magazines; -_qty40 = {_x == "ItemFuelBarrelEmpty"} count _magazines; +_qty = {_x in _fuelCans} count _magazines; if (("ItemJerrycanEmpty" in _magazines) or ("ItemFuelcanEmpty" in _magazines) or ("ItemFuelBarrelEmpty" in _magazines)) then { player playActionNow "Medic"; @@ -58,18 +58,6 @@ if (("ItemJerrycanEmpty" in _magazines) or ("ItemFuelcanEmpty" in _magazines) or r_doLoop = false; if (_finished) then { - for "_x" from 1 to _qty20 do { - _fuelAmount = _cursorTarget getVariable "FuelAmount"; - - if (_fuelAmount >= 20) then { - _fuelAmount = _fuelAmount - 20; - _cursorTarget setVariable ["FuelAmount",_fuelAmount,true]; - player removeMagazine "ItemJerrycanEmpty"; - player addMagazine "ItemJerrycan"; - } else { - _qty = _qty - 1; - }; - }; for "_x" from 1 to _qty5 do { _fuelAmount = _cursorTarget getVariable "FuelAmount"; @@ -82,11 +70,23 @@ if (("ItemJerrycanEmpty" in _magazines) or ("ItemFuelcanEmpty" in _magazines) or _qty = _qty - 1; }; }; - for "_x" from 1 to _qty40 do { + for "_x" from 1 to _qty20 do { _fuelAmount = _cursorTarget getVariable "FuelAmount"; - if (_fuelAmount >= 40) then { - _fuelAmount = _fuelAmount - 40; + if (_fuelAmount >= 20) then { + _fuelAmount = _fuelAmount - 20; + _cursorTarget setVariable ["FuelAmount",_fuelAmount,true]; + player removeMagazine "ItemJerrycanEmpty"; + player addMagazine "ItemJerrycan"; + } else { + _qty = _qty - 1; + }; + }; + for "_x" from 1 to _qty210 do { + _fuelAmount = _cursorTarget getVariable "FuelAmount"; + + if (_fuelAmount >= 210) then { + _fuelAmount = _fuelAmount - 210; _cursorTarget setVariable ["FuelAmount",_fuelAmount,true]; player removeMagazine "ItemFuelBarrelEmpty"; player addMagazine "ItemFuelBarrel"; @@ -102,4 +102,4 @@ if (("ItemJerrycanEmpty" in _magazines) or ("ItemFuelcanEmpty" in _magazines) or } else { localize "str_player_10" call dayz_rollingMessages; }; -dayz_actionInProgress = false; \ No newline at end of file +dayz_actionInProgress = false; diff --git a/SQF/dayz_code/compile/player_humanityMorph.sqf b/SQF/dayz_code/compile/player_humanityMorph.sqf index c1fdba5f5..f539408e6 100644 --- a/SQF/dayz_code/compile/player_humanityMorph.sqf +++ b/SQF/dayz_code/compile/player_humanityMorph.sqf @@ -1,4 +1,4 @@ -private ["_charID","_newmodel","_old","_updates","_humanity","_medical","_worldspace","_zombieKills","_headShots","_humanKills","_combattimeout","_inCombat","_banditKills","_fractures","_wpnType","_ismelee"]; +private ["_charID","_newmodel","_old","_updates","_humanity","_medical","_worldspace","_zombieKills","_headShots","_humanKills","_combattimeout","_inCombat","_banditKills","_fractures","_wpnType","_ismelee","_coins"]; //_playerUID = _this select 0; _charID = _this select 1; _model = _this select 2; @@ -29,6 +29,7 @@ _ConfirmedHumanKills = player getVariable ["ConfirmedHumanKills",0]; _ConfirmedBanditKills = player getVariable ["ConfirmedBanditKills",0]; _friendlies = player getVariable ["friendlies",[]]; _tagSetting = player getVariable ["DZE_display_name",false]; +if (Z_SingleCurrency) then {_coins = player getVariable [Z_moneyVariable,0];}; //Switch _model call player_switchModel; //Already spawned thread, no need to spawn and waitUntil script is done @@ -89,6 +90,7 @@ player setVariable ["ConfirmedHumanKills",_ConfirmedHumanKills,true]; player setVariable ["ConfirmedBanditKills",_ConfirmedBanditKills,true]; player setVariable ["friendlies",_friendlies,true]; player setVariable ["DZE_display_name",_tagSetting,true]; +if (Z_SingleCurrency) then {player setVariable [Z_moneyVariable,_coins,true];}; //PVDZ_serverStoreVar = [player,"Achievements",_achievements]; //publicVariableServer "PVDZ_serverStoreVar"; diff --git a/SQF/dayz_code/compile/player_packTent.sqf b/SQF/dayz_code/compile/player_packTent.sqf index 3f8bebdfc..bfe6b7e4b 100644 --- a/SQF/dayz_code/compile/player_packTent.sqf +++ b/SQF/dayz_code/compile/player_packTent.sqf @@ -3,6 +3,9 @@ */ if (dayz_actionInProgress) exitWith {localize "str_player_beingpacked" call dayz_rollingMessages;}; dayz_actionInProgress = true; + +private ["_activatingPlayer","_alreadyPacking","_backpacks","_bag","_campItems","_countr","_dir","_holder","_magazines","_obj","_objWpnQty","_objWpnTypes","_objectID","_objectUID","_ownerID","_packobj","_playerNear","_pos","_weapons"]; + _obj = _this; _ownerID = _obj getVariable["CharacterID","0"]; _objectID = _obj getVariable["ObjectID","0"]; @@ -11,6 +14,9 @@ if (DZE_permanentPlot) then { _ownerID = _obj getVariable["ownerPUID","0"]; }; +_playerNear = _obj call dze_isnearest_player; +if (_playerNear) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_16" call dayz_rollingMessages;}; + _packobj = getText (configFile >> "CfgVehicles" >> typeOf _obj >> "pack"); _activatingPlayer = player; diff --git a/SQF/dayz_code/compile/player_switchModel.sqf b/SQF/dayz_code/compile/player_switchModel.sqf index eba23aca0..8dba812f5 100644 --- a/SQF/dayz_code/compile/player_switchModel.sqf +++ b/SQF/dayz_code/compile/player_switchModel.sqf @@ -1,5 +1,4 @@ -//private ["_class","_position","_dir","_group","_oldUnit","_newUnit","_currentWpn","_muzzles","_currentAnim","_playerUID","_weapons","_magazines","_primweapon","_secweapon","_newBackpackType","_backpackWpn","_backpackMag","_backpackWpnTypes","_backpackWpnQtys","_countr","_backpackmagTypes","_backpackmagQtys","_display","_wpnType","_ismelee","_rndx","_rndy"]; -private ["_weapons","_backpackWpn","_backpackMag","_currentWpn","_isWeapon","_backpackWpnTypes","_backpackWpnQtys","_countr","_class","_position","_dir","_currentAnim","_playerUID","_countMags","_magazines","_primweapon","_secweapon","_newBackpackType","_muzzles","_oldUnit","_group","_newUnit","_oldGroup","_idc","_display","_switchUnit","_leader"]; +private ["_weapons","_backpackWpn","_backpackMag","_currentWpn","_isWeapon","_backpackWpnTypes","_backpackWpnQtys","_countr","_class","_position","_dir","_currentAnim","_playerUID","_countMags","_magazines","_primweapon","_secweapon","_newBackpackType","_muzzles","_oldUnit","_group","_newUnit","_oldGroup","_idc","_display","_switchUnit","_leader","_currentCamera"]; _class = _this; if (gear_done) then {disableUserInput true;disableUserInput true;}; disableSerialization; @@ -9,7 +8,7 @@ disableSerialization; _position = player modeltoWorld [0,0,0]; _dir = getDir player; _currentAnim = animationState player; -//_currentCamera = cameraView; +_currentCamera = cameraView; _playerUID = getPlayerUID player; //BackUp Weapons and Mags @@ -183,7 +182,7 @@ if (gear_done) then {disableUserInput false;disableUserInput false;disableUserIn //diag_log format["Backpack weapons: %1",getWeaponCargo unitBackpack _newUnit]; //diag_log format["Backpack magazines: %1",getMagazineCargo unitBackpack _newUnit]; -// player switchCamera = _currentCamera; +player switchCamera _currentCamera; if (_currentWpn != "") then {_newUnit selectWeapon _currentWpn;}; [objNull, player, rSwitchMove, _currentAnim] call RE; //dayz_originalPlayer attachTo [_newUnit]; diff --git a/SQF/dayz_code/stringtable.xml b/SQF/dayz_code/stringtable.xml index 047ffab98..cdefc01d2 100644 --- a/SQF/dayz_code/stringtable.xml +++ b/SQF/dayz_code/stringtable.xml @@ -184,8 +184,8 @@ Zabalit stan - Fill FuelCan - Kraftstoffkanister füllen + Fill all fuel containers + Alle Kraftstoffbehälter füllen Наполнить канистры Rellene FuelCan remplissez FuelCan @@ -1310,12 +1310,12 @@ Deze %1 heeft niet voldoende brandstof. - %1 does not have enough fuel to fill jerry can(s). (Estimated %2 Liters left) - %1 hat nicht genug Treibstoff, um einen Benzinkanister komplett zu füllen.(Ungefähr %2 Liter übrig) + %1 does not have enough fuel to fill all containers. Estimated %2 litres left (You needed %3 litres) + %1 hat nicht genug Kraftstoff, um alle Kraftstoffbehälter zu füllen. Es sind noch ungefähr %2 Liter übrig. (Du brauchst %3 Liter) - You have filled %1 jerry can(s) with fuel. %2 has an estimated %3 Liters of fuel left. - %1 Benzinkanister wurde(n) erfolgreich mit Treibstoff befüllt. %2 hat noch ungefähr %3 Liter Treibstoff übrig. + You have filled %1 fuel container(s) with fuel. %2 has an estimated %3 litres of fuel left. + %1 Kraftstoffbehälter wurde(n) erfolgreich mit Kraftstoff befüllt. %2 hat noch ungefähr %3 Liter Kraftstoff übrig. Canceled siphon @@ -6759,7 +6759,7 @@ Naplnili jste převařenou vodou %1 láhve. - You have no empty water bottles + You have no empty water bottles. Du hast keine leeren Wasserflaschen. У вас нет пустых бутылок. No tienes cantimploras vacías @@ -6808,8 +6808,8 @@ Naplnili jste palivem %1 kanystry. - You have no empty jerry cans - Du hast keine leeren Kanister. + You have no empty fuel containers. + Du hast keinen leeren Kraftstoffbehälter. У вас нет пустых канистр. No tienes bidones vacíos Vous n'avez pas de jerrican vide. @@ -6993,7 +6993,7 @@ Lese die Missionsdatei... - You must be near a water-source such as a pond, or well, or watering hole, to refill your water bottles + You must be near a water source such as a pond, well or watering hole to refill your water bottles. Du musst dich in der Nähe einer Wasserquelle befinden, um Wasserflaschen zu füllen. Halte Ausschau nach einem Teich oder Brunnen! Вы должны находиться возле водоема или источника воды, чтобы наполнить свои фляги. Necesitas estar cerca de una fuente de agua como un pozo para rellenar tu cantimplora @@ -11395,8 +11395,8 @@ Du hast es geschafft %1 aufzubrechen. - Fill Jerry can is already in progress. - Befüllen des Kanisters bereits im Gange. + You are already filling a fuel container. + Befüllen des Kraftstoffbehälters bereits im Gange. Канистра уже наполняется. Je bent al een jerrycan aan het vullen. Le remplissage du jerrycan est déjà en cours. @@ -11999,7 +11999,7 @@ Crafting needs a %1 within %2 meters - Zur Herstellung wird ein(e) %1 innerhalb von %2 benötigt. + Zur Herstellung wird ein(e) %1 innerhalb von %2 Meter(n) benötigt. Для создания требуется %1 вблизи %2 метров Hiervoor heb je een %1 nodig binnen %2 meter Výroba potřebuje %1 v rámci %2 metrů diff --git a/Server Files/Battleye/scripts.txt b/Server Files/Battleye/scripts.txt index af9c0b6b1..115e7a4df 100644 --- a/Server Files/Battleye/scripts.txt +++ b/Server Files/Battleye/scripts.txt @@ -49,6 +49,6 @@ 5 setViewDistance 5 showCommandingMenu !"\"showCommandingMenu\", \n\"globalChat\", " !="rshowCommandingMenu = 'showCommandingMenu'" !"rshowCommandingMenucode" !"\"showCommandingMenu\", \"sideChat\"," 5 sideLogic !"{ \nBIS_MPF_ServerInitDone = true;\ncreatecenter sidelogic;\nBIS_MPF_dummygroup = createGroup sideLogic;" !"{ \nBIS_MPF_ServerInitDone = true;\ncreatecenter sidelogic;\n\n\nBIS_MPF_dummygroup = createGroup sideLogic;" -5 switchCamera !"\"switchCamera\", \n\n\n\"fadeMusic\"," !="rswitchCamera = 'switchCamera'" !"rswitchCameracode" !"\"switchCamera\", \"taskHint\"," !="player switchCamera (Dayz_constructionContext select 2);" +5 switchCamera !"\"switchCamera\", \n\n\n\"fadeMusic\"," !="rswitchCamera = 'switchCamera'" !"rswitchCameracode" !"\"switchCamera\", \"taskHint\"," !="player switchCamera (Dayz_constructionContext select 2);" !="player switchCamera _currentCamera;" 5 toString !="_skinToModel = toString (_finalArray);" !="{_textArrayTemp = _textArrayTemp + [tostring [_x]]} foreach _line;" !="_cmpt = toString _cmpt;" !="_objName = toLower(toString(_objName));" !"if (toString _hayArr != _needle) then {" !="_type = toString _typeA;" !="_anim4 = toString _anim4;" !"{(count _stance>17)}) then {toString [_stance select 17]}" !="lbAdd [7102, if (typeName _name == \"ARRAY\") then {toString _name} else {_name}];" !="lbAdd [7002, if (typeName _name == \"ARRAY\") then {toString _name} else {_name}];" !"if (isnil 'BIS_fnc_timeToString' || false) then {" 5 worldTo !"ect 1;\n_inside = false;\n_offset = 1; \n\n_relPos = _building worldToModel _point;\n_boundingBox = boundingBox _building;\n\n_min = _" !"\n\n_new = getPosATL _obj;\n\nif (_isPlayer) then {\n_x = _pos worldToModel _new;\n_dir = _dir + (if ((_x select 1)==0) then { 0 } else" !"_pondPos = (_x worldToModel _playerPos) select 2;\n" !"ts [_new, [], 100];\n{\nif (((typeOf(_x) == \"\")\nAND {((((_x worldToModel _new) select 2) < 0))\nAND {([_x, _new] call _checkPerimete" !"t = _this select 1;\n_inside = false;\n\n_relPos = _building worldToModel _point;\n_boundingBox = boundingBox _building;\n\n_min = _bou" !"fascl,getDir _x,\"\",1];if(_fash==_forEachIndex)then{_fapos2D=worldtoscreen _fapos;if(count _fapos2D>=2)then{_fasp ctrlsetposition" !"_pondPos = (_x worldToModel _playerPos) select 2;\nif (_pondPos < 0) then {\n_canFill" !"_w2m = _x worldToModel (getPosATL player);\n_bb = (boundingbox _x) select 1;" !"_bn == 1) then { \n_bb = boundingBox _o;\n_h = _offset + ((_o worldToModel (getPosATL _o)) select 2);\n_p = [ (_bb select 0) select" !"if (_distance > 1 && _distance < 2500) then {\n_pos set [2,(_pos select 2) + 1.5];\n_screen = worldToScreen _pos;\n_text = composeText [image" \ No newline at end of file