Jump to content
Sign in to follow this  
terox

zeu_ServerSkill (Serverside AI skill setting addon with userconfig configuration)

Recommended Posts

That seems good.

I have a couple of questions though, If I'm not mis understanding, the Zeus AI is getting the skill of the unit, then apply it own matrix corresponding to the unit skill right ?

Share this post


Link to post
Share on other sites
That seems good.

I have a couple of questions though, If I'm not mis understanding, the Zeus AI is getting the skill of the unit, then apply it own matrix corresponding to the unit skill right ?

No that's not how it works.

if you set the slider value in the mission editor for the unit, lets say you set it to 0.75

every attribute aimingaccuracy, spottingdistance,commanding etc is set to that value

What this does is ignores that slider value completely and sets each individual attribute value independantly.

I am in the middle of some very boring and repetive testing, all of which is revealing just how bad at the moment the skill balancing is.

BIS of course will address this at some point

The testing has basically been concentrating on

SpottingDistance

SpottingTime

AimingAccuracy

I have a spreadsheet which is logging all the testing data that i am gathering, but in a more basic form, what i am finding is

An OPFOR Unit with a mission editor skill slider at 0.634 (This is the default for me when i place an individual unit on the map)

has the following abilities with the following settings

(Unless otherwise states, all skill attributes are 0.634

AimingAccuracy set to 1.0 at range 100 is 100% accurate

AimingAccuracy set to 0.5 at range 100 is 49% accurate

AimingAccuracy set to 0.4 at range 100 is 36% accurate

AimingAccuracy set to 1.0 at range 300 is 75% accurate

AimingAccuracy set to 0.5 at range 300 is 16% accurate

AimingAccuracy set to 0.4 at range 100 is 11% accurate

SpottingDistance & Spotting Time (This is a bit of an odd one and is very difficult to get consistency) however

Typically they can spot you at 385metres in broad daylight when running across a flat surface, eg the runway if either value is higher than 0.5

The distance they spot you at isn't effected by Spottingtime until it is below 0.25

if you set spottingtime and spottingdistance to 0.2 they dont see you until you are approximately 64 metres from then (54 if walking)

There is a difference in spotting if you are walking, running or crawling

I am using a mission that reports back the knowsabout values, distance to enemy, shots fired, rounds on target etc to get accurate data for each test

So the basic outcome of this so far is that you really need to define values very differently from what the slider gives you to get intersting AI that dont laser shoot you at nearly 400m

and the testing is ongoing

Share this post


Link to post
Share on other sites

I m not sure if i understand your explanation but you said that if for exemple we set an IA with a skill of 0.3 and another IA with a skill of 0.7 in the editor or VTS, with the zeu_ServerSkill activated they will have the same skill ?

The 10 cases in the .hpp file isn't for 10 levels of skill (exemple case 3 = skill 0.3 in editor or vts) ?

Share this post


Link to post
Share on other sites
I m not sure if i understand your explanation but you said that if for exemple we set an IA with a skill of 0.3 and another IA with a skill of 0.7 in the editor or VTS, with the zeu_ServerSkill activated they will have the same skill ?

The 10 cases in the .hpp file isn't for 10 levels of skill (exemple case 3 = skill 0.3 in editor or vts) ?

No the skill array sets the following values in the following order

"aimingspeed"

"aimingaccuracy"

"aimingshake"

"spotdistance"

"spottime"

"commanding"

"courage"

"endurance"

"reloadSpeed"

"general"

the second matrix then sets the randomisation (tolerance) for the first array.

So if the first value in the first array (The skill setting array) is 0.5 and the first value in the randomiser array is 0.1, the actual skill set that each individual AI gets for "Aiming speed" will be somewhere between 0.4 and 0.6

if you did not use this addon and set the AI skill in the editor to say 0.7, every skill ("aimingspeed" to "general") would be 0.7 and testing has proven that at the moment this is not good, the AI are way too accurate at those levels

Share this post


Link to post
Share on other sites

Thanks for this Terox. Much appreciated.

Share this post


Link to post
Share on other sites

@Terox: I'm interested by Slayertom question too. But I'm not sure I understand your answer to him.

Does Zeus AI take notice of the AI skill before modifying their skill ? (eg : A skilled unit will be a skilled zeus AI skilled unit, while a no rookie unit would be a rookie zeus AI skill unit?)

Cheer

Share this post


Link to post
Share on other sites

No it doesnt.....

It puts every AI at a skill (with a bit of randomisation) as defined by the array matrix that you defined in the userconfig.

If it didnt do this your AI would remain too lethal for enjoyable gameplay

Edited by Terox

Share this post


Link to post
Share on other sites

Very good work, made the game playable for my little squad (<10 players). If you could expand it, so that particular units have a skill matrix assigned to them, like ASR_AI, that would be amazing.

Thanks again.

Share this post


Link to post
Share on other sites
Very good work, made the game playable for my little squad (<10 players). If you could expand it, so that particular units have a skill matrix assigned to them, like ASR_AI, that would be amazing.

Thanks again.

To test each and every different type of unit would take forever and then along comes the next DEV beta patch which could easily upset the balance again

The units already have differences with camouflage and other attributes like that. This addon is more to do with a general gameplay balance

Most importantly the Ai's ability to spot and engage accurately is to great.

This addon addresses those two factors quite well IMHO (For now anyway)

I havent had much chance for further testing this week, however, I would suggest the following skill arrays are used.

According to the guys who constantly play on our Invade and Annex #No1 server, these are the best config values yet

You will see a difference !

_option=[10,5];

Skill matrix:

case 10:{[0.5, 0.34, 0.5, 1, 0.2, 1, 0.6, 0.6, 0.6, 1];};

Randomisation matrix

case 5:{[ 0.05, 0.05, 0.05, 0, 0.02, 0, 0.05, 0.05, 0.05, 0];};

Share this post


Link to post
Share on other sites

I'm interested in using this on the GOB server however I have a few questions/concerns. Does this mod affect scripted behavior in custom missions? For example, could it possibly "break" a mission by causing the A.I. to do things un-tested by the mission maker? I would hate to install this only to find out that A.I. are no longer where they should be for a certain scripted behaviour. Sorry if my question is too general...

Share this post


Link to post
Share on other sites
I'm interested in using this on the GOB server however I have a few questions/concerns. Does this mod affect scripted behavior in custom missions? For example, could it possibly "break" a mission by causing the A.I. to do things un-tested by the mission maker? I would hate to install this only to find out that A.I. are no longer where they should be for a certain scripted behaviour. Sorry if my question is too general...

It just changes their skill values nothing else.

There is no behaviour scripting done on the AI at all.

If you use the skill values

Skill matrix:

case 10:{[0.5, 0.34, 0.5, 1, 0.2, 1, 0.6, 0.6, 0.6, 1];};

Randomisation matrix

case 5:{[ 0.05, 0.05, 0.05, 0, 0.02, 0, 0.05, 0.05, 0.05, 0];};

You will see a reduction in their ability to spot you and a reduction in their aiming accuracy making your missions more enjoyable

Share this post


Link to post
Share on other sites

Hi thanks for all the modding that you guys do.

IV tried all different settings but a can not see the difference the AI are lethal to the point were our clan members can not be bothered to play.

I know this is a bit cheeky could someone put some examples IE easy medium hard veteran as in different setting as at this moment in time i can not understand what I'm looking at.

I iv stalled Zeu_ServerBriefing and that works great and i installed server skills the same way so i know its all installed correctly..

Sorry to be a pain but iv tried for hours but to no avail.

Share this post


Link to post
Share on other sites

Copy paste this in your servers profile (for regular and veteran class i'd suggest):

skillFriendly=0.98500001;

skillEnemy=0.98500001;

and use this zeu_ServerSkills.hpp:

// AUTHOR : Terox (terox_@hotmail.com) www.zeus-community.net

// LAST Edited : 7/4/2013

// MP MACHINE : Serverside

// Called from : Zeu_ServerBriefing/init.sqf

// Called using : []execVm

// Time Called : Before Time 0

// Description : Defines AI skills

// (Temporary or permanent fix for the inability to define your precision and skill settings in the .ArmA3profile)

// It also gives you more control over the entire skill settings for AI

//

// COMMENTS skill array elements as follows

//

// select 0: aimingspeed

// select 1: aimingaccuracy

// select 2: aimingshake

// select 3: spotdistance

// select 4: spottime

// select 5: commanding

// select 6: courage

// select 7: endurance

// select 8: reloadSpeed

// select 9: general

//

// Value range is between 0 and 1

_option = [2,5]; // 1st element selects the skill matrix option

// 2nd element selects the randomisation matrix option

// The randomisation is +/- from the core selected value

// For example if you used the _option = [3,2] then the 0.45 core value will be randomised to a value between 0.35 and 0.55

_mode = 2; // 0: Addon module is disabled

// 1: serverside only

// 2: Server & Clientside

// 3: Single player mode

_debug = FALSE; // This will output the skill settings to your server .rpt for debugging purposes

// The following is the core skill matrix

_skill = switch(_option select 0)do

{

case 0:{[ 0.2, 0.2, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1];};

case 1:{[0.25, 0.25, 0.25, 1, 1, 1, 1, 1, 1, 1];};

case 2:{[1, 0.30, 0.30, 1, 1, 1, 1, 1, 1, 1];};

case 3:{[0.45, 0.45, 0.45, 1, 1, 1, 1, 1, 1, 1];};

case 4:{[0.55, 0.55, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1];};

case 5:{[0.65, 0.65, 0.65, 1, 0.60, 1, 0.65, 1, 0.65, 1];};

case 6:{[0.75, 0.75, 0.75, 1, 0.75, 1, 0.75, 1, 0.75, 1];};

case 7:{[0.85, 0.85, 0.85, 1, 0.80, 1, 0.85, 1, 0.85, 1];};

case 8:{[0.95, 0.95, 0.95, 1, 0.95, 1, 0.95, 1, 0.95, 1];};

case 9:{[1,1,1,1,1,1,1,1,1];};

case 10:{[0.5, 0.34, 0.5, 1, 0.7, 1, 0.6, 0.6, 0.6, 1];};

default {[0.1, 0.45, 0.45, 1, 0.45, 1, 0.45, 1, 0.45, 1];};

};

// The following is the randomisation skill matrix

_rnd = switch(_option select 1)do

{

case 0:{[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];}; // use this option if you do not want randomisation

case 1:{[ 0.5, 0.5, 0.5, 0, 0.5, 0, 0.5, 0, 0.5, 0];};

case 2:{[ 0.1, 0.1, 0.1, 0, 0.1, 0, 0.1, 0, 0.1, 0];};

case 3:{[ 1.5, 1.5, 1.5, 0, 1.5, 0, 1.5, 0, 1.5, 0];};

case 4:{[ 0.2, 0.2, 0.2, 0, 0.2, 0, 0.2, 0, 0.2, 0];};

case 5:{[ 0, 0.05, 0.05, 0, 0, 0, 0, 0, 0, 0];};

default {[ 0.1, 0.1, 0.1, 0, 0.1, 0, 0.1, 0, 0.1, 0];};

};

// return

[_skill,_rnd,_mode,_debug];

We run this on our servers and bots react very fast and intelligent (might be dependent on our servers hardware, we got a i7 3930 running), but don't aim perfectly. When you give them some seconds, they will definitely hit and kill you, even sometimes they might one shot you. But if you make smart use of cover and just quickly look over it, you should get a lot less often oneshot headshoted then with default high skill level settings.

Share this post


Link to post
Share on other sites

The tutorial should explain how to install it

Use these settings (You will need to edit the userconfig file )

_option = [10,5];

Skill matrix:

case 10:{[0.5, 0.34, 0.5, 1, 0.2, 1, 0.6, 0.6, 0.6, 1];};

Randomisation matrix

case 5:{[ 0.05, 0.05, 0.05, 0, 0.02, 0, 0.05, 0.05, 0.05, 0];};

This will make it a pleasant and playable mission

Share this post


Link to post
Share on other sites

Hi thanks for the fast reply, Terox i copied and paste what you suggested from were you gave someone else those settings and it didn't make a difference.

This how iv done it now.

// AUTHOR : Terox (terox_@hotmail.com) www.zeus-community.net

// LAST Edited : 7/4/2013

// MP MACHINE : Serverside

// Called from : Zeu_ServerBriefing/init.sqf

// Called using : []execVm

// Time Called : Before Time 0

// Description : Defines AI skills

// (Temporary or permanent fix for the inability to define your precision and skill settings in the .ArmA3profile)

// It also gives you more control over the entire skill settings for AI

//

// COMMENTS skill array elements as follows

//

// select 0: aimingspeed

// select 1: aimingaccuracy

// select 2: aimingshake

// select 3: spotdistance

// select 4: spottime

// select 5: commanding

// select 6: courage

// select 7: endurance

// select 8: reloadSpeed

// select 9: general

//

// Value range is between 0 and 1

_option = [10,5]; // 1st element selects the skill matrix option

// 2nd element selects the randomisation matrix option

// The randomisation is +/- from the core selected value

// For example if you used the _option = [3,2] then the 0.45 core value will be randomised to a value between 0.35 and 0.55

_mode = 2; // 0: Addon module is disabled

// 1: serverside only

// 2: Server & Clientside

// 3: Single player mode

_debug = FALSE; // This will output the skill settings to your server .rpt for debugging purposes

// The following is the core skill matrix

_skill = switch(_option select 0)do

{

//case 0:{[ 0.2, 0.2, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1];};

//case 1:{[0.25, 0.25, 0.25, 1, 0.25, 1, 0.25, 1, 0.25, 1];};

// case 2:{[0.35, 0.35, 0.35, 1, 0.35, 1, 0.35, 1, 0.35, 1];};

//case 3:{[0.45, 0.45, 0.45, 1, 0.45, 1, 0.45, 1, 0.45, 1];};

//case 4:{[0.55, 0.55, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1];};

//case 5:{[0.65, 0.65, 0.65, 1, 0.60, 1, 0.65, 1, 0.65, 1];};

// case 6:{[0.75, 0.75, 0.75, 1, 0.75, 1, 0.75, 1, 0.75, 1];};

//case 7:{[0.85, 0.85, 0.85, 1, 0.80, 1, 0.85, 1, 0.85, 1];};

//case 8:{[0.95, 0.95, 0.95, 1, 0.95, 1, 0.95, 1, 0.95, 1];};

//case 9:{[1,1,1,1,1,1,1,1,1];};

case 10:{[0.5, 0.34, 0.5, 1, 0.2, 1, 0.6, 0.6, 0.6, 1];};

//default {[0.1, 0.45, 0.45, 1, 0.45, 1, 0.45, 1, 0.45, 1];};

};

// The following is the randomisation skill matrix

_rnd = switch(_option select 1)do

{

//case 0:{[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];}; // use this option if you do not want randomisation

// case 1:{[ 0.5, 0.5, 0.5, 0, 0.5, 0, 0.5, 0, 0.5, 0];};

//case 2:{[ 0.1, 0.1, 0.1, 0, 0.1, 0, 0.1, 0, 0.1, 0];};

//case 3:{[ 1.5, 1.5, 1.5, 0, 1.5, 0, 1.5, 0, 1.5, 0];};

//case 4:{[ 0.2, 0.2, 0.2, 0, 0.2, 0, 0.2, 0, 0.2, 0];};

case 5:{[ 0.05, 0.05, 0.05, 0, 0.02, 0, 0.05, 0.05, 0.05, 0];};

//default {[ 0.1, 0.1, 0.1, 0, 0.1, 0, 0.1, 0, 0.1, 0];};

};

// return

[_skill,_rnd,_mode,_debug];

As you can see i put // so these setting are not see, is this correct? i do not want to make the game harder than it his.

Below is how it was setup before as you can see you suggested setting are there.

// AUTHOR : Terox (terox_@hotmail.com) www.zeus-community.net

// LAST Edited : 7/4/2013

// MP MACHINE : Serverside

// Called from : Zeu_ServerBriefing/init.sqf

// Called using : []execVm

// Time Called : Before Time 0

// Description : Defines AI skills

// (Temporary or permanent fix for the inability to define your precision and skill settings in the .ArmA3profile)

// It also gives you more control over the entire skill settings for AI

//

// COMMENTS skill array elements as follows

//

// select 0: aimingspeed

// select 1: aimingaccuracy

// select 2: aimingshake

// select 3: spotdistance

// select 4: spottime

// select 5: commanding

// select 6: courage

// select 7: endurance

// select 8: reloadSpeed

// select 9: general

//

// Value range is between 0 and 1

_option = [10,5]; // 1st element selects the skill matrix option

// 2nd element selects the randomisation matrix option

// The randomisation is +/- from the core selected value

// For example if you used the _option = [3,2] then the 0.45 core value will be randomised to a value between 0.35 and 0.55

_mode = 2; // 0: Addon module is disabled

// 1: serverside only

// 2: Server & Clientside

// 3: Single player mode

_debug = TRUE; // This will output the skill settings to your server .rpt for debugging purposes

// The following is the core skill matrix

_skill = switch(_option select 0)do

{

case 0:{[ 0.2, 0.2, 0.2, 1, 0.2, 1, 0.2, 1, 0.2, 1];};

case 1:{[0.25, 0.25, 0.25, 1, 0.25, 1, 0.25, 1, 0.25, 1];};

case 2:{[0.35, 0.35, 0.35, 1, 0.35, 1, 0.35, 1, 0.35, 1];};

case 3:{[0.45, 0.45, 0.45, 1, 0.45, 1, 0.45, 1, 0.45, 1];};

case 4:{[0.55, 0.55, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1];};

case 5:{[0.65, 0.65, 0.65, 1, 0.60, 1, 0.65, 1, 0.65, 1];};

case 6:{[0.75, 0.75, 0.75, 1, 0.75, 1, 0.75, 1, 0.75, 1];};

case 7:{[0.85, 0.85, 0.85, 1, 0.80, 1, 0.85, 1, 0.85, 1];};

case 8:{[0.95, 0.95, 0.95, 1, 0.95, 1, 0.95, 1, 0.95, 1];};

case 9:{[1,1,1,1,1,1,1,1,1];};

case 10:{[0.5, 0.34, 0.5, 1, 0.2, 1, 0.6, 0.6, 0.6, 1];};

default {[0.1, 0.45, 0.45, 1, 0.45, 1, 0.45, 1, 0.45, 1];};

};

// The following is the randomisation skill matrix

_rnd = switch(_option select 1)do

{

case 0:{[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];}; // use this option if you do not want randomisation

case 1:{[ 0.5, 0.5, 0.5, 0, 0.5, 0, 0.5, 0, 0.5, 0];};

case 2:{[ 0.1, 0.1, 0.1, 0, 0.1, 0, 0.1, 0, 0.1, 0];};

case 3:{[ 1.5, 1.5, 1.5, 0, 1.5, 0, 1.5, 0, 1.5, 0];};

case 4:{[ 0.2, 0.2, 0.2, 0, 0.2, 0, 0.2, 0, 0.2, 0];};

case 5:{[ 0.05, 0.05, 0.05, 0, 0.02, 0, 0.05, 0.05, 0.05, 0];};

default {[ 0.1, 0.1, 0.1, 0, 0.1, 0, 0.1, 0, 0.1, 0];};

};

// return

[_skill,_rnd,_mode,_debug];

As you can see i have put = FALSE; back i did have = TRUE; also iv added the // so these setting can not be see.

Sorry if i may seem a bit stupid but to me you have to ask if your not sure.

Share this post


Link to post
Share on other sites

_option = [10,5]; defines which "case" is used

No need to comment out those lines, but no harm done in doing so

You can test if it is working using the test mission that came with the download

Before the questions start coming in about the DEV-BETA which was released today.

BIS AI are still lethal, so this addon is still useful

Share this post


Link to post
Share on other sites

Does this MOD still work with the beta? Seems the AI are super accurate again...

Edited by gonk
typo

Share this post


Link to post
Share on other sites

CBA is broken again...................

I'm sure it wont be long before their devs fix it... they are normally on the ball

Share this post


Link to post
Share on other sites
CBA is broken again...................

I'm sure it wont be long before their devs fix it... they are normally on the ball

Thought as much... oh well.... The AI are a game killer for me and the crowd I play with. I hope the AI is fixable in game so this Mod is not required... no offence. Thanks for your effort.

Share this post


Link to post
Share on other sites

Guys, sorry if this is a really stupid question but is it possible (ignoring the CBA issues for a moment) for someone hosting a server on their machine to ALSO play on that same machine?

We keep getting an error message that the mod is disabling as soon as the guy hosting the server joins the game (something like zeu_serverskills has been disabled as client detected in multiplayer environment).

If it IS possible what are we doing wrong?? What setting do we need to change?? (I understand the basic nature of the problem but can't help hoping/praying that it's our ignorance that's stopping us doing this)

We too consider the superhuman AI skills to be a complete game breaker. Thanks for this great mod Terox

Tom

Share this post


Link to post
Share on other sites
Guys, sorry if this is a really stupid question but is it possible (ignoring the CBA issues for a moment) for someone hosting a server on their machine to ALSO play on that same machine?

We keep getting an error message that the mod is disabling as soon as the guy hosting the server joins the game (something like zeu_serverskills has been disabled as client detected in multiplayer environment).

If it IS possible what are we doing wrong?? What setting do we need to change?? (I understand the basic nature of the problem but can't help hoping/praying that it's our ignorance that's stopping us doing this)

We too consider the superhuman AI skills to be a complete game breaker. Thanks for this great mod Terox

Tom

I can only assume the following scenario has occured

  1. The host client is running a dedicated server and his A3 client on the same machine
  2. The client is also running the addon

Make sure he removes the addon from his (clients) mod folder

Only a client will run the message, he just assumes the server is disabling it, which it will not

here is the code that runs that line...

  // Authorised environment is either single player or server
 if ((! IsServer) && (IsMultiplayer))exitwith
 {
[] spawn 
{
	waituntil {Time > 5}; 
	player globalchat "**********          Zeu_ServerSkills ERROR          **********";
	Player globalchat "Non server Client In multiplayer environment, addon has been disabled";
	player globalchat "**********          END OF MESSAGE          **********";
};
 };

CBA have released a hotfix which will allows the server to run zeu_serverskill

Download it HERE and install it on the server

Unfortunately for those who use CBA for their clientside addons, they will have to wait fior the signed version next week when the BETA is officially released.

So you can now get the zeu-serverskill up and running :yay:

Edited by Terox

Share this post


Link to post
Share on other sites

Many thanks for your reply Terox :)

You are correct, the host client is running a dedicated server and his A3 client on the same machine, via this information.....

Directory paths are all customizable.
1. Create the following empty directories

   <game_path>\Arma 3\A3Master
   <game_path>\Arma 3\A3Files

2. Create a shortcut for the ArmA3Server.exe
Add the following parameters to the Target Line in the shortcut tab of the newly created desktop shortcut

   -port=2302 (Required if running multiple server instances)
   "-profiles=<game_path>\Arma 3\A3Master"
   -config=server.cfg
   -world=empty 

Example: "<game_path>\Arma 3\arma3server.exe" "-profiles=<game_path>\Arma 3\A3Master" -port=2302 -config="<game_path>\Arma 3\server.cfg" -world=empty"
3. Create a document called "server.cfg" on the root folder of your ArmA3 install on the server "<game_path>\Arma 3\" (See below for ".cfg" content)
4. Start up your shortcut,check if the server runs. (You will see a console pop up in your desktop after a few seconds)
5. Close the console window down, then you will need to edit the following files which will have been created.

   <game_path>\Arma 3\A3Master\Users\<your_game_user>\Administrator.Arma3AlphaProfile
   <game_path>\Arma 3\A3Master\Users\<your_game_user>\Arma3Alpha.cfg
   (See attachments for my server.cfg with comments)

6. Restart the server
7. Start up your client Arma3 and you should then be able to your server in the server browser.
8. Login to your server using the password you defined in server.cfg by typing "/" to open the chat window and then type (#login ADMINPASSWORD followed by enter
9. Once logged in you will be presented with a mission list, select one of the missions to start the game

Initially the 'serverskill' mod was installed exactly as per your instructions...hence the disabled message when he joined (it was picking up the presence of the mod in his 'Addons' folder)

We instead placed it (the mod) into the 'A3Master' folder along with the CBA (creating, where necessary, the additional folders)...Works!!

No errors and your mod works brilliantly (or we're getting really, really good!) ;)

Share this post


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

×