Jump to content

Insane Limits: Clan Tag Protector


ImportBot

Recommended Posts

Originally Posted by LCARSx64*:

 

This limit allows only your clan members to wear your clan tags in the server.

 

Clan Tag Protector


Option 1: Using Insane Limits PlayerWhitelist.

 

Create a new limit to evaluate OnJoin. Set action to None.

 

Set first_check to this Code:

Code:

// Clan Tag Protector
//

// Replace TAG in the following line to your clan tag
String ourTag = "TAG";
String msg = "Only clan members are permitted to wear the " + ourTag + " clan tags in this server!";
String logMsg = "^b^0Tag Protector^n: ^8Kicking " + player.Name + " for wearing our clan tags!^0";

if (!plugin.isInPlayerWhitelist(player.Name) && player.Tag == ourTag)
{
    // Remove the //'s from the start of the following lines for logging
    //plugin.ConsoleWrite(logMsg);
    //plugin.PRoConChat(logMsg);
    //plugin.PRoConEvent("Kicked " + player.Name + " for wearing our clan tags!", "Insane Limits");
    plugin.KickPlayerWithMessage(player.Name, msg);
}

return false;

Option 2: Using a custom list.

 

Set use_custom_lists to True and create a new list with these parameters:

Code:

name = clan_members
data = player1, player2, etc.
Create a new limit to evaluate OnJoin. Set action to None.

 

Set first_check to this Code:

Code:

// Clan Tag Protector
//

// Replace TAG in the following line to your clan tag
String ourTag = "TAG";
String msg = "Only clan members are permitted to wear the " + ourTag + " clan tags in this server!";
String logMsg = "^b^0Tag Protector^n: ^8Kicking " + player.Name + " for wearing our clan tags!^0";

if (!plugin.isInList(player.Name, "clan_members") && player.Tag == ourTag)
{
    // Remove the //'s from the start of the following lines for logging
    //plugin.ConsoleWrite(logMsg);
    //plugin.PRoConChat(logMsg);
    //plugin.PRoConEvent("Kicked " + player.Name + " for wearing our clan tags!", "Insane Limits");
    plugin.KickPlayerWithMessage(player.Name, msg);
}

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

Originally Posted by PapaCharlie9*:

 

I don't think Option 1 will work -- not as IL was intended, anyway. You are only supposed to put tags in clan_white_list so if I put LGN in clan_white_list and someone impersonates by setting their tag to LGN, it won't detect anything wrong.

 

If you change plugin.isInClanWhitelist to plugin.isInPlayerWhitelist, and put a list of player names in player_white_list, then it would work as intended.

 

In IL, read "clan" as "tag" and "player" as "name".

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

Originally Posted by LCARSx64*:

 

I don't think Option 1 will work -- not as IL was intended, anyway. You are only supposed to put tags in clan_white_list so if I put LGN in clan_white_list and someone impersonates by setting their tag to LGN, it won't detect anything wrong.

 

If you change plugin.isInClanWhitelist to plugin.isInPlayerWhitelist, and put a list of player names in player_white_list, then it would work as intended.

 

In IL, read "clan" as "tag" and "player" as "name".

Oh my bad, thanks for that. I've updated Option1 to use the isInPlayerWhitelist instead. :smile:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by LCARSx64*:

 

Is it possible to check if player is a member of a platoon on battlelog, and use that as a whitelist? :biggrin:

It may be possible but the way I see it there would be two drawbacks:

 

  • The limit would be far more complex than it needs to be.
  • Some Platoons have members that are not actually clan members, so there would be no way to stop those extra members from wearing the clan tags.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by TMiland*:

 

It may be possible but the way I see it there would be two drawbacks:

 

  • The limit would be far more complex than it needs to be.
  • Some Platoons have members that are not actually clan members, so there would be no way to stop those extra members from wearing the clan tags.
We have 1 platoon with community members, it would be nice to require players to be a member to be able to play with the tag on our servers.

 

It was just an idea that popped into my head. :smile:

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

Originally Posted by PapaCharlie9*:

 

It may be possible but the way I see it there would be two drawbacks:

 

  • The limit would be far more complex than it needs to be.
  • Some Platoons have members that are not actually clan members, so there would be no way to stop those extra members from wearing the clan tags.
Agreed, and the same applies to your Battlelog friends list. Those two are among the most frequently requested features for a lot of plugins. If someone can figure out if there is a REST API for getting that stuff from Battlelog, I could build it into Insane Limits and make it available to limits, hiding the "far more complex" part, but there is still the problem of the second bullet.
* Restored post. It could be that the author is no longer active.
Link to comment
  • 8 months later...

Originally Posted by PapaCharlie9*:

 

Is it possible to check more frequently other than 'OnJoin'?

 

Like 'OnJoin' and 'OnIntervalServer' say every 10 minutes or so?

Er, why? A problem with players changing tags mid round? Does that even work?

 

Just change it to OnSpawn if you really must check it all the time.

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

Originally Posted by GR101*:

 

Er, why? A problem with players changing tags mid round? Does that even work?

 

Just change it to OnSpawn if you really must check it all the time.

Yep PapaCharlie9 tried and tested, join a server without any tags on, then add before round ends for tags to show next round.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by LCARSx64*:

 

Is it possible to check more frequently other than 'OnJoin'?

 

Like 'OnJoin' and 'OnIntervalServer' say every 10 minutes or so?

Yep PapaCharlie9 tried and tested, join a server without any tags on, then add before round ends for tags to show next round.

As Papa already said, just changing the trigger event from OnJoin to OnSpawn will work.
* Restored post. It could be that the author is no longer active.
Link to comment
  • 2 months later...

Originally Posted by LCARSx64*:

 

Hello LCARSx64,

 

Could you create codes for restricting clan tags (our choice) from playing in our server?

Here you go:

 


Prohibit Clan Tags

 

Set use_custom_lists to True and create a new list with these parameters:

Code:

name = bad_tags
comparison = CaseSensitive
data = TAG1, TAG2, TAG3, etc.
NOTE: Tags are case sensitive, so TAG is different to Tag or TaG, etc.

 

Create a new limit to evaluate OnJoin. Set action to None.

 

Set first_check to this Code:

Code:

// Prohibit Clan Tags
//

if (!plugin.isInList(player.Tag, "bad_tags")) return false;

String msg = "Sorry, clan [" + player.Tag + "] is not allowed in this server!";
String logMsg = "^b^0Prohibit Clan Tags^n: ^8Kicking " + player.Name + " with clan tags [" + player.Tag + "]!^0";

// Remove the //'s from the start of the following lines for PRoCon logging
//plugin.Console.Write(logMsg);
//plugin.PRoConChat(logMsg);
//plugin.PRoConEvent("Prohibit Clan Tags: Kicked " + player.Name + " with clan tags [" + player.Tag + "]!", "Insane Limits");
plugin.KickPlayerWithMessage(player.Name, msg);

return false;
INFO: You can also add an additional limit set to evaluate OnSpawn with code above as it's first_check Code to cover tag changing between rounds.


End of post.

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

Originally Posted by moacco07*:

 

Here you go:

 


Prohibit Clan Tags

 

Set use_custom_lists to True and create a new list with these parameters:

Code:

name = bad_tags
comparison = CaseSensitive
data = TAG1, TAG2, TAG3, etc.
NOTE: Tags are case sensitive, so TAG is different to Tag or TaG, etc.

 

Create a new limit to evaluate OnJoin. Set action to None.

 

Set first_check to this Code:

Code:

// Prohibit Clan Tags
//

if (!plugin.isInList(player.Tag, "bad_tags")) return false;

String msg = "Sorry, clan [" + player.Tag + "] is not allowed in this server!";
String logMsg = "^b^0Prohibit Clan Tags^n: ^8Kicking " + player.Name + " with clan tags [" + player.Tag + "]!^0";

// Remove the //'s from the start of the following lines for PRoCon logging
//plugin.Console.Write(logMsg);
//plugin.PRoConChat(logMsg);
//plugin.PRoConEvent("Prohibit Clan Tags: Kicked " + player.Name + " with clan tags [" + player.Tag + "]!", "Insane Limits");
plugin.KickPlayerWithMessage(player.Name, msg);

return false;
INFO: You can also add an additional limit set to evaluate OnSpawn with code above as it's first_check Code to cover tag changing between rounds.


End of post.

Do you have the additional limit as you mentioned?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by LCARSx64*:

 

Do you have the additional limit as you mentioned?

The code is identical to the OnJoin limit. Just create a new limit to evaluate OnSpawn and paste the code in as the first_check Code.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by moacco07*:

 

The code is identical to the OnJoin limit. Just create a new limit to evaluate OnSpawn and paste the code in as the first_check Code.

ok thank you.
* Restored post. It could be that the author is no longer active.
Link to comment
  • 7 months later...

Originally Posted by flatland*:

 

Hi guys

is there a way to allow only a whitelist (a "tag" rule_) of players to join a game, without using a password? we have a ranked server, but we would like to play only between us. I'm sorry to ask here but i'm not really into scripting and i can't get my head around it. This seems to be the closest topic to what i need.

Basically instead of blocking other player's tags, allowing only one.

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

Originally Posted by Gazovik83*:

 

This limit allows only your clan members to wear your clan tags in the server.

 

Clan Tag Protector

 


Option 2: Using a custom list.

 

Set use_custom_lists to True and create a new list with these parameters:

Code:

name = clan_members
data = player1, player2, etc.
Create a new limit to evaluate OnJoin. Set action to None.

 

Set first_check to this Code:

Code:

// Clan Tag Protector
//

// Replace TAG in the following line to your clan tag
[b]String ourTag = "TAG";[/b]
String msg = "Only clan members are permitted to wear the " + ourTag + " clan tags in this server!";
String logMsg = "^b^0Tag Protector^n: ^8Kicking " + player.Name + " for wearing our clan tags!^0";

if (!plugin.isInList(player.Name, "clan_members") && player.Tag == ourTag)
{
    // Remove the //'s from the start of the following lines for logging
    //plugin.ConsoleWrite(logMsg);
    //plugin.PRoConChat(logMsg);
    //plugin.PRoConEvent("Kicked " + player.Name + " for wearing our clan tags!", "Insane Limits");
    plugin.KickPlayerWithMessage(player.Name, msg);
}

return false;
Code:
[b]String ourTag = "TAG+tAG+taG+and more";[/b]
How can I write different spellings for clantag?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by maxdralle*:

 

Code:

[b]String ourTag = "TAG+tAG+taG+and more";[/b]
How can I write different spellings for clantag?
use two custom lists

list nr. 1:

Code:

name = clan_members
data = player1, player2, etc.
list nr. 2

Code:

name = clan_tags
data = xxx,abc, etc.
limit:

evaluation: OnJoin

first_check: Code

First_check_code: code

 

Code:

// Clan Tag Protector
//
String msg = "Only clan members are permitted to wear the " + player.Tag + " clan tags in this server!";
String logMsg = "^b^0Tag Protector^n: ^8Kicking " + player.Name + " for wearing our clan tags!^0";

if ((!plugin.isInList(player.Name, "clan_members")) && (plugin.isInList(player.Tag, "clan_tags")))
{
    // Remove the //'s from the start of the following lines for logging
    //plugin.ConsoleWrite(logMsg);
    //plugin.PRoConChat(logMsg);
    //plugin.PRoConEvent("Kicked " + player.Name + " for wearing our clan tags!", "Insane Limits");
    plugin.KickPlayerWithMessage(player.Name, msg);
}

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

Originally Posted by Gazovik83*:

 

use two custom lists

list nr. 1:

Code:

name = clan_members
data = player1, player2, etc.
list nr. 2

Code:

name = clan_tags
data = xxx,abc, etc.
limit:

evaluation: OnJoin

first_check: Code

First_check_code: code

 

Code:

// Clan Tag Protector
//
String msg = "Only clan members are permitted to wear the " + player.Tag + " clan tags in this server!";
String logMsg = "^b^0Tag Protector^n: ^8Kicking " + player.Name + " for wearing our clan tags!^0";

if ((!plugin.isInList(player.Name, "clan_members") && (plugin.isInList(player.Tag, "clan_tags"))
{
    // Remove the //'s from the start of the following lines for logging
    //plugin.ConsoleWrite(logMsg);
    //plugin.PRoConChat(logMsg);
    //plugin.PRoConEvent("Kicked " + player.Name + " for wearing our clan tags!", "Insane Limits");
    plugin.KickPlayerWithMessage(player.Name, msg);
}

return false;
:sad:Code:
[14:37:23 84] [Insane Limits] ERROR: 2 errors compiling Code
[14:37:23 84] [Insane Limits] ERROR: (CS1026, line: 32, column: 109):  ) expected
[14:37:23 84] [Insane Limits] ERROR: (CS1026, line: 32, column: 109):  ) expected
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Gazovik83*:

 

@gazovik83

ups, copy paste mistake...

try it again, post 19: myrcon.net/...insane-limits-clan-tag-protector#entry49615

sorry that is not posted immediately. I removed the two quotes and code works

 

Code:

// Clan Tag Protector
//
String msg = "Only clan members are permitted to wear the " + player.Tag + " clan tags in this server!";
String logMsg = "^b^0Tag Protector^n: ^8Kicking " + player.Name + " for wearing our clan tags!^0";

if (!plugin.isInList(player.Name, "clan_members") && plugin.isInList(player.Tag, "clan_tags"))
{
    // Remove the //'s from the start of the following lines for logging
    //plugin.ConsoleWrite(logMsg);
    //plugin.PRoConChat(logMsg);
    //plugin.PRoConEvent("Kicked " + player.Name + " for wearing our clan tags!", "Insane Limits");
    plugin.KickPlayerWithMessage(player.Name, msg);
}

return false;
Thanks for the help!!!

 

 

upd: It would be great if you could specify a simple regular expression. because very many spellings have to indicate in the list)))

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

Originally Posted by Gazovik83*:

 

set in Isane Limits > Main Settings > "use_white_list" to False

I know such an option and it is not suitable. Whitelist need for other limits. I beg to suggest that add to your code to limit ignored basic white list
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by maxdralle*:

 

I know such an option and it is not suitable. Whitelist need for other limits. I beg to suggest that add to your code to limit ignored basic white list

Code:
// Clan Tag Protector

String msg = "Only clan members are permitted to wear the " + player.Tag + " clan tags in this server!";
String logMsg = "^b^0Tag Protector^n: ^8Kicking " + player.Name + " for wearing our clan tags!^0";

//check playername in clan member list
if (plugin.isInList(player.Name, "clan_members")) {return false;}

if (plugin.isInList(player.Tag, "clan_tags")) {
	// Remove the //'s from the start of the following lines for logging
	//plugin.ConsoleWrite(logMsg);
	//plugin.PRoConChat(logMsg);
	//plugin.PRoConEvent("Kicked " + player.Name + " for wearing our clan tags!", "Insane Limits");
	plugin.KickPlayerWithMessage(player.Name, msg);
}
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Gazovik83*:

 

Code:

// Clan Tag Protector

String msg = "Only clan members are permitted to wear the " + player.Tag + " clan tags in this server!";
String logMsg = "^b^0Tag Protector^n: ^8Kicking " + player.Name + " for wearing our clan tags!^0";

//check playername in clan member list
if (plugin.isInList(player.Name, "clan_members")) {return false;}

if (plugin.isInList(player.Tag, "clan_tags")) {
	// Remove the //'s from the start of the following lines for logging
	//plugin.ConsoleWrite(logMsg);
	//plugin.PRoConChat(logMsg);
	//plugin.PRoConEvent("Kicked " + player.Name + " for wearing our clan tags!", "Insane Limits");
	plugin.KickPlayerWithMessage(player.Name, msg);
}
not work (((

Code:

[20:35:08 27] [Insane Limits] Thread(settings):  Version = 0.9.17.0
[20:36:23 97] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 8 still in queue, took a total of 3 secs
[20:36:26 60] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 7 still in queue, took a total of 3 secs
[20:36:29 44] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 6 still in queue, took a total of 3 secs
[20:36:31 94] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 5 still in queue, took a total of 3 secs
[20:36:34 64] [Insane Limits] Thread(fetch): WARNING: not kicking sangangstar, in white-list
[20:36:34 64] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 4 still in queue, took a total of 3 secs
[20:36:37 24] [Insane Limits] Thread(fetch): WARNING: not kicking lllGAZGAZlll, in white-list
[20:36:37 24] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 3 still in queue, took a total of 3 secs
[20:36:40 01] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 2 still in queue, took a total of 3 secs
[20:36:42 87] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 1 still in queue, took a total of 3 secs
[20:36:45 54] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 0 still in queue, took a total of 3 secs...
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by maxdralle*:

 

not work (((

Code:

[20:35:08 27] [Insane Limits] Thread(settings):  Version = 0.9.17.0
[20:36:23 97] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 8 still in queue, took a total of 3 secs
[20:36:26 60] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 7 still in queue, took a total of 3 secs
[20:36:29 44] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 6 still in queue, took a total of 3 secs
[20:36:31 94] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 5 still in queue, took a total of 3 secs
[20:36:34 64] [Insane Limits] Thread(fetch): WARNING: not kicking sangangstar, in white-list
[20:36:34 64] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 4 still in queue, took a total of 3 secs
[20:36:37 24] [Insane Limits] Thread(fetch): WARNING: not kicking lllGAZGAZlll, in white-list
[20:36:37 24] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 3 still in queue, took a total of 3 secs
[20:36:40 01] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 2 still in queue, took a total of 3 secs
[20:36:42 87] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 1 still in queue, took a total of 3 secs
[20:36:45 54] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 0 still in queue, took a total of 3 secs...
jaaaa, because you use the insane limit whitelist. i said already, you have to change it...

 

il_whitelist.png

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

Originally Posted by Gazovik83*:

 

jaaaa, because you use the insane limit whitelist. i said already, you have to change it...

 

il_whitelist.png

I understood about what you say, but I need this whitelist for the normal work of the other limits specified under numerals on picture

 

img-2016-12-31-22-04-31.png

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

Originally Posted by maxdralle*:

 

@Gazovik83

 

then add your own whitelist check in your 3 limits. check if the playername stay in a special costum list or in the reserved slot list...

 

put the code from your 3 limits in the forum and we can take a look...

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

Archived

This topic is now archived and is closed to further replies.



  • Our picks

    • Game Server Hosting:

      We're happy to announce that EZRCON will branch out into the game server provider scene. This is a big step for us so please having patience if something doesn't go right in this area. Now, what makes us different compared to other providers? Well, we're going with the idea of having a scaleable server hosting and providing more control in how you set up your server. For example, in Minecraft, you have the ability to control how many CPU cores you wish your server to have access to, how much RAM you want to use, how much disk space you want to use. This type of control can't be offered in a single service package so you're able to configure a custom package the way you want it.

      You can see all the available games here. Currently, we have the following games available.

      Valheim (From $1.50 USD)


      Rust (From $3.20 USD)


      Minecraft (Basic) (From $4.00 USD)


      Call of Duty 4X (From $7.00 USD)


      OpenTTD (From $4.00 USD)


      Squad (From $9.00 USD)


      Insurgency: Sandstorm (From $6.40 USD)


      Changes to US-East:

      Starting in January 2022, we will be moving to a different provider that has better support, better infrastructure, and better connectivity. We've noticed that the connection/routes to this location are not ideal and it's been hard getting support to correct this. Our contract for our two servers ends in March/April respectively. If you currently have servers in this location you will be migrated over to the new provider. We'll have more details when the time comes closer to January. The new location for this change will be based out of Atlanta, GA. If you have any questions/concerns please open a ticket and we'll do our best to answer them.
      • 5 replies
    • Hello All,

      I wanted to give an update to how EZRCON is doing. As of today we have 56 active customers using the services offered. I'm glad its doing so well and it hasn't been 1 year yet. To those that have services with EZRCON, I hope the service is doing well and if not please let us know so that we can improve it where possible. We've done quite a few changes behind the scenes to improve the performance hopefully. 

      We'll be launching a new location for hosting procon layers in either Los Angeles, USA or Chicago, IL. Still being decided on where the placement should be but these two locations are not set in stone yet. We would like to get feedback on where we should have a new location for hosting the Procon Layers, which you can do by replying to this topic. A poll will be created where people can vote on which location they would like to see.

      We're also looking for some suggestions on what else you would like to see for hosting provider options. So please let us know your thoughts on this matter.
      • 4 replies
    • Added ability to disable the new API check for player country info


      Updated GeoIP database file


      Removed usage sending stats


      Added EZRCON ad banner



      If you are upgrading then you may need to add these two lines to your existing installation in the file procon.cfg. To enable these options just change False to True.

      procon.private.options.UseGeoIpFileOnly False
      procon.private.options.BlockRssFeedNews False



       
      • 2 replies
    • I wanted I let you know that I am starting to build out the foundation for the hosting services that I talked about here. The pricing model I was originally going for wasn't going to be suitable for how I want to build it. So instead I decided to offer each service as it's own product instead of a package deal. In the future, hopefully, I will be able to do this and offer discounts to those that choose it.

      Here is how the pricing is laid out for each service as well as information about each. This is as of 7/12/2020.

      Single MySQL database (up to 30 GB) is $10 USD per month.



      If you go over the 30 GB usage for the database then each additional gigabyte is charged at $0.10 USD each billing cycle. If you're under 30GB you don't need to worry about this.


      Databases are replicated across 3 zones (regions) for redundancy. One (1) on the east coast of the USA, One (1) in Frankfurt, and One (1) in Singapore. Depending on the demand, this would grow to more regions.


      Databases will also be backed up daily and retained for 7 days.




      Procon Layer will be $2 USD per month.


      Each layer will only allow one (1) game server connection. The reason behind this is for performance.


      Each layer will also come with all available plugins installed by default. This is to help facilitate faster deployments and get you up and running quickly.


      Each layer will automatically restart if Procon crashes. 


      Each layer will also automatically restart daily at midnight to make sure it stays in tip-top shape.


      Custom plugins can be installed by submitting a support ticket.




      Battlefield Admin Control Panel (BFACP) will be $5 USD per month


      As I am still working on building version 3 of the software, I will be installing the last version I did. Once I complete version 3 it will automatically be upgraded for you.





      All these services will be managed by me so you don't have to worry about the technical side of things to get up and going.

      If you would like to see how much it would cost for the services, I made a calculator that you can use. It can be found here https://ezrcon.com/calculator.html

       
      • 11 replies
    • I have pushed out a new minor release which updates the geodata pull (flags in the playerlisting). This should be way more accurate now. As always, please let me know if any problems show up.

       
      • 9 replies
×
×
  • 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.