Created FindSafePos

Initialize DMS_MissionCount

Config will be loaded in preInit now

Renamed skills and random skill array

Removed mission_init (we will be using FSM instead)
This commit is contained in:
eraser1 2015-08-28 14:14:59 -05:00
parent 74189269ee
commit 13eef51a31
6 changed files with 65 additions and 67 deletions

View File

@ -83,14 +83,19 @@ DMS_DEBUG = false;
// https://community.bistudio.com/wiki/AI_Sub-skills#general // https://community.bistudio.com/wiki/AI_Sub-skills#general
DMS_ai_static_skills = true; // Use "DMS_ai_skill_static" for AI on static guns DMS_ai_static_skills = true; // Use "DMS_ai_skill_static" for AI on static guns
DMS_ai_skill_extreme = [["aimingAccuracy",1.00],["aimingShake",1.00],["aimingSpeed",1.00],["spotDistance",1.00],["spotTime",1.00],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]]; // Extreme DMS_ai_skill_static = [["aimingAccuracy",0.20],["aimingShake",0.70],["aimingSpeed",0.75],["spotDistance",0.70],["spotTime",0.50],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]]; // Static AI Skills
DMS_ai_skill_hard = [["aimingAccuracy",0.70],["aimingShake",0.70],["aimingSpeed",0.70],["spotDistance",0.70],["spotTime",0.80],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",0.70]]; // Hard
DMS_ai_skill_medium = [["aimingAccuracy",0.60],["aimingShake",0.60],["aimingSpeed",0.60],["spotDistance",0.60],["spotTime",0.60],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",0.60]]; // Medium
DMS_ai_skill_easy = [["aimingAccuracy",0.30],["aimingShake",0.50],["aimingSpeed",0.50],["spotDistance",0.50],["spotTime",0.50],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",0.50]]; // Easy DMS_ai_skill_easy = [["aimingAccuracy",0.30],["aimingShake",0.50],["aimingSpeed",0.50],["spotDistance",0.50],["spotTime",0.50],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",0.50]]; // Easy
DMS_ai_skill_static = [["aimingAccuracy",0.20],["aimingShake",0.70],["aimingSpeed",0.75],["spotDistance",0.70],["spotTime",0.50],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]]; DMS_ai_skill_moderate = [["aimingAccuracy",0.60],["aimingShake",0.60],["aimingSpeed",0.60],["spotDistance",0.60],["spotTime",0.60],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",0.60]]; // Moderate
DMS_ai_skill_random = [ai_skill_extreme,ai_skill_hard,ai_skill_hard,ai_skill_hard,ai_skill_hard,ai_skill_medium,ai_skill_medium,ai_skill_medium,ai_skill_medium,ai_skill_easy]; DMS_ai_skill_difficult = [["aimingAccuracy",0.70],["aimingShake",0.70],["aimingSpeed",0.70],["spotDistance",0.70],["spotTime",0.80],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",0.70]]; // Difficult
DMS_static_weapons = ["O_HMG_01_F","O_HMG_01_high_F"]; // Static weapons for AI DMS_ai_skill_hardcore = [["aimingAccuracy",1.00],["aimingShake",1.00],["aimingSpeed",1.00],["spotDistance",1.00],["spotTime",1.00],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]]; // Hardcore
DMS_ai_skill_random = ["hardcore","difficult","difficult","difficult","moderate","moderate","moderate","moderate","easy","easy"]; // Skill frequencies for "random" AI skills | Default: 10% hardcore, 30% difficult, 40% moderate, and 20% easy
DMS_static_weapons = [ // Static weapons for AI
"O_HMG_01_F",
"O_HMG_01_high_F"
];
//Assault Class
DMS_assault_weps = [ // Assault Rifles DMS_assault_weps = [ // Assault Rifles
"arifle_Katiba_GL_F", "arifle_Katiba_GL_F",
"arifle_MX_GL_Black_F", "arifle_MX_GL_Black_F",
@ -164,6 +169,7 @@ DMS_DEBUG = false;
"B_Bergen_blk" "B_Bergen_blk"
]; ];
//Machine Gun Class
DMS_MG_weps = [ // Machine Guns DMS_MG_weps = [ // Machine Guns
"LMG_Zafir_F", "LMG_Zafir_F",
"LMG_Mk200_F", "LMG_Mk200_F",
@ -235,6 +241,7 @@ DMS_DEBUG = false;
"B_Bergen_blk" "B_Bergen_blk"
]; ];
//Sniper Class
DMS_sniper_weps = [ // Sniper Rifles DMS_sniper_weps = [ // Sniper Rifles
"srifle_EBR_F", "srifle_EBR_F",
"srifle_DMR_01_F", "srifle_DMR_01_F",

View File

@ -8,9 +8,6 @@
[_delay, _function, _params, _persistance] call ExileServer_system_thread_addTask; [_delay, _function, _params, _persistance] call ExileServer_system_thread_addTask;
*/ */
//Load config
#include "config.sqf";
RESISTANCE setFriend[WEST,0]; RESISTANCE setFriend[WEST,0];
WEST setFriend[RESISTANCE,0]; WEST setFriend[RESISTANCE,0];
RESISTANCE setFriend[EAST,0]; RESISTANCE setFriend[EAST,0];
@ -23,6 +20,7 @@ if(DMS_StaticMission) then {
}; };
if (DMS_DynamicMission) then { if (DMS_DynamicMission) then {
call compileFinal preprocessFileLineNumbers "\x\addons\dms\missions\mission_init.sqf";//<---- TODO // Use FSM to spawn missions instead
//call compileFinal preprocessFileLineNumbers "\x\addons\dms\missions\mission_init.sqf";
[1, DMS_MissionStatusCheck, [], true] call ExileServer_system_thread_addTask; [1, DMS_MissionStatusCheck, [], true] call ExileServer_system_thread_addTask;
}; };

View File

@ -3,8 +3,9 @@
Written by eraser1 (trainwreckdayz.com) Written by eraser1 (trainwreckdayz.com)
*/ */
// Initialize "DMS_Mission_Arr" // Initialize Variables
DMS_Mission_Arr = []; DMS_Mission_Arr = [];
DMS_MissionCount = 0;
/* compiles /* compiles
DMS_CreateMarker = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\DMS_CreateMarker.sqf"; DMS_CreateMarker = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\DMS_CreateMarker.sqf";
@ -27,11 +28,14 @@ load_ammo = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\loa
//Completed //Completed
DMS_MissionStatusCheck = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\MissionStatusCheck.sqf"; DMS_MissionStatusCheck = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\MissionStatusCheck.sqf";
DMS_MissionSuccessState = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\MissionSuccessState.sqf";//<--- TODO DMS_MissionSuccessState = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\MissionSuccessState.sqf";//<--- TODO
DMS_findSafePos = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\FindSafePos.sqf";//<--- TODO DMS_findSafePos = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\FindSafePos.sqf";
DMS_BroadcastMissionStatus = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\BroadcastMissionStatus.sqf"; DMS_BroadcastMissionStatus = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\BroadcastMissionStatus.sqf";
DMS_CleanUp = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\CleanUp.sqf"; DMS_CleanUp = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\CleanUp.sqf";
DMS_isPlayerNearbyARRAY = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\IsPlayerNearbyARRAY.sqf"; DMS_isPlayerNearbyARRAY = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\IsPlayerNearbyARRAY.sqf";
DMS_FillCrate = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\FillCrate.sqf"; DMS_FillCrate = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\FillCrate.sqf";
DMS_isNearWater = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\IsNearWater.sqf"; DMS_isNearWater = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\IsNearWater.sqf";
DMS_RemoveMarkers = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\RemoveMarkers.sqf"; DMS_RemoveMarkers = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\RemoveMarkers.sqf";
DMS_selectMagazine = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\SelectMagazine.sqf"; DMS_selectMagazine = compileFinal preprocessFileLineNumbers "\x\addons\dms\scripts\SelectMagazine.sqf";
//Load config
#include "config.sqf";

View File

@ -1 +0,0 @@
/*TODO*/

View File

@ -1,27 +0,0 @@
private ["_pos","_centerPos","_fetchPos"];
//_centerPos = [getMarkerPos "center",4000,20000,10,0,25,0];
_centerPos = [getMarkerPos "center",2000,4000,10,0,25,0];
_fetchPos = false;
_int = 1;
while {!_fetchPos} do {
sleep 2;
_pos = _centerPos call BIS_fnc_findSafePos;
_int = _int + 1;
_fetchPos = true;
if (_fetchPos) then {
diag_log format ["DMS :: Found valid position at: (%1) in (%2) tries!",_pos,_int];
};
// more if exceptions to come
// water if exception to be added above
};
_pos

View File

@ -1,47 +1,64 @@
private ["_i","_safePosParams","_validspot","_position"]; private ["_nearestObjectMinDistance","_maxTerrainGradient","_safePosParams","_validspot","_i","_pos","_markerName"];
params [["_nearestObjectMinDistance",25,[0]],["_maxTerrainGradient",10,[0]]];
if (worldName=="Altis") then { if (worldName=="Altis") then {
_safePosParams = [[16000,16000],0,16000,(_this select 0),0,0.5,0,DMS_findSafePosBlacklist]; _safePosParams = [[16000,16000],0,16000,_nearestObjectMinDistance,0,_maxTerrainGradient,0,DMS_findSafePosBlacklist];
} else { } else {
_safePosParams = [[],0,-1,(_this select 0),0,0.5,0,DMS_findSafePosBlacklist]; _safePosParams = [[],0,-1,_nearestObjectMinDistance,0,_maxTerrainGradient,0,DMS_findSafePosBlacklist];
}; };
_validspot = false; _validspot = false;
_i = 0; _i = 0;
while{!_validspot} do { while{!_validspot} do {
_position = _safePosParams call BIS_fnc_findSafePos; _pos = _safePosParams call BIS_fnc_findSafePos;
_validspot = true;
_i = _i+1; _i = _i+1;
call { try {
if ([_position,wai_near_water] call DMS_isNearWater) exitWith // Check for nearby water
if ([_pos,DMS_WaterNearBlacklist] call DMS_isNearWater) exitWith
{ {
_validspot = false; throw ("water");
if (DMS_DEBUG) then {diag_log "Position is too close to water!";};
}; };
if ([_position,DMS_PlayerNearBlacklist] call ExileServer_util_position_isPlayerNearby) exitWith // Check for nearby players
if ([_pos,DMS_PlayerNearBlacklist] call ExileServer_util_position_isPlayerNearby) exitWith
{ {
_validspot = false; throw ("players");
if (DMS_DEBUG) then {diag_log "Position has players nearby!";};
}; };
/*
markertype _x=="ExileSpawnZone" || "ExileTraderZone"
if(DMS_DEBUG) then { diag_log("WAI DEBUG: FINDPOS: Checking nearby mission markers: " + str(wai_mission_markers)); };
{ {
if ({getMarkerColor _x != "" && {_position distance (getMarkerPos _x) < wai_avoid_missions}}) exitWith // Check for nearby spawn points
if (((markertype _x) isEqualTo "ExileSpawnZone") && {((getMarkerPos _x) distance2D _pos)<=DMS_SpawnZoneNearBlacklist}) exitWith
{ {
_validspot = false; throw ("a spawn zone");
if (DMS_DEBUG) then {diag_log "Position is too close to another mission!";}; };
// Check for nearby trader zones
if (((markertype _x) isEqualTo "ExileTraderZone") && {((getMarkerPos _x) distance2D _pos)<=DMS_TraderZoneNearBlacklist}) exitWith
{
throw ("a trader zone");
};
// Check for nearby missions
if (((_x find "DMS_MissionMarkerDot")>-1) && {((getMarkerPos _x) distance2D _pos)<=DMS_MissionNearBlacklist}) exitWith
{
throw ("another mission");
}; };
false; false;
} count allMapMarkers; } count allMapMarkers;
*/
}; // No exceptions found
if(_validspot) then { _validspot = true;
if(DMS_DEBUG) then { diag_log format["Mission position %1 with %2 params found in %3 attempts.",_position,_safePosParams,_i]; }; }
catch
{
if (DMS_DEBUG) then {
diag_log format ["DMS_DEBUG findSafePos :: Exception in attempt %1 | Position %2 is too close to %3!",_i,_pos,_exception];
};
}; };
}; };
_position set [2, 0]; if(DMS_DEBUG) then {
_position; diag_log format["DMS_DEBUG findSafePos :: Mission position %1 with %2 params found in %3 attempts.",_pos,_safePosParams,_i];
};
_pos set [2, 0];
_pos;