Jump to content

ProconRulz V44j1 - weapon limits and other event-triggered admin actions


ColColonCleaner

Recommended Posts

Originally Posted by SileX*:

 

I would create a rule against killing infantry RPG after 2 seconds and void if it is a vehicle that was destroyed in, so does this rule is good?

On Kill;Damage ProjectileExplosive; PlayerSay %p% no RPG infantery %p%;Kill

On Kill;Damage VehicleLight; playercount %p%; TargetCancel

Read the first rule in the startpost. Vehiclexxx doesnt work in BF3.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by bambam*:

 

Compaholic

As said it works perfectly, but would it also work for

Text word1,word2;Incr %words%;Set %server_badword% 1

Yes that should work. The "Text abc,def,ghi" condition takes the user 'say text' and checks "does it contain abc? Does it contain def ? Does it contain ghi_" If any of those succeed, ProconRulz moves on to whatever is next in that rule, more conditions or the actions to be executed.

 

Regarding 'rulz variables'... they can be per-player, per-team, per squad, or for the server. A server variable will begin %server_, a team variable will begin %team_, squad variable %squad_, and per-player variable anything else.

 

So if you have a rule "On Kill;Incr %kills%", that will increment a "%kills%" variable FOR THE CURRENT PLAYER. If you have another rule "On Say;Text kills;Say %p% your kills are %kills%", that will display THE PLAYER' THAT SAID KILLS'S KILLS.

 

If you wanted to accumulate the count of kills total for the server, i.e. have ALL players increment the SAME variable, you could use a rule "On Kill;Incr %server_kills%". To display the value use "On Say;Text kills;Say Total kills for this round is %server_kills%.

 

%...% variables can hold strings (WITHOUT SPACES) but the "Set" condition is currently limited to "Set %var% ||". So it turns out I haven't provided a way you could accumulate strings... I see what you were trying to do if you had "Set %server_noobs% %p%,%server_noobs%" (add current playername to a list) but ProconRulz doesn't support this.

 

It's doable, and I've been deliberately low-key about these 'vars' capabilities as we let v37 settle down for existing rulz, so I'll think about how v38 should incorporate what you asked.

 

C-4-N (and compuholic might be interested)

it's not possible to have an ended message

well yeah it is, but it depends on your programming skill. The simplest thing to do is just treat "On Spawn;PlayerCount 1" (i.e. all player spawns except their first) as the end of their killstreak. You're right this ignores kills that are revivied. For your full solution you would use your own 'player variables' constructed using "%server_" variables with the player name embedded, e.g. "%server_streak[%p%]%". This means during a kill you can see if the VICTIM was on a killstreak by testing %server_streak[%v%]%, and give an 'end' message and reset that count. Just think of the variable name as being written out after the %p%/%v% substitution, e.g. "%server_streak[bambam]%". If this sounds too complex, just stick with the simple solution and don't worry about revives. You ARE writing a custom plugin...

 

GerWonder to find the key for your map mode, write a rule "On Round;Log Map %m%, MapMode %mm%" and let us all know what it says.

 

Kilack

Added this rule

On Kill;Rate 30 60;Log %p% banned for too many kills limit;PBBan hacking/cheating.

 

Then got this in the chat log

 

[14:21:19] ProconRulz: GGC-Anticheat banned for too many kills limit

[14:21:19] ProconRulz: Player GGC-Anticheat banned via Punkbuster

[14:21:19] ProconRulz: GGC-Anticheat banned for too many kills limit

[14:21:19] ProconRulz: Player GGC-Anticheat banned via Punkbuster

Thanks for providing the actual log - makes it much easier to see what's happening. You are 100% correct this is some hacking fukwit who is repeatedly triggering your rule during the window between the ban being issued and taking effect. ProconRulz has to be simple in that respect -each event it checks the rulz and fires the actions on the first one to succeed. If you want the PBBan action only to be triggered ONCE (lol sounds sensible I guess) then use the PlayerFirst condition:

 

On Kill;Rate 30 60;PlayerFirst;Log %p% banned for too many kills limit;PBBan hacking/cheating.

Personally I just let ProconRulz do what it does (a multi-kill of a banned weapon could trigger multiple kick actions, the second one will fail). OR... you could experiment with a Kick action after the PBBan action - maybe the Kick will be immediate but the PBBan before still works. Let us know how it goes and thanks again for the decent log info.

 

FYI your earlier post had a condition "Death"... that should be "Weapon Death"

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Mr_Funki*:

 

Hello, can someone please tell me the mapmode name for team / squad deathmatch?

 

I tried this but this doesnt work ...

On Kill;MapMode tdm;Weapon RPG-7;Say %p%, no RPG on TDM! You got killed. ;Kill

 

 

Thanks a lot for your help

Try this!

 

#MapMode

ConquestLarge0

ConquestSmall0

RushLarge0

SquadRush0

TeamDeathMatch0

SquadDeathMatch0

 

only Karkand Maps

Assult64

Assult

Assult#2

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by CoMPaHoLiC*:

 

BamBam, you keep offering great support and enhancements for your plugin, hooray! (Can't state enough that PRoCon actually attracts decent plugin builders!). What I was trying out isn't complete though as one would also need to prevent player names from doubling out. The %server_streak[%p]% comes in nicely but then we'd really be (ab)using a plugin to write itself as that would imply a foreach to print things out again. I was just wondering if it was possible, I don't actually *need* it :smile:

I will play around with the %server? variables though, just to log the impressive amount of RPG/SMAWs fired on maps like metro :smile:

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

On Kill;Damage ProjectileExplosive; PlayerSay %p% no RPG infantery %p%;Kill

 

can we add an action to forgive or killed? do it there?

I use this rule to inform the players:

 

On Say;Text !punish;Say %p%, this server punishes players automatically.

 

I just did that so that players feel like they didn't waste their time typing out the command.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

I have a question. I haven't seen a player or victim used as a condition yet. I'm wondering if something like this is even possible and what it could be used for.

 

On Kill;TargetPlayer %v%;ServerCount 10;Say %v% has died %sc% times this round.

 

I don't know if that would even work. I don't know what this would be good for, but I haven't seen anything like it yet.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by MadIzm*:

 

IS this the right rule when i want them banned after using the M320 twice?

 

# M320

On Kill;Map Subway;Weapon M320;PlayerCount 1;Log %p% killed for M320 on Metro;Kill

On Kill;Map Subway;Weapon M320;PlayerSay %p% no M320 on Metro

On Kill;Map Subway;Weapon M320;PlayerCount 2;Log %p% banned for M320 on Metro;TempBan 15min %p% Metro M320

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by mefhisto*:

 

IS this the right rule when i want them banned after using the M320 twice?

 

# M320

On Kill;Map Subway;Weapon M320;PlayerCount 1;Log %p% killed for M320 on Metro;Kill

On Kill;Map Subway;Weapon M320;PlayerSay %p% no M320 on Metro

On Kill;Map Subway;Weapon M320;PlayerCount 2;Log %p% banned for M320 on Metro;TempBan 15min %p% Metro M320

Order fails you, if you want to ban that put the first of the rule, such as:

 

1 º playercount 2

2 º playercount 1

3 º PlayerSay

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by kaiserkonda*:

 

can some one help me this is my first time doing this so i don´t know how i do this i want to add this plugin in procon 1.1.3.1 i put the file when i download it in the procon packages folder but i can´t activate it in procone then (it´s for a bf 3 server)

 

hopefully you can help me

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by roxputin*:

 

can some one help me this is my first time doing this so i don´t know how i do this i want to add this plugin in procon 1.1.3.1 i put the file when i download it in the procon packages folder but i can´t activate it in procone then (it´s for a bf 3 server)

 

hopefully you can help me

Put the ProconRulz.cs file in the ..\Plugins\BF3 Folder.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by MadIzm*:

 

Order fails you, if you want to ban that put the first of the rule, such as:

 

1 º playercount 2

2 º playercount 1

3 º PlayerSay

Does that also count for the fact that i want them to be killed first after 1 kill and banned after they come back with the weapon and kill with it again.

So first they get killed for using M320 and get a warning and then a ban for 15 minutes when they do it again

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Does that also count for the fact that i want them to be killed first after 1 kill and banned after they come back with the weapon and kill with it again.

So first they get killed for using M320 and get a warning and then a ban for 15 minutes when they do it again

Yes, you want the highest count first.

 

This is so it will move on to the next lowest rule if the highest rule is not yet satisfied. If you do it in reverse order, it will not move on to the next highest rule if the lower rule is satisfied with a ;Kill or ;End.

 

Proper structure:

 

[trigger];[Player/Team/Server]Count [highest];[action]

[trigger];[Player/Team/Server]Count [middle];[action]

[trigger];[Player/Team/Server]Count [lowest];[action]

 

Of course you would substitute all of those generalizations for actual values.

 

The structure you are using:

Code:

On Kill;Map Subway;Weapon M320;PlayerCount 1;Log %p% killed for M320 on Metro;Kill
On Kill;Map Subway;Weapon M320;PlayerSay %p% no M320 on Metro
On Kill;Map Subway;Weapon M320;PlayerCount 2;Log %p% banned for M320 on Metro;TempBan 15min %p% Metro M320
The last rule ( On Kill;Map Subway;Weapon M320;PlayerCount 2;Log %p% banned for M320 on Metro;TempBan 15min %p% Metro M320 ) will never occur because it will be satisfied by the first rule every time the PlayerCount is 1 or more.

 

This is how it should be:

 

Code:

On Kill;Map Subway;Weapon M320;PlayerCount 2;Log %p% tempbanned for M320 on Metro;TempBan 900 15min %p% Metro M320
On Kill;Map Subway;Weapon M320;PlayerCount 1;Log %p% killed for M320 on Metro;Kill
On Kill;Map Subway;Weapon M320;PlayerSay %p% no M320 on Metro
You also needed a value (in seconds) after TempBan to tell ProCon how long you want to ban the player.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by MadIzm*:

 

Dude thanx a lot for your help man.

 

Im going to set this code in my procon;

 

On Kill;Map Subway;Weapon M320;PlayerCount 2;Log %p% tempbanned for M320 on Metro;TempBan 900 %p% Metro M320

On Kill;Map Subway;Weapon M320;PlayerCount 1;Log %p% killed for M320 on Metro;Kill

On Kill;Map Subway;Weapon M320;PlayerSay %p% no M320 on Metro

 

So i deleted the 15min

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Will this work?

 

Code:

# Kill Streak Announcer
On Round;Set %streak% 0
On Spawn;If %streak% >= 5;Say %p% kill streak of %streak% is finished. 
On Spawn;Set %streak% 0
On Kill;Incr %streak%;If %streak% == 10;Say %p% has a %streak% kill streak. Kill %p% !
On Kill;If %streak% == 5;Say %p% is wanted with a %streak% kill streak !
My concern is that if a player joins in the middle of a round, is there a chance that the server will announce that their streak has ended when they spawn? Or is their %streak% value set to null or 0 by default?

 

Similar concern with this one:

Code:

# Headshot Steak Announcer
On Round;Set %headshotstreak% 0
On Kill;Not Headshot;If %headshotstreak% >= 3;Say %p% %headshotstreak% headshot streak is finished.
On Kill;Not Headshot;Set %headshotstreak% 0
On Kill;Headshot;Incr %headshotstreak%;If %headshotstreak% == 10;Say %p% has a %headshotstreak% headshot streak !
On Kill;If %headshotstreak% == 5;Say %p% is on a roll with a %headshotstreak% headshot streak !
On Kill;If %headshotstreak% == 3;Say %p% has made %headshotstreak% headshots in a row !
EDIT: I don't know why I didn't think of this earlier: I added an On Join rule for each as well.

 

Now I have:

 

Code:

# Kill Streak Announcer
On Round;Set %streak% 0
On Join;Set %streak% 0
On Spawn;If %streak% >= 5;Say %p%'s kill streak of %streak% is finished. 
On Spawn;Set %streak% 0
On Kill;Incr %streak%;If %streak% == 10;Say %p% has a %streak% kill streak. Kill %p% !
On Kill;If %streak% == 5;Say %p% is wanted with a %streak% kill streak !
# .
# Headshot Steak Announcer
On Round;Set %headshotstreak% 0
On Join;Set %headshotstreak% 0
On Kill;Not Headshot;If %headshotstreak% >= 3;Say %p%'s %headshotstreak% headshot streak is finished.
On Kill;Not Headshot;Set %headshotstreak% 0
On Kill;Headshot;Incr %headshotstreak%;If %headshotstreak% == 10;Say %p% has a %headshotstreak% headshot streak ! Cheater!_
On Kill;If %headshotstreak% == 5;Say %p% is on a roll with a %headshotstreak% headshot streak !
On Kill;If %headshotstreak% == 3;Say %p% has made %headshotstreak% headshots in a row !
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Dude thanx a lot for your help man.

 

Im going to set this code in my procon;

 

On Kill;Map Subway;Weapon M320;PlayerCount 2;Log %p% tempbanned for M320 on Metro;TempBan 900 %p% Metro M320

On Kill;Map Subway;Weapon M320;PlayerCount 1;Log %p% killed for M320 on Metro;Kill

On Kill;Map Subway;Weapon M320;PlayerSay %p% no M320 on Metro

 

So i deleted the 15min

You could keep the 15min in there as a description to the kicked player how long they have to wait before they can join the server again.

 

Does PlayerSay work, or not work? I use Say; I haven't even tested PlayerSay, but I thought saying something to a specific player wasn't supported in BF3. Or is that a restriction solely for the Rcon console?

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Boy I really want to get rid of nades on my Metro sever but keep c4 and claymores, this isn't yet possible is it?

Couldn't you just do something like this?

 

Code:

On Kill;Damage ProjectileExplosive;Weapon M67,M15&AT&Mine;PlayerCount 2;Say %p%, only explosives allowed are C4 and Claymore;Kick Only explosives allowed are C4 and Claymore
On Kill;Damage ProjectileExplosive;Weapon M67,M15&AT&Mine;PlayerCount 1;Say %p%, only explosives allowed are C4 and Claymore;Kill
On Kill;Damage ProjectileExplosive;Weapon M67,M15&AT&Mine;Say %p%, only explosives allowed are C4 and Claymore
I think that would work, but underslung M320 would still not be restricted since it is counted as killing from whatever primary weapon it is attached to. It should cut down on explosive spam a lot though.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Clay52*:

 

Couldn't you just do something like this?

 

Code:

On Kill;Damage ProjectileExplosive;Weapon M67,M15&AT&Mine;PlayerCount 2;Say %p%, only explosives allowed are C4 and Claymore;Kick Only explosives allowed are C4 and Claymore
On Kill;Damage ProjectileExplosive;Weapon M67,M15&AT&Mine;PlayerCount 1;Say %p%, only explosives allowed are C4 and Claymore;Kill
On Kill;Damage ProjectileExplosive;Weapon M67,M15&AT&Mine;Say %p%, only explosives allowed are C4 and Claymore
I think that would work, but underslung M320 would still not be restricted since it is counted as killing from whatever primary weapon it is attached to. It should cut down on explosive spam a lot though.
I already have a rocket/M320 rule but want a nade rule itslef but still maintain c4 and clays. Nades are "explosive" as are c4 and claymores, when one goes so do they all...
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

I already have a rocket/M320 rule but want a nade rule itslef but still maintain c4 and clays. Nades are "explosive" as are c4 and claymores, when one goes so do they all...

Well, I combined the rocket/M320 rule with the grenade/AT Mine rule. But you could separate them and do this instead for only grenade/AT Mine:

 

Code:

On Kill;Weapon M67,M15&AT&Mine;PlayerCount 2;Say %p%, no Grenades or AT Mines.;Kick no Grenades or AT Mines
On Kill;Weapon M67,M15&AT&Mine;PlayerCount 1;Say %p%, no Grenades or AT Mines.;Kill
On Kill;Weapon M67,M15&AT&Mine;Say %p%, no Grenades or AT Mines.
Since you aren't restricting the generalized 'Damage Explosive' but instead are specifically restricting 'Weapon M67,M15&AT&Mine', you wouldn't be restricting C4 or Claymores.

 

If you don't want to restrict the M15 AT Mine, then remove that from the rule as well:

 

Code:

On Kill;Weapon M67;PlayerCount 2;Say %p%, no Grenades.;Kick no Grenades
On Kill;Weapon M67;PlayerCount 1;Say %p%, no Grenades.;Kill
On Kill;Weapon M67;Say %p%, no Grenades.
This would restrict M67 grenades only.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by NeIXeR*:

 

Our code:

 

Code:

On Kill;Map Subway;Weapon M320;PlayerCount 3;Say %p% ban por usar M320 en Metro 30 Min;TempBan %p% 300 No M320 en Metro [Ban 30 Min]
On Kill;Map Subway;Weapon M320;PlayerCount 2;Say %p% kick por usar M320 en Metro;Kick %p% No RPG en Metro
On Kill;Map Subway;Weapon M320;Say %p% asesinado por usar M320 en Metro;Kill 100
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 3;Say %p% TempBan por usar RPG en Metro 30 Min;TempBan %p% 300 No RPG en Metro [Ban 30 Min]
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 2;Say %p% Kick por usar RPG en Metro;Kick %p% No RPG en Metro
On Kill;Map Subway;Damage ProjectileExplosive;Say %p% asesinado por usar RPG en Metro;Kill 100
TempBan %p% 300 [........]

 

On procon listban - 300 = 7Day BAN ?

 

we want only 30min, no 7 days

 

300 - 10080min

X - 30min

 

(30 * 300) / 10080 = 0.89 ....

 

let's try that value to see if that puts a ban 30min

 

We also have a failure with respect to penalties for using Metro M320, also punished for using the 320 shotgun

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Clay52*:

 

Our code:

 

Code:

On Kill;Map Subway;Weapon M320;PlayerCount 3;Say %p% ban por usar M320 en Metro 30 Min;TempBan %p% 300 No M320 en Metro [Ban 30 Min]
On Kill;Map Subway;Weapon M320;PlayerCount 2;Say %p% kick por usar M320 en Metro;Kick %p% No RPG en Metro
On Kill;Map Subway;Weapon M320;Say %p% asesinado por usar M320 en Metro;Kill 100
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 3;Say %p% TempBan por usar RPG en Metro 30 Min;TempBan %p% 300 No RPG en Metro [Ban 30 Min]
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 2;Say %p% Kick por usar RPG en Metro;Kick %p% No RPG en Metro
On Kill;Map Subway;Damage ProjectileExplosive;Say %p% asesinado por usar RPG en Metro;Kill 100
TempBan %p% 300 [........]

 

On procon listban - 300 = 7Day BAN ?

 

we want only 30min, no 7 days

 

300 - 10080min

X - 30min

 

(30 * 300) / 10080 = 0.89 ....

 

let's try that value to see if that puts a ban 30min

 

We also have a failure with respect to penalties for using Metro M320, also punished for using the 320 shotgun

Hi, time is in seconds, so we have 60 seconds in 1 minute, so 60 minutes (1 Hour) is 60s x 60 = 3600. Therefore, for 30 minutes = 1800, 15 mins = 900, 300 would be 5 minutes and so on...
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Hi, time is in seconds, so 60 seconds in 1 minute so 60 minutes (1 Hour) is 60sx60 = 3600. There for for 30 minutes = 1800, 15 mins = 900, 300 would be 5 minutes and so on...

Yeah.

 

His other problem is that he has has order backwards. It should be TempBan message. He has Tempban message message. So, apparently, it isn't finding the amount of tempban time and is reverting to a 7 day temp ban.

 

This is what the code should say:

 

Code:

On Kill;Map Subway;Weapon M320;PlayerCount 3;Say %p% ban por usar M320 en Metro 30 Min;TempBan 1800 %p% No M320 en Metro [Ban 30 Min]
On Kill;Map Subway;Weapon M320;PlayerCount 2;Say %p% kick por usar M320 en Metro;Kick %p% No RPG en Metro
On Kill;Map Subway;Weapon M320;Say %p% asesinado por usar M320 en Metro;Kill 100
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 3;Say %p% TempBan por usar RPG en Metro 30 Min;TempBan 1800 %p% No RPG en Metro [Ban 30 Min]
On Kill;Map Subway;Damage ProjectileExplosive;PlayerCount 2;Say %p% Kick por usar RPG en Metro;Kick %p% No RPG en Metro
On Kill;Map Subway;Damage ProjectileExplosive;Say %p% asesinado por usar RPG en Metro;Kill 100
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Clay52*:

 

Well, I combined the rocket/M320 rule with the grenade/AT Mine rule. But you could separate them and do this instead for only grenade/AT Mine:

 

Code:

On Kill;Weapon M67,M15&AT&Mine;PlayerCount 2;Say %p%, no Grenades or AT Mines.;Kick no Grenades or AT Mines
On Kill;Weapon M67,M15&AT&Mine;PlayerCount 1;Say %p%, no Grenades or AT Mines.;Kill
On Kill;Weapon M67,M15&AT&Mine;Say %p%, no Grenades or AT Mines.
Since you aren't restricting the generalized 'Damage Explosive' but instead are specifically restricting 'Weapon M67,M15&AT&Mine', you wouldn't be restricting C4 or Claymores.

 

If you don't want to restrict the M15 AT Mine, then remove that from the rule as well:

 

Code:

On Kill;Weapon M67;PlayerCount 2;Say %p%, no Grenades.;Kick no Grenades
On Kill;Weapon M67;PlayerCount 1;Say %p%, no Grenades.;Kill
On Kill;Weapon M67;Say %p%, no Grenades.
This would restrict M67 grenades only.
Good stuff, so that's killing on 1st and 2nd, kicking on 3rd from the looks of it? btw PlayerSay is possible now, or was it before?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

For soem reason, this did not work:

 

# METRO MAV/MORTAR RULE

On Kill;Weapon Death;Count 1; TempBan 900 %p% No Mortars Allowed!!!

On Kill;Weapon Death;kill 100

Does the space between the ';' and 'TempBan' cause issues?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Clay52*:

 

Does the space between the ';' and 'TempBan' cause issues?

hmm duh, didn't notice that but would that necessarily cause it to malfunction? It should still slay on the first use I would imagine, shouldn't it?
* Restored post. It could be that the author is no longer active.
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Please review our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.