mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
A Plot For Life also includes Precise Base Building by Mikeeeyy. Precise base building has no variable to switch it on or off, I don't think it should. Seems to work well enough, this may conflict with the duplicate object uid fix, it appears to spam my server rpt.
79 lines
2.4 KiB
Plaintext
79 lines
2.4 KiB
Plaintext
private ["_activatingplayerUID","_class","_uid","_charID","_object","_worldspace","_key","_allowed","_obj","_objectID","_objectUID","_proceed","_activatingplayer"];
|
|
//[dayz_characterID,_tent,[_dir,_location],"TentStorage"]
|
|
_charID = _this select 0;
|
|
_object = _this select 1;
|
|
_worldspace = _this select 2;
|
|
_class = _this select 3;
|
|
_obj = _this select 4;
|
|
_activatingplayer = _this select 5;
|
|
_activatingplayerUID = [_activatingplayer] call FNC_GetPlayerUID;
|
|
_proceed = false;
|
|
|
|
_objectID = "0";
|
|
_objectUID = "0";
|
|
|
|
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,_activatingplayer] call server_deleteObj;
|
|
};
|
|
|
|
_allowed = [_object, "Server"] call check_publishobject;
|
|
if (!_allowed || !_proceed) exitWith {
|
|
if(!isNull(_object)) then {
|
|
deleteVehicle _object;
|
|
};
|
|
diag_log ("Invalid object swap by playerUID:"+ str(_activatingplayerUID));
|
|
};
|
|
|
|
// Publish variables
|
|
_object setVariable ["CharacterID",_charID,true];
|
|
|
|
//get UID
|
|
_uid = _worldspace call dayz_objectUID2;
|
|
|
|
_worldspace set [0, (_worldspace select 0) call KK_fnc_floatToString];
|
|
_worldspace set [1, (_worldspace select 1) call KK_fnc_positionToString];
|
|
|
|
//_object setVariable ["ObjectUID",_objectUID,true];
|
|
_object setVariable ["OEMPos", call compile (_worldspace select 1), true];
|
|
|
|
//diag_log ("PUBLISH: Attempt " + str(_object));
|
|
|
|
//Send request
|
|
_key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0 , _charID, _worldspace, [], [], 0,_uid];
|
|
//diag_log ("HIVE: WRITE: "+ str(_key));
|
|
_key call server_hiveWrite;
|
|
|
|
_object setVariable ["lastUpdate",time];
|
|
_object setVariable ["ObjectUID", _uid,true];
|
|
// _object setVariable ["CharacterID",_charID,true];
|
|
if (DZE_GodModeBase) 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 ("PUBLISH: " + str(_activatingPlayer) + " upgraded " + (_class) + " with ID " + str(_uid)); |