05.11.2013, 11:56
Sorry for bumping this topic, but this is important.
I had this problem with my server and I fixed it.
As Mellnik said, it is a timer in the game-mode itself and not on any filter-scripts. We all know that this problem is caused by a while loop. So, I did some tests, if the infinite loop is in a filter-script, the r-con commands do work and players are able to join. On the other hand, if that infinite loop is in the game-mode itself, then the sever will seem OK, but it is actually frozen and no one can join, hence Kicking IP *.*.*.*:**** because they didn't log on to the game..
The way I came around it is by checking all my while loops. Now, I didn't know which one of them actually caused the problem so I added a sentinel for each 'while' loop that I found, so if a loop counter is passed that, a message would show on the logs telling me that the this loop is broken.
Example:
I had this problem with my server and I fixed it.
As Mellnik said, it is a timer in the game-mode itself and not on any filter-scripts. We all know that this problem is caused by a while loop. So, I did some tests, if the infinite loop is in a filter-script, the r-con commands do work and players are able to join. On the other hand, if that infinite loop is in the game-mode itself, then the sever will seem OK, but it is actually frozen and no one can join, hence Kicking IP *.*.*.*:**** because they didn't log on to the game..
The way I came around it is by checking all my while loops. Now, I didn't know which one of them actually caused the problem so I added a sentinel for each 'while' loop that I found, so if a loop counter is passed that, a message would show on the logs telling me that the this loop is broken.
Example:
Code:
new counter=0, i; while(i == 1)//we know that this is an infinite loop because we do not change the value of 'i' { // our normal code in here and at the end we increment the counter and check to see if we have a problem... if(++counter >= 5000)//now, you can change the sentinel value to whatever fits the use of your loop { printf("Infinite loop has been stopped. Loop at function: 'function name'"); // we place the function name so we can pinpoint the problem and do something about the loop. break; //we break the loop. } }