Jump to content

Insane Limits (0.9.17.0 - 30-MAR-2015) + BFHL


ImportBot

Recommended Posts

Originally Posted by PapaCharlie9*:

 

on round over, server.NextGamemode will be for the round that is going to start or the one after it ?

It depends. The setting is updated whenever a response from mapList.getMapIndices is received. Since any plugin can send that command, the timing is more or less random. Of course, it only changes once the game server changes it, but I'm not sure exactly when that happens, probably no later than the server.onLevelLoaded event.

 

This means that it is possible for the next map/mode to load and be running, but NextGamemode will still have the previous mode, because no one has sent a mapList.getMapIndices yet.

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

Originally Posted by HexaCanon*:

 

It depends. The setting is updated whenever a response from mapList.getMapIndices is received. Since any plugin can send that command, the timing is more or less random. Of course, it only changes once the game server changes it, but I'm not sure exactly when that happens, probably no later than the server.onLevelLoaded event.

 

This means that it is possible for the next map/mode to load and be running, but NextGamemode will still have the previous mode, because no one has sent a mapList.getMapIndices yet.

you have any tricks ?

 

i am running a code like this

 

Code:

if (server.NextGamemode == "RushLarge0") {
		int gameModeCounter = 110; // Change this to anything between 75 and 400 inclusive
		if (server.PlayerCount < 25) gameModeCounter = 100;
		if (server.PlayerCount < 17) gameModeCounter = 90;
		if (server.PlayerCount < 10) gameModeCounter = 75;
		plugin.ConsoleWrite("^2next game mode is " + server.NextGamemode + ".");
		plugin.ConsoleWrite("^2player count is " + server.PlayerCount + ".");
		plugin.ConsoleWrite("^2Setting vars.gameModeCounter to " + gameModeCounter + ".");
		plugin.ServerCommand("vars.gameModeCounter", gameModeCounter.ToString());
		plugin.ConsoleWrite("^2Preset is now ^bCustom^n");
		return false;
	} if (server.NextGamemode == "ConquestSmall0") {
		int gameModeCounter = 200; // Change this to anything between 75 and 400 inclusive
		if (server.PlayerCount < 25) gameModeCounter = 175;
		if (server.PlayerCount < 17) gameModeCounter = 150;
		if (server.PlayerCount < 10) gameModeCounter = 100;
		plugin.ConsoleWrite("^2next game mode is " + server.NextGamemode + ".");
		plugin.ConsoleWrite("^2player count is " + server.PlayerCount + ".");
		plugin.ConsoleWrite("^2Setting vars.gameModeCounter to " + gameModeCounter + ".");
		plugin.ServerCommand("vars.gameModeCounter", gameModeCounter.ToString());
		plugin.ConsoleWrite("^2Preset is now ^bCustom^n");
		return false;
	} if (server.NextGamemode == "Obliteration") {
		int gameModeCounter = 100; // Change this to anything between 75 and 400 inclusive
		if (server.PlayerCount < 10) gameModeCounter = 65;
		plugin.ConsoleWrite("^2next game mode is " + server.NextGamemode + ".");
		plugin.ConsoleWrite("^2player count is " + server.PlayerCount + ".");
		plugin.ConsoleWrite("^2Setting vars.gameModeCounter to " + gameModeCounter + ".");
		plugin.ServerCommand("vars.gameModeCounter", gameModeCounter.ToString());
		plugin.ConsoleWrite("^2Preset is now ^bCustom^n");
		return false;
}
Edit: i also run votemap plugin which will add to the confusion.

 

Edit 2: fixed by sending maplist command before checking what is next mode, avoids any votemap produced issue.

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

Originally Posted by angeldark182*:

 

Hi Papa have a question on you . Have now use insane limits but is not work on me .

 

insaneLimits ERROR unable to dump information to file.

[insane Limits] Thread(activator): EXCEPTION: : System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

 

 

plugin is not run on sandbox ec what i m make wrong ?

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

Originally Posted by PapaCharlie9*:

 

Hi Papa have a question on you . Have now use insane limits but is not work on me .

 

insaneLimits ERROR unable to dump information to file.

[insane Limits] Thread(activator): EXCEPTION: : System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

 

 

plugin is not run on sandbox ec what i m make wrong ?

There are two problems.

 

1) "unable to dump information to file" means that Procon cannot write a file into the procon folder. This may be because you do not have write permission on your Procon installation or your disk is full. Check your installation of Procon to make sure it can write files into the procon folder.

 

2) The exception is because of a known issue with Twitter. You can ignore it, it is harmless.

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

Originally Posted by angeldark182*:

 

There are two problems.

 

1) "unable to dump information to file" means that Procon cannot write a file into the procon folder. This may be because you do not have write permission on your Procon installation or your disk is full. Check your installation of Procon to make sure it can write files into the procon folder.

 

2) The exception is because of a known issue with Twitter. You can ignore it, it is harmless.

Have found out the problem is my hoster Gamed to not accep this same problem why by adcats ,map stats chat logger i hate this but Very thx for your quick recall .
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by supermillhouse*:

 

Batches per 20 seconds, so a lower number is a lower rate.

I have also tried lowering the IL request rate but with no luck, I assumed I only needed to change these two, but in the plugin log the fetches are still every 4 seconds, and yes I have restarted the layer after meddling. :biggrin:

 

Code:

double minSecs = 6.0; //4.0; // min between fetches
                double maxSecs = 12.0;//10.0; // max between fetches
Procon only crashes when I enable direct fetching.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

I have also tried lowering the IL request rate but with no luck, I assumed I only needed to change these two, but in the plugin log the fetches are still every 4 seconds, and yes I have restarted the layer after meddling. :biggrin:

 

Code:

double minSecs = 6.0; //4.0; // min between fetches
                double maxSecs = 12.0;//10.0; // max between fetches
Procon only crashes when I enable direct fetching.
Try the pre-release beta version of Procon, if you can install it on your layer:

 

content.php...n-1-4-2-0-Beta*

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

Originally Posted by PapaCharlie9*:

 

who to protect reserved slots from kick with it

Um, change your server setting for reservedSlotsList.aggressiveJoin to false? You can do that with your server settings, you don't need Insane Limits to do that.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by supermillhouse*:

 

Try the pre-release beta version of Procon, if you can install it on your layer:

 

content.php...n-1-4-2-0-Beta*

Just got this done and hasn't helped, it gets down to maybe 10 players left, locks up, I get back in at it's at 64th player again.

 

procon_1.4.1.6_issue_92_3 on my layer still crashes procon. Enabling stats fetching in insane limits put it in to offline once in my control panel.

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

Originally Posted by hauser1*:

 

Hi

 

Is there a way to control the idl time after the new patch it reset to 300 sec. "KICK IDLE PLAYER AFTER SECONDS 300"

 

i have disable idl kick but its not working i also tryed using Adaptive Server Size not working.

 

So 1 q can you help me with a code for Insane Limits there will fix it?

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

Originally Posted by PapaCharlie9*:

 

Just got this done and hasn't helped, it gets down to maybe 10 players left, locks up, I get back in at it's at 64th player again.

 

procon_1.4.1.6_issue_92_3 on my layer still crashes procon. Enabling stats fetching in insane limits put it in to offline once in my control panel.

Have you tried with Insane Limits set to debug_level 5? I'd like to see the log of a couple of stats fetches around that 10 players left time. Are there web exceptions? Does each fetch take an unusually long time?

 

If all looks normal, I don't know what to tell you. It doesn't make any sense.

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

Originally Posted by PapaCharlie9*:

 

Hi

 

Is there a way to control the idl time after the new patch it reset to 300 sec. "KICK IDLE PLAYER AFTER SECONDS 300"

 

i have disable idl kick but its not working i also tryed using Adaptive Server Size not working.

 

So 1 q can you help me with a code for Insane Limits there will fix it?

If you are asking for a way to increase the idle timeout AND stay in Battlelog as "Normal", it is not currently possible. It's an issue that was reported to DICE and we are hoping they will fix it.

 

If you set your vars.preset to Custom, you can set the idle timeout above 300.

 

You don't need Insane Limits to do any of that, you can do it directly in your server settings.

 

See full discussion here, this is a well known problem: showthread....ver-Seeding!-(*

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

Originally Posted by supermillhouse*:

 

Have you tried with Insane Limits set to debug_level 5? I'd like to see the log of a couple of stats fetches around that 10 players left time. Are there web exceptions? Does each fetch take an unusually long time?

 

If all looks normal, I don't know what to tell you. It doesn't make any sense.

plugin log.zip

 

File starts from a fresh reboot of the layer, stats fetches all players, I disable and re-enable insane limits this time with debug set to 5. Runs fine until 19:49:03. I get disconnected, looks like procon is restarted because of all the compiling, does the same thing at 19:52:54. at 19:54:05 I disable stats fetching and procon continues to work from there on.

 

was wondering what the

 

[19:50:04] Compiling old_InsaneLimits... Exception

[19:50:04] System.TypeLoadException: Could not load type 'PRoConEvents.old_InsaneLimits' from assembly 'old_InsaneLimits, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.

 

is about?

 

Reagrds

Supermillhouse

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

Originally Posted by PapaCharlie9*:

 

plugin log.zip

 

File starts from a fresh reboot of the layer, stats fetches all players, I disable and re-enable insane limits this time with debug set to 5. Runs fine until 19:49:03. I get disconnected, looks like procon is restarted because of all the compiling, does the same thing at 19:52:54. at 19:54:05 I disable stats fetching and procon continues to work from there on.

 

was wondering what the

 

[19:50:04] Compiling old_InsaneLimits... Exception

[19:50:04] System.TypeLoadException: Could not load type 'PRoConEvents.old_InsaneLimits' from assembly 'old_InsaneLimits, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.

 

is about?

 

Reagrds

Supermillhouse

Aha! Maybe it is a Procon bug! What version are you running and what is in the procon/DEBUG.txt file for the same time periods?

 

Also, you have TWO copies of insane limits in your plugins folder. Any file that ends in .cs will be compiled. If you have an older version of Insane Limits you want to keep around but not compile, you have to add old at the end, not a the beginning. Change old_InsaneLimits.cs to InsaneLimits.cs.old.

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

Originally Posted by supermillhouse*:

 

Will ask for the dbg file from fragnet. Version is the beta, 92_3 or something. Will change the old thing, that was fragnet restoring me the plugin.

 

Sent from my GT-N7000 using Tapatalk

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

Originally Posted by Stormar*:

 

This is the problem i have had with multibalancer stopping the procon i have not been able to use it since the last patch just takes it offline untill i remove it..be glad to know if there is a bug in procon that is random.

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

Originally Posted by supermillhouse*:

 

Aha! Maybe it is a Procon bug! What version are you running and what is in the procon/DEBUG.txt file for the same time periods?

 

Also, you have TWO copies of insane limits in your plugins folder. Any file that ends in .cs will be compiled. If you have an older version of Insane Limits you want to keep around but not compile, you have to add old at the end, not a the beginning. Change old_InsaneLimits.cs to InsaneLimits.cs.old.

There is no new entries in DEBUG.TXT for that time or any after and I deleted the old.insanelimits file. If you want to have a look for yourself at procon I can set you up an account for procon, but you don have too. I'm just running out of ideas as half my limits require the clan tag.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

There is no new entries in DEBUG.TXT for that time or any after and I deleted the old.insanelimits file. If you want to have a look for yourself at procon I can set you up an account for procon, but you don have too. I'm just running out of ideas as half my limits require the clan tag.

Wow, that really doesn't make sense. Procon is clearly recompiling plugins and that usually happens after a restart -- and if Procon is crashing, it should have some kind of exception in DEBUG.txt. What is restarting Procon, btw? Are you running it as a Windows service?

 

A couple of other people are reporting similar issues with IL or MB, which use similar Battlelog fetch code, so it probably has something to do with that fetch code interacting with something in Procon to make it crash.

 

If you disable fetching in IL but allow MB to do fetching, does it still crash? Also, did you try disabling each limit one at a time to see if it is a limit causing the problem, rather than IL fetching? Or disable all limit but leave fetching enabled to isolate limits from the problem space?

 

I only have one more idea, as a last resort. You can pull down a copy of the Procon-1 sources and build Procon yourself for debug. Then run it in the debugger. When it crashes, you'll be able to see the stack trace and perhaps learn why it is crashing. You'll have to be able to install and run Visual Studio Express on you layer.

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

Originally Posted by supermillhouse*:

 

I won't be able to run that on the layer. What I will try and do is set up the layer at home and replicate the crashing, it may be fragnets software that is restarting the layer. I will then try to run it in visual studio express, is there a thread here on how to run plugins in visual studio express, having said that is there a thread on how to run procon in visual studio express?

 

 

Sent from my iPad using Tapatalk

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

Originally Posted by PapaCharlie9*:

 

I won't be able to run that on the layer. What I will try and do is set up the layer at home and replicate the crashing, it may be fragnets software that is restarting the layer. I will then try to run it in visual studio express, is there a thread here on how to run plugins in visual studio express, having said that is there a thread on how to run procon in visual studio express?

No and no, but running it in Visual Express is like running any program in Visual Express, you just open the Solution, build Debug, and press the Start Debugging (Play) button. Plugins run the same way as usual. I think the Solution builds the exe into the right place, the "procon" folder, but I don't remember.

 

If you can repeat it on something else besides the layer, that's useful information by itself. But I predict you will not be able to reproduce it. There have only been a handful of problem reports from 300+ users of IL combined with 2000+ MB users.

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

Originally Posted by supermillhouse*:

 

No and no, but running it in Visual Express is like running any program in Visual Express, you just open the Solution, build Debug, and press the Start Debugging (Play) button. Plugins run the same way as usual. I think the Solution builds the exe into the right place, the "procon" folder, but I don't remember.

 

If you can repeat it on something else besides the layer, that's useful information by itself. But I predict you will not be able to reproduce it. There have only been a handful of problem reports from 300+ users of IL combined with 2000+ MB users.

I got this when I ran all of my plugins from my own pc in VS2013 Express, ignoring the IO ones as I know why they are there the 'System.NullReferenceException' bit is what is eventually crashing procon I believe. Unfortunately without a bit of instruction on how to debug a plugin in VS2013 express I am a bit stuck.

 

Code:

The thread 0xd3c has exited with code 259 (0x103).
A first chance exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.NullReferenceException' occurred in InsaneLimits.dll
An unhandled exception of type 'System.NullReferenceException' occurred in InsaneLimits.dll
Additional information: Object reference not set to an instance of an object.

An unhandled exception of type 'System.NullReferenceException' occurred in Unknown Module.
Additional information: Object reference not set to an instance of an object.

The program '[10228] PRoCon.vshost.exe' has exited with code -532459699 (0xe0434f4d).
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by supermillhouse*:

 

Might have found it. I may on occasion had been passing null in place of yellMsg

 

plugin.ServerCommand("admin.say", yellMsg, "all");

 

And yes I know there is a proper insane limits player say command, think I may just change this now actually. It used to be a player yell before you actually added in player yell, back in BF3 days.

Will see how long it lasts.

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

Originally Posted by PapaCharlie9*:

 

Might have found it. I may on occasion had been passing null in place of yellMsg

 

plugin.ServerCommand("admin.say", yellMsg, "all");

 

And yes I know there is a proper insane limits player say command, think I may just change this now actually. It used to be a player yell before you actually added in player yell, back in BF3 days.

Will see how long it lasts.

Good work getting as far as you did on you own! I hope that's all it is, easy to fix!

 

EDIT: Oops, that can't be it. Every limit body (first_check and second_check) is wrapped in a try/catch that catches all exceptions. That last exception can't be from a limit, it has to be from something else. Also, there should be a corresponding DEBUG.txt entry for that NullRef exception.

 

You should be able to break on all exceptions. Go into Debug -> Exceptions ... and check box NullRef exception. Do not check DirectoryNotFound, since you want to skip over those.

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

Originally Posted by EBassie*:

 

@PC9:

 

InsaneLimits is starting to become really unreliable for punishing players who use forbidden weapons on my BF3 Metro server as the stats-fetch queue empties too slow.

 

With all the players getting kicked and new players joining, sometimes the queue just stays at 15-20 for hours. And as long as rule-offenders are in the stats-queue, they won't be punished.

 

I've 3 servers (1x BF3 & 2x BF4) on my layer (that's one IP).

Each server is running MultiBalancer & InsaneLimits. The BF3 server is using BLCache as well.

But since we don't have BL Cache for BF4, I'm now doing a shitload of queries to Battlelog again with these plugins enabled.

 

(I've the feeling Battlelog is throttling even more lately, but need confirmation from DL about that)

 

So what I now do to fix this issue a couple of times a day:

disable IL on my BF4 servers to get the stats-queue for my BF3 server back on track.

 

So my question:

Is it possible to change IL in a way that even when a players' BL stats are not fetched yet, they can be punished for forbidden weapons?

 

PS: don't answer with: "Has it been a week already? :P" :smile:

 

 

EDIT:

Somehow my layer is having timeout issues with IL. Not sure what's causing it. It happens on both 1.4.1.6 & 1.4.2.0

 

Code:

[19:34:39 22] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 25 still in queue, took a total of 51 secs
[19:35:09 24] [Insane Limits] Thread(fetch): WARNING: Timeout(30 seconds), waiting for fetch_handle in fetch_thread_loop. Your net connection to your game server may be congested or another plugin may be lagging Procon.
[19:35:15 82] [Insane Limits] WARNING: GetBattlelog: could not find weapon AS VAL, but guessed AS-VAL, with inaccuracy of 1,000 (10 or less is a good guess)
[19:35:16 10] [Insane Limits] WARNING: GetBattlelog: could not find weapon AS VAL, but guessed AS-VAL, with inaccuracy of 1,000 (10 or less is a good guess)
[19:35:45 92] [Insane Limits] Thread(fetch): WARNING: Timeout(30 seconds), waiting for list_handle in getMapListSync. Your net connection to your game server may be congested or another plugin may be lagging Procon.
[19:36:06 90] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 26 still in queue, took a total of 58 secs
[19:36:37 21] [Insane Limits] Thread(fetch): WARNING: Timeout(30 seconds), waiting for fetch_handle in fetch_thread_loop. Your net connection to your game server may be congested or another plugin may be lagging Procon.
[19:36:37 73] [Insane Limits] Thread(enforcer): WARNING: Timeout(30 seconds), waiting for list_handle in getMapListSync. Your net connection to your game server may be congested or another plugin may be lagging Procon.
[19:36:53 58] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 28 still in queue, took a total of 16 secs
Transferred my layer to a box at my office and all is running smooth from there.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by supermillhouse*:

 

Good work getting as far as you did on you own! I hope that's all it is, easy to fix!

 

EDIT: Oops, that can't be it. Every limit body (first_check and second_check) is wrapped in a try/catch that catches all exceptions. That last exception can't be from a limit, it has to be from something else. Also, there should be a corresponding DEBUG.txt entry for that NullRef exception.

 

You should be able to break on all exceptions. Go into Debug -> Exceptions ... and check box NullRef exception. Do not check DirectoryNotFound, since you want to skip over those.

This came from an exception it couldn't handle. But it didn't stop at a line of code that was responsible. Would it still catch the exception if it was running in a different thread?

 

Code:

// Thread delegate
ThreadStart AdminYell = delegate {
        plugin.ConsoleWrite(consoleMsg);
        if (logMsg != null) plugin.Log("Logs\\InsaneLimits\\Friend5-7-13.log", logMsg);
        Thread.Sleep(6*1000);
        plugin.ServerCommand("admin.say", yellMsg, "all");  
};

// Main thread code
Thread t = new Thread(AdminYell);
t.Start();
Thread.Sleep(10);
return false;
my debug has so many

 

Code:

Exception caught at: 
c:\Users\Ian Shepherd\Documents\GitHub\Procon-1-master\src\PRoCon.Core\Remote\FrostbiteConnection.cs
Line 413
Method ReceiveCallback
DateTime: 01 March 2014 14:02:21
Version: 1.4.2.0
Packet: 
[0-procon.updated] [1-] [2-squad.leader] [3-1] [4-12]
Additional: 


Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

   at System.ThrowHelper.ThrowArgumentOutOfRangeException()
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at PRoCon.Core.Remote.BF4Client.DispatchSquadLeaderResponse(FrostbiteConnection sender, Packet cpRecievedPacket, Packet cpRequestPacket) in c:\Users\Ian Shepherd\Documents\GitHub\Procon-1-master\src\PRoCon.Core\Remote\BF4Client.cs:line 1612
   at PRoCon.Core.Remote.FrostbiteClient.DispatchResponsePacket(FrostbiteConnection sender, Packet cpRecievedPacket, Packet cpRequestPacket) in c:\Users\Ian Shepherd\Documents\GitHub\Procon-1-master\src\PRoCon.Core\Remote\FrostbiteClient.cs:line 3302
   at PRoCon.Core.Remote.PRoConClient.HandleEventPacket(Packet cpBeforePacketDispatch, Boolean blCancelPacket) in c:\Users\Ian Shepherd\Documents\GitHub\Procon-1-master\src\PRoCon.Core\Remote\PRoConClient.cs:line 1213
   at PRoCon.Core.Remote.PRoConClient.Connection_BeforePacketDispatch(FrostbiteConnection sender, Packet packetBeforeDispatch, Boolean& isProcessed) in c:\Users\Ian Shepherd\Documents\GitHub\Procon-1-master\src\PRoCon.Core\Remote\PRoConClient.cs:line 921
   at PRoCon.Core.Remote.FrostbiteConnection.ReceiveCallback(IAsyncResult ar) in c:\Users\Ian Shepherd\Documents\GitHub\Procon-1-master\src\PRoCon.Core\Remote\FrostbiteConnection.cs:line 413
Its unreal, I don't know if it is insane limits related or procon itself, I have put it up on git hub tho. I cant find squat in my debug file for all of these.

 

Game servers crashed more times than enough tonight though.

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

Originally Posted by PapaCharlie9*:

 

EDIT:

It seems latest Procon version (1.4.2.0) is creating some issues with IL on my box.

Code:

[19:34:39 22] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 25 still in queue, took a total of 51 secs
[19:35:09 24] [Insane Limits] Thread(fetch): WARNING: Timeout(30 seconds), waiting for fetch_handle in fetch_thread_loop. Your net connection to your game server may be congested or another plugin may be lagging Procon.
[19:35:15 82] [Insane Limits] WARNING: GetBattlelog: could not find weapon AS VAL, but guessed AS-VAL, with inaccuracy of 1,000 (10 or less is a good guess)
[19:35:16 10] [Insane Limits] WARNING: GetBattlelog: could not find weapon AS VAL, but guessed AS-VAL, with inaccuracy of 1,000 (10 or less is a good guess)
[19:35:45 92] [Insane Limits] Thread(fetch): WARNING: Timeout(30 seconds), waiting for list_handle in getMapListSync. Your net connection to your game server may be congested or another plugin may be lagging Procon.
[19:36:06 90] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 26 still in queue, took a total of 58 secs
[19:36:37 21] [Insane Limits] Thread(fetch): WARNING: Timeout(30 seconds), waiting for fetch_handle in fetch_thread_loop. Your net connection to your game server may be congested or another plugin may be lagging Procon.
[19:36:37 73] [Insane Limits] Thread(enforcer): WARNING: Timeout(30 seconds), waiting for list_handle in getMapListSync. Your net connection to your game server may be congested or another plugin may be lagging Procon.
[19:36:53 58] [Insane Limits] Thread(fetch): DONE inserting 1 new players, 28 still in queue, took a total of 16 secs
First of all, nag Morpheus to fix BattlelogCache. :smile:

 

Was that from the BF3 or BF4 instance? I'm guessing BF4.

 

On your BF4 instance of Insane Limits, increase your wait_timeout to more than 30 seconds. Try 61 or possibly 91. For your situation, 30 seconds is clearly too short. That will deal with that warning.

 

There's a mapping from RCON weapon code "AS VAL" to BL stat code "AS-VAL" for BF3, but none for BF4, in Insane Limits. Is that not correct? Should BF4 also have that mapping?

 

58 seconds for one stats fetch is awfully long. There might be a deeper root cause behind all this. Is your layer provisioned well enough for the network traffic it is generating? Are all network communications slow on the layer, or just to Battlelog?

 

Now, to your request: it's a big problem. The reason no limits evaluate if stats haven't been fetched for a player yet is because as far as Insane Limits is concerned, that player doesn't exist yet. To bypass that whole pipeline that processes new players would be a gigantic hack and who knows what consequences that will have?

 

Still, if you want to give it a try, here's a modification you can make. This is only for the OnKill case. It basically makes up a dummy player object if the player is still in the stats fetch queue, just for the duration of this particular OnKill limit. Note that in some cases a dummy player object will not have GUIDs, so any OnKill limits checking for GUIDs will trigger on these dummy players.

 

Find this code in InsaneLimits.cs and add the part in red exactly as shown:

 

Code:

public override void OnPlayerKilled(Kill info)
        {
            DebugWrite("Got ^bOnPlayerKilled^n!", 8);
            if (!plugin_activated)
                return;

            try
            {
                //get the killer and victim information

                BaseEvent type = DetermineBaseEvent(info);

                CPlayerInfo killer = info.Killer;
                CPlayerInfo victim = info.Victim;

                PlayerInfo vpinfo = null;
                PlayerInfo kpinfo = null;

                players.TryGetValue(victim.SoldierName, out vpinfo);
                players.TryGetValue(killer.SoldierName, out kpinfo);

                /* EB Modification */
                CPunkbusterInfo pbinfo = null;
                bool skipUpdate = false;

                if (vpinfo == null) {
                    lock (players_mutex) {
                        new_player_queue.TryGetValue(victim.SoldierName, out pbinfo);
                    }
                    if (pbinfo == null) {
                        pbinfo = new CPunkbusterInfo("", victim.SoldierName, "", "", "", ""); // dummy!
                    }
                    vpinfo = new PlayerInfo(this, pbinfo);
                    skipUpdate = true;
                }

                pbinfo = null;

                if (kpinfo == null) {
                    lock (players_mutex) {
                        new_player_queue.TryGetValue(killer.SoldierName, out pbinfo);
                    }
                    if (pbinfo == null) {
                        pbinfo = new CPunkbusterInfo("", killer.SoldierName, "", "", "", ""); // dummy!
                    }
                    vpinfo = new PlayerInfo(this, pbinfo);
                    skipUpdate = true;
                }
                /* END EB Modification */

                // ignore event, no web stats available
                if ((type.Equals(BaseEvent.Suicide) && vpinfo == null))
                    return;

                else if ((type.Equals(BaseEvent.Kill) || type.Equals(BaseEvent.TeamKill)) &&
                        (kpinfo == null || vpinfo == null))
                    return;

                // ignore event if server info is not yet available
                if (serverInfo == null)
                    return;


                if (!skipUpdate)
                    UpdateStats(kpinfo, vpinfo, type, info, ":" + info.DamageType);

                evaluateLimitsForEvent(type, null, kpinfo, vpinfo, info);


            }
            catch (Exception e)
            {
                DumpException(e);
            }
        }
It should go without saying that this is untested, not supported, blah blah, yada yada. Nobody else but EB should attempt this and god help you if you do!

 

 

EDIT: I found some problems with my first try. Just replace the entire OnPlayerKilled function with the code above, nevermind the red vs. not red.

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

Originally Posted by EBassie*:

 

First of all, nag Morpheus to fix BattlelogCache. :smile:

I tried... He won't do it :sad:

 

Was that from the BF3 or BF4 instance? I'm guessing BF4.

nope, it's my BF3 Metro server, which is on the same layer as my 2 BF4 servers.

 

On your BF4 instance of Insane Limits, increase your wait_timeout to more than 30 seconds. Try 61 or possibly 91. For your situation, 30 seconds is clearly too short. That will deal with that warning.

 

There's a mapping from RCON weapon code "AS VAL" to BL stat code "AS-VAL" for BF3, but none for BF4, in Insane Limits. Is that not correct? Should BF4 also have that mapping?

 

58 seconds for one stats fetch is awfully long. There might be a deeper root cause behind all this. Is your layer provisioned well enough for the network traffic it is generating? Are all network communications slow on the layer, or just to Battlelog?

No idea why this started happening. I never had issues until a few days back.

I run my layer from my home and it has never been an issue.

 

First I thought it was 1.4.2.0 causing this, but it also happens with 1.4.1.6

So I moved my complete layer to one of my machines at the office and the stats-fetch queue was empty in minutes. No issues there.

 

Maybe DICE put my IP on an extra throttle-list :ohmy:

 

 

Now, to your request: it's a big problem. The reason no limits evaluate if stats haven't been fetched for a player yet is because as far as Insane Limits is concerned, that player doesn't exist yet. To bypass that whole pipeline that processes new players would be a gigantic hack and who knows what consequences that will have?

 

Still, if you want to give it a try, here's a modification you can make. This is only for the OnKill case. It basically makes up a dummy player object if the player is still in the stats fetch queue, just for the duration of this particular OnKill limit. Note that in some cases a dummy player object will not have GUIDs, so any OnKill limits checking for GUIDs will trigger on these dummy players.

 

Find this code in InsaneLimits.cs and add the part in red exactly as shown:

 

Code:

public override void OnPlayerKilled(Kill info)
        {
            DebugWrite("Got ^bOnPlayerKilled^n!", 8);
            if (!plugin_activated)
                return;

            try
            {
                //get the killer and victim information

                BaseEvent type = DetermineBaseEvent(info);

                CPlayerInfo killer = info.Killer;
                CPlayerInfo victim = info.Victim;

                PlayerInfo vpinfo = null;
                PlayerInfo kpinfo = null;

                players.TryGetValue(victim.SoldierName, out vpinfo);
                players.TryGetValue(killer.SoldierName, out kpinfo);

                /* EB Modification */
                CPunkbusterInfo pbinfo = null;

                if (vpinfo == null) {
                    lock (players_mutex) {
                        new_player_queue.TryGetValue(victim.SoldierName, out pbinfo);
                    }
                    if (pbinfo == null) {
                        pbinfo = new CPunkbusterInfo("", victim.SoldierName, "", "", "", ""); // dummy!
                    }
                    vpinfo = new PlayerInfo(this, pbinfo);
                }

                if (kpinfo == null) {
                    lock (players_mutex) {
                        new_player_queue.TryGetValue(killer.SoldierName, out pbinfo);
                    }
                    if (pbinfo == null) {
                        pbinfo = new CPunkbusterInfo("", killer.SoldierName, "", "", "", ""); // dummy!
                    }
                    vpinfo = new PlayerInfo(this, pbinfo);
                }
                /* END EB Modification */

                // ignore event, no web stats available
                if ((type.Equals(BaseEvent.Suicide) && vpinfo == null))
                    return;

                else if ((type.Equals(BaseEvent.Kill) || type.Equals(BaseEvent.TeamKill)) &&
                        (kpinfo == null || vpinfo == null))
                    return;

                // ignore event if server info is not yet available
                if (serverInfo == null)
                    return;


                UpdateStats(kpinfo, vpinfo, type, info, ":" + info.DamageType);

                evaluateLimitsForEvent(type, null, kpinfo, vpinfo, info);


            }
            catch (Exception e)
            {
                DumpException(e);
            }
        }
It should go without saying that this is untested, not supported, blah blah, yada yada. Nobody else but EB should attempt this and god help you if you do!
Yeah, I thought this would be a tricky thing to do. But I like tricky things :P

So I will probably try that. Maybe gonna change my IP first :ohmy:

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