houst Posted May 26, 2021 Report Share Posted May 26, 2021 2 hours ago, MickPark said: Hi I recently installed this on my DZE 1.0.7 server and nothing is happening, i have followed the instructions for installing this on the server and played for a few hours but no missions have spawned and nothing is out put to the web console. as far as i can tell its like the server is ignoring this line "execVM "\z\addons\dayz_server\WAI\init.sqf"; I'm hosting on GTX if that has an impact. it worked on an older server but not since the upgrade. Thanks for any help Hi, im using GTX with wai and 1.0.7 and it works for me.. can you put exactly where ur calling the wai from Link to comment Share on other sites More sharing options...
MickPark Posted May 26, 2021 Report Share Posted May 26, 2021 3 hours ago, houst said: Hi, im using GTX with wai and 1.0.7 and it works for me.. can you put exactly where ur calling the wai from its curently in this location \dayz_server\system\server_monitor.sqf I have posted all the code from before it and the call line i added to the server are at the very bottom Spoiler private ["_legacyStreamingMethod","_hiveLoaded","_timeStart","_i","_key","_result","_shutdown","_res","_myArray","_val","_status","_fileName","_lastFN", "_VehicleQueue","_vQty","_idKey","_type","_ownerID","_worldspace","_inventory","_damage","_storageMoney","_vector","_vecExists","_ownerPUID", "_wsCount","_ws2TN","_ws3TN","_dir","_posATL","_wsDone","_object","_doorLocked","_isPlot","_isTrapItem","_isSafeObject", "_weaponcargo","_magcargo","_backpackcargo","_weaponqty","_magqty","_backpackqty","_lockable","_codeCount","_codeCount","_isTrapItem","_xTypeName","_x1", "_isAir","_selection","_dam","_hitpoints","_fuel","_pos"]; #include "\z\addons\dayz_server\compile\server_toggle_debug.hpp" waitUntil {!isNil "BIS_MPF_InitDone" && initialized}; if (!isNil "sm_done") exitWith {}; // prevent server_monitor be called twice (bug during login of the first player) sm_done = false; _legacyStreamingMethod = false; //use old object streaming method, more secure but will be slower and subject to the callExtension return size limitation. dayz_serverIDMonitor = []; dayz_versionNo = getText (configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_hiveVersionNo = getNumber (configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); _hiveLoaded = false; _serverVehicleCounter = []; diag_log "HIVE: Starting"; //Stream in objects /* STREAM OBJECTS */ //Send the key _timeStart = diag_tickTime; for "_i" from 1 to 5 do { diag_log "HIVE: trying to get objects"; _key = format["CHILD:302:%1:%2:",dayZ_instance, _legacyStreamingMethod]; _result = _key call server_hiveReadWrite; if (typeName _result == "STRING") then { _shutdown = format["CHILD:400:%1:",(profileNamespace getVariable "SUPERKEY")]; _res = _shutdown call server_hiveReadWrite; diag_log ("HIVE: attempt to kill.. HiveExt response:"+str(_res)); } else { diag_log ("HIVE: found "+str(_result select 1)+" objects" ); _i = 99; // break }; }; if (typeName _result == "STRING") exitWith { diag_log "HIVE: Connection error. Server_monitor.sqf is exiting."; }; diag_log "HIVE: Request sent"; _myArray = []; _val = 0; _status = _result select 0; //Process result _val = _result select 1; if (_legacyStreamingMethod) then { if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; //Stream Objects diag_log ("HIVE: Commence Object Streaming..."); for "_i" from 1 to _val do { _result = _key call server_hiveReadWriteLarge; _status = _result select 0; _myArray set [count _myArray,_result]; }; }; } else { if (_val > 0) then { _fileName = _key call server_hiveReadWrite; _lastFN = profileNamespace getVariable["lastFN",""]; profileNamespace setVariable["lastFN",_fileName]; saveProfileNamespace; if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; _myArray = Call Compile PreProcessFile _fileName; _key = format["CHILD:302:%1:%2:",_lastFN, _legacyStreamingMethod]; _result = _key call server_hiveReadWrite; //deletes previous object data dump }; } else { if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; }; }; }; //Stream objects first then load in the vehicles _VehicleQueue = []; _vQty = 0; diag_log ("HIVE: Streamed " + str(count _myArray) + " Objects."); // Don't spawn objects if no clients are online (createVehicle fails with Ref to nonnetwork object) if ((playersNumber west + playersNumber civilian) == 0) exitWith { diag_log "All clients disconnected. Server_monitor.sqf is exiting."; }; //spawn objects { //Parse Array _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _inventory = _x select 5; _damage = _x select 8; _storageMoney = _x select 9; if ((_type isKindOf "AllVehicles")) then { _VehicleQueue set [_vQty,_x]; _vQty = _vQty + 1; } else { _dir = 90; _pos = [0,0,0]; _wsDone = false; _wsCount = count _worldspace; //Vector building _vector = [[0,0,0],[0,0,0]]; _vecExists = false; _ownerPUID = "0"; call { if (_wsCount == 4) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; _ws2TN = typename (_worldspace select 2); _ws3TN = typename (_worldspace select 3); if (_ws3TN == "STRING") then { _ownerPUID = _worldspace select 3; } else { if (_ws2TN == "STRING") then { _ownerPUID = _worldspace select 2; }; }; if (_ws2TN == "ARRAY") then { _vector = _worldspace select 2; _vecExists = true; } else { if (_ws3TN == "ARRAY") then { _vector = _worldspace select 3; _vecExists = true; }; }; }; if (_wsCount == 3) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; _ws2TN = typename (_worldspace select 2); _ws3TN = typename (_worldspace select 3); if (_ws2TN == "STRING") then { _ownerPUID = _worldspace select 2; } else { if (_ws2TN == "ARRAY") then { _vector = _worldspace select 2; _vecExists = true; }; }; }; if (_wsCount == 2) then { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; }; if (_wsCount < 2) exitwith { _worldspace set [count _worldspace, "0"]; }; }; if (!_wsDone) then { if ((count _posATL) >= 2) then { _pos = [_posATL select 0,_posATL select 1,0]; diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: %4",_idKey,_type,_worldspace,_pos]; } else { diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: [0,0,0]",_idKey,_type,_worldspace]; }; }; _object = _type createVehicle [0,0,0]; //more than 2x faster than createvehicle array _object setDir _dir; _object setPosATL _pos; _object setDamage _damage; if (_vecExists) then { _object setVectorDirAndUp _vector; }; _object enableSimulation false; _doorLocked = _type in DZE_DoorsLocked; _isPlot = _type == "Plastic_Pole_EP1_DZ"; // prevent immediate hive write when vehicle parts are set up _object setVariable ["lastUpdate",diag_ticktime]; _object setVariable ["ObjectID", _idKey, true]; _object setVariable ["OwnerPUID", _ownerPUID, true]; if (Z_SingleCurrency && {_type in DZE_MoneyStorageClasses}) then { _object setVariable ["cashMoney", _storageMoney, true]; }; dayz_serverIDMonitor set [count dayz_serverIDMonitor,_idKey]; if (!_wsDone) then {[_object,"position",true] call server_updateObject;}; if (_type == "Base_Fire_DZ") then {_object spawn base_fireMonitor;}; _isTrapItem = _object isKindOf "TrapItems"; _isSafeObject = _type in DayZ_SafeObjects; //Dont add inventory for traps. if (!_isTrapItem) then { clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; clearBackpackCargoGlobal _object; if( (count _inventory > 0) && !_isPlot && !_doorLocked) then { if (_type in DZE_LockedStorage) then { // Do not send big arrays over network! Only server needs these _object setVariable ["WeaponCargo",(_inventory select 0),false]; _object setVariable ["MagazineCargo",(_inventory select 1),false]; _object setVariable ["BackpackCargo",(_inventory select 2),false]; } else { _weaponcargo = _inventory select 0 select 0; _magcargo = _inventory select 1 select 0; _backpackcargo = _inventory select 2 select 0; _weaponqty = _inventory select 0 select 1; {_object addWeaponCargoGlobal [_x, _weaponqty select _foreachindex];} foreach _weaponcargo; _magqty = _inventory select 1 select 1; {if (_x != "CSGAS") then {_object addMagazineCargoGlobal [_x, _magqty select _foreachindex];};} foreach _magcargo; _backpackqty = _inventory select 2 select 1; {_object addBackpackCargoGlobal [_x, _backpackqty select _foreachindex];} foreach _backpackcargo; }; } else { if (DZE_permanentPlot && _isPlot) then { _object setVariable ["plotfriends", _inventory, true]; }; if (DZE_doorManagement && _doorLocked) then { _object setVariable ["doorfriends", _inventory, true]; }; }; }; // Fix for leading zero issues on safe codes after restart _lockable = getNumber (configFile >> "CfgVehicles" >> _type >> "lockable"); _codeCount = count (toArray _ownerID); call { if (_lockable == 4) exitwith { call { if (_codeCount == 3) exitwith {_ownerID = format["0%1",_ownerID];}; if (_codeCount == 2) exitwith {_ownerID = format["00%1",_ownerID];}; if (_codeCount == 1) exitwith {_ownerID = format["000%1",_ownerID];}; }; }; if (_lockable == 3) exitwith { call { if (_codeCount == 2) exitwith {_ownerID = format["0%1",_ownerID];}; if (_codeCount == 1) exitwith {_ownerID = format["00%1",_ownerID];}; }; }; }; _object setVariable ["CharacterID", _ownerID, true]; if (_isSafeObject && !_isTrapItem) then { _object setVariable["memDir",_dir,true]; if (DZE_GodModeBase && {!(_type in DZE_GodModeBaseExclude)}) then { _object addEventHandler ["HandleDamage",{false}]; } else { _object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}]; }; _object setVariable ["OEMPos",_pos,true]; // used for inplace upgrades and lock/unlock of safe } else { _object enableSimulation true; }; if (_isTrapItem) then { //Use inventory traps armed state { _xTypeName = typeName _x; if (_xTypeName == "ARRAY") then { _x1 = _x select 1; _object setVariable ["armed", _x1, true]; } else { _object setVariable ["armed", _x, true]; }; } count _inventory; }; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object }; } foreach _myArray; //spawn vehicles { //Parse Array _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _inventory = _x select 5; _hitPoints = _x select 6; _fuel = _x select 7; _damage = _x select 8; _storageMoney = _x select 9; _dir = 90; _pos = [0,0,0]; _wsDone = false; _wsCount = count _worldspace; call { if (_wsCount == 2) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; }; if (_wsCount < 2) exitwith { _worldspace set [count _worldspace, "0"]; }; }; if (!_wsDone) then { if ((count _posATL) >= 2) then { _pos = [_posATL select 0,_posATL select 1,0]; diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: %4",_idKey,_type,_worldspace,_pos]; } else { diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: [0,0,0]",_idKey,_type,_worldspace]; }; }; _object = _type createVehicle [0,0,0]; //more than 2x faster than createvehicle array _object setDir _dir; _object setPosATL _pos; _object setDamage _damage; _object enableSimulation false; // prevent immediate hive write when vehicle parts are set up _object setVariable ["lastUpdate",diag_ticktime]; _object setVariable ["ObjectID", _idKey, true]; if (Z_SingleCurrency && ZSC_VehicleMoneyStorage) then { _object setVariable ["cashMoney", _storageMoney, true]; }; dayz_serverIDMonitor set [count dayz_serverIDMonitor,_idKey]; if (!_wsDone) then {[_object,"position",true] call server_updateObject;}; clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; clearBackpackCargoGlobal _object; if (count _inventory > 0) then { _weaponcargo = _inventory select 0 select 0; _magcargo = _inventory select 1 select 0; _backpackcargo = _inventory select 2 select 0; _weaponqty = _inventory select 0 select 1; {_object addWeaponCargoGlobal [_x, _weaponqty select _foreachindex];} foreach _weaponcargo; _magqty = _inventory select 1 select 1; {if (_x != "CSGAS") then {_object addMagazineCargoGlobal [_x, _magqty select _foreachindex];};} foreach _magcargo; _backpackqty = _inventory select 2 select 1; {_object addBackpackCargoGlobal [_x, _backpackqty select _foreachindex];} foreach _backpackcargo; }; _object setVariable ["CharacterID", _ownerID, true]; _isAir = _object isKindOf "Air"; { _selection = _x select 0; _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); _object setHit [_selection,_dam]; } count _hitpoints; [_object,"damage"] call server_updateObject; _object setFuel _fuel; _object call fnc_veh_ResetEH; if (_ownerID != "0" && {!(_object isKindOf "Bicycle")}) then {_object setVehicleLock "locked";}; _serverVehicleCounter set [count _serverVehicleCounter,_type]; // total each vehicle _object enableSimulation true; _object setVelocity [0,0,1]; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object } foreach _VehicleQueue; diag_log ("HIVE: Streamed " + str((count _myArray) -_vQty) + " Objects and " + str(_vQty) + " Vehicles."); diag_log format["HIVE: BENCHMARK - Server_monitor.sqf finished streaming %1 objects in %2 seconds (unscheduled)",_val,diag_tickTime - _timeStart]; // # END OF STREAMING # if (dayz_townGenerator) then { call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_plantSpawner.sqf"; // Draw the pseudo random seeds }; #ifndef OBJECT_DEBUG object_debug = false; #else object_debug = true; #endif execFSM "\z\addons\dayz_server\system\server_vehicleSync.fsm"; execVM "\z\addons\dayz_server\system\scheduler\sched_init.sqf"; // launch the new task scheduler execFSM "\z\addons\dayz_server\system\server_weather.fsm"; // new weather system for 1.0.7 createCenter civilian; actualSpawnMarkerCount = 0; // count valid spawn markers, since different maps have different amounts for "_i" from 0 to 10 do { if ((getMarkerPos format["spawn%1",_i]) distance [0,0,0] > 0) then { actualSpawnMarkerCount = actualSpawnMarkerCount + 1; } else { _i = 11; // exit since we did not find any further markers }; }; diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount]; if (isDedicated) then {endLoadingScreen;}; ExecVM "\z\addons\dayz_server\WAI\init.sqf"; ExecVM "\z\addons\dayz_server\DZMS\DZMSInit.sqf"; allowConnection = true; sm_done = true; publicVariable "sm_done"; ExecVM "\z\addons\dayz_server\WAI\init.sqf"; ExecVM "\z\addons\dayz_server\DZMS\DZMSInit.sqf"; execVM "\z\addons\dayz_server\system\lit_fireplaces.sqf"; Link to comment Share on other sites More sharing options...
houst Posted May 27, 2021 Report Share Posted May 27, 2021 3 hours ago, MickPark said: its curently in this location \dayz_server\system\server_monitor.sqf I have posted all the code from before it and the call line i added to the server are at the very bottom Hide contents private ["_legacyStreamingMethod","_hiveLoaded","_timeStart","_i","_key","_result","_shutdown","_res","_myArray","_val","_status","_fileName","_lastFN", "_VehicleQueue","_vQty","_idKey","_type","_ownerID","_worldspace","_inventory","_damage","_storageMoney","_vector","_vecExists","_ownerPUID", "_wsCount","_ws2TN","_ws3TN","_dir","_posATL","_wsDone","_object","_doorLocked","_isPlot","_isTrapItem","_isSafeObject", "_weaponcargo","_magcargo","_backpackcargo","_weaponqty","_magqty","_backpackqty","_lockable","_codeCount","_codeCount","_isTrapItem","_xTypeName","_x1", "_isAir","_selection","_dam","_hitpoints","_fuel","_pos"]; #include "\z\addons\dayz_server\compile\server_toggle_debug.hpp" waitUntil {!isNil "BIS_MPF_InitDone" && initialized}; if (!isNil "sm_done") exitWith {}; // prevent server_monitor be called twice (bug during login of the first player) sm_done = false; _legacyStreamingMethod = false; //use old object streaming method, more secure but will be slower and subject to the callExtension return size limitation. dayz_serverIDMonitor = []; dayz_versionNo = getText (configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_hiveVersionNo = getNumber (configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); _hiveLoaded = false; _serverVehicleCounter = []; diag_log "HIVE: Starting"; //Stream in objects /* STREAM OBJECTS */ //Send the key _timeStart = diag_tickTime; for "_i" from 1 to 5 do { diag_log "HIVE: trying to get objects"; _key = format["CHILD:302:%1:%2:",dayZ_instance, _legacyStreamingMethod]; _result = _key call server_hiveReadWrite; if (typeName _result == "STRING") then { _shutdown = format["CHILD:400:%1:",(profileNamespace getVariable "SUPERKEY")]; _res = _shutdown call server_hiveReadWrite; diag_log ("HIVE: attempt to kill.. HiveExt response:"+str(_res)); } else { diag_log ("HIVE: found "+str(_result select 1)+" objects" ); _i = 99; // break }; }; if (typeName _result == "STRING") exitWith { diag_log "HIVE: Connection error. Server_monitor.sqf is exiting."; }; diag_log "HIVE: Request sent"; _myArray = []; _val = 0; _status = _result select 0; //Process result _val = _result select 1; if (_legacyStreamingMethod) then { if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; //Stream Objects diag_log ("HIVE: Commence Object Streaming..."); for "_i" from 1 to _val do { _result = _key call server_hiveReadWriteLarge; _status = _result select 0; _myArray set [count _myArray,_result]; }; }; } else { if (_val > 0) then { _fileName = _key call server_hiveReadWrite; _lastFN = profileNamespace getVariable["lastFN",""]; profileNamespace setVariable["lastFN",_fileName]; saveProfileNamespace; if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; _myArray = Call Compile PreProcessFile _fileName; _key = format["CHILD:302:%1:%2:",_lastFN, _legacyStreamingMethod]; _result = _key call server_hiveReadWrite; //deletes previous object data dump }; } else { if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; }; }; }; //Stream objects first then load in the vehicles _VehicleQueue = []; _vQty = 0; diag_log ("HIVE: Streamed " + str(count _myArray) + " Objects."); // Don't spawn objects if no clients are online (createVehicle fails with Ref to nonnetwork object) if ((playersNumber west + playersNumber civilian) == 0) exitWith { diag_log "All clients disconnected. Server_monitor.sqf is exiting."; }; //spawn objects { //Parse Array _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _inventory = _x select 5; _damage = _x select 8; _storageMoney = _x select 9; if ((_type isKindOf "AllVehicles")) then { _VehicleQueue set [_vQty,_x]; _vQty = _vQty + 1; } else { _dir = 90; _pos = [0,0,0]; _wsDone = false; _wsCount = count _worldspace; //Vector building _vector = [[0,0,0],[0,0,0]]; _vecExists = false; _ownerPUID = "0"; call { if (_wsCount == 4) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; _ws2TN = typename (_worldspace select 2); _ws3TN = typename (_worldspace select 3); if (_ws3TN == "STRING") then { _ownerPUID = _worldspace select 3; } else { if (_ws2TN == "STRING") then { _ownerPUID = _worldspace select 2; }; }; if (_ws2TN == "ARRAY") then { _vector = _worldspace select 2; _vecExists = true; } else { if (_ws3TN == "ARRAY") then { _vector = _worldspace select 3; _vecExists = true; }; }; }; if (_wsCount == 3) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; _ws2TN = typename (_worldspace select 2); _ws3TN = typename (_worldspace select 3); if (_ws2TN == "STRING") then { _ownerPUID = _worldspace select 2; } else { if (_ws2TN == "ARRAY") then { _vector = _worldspace select 2; _vecExists = true; }; }; }; if (_wsCount == 2) then { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; }; if (_wsCount < 2) exitwith { _worldspace set [count _worldspace, "0"]; }; }; if (!_wsDone) then { if ((count _posATL) >= 2) then { _pos = [_posATL select 0,_posATL select 1,0]; diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: %4",_idKey,_type,_worldspace,_pos]; } else { diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: [0,0,0]",_idKey,_type,_worldspace]; }; }; _object = _type createVehicle [0,0,0]; //more than 2x faster than createvehicle array _object setDir _dir; _object setPosATL _pos; _object setDamage _damage; if (_vecExists) then { _object setVectorDirAndUp _vector; }; _object enableSimulation false; _doorLocked = _type in DZE_DoorsLocked; _isPlot = _type == "Plastic_Pole_EP1_DZ"; // prevent immediate hive write when vehicle parts are set up _object setVariable ["lastUpdate",diag_ticktime]; _object setVariable ["ObjectID", _idKey, true]; _object setVariable ["OwnerPUID", _ownerPUID, true]; if (Z_SingleCurrency && {_type in DZE_MoneyStorageClasses}) then { _object setVariable ["cashMoney", _storageMoney, true]; }; dayz_serverIDMonitor set [count dayz_serverIDMonitor,_idKey]; if (!_wsDone) then {[_object,"position",true] call server_updateObject;}; if (_type == "Base_Fire_DZ") then {_object spawn base_fireMonitor;}; _isTrapItem = _object isKindOf "TrapItems"; _isSafeObject = _type in DayZ_SafeObjects; //Dont add inventory for traps. if (!_isTrapItem) then { clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; clearBackpackCargoGlobal _object; if( (count _inventory > 0) && !_isPlot && !_doorLocked) then { if (_type in DZE_LockedStorage) then { // Do not send big arrays over network! Only server needs these _object setVariable ["WeaponCargo",(_inventory select 0),false]; _object setVariable ["MagazineCargo",(_inventory select 1),false]; _object setVariable ["BackpackCargo",(_inventory select 2),false]; } else { _weaponcargo = _inventory select 0 select 0; _magcargo = _inventory select 1 select 0; _backpackcargo = _inventory select 2 select 0; _weaponqty = _inventory select 0 select 1; {_object addWeaponCargoGlobal [_x, _weaponqty select _foreachindex];} foreach _weaponcargo; _magqty = _inventory select 1 select 1; {if (_x != "CSGAS") then {_object addMagazineCargoGlobal [_x, _magqty select _foreachindex];};} foreach _magcargo; _backpackqty = _inventory select 2 select 1; {_object addBackpackCargoGlobal [_x, _backpackqty select _foreachindex];} foreach _backpackcargo; }; } else { if (DZE_permanentPlot && _isPlot) then { _object setVariable ["plotfriends", _inventory, true]; }; if (DZE_doorManagement && _doorLocked) then { _object setVariable ["doorfriends", _inventory, true]; }; }; }; // Fix for leading zero issues on safe codes after restart _lockable = getNumber (configFile >> "CfgVehicles" >> _type >> "lockable"); _codeCount = count (toArray _ownerID); call { if (_lockable == 4) exitwith { call { if (_codeCount == 3) exitwith {_ownerID = format["0%1",_ownerID];}; if (_codeCount == 2) exitwith {_ownerID = format["00%1",_ownerID];}; if (_codeCount == 1) exitwith {_ownerID = format["000%1",_ownerID];}; }; }; if (_lockable == 3) exitwith { call { if (_codeCount == 2) exitwith {_ownerID = format["0%1",_ownerID];}; if (_codeCount == 1) exitwith {_ownerID = format["00%1",_ownerID];}; }; }; }; _object setVariable ["CharacterID", _ownerID, true]; if (_isSafeObject && !_isTrapItem) then { _object setVariable["memDir",_dir,true]; if (DZE_GodModeBase && {!(_type in DZE_GodModeBaseExclude)}) then { _object addEventHandler ["HandleDamage",{false}]; } else { _object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}]; }; _object setVariable ["OEMPos",_pos,true]; // used for inplace upgrades and lock/unlock of safe } else { _object enableSimulation true; }; if (_isTrapItem) then { //Use inventory traps armed state { _xTypeName = typeName _x; if (_xTypeName == "ARRAY") then { _x1 = _x select 1; _object setVariable ["armed", _x1, true]; } else { _object setVariable ["armed", _x, true]; }; } count _inventory; }; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object }; } foreach _myArray; //spawn vehicles { //Parse Array _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _inventory = _x select 5; _hitPoints = _x select 6; _fuel = _x select 7; _damage = _x select 8; _storageMoney = _x select 9; _dir = 90; _pos = [0,0,0]; _wsDone = false; _wsCount = count _worldspace; call { if (_wsCount == 2) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; }; if (_wsCount < 2) exitwith { _worldspace set [count _worldspace, "0"]; }; }; if (!_wsDone) then { if ((count _posATL) >= 2) then { _pos = [_posATL select 0,_posATL select 1,0]; diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: %4",_idKey,_type,_worldspace,_pos]; } else { diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: [0,0,0]",_idKey,_type,_worldspace]; }; }; _object = _type createVehicle [0,0,0]; //more than 2x faster than createvehicle array _object setDir _dir; _object setPosATL _pos; _object setDamage _damage; _object enableSimulation false; // prevent immediate hive write when vehicle parts are set up _object setVariable ["lastUpdate",diag_ticktime]; _object setVariable ["ObjectID", _idKey, true]; if (Z_SingleCurrency && ZSC_VehicleMoneyStorage) then { _object setVariable ["cashMoney", _storageMoney, true]; }; dayz_serverIDMonitor set [count dayz_serverIDMonitor,_idKey]; if (!_wsDone) then {[_object,"position",true] call server_updateObject;}; clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; clearBackpackCargoGlobal _object; if (count _inventory > 0) then { _weaponcargo = _inventory select 0 select 0; _magcargo = _inventory select 1 select 0; _backpackcargo = _inventory select 2 select 0; _weaponqty = _inventory select 0 select 1; {_object addWeaponCargoGlobal [_x, _weaponqty select _foreachindex];} foreach _weaponcargo; _magqty = _inventory select 1 select 1; {if (_x != "CSGAS") then {_object addMagazineCargoGlobal [_x, _magqty select _foreachindex];};} foreach _magcargo; _backpackqty = _inventory select 2 select 1; {_object addBackpackCargoGlobal [_x, _backpackqty select _foreachindex];} foreach _backpackcargo; }; _object setVariable ["CharacterID", _ownerID, true]; _isAir = _object isKindOf "Air"; { _selection = _x select 0; _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); _object setHit [_selection,_dam]; } count _hitpoints; [_object,"damage"] call server_updateObject; _object setFuel _fuel; _object call fnc_veh_ResetEH; if (_ownerID != "0" && {!(_object isKindOf "Bicycle")}) then {_object setVehicleLock "locked";}; _serverVehicleCounter set [count _serverVehicleCounter,_type]; // total each vehicle _object enableSimulation true; _object setVelocity [0,0,1]; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object } foreach _VehicleQueue; diag_log ("HIVE: Streamed " + str((count _myArray) -_vQty) + " Objects and " + str(_vQty) + " Vehicles."); diag_log format["HIVE: BENCHMARK - Server_monitor.sqf finished streaming %1 objects in %2 seconds (unscheduled)",_val,diag_tickTime - _timeStart]; // # END OF STREAMING # if (dayz_townGenerator) then { call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_plantSpawner.sqf"; // Draw the pseudo random seeds }; #ifndef OBJECT_DEBUG object_debug = false; #else object_debug = true; #endif execFSM "\z\addons\dayz_server\system\server_vehicleSync.fsm"; execVM "\z\addons\dayz_server\system\scheduler\sched_init.sqf"; // launch the new task scheduler execFSM "\z\addons\dayz_server\system\server_weather.fsm"; // new weather system for 1.0.7 createCenter civilian; actualSpawnMarkerCount = 0; // count valid spawn markers, since different maps have different amounts for "_i" from 0 to 10 do { if ((getMarkerPos format["spawn%1",_i]) distance [0,0,0] > 0) then { actualSpawnMarkerCount = actualSpawnMarkerCount + 1; } else { _i = 11; // exit since we did not find any further markers }; }; diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount]; if (isDedicated) then {endLoadingScreen;}; ExecVM "\z\addons\dayz_server\WAI\init.sqf"; ExecVM "\z\addons\dayz_server\DZMS\DZMSInit.sqf"; allowConnection = true; sm_done = true; publicVariable "sm_done"; ExecVM "\z\addons\dayz_server\WAI\init.sqf"; ExecVM "\z\addons\dayz_server\DZMS\DZMSInit.sqf"; execVM "\z\addons\dayz_server\system\lit_fireplaces.sqf"; im assuming you removed a lot of the code and relocated at the bottom of the script? usually you would add the WAI command around line 415/416 so if i was you i would find a replacement server_monitor file and redo the script i,.e call it from line 415/416 if you look at my screenshot you will see where i mean and im sure most people who run a server would say to put it on that same line as moving things about on scripts can screw it up.. let me know how you get on! PM me direct if you want. Link to comment Share on other sites More sharing options...
MickPark Posted May 27, 2021 Report Share Posted May 27, 2021 7 hours ago, houst said: im assuming you removed a lot of the code and relocated at the bottom of the script? usually you would add the WAI command around line 415/416 so if i was you i would find a replacement server_monitor file and redo the script i,.e call it from line 415/416 if you look at my screenshot you will see where i mean and im sure most people who run a server would say to put it on that same line as moving things about on scripts can screw it up.. let me know how you get on! PM me direct if you want. Thanks for the response, I've put the full file in the spoiler bellow i cut it short last time i shared it. i did place the line in the same location as you. its interesting that in the installation guide it says you should add the execVM line above the allowconnection = "true" line but you have put it after it. I had the server running for an hour so far with this change and nothing yet. Spoiler private ["_legacyStreamingMethod","_hiveLoaded","_timeStart","_i","_key","_result","_shutdown","_res","_myArray","_val","_status","_fileName","_lastFN", "_VehicleQueue","_vQty","_idKey","_type","_ownerID","_worldspace","_inventory","_damage","_storageMoney","_vector","_vecExists","_ownerPUID", "_wsCount","_ws2TN","_ws3TN","_dir","_posATL","_wsDone","_object","_doorLocked","_isPlot","_isTrapItem","_isSafeObject", "_weaponcargo","_magcargo","_backpackcargo","_weaponqty","_magqty","_backpackqty","_lockable","_codeCount","_codeCount","_isTrapItem","_xTypeName","_x1", "_isAir","_selection","_dam","_hitpoints","_fuel","_pos"]; #include "\z\addons\dayz_server\compile\server_toggle_debug.hpp" waitUntil {!isNil "BIS_MPF_InitDone" && initialized}; if (!isNil "sm_done") exitWith {}; // prevent server_monitor be called twice (bug during login of the first player) sm_done = false; _legacyStreamingMethod = false; //use old object streaming method, more secure but will be slower and subject to the callExtension return size limitation. dayz_serverIDMonitor = []; dayz_versionNo = getText (configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_hiveVersionNo = getNumber (configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); _hiveLoaded = false; _serverVehicleCounter = []; diag_log "HIVE: Starting"; //Stream in objects /* STREAM OBJECTS */ //Send the key _timeStart = diag_tickTime; for "_i" from 1 to 5 do { diag_log "HIVE: trying to get objects"; _key = format["CHILD:302:%1:%2:",dayZ_instance, _legacyStreamingMethod]; _result = _key call server_hiveReadWrite; if (typeName _result == "STRING") then { _shutdown = format["CHILD:400:%1:",(profileNamespace getVariable "SUPERKEY")]; _res = _shutdown call server_hiveReadWrite; diag_log ("HIVE: attempt to kill.. HiveExt response:"+str(_res)); } else { diag_log ("HIVE: found "+str(_result select 1)+" objects" ); _i = 99; // break }; }; if (typeName _result == "STRING") exitWith { diag_log "HIVE: Connection error. Server_monitor.sqf is exiting."; }; diag_log "HIVE: Request sent"; _myArray = []; _val = 0; _status = _result select 0; //Process result _val = _result select 1; if (_legacyStreamingMethod) then { if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; //Stream Objects diag_log ("HIVE: Commence Object Streaming..."); for "_i" from 1 to _val do { _result = _key call server_hiveReadWriteLarge; _status = _result select 0; _myArray set [count _myArray,_result]; }; }; } else { if (_val > 0) then { _fileName = _key call server_hiveReadWrite; _lastFN = profileNamespace getVariable["lastFN",""]; profileNamespace setVariable["lastFN",_fileName]; saveProfileNamespace; if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; _myArray = Call Compile PreProcessFile _fileName; _key = format["CHILD:302:%1:%2:",_lastFN, _legacyStreamingMethod]; _result = _key call server_hiveReadWrite; //deletes previous object data dump }; } else { if (_status == "ObjectStreamStart") then { profileNamespace setVariable ["SUPERKEY",(_result select 2)]; _hiveLoaded = true; }; }; }; //Stream objects first then load in the vehicles _VehicleQueue = []; _vQty = 0; diag_log ("HIVE: Streamed " + str(count _myArray) + " Objects."); // Don't spawn objects if no clients are online (createVehicle fails with Ref to nonnetwork object) if ((playersNumber west + playersNumber civilian) == 0) exitWith { diag_log "All clients disconnected. Server_monitor.sqf is exiting."; }; //spawn objects { //Parse Array _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _inventory = _x select 5; _damage = _x select 8; _storageMoney = _x select 9; if ((_type isKindOf "AllVehicles")) then { _VehicleQueue set [_vQty,_x]; _vQty = _vQty + 1; } else { _dir = 90; _pos = [0,0,0]; _wsDone = false; _wsCount = count _worldspace; //Vector building _vector = [[0,0,0],[0,0,0]]; _vecExists = false; _ownerPUID = "0"; call { if (_wsCount == 4) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; _ws2TN = typename (_worldspace select 2); _ws3TN = typename (_worldspace select 3); if (_ws3TN == "STRING") then { _ownerPUID = _worldspace select 3; } else { if (_ws2TN == "STRING") then { _ownerPUID = _worldspace select 2; }; }; if (_ws2TN == "ARRAY") then { _vector = _worldspace select 2; _vecExists = true; } else { if (_ws3TN == "ARRAY") then { _vector = _worldspace select 3; _vecExists = true; }; }; }; if (_wsCount == 3) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; _ws2TN = typename (_worldspace select 2); _ws3TN = typename (_worldspace select 3); if (_ws2TN == "STRING") then { _ownerPUID = _worldspace select 2; } else { if (_ws2TN == "ARRAY") then { _vector = _worldspace select 2; _vecExists = true; }; }; }; if (_wsCount == 2) then { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; }; if (_wsCount < 2) exitwith { _worldspace set [count _worldspace, "0"]; }; }; if (!_wsDone) then { if ((count _posATL) >= 2) then { _pos = [_posATL select 0,_posATL select 1,0]; diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: %4",_idKey,_type,_worldspace,_pos]; } else { diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: [0,0,0]",_idKey,_type,_worldspace]; }; }; _object = _type createVehicle [0,0,0]; //more than 2x faster than createvehicle array _object setDir _dir; _object setPosATL _pos; _object setDamage _damage; if (_vecExists) then { _object setVectorDirAndUp _vector; }; _object enableSimulation false; _doorLocked = _type in DZE_DoorsLocked; _isPlot = _type == "Plastic_Pole_EP1_DZ"; // prevent immediate hive write when vehicle parts are set up _object setVariable ["lastUpdate",diag_ticktime]; _object setVariable ["ObjectID", _idKey, true]; _object setVariable ["OwnerPUID", _ownerPUID, true]; if (Z_SingleCurrency && {_type in DZE_MoneyStorageClasses}) then { _object setVariable ["cashMoney", _storageMoney, true]; }; dayz_serverIDMonitor set [count dayz_serverIDMonitor,_idKey]; if (!_wsDone) then {[_object,"position",true] call server_updateObject;}; if (_type == "Base_Fire_DZ") then {_object spawn base_fireMonitor;}; _isTrapItem = _object isKindOf "TrapItems"; _isSafeObject = _type in DayZ_SafeObjects; //Dont add inventory for traps. if (!_isTrapItem) then { clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; clearBackpackCargoGlobal _object; if( (count _inventory > 0) && !_isPlot && !_doorLocked) then { if (_type in DZE_LockedStorage) then { // Do not send big arrays over network! Only server needs these _object setVariable ["WeaponCargo",(_inventory select 0),false]; _object setVariable ["MagazineCargo",(_inventory select 1),false]; _object setVariable ["BackpackCargo",(_inventory select 2),false]; } else { _weaponcargo = _inventory select 0 select 0; _magcargo = _inventory select 1 select 0; _backpackcargo = _inventory select 2 select 0; _weaponqty = _inventory select 0 select 1; {_object addWeaponCargoGlobal [_x, _weaponqty select _foreachindex];} foreach _weaponcargo; _magqty = _inventory select 1 select 1; {if (_x != "CSGAS") then {_object addMagazineCargoGlobal [_x, _magqty select _foreachindex];};} foreach _magcargo; _backpackqty = _inventory select 2 select 1; {_object addBackpackCargoGlobal [_x, _backpackqty select _foreachindex];} foreach _backpackcargo; }; } else { if (DZE_permanentPlot && _isPlot) then { _object setVariable ["plotfriends", _inventory, true]; }; if (DZE_doorManagement && _doorLocked) then { _object setVariable ["doorfriends", _inventory, true]; }; }; }; // Fix for leading zero issues on safe codes after restart _lockable = getNumber (configFile >> "CfgVehicles" >> _type >> "lockable"); _codeCount = count (toArray _ownerID); call { if (_lockable == 4) exitwith { call { if (_codeCount == 3) exitwith {_ownerID = format["0%1",_ownerID];}; if (_codeCount == 2) exitwith {_ownerID = format["00%1",_ownerID];}; if (_codeCount == 1) exitwith {_ownerID = format["000%1",_ownerID];}; }; }; if (_lockable == 3) exitwith { call { if (_codeCount == 2) exitwith {_ownerID = format["0%1",_ownerID];}; if (_codeCount == 1) exitwith {_ownerID = format["00%1",_ownerID];}; }; }; }; _object setVariable ["CharacterID", _ownerID, true]; if (_isSafeObject && !_isTrapItem) then { _object setVariable["memDir",_dir,true]; if (DZE_GodModeBase && {!(_type in DZE_GodModeBaseExclude)}) then { _object addEventHandler ["HandleDamage",{false}]; } else { _object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}]; }; _object setVariable ["OEMPos",_pos,true]; // used for inplace upgrades and lock/unlock of safe } else { _object enableSimulation true; }; if (_isTrapItem) then { //Use inventory traps armed state { _xTypeName = typeName _x; if (_xTypeName == "ARRAY") then { _x1 = _x select 1; _object setVariable ["armed", _x1, true]; } else { _object setVariable ["armed", _x, true]; }; } count _inventory; }; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object }; } foreach _myArray; //spawn vehicles { //Parse Array _idKey = _x select 1; _type = _x select 2; _ownerID = _x select 3; _worldspace = _x select 4; _inventory = _x select 5; _hitPoints = _x select 6; _fuel = _x select 7; _damage = _x select 8; _storageMoney = _x select 9; _dir = 90; _pos = [0,0,0]; _wsDone = false; _wsCount = count _worldspace; call { if (_wsCount == 2) exitwith { _dir = _worldspace select 0; _posATL = _worldspace select 1; if (count _posATL == 3) then { _pos = _posATL; _wsDone = true; }; }; if (_wsCount < 2) exitwith { _worldspace set [count _worldspace, "0"]; }; }; if (!_wsDone) then { if ((count _posATL) >= 2) then { _pos = [_posATL select 0,_posATL select 1,0]; diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: %4",_idKey,_type,_worldspace,_pos]; } else { diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: [0,0,0]",_idKey,_type,_worldspace]; }; }; _object = _type createVehicle [0,0,0]; //more than 2x faster than createvehicle array _object setDir _dir; _object setPosATL _pos; _object setDamage _damage; _object enableSimulation false; // prevent immediate hive write when vehicle parts are set up _object setVariable ["lastUpdate",diag_ticktime]; _object setVariable ["ObjectID", _idKey, true]; if (Z_SingleCurrency && ZSC_VehicleMoneyStorage) then { _object setVariable ["cashMoney", _storageMoney, true]; }; dayz_serverIDMonitor set [count dayz_serverIDMonitor,_idKey]; if (!_wsDone) then {[_object,"position",true] call server_updateObject;}; clearWeaponCargoGlobal _object; clearMagazineCargoGlobal _object; clearBackpackCargoGlobal _object; if (count _inventory > 0) then { _weaponcargo = _inventory select 0 select 0; _magcargo = _inventory select 1 select 0; _backpackcargo = _inventory select 2 select 0; _weaponqty = _inventory select 0 select 1; {_object addWeaponCargoGlobal [_x, _weaponqty select _foreachindex];} foreach _weaponcargo; _magqty = _inventory select 1 select 1; {if (_x != "CSGAS") then {_object addMagazineCargoGlobal [_x, _magqty select _foreachindex];};} foreach _magcargo; _backpackqty = _inventory select 2 select 1; {_object addBackpackCargoGlobal [_x, _backpackqty select _foreachindex];} foreach _backpackcargo; }; _object setVariable ["CharacterID", _ownerID, true]; _isAir = _object isKindOf "Air"; { _selection = _x select 0; _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); _object setHit [_selection,_dam]; } count _hitpoints; [_object,"damage"] call server_updateObject; _object setFuel _fuel; _object call fnc_veh_ResetEH; if (_ownerID != "0" && {!(_object isKindOf "Bicycle")}) then {_object setVehicleLock "locked";}; _serverVehicleCounter set [count _serverVehicleCounter,_type]; // total each vehicle _object enableSimulation true; _object setVelocity [0,0,1]; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object } foreach _VehicleQueue; diag_log ("HIVE: Streamed " + str((count _myArray) -_vQty) + " Objects and " + str(_vQty) + " Vehicles."); diag_log format["HIVE: BENCHMARK - Server_monitor.sqf finished streaming %1 objects in %2 seconds (unscheduled)",_val,diag_tickTime - _timeStart]; // # END OF STREAMING # if (dayz_townGenerator) then { call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_plantSpawner.sqf"; // Draw the pseudo random seeds }; #ifndef OBJECT_DEBUG object_debug = false; #else object_debug = true; #endif execFSM "\z\addons\dayz_server\system\server_vehicleSync.fsm"; execVM "\z\addons\dayz_server\system\scheduler\sched_init.sqf"; // launch the new task scheduler execFSM "\z\addons\dayz_server\system\server_weather.fsm"; // new weather system for 1.0.7 createCenter civilian; actualSpawnMarkerCount = 0; // count valid spawn markers, since different maps have different amounts for "_i" from 0 to 10 do { if ((getMarkerPos format["spawn%1",_i]) distance [0,0,0] > 0) then { actualSpawnMarkerCount = actualSpawnMarkerCount + 1; } else { _i = 11; // exit since we did not find any further markers }; }; diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount]; if (isDedicated) then {endLoadingScreen;}; allowConnection = true; ExecVM "\z\addons\dayz_server\WAI\init.sqf"; ExecVM "\z\addons\dayz_server\DZMS\DZMSInit.sqf"; sm_done = true; publicVariable "sm_done"; execVM "\z\addons\dayz_server\system\lit_fireplaces.sqf"; if (_hiveLoaded) then { _serverVehicleCounter spawn { private ["_startTime","_cfgLootFile","_vehLimit"]; // spawn_vehicles // Get all buildings and roads only once. Very taxing, but only on first startup _serverVehicleCounter = _this; _vehiclesToUpdate = []; _startTime = diag_tickTime; _buildingList = []; _cfgLootFile = missionConfigFile >> "CfgLoot" >> "Buildings"; { if (isClass (_cfgLootFile >> typeOf _x)) then { _buildingList set [count _buildingList,_x]; }; } count (getMarkerPos "center" nearObjects ["building",((getMarkerSize "center") select 1)]); _roadList = getMarkerPos "center" nearRoads ((getMarkerSize "center") select 1); //diag_log format ["_serverVehicleCounter: %1",_serverVehicleCounter]; _vehLimit = MaxVehicleLimit - (count _serverVehicleCounter); if (_vehLimit > 0) then { diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit)); for "_x" from 1 to _vehLimit do {call spawn_vehicles;}; } else { diag_log "HIVE: Vehicle Spawn limit reached!"; _vehLimit = 0; }; if (dayz_townGenerator) then { // Vanilla town generator spawns debris locally on each client MaxDynamicDebris = 0; } else { // Epoch global dynamic debris diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris)); for "_x" from 1 to MaxDynamicDebris do {call spawn_roadblocks;}; }; diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes)); for "_x" from 1 to MaxAmmoBoxes do {call spawn_ammosupply;}; diag_log ("HIVE: Spawning # of Veins: " + str(MaxMineVeins)); for "_x" from 1 to MaxMineVeins do {call spawn_mineveins;}; diag_log format["HIVE: BENCHMARK - Server finished spawning %1 DynamicVehicles, %2 Debris, %3 SupplyCrates and %4 MineVeins in %5 seconds (scheduled)",_vehLimit,MaxDynamicDebris,MaxAmmoBoxes,MaxMineVeins,diag_tickTime - _startTime]; //Update gear last after all dynamic vehicles are created to save random loot to database (low priority) {[_x,"gear"] call server_updateObject} count _vehiclesToUpdate; }; }; Link to comment Share on other sites More sharing options...
JasonTM Posted June 10, 2021 Author Report Share Posted June 10, 2021 I have uploaded the fix for the exploding patrol vehicles. Just replace the whole file called vehicle_patrol.sqf. For some reason the update to CfgAISkill in 1.0.7 is causing the driver and the gunner to exit the vehicle when shot at. This fix prevents them from leaving the vehicle. https://github.com/f3cuk/WICKED-AI/blob/master/WAI/compile/vehicle_patrol.sqf Remember that the vehicle is designed to go up in flames by setting damage to full when both the driver and the gunner are dead. If you do not want the vehicle to do this then edit function wai_monitor_ai_vehicles. Take out the setDamage part. https://github.com/f3cuk/WICKED-AI/blob/master/WAI/compile/functions.sqf#L126-L137 So it's like this: wai_monitor_ai_vehicles = { { local _vehicle = _x; if (alive _vehicle && ({alive _x} count crew _vehicle > 0)) then { _vehicle setVehicleAmmo 1; _vehicle setFuel 1; }; } count _this; }; Schalldampfer 1 Link to comment Share on other sites More sharing options...
Airwaves Man Posted July 2, 2021 Report Share Posted July 2, 2021 Ive pushed a change for the fleeing AIs from the missions Link to comment Share on other sites More sharing options...
bumnutz72 Posted July 4, 2021 Report Share Posted July 4, 2021 On 7/2/2021 at 9:11 PM, A Man said: Ive pushed a change for the fleeing AIs from the missions Thanks for that, I have applied the fix and it all seems to be OK now, muchly appreciated Link to comment Share on other sites More sharing options...
Totengraeber Posted November 13, 2021 Report Share Posted November 13, 2021 Settings for AI Multiplier open the folder WAI, then to config.sqf add above this line WAI_ShowCount = true; that one WAI_multiplier = 2; // To increase the number of AI per mission, use a larger number. But be careful. Tons of AI will affect the server performance. then save and close next step open WAI/compile/spawn_group.sqf add the if !(WAI_multiplier < 0) then { _unitnumber = round (_unitnumber * WAI_multiplier); }; above this if (typeName _aitype == "ARRAY") then { _gain = _aitype select 1; _aitype = _aitype select 0; }; save and close Link to comment Share on other sites More sharing options...
[email protected] Posted January 28, 2022 Report Share Posted January 28, 2022 Skalisty Island Stronghold map without markers Link to comment Share on other sites More sharing options...
[email protected] Posted January 29, 2022 Report Share Posted January 29, 2022 WAI 2.3 static task error WAI 2.3 static task error - Server Install - Epoch Mod Community Link to comment Share on other sites More sharing options...
Bottl Posted February 18, 2022 Report Share Posted February 18, 2022 Yo guys I have a problem on my server that WAI stops spawning mission after a while. My server is set to a 4 hours restart cycle and sometimes there only spawn 2 missions or even 1 for a full cycle (Sometimes more). I want the WAI to spawn missions every 5-15 mins for the full 4 hours! Does anyone have a idea? I have an Epoch Namalsk Server, Link to comment Share on other sites More sharing options...
MickPark Posted March 10, 2022 Report Share Posted March 10, 2022 am i right in thinking that the new version of this script WICKED AI 2.2.7 no longer needs anything added to server_monitor.sqf? Ive been throught the guide and now WAI is not working Link to comment Share on other sites More sharing options...
Doggyman Posted March 27, 2022 Report Share Posted March 27, 2022 (edited) Hello together, i have a question and hope you can help me. I installed WAI and Client Side Marker Manager both from worldwidesorrow and the newest Version, but in Game on Map there is the Circle but no Info wich Mission is running. On Top it works the Mission Announcement. Has anyone a idea why it wont work with the Info or how much Ai is insde? In Config is WAI_ShowCount = true; //this will show the AI count in the mission markers. Thanks for help! Edited April 1, 2022 by Doggyman DONE Link to comment Share on other sites More sharing options...
OniTheDinosaur Posted May 18, 2022 Report Share Posted May 18, 2022 Hi, I've followed the installation process (mostly) as found on the github, but missions aren't spawning. Mostly because instead placing "aif_arma1buildings", under "chernarus" in the mission sqm I placed mine under "tavi" I've looked in the arma2oaserver.rpt and there are a bunch of errors related to WAI but I can't make sense of most of them, and they don't seem to align with any of the files i've edited. (had to upload rpt like this as it was too large) https://www.file.io/fFbk/download/c68zUeAKBkCo Link to comment Share on other sites More sharing options...
looter809 Posted May 19, 2022 Report Share Posted May 19, 2022 On 5/18/2022 at 5:14 AM, OniTheDinosaur said: Hi, I've followed the installation process (mostly) as found on the github, but missions aren't spawning. Mostly because instead placing "aif_arma1buildings", under "chernarus" in the mission sqm I placed mine under "tavi" I've looked in the arma2oaserver.rpt and there are a bunch of errors related to WAI but I can't make sense of most of them, and they don't seem to align with any of the files i've edited. (had to upload rpt like this as it was too large) https://www.file.io/fFbk/download/c68zUeAKBkCo That RPT link doesn't work. Please use something like pastebin.com Odds are you had a different issue when installing, as placing it under tavi would be correct. Link to comment Share on other sites More sharing options...
OniTheDinosaur Posted May 19, 2022 Report Share Posted May 19, 2022 2 hours ago, looter809 said: That RPT link doesn't work. Please use something like pastebin.com Odds are you had a different issue when installing, as placing it under tavi would be correct. https://pastebin.com/LuSisCE6 As I mentioned, there are a lot of errors & this is grabbed from the first mention of WAI, I am very new to this if it isn't abundantly obvious :P Link to comment Share on other sites More sharing options...
looter809 Posted May 20, 2022 Report Share Posted May 20, 2022 44 minutes ago, OniTheDinosaur said: https://pastebin.com/LuSisCE6 As I mentioned, there are a lot of errors & this is grabbed from the first mention of WAI, I am very new to this if it isn't abundantly obvious :P 20:30:28 File z\addons\dayz_server\WAI\config.sqf, line 77 20:30:28 Error in expression <2_ACOG_SD_FL_DZ","L85A2_ACOG_SD_MFL_DZ",]; That's probably your issue. Remove the comma between "L85A2_ACOG_SD_MFL_DZ" and ]; The rest of the WAI config isn't loaded after that error which causes the rest of the errors. Link to comment Share on other sites More sharing options...
OniTheDinosaur Posted May 20, 2022 Report Share Posted May 20, 2022 2 hours ago, looter809 said: 20:30:28 File z\addons\dayz_server\WAI\config.sqf, line 77 20:30:28 Error in expression <2_ACOG_SD_FL_DZ","L85A2_ACOG_SD_MFL_DZ",]; That's probably your issue. Remove the comma between "L85A2_ACOG_SD_MFL_DZ" and ]; The rest of the WAI config isn't loaded after that error which causes the rest of the errors. Cheers mate, guess I need some more practice digging through configs aha looter809 1 Link to comment Share on other sites More sharing options...
Voltan Posted July 10, 2022 Report Share Posted July 10, 2022 Will this work with epoch 1.0.7.1? Link to comment Share on other sites More sharing options...
Airwaves Man Posted July 11, 2022 Report Share Posted July 11, 2022 Yes, the AI-Systems work. Link to comment Share on other sites More sharing options...
Khyron Posted July 30, 2022 Report Share Posted July 30, 2022 Im having an issue with Missions continuing to spaw, when the server starts and I log in, all 4 missions will start <i set it for 2 bandit and 2 hero> if i complete the missions, no more missions spawn, i have these errors in the rpt log. [_hArray,_bArray,_bTime,_hTime] };> 10:39:16 Error position: <_hArray,_bArray,_bTime,_hTime] };> 10:39:16 Error Undefined variable in expression: _harray 10:39:16 File z\addons\dayz_server\system\scheduler\sched_wai.sqf, line 77 10:40:16 "SERVER FPS: 45 PLAYERS: 1" 10:40:40 "DZAI Monitor :: Server Uptime: 0:25:12. Active AI Groups: 0." 10:40:40 "DZAI Monitor :: Static Spawns: 0. Respawn Queue: 0 groups queued." 10:40:46 Error in expression <+ (wai_mission_timer select 0)) * 60; i'm using a clean downloaded copy, any ideas? /* This scheduled task checks for running WAI missions and starts them appropriately. */ sched_wai_init = { diag_log("WAI: Scheduler Started"); local _hArray = +wai_hero_missions; local _bArray = +wai_bandit_missions; local _hTime = (random((wai_mission_timer select 1) - (wai_mission_timer select 0)) + (wai_mission_timer select 0)) * 60; local _bTime = (random((wai_mission_timer select 1) - (wai_mission_timer select 0)) + (wai_mission_timer select 0)) * 60; [_hArray,_bArray,_bTime,_hTime] }; sched_wai = { local _hArray = _this select 0; local _bArray = _this select 1; local _bTime = _this select 2; local _hTime = _this select 3; local _mission = ""; // Bandit mission timer if (WAI_MarkerReady && {diag_tickTime - wai_b_starttime >= _bTime} && {b_missionsrunning < wai_bandit_limit}) then { WAI_MarkerReady = false; local _selected = false; while {!_selected} do { if (wai_debug_mode) then {diag_log format["WAI: Bandit Array: %1",_bArray];}; _mission = _bArray select (floor (random (count _bArray))); _index = [_bArray, (_mission select 0)] call BIS_fnc_findNestedElement select 0; _bArray = [_bArray,_index] call fnc_deleteAt; if (count _bArray == 0) then {_bArray = +wai_bandit_missions;}; if ((_mission select 1) >= random 1) then { _selected = true; if (wai_debug_mode) then {diag_log format["WAI: Bandit mission %1 selected.",(_mission select 0)];}; } else { if (wai_debug_mode) then {diag_log format["WAI: Bandit mission %1 NOT selected.",(_mission select 0)];}; }; }; b_missionsrunning = b_missionsrunning + 1; wai_b_starttime = diag_tickTime; wai_mission_markers set [(count wai_mission_markers), ("MainBandit" + str(count wai_mission_data))]; wai_mission_data = wai_mission_data + [[0,[],[],[],[],[],[]]]; ["MainBandit","Hero"] execVM format ["\z\addons\dayz_server\WAI\missions\missions\%1.sqf",(_mission select 0)]; }; // Hero mission timer if (WAI_MarkerReady && {diag_tickTime - wai_h_starttime >= _hTime} && {h_missionsrunning < wai_hero_limit}) then { WAI_MarkerReady = false; local _selected = false; while {!_selected} do { if (wai_debug_mode) then {diag_log format["WAI: Hero Array: %1",_hArray];}; _mission = _hArray select (floor (random (count _hArray))); _index = [_hArray, (_mission select 0)] call BIS_fnc_findNestedElement select 0; _hArray = [_hArray,_index] call fnc_deleteAt; if (count _hArray == 0) then {_hArray = +wai_hero_missions;}; if ((_mission select 1) >= random 1) then { _selected = true; if (wai_debug_mode) then {diag_log format["WAI: Hero mission %1 selected.",(_mission select 0)];}; } else { if (wai_debug_mode) then {diag_log format["WAI: Hero mission %1 NOT selected.",(_mission select 0)];}; }; }; h_missionsrunning = h_missionsrunning + 1; wai_h_starttime = diag_tickTime; wai_mission_markers set [(count wai_mission_markers), ("MainHero" + str(count wai_mission_data))]; wai_mission_data = wai_mission_data + [[0,[],[],[],[],[],[]]]; ["MainHero","Bandit"] execVM format ["\z\addons\dayz_server\WAI\missions\missions\%1.sqf",(_mission select 0)]; }; // Reset times _hTime = (random((wai_mission_timer select 1) - (wai_mission_timer select 0)) + (wai_mission_timer select 0)) * 60; _bTime = (random((wai_mission_timer select 1) - (wai_mission_timer select 0)) + (wai_mission_timer select 0)) * 60; [_hArray,_bArray,_bTime,_hTime] }; Link to comment Share on other sites More sharing options...
Troythenoob Posted August 7, 2022 Report Share Posted August 7, 2022 Just installed the script and I have it set to only allow bandit missions since it is a PVE server I am building. wai_hero_limit = 4; // define how many hero missions can run at once wai_bandit_limit = 0; // define how many bandit missions can run at once (Think I might have it backwards) But my issue is that when the missions start, It announces that heroes are extracting snippers for example, and on the map it shows Bandits snipper extraction. Did I miss something in my set up? Link to comment Share on other sites More sharing options...
Voltan Posted August 7, 2022 Report Share Posted August 7, 2022 6 hours ago, Troythenoob said: Just installed the script and I have it set to only allow bandit missions since it is a PVE server I am building. wai_hero_limit = 4; // define how many hero missions can run at once wai_bandit_limit = 0; // define how many bandit missions can run at once (Think I might have it backwards) But my issue is that when the missions start, It announces that heroes are extracting snippers for example, and on the map it shows Bandits snipper extraction. Did I miss something in my set up? Yeah, you have it backwards. That will spawn missions of hero’s. Link to comment Share on other sites More sharing options...
Voltan Posted August 7, 2022 Report Share Posted August 7, 2022 On 7/31/2022 at 12:47 AM, Khyron said: Im having an issue with Missions continuing to spaw, when the server starts and I log in, all 4 missions will start <i set it for 2 bandit and 2 hero> if i complete the missions, no more missions spawn, i have these errors in the rpt log. [_hArray,_bArray,_bTime,_hTime] };> 10:39:16 Error position: <_hArray,_bArray,_bTime,_hTime] };> 10:39:16 Error Undefined variable in expression: _harray 10:39:16 File z\addons\dayz_server\system\scheduler\sched_wai.sqf, line 77 10:40:16 "SERVER FPS: 45 PLAYERS: 1" 10:40:40 "DZAI Monitor :: Server Uptime: 0:25:12. Active AI Groups: 0." 10:40:40 "DZAI Monitor :: Static Spawns: 0. Respawn Queue: 0 groups queued." 10:40:46 Error in expression <+ (wai_mission_timer select 0)) * 60; i'm using a clean downloaded copy, any ideas? /* This scheduled task checks for running WAI missions and starts them appropriately. */ sched_wai_init = { diag_log("WAI: Scheduler Started"); local _hArray = +wai_hero_missions; local _bArray = +wai_bandit_missions; local _hTime = (random((wai_mission_timer select 1) - (wai_mission_timer select 0)) + (wai_mission_timer select 0)) * 60; local _bTime = (random((wai_mission_timer select 1) - (wai_mission_timer select 0)) + (wai_mission_timer select 0)) * 60; [_hArray,_bArray,_bTime,_hTime] }; sched_wai = { local _hArray = _this select 0; local _bArray = _this select 1; local _bTime = _this select 2; local _hTime = _this select 3; local _mission = ""; // Bandit mission timer if (WAI_MarkerReady && {diag_tickTime - wai_b_starttime >= _bTime} && {b_missionsrunning < wai_bandit_limit}) then { WAI_MarkerReady = false; local _selected = false; while {!_selected} do { if (wai_debug_mode) then {diag_log format["WAI: Bandit Array: %1",_bArray];}; _mission = _bArray select (floor (random (count _bArray))); _index = [_bArray, (_mission select 0)] call BIS_fnc_findNestedElement select 0; _bArray = [_bArray,_index] call fnc_deleteAt; if (count _bArray == 0) then {_bArray = +wai_bandit_missions;}; if ((_mission select 1) >= random 1) then { _selected = true; if (wai_debug_mode) then {diag_log format["WAI: Bandit mission %1 selected.",(_mission select 0)];}; } else { if (wai_debug_mode) then {diag_log format["WAI: Bandit mission %1 NOT selected.",(_mission select 0)];}; }; }; b_missionsrunning = b_missionsrunning + 1; wai_b_starttime = diag_tickTime; wai_mission_markers set [(count wai_mission_markers), ("MainBandit" + str(count wai_mission_data))]; wai_mission_data = wai_mission_data + [[0,[],[],[],[],[],[]]]; ["MainBandit","Hero"] execVM format ["\z\addons\dayz_server\WAI\missions\missions\%1.sqf",(_mission select 0)]; }; // Hero mission timer if (WAI_MarkerReady && {diag_tickTime - wai_h_starttime >= _hTime} && {h_missionsrunning < wai_hero_limit}) then { WAI_MarkerReady = false; local _selected = false; while {!_selected} do { if (wai_debug_mode) then {diag_log format["WAI: Hero Array: %1",_hArray];}; _mission = _hArray select (floor (random (count _hArray))); _index = [_hArray, (_mission select 0)] call BIS_fnc_findNestedElement select 0; _hArray = [_hArray,_index] call fnc_deleteAt; if (count _hArray == 0) then {_hArray = +wai_hero_missions;}; if ((_mission select 1) >= random 1) then { _selected = true; if (wai_debug_mode) then {diag_log format["WAI: Hero mission %1 selected.",(_mission select 0)];}; } else { if (wai_debug_mode) then {diag_log format["WAI: Hero mission %1 NOT selected.",(_mission select 0)];}; }; }; h_missionsrunning = h_missionsrunning + 1; wai_h_starttime = diag_tickTime; wai_mission_markers set [(count wai_mission_markers), ("MainHero" + str(count wai_mission_data))]; wai_mission_data = wai_mission_data + [[0,[],[],[],[],[],[]]]; ["MainHero","Bandit"] execVM format ["\z\addons\dayz_server\WAI\missions\missions\%1.sqf",(_mission select 0)]; }; // Reset times _hTime = (random((wai_mission_timer select 1) - (wai_mission_timer select 0)) + (wai_mission_timer select 0)) * 60; _bTime = (random((wai_mission_timer select 1) - (wai_mission_timer select 0)) + (wai_mission_timer select 0)) * 60; [_hArray,_bArray,_bTime,_hTime] }; Show us a copy of your scheduler file that calls this file. It’s the one that you need to modify during install so it would be the one with an issue most likely Link to comment Share on other sites More sharing options...
Khyron Posted August 8, 2022 Report Share Posted August 8, 2022 16 hours ago, Voltan said: Show us a copy of your scheduler file that calls this file. It’s the one that you need to modify during install so it would be the one with an issue most likely Sched_init.sqf #define PATH "\z\addons\dayz_server\system\scheduler\" call compile preprocessFileLineNumbers (PATH+"sched_corpses.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_lootpiles.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_sync.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_safetyVehicle.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_dzms.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_wai.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_event.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_traps.sqf"); if (DZE_Bury_Body || DZE_Butcher_Body) then { call compile preprocessFileLineNumbers (PATH+"sched_lootCrates.sqf"); }; if (DZE_EVR) then { call compile preprocessFileLineNumbers (PATH+"sched_evr.sqf"); }; local _list = [ // period offset code <-> ctx init code ->ctx [ 60, 0, sched_event, sched_event_init ], [ 60, 224, sched_corpses ], [ 300, 336, sched_lootpiles_5m, sched_lootpiles_5m_init ], [ 90, 60, sched_dzms, sched_dzms_init ], [ 90, 60, sched_wai, sched_wai_init ], [ 6, 340, sched_lootpiles ], [ 900, 0, sched_sync ], [ 120, 48, sched_safetyVehicle ], [ 360, 480, sched_fps ], [ 30, 60, sched_traps, sched_traps_init ] ]; if (DZE_Bury_Body || DZE_Butcher_Body) then { _list set [count _list, [ 60, 240, sched_lootCrates ]]; }; if (DZE_EVR) then { _list set [count _list, [ 60, 180, sched_evr, sched_evr_init ]]; }; _list execFSM ("\z\addons\dayz_code\system\scheduler\scheduler.fsm"); //diag_log [ __FILE__, "Scheduler started"]; this one? 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