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

private ["_man","_val1","_val2","_val3","_val4","_val5","_val6","_val7","_action","_radioIndex","_string","_array","_dist","_i","_r","_sayer","_manSide"];

_val1 = _this select 0;_man = 0;_val5 = 0;_val6 = "";_val7 = [];_action = true;DacRadioString = "";_manSide = "";_array = [];
_val3 = "DAC_RadioArrayW";_val2 = [];_val4 = "";_radioIndex = "";_string = "";_dist = 0;_i = 0;_r = [];_sayer = objNull;

if((count _this > 1) && (DAC_Basic_Value == 1)) then
{
	_man = _this select 1;
	if((!(isNil "_man")) && (!(isNil "DAC_AI_RadioDummy1"))) then
	{
		if(DAC_Activate_Sound) then
		{
			if((typeName _man) == "OBJECT") then
			{
				switch (format["%1",side (driver (vehicle _man))]) do
				{
					case "WEST":{_val3 = "DAC_RadioArrayW";_string = "DAC_AI_RadioDummy1";_manSide = "WEST"};
					case "EAST":{_val3 = "DAC_RadioArrayE";_string = "DAC_AI_RadioDummy2";_manSide = "EAST"};
					case "GUER":{
									if(DAC_Res_Side == 0) then
									{
										_val3 = "DAC_RadioArrayE";_string = "DAC_AI_RadioDummy2";_manSide = "EAST"
									}
									else
									{
										_val3 = "DAC_RadioArrayW";_string = "DAC_AI_RadioDummy1";_manSide = "WEST"
									};
								};
					Default 	{_val3 = "[0]";_manSide = ""};
				};
				if(!(isNull (DAC_Radio_Settings select 4))) then {_man = (DAC_Radio_Settings select 4)};
				if((count (call compile _val3)) > 1) then
				{
					if(!(format["%1",((call compile _string) getVariable "radio_array")] in ["<null>","any"])) then
					{
						_array = ((call compile _string) getVariable "radio_array");
						if(count _array < (DAC_Radio_Settings select 2)) then
						{
							if(count _this > 2) then {sleep (_this select 2)};
							if((DAC_Radio_Settings select 0) == 0) then
							{
								_dist = 0.2 + ((DAC_Radio_Settings select 1) select 0) + random ((DAC_Radio_Settings select 1) select 1);
							}
							else
							{
								if(local player) then
								{
									if(((player distance _man) < (DAC_Radio_Settings select 0)) || ((DAC_Radio_Settings select 0) == 0)) then
									{
										if((player distance _man) < 3) then
										{
											_dist = ((10 / ((DAC_Radio_Settings select 0) / 800)) + round(random 10));
										}
										else
										{
											_dist = (((player distance _man) / ((DAC_Radio_Settings select 0) / 800)) + round(random 10));
										};
									}
									else
									{
										_action = false;
									};
								}
								else
								{
									_dist = (position _man);
								};
							};
							if(_action) then
							{
								if(((call compile _string) getVariable "old_string") == (_array select 0)) then
								{
									_array = _array - [((call compile _string) getVariable "old_string")];
								};
								sleep 0.1;
								_array set [count _array,format["%1_%2",_val1,_dist]];
								(call compile _string) setVariable ["radio_array", _array, false];
								if(local player) then {_sayer = "logic" createvehiclelocal [0,0,0]};
								
								while{_action} do
								{
									if(!(DAC_AI_Radio)) then
									{
										DAC_AI_Radio = true;
										_action = false;
									}
									else
									{
										sleep (0.2 + random 0.3);
									};
								};
								
								sleep 0.1;
								if(!(format["%1",((call compile _string) getVariable "radio_array")] in ["<null>","any"])) then
								{
									_array = ((call compile _string) getVariable "radio_array");
									if(count _array > 0) then
									{
										_val6 = (_array select 0);_val7 = toArray(_val6);						
										if((_val7 select 1) == 95) then
										{
											_val1 = call compile (toString[(_val7 select 0)]);
											if((typeName _dist) != "ARRAY") then
											{
												_r = [];_i = 2;while{(_i < count _val7)} do {_r set [count _r,(_val7 select _i)];_i = _i + 1};
												_dist = call compile (toString _r);
											};
										}
										else
										{
											_val1 = call compile format["%1%2",(toString[(_val7 select 0)]),(toString[(_val7 select 1)])];
											if((typeName _dist) != "ARRAY") then
											{
												_r = [];_i = 3;while{(_i < count _val7)} do {_r set [count _r,(_val7 select _i)];_i = _i + 1};
												_dist = call compile (toString _r);
											};
										};
										
										_val2 = ((call compile _val3) select _val1);
										_val5 = (_val2 select 0);
										_val4 = (_val2 select (1 + random ((count _val2) - 2)));
										
										if((random 100) <= _val5) then
										{
											if((_val4 != ((call compile _string) getVariable "old_string")) && (format["%1",_val4] != "")) then
											{
												DacRadioString = _val4;
												(call compile _string) setVariable ["radio_dist", _dist, true];
												(call compile _string) setVariable ["radio_string", _val4, true];
												(call compile _string) setVariable ["old_string", _val4, false];
												if(local player) then
												{
													if(format["%1",side player] == _manSide) then
													{
														if(isNull (DAC_Radio_Settings select 4)) then
														{
															_sayer setpos [(position player select 0),(position player select 1),- _dist];
															sleep 0.1;
															if(format["%1",DacRadioString] != "") then {_sayer say DacRadioString};
														}
														else
														{
															_sayer setpos [(position (DAC_Radio_Settings select 4) select 0),(position (DAC_Radio_Settings select 4) select 1),- _dist];
															sleep 0.1;
															if(format["%1",DacRadioString] != "") then {(DAC_Radio_Settings select 4) say DacRadioString};
														};
													};
												};
												sleep (DAC_Radio_Settings select 3);
											};
										};
									};
									if(!(format["%1",((call compile _string) getVariable "radio_array")] in ["<null>","any"])) then
									{
										_array = ((call compile _string) getVariable "radio_array");
										_array = _array - [_val6];
										(call compile _string) setVariable ["radio_array", _array, false];
										sleep 2;
									};
								};
								DAC_AI_Radio = false;
								sleep 4;
								if(local player) then {deletevehicle _sayer};
							};
						};
					};
				};
			};
		};
	};
};