mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
Publish new Maintain Area (New HiveDLL is required)
This commit is contained in:
@@ -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"];
|
||||
|
||||
@@ -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;};
|
||||
|
||||
@@ -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 = [];
|
||||
|
||||
|
||||
24
SQF/dayz_server/compile/server_maintainArea.sqf
Normal file
24
SQF/dayz_server/compile/server_maintainArea.sqf
Normal 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];
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user