mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
These may exceed 2048 in some cases, so best to be safe and use str
formatText.
Partial revert of fbfb124 to more readable form
84 lines
2.8 KiB
Plaintext
84 lines
2.8 KiB
Plaintext
private ["_class","_uid","_charID","_object","_worldspace","_key","_allowed","_obj","_inv","_objectID","_objectUID","_proceed","_activatingplayer","_clientKey","_exitReason","_playerUID"];
|
|
|
|
if (count _this < 8) exitWith {diag_log "Server_SwapObject error: Wrong parameter format";};
|
|
|
|
_charID = _this select 0;
|
|
_object = _this select 1;
|
|
_worldspace = _this select 2;
|
|
_class = _this select 3;
|
|
_obj = _this select 4;
|
|
_activatingplayer = _this select 5;
|
|
_inv = _this select 6;
|
|
_clientKey = _this select 7;
|
|
_proceed = false;
|
|
_objectID = "0";
|
|
_objectUID = "0";
|
|
_playerUID = getPlayerUID _activatingPlayer;
|
|
|
|
_exitReason = [_this,"SwapObject",(_worldspace select 1),_clientKey,_playerUID,_activatingPlayer] call server_verifySender;
|
|
if (_exitReason != "") exitWith {diag_log _exitReason};
|
|
|
|
if(!isNull(_obj)) then {
|
|
// Find objectID
|
|
_objectID = _obj getVariable ["ObjectID","0"];
|
|
// Find objectUID
|
|
_objectUID = _obj getVariable ["ObjectUID","0"];
|
|
if !(DZE_GodModeBase) then {
|
|
_obj removeAllMPEventHandlers "MPKilled";
|
|
};
|
|
// Remove old object
|
|
deleteVehicle _obj;
|
|
|
|
_proceed = true;
|
|
};
|
|
|
|
if(isNull(_object)) then {
|
|
_proceed = false;
|
|
};
|
|
|
|
if(_objectID == "0" && _objectUID == "0") then {
|
|
_proceed = false;
|
|
} else {
|
|
[_objectID,_objectUID] call server_deleteObjDirect;
|
|
};
|
|
|
|
_allowed = [_object, "Server"] call check_publishobject;
|
|
if (!_allowed || !_proceed) exitWith {
|
|
if(!isNull(_object)) then {
|
|
deleteVehicle _object;
|
|
};
|
|
diag_log ("Invalid object swap by playerUID:" + _playerUID);
|
|
};
|
|
|
|
// Publish variables
|
|
_object setVariable ["CharacterID",_charID,true];
|
|
|
|
//_object setVariable ["ObjectUID",_objectUID,true];
|
|
_object setVariable ["OEMPos",(_worldspace select 1),true];
|
|
|
|
//diag_log ("PUBLISH: Attempt " + str(_object));
|
|
|
|
//get UID
|
|
_uid = _worldspace call dayz_objectUID2;
|
|
|
|
//Send request
|
|
//_key = str formatText["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0, _charID, _worldspace, [], [], 0,_uid];
|
|
_key = str formatText["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0, _charID, _worldspace call AN_fnc_formatWorldspace, _inv, [], 0,_uid]; // Precise Base Building 1.0.5
|
|
|
|
//diag_log ("HIVE: WRITE: "+ str(_key));
|
|
_key call server_hiveWrite;
|
|
|
|
_object setVariable ["lastUpdate",diag_tickTime];
|
|
_object setVariable ["ObjectUID", _uid,true];
|
|
// _object setVariable ["CharacterID",_charID,true];
|
|
if (DZE_GodModeBase && {!(_class in DZE_GodModeBaseExclude)}) then {
|
|
_object addEventHandler ["HandleDamage",{false}];
|
|
} else {
|
|
_object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
|
|
};
|
|
// Test disabling simulation server side on buildables only.
|
|
_object enableSimulation false;
|
|
|
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
|
|
|
|
diag_log format["PUBLISH: Player %1(%2) upgraded or downgraded object to %3 with UID:%4 @%5",_activatingPlayer,_playerUID,_class,_uid,((_worldspace select 1) call fa_coor2str)]; |