Tweaks + More Configs + Fix

You can now give AI general gear items (like food/drink/meds) per class

Removed old mission files

Added debug logging to AddMissionToMonitor

I accidentally switched _markerDot and markerXtime variables in debug
logging for removemarkers
This commit is contained in:
eraser1 2015-08-29 20:30:56 -05:00
parent dbcee0ae9e
commit 02696c3406
14 changed files with 54 additions and 315 deletions

View File

@ -14,6 +14,7 @@ DMS_DEBUG = false;
DMS_StaticMission = false; // Enable/disable static missions DMS_StaticMission = false; // Enable/disable static missions
DMS_TimeBetweenMissions = [600,900]; // [Minimum,Maximum] time between missions (if mission limit is not reached) | DEFAULT: 10-15 mins DMS_TimeBetweenMissions = [600,900]; // [Minimum,Maximum] time between missions (if mission limit is not reached) | DEFAULT: 10-15 mins
DMS_MissionTimeOut = [900,1800]; // [Minimum,Maximum] time it will take for a mission to timeout | Default: 15-30 mins DMS_MissionTimeOut = [900,1800]; // [Minimum,Maximum] time it will take for a mission to timeout | Default: 15-30 mins
DMS_AI_KillPercent = 100; // The percent amount of AI that need to be killed for "killPercent" mission requirement
DMS_MissionMarkerWinDot = true; // Keep the mission marker dot with a "win" message after mission is over DMS_MissionMarkerWinDot = true; // Keep the mission marker dot with a "win" message after mission is over
DMS_MissionMarkerLoseDot = true; // Keep the mission marker dot with a "lose" message after mission is over DMS_MissionMarkerLoseDot = true; // Keep the mission marker dot with a "lose" message after mission is over
@ -41,7 +42,9 @@ DMS_DEBUG = false;
DMS_MinServerFPS = 10; // Minimum server FPS for missions to start DMS_MinServerFPS = 10; // Minimum server FPS for missions to start
//Mission notification settings //Mission notification settings
DMS_PlayerNotificationTypes = ["standardHintRequest"]; // Notification types. Supported values are: ["advancedHintRequest","dynamicTextRequest","standardHintRequest","systemChatRequest"] DMS_PlayerNotificationTypes = [ // Notification types. Supported values are: ["advancedHintRequest","dynamicTextRequest","standardHintRequest","systemChatRequest"]
"standardHintRequest"
];
DMS_dynamicText_Size = 0.55; // Dynamic Text size for "dynamicTextRequest" notification type. DMS_dynamicText_Size = 0.55; // Dynamic Text size for "dynamicTextRequest" notification type.
DMS_dynamicText_Color = "#FFCC00"; // Dynamic Text color for "dynamicTextRequest" notification type. DMS_dynamicText_Color = "#FFCC00"; // Dynamic Text color for "dynamicTextRequest" notification type.
@ -140,7 +143,15 @@ DMS_DEBUG = false;
DMS_assault_optic_chance = 75; // Percentage chance that an Assault Class AI will get an optic DMS_assault_optic_chance = 75; // Percentage chance that an Assault Class AI will get an optic
DMS_assault_bipod_chance = 25; // Percentage chance that an Assault Class AI will get a bipod DMS_assault_bipod_chance = 25; // Percentage chance that an Assault Class AI will get a bipod
DMS_assault_suppressor_chance = 25; // Percentage chance that an Assault Class AI will get a suppressor DMS_assault_suppressor_chance = 25; // Percentage chance that an Assault Class AI will get a suppressor
DMS_assault_items = ["ItemGPS"];
DMS_assault_items = [ // Items for Assault Class AI (Loot stuff that goes in uniform/vest/backpack)
"Exile_Item_InstaDoc",
"Exile_Item_BBQSandwich",
"Exile_Item_Energydrink"
];
DMS_assault_equipment = [ // Equipment for Assault Class AI (stuff that goes in toolbelt slots)
"ItemGPS"
];
DMS_assault_helmets = [ // Helmets for Assault Class DMS_assault_helmets = [ // Helmets for Assault Class
"H_HelmetSpecB_paint1", "H_HelmetSpecB_paint1",
"H_HelmetIA_camo", "H_HelmetIA_camo",
@ -208,7 +219,16 @@ DMS_DEBUG = false;
DMS_MG_optic_chance = 50; // Percentage chance that an MG Class AI will get an optic DMS_MG_optic_chance = 50; // Percentage chance that an MG Class AI will get an optic
DMS_MG_bipod_chance = 90; // Percentage chance that an MG Class AI will get a bipod DMS_MG_bipod_chance = 90; // Percentage chance that an MG Class AI will get a bipod
DMS_MG_suppressor_chance = 10; // Percentage chance that an MG Class AI will get a suppressor DMS_MG_suppressor_chance = 10; // Percentage chance that an MG Class AI will get a suppressor
DMS_MG_items = ["Binocular"];
DMS_MG_items = [ // Items for MG Class AI (Loot stuff that goes in uniform/vest/backpack)
"Exile_Item_InstaDoc",
"Exile_Item_Catfood_Cooked",
"Exile_Item_PlasticBottleFreshWater",
"Exile_Item_CookingPot"
];
DMS_MG_equipment = [ // Equipment for MG Class AI (stuff that goes in toolbelt slots)
"Binocular"
];
DMS_MG_helmets = [ // Helmets for MG Class DMS_MG_helmets = [ // Helmets for MG Class
"H_PilotHelmetHeli_I", "H_PilotHelmetHeli_I",
"H_PilotHelmetHeli_O", "H_PilotHelmetHeli_O",
@ -284,7 +304,18 @@ DMS_DEBUG = false;
DMS_sniper_optic_chance = 100; // Percentage chance that a Sniper Class AI will get an optic DMS_sniper_optic_chance = 100; // Percentage chance that a Sniper Class AI will get an optic
DMS_sniper_bipod_chance = 90; // Percentage chance that a Sniper Class AI will get a bipod DMS_sniper_bipod_chance = 90; // Percentage chance that a Sniper Class AI will get a bipod
DMS_sniper_suppressor_chance = 15; // Percentage chance that a Sniper Class AI will get a suppressor DMS_sniper_suppressor_chance = 15; // Percentage chance that a Sniper Class AI will get a suppressor
DMS_sniper_items = ["Rangefinder","ItemGPS"];
DMS_sniper_items = [ // Items for Sniper Class AI (Loot stuff that goes in uniform/vest/backpack)
"Exile_Item_InstaDoc",
"Exile_Item_Surstromming_Cooked",
"Exile_Item_PlasticBottleFreshWater",
"Exile_Item_PlasticBottleFreshWater",
"Exile_Item_Matches"
];
DMS_sniper_equipment = [ // Equipment for Sniper Class AI (stuff that goes in toolbelt slots)
"Rangefinder",
"ItemGPS"
];
DMS_sniper_helmets = [ // Helmets for Sniper Class DMS_sniper_helmets = [ // Helmets for Sniper Class
"H_HelmetSpecB_paint1", "H_HelmetSpecB_paint1",
"H_HelmetIA_camo", "H_HelmetIA_camo",

View File

@ -1,35 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 10";
diag_log format ["DMS :: Main Mission 10 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
// spawn AI
[_pos,5,4] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -1,34 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 2";
diag_log format ["DMS :: Main Mission 2 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
// spawn AI
[_pos,5,4] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -1,33 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 3";
diag_log format ["DMS :: Main Mission 3 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
[_pos,5,4] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -1,37 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 4";
diag_log format ["DMS :: Main Mission 4 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
[_pos,5,4] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -1,36 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 5";
diag_log format ["DMS :: Main Mission 5 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
//[_pos, amount of ai ] call DMS_SpawnAI;
[_pos,4,5] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -1,33 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 6";
diag_log format ["DMS :: Main Mission 6 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
[_pos,5,4] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -1,32 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 7";
diag_log format ["DMS :: Main Mission 7 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
[_pos,5,4] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -1,33 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 8";
diag_log format ["DMS :: Main Mission 8 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
[_pos,5,4] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -1,30 +0,0 @@
private ["_crate","_pos","_missname","_aiAmmount","_misText","_missEnd","_group"];
// associate pos with find safe pos
_pos = call DMS_findSafePos;
_missname = "Main Mission 9";
diag_log format ["DMS :: Main Mission 9 started at (%1)",_pos];
["standardHintRequest",["Mission starting! Check your map"]] call ExileServer_system_network_send_broadcast;
// Spawn Marker
[_pos,_missname] call DMS_CreateMarker;
// Spawn Box
_crate = createVehicle ["Box_NATO_Wps_F",[(_pos select 0) - 10, _pos select 1,0],[], 0, "CAN_COLLIDE"];
[1,_crate] call DMS_createBox;
uiSleep 2;
[_pos,5,4] call DMS_SpawnAI;
waitUntil{sleep 1; {(isPlayer _x) && (_x distance _pos < 30) } count playableUnits > 0};
["standardHintRequest",["Mission has ended, good job!"]] call ExileServer_system_network_send_broadcast;
// Run Cleanup
[_pos,_crate] call DMS_CleanUp;
[] call DMS_SelectMission;

View File

@ -5,7 +5,7 @@
Initializes variables for DMS Initializes variables for DMS
*/ */
diag_log "DMS :: Initializing"; diag_log "DMS :: Initializing Mission Variables";
// Initialize Variables // Initialize Variables
DMS_Mission_Arr = []; DMS_Mission_Arr = [];

View File

@ -47,7 +47,7 @@
"_completionInfo", "_timeOutInfo", "_inputUnits", "_missionObjs", "_messages", "_markers", "_side", "_timeStarted", "_timeUntilFail" "_completionInfo", "_timeOutInfo", "_inputUnits", "_missionObjs", "_messages", "_markers", "_side", "_timeStarted", "_timeUntilFail"
*/ */
private ["_added", "_pos", "_OK", "_completionInfo", "_timeOutInfo", "_inputUnits", "_missionObjs", "_messages", "_markers", "_timeStarted", "_timeUntilFail", "_buildings", "_loot", "_crate_loot_values", "_msgWIN", "_msgLose", "_markerDot", "_markerCircle", "_side"]; private ["_added", "_pos", "_OK", "_completionInfo", "_timeOutInfo", "_inputUnits", "_missionObjs", "_messages", "_markers", "_timeStarted", "_timeUntilFail", "_buildings", "_loot", "_crate_loot_values", "_msgWIN", "_msgLose", "_markerDot", "_markerCircle", "_side","_arr"];
_added = false; _added = false;
@ -138,7 +138,7 @@ try
throw format["_markers |%1|",_markers]; throw format["_markers |%1|",_markers];
}; };
DMS_Mission_Arr pushBack _arr =
[ [
_pos, _pos,
_completionInfo, _completionInfo,
@ -162,7 +162,13 @@ try
], ],
_side _side
]; ];
DMS_Mission_Arr pushBack _arr;
_added = true; _added = true;
if (DMS_DEBUG) then
{
diag_log format ["DMS_DEBUG AddMissionToMonitor :: Added |%1| to DMS_Mission_Arr!",_arr];
};
} }
catch catch
{ {

View File

@ -24,6 +24,7 @@ if (DMS_DEBUG) then
diag_log format ["DMS_DEBUG RemoveMarkers :: Calling DMS_RemoveMarkers with parameters %1.",_this]; diag_log format ["DMS_DEBUG RemoveMarkers :: Calling DMS_RemoveMarkers with parameters %1.",_this];
}; };
deleteMarker _markerCircle; deleteMarker _markerCircle;
if (_status == "win") then if (_status == "win") then
@ -36,7 +37,7 @@ if (_status == "win") then
[DMS_MissionMarkerWinDotTime, {deleteMarker _this;}, _markerDot, false] call ExileServer_system_thread_addTask; [DMS_MissionMarkerWinDotTime, {deleteMarker _this;}, _markerDot, false] call ExileServer_system_thread_addTask;
if (DMS_DEBUG) then if (DMS_DEBUG) then
{ {
diag_log format["DMS_DEBUG RemoveMarkers :: %1 Marker will be removed in %2 seconds!",DMS_MissionMarkerWinDotTime,_markerDot]; diag_log format ["DMS_DEBUG RemoveMarkers :: %1 Marker will be removed in %2 seconds!",_markerDot,DMS_MissionMarkerWinDotTime];
}; };
} }
else else
@ -49,6 +50,6 @@ else
[DMS_MissionMarkerLoseDotTime, {deleteMarker _this;}, _markerDot, false] call ExileServer_system_thread_addTask; [DMS_MissionMarkerLoseDotTime, {deleteMarker _this;}, _markerDot, false] call ExileServer_system_thread_addTask;
if (DMS_DEBUG) then if (DMS_DEBUG) then
{ {
diag_log format["DMS_DEBUG RemoveMarkers :: %1 Marker will be removed in %2 seconds!",DMS_MissionMarkerLoseDotTime,_markerDot]; diag_log format ["DMS_DEBUG RemoveMarkers :: %1 Marker will be removed in %2 seconds!",_markerDot,DMS_MissionMarkerLoseDotTime];
}; };
}; };

View File

@ -99,8 +99,12 @@ if (!_useCustomGear) then
diag_log format ["DMS ERROR :: DMS_SpawnAISoldier called with unsupported _type: %1 | _this: %2",_type,_this]; diag_log format ["DMS ERROR :: DMS_SpawnAISoldier called with unsupported _type: %1 | _this: %2",_type,_this];
};// No more idiot-proofing for the following configs };// No more idiot-proofing for the following configs
// Items // Equipment (Stuff that goes in the toolbelt slots)
{_unit linkItem _x;false;} count (missionNamespace getVariable [format ["DMS_%1_items",_type],[]]); {_unit linkItem _x;false;} count (missionNamespace getVariable [format ["DMS_%1_equipment",_type],[]]);
// Items (Loot stuff that goes in uniform/vest/backpack)
{_unit addItem _x;false;} count (missionNamespace getVariable [format ["DMS_%1_items",_type],[]]);
// Clothes // Clothes
_unit addHeadgear ((missionNamespace getVariable [format ["DMS_%1_helmets",_type],[]]) call BIS_fnc_selectRandom); _unit addHeadgear ((missionNamespace getVariable [format ["DMS_%1_helmets",_type],[]]) call BIS_fnc_selectRandom);