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

if(DAC_Code > 1) exitwith {};

private ["_zone","_pos","_size","_uc","_bc","_wc","_c","_a","_mS","_mP","_mU","_zoneLoc","_action","_dd"];

_zone = _this select 0;_pos = _this select 1;_size = _this select 2;_uc = _this select 3;_action = true;_dd = 0;
_bc = _this select 4;_wc = _this select 5;_c = 0;_mS = [];_mP = [];_mU = [];_a = [];_zoneLoc = objNull;

if(isServer) then
{
	if(DAC_NewZone == 0) then
	{
		DAC_NewZone = 1;
		waituntil{DAC_Basic_Value > 0};
		if(format["%1",_zone] == scalar) then
		{
			hintc "Error: DAC_Change_Zone > No valid zone";
		}
		else
		{
			while {_c < count DAC_Zones} do
			{
				_a = DAC_Zones select _c;
				if((call compile (_a select 0)) == _zone) then
				{
					_mP = getMarkerPos ((_a select 9) select 0);
					_mS = getMarkerPos ((_a select 9) select 1);
					_mU = getMarkerPos ((_a select 9) select 2);
					_c = ((count DAC_Zones) + 1);
				}
				else
				{
					_c = _c + 1;
				};
			};
			if(count _mP > 0) then
			{
				if(_uc > 0) then
				{
					((_a select 9) select 2) setmarkerposlocal [_uc,(_mU select 1)];
					_mU = getMarkerPos ((_a select 9) select 2);
					if((DAC_Com_Values select 0) > 0) then
					{
						player groupchat format["Set new UnitConfig to zone [%1] = %2",round (getPosATL _zone select 0),_uc];
					};
				};
				if(_bc > 0) then
				{
					((_a select 9) select 2) setmarkerposlocal [(_mU select 0),_bc];
					if((DAC_Com_Values select 0) > 0) then
					{
						player groupchat format["Set new BehaviourConfig to zone [%1] = %2",round (getPosATL _zone select 0),_bc];
					};
				};
				if(((count _pos) < 3) && ((count _size) < 3)) exitwith {};
				if((count _pos) < 3) then {_pos = [((position _zone) select 0),(((position _zone) select 1) + 0.01),0]};
				if((count _size) < 3) then
				{
					_size = [((triggerarea _zone) select 0),((triggerarea _zone) select 1),((triggerarea _zone) select 2)];
				}
				else
				{
					if((triggerarea _zone) select 3) then
					{
						if(((_size select 0) == 0) && ((_size select 1) == 0)) then
						{
							_size set[0, ((triggerarea _zone) select 0)];
							_size set[1, ((triggerarea _zone) select 1)];
						};
					}
					else
					{
						if(((triggerarea _zone) select 0) == ((triggerarea _zone) select 1)) then
						{
							if(((_size select 0) == 0) && ((_size select 1) == 0)) then
							{
								_size set[0, ((triggerarea _zone) select 0)];
								_size set[1, ((triggerarea _zone) select 1)];
							}
							else
							{
								if((_size select 0) == 0) then
								{
									_size set[0, (_size select 1)];
								}
								else
								{
									_size set[1, (_size select 0)];
								};
							};
						}
						else
						{
							if((_size select 0) == 0) then {_size set[0, ((triggerarea _zone) select 0)]};
							if((_size select 1) == 0) then {_size set[1, ((triggerarea _zone) select 1)]};
						};
					};
					if((_size select 2) == 0) then {_size set[2, ((triggerarea _zone) select 2)]};
				};
				((_a select 9) select 1) setmarkerposlocal [(_size select 0),(_size select 1)];
				_zone setTriggerArea [(_size select 0), (_size select 1), (_size select 2), ((triggerarea _zone) select 3)];
				if(format["%1",_zone getVariable "DAC_ZoneLoc"] != "<NULL>") then
				{
					_zoneLoc = _zone getVariable "DAC_ZoneLoc";
					_zoneLoc setdirection (_size select 2);
				};

				[1,_zone,_pos,_size,_wc] spawn DAC_fNewWaypoints;
				_zone settriggertext "action";
				sleep 1;
				waituntil {((({_x == 1} count DAC_Init_Counter) == 5))};
				DAC_NewZone = 0;
			}
			else
			{
				hintc "Error: DAC_Change_Zone > zone is disabled";
				DAC_NewZone = 0;
			};
		};
	}
	else
	{
		if((DAC_Com_Values select 0) > 0) then {player groupchat "Any Zone action in procress. Please try again later."};
	};
};