diff --git a/SQF/dayz_server/compile/server_onPlayerDisconnect.sqf b/SQF/dayz_server/compile/server_onPlayerDisconnect.sqf index 15b189429..b983c9904 100644 --- a/SQF/dayz_server/compile/server_onPlayerDisconnect.sqf +++ b/SQF/dayz_server/compile/server_onPlayerDisconnect.sqf @@ -7,6 +7,13 @@ _playerPos = []; if ((getPlayerUID _x) == _playerUID) exitWith { _playerObj = _x; _playerPos = getPosATL _playerObj;}; } forEach playableUnits; +if (isNil "_playerObj") then { + diag_log format["nil player object attempting PV, :%1", _this]; + + // fall back to using PV for now + _playerObj = call compile format["player%1",_playerUID]; +}; + if (isNil "_playerObj") exitWith { diag_log format["%1: nil player object, _this:%2", __FILE__, _this]; }; @@ -52,12 +59,8 @@ if (!isNull _playerObj) then { [_playerObj,_magazines,true,true,_isplayernearby] call server_playerSync; - // maybe not needed just testing - _playerObj removeAllMPEventHandlers "mphit"; - - _myGroup = group _playerObj; - deleteVehicle _playerObj; - deleteGroup _myGroup; + // remove player + _playerObj call dayz_removePlayerOnDisconnect; } else { //Update Vehicle { diff --git a/SQF/dayz_server/init/server_functions.sqf b/SQF/dayz_server/init/server_functions.sqf index a4dae01be..eae812fee 100644 --- a/SQF/dayz_server/init/server_functions.sqf +++ b/SQF/dayz_server/init/server_functions.sqf @@ -189,6 +189,7 @@ server_characterSync = { //onPlayerConnected "[_uid,_name] spawn server_onPlayerConnect;"; onPlayerDisconnected "[_uid,_name] call server_onPlayerDisconnect;"; + // Setup globals allow overwrite from init.sqf if(isnil "dayz_MapArea") then { dayz_MapArea = 10000; @@ -617,6 +618,12 @@ dayz_perform_purge = { _this = nil; }; +dayz_removePlayerOnDisconnect = { + _this removeAllMPEventHandlers "mphit"; + deleteVehicle _this; + deleteGroup (group _this); +}; + server_timeSync = { //Send request _key = "CHILD:307:"; @@ -733,7 +740,7 @@ server_spawnCleanLoot = { }; server_spawnCleanAnimals = { - private ["_delQtyAnimal","_qty","_missonAnimals"]; + private ["_delQtyAnimal","_qty","_missonAnimals","_nearby"]; _missonAnimals = allMissionObjects "CAAnimalBase"; _delQtyAnimal = 0; {