arma2-epoch-server/@DayZ_Epoch_Server/addons/dayz_server/DZMS/Missions/Squad.sqf

72 lines
2.8 KiB
Plaintext
Raw Normal View History

2022-04-21 16:15:41 +03:00
/*
Bandit Hunting Party by lazyink (Full credit to TheSzerdi & TAW_Tonic for the code)
Updated to new format by Vampire
Updated for DZMS 2.0 by JasonTM
*/
local _mission = count DZMSMissionData -1;
local _aiType = _this select 0;
local _coords = call DZMSFindPos;
local _name = "Patrol Squad";
local _localName = "STR_CL_DZMS_PS_TITLE";
local _hero = _aiType == "Hero";
local _markerColor = ["ColorRed","ColorBlue"] select _hero;
local _localized = ["STR_CL_MISSION_BANDIT","STR_CL_MISSION_HERO"] select _hero;
local _startTime = diag_tickTime;
diag_log format["[DZMS]: %1 %2 starting at %2.",_aiType,_name,_coords];
////////////////////// Do not edit this section ///////////////////////////
//[position,createMarker,setMarkerColor,setMarkerType,setMarkerShape,setMarkerBrush,setMarkerSize,setMarkerText,setMarkerAlpha]
local _markers = [1,1,1,1];
_markers set [0, [_coords,"DZMS" + str _mission,_markerColor,"","ELLIPSE","Grid",[200,200],[],0]];
_markers set [1, [_coords,"DZMSDot" + str _mission,"ColorBlack","Vehicle","","",[],[_localized,_localName],0]];
if (DZMSAutoClaim) then {_markers set [2, [_coords,"DZMSAuto" + str _mission,"ColorRed","","ELLIPSE","Border",[DZMSAutoClaimAlertDistance,DZMSAutoClaimAlertDistance],[],0]];};
DZE_ServerMarkerArray set [count DZE_ServerMarkerArray, _markers]; // Markers added to global array for JIP player requests.
local _markerIndex = count DZE_ServerMarkerArray - 1;
PVDZ_ServerMarkerSend = ["start",_markers];
publicVariable "PVDZ_ServerMarkerSend";
[_aiType,_localName,"STR_CL_DZMS_PS_START"] call DZMSMessage;
DZMSMarkerReady = true;
// Add the mission's position to the global array so that other missions do not spawn near it.
DZE_MissionPositions set [count DZE_MissionPositions, _coords];
local _posIndex = count DZE_MissionPositions - 1;
// Wait until a player is within range or timeout is reached.
local _playerNear = false;
local _timeout = false;
while {!_playerNear && !_timeout} do {
_playerNear = [_coords,DZMSTimeoutDistance] call DZMSNearPlayer;
if (diag_tickTime - _startTime >= (DZMSMissionTimeOut * 60)) then {
_timeout = true;
};
uiSleep 1;
};
if (_timeout) exitWith {
[_mission, _aiType, _markerIndex, _posIndex] call DZMSAbortMission;
[_aiType,_localName,"STR_CL_DZMS_PS_FAIL"] call DZMSMessage;
diag_log format["DZMS: %1 %2 aborted.",_aiType,_name,_coords];
};
//////////////////////////////// End //////////////////////////////////////
//DZMSAISpawn spawns AI to the mission.
//Usage: [_coords, count, skillLevel, Hero or Bandit, Mission Number]
[_coords,4,1,_aiType,_mission] call DZMSAISpawn;
[_coords,4,1,_aiType,_mission] call DZMSAISpawn;
// Start the mission loop.
[
_mission,
_coords,
_aiType,
_name,
_localName,
_markerIndex,
_posIndex,
"STR_CL_DZMS_PS_WIN",
"STR_CL_DZMS_PS_FAIL"
] spawn DZMSWaitMissionComp;