diff --git a/SQF/dayz_code/compile/veh_setFixServer.sqf b/SQF/dayz_code/compile/veh_setFixServer.sqf deleted file mode 100644 index de5a993e2..000000000 --- a/SQF/dayz_code/compile/veh_setFixServer.sqf +++ /dev/null @@ -1,14 +0,0 @@ -private["_unit","_selection","_damage","_total"]; -_unit = _this select 0; -_selection = _this select 1; -_damage = _this select 2; - -if (_selection != "" and local _unit) then { - _unit setHit[_selection,_damage]; - //player sidechat str _damage; - if (_damage == 0) then { - [_unit,"repair"] call server_updateObject; - } else { - [_unit,"damage"] call server_updateObject; - }; -}; \ No newline at end of file diff --git a/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf b/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf index df3919b7e..6c7bc42ba 100644 --- a/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf +++ b/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf @@ -86,14 +86,10 @@ if (_outcome != "PASS") then { _object setVariable ["CharacterID", _characterID, true]; if (_characterID != "0" && !(_object isKindOf "Bicycle")) then {_object setVehicleLock "LOCKED";}; - _isAir = _object isKindOf "Air"; - - { - _selection = _x select 0; - _dam = _x select 1; - _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); - [_object,_selection,_dam] call fnc_veh_setFixServer; - } forEach _hitpoints; + + [_object,_hitpoints] call server_setHitpoints; + + [_object,"all",true] call server_updateObject; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; diff --git a/SQF/dayz_server/compile/server_publishVehicle.sqf b/SQF/dayz_server/compile/server_publishVehicle.sqf index 67414bd13..41a12c5ff 100644 --- a/SQF/dayz_server/compile/server_publishVehicle.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle.sqf @@ -73,15 +73,13 @@ if (_outcome != "PASS") then { _object setVariable ["CharacterID", _characterID, true]; _object setDamage _damage; - { - _selection = _x select 0; - _dam = _x select 1; - if (_selection in dayZ_explosiveParts && _dam > 0.8) then {_dam = 0.8}; - [_object,_selection,_dam] call fnc_veh_setFixServer; - } count _array; + [_object,_array] call server_setHitpoints; _object setFuel _fuel; _object setvelocity [0,0,1]; + + [_object,"all",true] call server_updateObject; + _object call fnc_veh_ResetEH; PVDZE_veh_Init = _object; diff --git a/SQF/dayz_server/compile/server_publishVehicle3.sqf b/SQF/dayz_server/compile/server_publishVehicle3.sqf index 9c83ebcfe..978f190fa 100644 --- a/SQF/dayz_server/compile/server_publishVehicle3.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle3.sqf @@ -124,14 +124,9 @@ if (_outcome != "PASS") then { [_weapons,_magazines,_backpacks,_object] call fn_addCargo; - _isAir = _object isKindOf "Air"; - { - _selection = _x select 0; - _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); - _object setHit [_selection,_dam]; - } count _newHitpoints; - _object setFuel _fuel; + + [_object,_newHitpoints] call server_setHitpoints; [_object,"all",true] call server_updateObject; diff --git a/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf b/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf index 0c0070fd1..c393c91bf 100644 --- a/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf @@ -173,15 +173,10 @@ if (_outcome != "PASS") then { {_obj removeMagazinesTurret[_x,_turret];} count _mags; } forEach _weaponArray; }; - - _isAir = _object isKindOf "Air"; - { - _selection = _x select 0; - _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); - _object setHit [_selection,_dam]; - } count _newHitpoints; - + _object setFuel _fuel; + + [_object,_newHitpoints] call server_setHitpoints; [_object,"all",true] call server_updateObject; diff --git a/SQF/dayz_server/compile/server_setHitpoints.sqf b/SQF/dayz_server/compile/server_setHitpoints.sqf new file mode 100644 index 000000000..9e123b1c4 --- /dev/null +++ b/SQF/dayz_server/compile/server_setHitpoints.sqf @@ -0,0 +1,9 @@ +local _obj = _this select 0; +local _hitpoints = _this select 1; +local _isAir = _obj isKindOf "Air"; + +{ + local _selection = _x select 0; + local _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); + _obj setHit [_selection,_dam]; +} count _hitpoints; \ No newline at end of file diff --git a/SQF/dayz_server/init/server_functions.sqf b/SQF/dayz_server/init/server_functions.sqf index e87b4b23b..189d1683b 100644 --- a/SQF/dayz_server/init/server_functions.sqf +++ b/SQF/dayz_server/init/server_functions.sqf @@ -23,6 +23,7 @@ server_playerSetup = compile preprocessFileLineNumbers "\z\addons\dayz_server\co server_onPlayerDisconnect = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_onPlayerDisconnect.sqf"; call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\updateObject_functions.sqf"; server_updateObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateObject.sqf"; +server_setHitpoints = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_setHitpoints.sqf"; server_playerDied = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDied.sqf"; server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf"; //Creates the object in DB server_deleteObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_deleteObj.sqf"; //Removes the object from the DB @@ -62,8 +63,6 @@ if (DZE_Virtual_Garage) then { call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\garage\init.sqf"; }; -fnc_veh_setFixServer = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_setFixServer.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles) - server_medicalSync = { local _player = _this select 0; local _array = _this select 1; diff --git a/SQF/dayz_server/system/server_monitor.sqf b/SQF/dayz_server/system/server_monitor.sqf index c01923e4b..349fad5cd 100644 --- a/SQF/dayz_server/system/server_monitor.sqf +++ b/SQF/dayz_server/system/server_monitor.sqf @@ -365,16 +365,13 @@ if ((playersNumber west + playersNumber civilian) == 0) exitWith { }; _object setVariable ["CharacterID", _ownerID, true]; - _isAir = _object isKindOf "Air"; - - { - _selection = _x select 0; - _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); - _object setHit [_selection,_dam]; - } count _hitpoints; - [_object,"damage"] call server_updateObject; - + + [_object,_hitpoints] call server_setHitpoints; + _object setFuel _fuel; + + [_object,"all",true] call server_updateObject; + _object call fnc_veh_ResetEH; if (_ownerID != "0" && {!(_object isKindOf "Bicycle")}) then {_object setVehicleLock "locked";}; _serverVehicleCounter set [count _serverVehicleCounter,_type]; // total each vehicle