disconnect method from DayZ CE 1.8

This commit is contained in:
[VB]AWOL
2013-11-17 19:39:17 -06:00
parent 7f375d36c0
commit 8627b4b627

View File

@@ -1,66 +1,66 @@
private ["_invehicle","_isplayernearby","_object","_myGroup","_id","_playerID","_playerName","_characterID","_playerIDtoarray","_timeout","_message","_magazines"]; private ["_invehicle","_isplayernearby","_playerObj","_myGroup","_id","_playerUID","_playerName","_characterID","_timeout","_message","_magazines","_playerPos"];
_playerID = _this select 0; _playerUID = _this select 0;
_playerName = _this select 1; _playerName = _this select 1;
_object = call compile format["player%1",_playerID]; _playerObj = nil;
_characterID = _object getVariable ["CharacterID","0"]; _playerPos = [];
_timeout = _object getVariable["combattimeout",0]; {
if ((getPlayerUID _x) == _playerUID) exitWith { _playerObj = _x; _playerPos = getPosATL _playerObj;};
} forEach playableUnits;
_playerIDtoarray = []; if (isNil "_playerObj") exitWith {
_playerIDtoarray = toArray _playerID; diag_log format["%1: nil player object, _this:%2", __FILE__, _this];
_invehicle = false;
if (vehicle _object != _object) then {
_object action ["eject", vehicle _object];
_invehicle = true;
}; };
if (59 in _playerIDtoarray) exitWith { }; diag_log format["get: %1 (%2), sent: %3 (%4)",typeName (getPlayerUID _playerObj), getPlayerUID _playerObj, typeName _playerUID, _playerUID];
if ((_timeout - time) > 0) then { if (!isNull _playerObj) then {
_object setVariable["NORRN_unconscious",true, true]; _characterID = _playerObj getVariable ["CharacterID","0"];
_object setVariable["unconsciousTime",300,true]; _timeout = _playerObj getVariable["combattimeout",0];
_invehicle = false;
if (vehicle _playerObj != _playerObj) then {
_playerObj action ["eject", vehicle _playerObj];
_invehicle = true;
};
if ((_timeout - time) > 0) then {
_playerObj setVariable["NORRN_unconscious",true, true];
_playerObj setVariable["unconsciousTime",300,true];
diag_log format["COMBAT LOGGED: %1 (%2)", _playerName,_timeout]; diag_log format["COMBAT LOGGED: %1 (%2)", _playerName,_timeout];
//diag_log format["SET UNCONCIOUSNESS: %1", _playerName]; //diag_log format["SET UNCONCIOUSNESS: %1", _playerName];
// Message whole server when player combat logs // Message whole server when player combat logs
_message = format["PLAYER COMBAT LOGGED: %1",_playerName]; _message = format["PLAYER COMBAT LOGGED: %1",_playerName];
[nil,nil,"per",rTITLETEXT,_message,"PLAIN DOWN"] call RE; [nil,nil,"per",rTITLETEXT,_message,"PLAIN DOWN"] call RE;
}; };
//dayz_disco = dayz_disco - [_playerID]; diag_log format["DISCONNECT: %1 (%2) Object: %3, _characterID: %4", _playerName,_playerUID,_playerObj,_characterID];
if (!isNull _object) then {
diag_log format["DISCONNECT: %1 (%2) Object: %3, _characterID: %4", _playerName,_playerID,_object,_characterID]; _id = [_playerUID,_characterID,2] spawn dayz_recordLogin;
_id = [_playerID,_characterID,2] spawn dayz_recordLogin; if (alive _playerObj) then {
if (alive _object) then { _isplayernearby = (DZE_BackpackGuard and!_invehicle and ({(isPlayer _x) and (alive _x)} count (_playerPos nearEntities ["AllVehicles", 5]) > 1));
_isplayernearby = (DZE_BackpackGuard and!_invehicle and ({isPlayer _x} count (_object nearEntities ["AllVehicles", 5]) > 1));
// prevent saving more than 20 magazine items // prevent saving more than 20 magazine items
_magazines = [(magazines _object),20] call array_reduceSize; _magazines = [(magazines _playerObj),20] call array_reduceSize;
[_object,_magazines,true,true,_isplayernearby] call server_playerSync; [_playerObj,_magazines,true,true,_isplayernearby] call server_playerSync;
// maybe not needed just testing // maybe not needed just testing
_object removeAllEventHandlers "MPHit"; _playerObj removeAllMPEventHandlers "mphit";
_object enableSimulation false;
_object removeAllEventHandlers "HandleDamage";
_object removeAllEventHandlers "Killed";
_object removeAllEventHandlers "Fired";
_object removeAllEventHandlers "FiredNear";
_myGroup = group _object; _myGroup = group _playerObj;
deleteVehicle _object; deleteVehicle _playerObj;
deleteGroup _myGroup; deleteGroup _myGroup;
} else { } else {
//Update Vehicle //Update Vehicle
{ {
[_x,"gear"] call server_updateObject; [_x,"gear"] call server_updateObject;
} foreach (nearestObjects [getPosATL _object, dayz_updateObjects, 10]); } foreach (nearestObjects [_playerPos, dayz_updateObjects, 10]);
}; };
}; };