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

private [
			"_unitcount","_vehcount","_wparray","_groupid","_groupside","_groupstart","_groupende","_maxwps",
			"_heloarray","_unit_skill","_groupvar","_marker","_groupzone","_unitsel","_TempUnitsB","_DAC_Z_Set",
			"_delval0","_delval1","_camparray","_cs1","_cs2","_cs5","_vehcargo","_sj","_m","_mp","_TempList","_vA",
			"_EventList","_TempUnitsA","_randomcount","_newgroup","_ammoarray","_wallArray","_homezone","_isM",
			"_objarray","_ma","_campScr","_unittyp","_leadertyp","_spawnpro","_spawntyp","_spawncount","_wpstart",
			"_flag","_wset","_setDG","_camp","_build","_fire","_startpos","_we","_ab","_ammoarray","_wd","_mf","_go",
			"_gc","_allobj","_campSet","_setSkill","_setFleeing","_setrank","_soldier","_leaderman","_eman","_run","_WeapList",
			"_solarray","_tempST","_staarray","_group","_DAC_MColor","_sidearray","_rankarray","_grouppara","_wside","_delval2","_soldierT"
		];

			_unitcount = _this select 0;_vehcount = _this select 1;_wparray = _this select 2;_groupid = _this select 3;
			_groupside = _this select 4;_groupstart = _this select 5;_groupende = _this select 6;_maxwps = _this select 7;
			_heloarray = _this select 8;_unit_skill = _this select 9;_groupvar = _this select 10;_marker = _this select 11;
			_groupzone = _this select 12;_unitsel = _this select 13;_TempUnitsB	= _this select 14;_DAC_Z_Set = _this select 15;
			_delval0 = ((DAC_Delete_Value select 1) select 0);_delval1 = ((DAC_Delete_Value select 1) select 1);_camparray = [];_cs1 = 0;_cs2 = 0;_cs5 = 0;
			_vehcargo = 0;_sj = 0;_m = "";_mp = [];_TempList = [];_EventList = [];_TempUnitsA = [];_randomcount = random 9999;_WeapList = 0;
			_newgroup = group player;_ammoarray = [];_wallArray = [];_homezone = position (call compile _groupzone);
			_isM = [];_objarray = [];_campScr = [];_unittyp = [];_leadertyp = "";_spawnpro = 0;_spawntyp = 0;_soldierT = "";
			_spawncount = 0;_wpstart = [];_flag = "";_wset = [];_setDG = [];_camp = objNull;_build = objNull;_fire = objNull;_startpos = [];
			_we = 0;_ab = "";_ammoarray = [];_wd = 0;_mf = "";_gc = 0;_allobj = [];_campSet = [];_setFleeing = 0;
			_setrank = "";_soldier = "";_leaderman = objNull;_eman = objNull;_solarray = [];_tempST = [];_staarray = [];_group = objNull;
			_rankarray = ["private","corporal","sergeant","lieutenant","captain","major","colonel"];_run = 1;_go = 1;
			_sidearray = [["EAST","WEST","RESISTANCE","CIVILIAN"],["E","W","R","C"]];_wside = 3;_vA = [];_delval2 = (DAC_Delete_Value select 2);
			_setSkill = [[0,"aimingAccuracy"],[1,"aimingShake"],[2,"aimingSpeed"],[3,"Endurance"],[4,"spotDistance"],[5,"spotTime"],[6,"courage"],[7,"reloadSpeed"],[8,"commanding"],[9,"general"]];
			_DAC_MColor = ["ColorRed","ColorBlue","ColorYellow","ColorGreen"];

			_grouppara = 	[
								_unitcount,_vehcount,_wparray,_groupid,_groupside,_groupstart,_groupende,
								_maxwps,_heloarray,_unit_skill,_groupvar,_marker,_groupzone,_unitsel
							];

_ma = (_DAC_Z_Set select 0);
if(((getMarkerSize _ma) select 0) == 4) then
{
	DAC_Init_Camps = DAC_Init_Camps - 1;
}
else
{
	DAC_Master_Init = DAC_Master_Init + 1;
	while {_go > 0} do
	{
		sleep (random 0.2);
		if(!(DAC_InCreate)) then
		{
			DAC_InCreate = true;_go = 0;
		};
	};
			
	while {_run > 0} do
	{
		switch (_run) do
		{
			case 1:	{
						//-----------------------------
						//#firstcheck
						//-----------------------------
						_TempList = [((getMarkerPos (_DAC_Z_Set select 2)) select 0),0] call DAC_fConfigUnits;
						_unit_skill = [((getMarkerPos (_DAC_Z_Set select 2)) select 1)] call DAC_fConfigBehav;
						if(_groupende > 0) then {_EventList = ((([_groupende] call DAC_fConfigEvents) select 4) select 0)};
						_TempUnitsA = (_TempList select 0);_run = 2;
					};
			case 2:	{
						//-----------------------------
						//#startcreate
						//-----------------------------
						if((count _TempUnitsB > 0) && (!(((_TempUnitsB select 0) select 0) == "NULL"))) then
						{
							if(count _TempUnitsA < 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."];
								DAC_Basic_Value = 4;publicvariable "DAC_Basic_Value";_run = 0;
							}
							else
							{
								if(count _TempUnitsB < 4) then
								{
									hintc format["Attention,\nin an Unit Config for Camps,\nnot all required entries exist."];
									DAC_Basic_Value = 4;publicvariable "DAC_Basic_Value";_run = 0;
								}
								else
								{
									_campScr = (_TempUnitsB select 7);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]};
									_unittyp = _TempUnitsA;_leadertyp = _TempUnitsA select 2;_spawnpro = _heloarray select 3;
									_spawntyp = _heloarray select 2;_spawncount = _heloarray select 4;
									_wpstart = call compile (_wparray select (random ((count _wparray) - 1)));
									_flag = ((_TempUnitsB select 0) select 0) createvehicle [(_wpstart select 0),(_wpstart select 1),0];
									_wset = (_TempUnitsB select 1);_setDG = ((_TempUnitsB select 0) select 4);
									_camp = (((_TempUnitsB select 0) select 2) select 0) createvehicle [(_wpstart select 0) + (((_TempUnitsB select 0) select 2) select 1),(_wpstart select 1)+ (((_TempUnitsB select 0) select 2) select 2),0];
									_build = (((_TempUnitsB select 0) select 3) select 0) createvehiclelocal [(_wpstart select 0) + (((_TempUnitsB select 0) select 3) select 1),(_wpstart select 1)+ (((_TempUnitsB select 0) select 3) select 2),0];
									_fire = (((_TempUnitsB select 0) select 1) select 0) createvehicle [(_wpstart select 0) + (((_TempUnitsB select 0) select 1) select 1),(_wpstart select 1) + (((_TempUnitsB select 0) select 1) select 2),0];
									_fire inflame true;_startpos = [(getPosATL _flag select 0),(getPosATL _flag select 1)+20,0];_camp setdir (((_TempUnitsB select 0) select 2) select 3);
									_build setdir (((_TempUnitsB select 0) select 3) select 3);_we = 0;
									if((count (_TempUnitsB select 0)) > 5) then {_flag setFlagTexture ((_TempUnitsB select 0) select 5)};
									while {_we < count _wset} do
									{
										_ab = ((_wset select _we) select 0) createvehicle [(_wpstart select 0) + ((_wset select _we) select 1),(_wpstart select 1) + ((_wset select _we) select 2),0];
										_ab setdir ((_wset select _we) select 3);_ammoarray set [count _ammoarray,_ab];
										_ab setpos [(_wpstart select 0) + ((_wset select _we) select 1),(_wpstart select 1) + ((_wset select _we) select 2),0];
										_wd = _wd - 5;_we = _we + 1;
									};
									if(DAC_Marker > 0) then
									{
										if((DAC_Marker_Val select 13) > 0) then
										{
											_m = format["m%1",_flag];_mf = createmarkerlocal [_m, position _flag];_mf setMarkerTypelocal "mil_flag";
											_mf setMarkerSizelocal [0.8,0.8];_mf setMarkerColorlocal (_DAC_MColor select _groupside);_isM set [count _isM,_mf];
										};
									};
									if((count (call compile format["DAC_GroupPool%1",((_sidearray select 1) select _groupside)])) == 0) then
									{
										_newgroup = call compile format["createGroup %1",((_sidearray select 0) select _groupside)];
									}
									else
									{
										_newgroup = ((call compile format["DAC_GroupPool%1",((_sidearray select 1) select _groupside)]) select 0);
										if(format["%1",_newgroup] == "<NULL-group>") then
										{
											_newgroup = call compile format["createGroup %1",((_sidearray select 0) select _groupside)];
										};
										call compile format["DAC_GroupPool%1 = DAC_GroupPool%1 - [_newgroup]",((_sidearray select 1) select _groupside)];
									};
									_newgroup setVariable ["DAC_Excluded", False];
									{_x setVectorUp [0,0,0.2]} foreach _ammoarray + [_camp,_build];
									_startpos = [(_wpstart select 0) - 25,(_wpstart select 1),0];
									if((count (_campScr select 0)) > 0) then {{call compile ((_campScr select 0) select 0)} foreach [_flag,_camp,_build,_fire]};
									if((count (_campScr select 1)) > 0) then {{call compile ((_campScr select 1) select 0)} foreach _ammoarray};_run = 3;
								};
							};
						}
						else
						{
							if(count _TempUnitsB > 0) then
							{
								_run = 11;
							}
							else
							{
								player groupchat "Error DAC_Group_Camp: No valid Camp Config";_run = 0;
							};
						};
					};
			case 3:	{
						//-----------------------------
						//#CreateUserObj
						//-----------------------------
						if((count (_TempUnitsB select 4)) == 0) then
						{
							_run = 4;
						}
						else
						{
							_wset = (_TempUnitsB select 4);_we = 0;_run = 4;
							while {_we < count _wset} do
							{
								if(((_wset select _we) select 0) == "Logic") then
								{
									_ab = ((_wset select _we) select 0) createvehiclelocal [0,0,0];
								}
								else
								{
									_ab = ((_wset select _we) select 0) createvehicle [0,0,0];
								};
								_objarray set [count _objarray,_ab];
								_ab setdir ((_wset select _we) select 3);
								_ab setpos [(_wpstart select 0) + ((_wset select _we) select 1),(_wpstart select 1) + ((_wset select _we) select 2),0];
								_we = _we + 1;
							};
							if((count (_campScr select 4)) > 0) then {{call compile ((_campScr select 4) select 0)} foreach _objarray};
						};
					};
			case 4:	{
						//-----------------------------
						//#CreateStatic
						//-----------------------------
						if((count (_TempUnitsB select 2)) == 0) then
						{
							_run = 5;
						}
						else
						{
							_wset = (_TempUnitsB select 2);_we = 0;_tempST = [];_staarray = [];_run = 5;
							while {_we < count _wset} do
							{
								_ab = ((_wset select _we) select 0) createvehicle [(_wpstart select 0) + ((_wset select _we) select 1),(_wpstart select 1) + ((_wset select _we) select 2),0];
								_ab setdir ((_wset select _we) select 3);_objarray set [count _objarray,_ab];
								_tempST = _tempST + [_ab,((_wset select _we) select 4)];_staarray set [count _staarray,_ab];
								_ab setpos [(_wpstart select 0) + ((_wset select _we) select 1),(_wpstart select 1) + ((_wset select _we) select 2),0];
								_we = _we + 1;
							};
							if((count (_campScr select 2)) > 0) then {{call compile ((_campScr select 2) select 0)} foreach _staarray};
						};
					};
			case 5:	{
						//-----------------------------
						//#createVEG
						//-----------------------------
						{if((_x iskindof "Air") || (_x iskindof "Car") || (_x iskindof "Tank")) then {DAC_VehicleInUse set [count DAC_VehicleInUse,_x]}} foreach _objarray;
						
						DAC_Init_Camps = DAC_Init_Camps - 1;_run = 6;
					};
			case 6:	{
						//-----------------------------
						//#creategroup
						//-----------------------------
						if(_unitcount < 0.5) then
						{
							_run = 7;
						}
						else
						{
							_unitcount = _unitcount - 1;_setFleeing = ((_unit_skill select 5) select 0);
							_setrank = _rankarray select (random ((count _rankarray) - 1));_soldier = _unittyp select (3 + random ((count _unittyp) - 4));
							if(_sj == 0) then
							{
								if((typeName _leadertyp) == "ARRAY") then {_soldierT = (_leadertyp select 0);_WeapList = (_leadertyp select 1)} else {_soldierT = _leadertyp};
								_leaderman = _newgroup createUnit [_soldierT,_startpos,[], 0, "NONE"];[_leaderman] join _newgroup;
								_leaderman allowFleeing _setFleeing;;_leaderman setRank _setrank;
								if(count (_unit_skill select 0) > 2) then
								{
									{_leaderman setskill [(_x select 1),(((_unit_skill select 0) select (_x select 0)) select 0) + random ((((_unit_skill select 0) select (_x select 0)) select 1) - (((_unit_skill select 0) select (_x select 0)) select 0))]} foreach _setSkill;
								}
								else
								{
									_setSkill = ((_unit_skill select 0) select 0) + random (((_unit_skill select 0) select 1) - ((_unit_skill select 0) select 0));
									_leaderman setSkill _setskill;
								};
								_leaderman setTargetAge "UNKNOWN";
								if(_WeapList > 0) then {[_leaderman,format["%1",_WeapList]] spawn DAC_Weapons;_WeapList = 0};
								DAC_Init_Values set [1,(DAC_Init_Values select 1) + 1];_sj = 1;_run = 6;
								if(((DAC_Com_Values select 1) == 2) && (!(DAC_InSpawn)) && ((getdir DAC_StartDummy) < 170)) then
								{
									DAC_InitText = (DAC_InitText + "|");
									_countu = DAC_Init_Values select 1;_countg = DAC_Init_Values select 0;
									if(DAC_Basic_Value != 10) then {hintSilent parseText (DAC_InitText + format["%1(%2)",_countu,_countg])};
								};
							}
							else
							{
								if((typeName _soldier) == "ARRAY") then {_soldierT = (_soldier select 0);_WeapList = (_soldier select 1)} else {_soldierT = _soldier};
								_eman = (group _leaderman) createUnit [_soldierT,_startpos,[], 0, "NONE"];
								_eman allowFleeing _setFleeing;_eman setRank _setrank;
								if(count (_unit_skill select 0) > 2) then
								{
									{_eman setskill [(_x select 1),(((_unit_skill select 0) select (_x select 0)) select 0) + random ((((_unit_skill select 0) select (_x select 0)) select 1) - (((_unit_skill select 0) select (_x select 0)) select 0))]} foreach _setSkill;
								}
								else
								{
									_setSkill = ((_unit_skill select 0) select 0) + random (((_unit_skill select 0) select 1) - ((_unit_skill select 0) select 0));
									_eman setSkill _setskill;
								};
								if(_WeapList > 0) then {[_eman,format["%1",_WeapList]] spawn DAC_Weapons;_WeapList = 0};
								_eman setTargetAge "UNKNOWN";
								DAC_Init_Values set [1,(DAC_Init_Values select 1) + 1];_run = 6;
								if(((DAC_Com_Values select 1) == 2) && (!(DAC_InSpawn)) && ((getdir DAC_StartDummy) < 170)) then
								{
									DAC_InitText = (DAC_InitText + "|");
									_countu = DAC_Init_Values select 1;_countg = DAC_Init_Values select 0;
									if(DAC_Basic_Value != 10) then {hintSilent parseText (DAC_InitText + format["%1(%2)",_countu,_countg])};
								};
							};
						};
					};
			case 7:	{
						//-----------------------------
						//#createDefense
						//-----------------------------
						if((count (_TempUnitsB select 3)) == 0) then
						{
							_run = 8;
						}
						else
						{
							_wset = (_TempUnitsB select 3);_we = 0;_solarray = [];_run = 8;
							while {_we < count _wset} do
							{
								_eman = (group _leaderman) createUnit [(_wset select _we),_startpos,[], 0, "NONE"];
								_eman allowFleeing _setFleeing;_eman setRank _setrank;
								if(count (_unit_skill select 0) > 2) then
								{
									{_eman setskill [(_x select 1),(((_unit_skill select 0) select (_x select 0)) select 0) + random ((((_unit_skill select 0) select (_x select 0)) select 1) - (((_unit_skill select 0) select (_x select 0)) select 0))]} foreach _setSkill;
								}
								else
								{
									_setSkill = ((_unit_skill select 0) select 0) + random (((_unit_skill select 0) select 1) - ((_unit_skill select 0) select 0));
									_eman setSkill _setskill;
								};
								_eman setTargetAge "UNKNOWN";
								_solarray set [count _solarray,_eman];_we = _we + 1;
							};
							if((count (_campScr select 3)) > 0) then {{call compile ((_campScr select 3) select 0)} foreach _solarray};
						};
					};
			case 8:	{
						//-----------------------------
						//#ausgang
						//-----------------------------
						if(count _tempST > 0) then
						{
							_we = 0;
							while {_we < count _tempST} do
							{
								_eman = (group _leaderman) createUnit [(_tempST select (_we + 1)),_startpos,[], 0, "NONE"];
								_eman allowFleeing _setFleeing;_eman setRank _setrank;
								if(count (_unit_skill select 0) > 2) then
								{
									{_eman setskill [(_x select 1),(((_unit_skill select 0) select (_x select 0)) select 0) + random ((((_unit_skill select 0) select (_x select 0)) select 1) - (((_unit_skill select 0) select (_x select 0)) select 0))]} foreach _setSkill;
								}
								else
								{
									_setSkill = ((_unit_skill select 0) select 0) + random (((_unit_skill select 0) select 1) - ((_unit_skill select 0) select 0));
									_eman setSkill _setskill;
								};
								_eman setTargetAge "UNKNOWN";
								_eman assignasgunner (_tempST select _we);_eman moveingunner (_tempST select _we);_we = _we + 2;
							};
						};
						_group = group _leaderman;_group setbehaviour "AWARE";
						sleep 0.01;
						_cs5 = ((_homezone select 0) + (_homezone select 1));
						_cs1 = 0;_cs2 = 0;_run = 9;
						if((count _EventList) > 0) then {call compile (_EventList select 0)};
						if((typeName _GroupVar) == "ARRAY") then
						{
							if(count _groupvar > 0) then
							{
								_sj = 0;
								while {_sj < count _groupvar} do
								{
									_vA set [_sj,((getPosATL (_groupvar select _sj)) select 0)];_sj = _sj + 1;
								};
							};
						};
						switch (_groupside) do
						{
							case 0:	{
										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,_build];
												((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.01;
										{DAC_East_Units set [count DAC_East_Units,_x]} foreach units _group;_wside = 0;
										if(_cs2 == 0) then {DAC_Spawn_CampsE set [count DAC_Spawn_CampsE,[_homezone,_camp,_build,_spawnpro,_spawntyp,[_spawncount,0],_vA]]};
									};
							case 1:	{
										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,_build];
												((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.01;
										{DAC_West_Units set [count DAC_West_Units,_x]} foreach units _group;_wside = 1;
										if(_cs2 == 0) then {DAC_Spawn_CampsW set [count DAC_Spawn_CampsW,[_homezone,_camp,_build,_spawnpro,_spawntyp,[_spawncount,0],_vA]]};
									};
							case 2:	{
										if(DAC_Res_Side == 0) then
										{
											While {_cs1 < count DAC_Spawn_CampsE} do
											{
												_cs3 = DAC_Spawn_CampsE select _cs1;_run = 9;
												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,_build];
													((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.01;
											{DAC_East_Units set [count DAC_East_Units,_x]} foreach units _group;_wside = 0;
											if(_cs2 == 0) then {DAC_Spawn_CampsE set [count DAC_Spawn_CampsE,[_homezone,_camp,_build,_spawnpro,_spawntyp,[_spawncount,0],_vA]]};
										}
										else
										{
											While {_cs1 < count DAC_Spawn_CampsW} do
											{
												_cs3 = DAC_Spawn_CampsW select _cs1;_run = 9;
												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,_build];
													((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.01;
											{DAC_West_Units set [count DAC_West_Units,_x]} foreach units _group;_wside = 1;
											if(_cs2 == 0) then {DAC_Spawn_CampsW set [count DAC_Spawn_CampsW,[_homezone,_camp,_build,_spawnpro,_spawntyp,[_spawncount,0],_vA]]};
										};
									};
							default	{};
						};
					};
			case 9	:{
						//-----------------------------
						//#CampEnd
						//-----------------------------
						sleep 0.01;
						DAC_InCreate = false;
						sleep 0.1;
						if((DAC_Reduce_Value select 2) > 0) then {[_group,_groupside,1,_DAC_Z_Set,_groupende] spawn DAC_fReduceGroup};
						[_group,_groupside] spawn DAC_fRouteMarker;DAC_Init_Group = DAC_Init_Group - [_randomcount];
						if(!(_group in DAC_Camp_Groups)) then {DAC_Camp_Groups set[(count DAC_Camp_Groups), _group]};
						if(!(_group in DAC_All_Groups)) then {DAC_All_Groups set [count DAC_All_Groups,_group]};
						DAC_Init_Unit set [4,(DAC_Init_Unit select 4) - 1];DAC_Master_Init = DAC_Master_Init - 1;
						if((((getMarkerSize _ma) select 0) == 6) && (!(DAC_InSpawn)) && ((DAC_Com_Values select 0) > 0) && ((getdir DAC_StartDummy) > 170)) then {player groupchat format["%1 was activated",_group]};
						DAC_InSpawn = false;
						if(call compile format["z_%1",_groupzone] > 0) then {call compile format["z_%1 = z_%1 - 1",_groupzone]};
						if((typeName _GroupVar) == "STRING") then
						{
							if(!(format["%1",_groupvar] == "")) then {call compile format["%1 set [count %1,_group]",_groupvar]};
						}
						else
						{
							[_wside,_camp]execVM "DAC\Marker\DAC_CampMarker.sqf";
						};
						
						_gc = 0;_allobj = _objarray + [_build,_camp,_flag,_fire];{_x setpos position _x} foreach _allobj;
						_campSet = 	[
										_build,_camp,_flag,_allobj,(_TempUnitsB select 5),(_TempUnitsB select 6),
										_wallArray,_ammoarray,_fire,(_campScr select 5),(_campScr select 6)
									] 	call DAC_fCreateCamp;
									
						sleep 0.1;
						_camparray = [_flag,_camp,_build,_fire,_ammoarray,_isM,_objarray,_setDG,_campSet];
						[[_group,_DAC_Z_Set,_groupende],_wparray,5,_camparray,_HeloArray,_groupside] spawn DAC_fMoveCamp;
						[_group,5,_groupende,_groupside,_grouppara,_ma,_camparray,_isM] spawn DAC_fWaitingForEnd;_run = 0;
					};
			case 11:{
						//-----------------------------
						//#NoCamp
						//-----------------------------
						if(((getMarkerSize _ma) select 0) <= 4) then
						{
							_run = 0;
						}
						else
						{
							[
								_unitcount,_vehcount,_wparray,5,_groupside,_groupstart,_groupende,
								_maxwps,_heloarray,_groupvar,_marker,_homezone,_TempUnitsB,_ma
							]	execVM "DAC\Scripts\DAC_No_Camp.sqf";
							_run = 0;
						};
					};
			Default{};
		};
	};
};