Jump to content
Sign in to follow this  
simsmode

ACM Blacklist marker not working in Takistan South airfield.

Recommended Posts

Hey guys, I don't know if any one even answers on here anymore but this problem is causing massive headaches.

Problem: ACM blacklist marker in Takistan's South Airfield is not working. Specifically, the units spawn in one general location on the airfield, within a 50m radius of grid (080, 019).

I have tested other areas on the map and the marker named BIS_ACM_1 works at preventing ACM units to spawn. Is this a known bug?

Share this post


Link to post
Share on other sites

First, welcome to the forum simsmode.

As far as people answering questions on here anymore, some have moved on to A3, others are sick and tired of answering the same questions over and over. Seems as though no one wants to use the search function in these forums, or Google search...

Anyway, the ACM can be quite complex, but if you are willing to learn, can be very useful.

If you are using markers, and using the default naming convention for the ACM blacklist areas(BIS_ACM_X), you can place up to 1000 of these.

Make sure when creating these markers, you use the size options in the marker creation. The blacklist area is calculated by the position of the marker and the size of the marker(markerSize).

There are other ways, but I'll just leave those for later if you're interested.

Share this post


Link to post
Share on other sites

Hey panther, first off, thanks for the reply and warm welcome. I realize I am more than a little late to the game lol.

I have been able to use the BIS_ACM_X markers successfully, however, it seems as if a 50m radius around the gridpoint 019, 080 ( western end of the south airstrip in takistan) does not register in the blacklist area.

For example, I will edit my ACM settings to spawn a range of 100m min and max. Then I place a blacklist marker with a 300m radius. No units will spawn with exception to that grid point. They literally spawn on top of each other within that 50m radius.

I have been circumventing this problem by using 2 deleteVehicle triggers since using only one is problematic with the vehicles.

Also, one more question if I may, I have been successfully using multiple ACM modules to boost AI spawning.

for example:

_ACM = [myACM, myACM2, myACM3, myACM4, myACM5];

sleep 5;
{
waitUntil {!isNil {_x getVariable "initDone"}};
waitUntil {_x getVariable "initDone"};
} forEach _ACM;

waitUntil {!(isNil "BIS_fnc_init")};

{	
[1, _x] call BIS_ACM_setIntensityFunc;
[_x, 100, 100] call BIS_ACM_setSpawnDistanceFunc;
[["BIS_TK_INS"], _x] call BIS_ACM_setFactionsFunc;
[0, 0.7, _x] call BIS_ACM_setSkillFunc;                
[0.2, 0.5, _x] call BIS_ACM_setAmmoFunc;
["ground_patrol", 1, _x] call BIS_ACM_setTypeChanceFunc;
["air_patrol", .05, _x] call BIS_ACM_setTypeChanceFunc;
} forEach _ACM;	

However, when I do this the blacklist by marker method no longer works. I have been trying to use the blacklist by function as explained on the wiki to no avail.

Ok I figured out how to use blacklist with muliple ACM's. The only way this is possible is by using the blacklist by function method as mentioned on the wiki. The BIS_ACM_blacklistAreaFunc deletes the defined markers as soon as it's called similar to the method of using markers named BIS_ACM_X.

I was trying to insert this code into my acm settings as shown above this edit:

[_x, ["marker_1", "marker_2"]] call BIS_ACM_blacklistAreaFunc; // this doesn't work

The problem with using forEach in this application is that once the first myACM is defined the markers are erased and the proceeding ACM modules do not get their blacklists defined. So the new code looks like this:

_ACM = [myACM, myACM2, myACM3, myACM4, myACM5];

sleep 5;

{
waitUntil {!isNil {_x getVariable "initDone"}};
waitUntil {_x getVariable "initDone"};
} forEach _ACM;

waitUntil {!(isNil "BIS_fnc_init")};


[myACM, ["marker_1", "marker_2"]] call BIS_ACM_blacklistAreaFunc;
[myACM2, ["marker_1_1", "marker_2_1"]] call BIS_ACM_blacklistAreaFunc;
[myACM3, ["marker_1_2", "marker_2_2"]] call BIS_ACM_blacklistAreaFunc;
[myACM4, ["marker_1_3", "marker_2_3"]] call BIS_ACM_blacklistAreaFunc;
[myACM5, ["marker_1_4", "marker_2_4"]] call BIS_ACM_blacklistAreaFunc;


{	
[_x, ["marker_1", "marker_2"]] call BIS_ACM_blacklistAreaFunc; // this doesn't work
[1, _x] call BIS_ACM_setIntensityFunc;
[_x, 100, 100] call BIS_ACM_setSpawnDistanceFunc;
[["BIS_TK_INS"], _x] call BIS_ACM_setFactionsFunc;
[0, 0.7, _x] call BIS_ACM_setSkillFunc;                
[0.2, 0.5, _x] call BIS_ACM_setAmmoFunc;
["ground_patrol", 1, _x] call BIS_ACM_setTypeChanceFunc;
["air_patrol", .05, _x] call BIS_ACM_setTypeChanceFunc;
} forEach _ACM;

Basically you must make a duplicate set of markers for each module you are running. Just thought I'd share this since I've scoured the internet for this answer.

However, the problem in the Airfield is still giving me trouble. I know that the blacklists are working, It is only that gridpoint in which enemies will spawn. I am trying to use deleteVehicle triggers but its not working very reliably.

Edited by simsmode
Partially solved my problem

Share this post


Link to post
Share on other sites

First, a couple of questions simsmode.

1. You only have one ACM synched to one group correct?

2. The markers you are placing in the editor, are they of type Icon, Rectangle, or Ellipse?

3. What is the marker Axis a? Axis b?

Observations:

Within the ACM module, the script for spawning ground units uses a call to BIS_fnc_findSafePos. This function incorporates the blacklist area supplied in the ACM setup.

BIS_fnc_findSafePos defaults to the current world config Armory positionStart if no position is found via:

_newPos = getArray(configFile >> "CfgWorlds" >> worldName >> "Armory" >> "positionStart");

However, I could not find this entry for Takistan in the config...

If the Armory positionStart does not exist, the default position is then the current World config centerPosition:

_newPos = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");

On Takistan, the centerPosition in the config is: centerPosition[]={8000,1900,300};

If you place a soldier(player) on a clean Takistan map, add a radio trigger with the following:

null = [] spawn {_newPos = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition"); player setposasl _newPos;}

It will place you @ [8000.01,1899.93,0.00143433] which correlates to the editor grid 080,019(you read left to right then up)... Look familiar?

If you could upload a copy of your mission to Google or mediafire, etc, myself, or someone else on these forums could take a look at it for you. Sometimes it's a bit difficult to dissect these problems w/o the mission itself.

panther42

edit:

are you trying to set the top-left and bottom-right of the blacklist area by using the two markers for each ACM? If so, this will not work. You either need to use:

array of markers(I suggest rectangle, with correct Axis a and Axis b, although the ellipse should work - not tested)

array of triggers

array of arrays containing [top-left, bottom-right] - you will need to retrieve the marker position, getMarkerPos, first, then add to array.

Example:

_ACM = [myACM, myACM2, myACM3, myACM4, myACM5];

sleep 5;

{
waitUntil {!isNil {_x getVariable "initDone"}};
waitUntil {_x getVariable "initDone"};
} forEach _ACM;

waitUntil {!(isNil "BIS_fnc_init")};

[color="#0000CD"]myACM_blacklist_tl = getMarkerPos "marker_1";
myACM_blacklist_br = getMarkerPos "marker_2";

myACM2_blacklist_tl = getMarkerPos "marker_1_1";
myACM2_blacklist_br = getMarkerPos "marker_2_1";

[myACM, [[myACM_blacklist_tl, myACM_blacklist_br]]] call BIS_ACM_blacklistAreaFunc;
[myACM2, [[myACM2_blacklist_tl, myACM2_blacklist_br]]] call BIS_ACM_blacklistAreaFunc;[/color]
[color="#0000CD"]etc;
etc;[/color]



{	
[_x, ["marker_1", "marker_2"]] call BIS_ACM_blacklistAreaFunc; // this doesn't work
[1, _x] call BIS_ACM_setIntensityFunc;
[_x, 100, 100] call BIS_ACM_setSpawnDistanceFunc;
[["BIS_TK_INS"], _x] call BIS_ACM_setFactionsFunc;
[0, 0.7, _x] call BIS_ACM_setSkillFunc;                
[0.2, 0.5, _x] call BIS_ACM_setAmmoFunc;
["ground_patrol", 1, _x] call BIS_ACM_setTypeChanceFunc;
["air_patrol", .05, _x] call BIS_ACM_setTypeChanceFunc;
} forEach _ACM;

Edited by panther42

Share this post


Link to post
Share on other sites

I've uploaded the mission folder on google drive, didn't know whether the convention is to upload a pbo or mission folder.

https://drive.google.com/folderview?id=0B_t7LO75L09oa0ZQaDBhWVZaOEE&usp=sharing

Ok, to answer your questions:

1. You only have one ACM synched to one group correct?

Correct! there are 5 single units ungrouped that each have an ACM synched. 4 of these units are placed in static positions on a hill in the center of the map. The last unit is on the south Airfield.

2. The markers you are placing in the editor, are they of type Icon, Rectangle, or Ellipse?

they are Ellipses.

3. What is the marker Axis a? Axis b?

I placed 5 markers(Axis a = 3000, Axis b = 3000) on the hill location centered between the 4 units. One marker for each ACM as defined in my code (marker_2_X). There is also a trigger centered at that same location which detects opfor and returns a hint " opfor detected".

At the airfield location there is an ellipse that covers the entire airfield (Axis a = 700, Axis b = 300, angle = -30). One marker for each ACM with names (marker_1_X).

Remarks:

In testing this setup I have found that the blacklist on the hill is successful. The problem is that one grid point on the south air field which i have marked on the mission file. I've tested this with a single ACM and the problem persists. I've tested it with rectangles and ellipses, by markers named BIS_ACM_X, and by function with an array of markers. Thanks to you I have recently tested it with an array of array's. All areas are blacklisted except for my problem area.

Edit[/hr]

So I tried this out:

If you place a soldier(player) on a clean Takistan map, add a radio trigger with the following:

Spoiler:

Code:

null = [] spawn {_newPos = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition"); player setposasl _newPos;}

It will place you @ [8000.01,1899.93,0.00143433] which correlates to the editor grid 080,019(you read left to right then up)... Look familiar?

Wow. This is the exact position where the enemies will spawn. FREAKY! what does this mean? how come the blacklisted areas work except for this grid?

Edited by simsmode

Share this post


Link to post
Share on other sites

I will test your mission tonight. Mission file is what I prefer. Either is fine...

My guess is the spawn distance. you have min 100 and max 100. The default is something like 500, 1500(w/o looking back at the script).

When the ACM is going to spawn a group, and can't find a location within the 100/100 which is not blacklisted, it defaults to the centerPosition.

I have to double check the code, as I'm not at home.

Was this tested with different min/max values for spawn distance?

Share this post


Link to post
Share on other sites

Well originally I had it set to more realistic levels, I think 500-700. But I had a blacklist on the airfieild and noticed units spawning at that point when I was messing around the airfield as i have set it up as a base. I think at that point i set it 100 -100 only to test what was going on... in hind sight maybe i should have gone about it differently. I'll try out a larger Blacklist and spawn radius and get back to ya.

---------- Post added at 09:02 ---------- Previous post was at 08:48 ----------

So, I set the spawn distance to 500 - 1500 and the blacklist marker at the airfield to radius 5000m. The problem persists :butbut:

Share this post


Link to post
Share on other sites

Didn't get a chance to test this last night, but let me try to simplify this for you.

ACM Module - "Hey, this player wants some ambient combat"

Script - "No problem, does the player want ground troops?"

ACM Module - "Yes"

Script - "Okay, let me nap a bit, then I'll send some his/her way"

Script - "Does this player have areas we can't spawn troops at?"

ACM Module - "Yes, I've gathered the blacklist information and sent it your way"

Script - "Crap, I have to send some troops, but I can't find an area outside the blacklist! This player is a maniac, he/she has blacklisted the whole area!"

ACM Module - "Did you try the Armory positionStart?"

Script - "Yes, it doesn't exist on Takistan. I have to use the world centerPosition, it's in the player's blacklist area. The player is going to be pissed!"

Again, over simplified, but what you need to realize, is that troops are going to be spawned somewhere. If you don't want them spawned in/around the airport, make your blacklist marker over the airport, but allow the spawn distance min/max to find areas outside the blacklist. Don't put yourself inside a bubble...

Unfortunately for you, your base/blacklist is located where the world centerPosition is on Takistan, and you're not giving it enough spawn distance to get outside the blacklist area.

Edited by panther42

Share this post


Link to post
Share on other sites
...The player is going to be pissed!"

HAHA, indeed...

No, I totally get what you are saying even without the simplification lulz. It is what I kind of thought was happening but did'nt want to believe. I thought that maybe if there was no safe pos it would just not spawn anything. Obviously that is incorrect. Well on the bright side you taught me how to use an array of array's for blacklists so thats cool. And you showed me a logical reason why units were spawning in my blacklist... so now I don't have to smash my face against the keyboard anymore. Thanks for you help panther!

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  

×