Jump to content

[RELEASE] WAI 2.2.6


JasonTM

Recommended Posts

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

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

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.

 

SCREENIE.png

Link to comment
Share on other sites

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

  • 2 weeks later...

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;
};

 

Link to comment
Share on other sites

  • 3 weeks later...
  • 4 months later...

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

  • 2 months later...
  • 3 weeks later...

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

  • 3 weeks later...
  • 3 weeks later...

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!

 

WAI+DZMS.jpg

Edited by Doggyman
DONE
Link to comment
Share on other sites

  • 1 month later...

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

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

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

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

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

Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

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

  • 2 weeks later...

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

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

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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...