Jump to content
Sign in to follow this  
silola

Dynamic-AI-Creator (DAC) V3.0 released

Recommended Posts

So far I have only played the tutorial missions and the demo mission, but this is alone the BEST thing I have ever seen! It seems so powerful!

Im going to be reading the documentation thoroughly as I am by no means whatsoever a good missionmaker but I have some ideas for some 5 man MP with my buddies and I think this is going to make it possible!

Thankyou so much for your work!

Share this post


Link to post
Share on other sites

Silola, first off all i have to say is thankyou and WOW. DAC is f'ing awesome and im blessed to have the opportunity to use it. :)

You must have put a ridiculous amount of work into this, let alone the 33 missions in Utes. If it wasnt for the work you put into making this mod accessible to someone like myself i dont think id have gotten this far. ;)

I was previously using UPSMON in a mission i was making and instantly implemented DAC. I look at this as a complete game changer.

Thing is, im having some trouble here. I first off used the PBO version and hadnt realised that V3.0b comes with the scripted version too. :o

I managed to get that working fine mind you, so all is well in that regard. But im having serious issue with Activation and De-Activation, and Activation whilst inside a vehicle (land, air etc).

---

When testing client-side (using mods: @CBA;@BAF;@ECHO --tested without "@ECHO" on different map as well btw, same issue--) I have no problem with what iam trying to accomplish;

-2 zones, 2 camps (z2,z4,z2_1,z4_1) - 1 large trigger encompassing both which activates them (called playerTrig)

-2 zones, 2 camps (z1,z3,z1_1,z3_1) - Another large trigger encompassing both (called playerTrig_1)

Both are de-activated properly upon mission launch, DAC initialises, makes waypoints and whotnot, then de-activates the zones in question. Upon entering either of the triggers called "playerTrig" & "playerTrig_1" (PlayerTrig.sqf & PlayerTrig2.sqf are called in the init file, and are present in mission folder) 2 of the intended zones and camps Activate, no problem... if your on foot.

This is one of the two problems that im having. If i enter a zone in a vehicle it doesnt activate, but the moment i get out and my feet hit the floor it activates without issue, same for if i never took a vehicle at all (btw testing was in BAF Jackal & Littlebird).

I tried naming the vehicle s17 (since there are 16 players in the mission already -s1 to s16) and changing both playerTrig & playerTrig_1 activation to "Anybody" as opposed to "Blufor" which i previously had it set to. That didnt work unfortunately.

Fortunately my mission still serves it purpose without vehicle activation, as it is meant to be predominantly played on-foot. Thing is --and this is my second issue here (and the one that has honestly got me bashing my head off a wall)-- if i play this mission client-side as i mentioned earlier it works fine, create a new MP game on either LAN or INTERNET it works fine... put it up on the server so i can play it with the lads for the big sunday game...

Doesnt work at all. :confused:

I mean, ive got DAC working on the server before, without activation. But this mission is not possible without De-activation/Activation, for its sheer scope alone absolutely kills performance.

I've placed a "DAC_zone" logic and a "DAC_objects" logic (disabled and removed weather effects in config as well). As i said 4 zones and 4 camps in total. 2 Large triggers that do not overlap with 2 zones and 2 camps in each.

DAC initialises on the server and finishes at about 290 secs. Waypoints are seen generated and camp placement is chosen etc. Activation does not happen though. :confused:

Should i place a DAC_extern? But why would it work client-side then without it?

This only happens on the server, same mission (scripted version) works fine client-side without the mod @DAC being used. DAC folder is present in the mission folder as well.

Any help would be greatly appreciated as ive spent about 2 weeks revising this mission and this is literally all that is left. I was really hoping to figure all this stuff out myself as you have written (with the help of others) such a well presented manual.

DAC related Init.sqf lines:

if(!isServer) then {waitUntil{!isNull player}};

DAC_Zone = compile preprocessFile "DAC\Scripts\DAC_Init_Zone.sqf";

DAC_Objects = compile preprocessFile "DAC\Scripts\DAC_Create_Objects.sqf";

execVM "DAC\DAC_Config_Creator.sqf";

execVM "PlayerTrig.sqf";

execVM "PlayerTrig_1.sqf";

PlayerTrig.sqf:

waituntil{time > 3};

_list = "list playerTrig";

while{(alive player)} do

{

waituntil{(player in (call compile _list))};

[z2,z4,z2_1,z4_1] call DAC_Activate;

sleep 5;

waituntil{(!(player in (call compile _list)))};

[z2,z4,z2_1,z4_1] call DAC_Deactivate;

sleep 5;

};

PlayerTig_1.sqf:

waituntil{time > 3};

_list = "list playerTrig_1";

while{(alive player)} do

{

waituntil{(player in (call compile _list))};

[z1,z3,z1_1,z3_1] call DAC_Activate;

sleep 5;

waituntil{(!(player in (call compile _list)))};

[z1,z3,z1_1,z3_1] call DAC_Deactivate;

sleep 5;

};

Edited by rscarrab

Share this post


Link to post
Share on other sites

Hi,

thanks rscarrab and RAINF :)

@rscarrab:

Basically, the DAC functions are performed only on the server !

In your case, always a client would start the DAC function, and that is not working (on dedi server).

So u need to change your code a little bit....

init.sqf:

[color="Gray"]if(!isServer) then {waitUntil{!isNull player}};
DAC_Zone = compile preprocessFile "DAC\Scripts\DAC_Init_Zone.sqf";
DAC_Objects = compile preprocessFile "DAC\Scripts\DAC_Create_Objects.sqf";
execVM "DAC\DAC_Config_Creator.sqf";[/color]

if(isServer) then
{
   execVM "PlayerTrig.sqf";
   execVM "PlayerTrig_1.sqf";
};

As I said, the function may only be started on the server. Therefore this change.

Now the script PlayerTrig.sqf:

private ["_list","_dumy","_unit","_i","_array","_mode"];

_array = "list playerTrig";_dumy = objNull;_unit = objNull;_list = [];_i = 0;_mode = 0;

waituntil{time > 3};

while{true} do
{
   sleep 10;
   _list = (call compile _array);_i = 0;_dumy = objNull;_unit = objNull;
   while{_i < count DAC_Players} do {_dumy = (DAC_Players select _i);if((alive _dumy) && ((vehicle _dumy) in _list)) then {_unit = (DAC_Players select _i)};_i = _i + 1};
   if(_mode == 0) then
   {
       if(!isNull _unit) then
       {
           [z2,z4,z2_1,z4_1] call DAC_Activate;
           sleep 30;
           _mode = 1;
       };
   }
   else
   {
       if(isNull _unit) then
       {
           [z2,z4,z2_1,z4_1] call DAC_Deactivate;
           sleep 30;
           _mode = 0;
       };
   };
};

If u get this script not to work (because not tested), there is an alternative way to query the right units:

alternative PlayerTrig.sqf:

private ["_list","_array","_mode"];

_array = "list playerTrig";_list = [];_mode = 0;

waituntil{time > 3};

while{true} do
{
   sleep 10;
   _list = (call compile _array);
   if(_mode == 0) then
   {
       if(({isPlayer _x} count _list) > 0) then
       {
           [z2,z4,z2_1,z4_1] call DAC_Activate;
           sleep 30;
           _mode = 1;
       };
   }
   else
   {
       if(({isPlayer _x} count _list) == 0) then
       {
           [z2,z4,z2_1,z4_1] call DAC_Deactivate;
           sleep 30;
           _mode = 0;
       };
   };
};

I hope u get it working - good luck !

Greeting

Silola

Share this post


Link to post
Share on other sites

Silola, your a true gentleman -thankyou. I will try this tomorrow when i finish work. :)

Share this post


Link to post
Share on other sites

Silola, i had a quick test on the server last night before i went to bed.

[1] I changed the init.sqf to match the one you posted. Also i changed the PlayerTrig.sqf too.

->It didnt work.

[2] I then removed the code from the PlayerTrig.sqf and added the "alternate" code you posted.

->That didnt work either.

[3] I then restored the PlayerTrig.sqf to its original form (which i had posted above), only leaving the change in the init.sqf you had suggested.

->No joy.

:(

In the first 2 situations DAC initialised, generated waypoints etc. The time it took to finish though, was substantially smaller; at about 130 secs (which im happy to see).

3rd situation, the same happened in regards to DAC initialisation, waypoints etc. but the time it took to finish was 290 secs (Just like before).

I have 3 logics placed in every instance of the mission;

-DAC_zone

-DAC_extern

-DAC_objects

Are these necessary? I have a feeling that they arent, only for the .PBO version but not the scipted version. Am i correct in this assumption?

Silola, if you have a moment of spare time during the week and your willing to have a look at my mission; i could PM it to you. Otherwise, dont worry. I wouldnt like to pressure you into doing anything you dont want to do. :)

I feel bad enough as it is having to ask these questions, i was really hoping it wouldnt have to come to this. :o

Thanks again. :)

Share this post


Link to post
Share on other sites

Hi :)

[1] I changed the init.sqf to match the one you posted. Also i changed the PlayerTrig.sqf too.

->It didnt work.

[2] I then removed the code from the PlayerTrig.sqf and added the "alternate" code you posted.

->That didnt work either.

[3] I then restored the PlayerTrig.sqf to its original form (which i had posted above), only leaving the change in the init.sqf you had suggested.

->No joy.

maybe there is something wrong with the trigger (any wrong setting).

Where do u start at your mission? In the area of the trigger?

-DAC_zone

-DAC_extern

-DAC_objects

If you use the scripted version you don't need any of this logics.

If you look into the init.sqf you will see the following two variables:

[b]DAC_Zone[/b] = compile preprocessFile "DAC\Scripts\DAC_Init_Zone.sqf";
[b]DAC_Objects[/b] = compile preprocessFile "DAC\Scripts\DAC_Create_Objects.sqf";

Please don't use any object with the same name !

Can you give me a link to your mission?

Or send me your mission via email then I can check this for errors.

But note ... I've only OA installed. Maybe you must convert the mission to Takistan ;)

Bye

Silola

Share this post


Link to post
Share on other sites

You start outside the trigger, roughly 1 click away from it. So no player units are present within the trigger (s1-s16). Non-playable AI controlled Blufor & Opfor units are within the trigger, yes.

---

Trigger settings being (ones i changed):

-Blufor

-Repeatedly

-Present

-Timeout

(same for both playerTrig & playerTrig_1)

I have also removed the 3 logics you mention, cheers. :)

---

In terms of testing, im not sure how you are going to go about troubleshooting, because as i said before; the mission works perfectly client-side and client-side LAN & Internet hosting. Not on a dedicated server.

If you need the use of a dedicated server, than i can possibly have that arranged, but ye i dont know id have to ask the other clan members who i share the server with first. :icon_slap:

:D

I'll PM you the link to the mission. It is based in Takistan. I intended for this mission to be played without any client-side mods & OA compatible, which i can confirm works in that regard. ;)

And thanks again, i appreciate the help.

Edited by rscarrab

Share this post


Link to post
Share on other sites

how do I get Camps to show up in the mission? I get how to get the units in such to show up but not the camps.

Share this post


Link to post
Share on other sites

@esco7800

Per the Short-instruction .pdf:

nul = ["z1",[1,0,0],[],[],[],[2,2,50,0,100,10],[1,1,1,1,1]] spawn DAC_Zone > generates Camps only (on side west)

If you are looking to setup different types of camps, (different objects and whatnot) you would change it according to the DAC_Config_Camps.sqf which has several cases predefined. Or you can create your own.

Such as:

nul = ["z1",[1,0,0],[],[],[],[2,2,50,0,100,10],[1,1,1,5,1]] spawn DAC_Zone > generates Camps only (on side west, of a different type, case 5)

Hope it helps,

Gnome

Share this post


Link to post
Share on other sites
@esco7800

Per the Short-instruction .pdf:

If you are looking to setup different types of camps, (different objects and whatnot) you would change it according to the DAC_Config_Camps.sqf which has several cases predefined. Or you can create your own.

Such as:

Hope it helps,

Gnome

So how would this work if I was trying to put the camp for the independent side? never mined messed around with it, in got it to work thanks for the help

Edited by esco7800

Share this post


Link to post
Share on other sites

@Silola

Not to be bothersome, but players are starting to stand around me in game with stones and things. Any info you can share on 3.0c release eta? (or a hack for the DAC_fNewZone function, would work :p)

Hope all is well with you, did you manage to get your machine back in order?

Kind Regards,

Gnome

Share this post


Link to post
Share on other sites

Already posted earlier but since then had not received a reply. I tried DAC for OA but nothing seems to get spawned. Can DAC also be used in combination with OA standalone?

Share this post


Link to post
Share on other sites

Hi and sorry :o

I have some probs with my new installed OS and my new internet connection.

Today I get a new dsl-modem and hope it will work.

Another prob is, arma2 OA CTD after a few minutes and it's impossible for me

to do some work in the editor.

Again ... sorry for the delay.

Greeting

Silola

---------- Post added at 08:00 PM ---------- Previous post was at 07:55 PM ----------

@Vroemmm:

Yes , it's possible with the last version.

Please read the readme careful and try one of the demos on takistan.

It's important to use the right unit config, otherwise DAC can't spawn units within a DAC zone.

Greeting

Silola

Share this post


Link to post
Share on other sites
Already posted earlier but since then had not received a reply. I tried DAC for OA but nothing seems to get spawned. Can DAC also be used in combination with OA standalone?

I'm not aware of Silola indicating that it does. And I can think of few things that might prevent it, such as references to objects that may only be in A2 not OA.

I have not tested this myself, so I'm not 100%. I'd say convert one of the sample missions to an OA map and give it a whirl. ;)

Regards,

Gnome

Oh, and thanks for the response Silola, hope things start acting right for you. :D

Edited by Gnome_AS

Share this post


Link to post
Share on other sites
@andersson:

What do u mean with "BIS arty shells"?

You can define one or more (for each impact) arti shell types within the DAC_Config_Arti file.

Ok, I must try this and I look for a solution.

But I have an idea what you should try....

Instead of using real objects, you take logic objects!

A similar configuration could look like this:

_campBasic     = ["Logic",["Logic",8,5,0],["Logic",5,0,0],["Logic",10,15,0],0];
_campAmmo      = [];
_campStatic    = [];
_campAddUnit   = [];
_campUserObj   = [];
_campRandomObj = [];
_campWall      = [];
_campObjInit   = [[],[],[],[],[],[],[]];

Hi, nice and simple solution for the camp! thank you very much I will use that :)

I tried different ARTY shells and thet didnt work, if I used the "default" ammuntion for the cannons it worked.

http://community.bistudio.com/wiki/ArmA_2:_Weapons#Artillery_Weapons_and_Special_Ammo

It might be that there are some scripts involved in the BIS arty and thats the reason it doesnt work, I dont know. I couldnt get any result using 'ARTY_' ammo.

Didnt work Im afraid. This line must be there for it to work:

_campBasic     = ["FlagCarrierRU",["Land_Campfire_burning",8,5,0],["CampEAST",5,0,0],["Logic",10,15,0],0];

Im using a normal camp for now :)

Share this post


Link to post
Share on other sites
Can anyone confirm that DAC is working with Quesh-Kibrul ?

I have used DAC with Quesh-Kibrul.

Share this post


Link to post
Share on other sites

Hi Silola,

cheerz for the script version.

Nevertheless my following prob refers to the pbo version.

I got a problem with the beahviour of the units.

I am using extern config with

	_setCombat  = ["green","white","yellow"];
	_setBehav   = ["safe"];
	_setSpeed   = ["limited","normal"];

But some of the groups still keep running.

Means they also use "full" speed mode, next to limited and normal.

Any ideas what can cause that.

The call refers to the "0" case, where i defined the behaviour

zone = ["z1",[1,0,0],[5,2,30,15],[ ],[ ],[ ],[0,16,0,0]]exec "DAC\Scripts\DAC_Init_Zone.sqs"

Greetz

Edited by Nephris1

Share this post


Link to post
Share on other sites

If you want the AI to be only walking around until contact is made then:

_setSpeed   = ["limited"];

should get what you're after. I use it often for base level behaviours.

Share this post


Link to post
Share on other sites

But why should

 _setSpeed   = ["limited","[b]normal[/b]"];

make them run as "full" actually should do.

I ll test it neverthelss, thx.

Share this post


Link to post
Share on other sites

Hi :)

Sorry, but I had to reinstall my OS again.

Now, after I installed an older nVidia driver, it works better. I hope it stays that way :rolleyes:

@rscarrab:

I had some problems with your mission. There were some incorrect or invalid objects:

"Land_Fire_barrel" + "UH1Wreck"

There are also two non-defined units:

Spotter6 + Spotter7

After I eliminated these errors and changed the script "PlayerTrig" a little bit,

the DAC_Activate + DAC_Deactivate works fine in your mission :)

changed "PlayerTrig":

private ["_list","_mode"];

_list = [];_mode = 0;

waituntil{time > 3};

while{true} do
{
   sleep 10;
   _list = list playerTrig;
   if(_mode == 0) then
   {
       if(({isPlayer _x} count _list) > 0) then
       {
           [z2,z4,z2_1,z4_1] call DAC_Activate;
           sleep 30;
           _mode = 1;
       };
   }
   else
   {
       if(({isPlayer _x} count _list) == 0) then
       {
           [z2,z4,z2_1,z4_1] call DAC_Deactivate;
           sleep 30;
           _mode = 0;
       };
   };
};

Some hints:

- Please deactivate the DAC_Markers if you play in MP mode.

- Reduce the count of waypoints in some zones to shorten the init procedure:

z1_1 = [2,2,50,10] > change to [2,2,15,10]

z2_1 = [2,3,50,10] > change to [2,3,15,10]

z3_1 = [2,2,50,10] > change to [2,2,15,10]

z4_1 = [2,2,50,10] > change to [2,2,15,10]

@Nephris1

I think there in no different between "normal" and "full" speed for infantry units.

Maybe the "full" speed is for vehicles only.

@All

DAC V3.0c will come, but I need a few days more to complete the pack.

Greeting

Silola

Share this post


Link to post
Share on other sites

Hey Silola,

I would just like to say that your mod is simply BRILLIANT. After learning about its many capabilities, I can't play a single mission without DAC (hehe, all the campaign and official missions seems pretty boring now, when compared to your awsomn tool). I'd say its (by far) the best editing tool for ARMA 2. When I make a mission, I barely place any editor units... their all DAC zones :).

Oh, and there seems to be a few bugs relating to when the player either joins a DAC zone (as a squad membe, not a squad leader). For examples, on some occasions, my squad was scripted to join a DAC after killing a certain target, so that the player could become a part of a large DAC battle. However, sometimes, as soon as when the player squad joined, all squad members were reduced except for the leader, and the player. This seemed to happen pretty randomly. I though this migh be a bug, so I reported it.

Anyway, thanks for this great mod

P.S.: The tutorial was excellent. Would you believe it if I told you I managed to get many different DAC feutures working without any scripting knowledge? It was so easy to follow and very well written (and any doubts were adresses by your great demo missions).

Regards

Kyfohatl

Share this post


Link to post
Share on other sites
@All

DAC V3.0c will come, but I need a few days more to complete the pack.

:pray:

Good news Silola, looking forward to it. Glad to see you're back up and running. :D

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
Sign in to follow this  

×