Merge branch 'Testing'

This commit is contained in:
Zepheris 2020-02-18 09:21:00 -07:00
commit 8f5a73fd19
32 changed files with 2507 additions and 1 deletions

View File

@ -0,0 +1,6 @@
///////<HEADER>///////
prefix=z\addons\dayz_server\DZMS
Mikero=DePbo.dll
Pbo Type is: Arma Addon
Sha: 'DFE97C2881052A87B307B178760BF5A36E72A2DE'
//////</HEADER>//////

View File

@ -0,0 +1 @@
z\addons\dayz_server\DZMS

View File

@ -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";

View File

@ -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!"];

View File

@ -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

View File

@ -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"
];

View File

@ -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"];

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>C-192 Crash</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A C-192 Carrying Supplies has Crashed. Bandits are Securing the Cargo!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>C-192 Crash</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Crash Site has been Secured by Survivors!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>NATO Weapons Cache</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>Bandits have Overrun a NATO Weapons Cache!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>NATO Weapons Cache</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Weapons Cache is Under Survivor Control!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>CH-67 Landing</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A CH-67 with building supplies has landed! Secure the chopper and the building supplies!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>CH-67 Landing</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>Good work you've secured the helicopter!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Helicopter Landing</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A Supply Helicopter has been Forced to Land! Stop the Bandits from Taking Control of it!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Helicopter Landing</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Helicopter has been Taken by Survivors!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Medical Cache</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>Bandits have Taken Over a Survivor Medical Cache!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Medical Cache</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Medical Cache is Under Survivor Control!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Large Ammo Cache</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A gear cache has been airdropped! Secure it for yourself!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Large Ammo Cache</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The gear cache has been found, nice work, enjoy the spoils!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Bandit Firebase</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A firebase is being constructed! Stop the bandits and secure the construction materials for yourself!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Bandit Firebase</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>Survivors have secured the construction materials!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Bandit Squad</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A Bandit Squad has been spotted! Stop them from completing their patrol!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Bandit Squad</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Bandit Squad has been wiped out!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Medical Outpost</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>Bandits have established a Medical Outpost! Go Secure their Medical Supplies!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Medical Outpost</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Medical Outpost is under Survivor Control!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Helicopter Crash</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A Helicopter has Crashed! Go Check for Survivors!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Helicopter Crash</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Helicopter Crash has been Secured by Survivors!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Hunter Crash</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A Hunter has crashed!\nGo Investigate the Cause of the Wreck!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Hunter Crash</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Hunter has been Secured by Survivors!</t><br/>",
_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;

View File

@ -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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Weapons Van</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>A Weapons Van has Crashed! Go Recover the Supplies!</t><br/>",
_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 ["
<t size='2'font='TahomaB'align='Center'color='#66CDAA'>Weapons Van</t><br/><br/>
<t align='center'><img size='7' image='%1'/></t><br/>
<t size='1'font='TahomaB'align='Center'color='#FFFFFF'>The Weapons Van has been Secured by Survivors!</t><br/>",
_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;

View File

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

View File

@ -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];

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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"];

View File

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

View File

@ -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]: <ERROR> DZMS is Installed Incorrectly! DZMS is not Running!"]; };
if (!isnil("DZMSInstalled")) exitWith { diag_log text format ["[DZMS]: <ERROR> 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;

View File

@ -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%