From 03b2408ae30e4115bca795686663d1a6f926c02b Mon Sep 17 00:00:00 2001 From: Skaronator Date: Fri, 17 Jan 2014 23:05:37 +0100 Subject: [PATCH] Update maintain to new CHILD function --- SQF/dayz_code/actions/maintain_area.sqf | 2 +- .../actions/player_buildingMaint.sqf | 31 +++++---------- .../compile/server_maintainArea.sqf | 39 ++++++++++++------- 3 files changed, 34 insertions(+), 38 deletions(-) diff --git a/SQF/dayz_code/actions/maintain_area.sqf b/SQF/dayz_code/actions/maintain_area.sqf index eedd66d8f..fa5ba931a 100644 --- a/SQF/dayz_code/actions/maintain_area.sqf +++ b/SQF/dayz_code/actions/maintain_area.sqf @@ -82,7 +82,7 @@ switch _option do { cutText [format[(localize "STR_EPOCH_ACTIONS_4"), _count], "PLAIN DOWN", 5]; while {3 >= _retry} do { // 3 Times _retry = _retry + 1; - PVDZE_maintainArea = [player,[_target, _objectClasses, _range],_uniqueID]; + PVDZE_maintainArea = [player,1,[_target, _objectClasses, _range],_uniqueID]; publicVariableServer "PVDZE_maintainArea"; sleep 20; }; diff --git a/SQF/dayz_code/actions/player_buildingMaint.sqf b/SQF/dayz_code/actions/player_buildingMaint.sqf index 9862bdb71..5111af7ce 100644 --- a/SQF/dayz_code/actions/player_buildingMaint.sqf +++ b/SQF/dayz_code/actions/player_buildingMaint.sqf @@ -80,31 +80,18 @@ if (_proceed) then { // all parts removed proceed if (_tobe_removed_total == _removed_total) then { - // Get position - _location = _obj getVariable["OEMPos",(getposATL _obj)]; - - // Get direction - _dir = getDir _obj; - - // Find CharacterID - _objectCharacterID = _obj getVariable ["CharacterID","0"]; - - // Create new object - _object = createVehicle [_classname, [0,0,0], [], 0, "CAN_COLLIDE"]; - - // Set direction - _object setDir _dir; - - // Set location - _object setPosATL _location; - - PVDZE_obj_Swap = [_objectCharacterID,_object,[_dir,_location],_classname,_obj,player]; - publicVariableServer "PVDZE_obj_Swap"; + _uniqueID = random(99999); + _retry = 0; + cutText [format[(localize "STR_EPOCH_ACTIONS_4"), _count], "PLAIN DOWN", 5]; + while {2 >= _retry} do { // 2 Times + _retry = _retry + 1; + PVDZE_maintainArea = [player,2,[_obj],_uniqueID]; + publicVariableServer "PVDZE_maintainArea"; + sleep 20; + }; cutText [format[(localize "str_epoch_player_144"),_text], "PLAIN DOWN", 5]; - player reveal _object; - } else { {player addMagazine _x;} forEach _temp_removed_array; diff --git a/SQF/dayz_server/compile/server_maintainArea.sqf b/SQF/dayz_server/compile/server_maintainArea.sqf index 93ba5af9c..38a20e4a3 100644 --- a/SQF/dayz_server/compile/server_maintainArea.sqf +++ b/SQF/dayz_server/compile/server_maintainArea.sqf @@ -1,24 +1,33 @@ -/* Maintain Area - written by Skaronator -How to use: PVDZE_maintainArea = [player,[_target, _objectClasses, _range]]; -*/ -private ["_player","_area","_uniqueID","_objects","_key"]; +/* Maintain Area - written by Skaronator */ +private ["_player","_ObjArray","_uniqueID","_objects","_key"]; _player = _this select 0; -_area = _this select 1; -_uniqueID = _this select 2; +_option = _this select 1; +/* +1: PVDZE_maintainArea = [player,1,[_target, _objectClasses, _range],_uniqueID]; +2: PVDZE_maintainArea = [player,2,[_object],_uniqueID]; +*/ +_ObjArray = _this select 2; +_uniqueID = _this select 3; if (_uniqueID in DZEMaintainCache) exitWith { }; //Just do it only one time - DZEMaintainCache = DZEMaintainCache + [_uniqueID]; -_objects = nearestObjects _area; +if (_option == 1) then { + _objects = nearestObjects _ObjArray; -{ - _objectID = _x getVariable ["ObjectID","0"]; - //_objectUID = _x getVariable ["ObjectUID","0"]; + { + _objectID = _x getVariable ["ObjectID","0"]; + //_objectUID = _x getVariable ["ObjectUID","0"]; + _key = format["CHILD:396:%1:", _objectID]; //Use ID instead of UID because ID is shorter + _key call server_maintainObj; + } forEach _objects; + + + diag_log format ["MAINTAIN AREA BY %1 - %2 Objects at %3", name _player, count _objects, position _player]; +}; +if (_option == 2) then { + _objectID = _ObjArray getVariable ["ObjectID","0"]; _key = format["CHILD:396:%1:", _objectID]; //Use ID instead of UID because ID is shorter _key call server_maintainObj; -} forEach _objects; - - -diag_log format ["MAINTAIN AREA BY %1 - %2 Objects at %3", name _player, count _objects, position _player]; \ No newline at end of file +}; \ No newline at end of file