DZAI 2.1.0 (Full Release Version) is now available

Discussion in 'General News and Discussion' started by Buttface, Jul 16, 2014.

  1. Buttface

    Buttface OpenDayZ Rockstar!

    Dec 6, 2012
    Likes Received:
    The current Github version of DZAI is now updated to version 2.1.0 here:

    A (mostly) copy-and paste of some important points from the pre-release announcement:

    Q: I'm currently running an older version of DZAI. What do I need to know before I upgrade?
    A: I highly recommend you remove your current installation of DZAI and reinstall from scratch. The instructions for installing DZAI have changed slightly (you just need an extra [] before the call compile line). I highly discourage users from reusing old DZAI files due to the large amount of changes. This includes all config files.

    Q: Where is the changelog for 2.1.0?
    A: You can find the changelog for 2.1.0 by following this link.

    Q: I have a pre-release build of 2.1.0 installed, do I still need to reinstall?
    A: If you have pre-release build 6 then you don't need to re-install. If you have an earlier pre-release build or are unsure what build you have, reinstall with the most updated version from Github.

    Q: Where did the global_classnames.sqf file go?
    A: It's been merged with dzai_config.sqf

    Q: Where did the dzai_settings_override.sqf file go?
    A: It has been removed and is now only used for dev purposes.

    Q: What are the custom spawn functions?
    • DZAI_spawn (custom spawn function) has been renamed to DZAI_spawn_units
    • DZAI_spawn_vehicle (custom vehicle AI spawn function) has been added
    • Further instructions are provided in custom spawn config files
    Q: What goes inside the square brackets [] in the call for dzai_initserver.sqf?

    Optional startup parameters may be inserted in the call for dzai_initserver.sqf: "readoverridefile" and
    • For example:
      ["readoverridefile"] call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZAI\init\dzai_initserver.sqf"; 
    • The readoverridefile startup parameter will let DZAI read from a file named dzai_settings_override.sqf placed directly inside the DZAI folder. This is a file used for development and may not be relevant to regular users
    • The enabledebugmarkers startup parameter will allow DZAI to create debug markers indicating the positions of AI units and active spawn locations. This is meant for debugging and development purposes only. I won't respond (helpfully) to requests to adapt this feature for everyday non-development/debugging use.
    New Calpis and violentbedlinen like this.
  2. Buttface

    Buttface OpenDayZ Rockstar!

    Dec 6, 2012
    Likes Received:
    A small correction is needed for spawnBandits_custom.sqf to fix an issue with despawning custom AI groups. Replace your entire spawnBandits_custom.sqf (located in the spawn_functions folder) with this:

        Description: DZAI custom spawn function (DZAI_spawn).
        Last updated: 6:00 PM 10/24/2013
    private ["_patrolDist","_trigger","_grpArray","_triggerPos","_equipType","_weapongrade","_totalAI","_startTime","_tMarker","_unitGroup","_spawnPos","_totalAI"];
    if (!isServer) exitWith {};
    _startTime = diag_tickTime;
    _totalAI = _this select 0;                                   
    //_this select 1;
    _patrolDist = _this select 2;                               
    _trigger = _this select 3;                                   
    _weapongrade = _this select 4;
    //_spawnMarker = _this select 5;
    _grpArray = _trigger getVariable ["GroupArray",[]];   
    if (count _grpArray > 0) exitWith {if (DZAI_debugLevel > 0) then {diag_log format ["DZAI Debug: Active groups found at %1. Exiting spawn script (spawnBandits)",(triggerText _trigger)];};};                       
    _trigger setTriggerArea [750,750,0,false];
    _triggerPos = ASLtoATL getPosASL _trigger;
    if (DZAI_debugLevel > 0) then {diag_log format["DZAI Debug: Processed static trigger spawn data in %1 seconds (spawnBandits).",(diag_tickTime - _startTime)];};
    _startTime = diag_tickTime;
    if !(_trigger getVariable ["respawn",true]) then {
        _maxUnits = _trigger getVariable ["maxUnits",[0,0]];
        _totalAINew = (_maxUnits select 0);
        if (_totalAINew > 0) then {_totalAI = _totalAINew};    //Retrieve AI amount if it was updated from initial value (for non-respawning custom spawns only)
    _spawnPos = [(ASLtoATL getPosASL _trigger),random (_patrolDist),random(360),false] call SHK_pos;
    _unitGroup = [_totalAI,grpNull,_spawnPos,_trigger,_weapongrade] call DZAI_setup_AI;
    //Set group variables
    _unitGroup setVariable ["unitType","static"];
    _unitGroup allowFleeing 0;
    if (DZAI_debugLevel > 1) then {diag_log format ["DZAI Extended Debug: Group %1 has group size %2.",_unitGroup,_totalAI];};
    if (_patrolDist > 1) then {
        0 = [_unitGroup,_triggerPos,_patrolDist] spawn DZAI_BIN_taskPatrol;
    } else {
        [_unitGroup, 0] setWaypointType "HOLD";
        _unitGroup setFormDir (random 360);
    if (DZAI_debugLevel > 0) then {diag_log format["DZAI Debug: Spawned a group of %1 units in %2 seconds at %3 (spawnBandits).",_totalAI,(diag_tickTime - _startTime),(triggerText _trigger)];};
    _equipType = if (_weapongrade in DZAI_weaponGrades) then {(_weapongrade max 0)} else {3};
    _triggerStatements = (triggerStatements _trigger);
    if (!(_trigger getVariable ["initialized",false])) then {
        0 = [_trigger,[_unitGroup],_patrolDist,_equipType,[],[_totalAI,0]] call DZAI_setTrigVars;
        _trigger setVariable ["triggerStatements",+_triggerStatements];
    } else {
        _trigger setVariable ["isCleaning",false];
        _trigger setVariable ["maxUnits",[_totalAI,0]];
        if (DZAI_debugLevel > 1) then {diag_log format ["DZAI Extended Debug: Trigger group array updated to: %1.",_grpArray]};
    _triggerStatements set [1,""];
    _trigger setTriggerStatements _triggerStatements;
    _trigger call DZAI_updStaticSpawnCount;
    if ((!isNil "DZAI_debugMarkersEnabled") && {DZAI_debugMarkersEnabled}) then {
        _nul = [_trigger] spawn DZAI_updateSpawnMarker;

Share This Page