Publish new Maintain Area (New HiveDLL is required)

This commit is contained in:
Skaronator
2014-01-17 19:09:37 +01:00
parent 7d15cfb1bf
commit 678590c7ce
6 changed files with 45 additions and 41 deletions

View File

@@ -1,5 +1,5 @@
//Code developed by Axe Cop for use in DayZ Epoch Mod.
private ["_missing","_missingQty","_proceed","_itemIn","_countIn","_qty","_num_removed","_removed","_removed_total","_tobe_removed_total","_obj","_objectID","_objectUID","_classname","_location","_dir","_objectCharacterID","_object","_temp_removed_array","_textMissing","_target","_objectClasses","_range","_objects","_requirements","_count","_cost","_itemText","_option"];
//Code developed by Axe Cop - Massiv improvments and performance tunes by Skaronator
private ["_missing","_missingQty","_proceed","_itemIn","_countIn","_qty","_num_removed","_uniqueID","_removed","_removed_total","_tobe_removed_total","_obj","_objectID","_objectUID","_classname","_location","_dir","_objectCharacterID","_object","_temp_removed_array","_textMissing","_target","_objectClasses","_range","_objects","_requirements","_count","_cost","_itemText","_option"];
if (DZE_ActionInProgress) exitWith { cutText [(localize "STR_EPOCH_ACTIONS_2") , "PLAIN DOWN"]; };
DZE_ActionInProgress = true;
@@ -77,45 +77,15 @@ switch _option do {
// all required items removed from player gear
if (_tobe_removed_total == _removed_total) then {
{
_obj = _x;
// Find objectID
_objectID = _obj getVariable ["ObjectID","0"];
// Find objectUID
_objectUID = _obj getVariable ["ObjectUID","0"];
if (_objectID == "0" && _objectUID == "0") exitWith { cutText ["At least one building part is not setup yet.", "PLAIN DOWN"];};
// Get classname
_classname = typeOf _obj;
// 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";
player reveal _object;
} forEach _objects;
_uniqueID = random(99999);
_retry = 0;
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];
publicVariableServer "PVDZE_maintainArea";
sleep 20;
};
} else {
{player addMagazine _x;} forEach _temp_removed_array;
cutText [format[(localize "STR_EPOCH_ACTIONS_5"),_removed_total,_tobe_removed_total], "PLAIN DOWN"];

View File

@@ -32,6 +32,7 @@
if (isServer) then {
/* PVS/PVC - Skaronator */
"PVDZE_send" addPublicVariableEventHandler {(_this select 1) call server_sendToClient};
"PVDZE_maintainArea" addPublicVariableEventHandler {(_this select 1) spawn server_maintainArea};
"PVDZE_plr_Died" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerDied};
"PVDZE_plr_Save" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerSync;};

View File

@@ -527,6 +527,7 @@ call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\loot_init.sqf";
if(isServer) then {
dayz_players = [];
DZEMaintainCache = [];
dead_bodyCleanup = [];
needUpdate_objects = [];

View File

@@ -0,0 +1,24 @@
/* Maintain Area - written by Skaronator
How to use: PVDZE_maintainArea = [player,[_target, _objectClasses, _range]];
*/
private ["_player","_area","_uniqueID","_objects","_key"];
_player = _this select 0;
_area = _this select 1;
_uniqueID = _this select 2;
if (_uniqueID in DZEMaintainCache) exitWith { }; //Just do it only one time
DZEMaintainCache = DZEMaintainCache + [_uniqueID];
_objects = nearestObjects _area;
{
_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];

View File

@@ -29,6 +29,7 @@ server_spawnEvents = compile preprocessFileLineNumbers "\z\addons\dayz_server\
//server_weather = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_weather.sqf";
fnc_plyrHit = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_plyrHit.sqf";
server_deaths = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDeaths.sqf";
server_maintainArea = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_maintainArea.sqf";
/* PVS/PVC - Skaronator */
server_sendToClient = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_sendToClient.sqf";
@@ -163,6 +164,13 @@ server_hiveReadWrite = {
_resultArray
};
server_maintainObj = {
private["_data"];
//diag_log ("ATTEMPT WRITE: " + _this);
_data = "HiveExt" callExtension _this;
//diag_log ("WRITE: " +str(_data));
};
server_hiveReadWriteLarge = {
private["_key","_resultArray","_data"];
_key = _this;

View File

@@ -1,4 +1,4 @@
5 !="remExField" !="remExFP" !="PVDZE_plr_TradeMenu" !="PVDZE_veh_Update" !="PVDZE_veh_Lock" !="PVDZE_plr_DeathB" !="PVDZE_obj_Publish" !="PVDZE_obj_Swap" !="PVDZE_plr_Save" !="PVDZE_obj_Delete" !="PVDZE_veh_SFix" !="PVDZE_obj_Trade" !="PVDZE_veh_Publish2" !="PVDZE_send" !="usecBleed" !="PVDZE_plr_Died" !="PVDZE_zed_Spawn" !="drn_DynamicWeather_DebugTextEventArgs" !="drn_AskServerDynamicWeatherEventArgs" !="drn_DynamicWeatherEventArgs" !="drn_var_DynamicWeather_Rain" !="drn_var_DynamicWeather_ServerInitialized" !="norrnRACarUp" !="norrnRAPicUp" !="norrnRaDrag" !="norrnR180" !="norrnRalie" !="norrnRLact" !="norrnRALW" !="norrinRAlie" !="atp" !="PVDZE_plr_Login" !="PVDZE_plr_Login2" !="PVDZE_plr_LoginRecord" !="PVDZE_plr_DiscRem" !="BIS_effects_gepv" !="PVDZE_plr_DeathBResult" !="customRemoteMessage" !="dayzPlayerLogin" !="PVDZE_veh_Init" !="dayzTradeResult" !="PVDZE_plr_TradeMenuResult" !="PVDZE_plr_SetDate" !="PVDZE_plr_Morph2" !="PVDZE_plr_Morph" !="norrnRnoAnim" !="norrnRDead" !="PVDZE_plr_Hit" !="PVDZE_plr_HitV" !="PVDZE_plr_DelLocal" !="PVDZE_veh_Upgrade" !"player" !"PVAHR_" !="PVAH_AdminRequest" !="PVAH_WriteLogRequest"
5 !="remExField" !="remExFP" !="PVDZE_plr_TradeMenu" !="PVDZE_maintainArea" !="PVDZE_veh_Update" !="PVDZE_veh_Lock" !="PVDZE_plr_DeathB" !="PVDZE_obj_Publish" !="PVDZE_obj_Swap" !="PVDZE_plr_Save" !="PVDZE_obj_Delete" !="PVDZE_veh_SFix" !="PVDZE_obj_Trade" !="PVDZE_veh_Publish2" !="PVDZE_send" !="usecBleed" !="PVDZE_plr_Died" !="PVDZE_zed_Spawn" !="drn_DynamicWeather_DebugTextEventArgs" !="drn_AskServerDynamicWeatherEventArgs" !="drn_DynamicWeatherEventArgs" !="drn_var_DynamicWeather_Rain" !="drn_var_DynamicWeather_ServerInitialized" !="norrnRACarUp" !="norrnRAPicUp" !="norrnRaDrag" !="norrnR180" !="norrnRalie" !="norrnRLact" !="norrnRALW" !="norrinRAlie" !="atp" !="PVDZE_plr_Login" !="PVDZE_plr_Login2" !="PVDZE_plr_LoginRecord" !="PVDZE_plr_DiscRem" !="BIS_effects_gepv" !="PVDZE_plr_DeathBResult" !="customRemoteMessage" !="dayzPlayerLogin" !="PVDZE_veh_Init" !="dayzTradeResult" !="PVDZE_plr_TradeMenuResult" !="PVDZE_plr_SetDate" !="PVDZE_plr_Morph2" !="PVDZE_plr_Morph" !="norrnRnoAnim" !="norrnRDead" !="PVDZE_plr_Hit" !="PVDZE_plr_HitV" !="PVDZE_plr_DelLocal" !="PVDZE_veh_Upgrade" !"player" !"PVAHR_" !="PVAH_AdminRequest" !="PVAH_WriteLogRequest"
5 PVAHR_ //!PVAHR_0 !PVAHR_1 !PVAHR_2 !PVAHR_3 !PVAHR_4 !PVAHR_5 !PVAHR_6 !PVAHR_7 !PVAHR_8 !PVAHR_9
5 "HangenderRE"
5 "vilegaming"