Jump to content

Insane Limits - Examples


Recommended Posts

Originally Posted by Rucki*:

 

If the player moved to the losing team, he gets a cheer. If the player moved to the losing team he's moved back.

I think, here is one "losing team" to much. :ohmy:

 

What happens, if a player is moved at

 

Thx!

Rucki

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

Originally Posted by HexaCanon*:

 

post link*

 

typo

If the player moved to the losing team he's moved back.

winning team ?

 

 

edit : sorry did not see rucki post

 

 

and i believe that it should not move player back if team1 = team2 so that it does not interfere with insane balancer plugin

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

Originally Posted by QUACK-Major-Pain*:

 

I wanted to get an idea of what others are using for settings, for myself and for others, so I created some polls based on KDR, Accuracy, SPM, KPM, and Skill on our forum.

 

http://aaquacks.com/forum/index.php/...-limits-polls/

 

Unfortunately it doesn't allow guest voting, so to vote you need to register, but I hope you all take the time to vote on your settings as close to the available values as you can and hopefully we can see a common trend in settings that we can share with each other and provide new users to the plugin to give them somewhere to start off.

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

Originally Posted by axRhino*:

 

I could use some help with a script for insane limits

 

We play Squad Deathmatch and hate the light vehicle. We would turn it off but that messes with our server being hardcore...and then no one can find us.

 

So the script I am trying to write would kill the tank driver after he makes a kill with the tank. Then it would explain the event to the player that was smited. I have been trying to script it myself but I am no coder.

 

 

Currently we have the no vehicle rule explained in our spambot but I have to manually find the vehicle driver/ kill him/ then type in an explanation.

 

Any help would be much appreciated.

 

Thanks

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

Originally Posted by micovery*:

 

I think, here is one "losing team" to much. :ohmy:

Yes, copy-paste fail, but I hope you get the idea :-). Going to winning team after when the game is about to end ( X % tickets remaining) will trigger the limit, and you will be moved back.

 

What happens, if a player is moved at

i

Nothing happens, or at least nothing should happen. The OnTeamChange event should only trigger when player moves himself ... admin moves are be ignored (even If coming from another plugin).

 

I could use some help with a script for insane limits

 

We play Squad Deathmatch and hate the light vehicle. We would turn it off but that messes with our server being hardcore...and then no one can find us.

 

So the script I am trying to write would kill the tank driver after he makes a kill with the tank. Then it would explain the event to the player that was smited. I have been trying to script it myself but I am no coder.

 

 

Currently we have the no vehicle rule explained in our spambot but I have to manually find the vehicle driver/ kill him/ then type in an explanation.

 

Any help would be much appreciated.

 

Thanks

There is no safe way of automating this ... tank kills are reported simply as Death by the game, so if you made a limit to auto-punish those players, it would also punish them for other weapons that are reported as Death as well. (e.g. Mortars).
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

the 1 thing i cant find is a way to do a bf2 like msgs...

 

300 Line 1

0 Line 2

0 Line 3

0 Line 4

300 Line 1

0 Line 2

0 Line 3

0 Line 4

300 Line 1

0 Line 2

0 Line 3

0 Line 4

300 Line 1

0 Line 2

0 Line 3

0 Line 4

What do 300 and 0 mean? You mean, every 5 minutes do Line 1, and then immediately do Line 2, then 3, then 4? That can easily be done with pb_sv_task and I'd guess that's how it was done in BF2.

 

pb_sv_task 0 300 admin.say "Line 1"

pb_sv_task 1 300 admin.say "Line 2"

pb_sv_task 1 300 admin.say "Line 3"

pb_sv_task 1 300 admin.say "Line 4"

 

You can make the 1 be 0, but to be absolutely sure that Line 2 doesn't come before Line 1, make it 1. 1 second is not a lot of time in a chat window. And again, I think 300 (5 minutes) is too spammy, you'll get complaints.

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

Originally Posted by WaxMyCarrot*:

 

No, I need InsaneLimits.dump, not DEBUG.txt. Anyway, I don't think that file will help much. The important thing is identify which limit is raising those exceptions. (I think it's your Kill-Streak limit). In next version, I am adding information to be able to identify which limit causes a dump.

Here is the dump file..

 

http://dl.dropbox.com/u/27936758/Stu...aneLimits.dump

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

Originally Posted by micovery*:

 

This helps, the problem is with your Limit #3, on the second_check

 

Code:

Version: InsaneLimits 0.0.0.6
Date: 1/15/2012 4:24:06 AM
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.

Stack Trace: 
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at PRoConEvents.[b]LimitEvaluator3.SecondCheck[/b](PlayerInfoInterface player, PlayerInfoInterface killer, KillInfoInterface kill, PlayerInfoInterface victim, ServerInfoInterface server, PluginInterface plugin, TeamInfoInterface team1, TeamInfoInterface team2, TeamInfoInterface team3, TeamInfoInterface team4, LimitInfoInterface limit)

MSIL Stack Trace:
    Void ThrowKeyNotFoundException(), IL: 0x5
    TValue get_Item(TKey), IL: 0x0
    Boolean SecondCheck(PRoConEvents.PlayerInfoInterface, PRoConEvents.PlayerInfoInterface, PRoConEvents.KillInfoInterface, PRoConEvents.PlayerInfoInterface, PRoConEvents.ServerInfoInterface, PRoConEvents.PluginInterface, PRoConEvents.TeamInfoInterface, PRoConEvents.TeamInfoInterface, PRoConEvents.TeamInfoInterface, PRoConEvents.TeamInfoInterface, PRoConEvents.LimitInfoInterface), IL: 0x174
Paste the code of your Limit #3 second_check maybe we can what's wrong with it.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by WaxMyCarrot*:

 

This helps, the problem is with your Limit #3, on the second_check

 

Code:

Version: InsaneLimits 0.0.0.6
Date: 1/15/2012 4:24:06 AM
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.

Stack Trace: 
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at PRoConEvents.[b]LimitEvaluator3.SecondCheck[/b](PlayerInfoInterface player, PlayerInfoInterface killer, KillInfoInterface kill, PlayerInfoInterface victim, ServerInfoInterface server, PluginInterface plugin, TeamInfoInterface team1, TeamInfoInterface team2, TeamInfoInterface team3, TeamInfoInterface team4, LimitInfoInterface limit)

MSIL Stack Trace:
    Void ThrowKeyNotFoundException(), IL: 0x5
    TValue get_Item(TKey), IL: 0x0
    Boolean SecondCheck(PRoConEvents.PlayerInfoInterface, PRoConEvents.PlayerInfoInterface, PRoConEvents.KillInfoInterface, PRoConEvents.PlayerInfoInterface, PRoConEvents.ServerInfoInterface, PRoConEvents.PluginInterface, PRoConEvents.TeamInfoInterface, PRoConEvents.TeamInfoInterface, PRoConEvents.TeamInfoInterface, PRoConEvents.TeamInfoInterface, PRoConEvents.LimitInfoInterface), IL: 0x174
Paste the code of your Limit #3 second_check maybe we can what's wrong with it.
:sad: I just updated that limit with the new Unreal Code you posted.. so it may be fixed now. lol. I will let you know if it continues to throw Exceptions Error with the new code.

 

Here is the current new code to verify if it is correct.

 

FYI.. I only changed the code from this line down.. so the 1st part is still the same.: List vkeys = new List(vmessage.Keys);

 

 

Code:

Dictionary<int, String> kmessage = new Dictionary<int, String>();
	kmessage.Add(5, "%p_n% is on a KILLING-SPREE! (%r_x% kills!)");
	kmessage.Add(7, "%p_n% is on a RAMPAGE! (%r_x% kills!)");
	kmessage.Add(10, "%p_n%  is DOMINATING! (%r_x% kills!)");
	kmessage.Add(15, "%p_n% is UNSTOPPABLE (%r_x% kills!)");
	kmessage.Add(20, "%p_n%  is GODLIKE! (%r_x% kills!)");
	kmessage.Add(25, "%p_n%  is LEGENDARY! (%r_x% kills!)");
	
	Dictionary<int, String> vmessage = new Dictionary<int, String>();
	vmessage.Add(5, "%k_n% ended %v_n%'s killing spree with the %w_n%!");
	vmessage.Add(7, "%k_n% ended %v_n%'s rampage with the %w_n%!");
	vmessage.Add(10, "%k_n% ended %v_n%'s domination with the %w_n%!");
	vmessage.Add(15, "%k_n% ended %v_n%'s unstoppable kill streak with the %w_n%!");
	vmessage.Add(20, "%k_n% ended %v_n%'s godlike kill streak with the %w_n%!");
	vmessage.Add(25, "%k_n% ended %v_n%'s legendary kill streak with the %w_n%!");

	List<int> vkeys = new List<int>(vmessage.Keys);
    List<int> kkeys = new List<int>(kmessage.Keys);

    vkeys.Sort(delegate(int left, int right) { return left.CompareTo(right)*-1; });
    kkeys.Sort(delegate(int left, int right) { return left.CompareTo(right)*-1; });

    int kcount = (int) limit.Spree(player.Name);
    int vcount = (limit.RoundData.issetInt(victim.Name))_ limit.RoundData.getInt(victim.Name): 0;
    
    for(int i = 0; i < vkeys.Count; i++)
        if (vcount >= vkeys[i])
        {   vcount = vkeys[i];

            String message = plugin.R(vmessage[vcount]);
            plugin.ConsoleWrite(message);
            plugin.SendGlobalMessage(message);
            limit.RoundData.unsetInt(victim.Name);
            break;
        }

    for(int i = 0; i < kkeys.Count; i++)
        if (kcount == kkeys[i])
        {
            String message = plugin.R(kmessage[kcount]);
            plugin.ConsoleWrite(message);
            plugin.SendGlobalMessage(message);
            limit.RoundData.setInt(killer.Name, kcount);
            break;
        }
    
    return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by micovery*:

 

May the Anti-Stack Winning Team have issues with insane balancer?

Thank you!

I have not tested them together, but I think they should not interfere with each other. The Anti-Stack limit should only be activated when player's switch themselves from In-Game. It should not trigger with admin moves.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Phil_K*:

 

Hi.

 

/* find which team is losing */

TeamInfoInterface loseTeam = ( team1.Tickets > team2.Tickets)? team2:team1;

Note that the winning team is not necessarily the team with remaining tickets. This depends on the running gamemode! If you play for example Wake on Assault64 it is possible that tickets for RU run out but as long as US do not hold all flags they will lose.

 

Greets

Phil.

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

Originally Posted by Phil_K*:

 

Hi.

 

If I want to limit the amount of Mortars are on (and only on) Seinne Crossing, which limiter would I use? Does one exist?

It is not possible because BF3 does not give weapons/addon information in the OnSpawn event and kills with a motar are summed up as DEATH along with vehicle kills and some other sources.

 

Greets

Phil.

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

Originally Posted by C-4-N*:

 

I create expression to kick high KDR

but to dont kick new player in game who could have big KDR by a 1st match

 

i would like use a condition kick with this

 

( player.Kdr > 15 )

 

only if player is ( player.Rank > 10 )

 

just to be sure it's good , it's must be like that

 

Code:

( player.Kdr > 15 && player.Rank > 10 )
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by sp37zn4z*:

 

!voteban and !votekick is buggy.

 

if i type !voteban a;lgka;slgka;skdg;alsgk;adklsg (a nonexisting player) the systems picks random players to ban, as well as with !votekick.

 

thanks

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

Originally Posted by Mootart*:

 

after applying this i got this erro

 

This limit detects when a player has no Battlelog account. Each time the player spawns, it warns him that he will be kicked. It tells him how much time he has left. After five minutes expires, the player is kicked.

 

Set limit to evaluate OnSpawn, and action to None

 

Set first_check to this Expression

 

Code:

player.Battlelog404 == true
Set second_check to this Code

 

Code:

int minutes = 5;
      TimeSpan remain = TimeSpan.FromMinutes(5).Subtract(DateTime.Now.Subtract(player.JoinTime));
      
      if ( remain.TotalSeconds > 0 )
          plugin.SendSquadMessage(player.TeamId, player.SquadId, plugin.R("player.Name looks like you don't have a Battlelog account. You have " + plugin.FriendlySpan(remain) + " before being kicked"));
      else
      {
          plugin.SendGlobalMessage(plugin.R("player.Name was kicked for not having a Battlelog account"));
          plugin.KickPlayerWithMessage(player.Name, plugin.R("player.Name, you were kicked for not having a Battelog account"));
      }
      return false;

19:47:11 01] [insane Limits] ERROR: 2 errors compiling Expression

[19:47:11 01] [insane Limits] ERROR: (CS0117, line: 20, column: 30): 'PRoConEvents.PlayerInfoInterface' does not contain a definition for 'Battlelog404'

[19:47:11 01] [insane Limits] ERROR: (CS0117, line: 37, column: 167): 'PRoConEvents.PluginInterface' does not contain a definition for 'FriendlySpan'

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

Originally Posted by Mootart*:

 

This limit allows players to use In-Game command "!votekick ". Players can vote as many times they want, and against as many players they want. The are no time or concurrency restrictions. However, votes are only counted once (you can only vote once against a certain player). If any player accumulates votes from more than 50% of all players in the server, that player is kicked. All votes are reset at the end of a round. The player name does not have to be a full-name. It can be a sub-string or misspelled name.

 

Set limit to evaluate OnAnyChat, set action to None

 

Set first_check to this Code

Code:

double percent = 50;

/* Verify that it is a command */
if (!plugin.IsInGameCommand(player.LastChat))
    return false;

/* Extract the command */
String command = plugin.ExtractInGameCommand(player.LastChat);

/* Sanity check the command */
if (command.Length == 0)
    return false;
    
/* Parse the command */
Match kickMatch = Regex.Match(command, @"^votekick\s+([^ ]+)", RegexOptions.IgnoreCase);

/* Bail out if not a vote-kick */
if (!kickMatch.Success)
    return false;
    
/* Extract the player name */
PlayerInfoInterface target = plugin.GetPlayer(kickMatch.Groups[1].Value.Trim());

if (target == null)
    return false;
    
if (target.Name.Equals(player.Name))
{
    plugin.SendSquadMessage(player.TeamId, player.SquadId, plugin.R("player.Name, you cannot vote-kick yourself!"));
    return false;
}
    
/* Account the vote in the voter's dictionary */
/* Votes are kept with the voter, not the votee */
/* If the voter leaves, his votes are not counted */

if (!player.DataRound.issetObject("votekick"))
    player.DataRound.setObject("votekick", new Dictionary<String, bool>());

Dictionary<String, bool> vdict =  (Dictionary<String, bool>) player.DataRound.getObject("votekick");

if (!vdict.ContainsKey(target.Name))
    vdict.Add(target.Name, true);


/* Tally the votes against the target player */
double votes = 0;
List<PlayerInfoInterface> all = new List<PlayerInfoInterface>();
all.AddRange(team1.players);
all.AddRange(team2.players);
all.AddRange(team3.players);
all.AddRange(team4.players);

foreach(PlayerInfoInterface p in all)
    if (p.DataRound.issetObject("votekick"))
    {
       Dictionary<String, bool> pvotes = (Dictionary<String, bool>) p.DataRound.getObject("votekick");
       if (pvotes.ContainsKey(target.Name) && pvotes[target.Name])
           votes++;
    }

if (all.Count == 0)
    return false;
    
int needed = (int) Math.Ceiling((double) all.Count * (percent/100.0));
int remain = (int) ( needed - votes);

if (remain == 1)
   plugin.SendGlobalMessage(target.Name + " is about to get vote-kicked, 1 more vote needed");
else if (remain > 0)
   plugin.SendSquadMessage(player.TeamId, player.SquadId, plugin.R("player.Name, your vote against " + target.Name + " was counted, " + remain + " more needed to kick"));

if (remain > 0)
    plugin.ConsoleWrite(player.Name + ", is trying to vote-kick " + target.Name + ", " + remain + " more votes needed");

if (votes >= needed)
{
    String count = "with " + votes + " vote" + ((votes > 1)_"s":"");
    String message = target.Name + " was vote-kicked " + count ;
    plugin.SendGlobalMessage(message);
    plugin.ConsoleWrite(message);
    plugin.KickPlayerWithMessage(target.Name, target.Name + ", you were vote-kicked from the server " + count);
    return true;
}

return false;
After Applying this rule got this error..

 

 

 

[19:58:45 74] [insane Limits] ERROR: 8 errors compiling Code

[19:58:45 74] [insane Limits] ERROR: (CS0117, line: 23, column: 25): 'PRoConEvents.PluginInterface' does not contain a definition for 'IsInGameCommand'

[19:58:45 74] [insane Limits] ERROR: (CS0117, line: 27, column: 37): 'PRoConEvents.PluginInterface' does not contain a definition for 'ExtractInGameCommand'

[19:58:45 74] [insane Limits] ERROR: (CS0117, line: 41, column: 49): 'PRoConEvents.PluginInterface' does not contain a definition for 'GetPlayer'

[19:58:45 74] [insane Limits] ERROR: (CS0117, line: 56, column: 25): 'PRoConEvents.PlayerInfoInterface' does not contain a definition for 'DataRound'

[19:58:45 74] [insane Limits] ERROR: (CS0117, line: 57, column: 24): 'PRoConEvents.PlayerInfoInterface' does not contain a definition for 'DataRound'

[19:58:45 74] [insane Limits] ERROR: (CS0117, line: 59, column: 81): 'PRoConEvents.PlayerInfoInterface' does not contain a definition for 'DataRound'

[19:58:45 74] [insane Limits] ERROR: (CS0117, line: 74, column: 23): 'PRoConEvents.PlayerInfoInterface' does not contain a definition for 'DataRound'

[19:58:45 74] [insane Limits] ERROR: (CS0117, line: 76, column: 83): 'PRoConEvents.PlayerInfoInterface' does not contain a definition for 'DataRound'

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

Originally Posted by WebRat*:

 

This limit detects when a player has no Battlelog account. Each time the player spawns, it warns him that he will be kicked. It tells him how much time he has left. After five minutes expires, the player is kicked.

 

Set limit to evaluate OnSpawn, and action to None

 

Set first_check to this Expression

 

Code:

player.Battlelog404 == true
Set second_check to this Code

 

Code:

int minutes = 5;
      TimeSpan remain = TimeSpan.FromMinutes(5).Subtract(DateTime.Now.Subtract(player.JoinTime));
      
      if ( remain.TotalSeconds > 0 )
          plugin.SendSquadMessage(player.TeamId, player.SquadId, plugin.R("player.Name looks like you don't have a Battlelog account. You have " + plugin.FriendlySpan(remain) + " before being kicked"));
      else
      {
          plugin.SendGlobalMessage(plugin.R("player.Name was kicked for not having a Battlelog account"));
          plugin.KickPlayerWithMessage(player.Name, plugin.R("player.Name, you were kicked for not having a Battelog account"));
      }
      return false;
I didn't know that you could join a server without a Battlelog account.

Is this part of a hack to play BF3 without logging in?

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

Originally Posted by PhaxeNor*:

 

I didn't know that you could join a server without a Battlelog account.

Is this part of a hack to play BF3 without logging in?

You still have a Battlelog account, but there are some people you don't find at all on Battlelog with the current ingame name. (Aka 404/Page Not Found)

Would be stupid of DICE not to validate the players when joining servers :P

 

But you can use Origin ID Changer (Soldier name change) to get the 404 page but still have the Old name ingame. (Since it takes time before all the data is updated)

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

Originally Posted by Phil_K*:

 

Hi.

 

As some cheaters have reached their ranks spending playing only for a short time i'm thinking about if a limit setting time spend playing and rank into some relation might be a good idea for preventing them to enter the server?

 

Greets

Phil.

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

Originally Posted by micovery*:

 

Hi.

 

As some cheaters have reached their ranks spending playing only for a short time i'm thinking about if a limit setting time spend playing and rank into some relation might be a good idea for preventing them to enter the server?

 

Greets

Phil.

Time spent leveling between ranks, is that what you mean? Is this info available in Battlelog?

 

Note that the winning team is not necessarily the team with remaining tickets. This depends on the running gamemode! If you play for example Wake on Assault64 it is possible that tickets for RU run out but as long as US do not hold all flags they will lose.

Bah, thanks for letting me know ... I'll add a note to the example saying it would not work as expected for Assault64. (Also for rush ... it would not work since the defenders always have a huge number of tickets ... it would not let anyone switch to the attackers defenders side)

 

 

after applying this i got this erro

19:47:11 01] [insane Limits] ERROR: 2 errors compiling Expression

[19:47:11 01] [insane Limits] ERROR: (CS0117, line: 20, column: 30): 'PRoConEvents.PlayerInfoInterface' does not contain a definition for 'Battlelog404'

[19:47:11 01] [insane Limits] ERROR: (CS0117, line: 37, column: 167): 'PRoConEvents.PluginInterface' does not contain a definition for 'FriendlySpan'

Those new examples that are giving you error are for 0.0.0.7. From now on, I'll start adding reference to the examples when they were introduced. e.g +0.0.0.7 ... means it would work with 0.0.0.7 or higher.

 

!voteban and !votekick is buggy.

 

if i type !voteban a;lgka;slgka;skdg;alsgk;adklsg (a nonexisting player) the systems picks random players to ban, as well as with !votekick.

 

thanks

The "best-match" algorithm is pretty lax ... Garbage-in, Garbage-out ... for anything there is always a best match ... (does not mean is a good match ... the edit distance is huge).

 

Having said that, someone else reported a problem with name-matching on a specific example .

 

Code:

|3ull     <- actual-name
Bull      <- input
R4v3n-CL  <- output
Which looks more like a bug. I asked him for the full list of players names that were on at that time.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Rucki*:

 

Hi,

 

Bah, thanks for letting me know ... I'll add a note to the example saying it would not work as expected for Assault64. (Also for rush ... it would not work since the defenders always have a huge number of tickets ... it would not let anyone switch to the attackers side)

would be nice to change the code for

if Conquest

 

Thanks!

Rucki

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

Originally Posted by droopie*:

 

This limit detects when a player has no Battlelog account. Each time the player spawns, it warns him that he will be kicked. It tells him how much time he has left. After five minutes expires, the player is kicked.

 

Set limit to evaluate OnSpawn, and action to None

 

Set first_check to this Expression

 

Code:

player.Battlelog404 == true
Set second_check to this Code

 

Code:

int minutes = 5;
      TimeSpan remain = TimeSpan.FromMinutes(5).Subtract(DateTime.Now.Subtract(player.JoinTime));
      
      if ( remain.TotalSeconds > 0 )
          plugin.SendSquadMessage(player.TeamId, player.SquadId, plugin.R("player.Name looks like you don't have a Battlelog account. You have " + plugin.FriendlySpan(remain) + " before being kicked"));
      else
      {
          plugin.SendGlobalMessage(plugin.R("player.Name was kicked for not having a Battlelog account"));
          plugin.KickPlayerWithMessage(player.Name, plugin.R("player.Name, you were kicked for not having a Battelog account"));
      }
      return false;
is this good to enable to detect if a player is hacking? never heard of players with no battlelog accounts...
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PhaxeNor*:

 

Hi.

As some cheaters have reached their ranks spending playing only for a short time i'm thinking about if a limit setting time spend playing and rank into some relation might be a good idea for preventing them to enter the server?

 

Greets

 

Phil.

Time spent leveling between ranks, is that what you mean? Is this info available in Battlelog?
Think he means total hours played vs rank.


 

Played Time VS Rank Check

This will check if a player have played less than set value and have a higher rank than set value.

 

Set Evaluation to OnJoin and action to None

 

first_check to CodeCode:

// 10 Hours played time.
if(player.Time < 36000 && player.Rank > 45) {
    plugin.KickPlayerWithMessage(player.Name, "Rank up fast do we_");
    return true;
}

// 300 Hours Played Time.
if(player.Time < 1080000 && player.Rank == 145) {
    plugin.KickPlayerWithMessage(player.Name, "Rank 145 in less than 300 hours_");
    return true;
}
    
return false;
Just beware that I have not check out these times, I just based it around what I have seen on the leaderboard.

Shouldn't take too long before there is set a good time and rank I guess :smile:

 

 


is this good to enable to detect if a player is hacking? never heard of players with no battlelog accounts...

404 on Battlelog could also just mean they have just changed name. In most cases it could be a cheater, but it could also be a legit player.

Look at some of the cheaters that have been banned already and check how many names they have used. Most of them will have more than 4-6 names on the list.

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

Originally Posted by PhaxeNor*:

 

When creating a limit including player.Time, does Time value need to be in hours, seconds or minutes. It seems the plugin retrieves hours played in seconds, or am i wrong?

To be honest I have no idea. will have to check it out.

 

Edit, ofc hehe, what a hospital visit can do to you :P Anyway change the example above to have seconds.

* 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.




  • 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.