A3-Conquest.Altis / DAC / Marker / DAC_GroupMarker.sqf
DAC_GroupMarker.sqf
Raw
//////////////////////////////
//    Dynamic-AI-Creator    //
//    Version 3.1b - 2014   //
//--------------------------//
//    DAC_UnitMarker        //
//--------------------------//
//    Script by Silola      //
//    silola@freenet.de     //
//////////////////////////////

private [
			"_unit","_mtyp","_color","_side","_group","_mzoom",
			"_rdm","_m","_ma","_rf","_s","_MarkerVal","_md","_status"
		];		

			_unit = _this select 0;_mtyp  = _this select 1;
			_color = DAC_Marker_Val select 14;_MarkerVal = [];_side = ["EAST","WEST","GUER","CIV"];_rdm = random 1000;
			_rf = ((DAC_Marker_Val select 6) select 0);_m = format["m%1%2",_mtyp,_rdm];_group = objNull;
			_ma = createmarkerlocal [_m, position _unit];_MarkerVal = [(DAC_Marker_Val select 15),(vehicle _unit)] call DAC_fFindMClass;
			_ma setMarkerTypelocal (_MarkerVal select 1);_ma setMarkerColorlocal (_color select 4);_s = _side find format["%1",side _unit];
			if(count _this > 2) then {_group = _this select 2} else {_group = group _unit};_mzoom = 1.5;_md = 9;_status = 0;

if(isDedicated) exitwith {};

if((count (_MarkerVal select 2)) > 1) then
{
	_ma setMarkerSizelocal (_MarkerVal select 2);
}
else
{
	_ma setMarkerSizelocal [((boundingBox _unit select 1) select 0),((boundingBox _unit select 1) select 1)];
};

if(_s == -1) then {_ma setMarkerColorlocal (_color select 4)} else {_ma setMarkerColorlocal (_color select _s)};

waituntil {(DAC_Basic_Value == 1)};

sleep (random 1);

if(DAC_Marker == 0) then {_status = 1};

while {_mtyp > 0} do
{
	if((DAC_Marker == 0) || ((DAC_Marker_Val select 3) == 1)) then
	{
		deletemarkerlocal _ma;_mtyp = 0;
	}
	else
	{
		switch (_mtyp) do
		{
			case 1:	{
						if(format["%1",_group] == "<NULL-group>") then
						{
							deletemarkerlocal _ma;_mtyp = 0;
						}
						else
						{
							if(({alive _x} count units _group) == 0) then
							{
								_mtyp = 2;
							}
							else
							{
								_unit = leader _group;
								if((count (DAC_Marker_Val select 4)) > 0) then
								{
									if(!(isPlayer _unit)) then
									{
										_ma setMarkerTextlocal (call compile ((DAC_Marker_Val select 4) select 0));
									}
									else
									{
										_ma setMarkerTextlocal format["%1",name _unit];
									};
								};
								_s = _side find format["%1",side _unit];
								if(_s == -1) then {_ma setMarkerColorlocal (_color select 4)} else {_ma setMarkerColorlocal (_color select _s)};
								_ma setmarkerposlocal [(position _unit select 0),(position _unit select 1)];
								if((_MarkerVal select 3) > 0) then {_ma setmarkerdirlocal (direction _unit)};
								sleep (_rf + random 0.1);
							};
						};
					};
			case 2:	{
						_ma setMarkerTypelocal "waypoint";
						_ma setmarkerposlocal [(position _unit select 0),(position _unit select 1)];
						_ma setMarkerTextlocal "";_ma setMarkerColorlocal ((DAC_Marker_Val select 14) select 7);_ma setmarkerdirlocal 0;
						_ma setMarkerSizelocal [((_MarkerVal select 2) select 0),((_MarkerVal select 2) select 0)];
						if((DAC_Marker_Val select 5) == 0) then
						{
							_mtyp = 0;
						}
						else
						{
							if((DAC_Marker_Val select 5) == 2) then
							{
								deletemarkerlocal _ma;_mtyp = 0;
							}
							else
							{
								while {((!(isNull _unit)) && (DAC_Marker > 0) && ((DAC_Marker_Val select 3) == 0))} do
								{
									sleep (1 + random 1);
								};
								deletemarkerlocal _ma;_mtyp = 0;
							};
						};
					};
			Default {};
		};
	};
};