Snowmobil Posted September 24, 2013 Report Share Posted September 24, 2013 Add some log messages with diag_log and check your rpt log. Link to comment Share on other sites More sharing options...
ToejaM Posted September 24, 2013 Author Report Share Posted September 24, 2013 Whats your launch line in the bat? Link to comment Share on other sites More sharing options...
Razorman Posted September 25, 2013 Report Share Posted September 25, 2013 TSW? not compatible with epoch I believe? Link to comment Share on other sites More sharing options...
ToejaM Posted September 26, 2013 Author Report Share Posted September 26, 2013 i have found something we need to sort out... so you wrote that the maintenance will swap the objects to destructable again... have you checked objects which can be upgraded? it seems this produces the same effect... for example the half cinder walls... are indestructable when built... but if i upgrade them to a full wall they are destructable again... also the doorways... if the door is placed in they are destructable again... so maybe your swap file modification will do the trick? nonetheless... really like your modifications so far =) Place a plot pole to stop people from upgrading buildables and only make upgrades near a server restart if you're worried about destruction for the moment :) There is a dayz_swapobj file that could be used to make sure all builables are always indestructible. If I get time I'll put my code into it and update it unless someone wants to go ahead and do it first. Link to comment Share on other sites More sharing options...
LimpNoodle Posted September 26, 2013 Report Share Posted September 26, 2013 TSW? not compatible with epoch I believe? Correct, TWS does not work with Epoch. The database is way to different. @ToejaM shot for the last fix bud! Link to comment Share on other sites More sharing options...
ToejaM Posted September 26, 2013 Author Report Share Posted September 26, 2013 Possibly but its dependant on your cleanup settings. I have it in as I said as we register bases but should be easy enough to remove if you don't want it. Which fix Limp? I dont understand :D Link to comment Share on other sites More sharing options...
LimpNoodle Posted September 26, 2013 Report Share Posted September 26, 2013 Possibly but its dependant on your cleanup settings. I have it in as I said as we register bases but should be easy enough to remove if you don't want it. Which fix Limp? I dont understand :D PART3: Prevent Maintenance Exploit :D Link to comment Share on other sites More sharing options...
rhadamanthus79 Posted September 26, 2013 Report Share Posted September 26, 2013 Making upgraded parts indestructible should be as easy as adding there new class names to the list. I will try to dig through the code tonight to see if I can find them. Link to comment Share on other sites More sharing options...
Razorman Posted September 28, 2013 Report Share Posted September 28, 2013 Have the script in & server runs fine but looks like stuff is still destructible after restart, any ideas? Link to comment Share on other sites More sharing options...
Snowmobil Posted September 28, 2013 Report Share Posted September 28, 2013 Can you show us your server_monitor.sqf? Link to comment Share on other sites More sharing options...
Razorman Posted September 30, 2013 Report Share Posted September 30, 2013 private ["_result","_pos","_wsDone","_dir","_block","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_date","_script","_key","_outcome","_vehLimit","_hiveResponse","_objectCount","_codeCount","_objectArray","_year","_month","_day","_hour","_minute","_data","_status","_val","_traderid","_retrader","_traderData","_id"]; []execVM "\z\addons\dayz_server\system\s_fps.sqf"; //server monitor FPS (writes each ~181s diag_fps+181s diag_fpsmin*) dayz_versionNo = getText(configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_hiveVersionNo = getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); _script = getText(missionConfigFile >> "onPauseScript"); // ### [CPC] Indestructible Buildables Fix _cpcimmune =[ "WoodFloor_DZ", "WoodFloorHalf_DZ", "WoodFloorQuarter_DZ", "Land_DZE_LargeWoodDoorLocked", "WoodLargeWallDoor_DZ", "WoodLargeWallWin_DZ", "WoodLargeWall_DZ", "Land_DZE_WoodDoorLocked", "WoodSmallWallDoor_DZ", "WoodSmallWallWin_DZ", "Land_DZE_GarageWoodDoor", "Land_DZE_GarageWoodDoorLocked", "WoodLadder_DZ", "WoodStairsSans_DZ", "WoodStairs_DZ", "WoodSmallWall_DZ", "WoodSmallWallThird_DZ", "CinderWallHalf_DZ", "CinderWall_DZ", "CinderWallDoorway_DZ", "Land_DZE_LargeWoodDoor", "MetalFloor_DZ", "CinderWallDoorSmallLocked_DZ", "CinderWallSmallDoorway_DZ", "CinderWallDoor_DZ" ]; // ### [CPC] Indestructible Buildables Fix if ((count playableUnits == 0) and !isDedicated) then { if ((count playableUnits == 0) and !isDedicated) then { isSinglePlayer = true; }; waitUntil{initialized}; //means all the functions are now defined diag_log "HIVE: Starting"; waituntil{isNil "sm_done"}; // prevent server_monitor be called twice (bug during login of the first player) //Set the Time //Send request _key = "CHILD:307:"; _result = _key call server_hiveReadWrite; _outcome = _result select 0; if(_outcome == "PASS") then { _date = _result select 1; if(dayz_fullMoonNights) then { //date setup _year = _date select 0; _month = _date select 1; _day = _date select 2; _hour = _date select 3; _minute = _date select 4; //Force full moon nights _date = [2012,6,6,_hour,_minute]; }; if(isDedicated) then { setDate _date; dayzSetDate = _date; publicVariable "dayzSetDate"; }; diag_log ("HIVE: Local Time set to " + str(_date)); }; // Custom Configs if(isnil "MaxVehicleLimit") then { MaxVehicleLimit = 50; }; if(isnil "MaxHeliCrashes") then { MaxHeliCrashes = 5; }; if(isnil "MaxDynamicDebris") then { MaxDynamicDebris = 100; }; // Custon Configs End if (isServer and isNil "sm_done") then { serverVehicleCounter = []; _hiveResponse = []; for "_i" from 1 to 5 do { diag_log "HIVE: trying to get objects"; _key = format["CHILD:302:%1:", dayZ_instance]; _hiveResponse = _key call server_hiveReadWrite; if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")})) then { diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse)); _hiveResponse = ["",0]; } else { diag_log ("HIVE: found "+str(_hiveResponse select 1)+" objects" ); _i = 99; // break }; }; _objectArray = []; if ((_hiveResponse select 0) == "ObjectStreamStart") then { _objectCount = _hiveResponse select 1; diag_log ("HIVE: Commence Object Streaming..."); for "_i" from 1 to _objectCount do { _hiveResponse = _key call server_hiveReadWrite; _objectArray set [_i - 1, _hiveResponse]; //diag_log (format["HIVE dbg %1 %2", typeName _hiveResponse, _hiveResponse]); }; diag_log ("HIVE: got " + str(count _objectArray) + " objects"); }; // # START OF STREAMING # _countr = 0; _totalvehicles = 0; { //Parse Array _countr = _countr + 1; _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _intentory= _x select 5; _hitPoints= _x select 6; _fuel = _x select 7; _damage = _x select 8; _dir = 0; _pos = [0,0,0]; _wsDone = false; if (count _worldspace >= 2) then { _dir = _worldspace select 0; if (count (_worldspace select 1) == 3) then { _pos = _worldspace select 1; _wsDone = true; } }; if (!_wsDone) then { if (count _worldspace >= 1) then { _dir = _worldspace select 0; }; _pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos; if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; }; diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos)); }; if (_damage < 1) then { //diag_log format["OBJ: %1 - %2", _idKey,_type]; //Create it _object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"]; _object setVariable ["lastUpdate",time]; _object setVariable ["ObjectID", _idKey, true]; _lockable = 0; if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then { _lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable"); }; // fix for leading zero issues on safe codes after restart if (_lockable == 4) then { _codeCount = (count (toArray _ownerID)); if(_codeCount == 3) then { _ownerID = format["0%1", _ownerID]; }; if(_codeCount == 2) then { _ownerID = format["00%1", _ownerID]; }; if(_codeCount == 1) then { _ownerID = format["000%1", _ownerID]; }; }; if (_lockable == 3) then { _codeCount = (count (toArray _ownerID)); if(_codeCount == 2) then { _ownerID = format["0%1", _ownerID]; }; if(_codeCount == 1) then { _ownerID = format["00%1", _ownerID]; }; }; _object setVariable ["CharacterID", _ownerID, true]; clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; if ((typeOf _object) in dayz_allowedObjects) then { _object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}]; // Test disabling simulation server side on buildables only. _object enableSimulation false; // used for inplace upgrades and lock/unlock of safe _object setVariable ["OEMPos", _pos, true]; }; _object setdir _dir; _object setpos _pos; _object setDamage _damage; // ### [CPC] Indestructible Buildables Fix if (typeOf(_object) in _cpcimmune) then { _object addEventHandler ["HandleDamage", {false}]; _object enableSimulation false; }; // ### [CPC] Indestructible Buildables Fix if (count _intentory > 0) then { if (_type in DZE_LockedStorage) then { // Fill variables with loot _object setVariable ["WeaponCargo", (_intentory select 0), true]; _object setVariable ["MagazineCargo", (_intentory select 1), true]; _object setVariable ["BackpackCargo", (_intentory select 2), true]; } else { //Add weapons _objWpnTypes = (_intentory select 0) select 0; _objWpnQty = (_intentory select 0) select 1; _countr = 0; { if (_x == "Crossbow") then { _x = "Crossbow_DZ" }; // Convert Crossbow to Crossbow_DZ _isOK = isClass(configFile >> "CfgWeapons" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgWeapons" >> _x >> "stopThis") == 1; if (!_block) then { _object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; //Add Magazines _objWpnTypes = (_intentory select 1) select 0; _objWpnQty = (_intentory select 1) select 1; _countr = 0; { if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow if (_x == "ItemTent") then { _x = "ItemTentOld" }; _isOK = isClass(configFile >> "CfgMagazines" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgMagazines" >> _x >> "stopThis") == 1; if (!_block) then { _object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; //Add Backpacks _objWpnTypes = (_intentory select 2) select 0; _objWpnQty = (_intentory select 2) select 1; _countr = 0; { _isOK = isClass(configFile >> "CfgVehicles" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgVehicles" >> _x >> "stopThis") == 1; if (!_block) then { _object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; }; }; if (_object isKindOf "AllVehicles") then { { _selection = _x select 0; _dam = _x select 1; if (_selection in dayZ_explosiveParts and _dam > 0.8) then {_dam = 0.8}; [_object,_selection,_dam] call object_setFixServer; } forEach _hitpoints; _object setFuel _fuel; if (!((typeOf _object) in dayz_allowedObjects)) then { _object setvelocity [0,0,1]; _object call fnc_veh_ResetEH; if(_ownerID != "0") then { _object setvehiclelock "locked"; }; _totalvehicles = _totalvehicles + 1; // total each vehicle serverVehicleCounter set [count serverVehicleCounter,_type]; }; }; //Monitor the object dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; }; } forEach _objectArray; // # END OF STREAMING # // preload server traders menu data into cache { // get tids _traderData = call compile format["menu_%1;",_x]; if(!isNil "_traderData") then { { _traderid = _x select 1; _retrader = []; _key = format["CHILD:399:%1:",_traderid]; _data = "HiveEXT" callExtension _key; //diag_log "HIVE: Request sent"; //Process result _result = call compile format ["%1",_data]; _status = _result select 0; if (_status == "ObjectStreamStart") then { _val = _result select 1; //Stream Objects //diag_log ("HIVE: Commence Menu Streaming..."); call compile format["ServerTcache_%1 = [];",_traderid]; for "_i" from 1 to _val do { _data = "HiveEXT" callExtension _key; _result = call compile format ["%1",_data]; call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result]; _retrader set [count _retrader,_result]; }; //diag_log ("HIVE: Streamed " + str(_val) + " objects"); }; } forEach (_traderData select 0); }; } forEach serverTraders; // spawn_vehicles _vehLimit = MaxVehicleLimit - _totalvehicles; diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit)); if(_vehLimit > 0) then { for "_x" from 1 to _vehLimit do { [] spawn spawn_vehicles; }; }; // spawn_roadblocks diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris)); for "_x" from 1 to MaxDynamicDebris do { [] spawn spawn_roadblocks; }; if(isnil "dayz_MapArea") then { dayz_MapArea = 10000; }; if(isnil "HeliCrashArea") then { HeliCrashArea = dayz_MapArea / 2; }; if(isnil "OldHeliCrash") then { OldHeliCrash = false; }; allowConnection = true; // [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire] if(OldHeliCrash) then { nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', HeliCrashArea, true, false] spawn server_spawnCrashSite; }; if (isDedicated) then { // Epoch Events _id = [] spawn server_spawnEvents; // server cleanup _id = [] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm"; }; sm_done = true; publicVariable "sm_done"; }; Link to comment Share on other sites More sharing options...
Razorman Posted September 30, 2013 Report Share Posted September 30, 2013 Any help appreciated thanks Link to comment Share on other sites More sharing options...
ToejaM Posted October 1, 2013 Author Report Share Posted October 1, 2013 You have: if ((count playableUnits == 0) and !isDedicated) then { if ((count playableUnits == 0) and !isDedicated) then { There should only be one, so remove one of them. If you still have the problem, make a paste in http://pastebin.com/ - makes it easier for people to read and we can quote line numbers back to you. its a little late but that was the first problem I saw, check the rest of your code for similar duplicates. Link to comment Share on other sites More sharing options...
neiljb Posted October 3, 2013 Report Share Posted October 3, 2013 Hi, I seem to be having a small problem with the indestructible modular items. They behave as expected and become indestructible after restart, but after about 6 days they begin to be cleaned up. I suspect its cleanup doing it as the items always disappear in the exact order they were placed and over the course of a couple of days (the time it took to build the base). I have adjusted my cleanup setting to 30 days but it seems to happen after 6 or so dayz. This is how my HiveExt.ini is set; ;Which table should the objects be stored and fetched from ? ;Table = Object_DATA ;Negative values will disable this feature ;0 means that ALL empty placed items will be deleted every server restart ;A positive number is how old (in days) a placed empty item must be, in order for it to be deleted ;CleanupPlacedAfterDays = 30 ;Flag indicating whether hiveext should detect vehicles out of map boundaries (X < 0, or Y > 15360) and reset their position to [] ;Note: YOU MUST have a proper dayz_server.pbo that supports this feature, otherwise you will get script errors ;You can find that file under the SQF directory for your server version ;ResetOOBVehicles = false ;If using OFFICIAL hive, the settings in this section have no effect, it will manage objects on its own And this is my server_monitor.sqf private ["_result","_pos","_wsDone","_dir","_block","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_date","_script","_key","_outcome","_vehLimit","_hiveResponse","_objectCount","_codeCount","_objectArray","_year","_month","_day","_hour","_minute","_data","_status","_val","_traderid","_retrader","_traderData","_id"]; []execVM "\z\addons\dayz_server\system\s_fps.sqf"; //server monitor FPS (writes each ~181s diag_fps+181s diag_fpsmin*) dayz_versionNo = getText(configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_hiveVersionNo = getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); _script = getText(missionConfigFile >> "onPauseScript"); // ### [CPC] Indestructible Buildables Fix _cpcimmune =[ "WoodFloor_DZ", "WoodFloorHalf_DZ", "WoodFloorQuarter_DZ", "Land_DZE_LargeWoodDoorLocked", "WoodLargeWallDoor_DZ", "WoodLargeWallWin_DZ", "WoodLargeWall_DZ", "Land_DZE_WoodDoorLocked", "WoodSmallWallDoor_DZ", "WoodSmallWallWin_DZ", "Land_DZE_GarageWoodDoor", "Land_DZE_GarageWoodDoorLocked", "WoodLadder_DZ", "WoodStairsSans_DZ", "WoodStairs_DZ", "WoodSmallWall_DZ", "WoodSmallWallThird_DZ", "CinderWallHalf_DZ", "CinderWall_DZ", "CinderWallDoorway_DZ", "Land_DZE_LargeWoodDoor", "MetalFloor_DZ", "CinderWallDoorSmallLocked_DZ", "CinderWallSmallDoorway_DZ", "CinderWallDoor_DZ", "CinderWallDoorLocked_DZ", "LightPole_DZ" ]; // ### [CPC] Indestructible Buildables Fix if ((count playableUnits == 0) and !isDedicated) then { isSinglePlayer = true; }; waitUntil{initialized}; //means all the functions are now defined diag_log "HIVE: Starting"; waituntil{isNil "sm_done"}; // prevent server_monitor be called twice (bug during login of the first player) //Set the Time //Send request _key = "CHILD:307:"; _result = _key call server_hiveReadWrite; _outcome = _result select 0; if(_outcome == "PASS") then { _date = _result select 1; if(dayz_fullMoonNights) then { //date setup _year = _date select 0; _month = _date select 1; _day = _date select 2; _hour = _date select 3; _minute = _date select 4; //Force full moon nights _date = [2012,6,6,_hour,_minute]; }; if(isDedicated) then { setDate _date; dayzSetDate = _date; publicVariable "dayzSetDate"; }; diag_log ("HIVE: Local Time set to " + str(_date)); }; // Custom Configs if(isnil "MaxVehicleLimit") then { MaxVehicleLimit = 50; }; if(isnil "MaxHeliCrashes") then { MaxHeliCrashes = 5; }; if(isnil "MaxDynamicDebris") then { MaxDynamicDebris = 100; }; // Custon Configs End if (isServer and isNil "sm_done") then { serverVehicleCounter = []; _hiveResponse = []; for "_i" from 1 to 5 do { diag_log "HIVE: trying to get objects"; _key = format["CHILD:302:%1:", dayZ_instance]; _hiveResponse = _key call server_hiveReadWrite; if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")})) then { diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse)); _hiveResponse = ["",0]; } else { diag_log ("HIVE: found "+str(_hiveResponse select 1)+" objects" ); _i = 99; // break }; }; _objectArray = []; if ((_hiveResponse select 0) == "ObjectStreamStart") then { _objectCount = _hiveResponse select 1; diag_log ("HIVE: Commence Object Streaming..."); for "_i" from 1 to _objectCount do { _hiveResponse = _key call server_hiveReadWrite; _objectArray set [_i - 1, _hiveResponse]; //diag_log (format["HIVE dbg %1 %2", typeName _hiveResponse, _hiveResponse]); }; diag_log ("HIVE: got " + str(count _objectArray) + " objects"); }; // # START OF STREAMING # _countr = 0; _totalvehicles = 0; { //Parse Array _countr = _countr + 1; _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _intentory= _x select 5; _hitPoints= _x select 6; _fuel = _x select 7; _damage = _x select 8; _dir = 0; _pos = [0,0,0]; _wsDone = false; if (count _worldspace >= 2) then { _dir = _worldspace select 0; if (count (_worldspace select 1) == 3) then { _pos = _worldspace select 1; _wsDone = true; } }; if (!_wsDone) then { if (count _worldspace >= 1) then { _dir = _worldspace select 0; }; _pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos; if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; }; diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos)); }; if (_damage < 1) then { //diag_log format["OBJ: %1 - %2", _idKey,_type]; //Create it _object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"]; _object setVariable ["lastUpdate",time]; _object setVariable ["ObjectID", _idKey, true]; _lockable = 0; if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then { _lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable"); }; // fix for leading zero issues on safe codes after restart if (_lockable == 4) then { _codeCount = (count (toArray _ownerID)); if(_codeCount == 3) then { _ownerID = format["0%1", _ownerID]; }; if(_codeCount == 2) then { _ownerID = format["00%1", _ownerID]; }; if(_codeCount == 1) then { _ownerID = format["000%1", _ownerID]; }; }; if (_lockable == 3) then { _codeCount = (count (toArray _ownerID)); if(_codeCount == 2) then { _ownerID = format["0%1", _ownerID]; }; if(_codeCount == 1) then { _ownerID = format["00%1", _ownerID]; }; }; _object setVariable ["CharacterID", _ownerID, true]; clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; if ((typeOf _object) in dayz_allowedObjects) then { _object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}]; // Test disabling simulation server side on buildables only. _object enableSimulation false; // used for inplace upgrades and lock/unlock of safe _object setVariable ["OEMPos", _pos, true]; }; _object setdir _dir; _object setpos _pos; _object setDamage _damage; // ### [CPC] Indestructible Buildables Fix if (typeOf(_object) in _cpcimmune) then { _object addEventHandler ["HandleDamage", {false}]; _object enableSimulation false; }; // ### [CPC] Indestructible Buildables Fix if (count _intentory > 0) then { if (_type in DZE_LockedStorage) then { // Fill variables with loot _object setVariable ["WeaponCargo", (_intentory select 0), true]; _object setVariable ["MagazineCargo", (_intentory select 1), true]; _object setVariable ["BackpackCargo", (_intentory select 2), true]; } else { //Add weapons _objWpnTypes = (_intentory select 0) select 0; _objWpnQty = (_intentory select 0) select 1; _countr = 0; { if (_x == "Crossbow") then { _x = "Crossbow_DZ" }; // Convert Crossbow to Crossbow_DZ _isOK = isClass(configFile >> "CfgWeapons" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgWeapons" >> _x >> "stopThis") == 1; if (!_block) then { _object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; //Add Magazines _objWpnTypes = (_intentory select 1) select 0; _objWpnQty = (_intentory select 1) select 1; _countr = 0; { if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow if (_x == "ItemTent") then { _x = "ItemTentOld" }; _isOK = isClass(configFile >> "CfgMagazines" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgMagazines" >> _x >> "stopThis") == 1; if (!_block) then { _object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; //Add Backpacks _objWpnTypes = (_intentory select 2) select 0; _objWpnQty = (_intentory select 2) select 1; _countr = 0; { _isOK = isClass(configFile >> "CfgVehicles" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgVehicles" >> _x >> "stopThis") == 1; if (!_block) then { _object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; }; }; if (_object isKindOf "AllVehicles") then { { _selection = _x select 0; _dam = _x select 1; if (_selection in dayZ_explosiveParts and _dam > 0.8) then {_dam = 0.8}; [_object,_selection,_dam] call object_setFixServer; } forEach _hitpoints; _object setFuel _fuel; if (!((typeOf _object) in dayz_allowedObjects)) then { _object setvelocity [0,0,1]; _object call fnc_veh_ResetEH; if(_ownerID != "0") then { _object setvehiclelock "locked"; }; _totalvehicles = _totalvehicles + 1; // total each vehicle serverVehicleCounter set [count serverVehicleCounter,_type]; }; }; //Monitor the object dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; }; } forEach _objectArray; // # END OF STREAMING # // preload server traders menu data into cache { // get tids _traderData = call compile format["menu_%1;",_x]; if(!isNil "_traderData") then { { _traderid = _x select 1; _retrader = []; _key = format["CHILD:399:%1:",_traderid]; _data = "HiveEXT" callExtension _key; //diag_log "HIVE: Request sent"; //Process result _result = call compile format ["%1",_data]; _status = _result select 0; if (_status == "ObjectStreamStart") then { _val = _result select 1; //Stream Objects //diag_log ("HIVE: Commence Menu Streaming..."); call compile format["ServerTcache_%1 = [];",_traderid]; for "_i" from 1 to _val do { _data = "HiveEXT" callExtension _key; _result = call compile format ["%1",_data]; call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result]; _retrader set [count _retrader,_result]; }; //diag_log ("HIVE: Streamed " + str(_val) + " objects"); }; } forEach (_traderData select 0); }; } forEach serverTraders; // spawn_vehicles _vehLimit = MaxVehicleLimit - _totalvehicles; diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit)); if(_vehLimit > 0) then { for "_x" from 1 to _vehLimit do { [] spawn spawn_vehicles; }; }; // spawn_roadblocks diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris)); for "_x" from 1 to MaxDynamicDebris do { [] spawn spawn_roadblocks; }; if(isnil "dayz_MapArea") then { dayz_MapArea = 10000; }; if(isnil "HeliCrashArea") then { HeliCrashArea = dayz_MapArea / 2; }; if(isnil "OldHeliCrash") then { OldHeliCrash = false; }; allowConnection = true; // [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire] if(OldHeliCrash) then { nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', HeliCrashArea, true, false] spawn server_spawnCrashSite; }; if (isDedicated) then { // Epoch Events _id = [] spawn server_spawnEvents; // server cleanup _id = [] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm"; }; sm_done = true; publicVariable "sm_done"; }; Does anyone have any ideas whats going on? Link to comment Share on other sites More sharing options...
TheVol Posted October 3, 2013 Report Share Posted October 3, 2013 Answered this in your other post... but here you go again. in HiveExt.ini Remove the ; from this line ;CleanupPlacedAfterDays = 30 should look like this CleanupPlacedAfterDays = 30 neiljb 1 Link to comment Share on other sites More sharing options...
neiljb Posted October 3, 2013 Report Share Posted October 3, 2013 Thanks a lot man. Total rookie error on my part. :D Link to comment Share on other sites More sharing options...
wokkelwakker Posted October 5, 2013 Report Share Posted October 5, 2013 Very nice script, works perfectly. But it seems to create a conflict with this mod: http://opendayz.net/threads/release-dayzchernarus-mission-system.12169/ ATM i'm figuring out what causes the problem, but after i installed the indestructible base mod, the missions didn't start, no markers, no announcements etc. So it seems the trigger that starts everything within the mission script isn't being pulled ;p Someone has some suggestions on this one? Link to comment Share on other sites More sharing options...
Kimzer Posted October 8, 2013 Report Share Posted October 8, 2013 Will the servers auto cleanup function remove the builds even tho they are indestructible? I believe so, and how would i get around that? Link to comment Share on other sites More sharing options...
LimpNoodle Posted October 8, 2013 Report Share Posted October 8, 2013 Very nice script, works perfectly. But it seems to create a conflict with this mod: http://opendayz.net/threads/release-dayzchernarus-mission-system.12169/ ATM i'm figuring out what causes the problem, but after i installed the indestructible base mod, the missions didn't start, no markers, no announcements etc. So it seems the trigger that starts everything within the mission script isn't being pulled ;p Someone has some suggestions on this one? Both of them work perfectly fine together. You must have made a mistake somewhere Link to comment Share on other sites More sharing options...
Asian Kid Posted October 10, 2013 Report Share Posted October 10, 2013 Paste Bin plz!!!!! Link to comment Share on other sites More sharing options...
Mr.Pig Posted October 12, 2013 Report Share Posted October 12, 2013 Hopefully someone here can help me.... I am running Dayz Epoch 1.0.2.3 and I am having troubles getting part 1 to work. I edit the "server_monitor.sqf" as stated in the @Dayz_Epoch_Server/addons/dayz_server.pbo and every time I repack and upload to server it just hangs in "waiting for server to send authentication" and then sometimes just go to debug. Tried for 2 dayz now and have been reading through other posts and can't seem to find anyone having the issue I have. I am using PBO Manager v1.4 beta to unpack and repack Thanks in advance to anyone able to help! private ["_result","_pos","_wsDone","_dir","_block","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_date","_script","_key","_outcome","_vehLimit","_hiveResponse","_objectCount","_codeCount","_objectArray","_year","_month","_day","_hour","_minute","_data","_status","_val","_traderid","_retrader","_traderData","_id"]; []execVM "\z\addons\dayz_server\system\s_fps.sqf"; //server monitor FPS (writes each ~181s diag_fps+181s diag_fpsmin*) dayz_versionNo = getText(configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_hiveVersionNo = getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); _script = getText(missionConfigFile >> "onPauseScript"); // ### [CPC] Indestructible Buildables Fix _cpcimmune =[ "WoodFloor_DZ", "WoodFloorHalf_DZ", "WoodFloorQuarter_DZ", "Land_DZE_LargeWoodDoorLocked", "WoodLargeWallDoor_DZ", "WoodLargeWallWin_DZ", "WoodLargeWall_DZ", "Land_DZE_WoodDoorLocked", "WoodSmallWallDoor_DZ", "WoodSmallWallWin_DZ", "Land_DZE_GarageWoodDoor", "Land_DZE_GarageWoodDoorLocked", "WoodLadder_DZ", "WoodStairsSans_DZ", "WoodStairs_DZ", "WoodSmallWall_DZ", "WoodSmallWallThird_DZ", "CinderWallHalf_DZ", "CinderWall_DZ", "CinderWallDoorway_DZ", "Land_DZE_LargeWoodDoor", "MetalFloor_DZ", "CinderWallDoorSmallLocked_DZ", "CinderWallSmallDoorway_DZ", "CinderWallDoor_DZ" ]; // ### [CPC] Indestructible Buildables Fix if ((count playableUnits == 0) and !isDedicated) then { isSinglePlayer = true; }; waitUntil{initialized}; //means all the functions are now defined diag_log "HIVE: Starting"; waituntil{isNil "sm_done"}; // prevent server_monitor be called twice (bug during login of the first player) //Set the Time //Send request _key = "CHILD:307:"; _result = _key call server_hiveReadWrite; _outcome = _result select 0; if(_outcome == "PASS") then { _date = _result select 1; if(dayz_fullMoonNights) then { //date setup _year = _date select 0; _month = _date select 1; _day = _date select 2; _hour = _date select 3; _minute = _date select 4; //Force full moon nights _date = [2012,6,6,_hour,_minute]; }; if(isDedicated) then { setDate _date; dayzSetDate = _date; publicVariable "dayzSetDate"; }; diag_log ("HIVE: Local Time set to " + str(_date)); }; // Custom Configs if(isnil "MaxVehicleLimit") then { MaxVehicleLimit = 50; }; if(isnil "MaxHeliCrashes") then { MaxHeliCrashes = 5; }; if(isnil "MaxDynamicDebris") then { MaxDynamicDebris = 100; }; // Custon Configs End if (isServer and isNil "sm_done") then { serverVehicleCounter = []; _hiveResponse = []; for "_i" from 1 to 5 do { diag_log "HIVE: trying to get objects"; _key = format["CHILD:302:%1:", dayZ_instance]; _hiveResponse = _key call server_hiveReadWrite; if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")})) then { diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse)); _hiveResponse = ["",0]; } else { diag_log ("HIVE: found "+str(_hiveResponse select 1)+" objects" ); _i = 99; // break }; }; _objectArray = []; if ((_hiveResponse select 0) == "ObjectStreamStart") then { _objectCount = _hiveResponse select 1; diag_log ("HIVE: Commence Object Streaming..."); for "_i" from 1 to _objectCount do { _hiveResponse = _key call server_hiveReadWrite; _objectArray set [_i - 1, _hiveResponse]; //diag_log (format["HIVE dbg %1 %2", typeName _hiveResponse, _hiveResponse]); }; diag_log ("HIVE: got " + str(count _objectArray) + " objects"); }; // # START OF STREAMING # _countr = 0; _totalvehicles = 0; { //Parse Array _countr = _countr + 1; _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _intentory= _x select 5; _hitPoints= _x select 6; _fuel = _x select 7; _damage = _x select 8; _dir = 0; _pos = [0,0,0]; _wsDone = false; if (count _worldspace >= 2) then { _dir = _worldspace select 0; if (count (_worldspace select 1) == 3) then { _pos = _worldspace select 1; _wsDone = true; } }; if (!_wsDone) then { if (count _worldspace >= 1) then { _dir = _worldspace select 0; }; _pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos; if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; }; diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos)); }; if (_damage < 1) then { //diag_log format["OBJ: %1 - %2", _idKey,_type]; //Create it _object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"]; _object setVariable ["lastUpdate",time]; _object setVariable ["ObjectID", _idKey, true]; _lockable = 0; if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then { _lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable"); }; // fix for leading zero issues on safe codes after restart if (_lockable == 4) then { _codeCount = (count (toArray _ownerID)); if(_codeCount == 3) then { _ownerID = format["0%1", _ownerID]; }; if(_codeCount == 2) then { _ownerID = format["00%1", _ownerID]; }; if(_codeCount == 1) then { _ownerID = format["000%1", _ownerID]; }; }; if (_lockable == 3) then { _codeCount = (count (toArray _ownerID)); if(_codeCount == 2) then { _ownerID = format["0%1", _ownerID]; }; if(_codeCount == 1) then { _ownerID = format["00%1", _ownerID]; }; }; _object setVariable ["CharacterID", _ownerID, true]; clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; if ((typeOf _object) in dayz_allowedObjects) then { _object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}]; // Test disabling simulation server side on buildables only. _object enableSimulation false; // used for inplace upgrades and lock/unlock of safe _object setVariable ["OEMPos", _pos, true]; }; _object setdir _dir; _object setpos _pos; _object setDamage _damage; // ### [CPC] Indestructible Buildables Fix if (typeOf(_object) in _cpcimmune) then { _object addEventHandler ["HandleDamage", {false}]; _object enableSimulation false; }; // ### [CPC] Indestructible Buildables Fix if (count _intentory > 0) then { if (_type in DZE_LockedStorage) then { // Fill variables with loot _object setVariable ["WeaponCargo", (_intentory select 0), true]; _object setVariable ["MagazineCargo", (_intentory select 1), true]; _object setVariable ["BackpackCargo", (_intentory select 2), true]; } else { //Add weapons _objWpnTypes = (_intentory select 0) select 0; _objWpnQty = (_intentory select 0) select 1; _countr = 0; { if (_x == "Crossbow") then { _x = "Crossbow_DZ" }; // Convert Crossbow to Crossbow_DZ _isOK = isClass(configFile >> "CfgWeapons" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgWeapons" >> _x >> "stopThis") == 1; if (!_block) then { _object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; //Add Magazines _objWpnTypes = (_intentory select 1) select 0; _objWpnQty = (_intentory select 1) select 1; _countr = 0; { if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow if (_x == "ItemTent") then { _x = "ItemTentOld" }; _isOK = isClass(configFile >> "CfgMagazines" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgMagazines" >> _x >> "stopThis") == 1; if (!_block) then { _object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; //Add Backpacks _objWpnTypes = (_intentory select 2) select 0; _objWpnQty = (_intentory select 2) select 1; _countr = 0; { _isOK = isClass(configFile >> "CfgVehicles" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgVehicles" >> _x >> "stopThis") == 1; if (!_block) then { _object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)]; }; }; _countr = _countr + 1; } forEach _objWpnTypes; }; }; if (_object isKindOf "AllVehicles") then { { _selection = _x select 0; _dam = _x select 1; if (_selection in dayZ_explosiveParts and _dam > 0.8) then {_dam = 0.8}; [_object,_selection,_dam] call object_setFixServer; } forEach _hitpoints; _object setFuel _fuel; if (!((typeOf _object) in dayz_allowedObjects)) then { _object setvelocity [0,0,1]; _object call fnc_veh_ResetEH; if(_ownerID != "0") then { _object setvehiclelock "locked"; }; _totalvehicles = _totalvehicles + 1; // total each vehicle serverVehicleCounter set [count serverVehicleCounter,_type]; }; }; //Monitor the object dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; }; } forEach _objectArray; // # END OF STREAMING # // preload server traders menu data into cache { // get tids _traderData = call compile format["menu_%1;",_x]; if(!isNil "_traderData") then { { _traderid = _x select 1; _retrader = []; _key = format["CHILD:399:%1:",_traderid]; _data = "HiveEXT" callExtension _key; //diag_log "HIVE: Request sent"; //Process result _result = call compile format ["%1",_data]; _status = _result select 0; if (_status == "ObjectStreamStart") then { _val = _result select 1; //Stream Objects //diag_log ("HIVE: Commence Menu Streaming..."); call compile format["ServerTcache_%1 = [];",_traderid]; for "_i" from 1 to _val do { _data = "HiveEXT" callExtension _key; _result = call compile format ["%1",_data]; call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result]; _retrader set [count _retrader,_result]; }; //diag_log ("HIVE: Streamed " + str(_val) + " objects"); }; } forEach (_traderData select 0); }; } forEach serverTraders; // spawn_vehicles _vehLimit = MaxVehicleLimit - _totalvehicles; diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit)); if(_vehLimit > 0) then { for "_x" from 1 to _vehLimit do { [] spawn spawn_vehicles; }; }; // spawn_roadblocks diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris)); for "_x" from 1 to MaxDynamicDebris do { [] spawn spawn_roadblocks; }; if(isnil "dayz_MapArea") then { dayz_MapArea = 10000; }; if(isnil "HeliCrashArea") then { HeliCrashArea = dayz_MapArea / 2; }; if(isnil "OldHeliCrash") then { OldHeliCrash = false; }; allowConnection = true; // [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire] if(OldHeliCrash) then { nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', HeliCrashArea, true, false] spawn server_spawnCrashSite; }; if (isDedicated) then { // Epoch Events _id = [] spawn server_spawnEvents; // server cleanup _id = [] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm"; }; sm_done = true; publicVariable "sm_done"; }; Link to comment Share on other sites More sharing options...
Cryten Posted October 14, 2013 Report Share Posted October 14, 2013 dosnt work for me on 1.0.2.4 Locked vehicle can not unlocked an vaults can not unlocked... can anybody help? Link to comment Share on other sites More sharing options...
dagg929 Posted October 15, 2013 Report Share Posted October 15, 2013 Is this still viable with the new patch? Anyone got it working? About to update and I'd love to know. Link to comment Share on other sites More sharing options...
Mr.Pig Posted October 15, 2013 Report Share Posted October 15, 2013 Is this still viable with the new patch? Anyone got it working? About to update and I'd love to know. I have updated server to 1.0.2.4 and I am having no issues. Link to comment Share on other sites More sharing options...
LimpNoodle Posted October 15, 2013 Report Share Posted October 15, 2013 dosnt work for me on 1.0.2.4 Locked vehicle can not unlocked an vaults can not unlocked... can anybody help? I think you changed the wrong part in PART3: Prevent Maintenance Exploit Remember there is now a // downgrade system section also for removing locks. Don't change this section. You need to change the "// inplace maintenance tool" part of the if like this: // downgrade system if((_isDestructable or _cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" or _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base") and (DZE_Lock_Door == _ownerID)) then { if ((s_player_lastTarget select 1) != _cursorTarget) then { if (s_player_downgrade_build > 0) then { player removeAction s_player_downgrade_build; s_player_downgrade_build = -1; }; }; if (s_player_downgrade_build < 0) then { s_player_lastTarget set [1,_cursorTarget]; s_player_downgrade_build = player addAction [format["Remove Lock from %1",_text], "\z\addons\dayz_code\actions\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""]; }; } else { player removeAction s_player_downgrade_build; s_player_downgrade_build = -1; }; // inplace maintenance tool if((_cursorTarget isKindOf "ModularItems" or _cursorTarget isKindOf "DZE_Housebase") and (damage _cursorTarget >= 0.1)) then { if ((s_player_lastTarget select 2) != _cursorTarget) then { if (s_player_maint_build > 0) then { player removeAction s_player_maint_build; s_player_maint_build = -1; }; }; if (s_player_maint_build < 0) then { s_player_lastTarget set [2,_cursorTarget]; // ### [CPC] Maintenance Fix s_player_maint_build = player addAction [format["Maintain %1",_text], "fixes\cpcmaintfix.sqf",_cursorTarget, -2, false, true, "",""]; // ### [CPC] Maintenance Fix }; } else { Hope I wrote that right atm Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now