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

private [
			"_unitcount","_vehcount","_wparray","_groupid","_groupside","_groupstart","_groupende","_maxwps","_heloarray",
			"_groupvar","_marker","_homezone","_TempUnitsB","_DAC_MColor","_isM","_clogic","_randomcount","_camparray",
			"_run","_go","_cs1","_cs2","_cs3","_cs5","_homezone","_camp","_spawnpro","_spawntyp","_spawncount","_wpstart","_startpos","_ma"
		];

			_unitcount = _this select 0;_vehcount = _this select 1;_wparray = _this select 2;_groupid = _this select 3;_camp = objNull;
			_groupside = _this select 4;_groupstart = _this select 5;_groupende = _this select 6;_maxwps = _this select 7;
			_heloarray = _this select 8;_groupvar = _this select 9;_marker = _this select 10;
			_homezone = _this select 11;_TempUnitsB = _this select 12;_DAC_MColor = ["ColorRed","ColorBlue","ColorYellow","ColorGreen"];
			_isM = [];_clogic = _TempUnitsB select 0;_randomcount = random 999;_run = 1;_go = true;_cs1 = 0;_cs2 = 0;_cs3 = 0;_cs5 = 0;_camparray = [];
			_ma = _this select 13;

while {_run > 0} do
{
	switch (_run) do
	{
		case 1:	{
					if(((getMarkerSize _ma) select 0) <= 4) then
					{
						_run = 8;
					}
					else
					{
						_run = 2;
					};
				};
		case 2:	{
					if(count _TempUnitsB < 3) then
					{
						hintc format["Attention, in an Unit Config for Infantry,\nnot all required entries exist.\n\nAt least 3 entries must be\n contained. The first entry should\nbe always a pilot,\nthe second entry should be\nalways a driver, the third entry\nshould be always a group leader.\nFrom the fourth entry\nall Units can be taken."];
						sleep 1;
						DAC_Basic_Value = 4;publicvariable "DAC_Basic_Value";_run = 0;
					}
					else
					{
						if((count _TempUnitsB < 4) && (count _TempUnitsB > 1)) then
						{
							hintc format["Attention,\nin an Unit Config for Camps,\nnot all required entries exist."];
							sleep 1;
							DAC_Basic_Value = 4;publicvariable "DAC_Basic_Value";_run = 0;
						}
						else
						{
							DAC_Init_Group set [count DAC_Init_Group,_randomcount];
							DAC_Init_Values set [0,(DAC_Init_Values select 0) + 1];
							DAC_Init_Unit set [4,(DAC_Init_Unit select 4) + 1];
							if(DAC_StartDummy in DAC_Init_Group) then {DAC_Init_Group = DAC_Init_Group - [DAC_StartDummy]};
							_spawnpro = _heloarray select 3;_spawntyp = _heloarray select 2;_spawncount = _heloarray select 4;
							_wpstart = call compile (_wparray select (random ((count _wparray) - 1)));
							_startpos = [(_wpstart select 0),(_wpstart select 1),0];_ctyp = format["%1",(_TempUnitsB select 0)];
							_camp = createTrigger ["EmptyDetector", [(_wpstart select 0),(_wpstart select 1)]];
							_cs1 = 0;_cs2 = 0;_cs5 = ((_homezone select 0) + (_homezone select 1));_camparray = [_camp];
							
							if(DAC_Marker > 0) then
							{
								if((DAC_Marker_Val select 13) > 0) then
								{
									_m = format["_m%1",_camp];_mf = createmarkerlocal [_m, position _camp];
									_mf setMarkerTypelocal "mil_flag";_mf setMarkerSizelocal [0.8,0.8];
									_mf setMarkerColorlocal (_DAC_MColor select _groupside);_isM set [count _isM,_mf];
								};
							};
							
							[_groupende,_groupside,[],_camparray,_isM,_ma]execVM format["%1DAC_Waiting_for_Null.sqf",DAC_AI_Path];
							DAC_Init_Camps = DAC_Init_Camps - 1;

							switch (_groupside) do
							{
								case 0:{_run = 3};
								case 1:{_run = 4};
								case 2:{_run = 5};
								default	{_run = 0};
							};
						};
					};
				};
		case 3:	{
					While {_cs1 < count DAC_Spawn_CampsE} do
					{
						_cs3 = DAC_Spawn_CampsE select _cs1;
						if(((((_cs3 select 0) select 0) + ((_cs3 select 0) select 1)) == _cs5)
						&& (format["%1",(_cs3 select 1)] == "<NULL-object>")
						&& (_cs2 == 0)) then
						{
							(DAC_Spawn_CampsE select _cs1) set[1,_camp];
							(DAC_Spawn_CampsE select _cs1) set[2,_camp];
							((DAC_Spawn_CampsE select _cs1) select 5) set[0,_spawncount];
							((DAC_Spawn_CampsE select _cs1) select 5) set[1,0];_cs2 = 1;
						};
						_cs1 = _cs1 + 1;
					};
					sleep 0.1;
					if(_cs2 == 0) then
					{
						DAC_Spawn_CampsE set [count DAC_Spawn_CampsE,[_homezone,_camp,_camp,_spawnpro,_spawntyp,[_spawncount,0],[]]];
					};
					_run = 7;
				};
		case 4:	{
					While {_cs1 < count DAC_Spawn_CampsW} do
					{
						_cs3 = DAC_Spawn_CampsW select _cs1;
						if(((((_cs3 select 0) select 0) + ((_cs3 select 0) select 1)) == _cs5)
						&& (format["%1",(_cs3 select 1)] == "<NULL-object>")
						&& (_cs2 == 0)) then
						{
							(DAC_Spawn_CampsW select _cs1) set[1,_camp];
							(DAC_Spawn_CampsW select _cs1) set[2,_camp];
							((DAC_Spawn_CampsW select _cs1) select 5) set[0,_spawncount];
							((DAC_Spawn_CampsW select _cs1) select 5) set[1,0];_cs2 = 1;
						};
						_cs1 = _cs1 + 1;
					};
					sleep 0.1;
					if(_cs2 == 0) then
					{
						DAC_Spawn_CampsW set [count DAC_Spawn_CampsW,[_homezone,_camp,_camp,_spawnpro,_spawntyp,[_spawncount,0],[]]];
					};
					_run = 7;
				};
		case 5:	{
					While {_cs1 < count DAC_Spawn_CampsE} do
					{
						_cs3 = DAC_Spawn_CampsE select _cs1;
						if(((((_cs3 select 0) select 0) + ((_cs3 select 0) select 1)) == _cs5)
						&& (format["%1",(_cs3 select 1)] == "<NULL-object>")
						&& (_cs2 == 0)) then
						{
							(DAC_Spawn_CampsE select _cs1) set[1,_camp];
							(DAC_Spawn_CampsE select _cs1) set[2,_camp];
							((DAC_Spawn_CampsE select _cs1) select 5) set[0,_spawncount];((DAC_Spawn_CampsE select _cs1) select 5) set[1,0];_cs2 = 1;
						};
						_cs1 = _cs1 + 1;
					};
					sleep 0.1;
					if(DAC_Res_Side > 0) then
					{
						_run = 6;
					}
					else
					{
						if(_cs2 == 0) then
						{
							DAC_Spawn_CampsE set [count DAC_Spawn_CampsE,[_homezone,_camp,_camp,_spawnpro,_spawntyp,[_spawncount,0],[]]];
						};
						_run = 7;
					};
				};
		case 6:	{
					While {_cs1 < count DAC_Spawn_CampsW} do
					{
						_cs3 = DAC_Spawn_CampsW select _cs1;
						if(((((_cs3 select 0) select 0) + ((_cs3 select 0) select 1)) == _cs5)
						&& (format["%1",(_cs3 select 1)] == "<NULL-object>")
						&& (_cs2 == 0)) then
						{
							(DAC_Spawn_CampsW select _cs1) set[1,_camp];
							(DAC_Spawn_CampsW select _cs1) set[2,_camp];
							((DAC_Spawn_CampsW select _cs1) select 5) set[0,_spawncount];((DAC_Spawn_CampsW select _cs1) select 5) set[1,0];_cs2 = 1;
						};
						_cs1 = _cs1 + 1;
					};
					sleep 0.1;
					if(_cs2 == 0) then
					{
						DAC_Spawn_CampsW set [count DAC_Spawn_CampsW,[_homezone,_camp,_camp,_spawnpro,_spawntyp,[_spawncount,0],[]]];
					};
					_run = 7;
				};
		case 7:	{
					sleep 0.1;
					DAC_InCreate = false;
					sleep 0.5;
					DAC_Init_Group = DAC_Init_Group - [_randomcount];
					DAC_Init_Unit set [4,(DAC_Init_Unit select 4) - 1];
					DAC_Master_Init = DAC_Master_Init - 1;DAC_InSpawn = false;_run = 0;
				};
		case 8:	{
					DAC_InCreate = false;DAC_InSpawn = false;
					DAC_Master_Init = DAC_Master_Init - 1;_go = true;
					while {_go} do
					{
						sleep (1 + (random 1));
						if(((getMarkerSize _ma) select 0) == 5) then {_go = false;_run = 9};
					};
				};
		case 9:	{
					_go = true;
					while {_go} do
					{
						sleep (random 0.2);
						if(!(DAC_InCreate)) then {_go = false};
					};
					DAC_InCreate = true;
					if((DAC_Com_Values select 0) > 0) then {player groupchat "New spawnpoint was activated"};
					_run = 2;
				};
		default {};
	};
};