From 19fee0ef87204b3fe580b00f8cc735015b12d81e Mon Sep 17 00:00:00 2001 From: Zepheris Date: Tue, 18 Feb 2020 09:13:11 -0700 Subject: [PATCH 1/2] Added and configured DZMS Mission system --- Server/@epochhive/addons/DZMS/$PBOPREFIX$.txt | 6 + Server/@epochhive/addons/DZMS/$PREFIX$ | 1 + Server/@epochhive/addons/DZMS/DZMSConfig.sqf | 133 +++++++++ .../@epochhive/addons/DZMS/DZMSFunctions.sqf | 242 +++++++++++++++++ .../DZMS/ExtConfig/0-ExtConfigReadme.txt | 3 + .../addons/DZMS/ExtConfig/DZMSAIConfig.sqf | 107 ++++++++ .../addons/DZMS/ExtConfig/DZMSCrateConfig.sqf | 38 +++ .../addons/DZMS/Missions/Major/EM1.sqf | 114 ++++++++ .../addons/DZMS/Missions/Major/SM1.sqf | 84 ++++++ .../addons/DZMS/Missions/Major/SM10.sqf | 73 +++++ .../addons/DZMS/Missions/Major/SM4.sqf | 81 ++++++ .../addons/DZMS/Missions/Major/SM6.sqf | 84 ++++++ .../addons/DZMS/Missions/Major/SM7.sqf | 66 +++++ .../addons/DZMS/Missions/Major/SM9.sqf | 73 +++++ .../addons/DZMS/Missions/Minor/SM1.sqf | 59 ++++ .../addons/DZMS/Missions/Minor/SM2.sqf | 97 +++++++ .../addons/DZMS/Missions/Minor/SM4.sqf | 67 +++++ .../addons/DZMS/Missions/Minor/SM5.sqf | 65 +++++ .../addons/DZMS/Missions/Minor/SM6.sqf | 77 ++++++ .../addons/DZMS/Scripts/DZMSAIKilled.sqf | 76 ++++++ .../addons/DZMS/Scripts/DZMSAISpawn.sqf | 172 ++++++++++++ .../addons/DZMS/Scripts/DZMSAddMajMarker.sqf | 18 ++ .../addons/DZMS/Scripts/DZMSAddMinMarker.sqf | 18 ++ .../addons/DZMS/Scripts/DZMSBox.sqf | 224 +++++++++++++++ .../addons/DZMS/Scripts/DZMSMajTimer.sqf | 44 +++ .../addons/DZMS/Scripts/DZMSMarkerLoop.sqf | 49 ++++ .../addons/DZMS/Scripts/DZMSMinTimer.sqf | 44 +++ .../addons/DZMS/Scripts/DZMSSaveToHive.sqf | 38 +++ .../addons/DZMS/Scripts/DZMSVehiclePatrol.sqf | 255 ++++++++++++++++++ Server/@epochhive/addons/DZMS/config.cpp | 34 +++ Server/@epochhive/addons/DZMS/fn_DZMSInit.sqf | 62 +++++ 31 files changed, 2504 insertions(+) create mode 100644 Server/@epochhive/addons/DZMS/$PBOPREFIX$.txt create mode 100644 Server/@epochhive/addons/DZMS/$PREFIX$ create mode 100644 Server/@epochhive/addons/DZMS/DZMSConfig.sqf create mode 100644 Server/@epochhive/addons/DZMS/DZMSFunctions.sqf create mode 100644 Server/@epochhive/addons/DZMS/ExtConfig/0-ExtConfigReadme.txt create mode 100644 Server/@epochhive/addons/DZMS/ExtConfig/DZMSAIConfig.sqf create mode 100644 Server/@epochhive/addons/DZMS/ExtConfig/DZMSCrateConfig.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Major/EM1.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Major/SM1.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Major/SM10.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Major/SM4.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Major/SM6.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Major/SM7.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Major/SM9.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Minor/SM1.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Minor/SM2.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Minor/SM4.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Minor/SM5.sqf create mode 100644 Server/@epochhive/addons/DZMS/Missions/Minor/SM6.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSAIKilled.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSAISpawn.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSAddMajMarker.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSAddMinMarker.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSBox.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSMajTimer.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSMarkerLoop.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSMinTimer.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSSaveToHive.sqf create mode 100644 Server/@epochhive/addons/DZMS/Scripts/DZMSVehiclePatrol.sqf create mode 100644 Server/@epochhive/addons/DZMS/config.cpp create mode 100644 Server/@epochhive/addons/DZMS/fn_DZMSInit.sqf diff --git a/Server/@epochhive/addons/DZMS/$PBOPREFIX$.txt b/Server/@epochhive/addons/DZMS/$PBOPREFIX$.txt new file mode 100644 index 0000000..68d82b3 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/$PBOPREFIX$.txt @@ -0,0 +1,6 @@ +///////
/////// +prefix=z\addons\dayz_server\DZMS +Mikero=DePbo.dll +Pbo Type is: Arma Addon +Sha: 'DFE97C2881052A87B307B178760BF5A36E72A2DE' +//////
////// diff --git a/Server/@epochhive/addons/DZMS/$PREFIX$ b/Server/@epochhive/addons/DZMS/$PREFIX$ new file mode 100644 index 0000000..951c35e --- /dev/null +++ b/Server/@epochhive/addons/DZMS/$PREFIX$ @@ -0,0 +1 @@ +z\addons\dayz_server\DZMS \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/DZMSConfig.sqf b/Server/@epochhive/addons/DZMS/DZMSConfig.sqf new file mode 100644 index 0000000..e510759 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/DZMSConfig.sqf @@ -0,0 +1,133 @@ +/* + DayZ Mission System Config by Vampire + DZMS: https://github.com/SMVampire/DZMS-DayZMissionSystem +*/ + +/////////////////////////////////////////////////////////////////////// +//If you have ZSC installed then you can set this to true to place money in ai wallets. +DZMSAICheckWallet = false; + +// Do you want your players to gain humanity from killing mission AI? +DZMSMissHumanity = true; + +// How Much Humanity? +DZMSCntHumanity = 25; + +// Do You Want AI to use NVGs? +//(They are deleted on death) +DZMSUseNVG = true; + +// Do you want AI to use RPG7V's? +//(Only one unit per group spawn will have one) +DZMSUseRPG = false; + +// Do you want AI kills to count as bandit kills? +DZMSCntBanditKls = true; + +// Do you want AI to disappear instantly when killed? +DZMSCleanDeath = false; + +// Do you want AI that players run over to not have gear? +// (If DZMSCleanDeath is true, this doesn't matter) +DZMSRunGear = false; + +// How long before bodies disappear? (in seconds) (default = 2400) +//DZMSBodyTime = 2400; +DZMSBodyTime = 18000; + +// Percentage of AI that must be dead before mission completes (default = 0) +//( 0 is 0% of AI / 0.50 is 50% / 1 is 100% ) +DZMSRequiredKillPercent = 1; + +// How long in seconds before mission scenery disappears (default = 1800 / 0 = disabled) +DZMSSceneryDespawnTimer = 18000; + +// Should crates despawn with scenery? (default = false) +DZMSSceneryDespawnLoot = false; + +// What side are the bandit AI on? (default = resistance) +DZMSAISide = resistance; + +// Which character model should be used for the bandit AI? +// Must be the same side as DZMSAISide (default = "I_Soldier_EPOCH") +DZMSAIModel = "I_Soldier_EPOCH"; + +////////////////////////////////////////////////////////////////////////////////////////// +// You can adjust the weapons that spawn in weapon crates inside DZMSWeaponCrateList.sqf +// You can adjust the AI's gear inside DZMSAIConfig.sqf in the ExtConfig folder also. +////////////////////////////////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////////////////////////////////// +// Do you want to use static coords for missions? +// Leave this false unless you know what you are doing. +DZMSStaticPlc = false; + +// Array of static locations. X,Y,Z +DZMSStatLocs = [ +[0,0,0], +[0,0,0] +]; + +/////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Do you want vehicles from missions to save to the Database? (this means they will stay after a restart) +// If false, vehicles will disappear on restart. It will warn a player who gets inside of a vehicle. +// This is unsupported at this time, and off by default in this version. +DZMSSaveVehicles = false; + +///////////////////////////////////////////////////////////////////////////////////////////// +// These are arrays of vehicle classnames for the missions. +// Adjust to your liking. + +//Helicopters +DZMSChoppers = ["B_Heli_Transport_03_unarmed_F","B_Heli_Transport_03_unarmed_green_F"]; + +//Small Vehicles +DZMSSmallVic = ["I_G_Offroad_01_F","I_Quadbike_01_F","I_G_Van_01_transport_F"]; + +//Large Vehicles +DZMSLargeVic = ["I_Truck_02_covered_F","I_Truck_02_transport_F"]; + +//Patrol Vehicles +DZMSPatrolVeh = ["I_G_Offroad_01_armed_F","B_G_Offroad_01_armed_EPOCH"]; + +/*/////////////////////////////////////////////////////////////////////////////////////////// +There are two types of missions that run simultaneously on a the server. +The two types are Major and Minor missions. + +Major missions have a higher AI count, but also have more crates to loot. +Minor missions have less AI than Major missions, but have crates that reflect that. + +Below is the array of mission file names and the minimum and maximum times they run. +Do not edit the Arrays unless you know what you are doing. +*/ +DZMSMajorArray = ["EM1","SM1","SM2","SM4","SM6","SM7","SM9","SM10"]; +DZMSMinorArray = ["SM1","SM2","SM4","SM5","SM6"]; + +///////////////////////////////////////////////////////////////////////////////////////////// +// The Minumum time in seconds before a major mission will run. +// At least this much time will pass between major missions. Default = 650 (10.8 Minutes) +DZMSMajorMin = 650; + +// Maximum time in seconds before a major mission will run. +// A major mission will always run before this much time has passed. Default = 2000 (33.33 Minutes) +DZMSMajorMax = 2000; + +// The Minumum time in seconds before a minor mission will run. +// At least this much time will pass between minor missions. Default = 600 (10 Minutes) +DZMSMinorMin = 600; + +// Maximum time in seconds before a minor mission will run. +// A minor mission will always run before this much time has passed. Default = 990 (16.5 Minutes) +DZMSMinorMax = 990; + +// Blacklist Zone Array -- missions will not spawn in these areas +// format: [[x,y,z],radius] +// Ex: [[06325,07807,0],300] //Starry Sobor +DZMSBlacklistZones = [ + [[0,0,0],50] +]; + +/*=============================================================================================*/ +// Do Not Edit Below This Line +/*=============================================================================================*/ +DZMSVersion = "3.01_A3"; diff --git a/Server/@epochhive/addons/DZMS/DZMSFunctions.sqf b/Server/@epochhive/addons/DZMS/DZMSFunctions.sqf new file mode 100644 index 0000000..0b6a4df --- /dev/null +++ b/Server/@epochhive/addons/DZMS/DZMSFunctions.sqf @@ -0,0 +1,242 @@ +/* + DayZ Mission System Functions + by Vampire +*/ + +diag_log text "[DZMS]: Loading ExecVM Functions."; +DZMSMajTimer = "\z\addons\dayz_server\DZMS\Scripts\DZMSMajTimer.sqf"; +DZMSMinTimer = "\z\addons\dayz_server\DZMS\Scripts\DZMSMinTimer.sqf"; +DZMSMarkerLoop = "\z\addons\dayz_server\DZMS\Scripts\DZMSMarkerLoop.sqf"; + +DZMSAddMajMarker = "\z\addons\dayz_server\DZMS\Scripts\DZMSAddMajMarker.sqf"; +DZMSAddMinMarker = "\z\addons\dayz_server\DZMS\Scripts\DZMSAddMinMarker.sqf"; + +DZMSAIKilled = "\z\addons\dayz_server\DZMS\Scripts\DZMSAIKilled.sqf"; + +DZMSBoxSetup = "\z\addons\dayz_server\DZMS\Scripts\DZMSBox.sqf"; +DZMSSaveVeh = "\z\addons\dayz_server\DZMS\Scripts\DZMSSaveToHive.sqf"; + +diag_log text "[DZMS]: Loading Compiled Functions."; +// compiled functions +DZMSAISpawn = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSAISpawn.sqf"; +DZMSVehiclePatrol = compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\Scripts\DZMSVehiclePatrol.sqf"; + +diag_log text "[DZMS]: Loading All Other Functions."; +//Attempts to find a mission location +//If findSafePos fails it searches again until a position is found +//This fixes the issue with missions spawning in Novy Sobor on Chernarus +DZMSFindPos = { + private["_mapHardCenter","_mapRadii","_centerPos","_pos","_disCorner","_hardX","_hardY","_findRun","_posX","_posY","_feel1","_feel2","_feel3","_feel4","_noWater","_disMaj","_disMin","_okDis","_isBlack","_playerNear","_objectNear"]; + + _mapHardCenter = true; + _centerPos = epoch_centerMarkerPosition; + _mapRadii = EPOCH_dynamicVehicleArea;; + + if (!(DZMSStaticPlc)) then { + + _hardX = _centerPos select 0; + _hardY = _centerPos select 1; + + //We need to loop findSafePos until it doesn't return the map center + _findRun = true; + while {_findRun} do + { + _pos = [_centerPos,0,_mapRadii,60,0,20,0] call BIS_fnc_findSafePos; + + //Apparently you can't compare two arrays and must compare values + _posX = _pos select 0; + _posY = _pos select 1; + + //Water Feelers. Checks for nearby water within 50meters. + _feel1 = [_posX, _posY+50, 0]; + _feel2 = [_posX+50, _posY, 0]; + _feel3 = [_posX, _posY-50, 0]; + _feel4 = [_posX-50, _posY, 0]; + + //Water Check + _noWater = (!surfaceIsWater _pos && !surfaceIsWater _feel1 && !surfaceIsWater _feel2 && !surfaceIsWater _feel3 && !surfaceIsWater _feel4); + + //Lets check for minimum mission separation distance + _disMaj = (_pos distance DZMSMajCoords); + _disMin = (_pos distance DZMSMinCoords); + _okDis = ((_disMaj > 1000) AND (_disMin > 1000)); + + //make sure the point is not blacklisted + _isBlack = false; + { + if ((_pos distance (_x select 0)) <= (_x select 1)) then {_isBlack = true;}; + } forEach DZMSBlacklistZones; + + _playerNear = {isPlayer _x} count (_pos nearEntities [["Epoch_Male_F","Epoch_Female_F"], 1000]) > 0; + + _objectNear = nearestObjects [_pos, ["PlotPole_EPOCH","ProtectionZone_Invisible_F","Debug_static_F"], 1000]; + + //Lets combine all our checks to possibly end the loop + if ((_posX != _hardX) AND (_posY != _hardY) AND _noWater AND _okDis AND !_isBlack AND !_playerNear AND (count _objectNear == 0)) then { + _findRun = false; + }; + // If the missions never spawn after running, use this to debug the loop. + // Will Complete if: noWater = true / Distance > 1000 / TaviHeight <= 185 / Blacklisted = false / PlayerNear = false + //diag_log text format ["[DZMS]: DEBUG: Pos:[%1,%2] / noWater?:%3 / okDistance?:%4 / isBlackListed:%5 / isPlayerNear:%6", _posX, _posY, _noWater, _okDis, _isBlack, _playerNear]; + sleep 2; + }; + + }; + + if (DZMSStaticPlc) then { + _pos = selectRandom DZMSStatLocs; + }; + + _fin = [(_pos select 0), (_pos select 1), 0]; + _fin +}; + +//Clears the cargo and sets fuel, direction, and orientation +//Direction stops the awkwardness of every vehicle bearing 0 +DZMSSetupVehicle = { + private ["_object","_ranFuel"]; + _object = _this select 0; + + _object call EPOCH_server_setVToken; + addToRemainsCollector [_object]; // Add the vehicle to ARMA's wreck handler + + waitUntil {(!isNull _object)}; + + clearWeaponCargoGlobal _object; + clearMagazineCargoGlobal _object; + clearBackpackCargoGlobal _object; + clearItemCargoGlobal _object; + + _ranFuel = random 1; + if (_ranFuel < .1) then {_ranFuel = .1;}; + _object setFuel _ranFuel; + _object setvelocity [0,0,1]; + _object setDir (round(random 360)); + + //If saving vehicles to the database is disabled, lets warn players it will disappear + if (!(DZMSSaveVehicles)) then { + _object addEventHandler ["GetIn",{ + ["Warning: This vehicle will disappear on server restart!", 5] call Epoch_message; + }]; + }; + + true +}; + +//Prevents an object being cleaned up by the server anti-hack +DZMSProtectObj = { + private ["_object"]; + _object = _this select 0; + + if (!((typeOf _object) in ["Box_NATO_AmmoVeh_F","C_supplyCrate_F","Box_NATO_WpsSpecial_F"]) || DZMSSceneryDespawnLoot) then { + _object setVariable["DZMSCleanup",true]; + }; + true +}; + +//Gets the weapon and magazine based on skill level +DZMSGetWeapon = { + private ["_skill","_aiweapon","_weapon","_magazine","_fin"]; + + _skill = _this select 0; + + //diag_log text format ["[DZMS]: AI Skill Func:%1",_skill]; + + switch (_skill) do { + case 0: {_aiweapon = DZMSWeps0;}; + case 1: {_aiweapon = DZMSWeps1;}; + case 2: {_aiweapon = DZMSWeps2;}; + case 3: {_aiweapon = DZMSWeps3;}; + }; + _weapon = selectRandom _aiweapon; + _magazine = getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines") select 0; + + _fin = [_weapon,_magazine]; + + _fin +}; + +//This gets the random vehicle to spawn at a mission +DZMSGetVeh = { + private ["_type","_vehArray","_choseVic"]; + + _type = _this select 0; + + switch (_type) do { + case "heli": {_vehArray = DZMSChoppers;}; + case "small": {_vehArray = DZMSSmallVic;}; + case "large": {_vehArray = DZMSLargeVic;}; + case "patrol": {_vehArray = DZMSPatrolVeh;}; + }; + + _choseVic = selectRandom _vehArray; + + _choseVic +}; + +//function to wait for mission completion +DZMSWaitMissionComp = { + private["_objective","_unitArrayName","_numSpawned","_numKillReq"]; + + _objective = _this select 0; + _unitArrayName = _this select 1; + + call compile format["_numSpawned = count %1;",_unitArrayName]; + _numKillReq = ceil(DZMSRequiredKillPercent * _numSpawned); + + diag_log text format["[DZMS]: (%3) Waiting for %1/%2 Units or Less to be Alive and a Player to be Near the Objective.",(_numSpawned - _numKillReq),_numSpawned,_unitArrayName]; + + call compile format["waitUntil{sleep 1; ({isPlayer _x && _x distance _objective <= 30} count playableUnits > 0) && ({alive _x} count %1 <= (_numSpawned - _numKillReq));};",_unitArrayName]; + + if (DZMSSceneryDespawnTimer > 0) then {_objective spawn DZMSCleanupThread;}; +}; + +//sleep function that uses diag_tickTime for accuracy +DZMSSleep = { + private["_sleepTime","_checkInterval","_startTime"]; + + _sleepTime = _this select 0; + _checkInterval = _this select 1; + + _startTime = diag_tickTime; + waitUntil{sleep _checkInterval; (diag_tickTime - _startTime) > _sleepTime;}; +}; + +//function to clean up mission objects +DZMSCleanupThread = { + //sleep for the despawn timer length + [DZMSSceneryDespawnTimer,20] call DZMSSleep; + + //delete flagged nearby objects + { + if (_x getVariable ["DZMSCleanup",false]) then { + _x call DZMSScheduleCleanUp; + }; + } forEach (_this nearObjects 50); +}; + +DZMSScheduleCleanUp = { + private "_group"; + _this removeAllMPEventHandlers "mpkilled"; + _this removeAllMPEventHandlers "mphit"; + _this removeAllMPEventHandlers "mprespawn"; + _this removeAllEventHandlers "FiredNear"; + _this removeAllEventHandlers "HandleDamage"; + _this removeAllEventHandlers "Killed"; + _this removeAllEventHandlers "Fired"; + _this removeAllEventHandlers "GetIn"; + _this removeAllEventHandlers "GetOut"; + _this removeAllEventHandlers "Local"; + _this removeAllEventHandlers "Respawn"; + + _group = group _this; + deleteVehicle _this; + if (count units _group == 0) then { + deleteGroup _group; + }; + + _this = nil; +}; + +//------------------------------------------------------------------// +diag_log text format ["[DZMS]: Mission Functions Script Loaded!"]; diff --git a/Server/@epochhive/addons/DZMS/ExtConfig/0-ExtConfigReadme.txt b/Server/@epochhive/addons/DZMS/ExtConfig/0-ExtConfigReadme.txt new file mode 100644 index 0000000..f420729 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/ExtConfig/0-ExtConfigReadme.txt @@ -0,0 +1,3 @@ +This directory consists of extended configuration files. +Modifying these are not required, and are for users who want a customized setup. +- Vampire \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/ExtConfig/DZMSAIConfig.sqf b/Server/@epochhive/addons/DZMS/ExtConfig/DZMSAIConfig.sqf new file mode 100644 index 0000000..c1e2a7b --- /dev/null +++ b/Server/@epochhive/addons/DZMS/ExtConfig/DZMSAIConfig.sqf @@ -0,0 +1,107 @@ +/* + DZMSAIConfig.sqf + This is a configuration for the AI that spawn at missions. + This includes their skin, weapons, gear, and skills. + You can adjust these to your liking, but it is for advanced users. +*/ + +///////////////////////////////////////////// +// Array of uniform, helmet and vest classnames for the AI to use +DZMSBanditSkins = ["U_O_CombatUniform_ocamo","U_OG_Guerilla1_1","U_OG_Guerilla2_1","U_OG_Guerilla2_3","U_OG_Guerilla3_1","U_OG_Guerilla3_2","U_OG_leader","U_O_PilotCoveralls"]; +DZMSBanditHelmets = [""]; +DZMSBanditVests = [""]; + +///////////////////// +// Array of AI Skills +DZMSSkills0 = [ + ["aimingAccuracy",0.10,0.125], + ["aimingShake",0.45,0.55], + ["aimingSpeed",0.45,0.55], + ["endurance",0.40,0.50], + ["spotDistance",0.30,0.45], + ["spotTime",0.30,0.45], + ["courage",0.40,0.60], + ["reloadSpeed",0.50,0.60], + ["commanding",0.40,0.50], + ["general",0.40,0.60] +]; + +DZMSSkills1 = [ + ["aimingAccuracy",0.125,0.15], + ["aimingShake",0.60,0.70], + ["aimingSpeed",0.60,0.70], + ["endurance",0.55,0.65], + ["spotDistance",0.45,0.60], + ["spotTime",0.45,0.60], + ["courage",0.55,0.75], + ["reloadSpeed",0.60,0.70], + ["commanding",0.55,0.65], + ["general",0.55,0.75] +]; + +DZMSSkills2 = [ + ["aimingAccuracy",0.15,0.20], + ["aimingShake",0.75,0.85], + ["aimingSpeed",0.70,0.80], + ["endurance",0.70,0.80], + ["spotDistance",0.60,0.75], + ["spotTime",0.60,0.75], + ["courage",0.70,0.90], + ["reloadSpeed",0.70,0.80], + ["commanding",0.70,0.90], + ["general",0.70,0.90] +]; + +DZMSSkills3 = [ + ["aimingAccuracy",0.20,0.25], + ["aimingShake",0.85,0.95], + ["aimingSpeed",0.80,0.90], + ["endurance",0.80,0.90], + ["spotDistance",0.70,0.85], + ["spotTime",0.70,0.85], + ["courage",0.80,1.00], + ["reloadSpeed",0.80,0.90], + ["commanding",0.80,0.90], + ["general",0.80,1.00] +]; + +///////////////////////////////////////////////////////////////////////////////// +// This is the primary weaponlist that can be assigned to AI based on skill level + +DZMSWeps0 = [ + +"m16_EPOCH","m16Red_EPOCH","M14_EPOCH","M14Grn_EPOCH","m4a3_EPOCH","AKM_EPOCH","sr25_epoch","l85a2_epoch","l85a2_pink_epoch","l85a2_ugl_epoch","arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","SMG_01_F","SMG_02_F","arifle_MXM_Black_F","arifle_MX_GL_Black_F","arifle_MX_Black_F","arifle_MXC_Black_F" +]; + +DZMSWeps1 = [ + +"m16_EPOCH","m16Red_EPOCH","M14_EPOCH","M14Grn_EPOCH","m4a3_EPOCH","AKM_EPOCH","sr25_epoch","l85a2_epoch","l85a2_pink_epoch","l85a2_ugl_epoch","arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","SMG_01_F","SMG_02_F","arifle_MXM_Black_F","arifle_MX_GL_Black_F","arifle_MX_Black_F","arifle_MXC_Black_F" +]; + +DZMSWeps2 = [ + +"m16_EPOCH","m16Red_EPOCH","M14_EPOCH","M14Grn_EPOCH","m4a3_EPOCH","AKM_EPOCH","sr25_epoch","l85a2_epoch","l85a2_pink_epoch","l85a2_ugl_epoch","arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","SMG_01_F","SMG_02_F","arifle_MXM_Black_F","arifle_MX_GL_Black_F","arifle_MX_Black_F","arifle_MXC_Black_F" +]; + +DZMSWeps3 = [ + +"m16_EPOCH","m16Red_EPOCH","M14_EPOCH","M14Grn_EPOCH","m4a3_EPOCH","AKM_EPOCH","sr25_epoch","l85a2_epoch","l85a2_pink_epoch","l85a2_ugl_epoch","arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","SMG_01_F","SMG_02_F","arifle_MXM_Black_F","arifle_MX_GL_Black_F","arifle_MX_Black_F","arifle_MXC_Black_F" +]; + +//////////////////////////////////////////////////////////// +// These are gear sets that will be randomly given to the AI +DZMSGear0 = ["FAK","FAK","ItemAntibiotic","ItemPainkiller","ItemSodaRbull","meatballs_epoch"]; + +DZMSGear1 = ["FAK","FAK","ItemPainkillers","morphine_epoch","ItemSodaPurple","redburger_epoch"]; + +DZMSGear2 = ["FAK","Towelette","ItemBloodbag","ItemPainkillers","ItemSodaOrangeSherbet","sardines_epoch"]; + +DZMSGear3 = ["FAK","FAK","morphine_epoch","ItemHeatPack","ItemSodaAlpineDude","TacticalBacon"]; + +DZMSGear4 = ["FAK","Towelette","atropine_epoch","ItemBloodBag_Full","FoodWalkNSons","sweetcorn_epoch"]; + +//////////////////////////////////////////////////////////// +// These are the backpacks that can be assigned to AI units. +DZMSPacklist = [ +"B_AssaultPack_cbr","B_AssaultPack_dgtl","B_AssaultPack_khk","B_AssaultPack_mcamo","B_AssaultPack_ocamo","B_AssaultPack_rgr","B_AssaultPack_sgg","B_TacticalPack_blk","B_TacticalPack_mcamo","B_TacticalPack_ocamo","B_TacticalPack_oli","B_TacticalPack_rgr" +]; diff --git a/Server/@epochhive/addons/DZMS/ExtConfig/DZMSCrateConfig.sqf b/Server/@epochhive/addons/DZMS/ExtConfig/DZMSCrateConfig.sqf new file mode 100644 index 0000000..a8b6352 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/ExtConfig/DZMSCrateConfig.sqf @@ -0,0 +1,38 @@ +/* + Below are the lists of allowed weapons for the weapon crates. Adjust them to your liking. +*/ + +////////////////////////////////////////////////////////////////////////////////////////////// +// Pistols +DZMSpistolList = ["hgun_ACPC2_F","hgun_Rook40_F","hgun_P07_F","hgun_Pistol_heavy_01_F","hgun_Pistol_heavy_02_F","ruger_pistol_epoch","1911_pistol_epoch","hgun_Pistol_Signal_F","hgun_PDW2000_F"]; + +// Sniper Rifles +DZMSsniperList = ["m107_EPOCH","m107Tan_EPOCH","srifle_DMR_02_F","srifle_DMR_02_camo_F","srifle_DMR_02_sniper_F","srifle_DMR_03_F","srifle_DMR_03_khaki_F","srifle_DMR_03_tan_F","srifle_DMR_03_multicam_F","srifle_DMR_03_woodland_F","srifle_DMR_03_spotter_F","srifle_DMR_04_Tan_F","srifle_DMR_05_blk_F","srifle_DMR_05_hex_F","srifle_DMR_05_tan_f","srifle_DMR_06_camo_F","srifle_DMR_06_olive_F"]; + +// Light Machineguns +DZMSmgList = ["m249_EPOCH","m249Tan_EPOCH","MMG_01_hex_F","MMG_01_tan_F","MMG_02_camo_F","MMG_02_black_F","MMG_02_sand_F","LMG_Mk200_F","arifle_MX_SW_F","LMG_Zafir_F","arifle_MX_SW_Black_F","arifle_MX_SW_khk_F"]; + +// Primary Rifles +DZMSprimaryList = ["m16_EPOCH","m16Red_EPOCH","M14_EPOCH","M14Grn_EPOCH","m4a3_EPOCH","AKM_EPOCH","sr25_epoch","l85a2_epoch","l85a2_pink_epoch","l85a2_ugl_epoch","arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","SMG_01_F","SMG_02_F","arifle_MXM_Black_F","arifle_MX_GL_Black_F","arifle_MX_Black_F","arifle_MXC_Black_F"]; + +//List of Grenades and Shells +DZMSGrenadeList = ["HandGrenade","UGL_FlareGreen_F","UGL_FlareWhite_F"]; + +//////////////////////////////////////////////////////////////////////////////////////////////// +// Toolbelt Items +DZMSConTools = ["Plunger","MeleeSledge","MeleeRod","Hatchet"]; + +//Construction Supplies +DZMSConSupply = ["PartPlankPack","ItemPlywoodPack","ItemComboLock","CinderBlocks","MortarBucket","ItemScraps","ItemCorrugated","ItemCorrugatedLg","CircuitParts","ItemBurlap","ItemBulb","ItemRope","ItemSolar","ItemCables","ItemBattery","JackKit","ItemCanvas","ItemSeedBag","ItemPipe"]; + +//Prefab Buildables +DZMSBuildables = ["KitStudWall","KitWoodQuarterFloor","KitWoodHalfFloor","KitWoodFloor","KitWoodStairs","KitWoodTower","KitWoodRamp","KitSpikeTrap","KitMetalTrap","KitTankTrap","KitHesco3","KitWoodLadder","KitFirePlace","KitTiPi","KitShelf","KitWoodFoundation","KitFoundation","KitSolarGen","KitPlotPole","KitCinderWall","KitWorkbench","KitBurnBarrel","KitLightPole","KitFieldToilet","KitSunShade","KitSink","KitPortableLight_Single","KitPortableLight_Double","KitWatchTower","KitSunShade","KitSandbagWall","KitSandbagWallLong","KitBagBunker","KitBarGate","KitWaterPump","Kit_Garden","KitCinderTower","KitCinderFloor","KitMetalTower","KitMetalFloor","KitBarbedWire"]; + +//Medical Supplies +DZMSMedicalSupplies = ["FAK","Towelette","HeatPack","ColdPack","ItemVitamins","morphine_epoch","iodide_pills_epoch","adrenaline_epoch","caffeinepills_epoch","orlistat_epoch","ItemCanteen_Empty","ItemBottlePlastic_Clean","ItemWaterPurificationTablets","ItemPainKillers","ItemBloodBag_Empty","ItemBloodBag_Full","ItemAntibiotic","nanite_cream_epoch","nanite_pills_epoch"]; + +//Backpacks +DZMSBackPackList = ["B_AssaultPack_cbr","B_AssaultPack_dgtl","B_AssaultPack_khk","B_AssaultPack_mcamo","B_AssaultPack_ocamo","B_AssaultPack_rgr","B_AssaultPack_sgg","B_TacticalPack_blk","B_TacticalPack_mcamo","B_TacticalPack_ocamo","B_TacticalPack_oli","B_TacticalPack_rgr"]; + +//High Value Items +DZMSHighValue = ["ItemBriefcaseGold100oz","ItemSafe"]; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Major/EM1.sqf b/Server/@epochhive/addons/DZMS/Missions/Major/EM1.sqf new file mode 100644 index 0000000..5ac8139 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Major/EM1.sqf @@ -0,0 +1,114 @@ +/* + Medical C-130 Crash by lazyink (Full credit for original code to TheSzerdi & TAW_Tonic) + Modified to new format by Vampire +*/ + +private ["_missName","_coords","_wreck","_trash","_trash1","_trash2","_trash3","_trash4","_trash5","_veh1","_veh2","_vehicle","_vehicle1","_crate","_crate1","_DZMSARRAYPICS","_MISSIONIMAGE","_msg"]; + +//Name of the Mission +_missName = "C-192 Crash"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["Land_Wreck_Plane_Transport_01_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +C-192 Crash

+
+A C-192 Carrying Supplies has Crashed. Bandits are Securing the Cargo!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMajMarker is a simple script that adds a marker to the location +[_coords,_missname] ExecVM DZMSAddMajMarker; + +//We create the mission scenery +_wreck = createVehicle ["Land_Wreck_Plane_Transport_01_F",[(_coords select 0) - 8.8681, (_coords select 1) + 15.3554,0],[], 0, "NONE"]; +_wreck setDir -30.165445; +[_wreck] call DZMSProtectObj; + +_trash = createVehicle ["CargoNet_01_barrels_F",[(_coords select 0) - 7.4511, (_coords select 1) + 3.8544,0],[], 0, "NONE"]; +_trash setDir 61.911976; +[_trash] call DZMSProtectObj; + +_trash1 = createVehicle ["Land_Pallets_stack_F",[(_coords select 0) + 4.062, (_coords select 1) + 4.7216,0],[], 0, "NONE"]; +_trash1 setDir -29.273479; +[_trash1] call DZMSProtectObj; + +_trash2 = createVehicle ["Land_Pallets_F",[(_coords select 0) - 3.4033, (_coords select 1) - 2.2256,0],[], 0, "NONE"]; +[_trash2] call DZMSProtectObj; + +_trash3 = createVehicle ["Land_Tyre_F",[(_coords select 0) + 1.17, (_coords select 1) + 1.249,0],[], 0, "NONE"]; +[_trash3] call DZMSProtectObj; + +_trash4 = createVehicle ["Land_CratesWooden_F",[(_coords select 0) + 3.9029, (_coords select 1) - 1.8477,0],[], 0, "NONE"]; +_trash4 setDir -70.372086; +[_trash4] call DZMSProtectObj; + +_trash5 = createVehicle ["Land_WoodenCrate_01_F",[(_coords select 0) - 2.1181, (_coords select 1) + 5.9765,0],[], 0, "NONE"]; +_trash5 setDir -28.122475; +[_trash5] call DZMSProtectObj; + +//We create the mission vehicles +_veh1 = ["small"] call DZMSGetVeh; +_veh2 = ["small"] call DZMSGetVeh; +_vehicle = createVehicle [_veh1,[(_coords select 0) + 14.1426, (_coords select 1) - 0.6202,0],[], 0, "CAN_COLLIDE"]; +_vehicle1 = createVehicle [_veh2,[(_coords select 0) - 6.541, (_coords select 1) - 11.5557,0],[], 0, "CAN_COLLIDE"]; + +//DZMSSetupVehicle prevents the vehicle from disappearing and sets fuel and such +[_vehicle] call DZMSSetupVehicle; +[_vehicle1] call DZMSSetupVehicle; + +//DZMSBoxFill fills the box, DZMSProtectObj prevents it from disappearing +_crate = createVehicle ["Box_NATO_WpsSpecial_F",[(_coords select 0) - 1.5547,(_coords select 1) + 2.3486,0],[], 0, "CAN_COLLIDE"]; +[_crate,"supply2"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +_crate1 = createVehicle ["Box_NATO_AmmoVeh_F",[(_coords select 0) + 0.3428,(_coords select 1) - 1.8985,0],[], 0, "CAN_COLLIDE"]; +[_crate1,"supply"] ExecVM DZMSBoxSetup; +[_crate1] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[[(_coords select 0) - 10.5005,(_coords select 1) - 2.6465,0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 4.7027,(_coords select 1) + 12.2138,0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 2.918,(_coords select 1) - 9.0342,0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 2.918,(_coords select 1) - 9.0342,0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; + +//Spawn AI vehicle patrol +//Usage: [_coords, PatrolRadius , skillLevel, unitArray] +[_coords, 50, 3, "DZMSUnitsMajor"] call DZMSVehiclePatrol; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMajor"] call DZMSWaitMissionComp; + +//Call DZMSSaveVeh to attempt to save the vehicles to the database +//If saving is off, the script will exit. +[_vehicle] ExecVM DZMSSaveVeh; +[_vehicle1] ExecVM DZMSSaveVeh; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +C-192 Crash

+
+The Crash Site has been Secured by Survivors!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +diag_log text format["[DZMS]: Major EM1 C130 Mission has Ended."]; +deleteMarker "DZMSMajMarker"; +deleteMarker "DZMSMajDot"; + +//Let the timer know the mission is over +DZMSMajDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Major/SM1.sqf b/Server/@epochhive/addons/DZMS/Missions/Major/SM1.sqf new file mode 100644 index 0000000..ed7dc8c --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Major/SM1.sqf @@ -0,0 +1,84 @@ +/* // + Weapons Cache Mission by lazyink (Original Full Code by TheSzerdi & TAW_Tonic) + New Mission Format by Vampire +*/ // + +private ["_missName","_coords","_net","_veh1","_veh2","_vehicle","_vehicle1","_crate","_crate1","_crate2","_crate3"]; + +//Name of the Mission +_missName = "NATO Weapons Cache"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["arifle_Mk20_GL_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgWeapons" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +NATO Weapons Cache

+
+Bandits have Overrun a NATO Weapons Cache!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMajMarker is a simple script that adds a marker to the location +[_coords,_missname] ExecVM DZMSAddMajMarker; + +//Lets add the scenery +//_net = createVehicle ["CamoNet_BLUFOR_big_F",[(_coords select 0) - 0.0649, (_coords select 1) + 0.6025,0],[], 0, "CAN_COLLIDE"]; +//[_net] call DZMSProtectObj; + +//We create the vehicles like normal +_veh1 = ["small"] call DZMSGetVeh; +_veh2 = ["large"] call DZMSGetVeh; +_vehicle = createVehicle [_veh1,[(_coords select 0) + 10.0303, (_coords select 1) - 12.2979,10],[], 0, "CAN_COLLIDE"]; +_vehicle1 = createVehicle [_veh2,[(_coords select 0) - 6.2764, (_coords select 1) - 14.086,10],[], 0, "CAN_COLLIDE"]; + +//DZMSSetupVehicle prevents the vehicle from disappearing and sets fuel and such +[_vehicle] call DZMSSetupVehicle; +[_vehicle1] call DZMSSetupVehicle; + +_crate = createVehicle ["Box_NATO_AmmoVeh_F",_coords,[], 0, "CAN_COLLIDE"]; + +//DZMSBoxFill fills the box, DZMSProtectObj prevents it from disappearing +[_crate,"weapons2"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMajor"] call DZMSWaitMissionComp; + +//Call DZMSSaveVeh to attempt to save the vehicles to the database +//If saving is off, the script will exit. +[_vehicle] ExecVM DZMSSaveVeh; +[_vehicle1] ExecVM DZMSSaveVeh; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgWeapons" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +NATO Weapons Cache

+
+The Weapons Cache is Under Survivor Control!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Major SM1 Weapon Cache Mission has Ended."]; +deleteMarker "DZMSMajMarker"; +deleteMarker "DZMSMajDot"; + +//Let the timer know the mission is over +DZMSMajDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Major/SM10.sqf b/Server/@epochhive/addons/DZMS/Missions/Major/SM10.sqf new file mode 100644 index 0000000..cb26697 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Major/SM10.sqf @@ -0,0 +1,73 @@ +/* + CH47 Mission by lazyink (Full credit for original code to TheSzerdi & TAW_Tonic) + Updated to New Mission Format by Vampire + Edited by Fuchs for EMS +*/ + +private ["_missName","_coords","_vehicle","_crate"]; + +//Name of the Mission +_missName = "CH67 Mission"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["B_Heli_Transport_03_unarmed_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +CH-67 Landing

+
+A CH-67 with building supplies has landed! Secure the chopper and the building supplies!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMajMarker is a simple script that adds a marker to the location +[_coords,_missName] ExecVM DZMSAddMajMarker; + +//Create the vehicles +_vehicle = createVehicle ["B_Heli_Transport_03_unarmed_F",[(_coords select 0) + 25, (_coords select 1) - 5,0],[], 0, "CAN_COLLIDE"]; +[_vehicle] call DZMSSetupVehicle; + +//DZMSBoxFill fills the box, DZMSProtectObj prevents it from disappearing +_crate = createVehicle ["Box_NATO_AmmoVeh_F",[(_coords select 0) - 6.1718,(_coords select 1) + 0.6426,0],[], 0, "CAN_COLLIDE"]; +[_crate,"Supply2"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMajor"] call DZMSWaitMissionComp; + +//Call DZMSSaveVeh to attempt to save the vehicles to the database +//If saving is off, the script will exit. +[_vehicle] ExecVM DZMSSaveVeh; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +CH-67 Landing

+
+Good work you've secured the helicopter!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Major SM10 CH47 Mission has Ended."]; +deleteMarker "DZMSMajMarker"; +deleteMarker "DZMSMajDot"; + +//Let the timer know the mission is over +DZMSMajDone = true; diff --git a/Server/@epochhive/addons/DZMS/Missions/Major/SM4.sqf b/Server/@epochhive/addons/DZMS/Missions/Major/SM4.sqf new file mode 100644 index 0000000..5757771 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Major/SM4.sqf @@ -0,0 +1,81 @@ +/* + Bandit Supply Heli Crash by lazyink (Full credit for original code to TheSzerdi & TAW_Tonic) + New Mission Format by Vampire +*/ + +private ["_missName","_coords","_ranChopper","_chopper","_truck","_trash","_trash2","_crate","_crate2"]; + +//Name of the Mission +_missName = "Helicopter Landing"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["B_Heli_Transport_03_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Helicopter Landing

+
+A Supply Helicopter has been Forced to Land! Stop the Bandits from Taking Control of it!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMajMarker is a simple script that adds a marker to the location +[_coords,_missname] ExecVM DZMSAddMajMarker; + +//We create the vehicles like normal +_ranChopper = ["heli"] call DZMSGetVeh; +_chopper = createVehicle [_ranChopper,_coords,[], 0, "NONE"]; + +//DZMSSetupVehicle prevents the vehicle from disappearing and sets fuel and such +[_chopper] call DZMSSetupVehicle; +_chopper setDir -36.279881; + +//DZMSBoxFill fills the box, DZMSProtectObj prevents it from disappearing +_crate = createVehicle ["Box_NATO_WpsSpecial_F",[(_coords select 0) - 6.1718,(_coords select 1) + 0.6426,0],[], 0, "CAN_COLLIDE"]; +[_crate,"weapons"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +_crate2 = createVehicle ["Box_NATO_WpsSpecial_F",[(_coords select 0) - 7.1718,(_coords select 1) + 1.6426,0],[], 0, "CAN_COLLIDE"]; +[_crate2,"weapons"] ExecVM DZMSBoxSetup; +[_crate2] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[[(_coords select 0) - 8.4614,(_coords select 1) - 5.0527,0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) - 8.4614,(_coords select 1) - 5.0527,0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 7.5337,(_coords select 1) + 4.2656,0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 7.5337,(_coords select 1) + 4.2656,0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMajor"] call DZMSWaitMissionComp; + +//Call DZMSSaveVeh to attempt to save the vehicles to the database +//If saving is off, the script will exit. +[_chopper] ExecVM DZMSSaveVeh; +[_truck] ExecVM DZMSSaveVeh; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Helicopter Landing

+
+The Helicopter has been Taken by Survivors!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Major SM4 Helicopter Landing Mission has Ended."]; +deleteMarker "DZMSMajMarker"; +deleteMarker "DZMSMajDot"; + +//Let the timer know the mission is over +DZMSMajDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Major/SM6.sqf b/Server/@epochhive/addons/DZMS/Missions/Major/SM6.sqf new file mode 100644 index 0000000..e558aab --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Major/SM6.sqf @@ -0,0 +1,84 @@ +/* + Medical Crate by lazyink (Full credit for original code to TheSzerdi & TAW_Tonic) + Updated to new format by Vampire +*/ + +private ["_missName","_coords","_net","_veh1","_veh2","_vehicle","_vehicle1","_crate"]; + +//Name of the Mission +_missName = "Medical Cache"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["Land_Medevac_house_V1_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Medical Cache

+
+Bandits have Taken Over a Survivor Medical Cache!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMajMarker is a simple script that adds a marker to the location +[_coords,_missname] ExecVM DZMSAddMajMarker; + +//Lets add the scenery +_net = createVehicle ["CamoNet_BLUFOR_big_F",[(_coords select 0) - 0.0649, (_coords select 1) + 0.6025,0],[], 0, "CAN_COLLIDE"]; +[_net] call DZMSProtectObj; + +//We create the vehicles like normal +_veh1 = ["small"] call DZMSGetVeh; +_veh2 = ["large"] call DZMSGetVeh; +_vehicle = createVehicle [_veh1,[(_coords select 0) + 10.0303, (_coords select 1) - 12.2979,10],[], 0, "CAN_COLLIDE"]; +_vehicle1 = createVehicle [_veh2,[(_coords select 0) - 6.2764, (_coords select 1) - 14.086,10],[], 0, "CAN_COLLIDE"]; + +//DZMSSetupVehicle prevents the vehicle from disappearing and sets fuel and such +[_vehicle] call DZMSSetupVehicle; +[_vehicle1] call DZMSSetupVehicle; + +_crate = createVehicle ["Box_IDAP_Equip_F",_coords,[], 0, "CAN_COLLIDE"]; + +//DZMSBoxFill fills the box, DZMSProtectObj prevents it from disappearing +[_crate,"medical"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMajor"] call DZMSWaitMissionComp; + +//Call DZMSSaveVeh to attempt to save the vehicles to the database +//If saving is off, the script will exit. +[_vehicle] ExecVM DZMSSaveVeh; +[_vehicle1] ExecVM DZMSSaveVeh; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Medical Cache

+
+The Medical Cache is Under Survivor Control!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Major SM6 Medical Cache Mission has Ended."]; +deleteMarker "DZMSMajMarker"; +deleteMarker "DZMSMajDot"; + +//Let the timer know the mission is over +DZMSMajDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Major/SM7.sqf b/Server/@epochhive/addons/DZMS/Missions/Major/SM7.sqf new file mode 100644 index 0000000..c50a1ed --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Major/SM7.sqf @@ -0,0 +1,66 @@ +/* // + Weapons Cache Mission by lazyink (Original Full Code by TheSzerdi & TAW_Tonic) + New Mission Format by Vampire + Edited by Fuchs for EMS +*/ + +private ["_missName","_coords","_crate"]; + +//Name of the Mission +_missName = "Large Ammo Cache"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["LMG_Mk200_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgWeapons" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Large Ammo Cache

+
+A gear cache has been airdropped! Secure it for yourself!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMajMarker is a simple script that adds a marker to the location +[_coords,_missName] ExecVM DZMSAddMajMarker; + +_crate = createVehicle ["Box_NATO_AmmoVeh_F",_coords,[], 0, "CAN_COLLIDE"]; + +//DZMSBoxFill fills the box, DZMSProtectObj prevents it from disappearing +[_crate,"weapons2"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 0.0352,(_coords select 1) - 6.8799, 0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; + +//Wait until the player is within 30meters and also meets the kill req +[_coords,"DZMSUnitsMajor"] call DZMSWaitMissionComp; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgWeapons" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Large Ammo Cache

+
+The gear cache has been found, nice work, enjoy the spoils!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Major SM7 Weapon Cache Mission has Ended."]; +deleteMarker "DZMSMajMarker"; +deleteMarker "DZMSMajDot"; + +//Let the timer know the mission is over +DZMSMajDone = true; diff --git a/Server/@epochhive/addons/DZMS/Missions/Major/SM9.sqf b/Server/@epochhive/addons/DZMS/Missions/Major/SM9.sqf new file mode 100644 index 0000000..916f642 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Major/SM9.sqf @@ -0,0 +1,73 @@ +/* + Fire Base Camp by lazyink (Full credit for original code to TheSzerdi & TAW_Tonic) + Updated to New Mission Format by Vampire + Edited by Fuchs for EMS +*/ + +private ["_missName","_coords","_crate","_base1","_base2"]; + +//Name of the Mission +_missName = "Bandit Firebase"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["B_HMG_01_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Bandit Firebase

+
+A firebase is being constructed! Stop the bandits and secure the construction materials for yourself!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMajMarker is a simple script that adds a marker to the location +[_coords,_missName] ExecVM DZMSAddMajMarker; + +//Create the scenery +_base1 = createVehicle ["Land_BagBunker_Large_F",[(_coords select 0) - 20, (_coords select 1) - 10,-0.2],[], 0, "CAN_COLLIDE"]; +_base2 = createVehicle ["Land_BagBunker_Tower_F",[(_coords select 0) - 10, (_coords select 1) + 10,-0.2],[], 0, "CAN_COLLIDE"]; +[_base1] call DZMSProtectObj; +[_base2] call DZMSProtectObj; + +_crate = createVehicle ["Box_NATO_AmmoVeh_F",[(_coords select 0) + 22, _coords select 1,0],[], 0, "CAN_COLLIDE"]; +[_crate,"supply2"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[[(_coords select 0) - 8.4614,(_coords select 1) - 5.0527,0],6,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) - 8.4614,(_coords select 1) - 5.0527,0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 7.5337,(_coords select 1) + 4.2656,0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; +[[(_coords select 0) + 7.5337,(_coords select 1) + 4.2656,0],4,1,"DZMSUnitsMajor"] call DZMSAISpawn; +sleep 5; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMajor"] call DZMSWaitMissionComp; + +//Call DZMSSaveVeh to attempt to save the vehicles to the database +//If saving is off, the script will exit. + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Bandit Firebase

+
+Survivors have secured the construction materials!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Major SM9 Fire Base Mission has Ended."]; +deleteMarker "DZMSMajMarker"; +deleteMarker "DZMSMajDot"; + +//Let the timer know the mission is over +DZMSMajDone = true; diff --git a/Server/@epochhive/addons/DZMS/Missions/Minor/SM1.sqf b/Server/@epochhive/addons/DZMS/Missions/Minor/SM1.sqf new file mode 100644 index 0000000..a6e0105 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Minor/SM1.sqf @@ -0,0 +1,59 @@ +/* + Bandit Hunting Party by lazyink (Full credit to TheSzerdi & TAW_Tonic for the code) + Updated to new format by Vampire +*/ +private ["_missName","_coords","_vehicle","_DZMSARRAYPICS","_MISSIONIMAGE","_msg"]; + +//Name of the Mission +_missName = "Bandit Squad"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["akm_EPOCH"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgWeapons" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Bandit Squad

+
+A Bandit Squad has been spotted! Stop them from completing their patrol!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMinMarker is a simple script that adds a marker to the location +[_coords,_missName] ExecVM DZMSAddMinMarker; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[_coords,2,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 5; +[_coords,2,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 5; +[_coords,2,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 5; +[_coords,2,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMinor"] call DZMSWaitMissionComp; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgWeapons" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Bandit Squad

+
+The Bandit Squad has been wiped out!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +diag_log text format["[DZMS]: Minor SM1 Bandit Squad Mission has Ended."]; +deleteMarker "DZMSMinMarker"; +deleteMarker "DZMSMinDot"; + +//Let the timer know the mission is over +DZMSMinDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Minor/SM2.sqf b/Server/@epochhive/addons/DZMS/Missions/Minor/SM2.sqf new file mode 100644 index 0000000..956aa9b --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Minor/SM2.sqf @@ -0,0 +1,97 @@ +/* + Medical Outpost by lazyink (Full credit for code to TheSzerdi & TAW_Tonic) + Updated to new format by Vampire +*/ +private ["_missName","_coords","_base","_base1","_base2","_base3","_veh1","_veh2","_vehicle","_vehicle1","_crate","_crate2"]; + +//Name of the Mission +_missName = "Medical Outpost"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["Land_Medevac_house_V1_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Medical Outpost

+
+Bandits have established a Medical Outpost! Go Secure their Medical Supplies!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMinMarker is a simple script that adds a marker to the location +[_coords,_missName] ExecVM DZMSAddMinMarker; + +//We create the scenery +_base = createVehicle ["Land_Medevac_house_V1_F",[(_coords select 0) +2, (_coords select 1)+5,-0.3],[], 0, "CAN_COLLIDE"]; +_base1 = createVehicle ["Land_MedicalTent_01_digital_closed_F",[(_coords select 0) - 40, (_coords select 1) - 10,0],[], 0, "CAN_COLLIDE"]; +_base2 = createVehicle ["Land_MedicalTent_01_digital_closed_F",[(_coords select 0) - 30, (_coords select 1) - 10,0],[], 0, "CAN_COLLIDE"]; +_base3 = createVehicle ["Land_MedicalTent_01_digital_closed_F",[(_coords select 0) - 20, (_coords select 1) - 10,0],[], 0, "CAN_COLLIDE"]; + +//DZMSProtectObj prevents it from disappearing +[_base] call DZMSProtectObj; +[_base1] call DZMSProtectObj; +[_base2] call DZMSProtectObj; +[_base3] call DZMSProtectObj; + +//We create the vehicles +_veh1 = ["small"] call DZMSGetVeh; +_veh2 = ["small"] call DZMSGetVeh; +_vehicle = createVehicle [_veh1,[(_coords select 0) + 10, (_coords select 1) - 5,0],[], 0, "CAN_COLLIDE"]; +_vehicle1 = createVehicle [_veh2,[(_coords select 0) + 15, (_coords select 1) - 5,0],[], 0, "CAN_COLLIDE"]; + +//DZMSSetupVehicle prevents the vehicle from disappearing and sets fuel and such +[_vehicle] call DZMSSetupVehicle; +[_vehicle1] call DZMSSetupVehicle; + +//We create and fill the crates +_crate = createVehicle ["Box_IDAP_Equip_F",[(_coords select 0) - 3, _coords select 1,0],[], 0, "CAN_COLLIDE"]; + +//DZMSBoxFill fills the box, DZMSProtectObj prevents it from disappearing +[_crate,"medical"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +_crate2 = createVehicle ["Box_IND_Ammo_F",[(_coords select 0) - 8, _coords select 1,0],[], 0, "CAN_COLLIDE"]; +[_crate2,"weapons"] ExecVM DZMSBoxSetup; +[_crate2] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[[(_coords select 0) - 20, (_coords select 1) - 15,0],4,0,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 3; +[[(_coords select 0) + 10, (_coords select 1) + 15,0],4,0,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 3; +[[(_coords select 0) - 10, (_coords select 1) - 15,0],4,0,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 3; +[[(_coords select 0) + 20, (_coords select 1) + 15,0],4,0,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 3; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMinor"] call DZMSWaitMissionComp; + +//Call DZMSSaveVeh to attempt to save the vehicles to the database +//If saving is off, the script will exit. +[_vehicle] ExecVM DZMSSaveVeh; +[_vehicle1] ExecVM DZMSSaveVeh; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Medical Outpost

+
+The Medical Outpost is under Survivor Control!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Minor SM2 Medical Outpost Mission has Ended."]; + +deleteMarker "DZMSMinMarker"; +deleteMarker "DZMSMinDot"; + +//Let the timer know the mission is over +DZMSMinDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Minor/SM4.sqf b/Server/@epochhive/addons/DZMS/Missions/Minor/SM4.sqf new file mode 100644 index 0000000..16372de --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Minor/SM4.sqf @@ -0,0 +1,67 @@ +/* + Bandit Heli Down! by lazyink (Full credit for code to TheSzerdi & TAW_Tonic) + Updated to new format by Vampire +*/ +private ["_missName","_coords","_crash","_crate"]; + +//Name of the Mission +_missName = "Helicopter Crash"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["O_Heli_Attack_02_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Helicopter Crash

+
+A Helicopter has Crashed! Go Check for Survivors!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMinMarker is a simple script that adds a marker to the location +[_coords,_missName] ExecVM DZMSAddMinMarker; + +//Add the scenery +_crash = createVehicle ["Land_Wreck_Heli_Attack_01_F", _coords,[], 0, "CAN_COLLIDE"]; + +//DZMSProtectObj prevents it from disappearing +[_crash] call DZMSProtectObj; + +//We create and fill the crates +_crate = createVehicle ["Box_NATO_WpsSpecial_F",[(_coords select 0) - 6, _coords select 1,0],[], 0, "CAN_COLLIDE"]; +[_crate,"weapons"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[_coords,3,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; +[_coords,3,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; +[_coords,3,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMinor"] call DZMSWaitMissionComp; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Helicopter Crash

+
+The Helicopter Crash has been Secured by Survivors!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Minor SM4 Crash Site Mission has Ended."]; +deleteMarker "DZMSMinMarker"; +deleteMarker "DZMSMinDot"; + +//Let the timer know the mission is over +DZMSMinDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Minor/SM5.sqf b/Server/@epochhive/addons/DZMS/Missions/Minor/SM5.sqf new file mode 100644 index 0000000..cdd452f --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Minor/SM5.sqf @@ -0,0 +1,65 @@ +/* + Hummer Wreck by lazyink (Full credit for code to TheSzerdi & TAW_Tonic) + Updated to new format by Vampire +*/ +private ["_missName","_coords","_crash","_crate"]; + +//Name of the Mission +_missName = "Hunter Crash"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["B_MRAP_01_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Hunter Crash

+
+A Hunter has crashed!\nGo Investigate the Cause of the Wreck!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMinMarker is a simple script that adds a marker to the location +[_coords,_missName] ExecVM DZMSAddMinMarker; + +//Add the scenery +_crash = createVehicle ["Land_Wreck_Hunter_F",_coords,[], 0, "CAN_COLLIDE"]; + +//DZMSProtectObj prevents it from disappearing +[_crash] call DZMSProtectObj; + +//Add and fill the crate +_crate = createVehicle ["Box_NATO_WpsSpecial_F",[(_coords select 0) - 14, _coords select 1,0],[], 0, "CAN_COLLIDE"]; +[_crate,"weapons"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[_coords,3,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; +[_coords,3,1,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMinor"] call DZMSWaitMissionComp; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Hunter Crash

+
+The Hunter has been Secured by Survivors!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Minor SM5 Humvee Crash Mission has Ended."]; +deleteMarker "DZMSMinMarker"; +deleteMarker "DZMSMinDot"; + +//Let the timer know the mission is over +DZMSMinDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Missions/Minor/SM6.sqf b/Server/@epochhive/addons/DZMS/Missions/Minor/SM6.sqf new file mode 100644 index 0000000..7e09c63 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Missions/Minor/SM6.sqf @@ -0,0 +1,77 @@ +/* + Weapon Truck Crash by lazyink (Full credit for code to TheSzerdi & TAW_Tonic) + Updated to new format by Vampire +*/ +private ["_missName","_coords","_crash","_crate","_crate1","_crate2"]; + +//Name of the Mission +_missName = "Weapons Van"; + +//DZMSFindPos loops BIS_fnc_findSafePos until it gets a valid result +_coords = call DZMSFindPos; + +_DZMSARRAYPICS = ["C_Van_01_transport_F"]; +_MISSIONIMAGE = selectRandom _DZMSARRAYPICS; + +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Weapons Van

+
+A Weapons Van has Crashed! Go Recover the Supplies!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; + +//DZMSAddMinMarker is a simple script that adds a marker to the location +[_coords,_missName] ExecVM DZMSAddMinMarker; + +//Add scenery +_crash = createVehicle ["Land_Wreck_Truck_dropside_F",_coords,[], 0, "CAN_COLLIDE"]; + +//DZMSProtectObj prevents it from disappearing +[_crash] call DZMSProtectObj; + +//Add and fill the boxes +_crate = createVehicle ["Box_NATO_WpsSpecial_F",[(_coords select 0) + 3, _coords select 1,0],[], 0, "CAN_COLLIDE"]; +[_crate,"weapons"] ExecVM DZMSBoxSetup; +[_crate] call DZMSProtectObj; + +_crate1 = createVehicle ["Box_NATO_WpsSpecial_F",[(_coords select 0) - 3, _coords select 1,0],[], 0, "CAN_COLLIDE"]; +[_crate1,"weapons"] ExecVM DZMSBoxSetup; +[_crate1] call DZMSProtectObj; + +_crate2 = createVehicle ["Box_NATO_AmmoVeh_F",[(_coords select 0) - 6, _coords select 1,0],[], 0, "CAN_COLLIDE"]; +[_crate2,"weapons"] ExecVM DZMSBoxSetup; +[_crate2] call DZMSProtectObj; + +//DZMSAISpawn spawns AI to the mission. +//Usage: [_coords, count, skillLevel, unitArray] +[_coords,3,0,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; +[_coords,3,0,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; +[_coords,3,0,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; +[_coords,3,0,"DZMSUnitsMinor"] call DZMSAISpawn; +sleep 1; + +//Wait until the player is within 30 meters and also meets the kill req +[_coords,"DZMSUnitsMinor"] call DZMSWaitMissionComp; + +//Let everyone know the mission is over +_picture = getText (configFile >> "cfgVehicles" >> _MISSIONIMAGE >> "picture"); //this will be %1 +_msg = parseText format [" +Weapons Van

+
+The Weapons Van has been Secured by Survivors!
", +_picture +]; + +_msg remoteexec ["DZMS_Remote_Message",-2]; +diag_log text format["[DZMS]: Minor SM6 Weapons Truck Mission has Ended."]; +deleteMarker "DZMSMinMarker"; +deleteMarker "DZMSMinDot"; + +//Let the timer know the mission is over +DZMSMinDone = true; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSAIKilled.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSAIKilled.sqf new file mode 100644 index 0000000..d1e5479 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSAIKilled.sqf @@ -0,0 +1,76 @@ +/* + DZMSAIKilled.sqf by Vampire + This function is called when an AI Unit is killed. + It handles the humanity allocation and body cleanup. +*/ + +private ["_unit","_player","_humanity","_banditkills"]; +_unit = _this select 0; +_player = _this select 1; + +//If the killer is a player, lets handle the humanity + +if (isPlayer _player) then { + private ["_banditkills","_humanity"]; + + //diag_log text format ["[DZMS]: Debug: Unit killed by %1 at %2", _player, mapGridPosition _unit]; + + //Lets grab some info + _humanity = _player getVariable ["humanity",0]; + _banditkills = _player getVariable ["banditKills",0]; + + //If the player gets humanity per config, lets give it + if (DZMSMissHumanity) then { + _player setVariable ["humanity",(_humanity + DZMSCntHumanity),true]; + }; + + //If this counts as a bandit kill, lets give it + if (DZMSCntBanditKls) then { + _player setVariable ["banditKills",(_banditkills + 1),true]; + }; + + //Lets inform the nearby AI of roughly the players position + //This makes the AI turn and react instead of laying around + { + if (((position _x) distance (position _unit)) <= 300) then { + _x reveal [_player, 4.0]; + } + } forEach allUnits; + +} else { + + //diag_log text format ["[DZMS]: Debug: Unit killed by %1 at %2", _player, mapGridPosition _unit]; + + if (DZMSRunGear) then { + //Since a player ran them over, or they died from unknown causes + //Lets strip their gear + if (!isNull (unitBackpack _unit)) then {removeBackpack _unit;}; + removeAllWeapons _unit; + { + _unit removeMagazine _x + } forEach magazines _unit; + }; + +}; + +if (DZMSCleanDeath) then { + _unit call DZMSScheduleCleanUp; + if (DZMSCleanDeath) exitWith {}; +}; + +_unit setVariable ["bodyName","unknown",false]; //Only needed on server to prevent immediate cleanup in sched_corpses.sqf + +if (DZMSUseNVG) then { + _unit removeWeapon "NVGoggles"; +}; + +if (DZMSUseRPG AND ("RPG7V" in (weapons _unit))) then { + _unit removeWeapon "CUP_launch_RPG7V"; + _unit removeMagazines "CUP_PG7V_M"; +}; + +//Dead body timer and cleanup +[DZMSBodyTime,10] call DZMSSleep; + +uiSleep 15; +_unit call DZMSScheduleCleanUp; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSAISpawn.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSAISpawn.sqf new file mode 100644 index 0000000..144a430 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSAISpawn.sqf @@ -0,0 +1,172 @@ +/* // + DZMSAISpawn.sqf by Vampire + Usage: [position,unitcount,skillLevel] execVM "dir\DZMSAISpawn.sqf"; + Position is the coordinates to spawn at [X,Y,Z] + UnitCount is the number of units to spawn + SkillLevel is the skill number defined in DZMSAIConfig.sqf +*/ // +private ["_position","_unitcount","_skill","_wpRadius","_xpos","_ypos","_unitGroup","_aiskin","_aivest","_aiheadgear","_unit","_weapon","_magazine","_wppos1","_wppos2","_wppos3","_wppos4","_wp1","_wp2","_wp3","_wp4","_wpfin","_unitArrayName","_unitMissionCount"]; +_position = _this select 0; +_unitcount = _this select 1; +_skill = _this select 2; +_unitArrayName = _this select 3; + +//diag_log text format ["[DZMS]: AI Pos:%1 / AI UnitNum: %2 / AI SkillLev:%3",_position,_unitcount,_skill]; + +_wpRadius = 20; + +_xpos = _position select 0; +_ypos = _position select 1; + +//Create the unit group. We use east by default. +_unitGroup = createGroup DZMSAISide; + +//Probably unnecessary, but prevents client AI stacking +if (!isServer) exitWith {}; + +for "_x" from 1 to _unitcount do { + + //Lets spawn the unit + _unit = _unitGroup createUnit [DZMSAIModel, [(_position select 0),(_position select 1),(_position select 2)], [], 10, "NONE"]; + + //Make him join the correct team + [_unit] joinSilent _unitGroup; + + //Add the behaviour + _unit enableAI "TARGET"; + _unit enableAI "AUTOTARGET"; + _unit enableAI "MOVE"; + _unit enableAI "ANIM"; + _unit enableAI "FSM"; + _unit setCombatMode "YELLOW"; + _unit setBehaviour "COMBAT"; + + //Remove the items he spawns with by default + removeAllWeapons _unit; + removeAllItems _unit; + removeAllAssignedItems _unit; + removeUniform _unit; + removeVest _unit; + removeBackpack _unit; + removeHeadgear _unit; + removeGoggles _unit; + + //Add Money to AI Wallets. Credit to Zupa for the original code. + if (DZMSAICheckWallet) then { + _cash = round(random 10) * 5; // adds money to ai wallets in 5Cr increments. + _unit setVariable["Crypto",_cash,true]; + + }; + + //Now we need to figure out their loadout, and assign it + + //Get the weapon array based on skill + _weaponArray = [_skill] call DZMSGetWeapon; + + _weapon = _weaponArray select 0; + _magazine = _weaponArray select 1; + + //diag_log text format ["[DZMS]: AI Weapon:%1 / AI Magazine:%2",_weapon,_magazine]; + + // Select a random uniform and put it on + _aiskin = selectRandom DZMSBanditSkins; + _unit forceAddUniform _aiskin; + + // If an array of helmets is provided then select a random one from that list + // Otherwise select random vanilla headgear + _aiheadgear = selectRandom DZMSBanditHelmets; + if(_aiheadgear != "") then { + _unit addHeadgear _aiheadgear; + } else { + _unit addHeadgear format ["H_%1_EPOCH", floor(random 91) + 1]; + }; + + // If an array of vests is provided then select a random one from that list + // Otherwise select a random vanilla vest + _aivest = selectRandom DZMSBanditVests; + if(_aivest != "") then { + _unit addvest _aivest; + } else { + _unit addvest format ["V_%1_EPOCH", floor(random 39) + 1]; + }; + + //Get the gear array + _aigearArray = [DZMSGear0,DZMSGear1,DZMSGear2,DZMSGear3,DZMSGear4]; + _gearmagazines = selectRandom _aigearArray; + + //Gear the AI backpack + _aipack = selectRandom DZMSPacklist; + + //Lets add it to the Unit + for "_i" from 1 to 3 do { + _unit addMagazine _magazine; + }; + _unit addWeapon _weapon; + _unit selectWeapon _weapon; + + _unit addBackpack _aipack; + + if (DZMSUseNVG) then { + _unit addWeapon "NVGoggles"; + }; + + { + _unit addMagazine _x + } forEach _gearmagazines; + + _aicskill = DZMSSkills1; + + //Lets set the skills + switch (_skill) do { + case 0: {_aicskill = DZMSSkills0;}; + case 1: {_aicskill = DZMSSkills1;}; + case 2: {_aicskill = DZMSSkills2;}; + case 3: {_aicskill = DZMSSkills3;}; + }; + + { + _unit setSkill [(_x select 0),(_x select 1)] + } forEach _aicskill; + + //Lets prepare the unit for cleanup + _unit addEventHandler ["Killed",{ [(_this select 0), (_this select 1)] ExecVM DZMSAIKilled; }]; + _unit setVariable ["DZMSAI", true]; +}; + +//Lets give a launcher if enabled +//The last _unit should still be defined from the FOR above +if (DZMSUseRPG) then { + _unit addWeapon "launch_RPG32_F"; + _unit addMagazine "RPG32_F"; + _unit addMagazine "RPG32_F"; +}; + +// These are 4 waypoints in a NSEW around the center +_wppos1 = [_xpos, _ypos+20, 0]; +_wppos2 = [_xpos+20, _ypos, 0]; +_wppos3 = [_xpos, _ypos-20, 0]; +_wppos4 = [_xpos-20, _ypos, 0]; + +// We add the 4 waypoints +_wp1 = _unitGroup addWaypoint [_wppos1, _wpRadius]; +_wp1 setWaypointType "MOVE"; +_wp2 = _unitGroup addWaypoint [_wppos2, _wpRadius]; +_wp2 setWaypointType "MOVE"; +_wp3 = _unitGroup addWaypoint [_wppos3, _wpRadius]; +_wp3 setWaypointType "MOVE"; +_wp4 = _unitGroup addWaypoint [_wppos4, _wpRadius]; +_wp4 setWaypointType "MOVE"; + +// Then we add a center waypoint that tells them to visit the rest +_wpfin = _unitGroup addWaypoint [[_xpos,_ypos, 0], _wpRadius]; +_wpfin setWaypointType "CYCLE"; + +//diag_log text format ["[DZMS]: Spawned %1 AI at %2",_unitcount,_position]; + +// load the unit groups into a passed array name so they can be cleaned up later +call compile format[" +%1 = %1 + (units _unitGroup); +_unitMissionCount = count %1; +",_unitArrayName]; + +diag_log text format["[DZMS]: (%3) %1 AI Spawned, %2 units in mission.",count (units _unitGroup),_unitMissionCount,_unitArrayName]; diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSAddMajMarker.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSAddMajMarker.sqf new file mode 100644 index 0000000..073535a --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSAddMajMarker.sqf @@ -0,0 +1,18 @@ +/* + Adds a marker for Major Missions. Only runs once. + DZMSMarkerLoop.sqf keeps this marker updated. + Usage: [coordinates,missionname] +*/ +private["_nul","_nil"]; +DZMSMajCoords = _this select 0; +DZMSMajName = _this select 1; + +_nul = createMarker ["DZMSMajMarker", DZMSMajCoords]; +"DZMSMajMarker" setMarkerColor "ColorBlue"; +"DZMSMajMarker" setMarkerShape "ELLIPSE"; +"DZMSMajMarker" setMarkerBrush "Grid"; +"DZMSMajMarker" setMarkerSize [175,175]; +_nil = createMarker ["DZMSMajDot", DZMSMajCoords]; +"DZMSMajDot" setMarkerColor "ColorBlack"; +"DZMSMajDot" setMarkerType "hd_warning"; +"DZMSMajDot" setMarkerText DZMSMajName; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSAddMinMarker.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSAddMinMarker.sqf new file mode 100644 index 0000000..49147c5 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSAddMinMarker.sqf @@ -0,0 +1,18 @@ +/* + Adds a marker for Major Missions. Only runs once. + DZMSMarkerLoop.sqf keeps this marker updated. + Usage: [coordinates,missionname] +*/ +private["_nul","_nil"]; +DZMSMinCoords = _this select 0; +DZMSMinName = _this select 1; + +_nul = createMarker ["DZMSMinMarker", DZMSMinCoords]; +"DZMSMinMarker" setMarkerColor "ColorOrange"; +"DZMSMinMarker" setMarkerShape "ELLIPSE"; +"DZMSMinMarker" setMarkerBrush "Grid"; +"DZMSMinMarker" setMarkerSize [150,150]; +_nil = createMarker ["DZMSMinDot", DZMSMinCoords]; +"DZMSMinDot" setMarkerColor "ColorBlack"; +"DZMSMinDot" setMarkerType "hd_warning"; +"DZMSMinDot" setMarkerText DZMSMinName; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSBox.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSBox.sqf new file mode 100644 index 0000000..5506e8d --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSBox.sqf @@ -0,0 +1,224 @@ +/* + Usage: [_crate,"type"] execVM "dir\DZMSBox.sqf"; + _crate is the crate to fill + "type" is the type of crate + "type" can be weapons or medical +*/ +//private ["_scount","_crate","_type","_sSelect","item","_ammo"]; + +_crate = _this select 0; +_type = _this select 1; + +// Clear the current cargo +clearWeaponCargoGlobal _crate; +clearMagazineCargoGlobal _crate; +clearBackpackCargoGlobal _crate; +clearItemCargoGlobal _crate; + +////////////////////////////////////////////////////////////////// +// Medical Crates +if (_type == "medical") then { + // load medical + _scount = count DZMSMedicalSupplies; + for "_x" from 0 to 40 do { + _sSelect = floor(random _sCount); + _item = DZMSMedicalSupplies select _sSelect; + _crate addMagazineCargoGlobal [_item,(round(random 2))]; + }; +}; + +/////////////////////////////////////////////////////////////////// +// Weapon Crate Small Yield +if (_type == "weapons") then { + // load grenades + _scount = count DZMSGrenadeList; + for "_x" from 0 to 2 do { + _sSelect = floor(random _sCount); + _item = DZMSGrenadeList select _sSelect; + _crate addMagazineCargoGlobal [_item,(round(random 2))]; + }; + + // load packs + _scount = count DZMSBackPackList; + for "_x" from 0 to 3 do { + _sSelect = floor(random _sCount); + _item = DZMSBackPackList select _sSelect; + _crate addBackpackCargoGlobal [_item,1]; + }; + + // load pistols + _scount = count DZMSpistolList; + for "_x" from 0 to 2 do { + _sSelect = floor(random _sCount); + _item = DZMSpistolList select _sSelect; + _crate addWeaponCargoGlobal [_item,1]; + _ammo = [] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines"); + if (count _ammo > 0) then { + _crate addMagazineCargoGlobal [(_ammo select 0),(round(random 8))]; + }; + }; + + //load sniper + _scount = count DZMSsniperList; + for "_x" from 0 to 1 do { + _sSelect = floor(random _sCount); + _item = DZMSsniperList select _sSelect; + _crate addWeaponCargoGlobal [_item,1]; + _ammo = [] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines"); + if (count _ammo > 0) then { + _crate addMagazineCargoGlobal [(_ammo select 0),(round(random 8))]; + }; + }; + + //load mg + _scount = count DZMSmgList; + for "_x" from 0 to 1 do { + _sSelect = floor(random _sCount); + _item = DZMSmgList select _sSelect; + _crate addWeaponCargoGlobal [_item,1]; + _ammo = [] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines"); + if (count _ammo > 0) then { + _crate addMagazineCargoGlobal [(_ammo select 0),(round(random 8))]; + }; + }; + + //load primary + _scount = count DZMSprimaryList; + for "_x" from 0 to 2 do { + _sSelect = floor(random _sCount); + _item = DZMSprimaryList select _sSelect; + _crate addWeaponCargoGlobal [_item,1]; + _ammo = [] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines"); + if (count _ammo > 0) then { + _crate addMagazineCargoGlobal [(_ammo select 0),(round(random 8))]; + }; + }; +}; + +/////////////////////////////////////////////////////////////////// +// Weapon Crate Large Yield +if (_type == "weapons2") then { + // load grenades + _scount = count DZMSGrenadeList; + for "_x" from 0 to 5 do { + _sSelect = floor(random _sCount); + _item = DZMSGrenadeList select _sSelect; + _crate addMagazineCargoGlobal [_item,(round(random 2))]; + }; + + // load packs + _scount = count DZMSBackPackList; + for "_x" from 0 to 3 do { + _sSelect = floor(random _sCount); + _item = DZMSBackPackList select _sSelect; + _crate addBackpackCargoGlobal [_item,1]; + }; + + // load pistols + _scount = count DZMSpistolList; + for "_x" from 0 to 3 do { + _sSelect = floor(random _sCount); + _item = DZMSpistolList select _sSelect; + _crate addWeaponCargoGlobal [_item,1]; + _ammo = [] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines"); + if (count _ammo > 0) then { + _crate addMagazineCargoGlobal [(_ammo select 0),(round(random 8))]; + }; + }; + + //load sniper + _scount = count DZMSsniperList; + for "_x" from 0 to 3 do { + _sSelect = floor(random _sCount); + _item = DZMSsniperList select _sSelect; + _crate addWeaponCargoGlobal [_item,1]; + _ammo = [] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines"); + if (count _ammo > 0) then { + _crate addMagazineCargoGlobal [(_ammo select 0),(round(random 8))]; + }; + }; + + //load mg + _scount = count DZMSmgList; + for "_x" from 0 to 3 do { + _sSelect = floor(random _sCount); + _item = DZMSmgList select _sSelect; + _crate addWeaponCargoGlobal [_item,1]; + _ammo = [] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines"); + if (count _ammo > 0) then { + _crate addMagazineCargoGlobal [(_ammo select 0),(round(random 8))]; + }; + }; + + //load primary + _scount = count DZMSprimaryList; + for "_x" from 0 to 5 do { + _sSelect = floor(random _sCount); + _item = DZMSprimaryList select _sSelect; + _crate addWeaponCargoGlobal [_item,1]; + _ammo = [] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines"); + if (count _ammo > 0) then { + _crate addMagazineCargoGlobal [(_ammo select 0),(round(random 8))]; + }; + }; +}; + +/////////////////////////////////////////////////////////////////// +// Epoch Supply Small Yield +if (_type == "supply") then { + // load tools + _scount = count DZMSConTools; + for "_x" from 0 to 2 do { + _sSelect = floor(random _sCount); + _item = DZMSConTools select _sSelect; + _crate addWeaponCargoGlobal [_item, 1]; + }; + + // load construction supplies + _scount = count DZMSConSupply; + for "_x" from 0 to 30 do { + _sSelect = floor(random _sCount); + _item = DZMSConSupply select _sSelect; + _crate addMagazineCargoGlobal [_item,1]; + }; +}; + +/////////////////////////////////////////////////////////////////// +// Epoch Supply Large Yield +if (_type == "supply2") then { + // load tools + _scount = count DZMSConTools; + for "_x" from 0 to 5 do { + _sSelect = floor(random _sCount); + _item = DZMSConTools select _sSelect; + _crate addWeaponCargoGlobal [_item, 1]; + }; + + // load construction supplies + _scount = count DZMSConSupply; + for "_x" from 0 to 40 do { + _sSelect = floor(random _sCount); + _item = DZMSConSupply select _sSelect; + _crate addMagazineCargoGlobal [_item,1]; + }; + + // load prefab buildables + _scount = count DZMSBuildables; + for "_x" from 0 to 15 do { + _sSelect = floor(random _sCount); + _item = DZMSBuildables select _sSelect; + _crate addMagazineCargoGlobal [_item,1]; + }; +}; + +/////////////////////////////////////////////////////////////////// +// Epoch Money Crates +if (_type == "highvalue") then { + // load money + _scount = count DZMSHighValue; + for "_x" from 0 to 3 do { + _sSelect = floor(random _sCount); + _item = DZMSHighValue select _sSelect; + _crate addMagazineCargoGlobal [_item,1]; + }; +}; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSMajTimer.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSMajTimer.sqf new file mode 100644 index 0000000..5fb3646 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSMajTimer.sqf @@ -0,0 +1,44 @@ +/* + DayZ Mission System Timer by Vampire + Based on fnc_hTime by TAW_Tonic and SMFinder by Craig + This function is launched by the Init and runs continuously. +*/ +private["_run","_timeDiff","_timeVar","_wait","_cntMis","_ranMis","_varName"]; + +//Let's get our time Min and Max +_timeDiff = DZMSMajorMax - DZMSMajorMin; +_timeVar = _timeDiff + DZMSMajorMin; + +diag_log text format ["[DZMS]: Major Mission Clock Starting!"]; + +//Lets get the loop going +_run = true; +while {_run} do +{ + //Lets wait the random time + _wait = round(random _timeVar); + [_wait,5] call DZMSSleep; + + //Let's check that there are missions in the array. + //If there are none, lets end the timer. + _cntMis = count DZMSMajorArray; + if (_cntMis == 0) exitWith { /* Exit The Loop */ }; + + //Lets pick a mission + _ranMis = floor (random _cntMis); + _varName = DZMSMajorArray select _ranMis; + + // clean up all the existing units before starting a new one + {if (alive _x) then {_x call DZMSScheduleCleanUp;};} forEach DZMSUnitsMajor; + + // rebuild the array for the next mission + DZMSUnitsMajor = []; + + //Let's Run the Mission + [] execVM format ["\z\addons\dayz_server\DZMS\Missions\Major\%1.sqf",_varName]; + diag_log text format ["[DZMS]: Running Major Mission %1.",_varName]; + + //Let's wait for it to finish or timeout + waitUntil {DZMSMajDone}; + DZMSMajDone = false; +}; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSMarkerLoop.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSMarkerLoop.sqf new file mode 100644 index 0000000..14a089d --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSMarkerLoop.sqf @@ -0,0 +1,49 @@ +/* + Marker Resetter by Vampire + Marker Resetter checks if a Mission is running and resets the marker for JIPs +*/ +private["_run","_nul","_nil"]; + +diag_log text format ["[DZMS]: Mission Marker Loop for JIPs Starting!"]; + +//Lets define these +if (isNil "DZMSMajCoords")then{DZMSMajCoords = [0,0,0];}; +if (isNil "DZMSMinCoords")then{DZMSMinCoords = [0,0,0];}; + +//Lets start the timer +_run = true; +while {_run} do +{ + [25,5] call DZMSSleep; // sleep 25 seconds + //If the marker exists (meaning the mission is active) lets delete it and re-add it + if (!(getMarkerColor "DZMSMajMarker" == "")) then { + deleteMarker "DZMSMajMarker"; + deleteMarker "DZMSMajDot"; + //Re-Add the markers + _nul = createMarker ["DZMSMajMarker", DZMSMajCoords]; + "DZMSMajMarker" setMarkerColor "ColorBlue"; + "DZMSMajMarker" setMarkerShape "ELLIPSE"; + "DZMSMajMarker" setMarkerBrush "Grid"; + "DZMSMajMarker" setMarkerSize [175,175]; + _zap = createMarker ["DZMSMajDot", DZMSMajCoords]; + "DZMSMajDot" setMarkerColor "ColorBlack"; + "DZMSMajDot" setMarkerType "hd_warning"; + "DZMSMajDot" setMarkerText DZMSMajName; + }; + //Lets do the same for the minor mission + if (!(getMarkerColor "DZMSMinMarker" == "")) then { + deleteMarker "DZMSMinMarker"; + deleteMarker "DZMSMinDot"; + //Re-Add the markers + _nil = createMarker ["DZMSMinMarker", DZMSMinCoords]; + "DZMSMinMarker" setMarkerColor "ColorOrange"; + "DZMSMinMarker" setMarkerShape "ELLIPSE"; + "DZMSMinMarker" setMarkerBrush "Grid"; + "DZMSMinMarker" setMarkerSize [150,150]; + _zip = createMarker ["DZMSMinDot", DZMSMinCoords]; + "DZMSMinDot" setMarkerColor "ColorBlack"; + "DZMSMinDot" setMarkerType "hd_warning"; + "DZMSMinDot" setMarkerText DZMSMinName; + }; + //Now we wait another 25 seconds +}; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSMinTimer.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSMinTimer.sqf new file mode 100644 index 0000000..cf8553a --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSMinTimer.sqf @@ -0,0 +1,44 @@ +/* + DayZ Mission System Timer by Vampire + Based on fnc_hTime by TAW_Tonic and SMFinder by Craig + This function is launched by the Init and runs continuously. +*/ +private["_run","_timeDiff","_timeVar","_wait","_cntMis","_ranMis","_varName"]; + +//Let's get our time Min and Max +_timeDiff = DZMSMinorMax - DZMSMinorMin; +_timeVar = _timeDiff + DZMSMinorMin; + +diag_log text format ["[DZMS]: Minor Mission Clock Starting!"]; + +//Lets get the loop going +_run = true; +while {_run} do +{ + //Lets wait the random time + _wait = round(random _timeVar); + [_wait,5] call DZMSSleep; + + //Let's check that there are missions in the array. + //If there are none, lets end the timer. + _cntMis = count DZMSMinorArray; + if (_cntMis == 0) exitWith { /* Exit The Loop */ }; + + //Lets pick a mission + _ranMis = floor (random _cntMis); + _varName = DZMSMinorArray select _ranMis; + + // clean up all the existing units before starting a new one + {if (alive _x) then {_x call DZMSScheduleCleanUp;};} forEach DZMSUnitsMinor; + + // rebuild the array for the next mission + DZMSUnitsMinor = []; + + //Let's Run the Mission + [] execVM format ["\z\addons\dayz_server\DZMS\Missions\Minor\%1.sqf",_varName]; + diag_log text format ["[DZMS]: Running Minor Mission %1.",_varName]; + + //Let's wait for it to finish or timeout + waitUntil {DZMSMinDone}; + DZMSMinDone = false; +}; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSSaveToHive.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSSaveToHive.sqf new file mode 100644 index 0000000..7bc509e --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSSaveToHive.sqf @@ -0,0 +1,38 @@ +/* + Save To Hive by Vampire + This function attempts to save vehicles to the database if enabled when a mission ends. + Usage: [Vehicle] +*/ +_object = _this select 0; +_class = typeOf _object; +_dir = getDir _object; +_pos = getPos _object; +_worldspace = [_dir,_pos]; + +//If they have vehicle saving off, then this script needs to do nothing. +if (!(DZMSSaveVehicles)) exitWith {}; + +//Check if vehicle is null or dead +if (isNull _object OR !alive _object OR (damage _object) > .97) exitWith {}; + +//Get a random fuel count to set +_ranFuel = random 1; +if (_ranFuel < .1) then {_ranFuel = .1;}; + +//Lets get it ready for the user +_object setvelocity [0,0,1]; +_object setFuel _ranFuel; +_object setVehicleLock "UNLOCKED"; + +clearWeaponCargoGlobal _object; +clearMagazineCargoGlobal _object; +clearBackpackCargoGlobal _object; +clearItemCargoGlobal _object; + +//_object allowDamage false; +//_object setVariable ["lastUpdate", time]; +//_object setVariable ["CharacterID", "0", true]; + +//sleep 1; +//_object allowDamage true; + \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/Scripts/DZMSVehiclePatrol.sqf b/Server/@epochhive/addons/DZMS/Scripts/DZMSVehiclePatrol.sqf new file mode 100644 index 0000000..6f1ac43 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/Scripts/DZMSVehiclePatrol.sqf @@ -0,0 +1,255 @@ +if (!isServer)exitWith{}; + +private ["_position","_skill","_wpRadius","_xpos","_ypos","_unitGroup","_aiskin","_weapon","_magazine","_wppos1","_wppos2","_wppos3","_wppos4","_wp1","_wp2","_wp3","_wp4","_wpfin","_unitArrayName","_unitMissionCount","_patrol","_pilot","_gunner"]; + +_position = _this select 0; +_wpRadius = _this select 1; +_skill = _this select 2; +_unitArrayName = _this select 3; + +_xpos = _position select 0; +_ypos = _position select 1; + +//diag_log text format ["[DZMS_Patrol]: AI Pos:%1 / AI SkillLev:%2",_position,_skill]; + +_unitGroup = createGroup DZMSAISide; + +//diag_log text format ["[DZMS_Patrol]: Create the Driver"]; + +_pilot = _unitGroup createUnit [DZMSAIModel, [0,0,0], [], 1, "NONE"]; +[_pilot] joinSilent _unitGroup; + + //Add the behaviour + _pilot enableAI "TARGET"; + _pilot enableAI "AUTOTARGET"; + _pilot enableAI "MOVE"; + _pilot enableAI "ANIM"; + _pilot enableAI "FSM"; + _pilot setCombatMode "RED"; + _pilot setBehaviour "COMBAT"; + + //Remove the items he spawns with by default + removeAllWeapons _pilot; + removeAllItems _pilot; + removeAllAssignedItems _pilot; + removeUniform _pilot; + removeVest _pilot; + removeBackpack _pilot; + removeHeadgear _pilot; + removeGoggles _pilot; + + //Now we need to figure out their loadout, and assign it + + //Get the weapon array based on skill + _weaponArray = [_skill - 1] call DZMSGetWeapon; + + _weapon = _weaponArray select 0; + _magazine = _weaponArray select 1; + + // Select a random uniform and put it on + _aiskin = selectRandom DZMSBanditSkins; + _pilot forceAddUniform _aiskin; + + // If an array of helmets is provided then select a random one from that list + // Otherwise select random vanilla headgear + _aiheadgear = selectRandom DZMSBanditHelmets; + if(_aiheadgear != "") then { + _pilot addHeadgear _aiheadgear; + } else { + _pilot addHeadgear format ["H_%1_EPOCH", floor(random 91) + 1]; + }; + + // If an array of vests is provided then select a random one from that list + // Otherwise select a random vanilla vest + _aivest = selectRandom DZMSBanditVests; + if(_aivest != "") then { + _pilot addvest _aivest; + } else { + _pilot addvest format ["V_%1_EPOCH", floor(random 39) + 1]; + }; + + //Get the gear array + _aigearArray = [DZMSGear0,DZMSGear1,DZMSGear2,DZMSGear3,DZMSGear4]; + _gearmagazines = _aigearArray call BIS_fnc_selectRandom; + + //Gear the AI backpack + _aipack = selectRandom DZMSPacklist; + + //Lets add it to the Unit + for "_i" from 1 to 3 do { + _pilot addMagazine _magazine; + }; + _pilot addWeapon _weapon; + _pilot selectWeapon _weapon; + + _pilot addBackpack _aipack; + + if (DZMSUseNVG) then { + _pilot addWeapon "NVGoggles"; + }; + + { + _pilot addMagazine _x + } forEach _gearmagazines; + + +//diag_log text format ["[DZMS_Patrol]: Create Gunner"]; + +_aiskin = DZMSBanditSkins call BIS_fnc_selectRandom; +_gunner = _unitGroup createUnit [DZMSAIModel, [0,0,0], [], 1, "NONE"]; +[_gunner] joinSilent _unitGroup; + + //Add the behaviour + _gunner enableAI "TARGET"; + _gunner enableAI "AUTOTARGET"; + _gunner enableAI "MOVE"; + _gunner enableAI "ANIM"; + _gunner enableAI "FSM"; + _gunner setCombatMode "RED"; + _gunner setBehaviour "COMBAT"; + + //Remove the items he spawns with by default + removeAllWeapons _gunner; + removeAllItems _gunner; + removeAllAssignedItems _gunner; + removeUniform _gunner; + removeVest _gunner; + removeBackpack _gunner; + removeHeadgear _gunner; + removeGoggles _gunner; + + //Now we need to figure out their loadout, and assign it + + //Get the weapon array based on skill + _weaponArray = [_skill - 1] call DZMSGetWeapon; + + _weapon = _weaponArray select 0; + _magazine = _weaponArray select 1; + + // Select a random uniform and put it on + _aiskin = selectRandom DZMSBanditSkins; + _gunner forceAddUniform _aiskin; + + // If an array of helmets is provided then select a random one from that list + // Otherwise select random vanilla headgear + _aiheadgear = selectRandom DZMSBanditHelmets; + if(_aiheadgear != "") then { + _gunner addHeadgear _aiheadgear; + } else { + _gunner addHeadgear format ["H_%1_EPOCH", floor(random 91) + 1]; + }; + + // If an array of vests is provided then select a random one from that list + // Otherwise select a random vanilla vest + _aivest = selectRandom DZMSBanditVests; + if(_aivest != "") then { + _gunner addvest _aivest; + } else { + _gunner addvest format ["V_%1_EPOCH", floor(random 39) + 1]; + }; + + //Get the gear array + _aigearArray = [DZMSGear0,DZMSGear1,DZMSGear2,DZMSGear3,DZMSGear4]; + _gearmagazines = _aigearArray call BIS_fnc_selectRandom; + + //Gear the AI backpack + _aipack = selectRandom DZMSPacklist; + + //Lets add it to the Unit + for "_i" from 1 to 3 do { + _gunner addMagazine _magazine; + }; + _gunner addWeapon _weapon; + _gunner selectWeapon _weapon; + + _gunner addBackpack _aipack; + + if (DZMSUseNVG) then { + _gunner addWeapon "NVGoggles"; + }; + + { + _gunner addMagazine _x + } forEach _gearmagazines; + + _aicskill = DZMSSkills1; + + //Lets set the skills + switch (_skill) do { + case 0: {_aicskill = DZMSSkills0;}; + case 1: {_aicskill = DZMSSkills1;}; + case 2: {_aicskill = DZMSSkills2;}; + case 3: {_aicskill = DZMSSkills3;}; + }; + + {_gunner setSkill [(_x select 0),(_x select 1)]} forEach _aicskill; + {_pilot setSkill [(_x select 0),(_x select 1)]} forEach _aicskill; + + + //Lets prepare the unit for cleanup + _pilot addEventHandler ["Killed",{ [(_this select 0), (_this select 1)] ExecVM DZMSAIKilled; }]; + _pilot setVariable ["DZMSAI", true]; + _gunner addEventHandler ["Killed",{ [(_this select 0), (_this select 1)] ExecVM DZMSAIKilled; }]; + _gunner setVariable ["DZMSAI", true]; + +//diag_log text format ["[DZMS_Patrol]: Create the Vehicle"]; + +_patrol = ["patrol"] call DZMSGetVeh; +_patrol = createVehicle [_patrol, [(_position select 0) + _wpRadius,(_position select 1) + _wpRadius, 0], [], 0, "CAN_COLLIDE"]; +[_patrol] call DZMSSetupVehicle; +_patrol setFuel 1; +_patrol engineOn true; +_patrol setVehicleAmmo 1; +_patrol allowCrewInImmobile true; +clearWeaponCargoGlobal _patrol; +clearMagazineCargoGlobal _patrol; +clearBackpackCargoGlobal _patrol; +clearItemCargoGlobal _patrol; + +//PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_patrol]; + +_pilot assignAsDriver _patrol; +_pilot moveInDriver _patrol; +_gunner assignAsGunner _patrol; +_gunner moveingunner _patrol; + +//diag_log text format ["[DZMS_Patrol]: Spawn the Patrol Group"]; +_patrol call EPOCH_server_setVToken; +addToRemainsCollector [_patrol]; // Add the vehicle to ARMA's wreck handler + +_unitGroup allowFleeing 0; +_unitGroup setBehaviour "AWARE"; +// These are 4 waypoints in a NorthSEW around the center +_wppos1 = [_xpos, _ypos+50, 0]; +_wppos2 = [_xpos+50, _ypos, 0]; +_wppos3 = [_xpos, _ypos-50, 0]; +_wppos4 = [_xpos-50, _ypos, 0]; + + +//diag_log text format ["[DZMS_Patrol]: Add Waypoints"]; + +// We add the 4 waypoints +_wp1 = _unitGroup addWaypoint [_wppos1, _wpRadius]; +_wp1 setWaypointType "MOVE"; +_wp2 = _unitGroup addWaypoint [_wppos2, _wpRadius]; +_wp2 setWaypointType "MOVE"; +_wp3 = _unitGroup addWaypoint [_wppos3, _wpRadius]; +_wp3 setWaypointType "MOVE"; +_wp4 = _unitGroup addWaypoint [_wppos4, _wpRadius]; +_wp4 setWaypointType "MOVE"; + + +// Then we add a center waypoint that tells them to visit the rest +_wpfin = _unitGroup addWaypoint [[_xpos,_ypos, 0], _wpRadius]; +_wpfin setWaypointType "CYCLE"; +_wpfin setWaypointCompletionRadius 150; + +// load the unit groups into a passed array name so they can be cleaned up later +call compile format[" +%1 = %1 + (units _unitGroup); +_unitMissionCount = count %1; +",_unitArrayName]; + +diag_log text format["[DZMS]: (%3) %1 AI Spawned in patrol vehicle, %2 units in mission.",count (units _unitGroup),_unitMissionCount,_unitArrayName]; + +//diag_log text format ["[DZMS_Patrol]: Finished the Patrol Create"]; \ No newline at end of file diff --git a/Server/@epochhive/addons/DZMS/config.cpp b/Server/@epochhive/addons/DZMS/config.cpp new file mode 100644 index 0000000..bea8a24 --- /dev/null +++ b/Server/@epochhive/addons/DZMS/config.cpp @@ -0,0 +1,34 @@ +/* + for DBD Clan + By Ghostrider-DBD- + Copyright 2016 + Last Modified 3-14-17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +class CfgPatches { + class DZMS { + units[] = {}; + weapons[] = {}; + requiredVersion = 0.1; + requiredAddons[] = {}; + }; +}; + +class CfgFunctions { + class DZMS_init { + class DZMS_start { + file = "\z\addons\dayz_server\DZMS"; + class DZMSInit { + //preInit = 1; + postInit = 1; + }; + }; + }; +}; diff --git a/Server/@epochhive/addons/DZMS/fn_DZMSInit.sqf b/Server/@epochhive/addons/DZMS/fn_DZMSInit.sqf new file mode 100644 index 0000000..e9f1f8c --- /dev/null +++ b/Server/@epochhive/addons/DZMS/fn_DZMSInit.sqf @@ -0,0 +1,62 @@ +/* + 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. +*/ + +// Error Check +if (!isServer) exitWith { diag_log text format ["[DZMS]: DZMS is Installed Incorrectly! DZMS is not Running!"]; }; +if (!isnil("DZMSInstalled")) exitWith { diag_log text format ["[DZMS]: DZMS is Installed Twice or Installed Incorrectly!"]; }; + +// Global for other scripts to check if DZMS is installed. +DZMSInstalled = true; + +diag_log text format ["[DZMS]: Starting DayZ Mission System."]; + +// Let's Load the Mission Configuration +call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\DZMSConfig.sqf"; + +// These are Extended configuration files the user can adjust if wanted +call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\ExtConfig\DZMSCrateConfig.sqf"; +call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\ExtConfig\DZMSAIConfig.sqf"; + +// Report the version +diag_log text format ["[DZMS]: Currently Running Version: %1", DZMSVersion]; + +// Lets check for a copy-pasted config file +if (DZMSVersion != "3.01_A3") 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!"]; +}; + +diag_log text format ["[DZMS]: Mission and Extended Configuration Loaded!"]; + +// Lets get the map name for mission location purposes +DZMSWorldName = toLower format ["%1", worldName]; +diag_log text format["[DZMS]: %1 Detected. Map Specific Settings Adjusted!", DZMSWorldName]; + +DZMS_Remote_Message = compilefinal " + _this spawn { + + hintSilent _this; + playSound 'RadioAmbient6'; + + }; +"; +publicvariable 'DZMS_Remote_Message'; + +// Lets load our functions +call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZMS\DZMSFunctions.sqf"; + +// these arrays are used to hold units for each mission type +DZMSUnitsMinor = []; +DZMSUnitsMajor = []; + +// Let's get the clocks running! +[] ExecVM DZMSMajTimer; +[] ExecVM DZMSMinTimer; +DZMSMajDone = false; +DZMSMinDone = false; + +// Let's get the Marker Re-setter running for JIPs to stay updated +[] ExecVM DZMSMarkerLoop; From 9806dfb7267c63de8cce64690fb90dd199aa4c3e Mon Sep 17 00:00:00 2001 From: Zepheris Date: Tue, 18 Feb 2020 09:20:12 -0700 Subject: [PATCH 2/2] Forgot to adjust log rotator --- Server/Tools/log-rotator.cmd | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Server/Tools/log-rotator.cmd b/Server/Tools/log-rotator.cmd index 04fe8c0..596a80d 100644 --- a/Server/Tools/log-rotator.cmd +++ b/Server/Tools/log-rotator.cmd @@ -3,7 +3,7 @@ :::::::::::::: CONFIG :::::::::::::::::: :: Set your Arma3 Epoch Base installation directory. LEAVE OFF THE ENDING \ -set arma3srvpath=C:\Program Files (x86)\Steam\SteamApps\common\Arma 3 +set arma3srvpath=F:\GameServers\Arma3\arma3epoch :: Set your Default server profile name. This is the name of the directory that stores your server.cfg :: This will be used in the case that you don't launch this script without the server param. @@ -88,6 +88,7 @@ copy "%arma3srvpath%\%servername%\BattlEye\mpeventhandler.log" "%arma3srvpath%\% copy "%arma3srvpath%\DB\dump.rdb" "%arma3srvpath%\DBbackups\RotatedLogs\%dtStamp%\DBbackups\dump.rdb" copy "%arma3srvpath%\%servername%\A3Master_*.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\A3Master_*.log" copy "%arma3srvpath%\%servername%\arma3server_*.rpt" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\arma3server_*.rpt" +copy "%arma3srvpath%\%servername%\Epochserver_*.rpt" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\arma3server_*.rpt" echo (%date%) (%time%) Logs are backed up now... @@ -108,6 +109,7 @@ del /Q /F "%arma3srvpath%\%servername%\BattlEye\mpeventhandler.log" del /Q /F "%arma3srvpath%\%servername%\BattlEye\setdamage.log" del /Q /F "%arma3srvpath%\%servername%\A3Master_*.log" del /Q /F "%arma3srvpath%\%servername%\arma3server_*.rpt" +del /Q /F "%arma3srvpath%\%servername%\Epochserver_*.rpt" if %debug% == 1 ( timeout %dbsecs%