Jump to content
genesis92x

Vcom AI V2.0 - AI Overhaul

Recommended Posts

Question and sorry if it is answered, but will WEST ai call for fire from artillery against EAST? I am playing WEST side during the mission and wonder if I can take support out and let my AI sort it out...so to speak.

Share this post


Link to post
Share on other sites
On 4/27/2017 at 1:25 AM, genesis92x said:

Initially I would just need a good example. So let's say, converting the most hefty function (The finding cover function) into a CBA environment. I have not read enough about it quite yet, but the goal would be to optimize and lessen the impact of such a hefty function.

Still not quite sure what you want with the CBA. The function you mentioned VCOMAI_FindCoverPos is not running in a loop or anything, the only thing that is impacting performance is the search for all the objects, no need for CBA functions like addPerFrameHandler. Is your goal to let VCOM run in an unscheduled environment?  

 

 

Edit: I might have one suggestion:

Spoiler

The 'new' cmds are in there now, possible interesting Change, even If I don't have time to test it right now is nearObjects instead of nearestObjects, as it is not returning any life entities  and it is not sorting through distance, witch is irrelevant, as you pick randomly out of _Weaklistfinal and _Typelistfinal.

 


params ["_Unit", "_MovePos", "_VCOM_GARRISONED", "_VCOM_MovedRecentlyCover", "_VCOMAI_ActivelyClearing", "_VCOMAI_StartedInside", "_NearestEnemy"];
if (_VCOM_MovedRecentlyCover || {_VCOMAI_ActivelyClearing} || {_VCOMAI_StartedInside} || {_VCOM_GARRISONED}) exitWith {};
//systemchat format ["E %1",_Unit];
if (isNil "_NearestEnemy") exitWith {};


private _WeakListFinal = [];
private _ClosestCover = [];
private _TypeListFinal = [];
private _MovePosition = _MovePos getPos [10 + (random 10),(direction _Unit)];
private _TypeList = _MovePosition nearObjects 30;
private _Roads = _MovePosition nearRoads 30;
private _list = _TypeList - _Roads;
for "_i" from 0 to count _list -1 do {
	private _item = _list select _i;	
	private _type = typeOf _item;
	if !(_type in ["#crater","#crateronvehicle","#soundonvehicle","#particlesource","#lightpoint","#slop","#mark","HoneyBee","Mosquito","HouseFly","FxWindPollen1","ButterFly_random","Snake_random_F","Rabbit_F","FxWindGrass2","FxWindLeaf1","FxWindGrass1","FxWindLeaf3","FxWindLeaf2"]) then {
		if (!(_item isKindOf "Man") && {!(_item isKindOf "Bird")} && {!(_item isKindOf "BulletCore")} && {!(_item isKindOf "Grenade")} && {!(_item isKindOf "WeaponHolder")} && {(_item distance _Unit > 5)}) then {
			private _BoundingArray = boundingBoxReal _item;
			private _p1 = _BoundingArray select 0;
			private _p2 = _BoundingArray select 1;
			private _maxWidth = abs ((_p2 select 0) - (_p1 select 0));
			private _maxLength = abs ((_p2 select 1) - (_p1 select 1));
			private _maxHeight = abs ((_p2 select 2) - (_p1 select 2));
			if (_maxWidth > 2 && _maxLength > 2 && _maxHeight > 2) then {
				if (_type isEqualTo "") then {
					_WeakListFinal pushback _item
				} else {
					_TypeListFinal pushback _item;
				};
			};
		};
	};
};
//systemchat format ["List: %1",count ((_TypeList) - (_Roads))];


if (count _TypeListFinal  + count _WeakListFinal == 0) exitWith {};
//_ClosestCover = [_TypeListFinal,_this] call VCOMAI_ClosestObject;
if !(_TypeListFinal isEqualTo []) then {_ClosestCover = selectRandom _TypeListFinal;} else {_ClosestCover = selectRandom _WeakListFinal;};


if (isNil "_ClosestCover") exitWith {};

private _GuessLocation = [];
if (_NearestEnemy isEqualTo [0,0,0]) then {_GuessLocation = getpos _Unit} else {if (typeName _NearestEnemy isEqualTo "ARRAY") then {_GuessLocation = _NearestEnemy;} else {_GuessLocation = getpos _NearestEnemy;};};

_GuessLocation getPos [(_ClosestCover distance _NearestEnemy) + 2, _GuessLocation getDir _ClosestCover];

 

Edit 2.: 'Static' might be a possible Param for nearObjects as for nearestObjects

Edited by crewt

Share this post


Link to post
Share on other sites
7 hours ago, FoxhoundBC said:

I was wondering does it need to be run on the server/clients or just the server?

Whoever 'ownes' AI. Usually the Server ( + HCs) and if you have/use Zeus, the Zeus as well

Share this post


Link to post
Share on other sites

Hmmm I tried

 

[{{{{Driver _x setvariable ["VCOM_NOPATHING_Unit",true]; (Driver _x) setvariable ["NOAI",true];} foreach (vehicles select {_x isKindOf 'air'});}, 1, []] call CBA_fnc_addPerFrameHandler;

 

and it didnt seem to work?

Share this post


Link to post
Share on other sites

Is there any way to prevent VCom AI from occupying static weapons, or better yet, prevent them from occupying specific static weapons?

 

I really like how they will use statics most of the time, but in my particular circumstance it's a little frustrating.

 

I'm making a mission where the players have to go around and destroy several static AA guns and I don't want those AA guns to be able to shoot at the infantry with 30mm.

I have them locked for everyone, and the fuel and ammo sliders set to zero, but the AI still get into them and sit there aiming the gun and being useless.

Share this post


Link to post
Share on other sites
22 hours ago, Drofseh said:

Is there any way to prevent VCom AI from occupying static weapons, or better yet, prevent them from occupying specific static weapons?

 

I really like how they will use statics most of the time, but in my particular circumstance it's a little frustrating.

 

I'm making a mission where the players have to go around and destroy several static AA guns and I don't want those AA guns to be able to shoot at the infantry with 30mm.

I have them locked for everyone, and the fuel and ammo sliders set to zero, but the AI still get into them and sit there aiming the gun and being useless.

If you use the script version then there's an option in the setting file to change that I believe

Share this post


Link to post
Share on other sites
On 04/05/2017 at 3:48 PM, JD Wang said:

If you use the script version then there's an option in the setting file to change that I believe

 

I'm using the mod version, but thanks for letting me know!

Share this post


Link to post
Share on other sites

It's still just a variable, so you could change VCOM_STATICGARRISON = 1; into an 0 (on the right machine) and they shouldn't occupy any statics

 

Edited by crewt
wrong tastaur...

Share this post


Link to post
Share on other sites
3 hours ago, crewt said:

It's still just a variable, so you could change VCOM_STATICGARRISON = 1; into an 0 (on the right machine) and they shouldn't occupy any statics

 

Cool, I'll give that a try!

  • Like 1

Share this post


Link to post
Share on other sites

Just wondering if anyone else has had an issue with being kicked for RemotExec Restriction #1 "serverask ["VCOMAI_Func"]"

 

I've done some research on this particular kick and can't find a whole hell of a lot. I figured it's just a matter of a BE filter but when I have tried that it still is kicking me as well as others. Maybe I'm entering the filter incorrectly, I'm not sure. Really would like to give this addon a go along side Wasteland and ALiVE.

 

Any input would be much appreciated. Thanks in advance.

Share this post


Link to post
Share on other sites

@HIHBGaming You have battleeye enabled and  you are not allowed to exec the mentioned fnc?

Here you can whitelist fncs

Share this post


Link to post
Share on other sites
18 hours ago, crewt said:

@HIHBGaming You have battleeye enabled and  you are not allowed to exec the mentioned fnc?

Here you can whitelist fncs

 

Thanks! Yes apparently this is the case and it's only with VCOMAI I have this problem with so far. A3Wasteland/ALiVE running as well just fine.

Have since stopped trying to use VCOM until I can get this issue sorted but would like to see how well it works. Although, I have read that it somewhat breaks logistics in ALiVE. :eh:

 

Just started getting into the scripting thing...

 

Edited by HIHBGaming
Additions

Share this post


Link to post
Share on other sites

The thing is simple, the problem is not VCOM, but Battleeye and remoteExec. On default, you have to whitelist every function that is executed by remoteExec. If you whitelist mentioned fnc, VCOM should run, (execpt there are other functions)

 

Nevertheless, as I don't know Wasteland stuff, the client shouldn't run VCOM, as they don't have Units right? If the Server is the only owner of AI, only the Server should have VCOM

  • Like 1

Share this post


Link to post
Share on other sites

I am trying to do an enemy unit that does not react to anything. He only walks thru waypoints, like those dummies in Virtual arsenal. It works well, but when I enable Vcom AI mod, then the AI suddenly panics and starts to run in random directions.
Here is my enemy unit init code:
this disableAI "target";
this disableAI "autotarget";
this disableAI "FSM";
this disableAI "AUTOCOMBAT";
this disableAi "COVER";
this setbehaviour "SAFE";  
this setskill ["spotDistance",0.1];  
this setskill ["spotTime",0.1];  
this setskill ["courage",1];  
this setskill ["commanding",0.1]

Share this post


Link to post
Share on other sites
9 minutes ago, LoneGunner1974 said:

I am trying to do an enemy unit that does not react to anything. He only walks thru waypoints, like those dummies in Virtual arsenal. It works well, but when I enable Vcom AI mod, then the AI suddenly panics and starts to run in random directions.
Here is my enemy unit init code:
this disableAI "target";
this disableAI "autotarget";
this disableAI "FSM";
this disableAI "AUTOCOMBAT";
this disableAi "COVER";
this setbehaviour "SAFE";  
this setskill ["spotDistance",0.1];  
this setskill ["spotTime",0.1];  
this setskill ["courage",1];  
this setskill ["commanding",0.1]

Disable VCom. (First page)

Also, Careless would be the behavior to go with.

 

Share this post


Link to post
Share on other sites
On 3/19/2017 at 0:57 AM, 4 said:

Sometimes when playing missions on my server, all (or almost all) of the AI will be stuck in the "dragging" animation state and are therefore unable to move.  Is this a symptom of anything in particular that you are aware of?

 

It's been this way since VCOM 2.7 iirc.

 

My post a few months ago unfortunately got overlooked, it seems.  This is still an issue, sadly, though it seems to only ever happen randomly.  I'm using the script rather than the mod, fwiw.

 

@genesis92x, do you know what this "dragging" animation could be a symptom of?

Share this post


Link to post
Share on other sites
On 6/4/2017 at 9:57 AM, 4 said:

 

My post a few months ago unfortunately got overlooked, it seems.  This is still an issue, sadly, though it seems to only ever happen randomly.  I'm using the script rather than the mod, fwiw.

 

@genesis92x, do you know what this "dragging" animation could be a symptom of?

 

Sorry to everyone that I have not been present on this thread - I will try to make a better effort from now on :) I have been working on Dissension.

 

As for this weird dragging bug...I have yet to encounter this in the many hours of playing with Vcom AI lately. I am sure Vcom might be interacting in some way, but I would need a mission (or at least more information) in which it happens frequently. It could be an interaction between a mod/script and Vcom.

Share this post


Link to post
Share on other sites
51 minutes ago, genesis92x said:

 

Sorry to everyone that I have not been present on this thread - I will try to make a better effort from now on :) I have been working on Dissension.

 

As for this weird dragging bug...I have yet to encounter this in the many hours of playing with Vcom AI lately. I am sure Vcom might be interacting in some way, but I would need a mission (or at least more information) in which it happens frequently. It could be an interaction between a mod/script and Vcom.

 

FWIW I use vanilla for my Arma group (i.e. no mods), but I allow CBA, STHud, and Enhanced Movement as optionals.

 

Here is an old demonstration mission where it happened most recently (last week): http://www.filedropper.com/demolish12altis1altis

 

I will stream my group's next ops session and post an example clip for you if/when it happens again.  Like I said, this error happens seemingly at random so I have no idea how to diagnose it.  If you know what the playMove animation name is, I can search for it in your script's files and try to help you diagnose it... but as you know, those animation names are a bunch of spaghetti letters.

Share this post


Link to post
Share on other sites

Running the script version and have the same dragging issue, when I disable Vcomm we are able to drag again.  I'll upload a basic mission shortly.

 

Thanks

Eric

Share this post


Link to post
Share on other sites

Hello,

is this mod broken? AI does not seem to be any special (like shown in the videos) in my game. This mod looks pretty amazing but I think it is not compatible with the new version of Arma, isn'it? Or is it just me?

 

EDIT: If you use this mod in singleplayer, at least I have to delete all configs in userconfig folder related to this mod. Then modify the defaultsettings.sqf (which you can find inside the PBO) and repack it. Then everything works like intended. Great mod and thanks!

Share this post


Link to post
Share on other sites

 

 Does this  mod include AI running from grenades? Thought I remembered reading that it had been tweaked at some point

Share this post


Link to post
Share on other sites
Running the script version and have the same dragging issue, when I disable Vcomm we are able to drag again.  I'll upload a basic mission shortly.
 
Thanks
Eric


Correction!!! Had a chance to run a few missions without Vcomm running and still run into the issue of not being able to drag at random times.


Sent from my iPhone using Tapatalk

Share this post


Link to post
Share on other sites

@genesis92x

 

I implemented your vcom_ai into Warfare and i'd just started playing again after a break from ArmA3 and noticed my AI instead of using the road decided to swim instead, probably because it was the shortest route. Is there a chance you can make them avoid water unless they have a boat in a future update or whatever magic you can come up with? I was wondering why i seemed to be taking the towns on my own until checking the map, the AI where taking a dip.

 

I will test again without your vcom_ai mod as i have a version without it, but it's kinda sh*t playing without your AI mod. It could be a recent update or just bad luck that this happened, but in all the time I've played I've never noticed them avoiding a road and taking a dip instead. I might try ASR_AI and see if that does it as well. Sorry for the blasphemy in mentioning another AI mod. :f:

 

And thanks for creating such an excellent addon/script. And apologies for even thinking it has anything to do with your addon/script. :f:

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×