130 lines
5.0 KiB
Plaintext
Executable File
130 lines
5.0 KiB
Plaintext
Executable File
/*
|
|
DZMSInit.sqf by Vampire
|
|
This is the file that every other file branches off from.
|
|
It checks that it is safe to run, sets relations, and starts mission timers.
|
|
Updated for DZMS 2.0 by JasonTM
|
|
*/
|
|
|
|
// Global for other scripts to check if DZMS is installed.
|
|
DZMSInstalled = true;
|
|
|
|
diag_log text "[DZMS]: Starting DayZ Mission System.";
|
|
|
|
DZMSRelations = [];
|
|
if (!isNil "DZAI_isActive") then {DZMSRelations = DZMSRelations + ["DZAI"];};
|
|
if (!isNil "SAR_version") then {DZMSRelations = DZMSRelations + ["SargeAI"];};
|
|
if (!isNil "WAIconfigloaded") then {DZMSRelations = DZMSRelations + ["WickedAI"];};
|
|
|
|
call {
|
|
|
|
// If we have multiple relations running, lets warn the user
|
|
if (count DZMSRelations > 1) exitWith {
|
|
diag_log text "[DZMS]: Multiple Relations Detected! Unwanted AI Behaviour May Occur!";
|
|
diag_log text "[DZMS]: If Issues Arise, Decide on a Single AI System! (DZAI, SargeAI, or WickedAI)";
|
|
};
|
|
|
|
// If only one set of relations were found, let the user know which one is being used.
|
|
if (count DZMSRelations == 1) exitWith {diag_log text format["[DZMS]: Using %1 Relations.",(DZMSRelations select 0)];};
|
|
|
|
// They weren't found, so let's set relationships
|
|
diag_log text "[DZMS]: Relations not found! Using DZMS Relations.";
|
|
|
|
// Create the groups if they aren't created already
|
|
createCenter east;
|
|
// Make AI Hostile to Survivors
|
|
WEST setFriend [EAST,0];
|
|
EAST setFriend [WEST,0];
|
|
// Make AI Hostile to Zeds
|
|
EAST setFriend [CIVILIAN,0];
|
|
CIVILIAN setFriend [EAST,0];
|
|
};
|
|
|
|
//Destroy the global variable
|
|
DZMSRelations = nil;
|
|
|
|
// This variable is used to lock the mission spawning to avoid data collisions
|
|
DZMSMarkerReady = true;
|
|
|
|
// This array will store the data for missions
|
|
DZMSMissionData = [];
|
|
|
|
// Let's initialize the mission count variables
|
|
DZMSBanditRunning = 0;
|
|
DZMSHeroRunning = 0;
|
|
|
|
// Let's initialize the mission end times
|
|
DZMSBanditEndTime = diag_tickTime;
|
|
DZMSHeroEndTime = diag_tickTime;
|
|
|
|
// We need to check for Epoch and OverWatch to adjust vehicle spawning, and configurations
|
|
DZMSEpoch = isClass (configFile >> "CfgWeapons" >> "Chainsaw");
|
|
DZMSOverwatch = isClass (configFile >> "CfgWeapons" >> "USSR_cheytacM200");
|
|
|
|
// Let's Load the General Mission Configuration
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\DZMSConfig.sqf";
|
|
|
|
// Report the version
|
|
if (DZMSDebug) then {diag_log text format ["[DZMS]: Currently Running Version: %1", DZMSVersion];};
|
|
|
|
// Lets check for a copy-pasted config file
|
|
if (DZMSVersion != "2.1") then {
|
|
diag_log text format ["[DZMS]: Outdated Configuration Detected! Please Update DZMS!"];
|
|
diag_log text format ["[DZMS]: Old Versions are not supported by the Mod Author!"];
|
|
};
|
|
|
|
// These variables are initialized here because they are not used in all versions.
|
|
DZMSMakeVehKey = false;
|
|
DZMSAICheckWallet = false;
|
|
DZMSUseRPG = false;
|
|
DZMSM2Static = false;
|
|
DZMS_HeroDogTag = 0;
|
|
DZMS_BanditDogTag = 0;
|
|
DZMS_AllowThermal = false;
|
|
DZMSHighValue = [];
|
|
|
|
call {
|
|
// Epoch + Overwatch = Overpoch
|
|
if (DZMSEpoch && DZMSOverwatch) exitWith {
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\ExtConfig\OverpochExtConfig.sqf";
|
|
diag_log text "[DZMS]: DayZ Overpoch Detected! Overpoch Configs loaded";
|
|
};
|
|
// Epoch detected!
|
|
if (DZMSEpoch && !DZMSOverwatch) exitWith {
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\ExtConfig\EpochExtConfig.sqf";
|
|
diag_log text "[DZMS]: DayZ Epoch Detected! Epoch Configs loaded!";
|
|
};
|
|
// Epoch and Overwatch not detected, load Vanilla Mod configs.
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\ExtConfig\VanillaExtConfig.sqf";
|
|
diag_log text "[DZMS]: DayZ Vanilla Mod Detected! Vanilla Configs loaded!";
|
|
};
|
|
|
|
// Lets compile our functions
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSFunctions.sqf";
|
|
DZMSAIKilled = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSAIKilled.sqf";
|
|
DZMSAISpawn = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSAISpawn.sqf";
|
|
DZMSM2Spawn = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSM2Spawn.sqf";
|
|
DZMSBoxSetup = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSBox.sqf";
|
|
DZMSSpawnVeh = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSSpawnVeh.sqf";
|
|
DZMSWaitMissionComp = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSWaitMissionComp.sqf";
|
|
DZMSFindPos = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSFindPos.sqf";
|
|
DZMSSpawnObjects = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSSpawnObjects.sqf";
|
|
|
|
DZMSAddMajMarker = "\z\addons\dayz_server\DZMS\Scripts\DZMSAddMajMarker.sqf";
|
|
DZMSAddMinMarker = "\z\addons\dayz_server\DZMS\Scripts\DZMSAddMinMarker.sqf";
|
|
|
|
// Get the static AI spawned (if applicable)
|
|
if (DZMSStaticAI) then {
|
|
[] spawn {
|
|
while {true} do {
|
|
{
|
|
if !((_x select 0 == 0) && (_x select 1 == 0)) then {
|
|
[_x,DZMSStaticAICnt,2,"Bandit"] call DZMSAISpawn;
|
|
};
|
|
sleep 2;
|
|
} forEach DZMSStaticSpawn;
|
|
|
|
sleep DZMSStaticAITime;
|
|
};
|
|
};
|
|
};
|