Jump to content
Sign in to follow this  
silola

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

Recommended Posts

Disclaimer! I have searched and read several posts pertaining to my issue, I have tried many of those "fixes".

-I prefer to use the dac intern as I get better performance with it. But i have tried everything with the extern as well.

-I have been using dac for awhile now and love it, and i'm pretty familiar with it.

That being said, I'm stepping up my mission building. For larger scope missions i need to be able to utilize the activate/deactivate functions.

I am having a huge problem with the "call DAC_Activate". call dac_Deactivate works fine.

-This mission is on Takistan, but I also have the same problem on Cherno.

I have a zone : g1=["gue1",[2,0,0],[4,2,1,50],[],[],[1,1,50,0,100,50],[2,11,0,11,4]]spawn DAC_Zone; (i have custom configs, so dont get caught up in anything that looks out of place... unless it IS out of place!

and A waypoint zone for it.

and two triggers, one to deactivate, and one to activate using:

:[gue1] call DAC_Deactivate; act: opfor present (the enemy in this case are resistance/gue) cond:this

:[gue1] call DAC_Activate; same as above

I initially tried to start the zone deactivated (with the 1 in the right place), and then activate it but no joy.

Then i read about starting the zone activated, then deactivate with a trigger, and activate it with a trigger. No joy.

I also tried Orcinus' suggestion with editing a config and the init (page 99). No joy.

does anyone have the answer?

Share this post


Link to post
Share on other sites

Hey guys quick question - I have around ten unit zones, all with the configuration [10,0,0] (so they go to the waypoint zones with the 10), and 5 waypoint zones with that setup as well. The problem is - they all endup going to the same zones. anyway to make it more random and have them spread out a bit more?

Edit : Also, I have a problem with arty. I placed 7 units down on the editor, all named, and also they are setup in the DAC_Arty - but for some reason the AI doesn't call in arty strikes. Any ideas?

Edited by Burdy

Share this post


Link to post
Share on other sites

I have a zone : g1=["gue1",[2,0,0],[4,2,1,50],[],[],[1,1,50,0,100,50],[2,11,0,11,4]]spawn DAC_Zone; (i have custom configs, so dont get caught up in anything that looks out of place... unless it IS out of place!

and A waypoint zone for it.

and two triggers, one to deactivate, and one to activate using:

:[gue1] call DAC_Deactivate; act: opfor present (the enemy in this case are resistance/gue) cond:this

:[gue1] call DAC_Activate; same as above

I initially tried to start the zone deactivated (with the 1 in the right place), and then activate it but no joy.

Then i read about starting the zone activated, then deactivate with a trigger, and activate it with a trigger. No joy.

I've used both functions before so they definitely work :) Make sure you are activating/de-activating zones with the same ID at the same time.

Try setting your zones to be deactivated at start ie: ["gue1",[2,1,0] then make a simple trigger activated by Radio with this in the onActivation:

[gue1] call DAC_Activate

if there are multiple zones with the same zone ID activate them at the same time ie:

[gue1,gue2,camp1] call DAC_Activate

Hey guys quick question - I have around ten unit zones, all with the configuration [10,0,0] (so they go to the waypoint zones with the 10), and 5 waypoint zones with that setup as well. The problem is - they all endup going to the same zones. anyway to make it more random and have them spread out a bit more?

Edit : Also, I have a problem with arty. I placed 7 units down on the editor, all named, and also they are setup in the DAC_Arty - but for some reason the AI doesn't call in arty strikes. Any ideas?

That should not be happening - I would double-check and make sure all your zones AND waypoint zones have the same ID (10). Groups are assigned waypoints randomly from the entire pool of available waypoints, so some of them should definitely be heading to other zones.

For your arty issue it can be a bit fussy.. make sure that in DAC_Config_Behaviour the setSupport values are correct. So if setSupport = [1,2] (2nd value is for arty config) make sure that in DAC_Config_Arty there is a valid 2 section and that it is configured with the classnames for the empty artillery static as well as the shell classnames (NOT the 8rd one.. the single shell classname)

I assume the arty you placed down is within one of the DAC zones? Also you could try creating a DAC camp and use the arty it spawns in....

Share this post


Link to post
Share on other sites
I've used both functions before so they definitely work :) Make sure you are activating/de-activating zones with the same ID at the same time.

I think this is my issue! I had one way point zone for 8 groups. I wasn't deactivating the way point zone, but was deactivating/activating a group zone linked to it. I think that's what you are saying. Thanks so much for the reply! I'll test it out to make sure that was the problem.

Share this post


Link to post
Share on other sites

@ savageCDN after a few days testing only getting a few issues with the large number in the groups when a somehow crew members get added to a INF group or BMP is in an armor group!

I have got a different error one in a while that says WP search was interrupted zone z3 is not suitable for unit type (camp).

Share this post


Link to post
Share on other sites
I think this is my issue! I had one way point zone for 8 groups. I wasn't deactivating the way point zone, but was deactivating/activating a group zone linked to it. I think that's what you are saying. Thanks so much for the reply! I'll test it out to make sure that was the problem.

Yes I was a bit unclear but that's what I was saying :p You need to make sure all zones with the same zoneID are activated and/or de-activated at the same time.

@ savageCDN after a few days testing only getting a few issues with the large number in the groups when a somehow crew members get added to a INF group or BMP is in an armor group!

I have got a different error one in a while that says WP search was interrupted zone z3 is not suitable for unit type (camp).

The error you got is probably because z3 does not have enough flat clear space to plop down a respawn camp. You can fix this by using a different waypoint config (DAC_Config_Waypoints.sqf) - check the DAC manual it will describe how to adjust the values in there.

With regards to the respawn issue.. are you saying that crew members somehow end up in infantry groups when the inf group respawns? Remember too that if a group is down to 1 or 2 members they can join another group.. so I have seen crewman in regular inf groups before.. but they should NOT be re-spawning with crew members.

If you could ever nail down the issue it might be solvable (by someone with far more coding knowledge than me :p )

Edited by SavageCDN

Share this post


Link to post
Share on other sites
The error you got is probably because z3 does not have enough flat clear space to plop down a respawn camp. You can fix this by using a different waypoint config (DAC_Config_Waypoints.sqf) - check the DAC manual it will describe how to adjust the values in there.

Also, as DMarkwick pointed out a year or two ago, adjusting the size of a camp zone can allow it to spawn OK. Juggling the position a little so that the camp structures don't clash with pre-existing objects of any size is also worth doing sometimes - it all depends on the area chosen. And don't forget that a camp can be as little as a sandbag or a flagpole - it isn't essential to have a full base-type camp with arti, etc. Whether you need a camp with such features depends on your mission design. In any event, you can always place some statics in the editor if you need some defenses around, say, a respawn 'flagpole base'; DAC will allocate troops to the statics according to the settings in (IIRC) the Behaviour config - that's all in the manual. DAC is incredibly flexible :)

Share this post


Link to post
Share on other sites

Yeah and also it's got a NULL option (11) which does not create any structures or anything just a respawn point. Good for using an existing building or barracks to have inf pour out of...

I've been playing with the DAC camps in Arma3 - creating wall structures, guard towers, etc... even got the ammo box in the camp running the VAS ammo system. For statics you can also use the _campUserObj section to add additional empty static guns which the camp guard group will then use. Also did you know you can use a vehicle instead of a static (in _campStatic array)? DAC will spawn it in and add a gunner only... you can even 'lock' the vehicle so that other players cannot jump in and drive away.

Anyway you probably know this stuff already I've just recently discovered some of those features. :p

Share this post


Link to post
Share on other sites
Yeah and also it's got a NULL option (11) which does not create any structures or anything just a respawn point.

I'd completely forgotten that, thanks for the reminder mate :)

It will probably be the best solution (given the ruggedness of & vegetation density over much of the terrain) for a mission I'm planning for UNSUNG.

As you likely know (but newer users might not) he corollary to the player lock-out on vehicles is that you can place vehicles for players & exclude them from DAC by placing

this setvariable ["DAC_Excluded",true]; 

in the vehicle's init line.

Share this post


Link to post
Share on other sites

As you likely know (but newer users might not) he corollary to the player lock-out on vehicles is that you can place vehicles for players & exclude them from DAC by placing

this setvariable ["DAC_Excluded",true]; 

in the vehicle's init line.

Thanks for the reminder :p I seem to remember there being a list somewhere with all DAC variables but cannot find it....

Also is there an array of camps that created that I can access (ie: to move a player respawn_west to one of the DAC camps after init)? How would I go about doing this?

It will probably be the best solution (given the ruggedness of & vegetation density over much of the terrain) for a mission I'm planning for UNSUNG.

Yes that's where it really comes in handy... areas that are difficult to get a full camp spawned... or as I mentioned forcing the camp to 'spawn' in a building giving the appearance of infantry coming out of a barracks or similar.

Edited by SavageCDN

Share this post


Link to post
Share on other sites
Yeah and also it's got a NULL option (11) which does not create any structures or anything just a respawn point. Good for using an existing building or barracks to have inf pour out of...

I've been playing with the DAC camps in Arma3 - creating wall structures, guard towers, etc... even got the ammo box in the camp running the VAS ammo system. For statics you can also use the _campUserObj section to add additional empty static guns which the camp guard group will then use. Also did you know you can use a vehicle instead of a static (in _campStatic array)? DAC will spawn it in and add a gunner only... you can even 'lock' the vehicle so that other players cannot jump in and drive away.

Anyway you probably know this stuff already I've just recently discovered some of those features. :p

Hi SavageCDN, it's been a while since I played with DAC (like 2+ years!) so I've lost all my bits and pieces. I'm struggling to get a camp to spawn in Arma 3. Can you post your config 11 (I've changed mine trying to get it to work!) and a sample DAC zone spawn example. My spawn is this

fun=["z4",[4,0,0],[4,4,50,6],[],[],[],[0,0,0,11]] spawn DAC_Zone

and I've got all markers and Com_values switched on for testing,but I'm not seeing a camp get spawned either on map (would I if it's NULL?) nor mentioned in the system message about zone creation.

Thanks,

Share this post


Link to post
Share on other sites

Pretty sure I asked this already, but Its been too long...

The AI In my mission keep engaging each other while on the same side.

fun=["z2",[1,0,0],[8,4,30,50],[],[],[],[0,11,2,11,1]] spawn DAC_Zone

Dunno how I screwed up here. Help would be appreciated :D

Share this post


Link to post
Share on other sites
Hi SavageCDN, it's been a while since I played with DAC (like 2+ years!) so I've lost all my bits and pieces. I'm struggling to get a camp to spawn in Arma 3. Can you post your config 11 (I've changed mine trying to get it to work!) and a sample DAC zone spawn example. My spawn is this
fun=["z4",[4,0,0],[4,4,50,6],[],[],[],[0,0,0,11]] spawn DAC_Zone

and I've got all markers and Com_values switched on for testing,but I'm not seeing a camp get spawned either on map (would I if it's NULL?) nor mentioned in the system message about zone creation.

Thanks,

With config 11 there is no camp that is spawned... just a game logic which acts like a respawn point for the AI groups. If you have the debug markers on you should see where it spawns or you can force it to spawn at a specific location using a game logic (see manual).

Here's what config 11 should look like in DAC_Config_Camps

case 11:
{
	_campBasic     = ["NULL"];
	_campAmmo      = [];
	_campStatic    = [];
	_campAddUnit   = [];
	_campUserObj   = [];
	_campRandomObj = [];
	_campWall      = [];
	_campObjInit   = [[],[],[],[],[],[],[]];
};

For your init line you are missing the camp/heli array:

fun=["z4",[4,0,0],[4,4,50,6],[],[],[[b]1,2,50,0,100,10[/b]],[0,0,0,11]] spawn DAC_Zone

This array spawns either the camps or helicopters (see manual) - so in my example above:

1 camp, camp group size 2, patrol 50m around camp, spawn inf and vehicles, spawn chance 100%, 10 respawns total

________________

Pretty sure I asked this already, but Its been too long...

The AI In my mission keep engaging each other while on the same side.

fun=["z2",[1,0,0],[8,4,30,50],[],[],[],[0,11,2,11,1]] spawn DAC_Zone

Dunno how I screwed up here. Help would be appreciated :D

99% of the time this is due to units being assigned to the wrong side. So for example you have [0,11,2,11,1] - side is East however the units you are spawning might be West or Guerrilla. Or perhaps your camp config is for the wrong side ie: statics are manned by West units instead of East.

Share this post


Link to post
Share on other sites

You're welcome. Might also want to check DAC_Res_Side variable in DAC_Config_Creator and make sure it matches the Independents are friendly to... setting in editor.

Added some Arma 3 configs in the thread:

http://forums.bistudio.com/showthread.php?100617-Dac-custom-config-resource&p=2427507&viewfull=1#post2427507

Edited by SavageCDN

Share this post


Link to post
Share on other sites
With config 11 there is no camp that is spawned... just a game logic which acts like a respawn point for the AI groups. If you have the debug markers on you should see where it spawns or you can force it to spawn at a specific location using a game logic (see manual).

Here's what config 11 should look like in DAC_Config_Camps

case 11:
{
	_campBasic     = ["NULL"];
	_campAmmo      = [];
	_campStatic    = [];
	_campAddUnit   = [];
	_campUserObj   = [];
	_campRandomObj = [];
	_campWall      = [];
	_campObjInit   = [[],[],[],[],[],[],[]];
};

For your init line you are missing the camp/heli array:

fun=["z4",[4,0,0],[4,4,50,6],[],[],[[b]1,2,50,0,100,10[/b]],[0,0,0,11]] spawn DAC_Zone

This array spawns either the camps or helicopters (see manual) - so in my example above:

1 camp, camp group size 2, patrol 50m around camp, spawn inf and vehicles, spawn chance 100%, 10 respawns total

Thanks Savage, that was it perfectly. I now seem to have a problem 99% of the time with camps not spawning because there's not enough room. I have changed my config and it's still not enough, even though the camp right now consists of a flag, field toilet (haha) and an ammo crate. But I can tweak it until I get there.

I now have a different problem. I have the following

_values = ["zCamp",[1,0,0],[12,3,50,6],[],[],[1,1,10,0,100,10],[0,0,0,10]];
[(getpos _randomLogic),400,400,0,0,_values] call DAC_fNewZone;

which is throwing me an "undefined variable in expression DAC fNewZone" error. I can't figure out what could be wrong.

Share this post


Link to post
Share on other sites
I now seem to have a problem 99% of the time with camps not spawning because there's not enough room. I have changed my config and it's still not enough, even though the camp right now consists of a flag, field toilet (haha) and an ammo crate. But I can tweak it until I get there.

You can check the DAC_Config_Waypoints.sqf file and use a different waypoint config that is less 'strict' on creating your camps. Case 0 is the default (and doesn't need to be added to the array unless you change it from default), and you can use a different one by adding the appropriate config number in the last array

Default waypoint (config 0)

["zCamp",[1,0,0],[12,3,50,6],[],[],[1,1,10,0,100,10],[0,0,0,10]];

Waypoint config 2

["zCamp",[1,0,0],[12,3,50,6],[],[],[1,1,10,0,100,10],[0,0,0,10,[b][font=Arial Black][color="#800000"]2[/color][/font][/b]]];

I think these are the values you are looking for in DAC_Config_Waypoints:

_checkRadius1 The critical radius, in which no or only very smallobjects may exist

_checkRadius2 The uncritical radius, in which only objects of a certain size / height may exist

_checkAreaH The maximum difference in altitude within _checkRadius2

_checkMaxH The maximum height where waypoints can be generated

_checkMinH The minimum altitude where waypoints can be generated

_checkNear The minimum distance for waypoints

_checkObjH1 The maximum size of objects for the critical area (_checkRadius1)

_checkObjH2 The maximum size of objects for the uncritical area(_checkRadius2)

_checkCount The maximum number of attempts to find a waypoint before DAC bogs

_checkResol The value for the raster-scan resolution at the height values (smaller value = higher load)

Default for camp in config 2 is _checkRadius1=10 and _checkRadius2=20 change them even lower if they still won't spawn... or check the other variables.

There are different settings for each type (inf, veh, tank, heli, camp)

Edited by SavageCDN

Share this post


Link to post
Share on other sites

Cheers Savage. I have found those entries already and played about with them. It's now just about finding that "sweet spot".

My other problem is more serious, not being able to create a zone on the fly means my mission doesn't work :( any ideas what could be wrong with my call DAC_fNewZone command? I've checked and the sqs with the function is being loaded by previous lines in the init.sqs.

Share this post


Link to post
Share on other sites
Also, I have a problem with arty. I placed 7 units down on the editor, all named, and also they are setup in the DAC_Arty - but for some reason the AI doesn't call in arty strikes. Any ideas?

As SavageCDN said, setting up arti can be tricky. I had a number of problems til I found these 2 links:

http://sandbox.darrenbrant.com/jcove/dac-ai-artillery-support-for-jcove-lite

http://sandbox.darrenbrant.com/jcove/dynamic-ai-creator-artillery-support-for-jcove-lite

One decribes how to set up arti for DAC (i.e. the AI), the other to give arti support calls to the player.

Although it refers to JCove Lite (one of the 2 public domain versions of VBS2) read in conjunction with the DAC manual it makes art set-up pretty easy. Don't just copy & paste, you need to pay attention to using only A2/CO arti classNames.

Cheers

Orc

---------- Post added at 01:12 PM ---------- Previous post was at 12:24 PM ----------

Thanks for the reminder :p I seem to remember there being a list somewhere with all DAC variables but cannot find it...

I think the list you mean is probably the one Rexehuk posted:

DAC Variable Resource

As he pointed out it may not be complete, & I at least am not entirely clear about what some of them do :P

Also is there an array of camps that created that I can access (ie: to move a player respawn_west to one of the DAC camps after init)? How would I go about doing this?

Not sure what you mean here. I don't play MP so that's one issue; however you can set up a list of marker positions and use a script that pulls (sequentially or randomly as you wish) one entry in that posASL dataset as a variable that is in the position field of a DAC zone config. The zone would then be spawned at the selected site. Not necessary to create multiple DAC zone entries (as long as the pre-defined sites can accomodate whatever camp config you choose, ofc).

---------- Post added at 01:29 PM ---------- Previous post was at 01:12 PM ----------

Cheers Savage. I have found those entries already and played about with them. It's now just about finding that "sweet spot".

My other problem is more serious, not being able to create a zone on the fly means my mission doesn't work :( any ideas what could be wrong with my call DAC_fNewZone command? I've checked and the sqs with the function is being loaded by previous lines in the init.sqs.

"sqs"?? Quoi?? as Kylania or kju (can't remember which) said in another thread "Ach! Sqs! Kill it with fire!".

I hop that you meant to type "sqf"...

Re failure of zone creation, if you upload your mission somewhere I'ld be willing to take a look at it.

Share this post


Link to post
Share on other sites

Ack, I did indeed mean sqf. Shows how long I've been around doesn't it! :D

I've literally got a marker ("mkr1"), 6 logics ("lg1"->"lg6") and the following init.sqf file.

//====================================================================================
//DAC
//====================================================================================
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";

//====================================================================================
//RANDOM TIME OF DAY
//====================================================================================
if (isServer) then
{
myNewTime = random 24;
publicVariable "myNewTime";

waitUntil{not isNil "myNewTime"};
skipTime myNewTime;

//====================================================================================
//RANDOM LOCATION
//====================================================================================
_myLocation = ceil(random 6);
_randomLogic = missionNamespace getVariable format ["lc%1", _myLocation];
"mkr1" setMarkerPos (getPos _randomLogic); 
//waitUntil {DAC_NewZone==0};
_values = ["zCamp",[1,0,0],[12,3,50,6],[],[],[1,1,10,0,100,10],[0,0,0,10]];
[(getmarkerpos "mkr1"),400,400,0,0,_values] call DAC_fNewZone;

};

There's nothing there that shouldn't work in Arma 2 or 3 (I'm doing it in 3, but have successfully created zones in testing using the "normal" trigger method.) I've tried using the same getpos _randomlogic instead of getmarkerpos and neither worked.

Share this post


Link to post
Share on other sites
Ack, I did indeed mean sqf. Shows how long I've been around doesn't it! :D

I've literally got a marker ("mkr1"), 6 logics ("lg1"->"lg6") and the following init.sqf file.

//====================================================================================
//DAC
//====================================================================================
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";

//====================================================================================
//RANDOM TIME OF DAY
//====================================================================================
if (isServer) then
{
myNewTime = random 24;
publicVariable "myNewTime";

waitUntil{not isNil "myNewTime"};
skipTime myNewTime;

//====================================================================================
//RANDOM LOCATION
//====================================================================================
_myLocation = ceil(random 6);
_randomLogic = missionNamespace getVariable format ["lc%1", _myLocation];
"mkr1" setMarkerPos (getPos _randomLogic); 
//waitUntil {DAC_NewZone==0};
_values = ["zCamp",[1,0,0],[12,3,50,6],[],[],[1,1,10,0,100,10],[0,0,0,10]];
[(getmarkerpos "mkr1"),400,400,0,0,_values] call DAC_fNewZone;

};

There's nothing there that shouldn't work in Arma 2 or 3 (I'm doing it in 3, but have successfully created zones in testing using the "normal" trigger method.) I've tried using the same getpos _randomlogic instead of getmarkerpos and neither worked.

I've activated zones perfectly well using markers, e.g.,

waituntil{DAC_NewZone == 0};
 _values_z4 = ["z4",[2,1,0],[],[],[],[4,5,8,"Hel_group_z4"],[0,18,0,6]];
	[(position markerz4),100,100,0,0,_values_z4] call DAC_fNewZone;
waituntil{DAC_NewZone == 0}; 

Works fine in A2 (I can't get A3 as Steam isn't a remotely affordable option). It didn't work reliably until I put the waituntil{DAC_NewZone == 0} after as well as before the call (& with more than one zone being created sequentially, it didn't work at all without the pre and post call waituntils around each zone creation step. However this was for SP. no idea about MP. Try that in A2 first, if it works then port to A3 .

Share this post


Link to post
Share on other sites

I've managed to do something else which works perfectly fine for now. Created my zones as triggers and moved them before they activate. time>10 and the move in the init file.

Share this post


Link to post
Share on other sites

I think the list you mean is probably the one Rexehuk posted:

DAC Variable Resource

As he pointed out it may not be complete, & I at least am not entirely clear about what some of them do :P

Not sure what you mean here. I don't play MP so that's one issue; however you can set up a list of marker positions and use a script that pulls (sequentially or randomly as you wish) one entry in that posASL dataset as a variable that is in the position field of a DAC zone config. The zone would then be spawned at the selected site. Not necessary to create multiple DAC zone entries (as long as the pre-defined sites can accomodate whatever camp config you choose, ofc).

Thanks for that link it's exactly what I was referring to.

As far as my issue what I'm trying to do is have it so that the player respawns at one of the friendly DAC camps that are created at mission start. This means moving an existing map marker to a camp location after DAC init. So I'm assuming one of those variables (maybe DAC_Spawn_CampsW) is an array of West camps and locations that I could pull from to have the marker moved.

Share this post


Link to post
Share on other sites
Thanks for that link it's exactly what I was referring to.

As far as my issue what I'm trying to do is have it so that the player respawns at one of the friendly DAC camps that are created at mission start. This means moving an existing map marker to a camp location after DAC init. So I'm assuming one of those variables (maybe DAC_Spawn_CampsW) is an array of West camps and locations that I could pull from to have the marker moved.

The position of each zone is in the array in the logic init. You can pull out those ASL settings, put them into a list (manually or with a script) and select from that list to set the position of your respawn marker (if I've understood you correctly).

---------- Post added at 07:19 PM ---------- Previous post was at 07:17 PM ----------

I've managed to do something else which works perfectly fine for now. Created my zones as triggers and moved them before they activate. time>10 and the move in the init file.

The delay is probably the key. DAC init is not as straightforward as it seems from the demos. Glad you got it working :)

Share this post


Link to post
Share on other sites
The position of each zone is in the array in the logic init. You can pull out those ASL settings, put them into a list (manually or with a script) and select from that list to set the position of your respawn marker (if I've understood you correctly).

You did indeed thanks 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
Sign in to follow this  

×