Jump to content
bangabob

Enemy occupation system (eos)

Recommended Posts

I must be doing something wrong, because I can't seem to be getting v1.9 to do what I want. I placed a game logic called "server" (no quotes in-game) and I was able to make this script function in the previous version.

I placed a 30x50 rectangle marker called "barracks" (no quotes in-game) and have the following set up in OpenMe.sqf:

null = [["barracks"],[3,2],[0,0],[0,0],[0,0],[0,0,0],[0,0,250,EAST]] call EOS_Spawn;

The zone appears to work, but no units spawn and the area just turns green when I enter. Also, I'd like to make it Independent troops, but the ReadMe didn't include which numbers corresponded to which faction. I thought me fiddling with the number to match INDEPENDENT was making it break, so I switched to 'factory default' but to no avail.

I thought maybe the buildings I was trying to occupy weren't functional, so I moved it to another location and still had the same result. The two buildings I'm trying to occupy are a pair of Barracks (Old) at grid 207072 on Altis.

What am I missing?

Hmm. Maybe its the house patrol script not recognizing the barracks. Have you tried using the normal patrol? And does the same error occur.

Also the first number in [0,0,250,EAST] refers to the faction. So 0= CSAT

Share this post


Link to post
Share on other sites
Hmm. Maybe its the house patrol script not recognizing the barracks. Have you tried using the normal patrol? And does the same error occur.

Also the first number in [0,0,250,EAST] refers to the faction. So 0= CSAT

I just tried it with a switch to normal patrol. Curiously, all the squads immediately moved away from the barracks and clustered in the same point each time I tested it before beginning their patrol routes.

Its not an error so much as when I use House Patrols, no one spawns.

Also, I found the right syntax to spawn Independent, thanks.

Share this post


Link to post
Share on other sites

And what about this ?

hi BangaBob,

first i have to say that i love your EOS! :D

With this I'am way closer to my desired mission...

I use your latest dev build 1.9 and changed a few things, so i wanted to let it be known to you.

Here it goes:

in "EOS/EOS/EOS_Core.sqf" you use BIS_fnc_findSafePos which has an tendency to dont find a viable position so i tweaked the parameters a bit and put it into a loop with exit functionality. It's now reliable in crowded towns.

code is now as follows: (only snippet)

_radmen = 30;_radveh = 50;
_cache= if (count _this > 7) then {_this select 7} else {false};

_debug=false;
_heightLimit=false;
_r=_mkrX * 0.8;

switch (_side) do{case EAST:{_strFac="east";_civZone=false;};case WEST:{_strFac="west";_civZone=false;};case INDEPENDENT:{_strFac="GUER";_civZone=false;};case CIVILIAN:{_strFac="civ";_civZone=true;};};
switch (_mA) do {case 0:{_mAH = 1;_mAN = 0.5;};case 1:{_mAH = 0;_mAN = 0;};case 2:{_mAH = 0.5;_mAN = 0.5;};};

// INITIATE ZONE
_trig=format ["EOSTrigger%1",_mkr];

if (!_cache) then {
if ismultiplayer then {
		if (_heightLimit) then 
		{_actCond="{vehicle _x in thisList && isplayer _x && ((getPosATL _x) select 2) < 5} count playableunits > 0";
						}else 
						{_actCond="{vehicle _x in thisList && isplayer _x} count playableunits > 0";
	};}else{
		if (_heightLimit) then 
					{_actCond="{vehicle _x in thisList && isplayer _x && ((getPosATL _x) select 2) < 5} count allUnits > 0";
							}else
								{_actCond="{vehicle _x in thisList && isplayer _x} count allUnits > 0";};};

	_eosActivated = createTrigger ["EmptyDetector",_mPos]; 
	_eosActivated setTriggerArea [(_distance+_mkrX),(_distance+_mkrY),0,true]; 
	_eosActivated setTriggerActivation ["ANY","PRESENT",true];
	_eosActivated setTriggerTimeout [1, 1, 1, true];
	_eosActivated setTriggerStatements [_actCond,"",""];

		server setvariable [_trig,_eosActivated];	
				}else{
			_eosActivated=server getvariable _trig;	
				};

				_mkr setmarkerAlpha _mAN;
					if (!(getmarkercolor _mkr == VictoryColor)) then 	//IF MARKER IS GREEN DO NOT CHANGE COLOUR
						{
					_mkr setmarkercolor hostileColor;
						};

waituntil {triggeractivated _eosActivated};	//WAIT UNTIL PLAYERS IN ZONE
if (!(getmarkercolor _mkr == "colorblack"))then {
if (!(getmarkercolor _mkr == VictoryColor)) then {_mkr setmarkerAlpha _mAH;};

// SPAWN HOUSE PATROLS
_n=0;
_aGrp=[];
	while {_n < _aGrps} do 
	{	
	_n=_n+1;
	if (_cache) then {
			_cacheGrp=format ["HP%1",_n];
			_units=_eosActivated getvariable _cacheGrp;	
					_aSize=[_units,_units];
					_aMin=_aSize select 0;
						if (_debug)then{player sidechat format ["ID:%1,restore - %2",_cacheGrp,_units];};
						};
							if (_aMin > 0) then {
								_pos = [_mPos, _r, random 360] call BIS_fnc_relPos;
								for "_counter" from 0 to 100 do {
									_newpos = [_pos,0,_radmen,0.5,1,20,0] call BIS_fnc_findSafePos;
									if ((_pos distance _newpos) < (_radmen + 1)) exitWith {_pos = _newpos;};
								};

									_aGroup=[_pos,_bSize,_faction,_side] call EOS_spawnPatrol;

										0=[_mPos,units _aGroup,_r,0,[0,4],true] call callHouseScript;
											_aGrp=_aGrp+[_aGroup];sleep 0.1;
					if (_debug) then {hint "Spawning House patrol";0= [_mkr,_n,"House Patrol",getpos (leader _aGroup)] call EOS_debug};
											};
	};

// SPAWN PATROLS
_n=0;
_bGrp=[];
	while {_n < _bGrps} do 
	{	
	_n=_n+1;
	if (_cache) then {
			_cacheGrp=format ["PA%1",_n];
			_units=_eosActivated getvariable _cacheGrp;	
				_bSize=[_units,_units];_bMin=_bSize select 0;
				if (_debug)then{player sidechat format ["ID:%1,restore - %2",_cacheGrp,_units];};
					};
						if (_bMin > 0) then {	
							_pos = [_mPos, _r, random 360] call BIS_fnc_relPos;
							for "_counter" from 0 to 100 do {
								_newpos = [_pos,0,_radmen,0.5,1,20,0] call BIS_fnc_findSafePos;
								if ((_pos distance _newpos) < (_radmen + 1)) exitWith {_pos = _newpos;};
							};
								_bGroup=[_pos,_bSize,_faction,_side] call EOS_spawnPatrol;
									0 = [_bGroup,_r] call EOS_Patrol;
									_bGrp=_bGrp+[_bGroup];sleep 0.1;
						if (_debug) then {PLAYER SIDECHAT "Spawning patrol";0= [_mkr,_n,"patrol",getpos (leader _bGroup)] call EOS_debug};
											};
	};	

//SPAWN LIGHT VEHICLES
_cGrp=[];
	while {(count _cGrp) < _cGrps} do 
	{		
			_pos = [_mPos, _r, random 360] call BIS_fnc_relPos;
			for "_counter" from 0 to 100 do {
				_newpos = [_pos,0,_radveh,5,1,20,0] call BIS_fnc_findSafePos;
				if ((_pos distance _newpos) < (_radveh + 1)) exitWith {_pos = _newpos;};
			};
				_cGroup=[_pos,_bSize,_faction,_side] call EOS_LightVeh;			
				_cGrp=_cGrp+[_cGroup];				
					0 = [(_cGroup select 2),_r] call EOS_Patrol;
					sleep 0.1;
			if (_debug) then {player sidechat format ["Light Vehicle:%1 - r%2",(count _cGrp),_cGrps];0= [_mkr,(count _cGrp),"Light Veh",(getpos leader (_cGroup select 2))] call EOS_debug};
	};			
//SPAWN ARMOURED VEHICLES
_dGrp=[];
	while {(count _dGrp) < _dGrps} do 
	{
		_pos = [_mPos, _r, random 360] call BIS_fnc_relPos;
		for "_counter" from 0 to 100 do {
			_newpos = [_pos,0,_radveh,5,1,20,0] call BIS_fnc_findSafePos;
			if ((_pos distance _newpos) < (_radveh + 1)) exitWith {_pos = _newpos;};
		};
			if (surfaceiswater _mPos) exitwith {};
				_dGroup=[_pos,_bSize,_faction,_side] call EOS_Armour;
				0 = [(_dGroup select 2),_r] call EOS_Patrol;
				_dGrp=_dGrp+[_dGroup];sleep 0.1;
					if (_debug) then {player sidechat format ["Armoured:%1 - r%2",(count _dGrp),_dGrps];0= [_mkr,(count _dGrp),"Armour",(getpos leader (_dGroup select 2))] call EOS_debug};
	};				
//SPAWN STATIC PLACEMENTS
_eGrp=[];
	while {(count _eGrp) < _eGrps} do 
	{	
	if (surfaceiswater _mPos) exitwith {};
		_pos = [_mPos, _r, random 360] call BIS_fnc_relPos;
		for "_counter" from 0 to 100 do {
			_newpos = [_pos,0,_radmen,3,1,20,0] call BIS_fnc_findSafePos;
			if ((_pos distance _newpos) < (_radmen + 1)) exitWith {_pos = _newpos;};
		};
			_eGroup=[_pos,_bSize,_faction,_side] call EOS_spawnStatic;
				_eGrp=_eGrp+[_eGroup];sleep 0.1;
						if (_debug) then {hint "Spawning static Vehicles";0= [_mkr,(count _eGrp),"Static",(getpos leader (_eGroup select 2))] call EOS_debug};
	};	

in "EOS/EOS/SpawnUnits/" "Spawn_Infantry.sqf" i changed the parameter for unit radius to 4 to space the placement a bit out.

_unit = _grp createUnit [_unitType, _pos, [], 4, "FORM"];

in "EOS/EOS/SpawnUnits/" "Spawn_Vehicle.sqf" and "Spawn_Armour.sqf" you could add the afore mentioned "for construct" so the vehicles dont spawn on each other.

Thats my findings so far.

To close i have to say great work and i like to see the finished build!

greetings Na_Palm

Is it good?

What do you mean by : "you could add the afore mentioned "for construct""?

Share this post


Link to post
Share on other sites

hi chal00,

the "for construct" as i called it is as follows:

for units (people)

for "_counter" from 0 to 100 do {
  _newpos = [_pos,0,_radmen,0.5,1,20,0] call BIS_fnc_findSafePos;
  if ((_pos distance _newpos) < (_radmen + 1)) exitWith {_pos = _newpos;};
};

and for vehicles

for "_counter" from 0 to 100 do {
  _newpos = [_pos,0,_radveh,5,1,20,0] call BIS_fnc_findSafePos;
  if ((_pos distance _newpos) < (_radveh + 1)) exitWith {_pos = _newpos;};
};

take into account to put the new vars "_newpos", "_radmen" and "_radveh" into the declaration (PRIVATE[......) and to assign values to

"_radmen" and "_radveh":

_radmen = 30;_radveh = 50;

---------------------------------

I see just as i look now into the vehicle spawn scripts that they are meant to be used to create one vehicle only, before calling them in a loop there must be a randomisation for the position.

greetings Na_Palm

P.S.: and yeah it works, that was the whole point for me to posting it...

Edited by Na_Palm
see PS

Share this post


Link to post
Share on other sites

Mr BangaBob is there a way of making the eos markers have a 20% chance of creating a dynamic event like a bastion event? and btw great job on this script

Share this post


Link to post
Share on other sites

I'm looking for a way to disable the markers for where units spawned with bastion markers. It works beautifully but the point of origin markers seem out of place.

Share this post


Link to post
Share on other sites
I'm looking for a way to disable the markers for where units spawned with bastion markers. It works beautifully but the point of origin markers seem out of place.

If you are talking about the debug markers then open

Bastion\b_core.sqf

Find

_debug=true;

swap with

_debug=false;

---------- Post added at 15:48 ---------- Previous post was at 15:42 ----------

Mr BangaBob is there a way of making the eos markers have a 20% chance of creating a dynamic event like a bastion event? and btw great job on this script

Yes. But you will have to some scripting. All the tools are there.

Step 1. Make a trigger detect when your EOS zone turns green. In the condition of the trigger put.

"colorGreen" getmarkercolor "MarkerNameHere";

Step 2. Make a small script that will run 20% of the time

Chance.sqf

private ["_MarkerName","_chance ","_prob "];
_MarkerName=(_this select 0);
_chance = (random 10);
_prob = 2;//20%	

if (_chance < _prob) then
{
null = [[_MarkerName],[1,1],[1,1],[1,1],[1,1],[0,0,25,EAST]] call Bastion_Spawn;
};						

Step 3. In the onAct of the trigger put

NULL= ["MarkerNameHere"] execVM "chance.sqf";

Share this post


Link to post
Share on other sites
If you are talking about the debug markers then open

Bastion\b_core.sqf

Find

_debug=true;

swap with

_debug=false;

---------- Post added at 15:48 ---------- Previous post was at 15:42 ----------

Yes. But you will have to some scripting. All the tools are there.

Step 1. Make a trigger detect when your EOS zone turns green. In the condition of the trigger put.

"colorGreen" getmarkercolor "MarkerNameHere";

Step 2. Make a small script that will run 20% of the time

Chance.sqf

private ["_MarkerName","_chance ","_prob "];
_MarkerName=(_this select 0);
_chance = (random 10);
_prob = 2;//20%	

if (_chance < _prob) then
{
null = [[_MarkerName],[1,1],[1,1],[1,1],[1,1],[0,0,25,EAST]] call Bastion_Spawn;
};						

Step 3. In the onAct of the trigger put

NULL= ["MarkerNameHere"] execVM "chance.sqf";

"colorGreen" getmarkercolor "MarkerNameHere"; dosnt work it says missing ;

Share this post


Link to post
Share on other sites

BangaBob how do i make a trigger to activate by cleared eos zone on a invisible marker?

Share this post


Link to post
Share on other sites

Hi,

a great Script you have made !

I got an idea in my mind and may be its an option for you ?

What is if you can place a marker in editor like you've described in your doc file. Then you will place some units (vehicles, helicopters, boats,etc) on map (in the marker area). Then you connect these units to the marker. When a player will go into the marker then your script will spawn all connected units and despawn it after player go out of the marker. It would give two advantages:

1) There is no need to edit units to your script or extend it.

2) The mission creator a free which units he will place.

May be its an option?

thx

Share this post


Link to post
Share on other sites
"colorGreen" getmarkercolor "MarkerNameHere"; dosnt work it says missing ;

I meant

"colorGreen" == getmarkercolor "MarkerNameHere";

---------- Post added at 12:43 ---------- Previous post was at 12:42 ----------

BangaBob how do i make a trigger to activate by cleared eos zone on a invisible marker?

I dont know. I assumed that the marker still exists and contains a color when its invisible.

Share this post


Link to post
Share on other sites
I meant

"colorGreen" == getmarkercolor "MarkerNameHere";

---------- Post added at 12:43 ---------- Previous post was at 12:42 ----------

I dont know. I assumed that the marker still exists and contains a color when its invisible.[/quote

i have "colorGreen" == getmarkercolor "mrk1,mrk2" if i "mrk1","mrk2"; it dosnt work but in the ON ACT. i use it as "mrk1","mark2" dosnt it make a diference and where under the chance.sqf do i make the % higher if needed btw thx alot for all the time ur taking out to help a fellow armaholic

Share this post


Link to post
Share on other sites

See below where to change the chance @ Dproject420.

private ["_MarkerName","_chance ","_prob "];
_MarkerName=(_this select 0);
_chance = (random 10);
_prob = 2; //20% - HERE YOU CAN CHANGE THE CHANCE!

if (_chance < _prob) then {null = [[_MarkerName],[1,1],[1,1],[1,1],[1,1],[0,0,25,EAST]] call Bastion_Spawn; };

Share this post


Link to post
Share on other sites

If there's something to add instead of improve the script, it is that :

BangaBob how do i make a trigger to activate by cleared eos zone on a invisible marker?

A kind to have a succeeded trigger when markers are invisbles :bounce3:

See you soon ;)

Share this post


Link to post
Share on other sites

Keeping an eye on this script as its got real potential but for now I am reverting back to 1.8 as I still dont seem to get house patrols with 1.9 also vehicles are spawining in middle of zone and exploding. 1,8 does a superb job of house patrols and heavy patrols - not so great for vehicles. As our missions are predominatly infamtry based we are using 1.8 to populate zones with infantry and other ways to populate with vehicles. Even with the performance hit and less flexibility between 1,8 and 1,9 personally its worth it. So if anyone needs a good infantry spawn may I suggest trying 1.8

Share this post


Link to post
Share on other sites

chal00

BangaBob: I dont know. I assumed that the marker still exists and contains a color when its invisible.

He is right! "colorGreen" == getmarkercolor "MarkerNameHere"; this works for invisible markers too!!!i just tested!

Thanks again BB!

Share this post


Link to post
Share on other sites
chal00

BangaBob: I dont know. I assumed that the marker still exists and contains a color when its invisible.

He is right! "colorGreen" == getmarkercolor "MarkerNameHere"; this works for invisible markers too!!!i just tested!

Thanks again BB!

Beautiful ;) thanks ;)

I didn't test it because of not enought time those days !

Share this post


Link to post
Share on other sites
Keeping an eye on this script as its got real potential but for now I am reverting back to 1.8 as I still dont seem to get house patrols with 1.9 also vehicles are spawining in middle of zone and exploding. 1,8 does a superb job of house patrols and heavy patrols - not so great for vehicles. As our missions are predominatly infamtry based we are using 1.8 to populate zones with infantry and other ways to populate with vehicles. Even with the performance hit and less flexibility between 1,8 and 1,9 personally its worth it. So if anyone needs a good infantry spawn may I suggest trying 1.8

I have the same problem. 1.8 worked quite well any way we can fix it?:)

Share this post


Link to post
Share on other sites

Is there any way/chance of modifying the caching portion of the script to include caching for mission editor defined groups (ie standard groups with predefined waypoints) ?

I ask as although the zones are great for completely random patrols I'm having difficulty planning for specific encounters that are storyline driven. I've been spoilt in Arma 2 with cB AI Unit Caching Demo - what I liked most about this was that outside the despawn area a single unit remained as a marker (giving a chance of spotting the enemy at increased ranges & also maintaining a degree of 'alertness'/enemy awareness at range...), with barely any increase in CPU load.

Any help appreciated

Share this post


Link to post
Share on other sites

How do I change spawned AI's skill & accuarcy? I've read your pdf but couldn't find about that. need help.

Share this post


Link to post
Share on other sites
How do I change spawned AI's skill & accuarcy? I've read your pdf but couldn't find about that. need help.

Yeah, i would love for this to be implemented into EOS. right bIS jacked them way back up to aimbot again.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×