[bf1942] How to test high ping kicker is working

Paul Bowsher paul.bowsher at gmail.com
Tue Jun 28 07:58:33 EDT 2005


No. Read my previous email for one modification

On 6/28/05, Nicolo Tüllmann <Nico at immortalesclan.de> wrote:
> ok. But are the steps that I made ok?
> Are the steps 100% ok like that?
> 
> 
> ----- Original Message -----
> From: "Paul Bowsher" <paul.bowsher at gmail.com>
> To: <bf1942 at icculus.org>
> Sent: Tuesday, June 28, 2005 10:58 AM
> Subject: Re: [bf1942] How to test high ping kicker is working
> 
> 
> > Your bfno.py script in bf2/admin needs to be the bfno script provided,
> > not a set of config variables. Check the links further up/down
> >
> > On 6/28/05, Nicolo Tüllmann <Nico at immortalesclan.de> wrote:
> > > Can enybody make a step be step instuction for a default Server please ?
> > >
> > > I make in the dirctory bf2/mods/bf2/settings
> > > the file adminsettings.com
> > >
> > > bfno.highPingAutoKick 1
> > > bfno.highPingLimit 20
> > > bfno.highPingWarnings 3
> > > bfno.highPingCheckInterval 30
> > >
> > >
> > > then i make in the serversettings.con
> > > sv.adminScript "bfno.py"
> > >
> > > Now in the direktory
> > > bf2/admin the file
> > > bfno.py
> > >
> > > bfno.highPingAutoKick 1
> > > bfno.highPingLimit 20
> > > bfno.highPingWarnings 3
> > > bfno.highPingCheckInterval 30
> > >
> > > now in the pfad
> > > bf2/admin/standard_admin edit the file __init__.py
> > >
> > > import autobalance
> > > import tk_punish
> > > import bf2cc
> > > import pingkick.py
> > >
> > > autobalance.init()
> > > tk_punish.init()
> > > pingkick.init()
> > >
> > > Now in the pfad bf2/admin/standard  i make a file it calls pingkick.py
> > >
> # ------------------------------------------------------------------------
> > > # Module: pingkick.py
> > > # Authors: Kybber and Panic, Battlefield.no
> > > # Version 1.0
> > > # Description:
> > > #   This script kicks players with high ping, based on three different
> > > #   settings in the file 'adminsettings.con', loaded by the modified
> admin
> > > #   script (sv.adminScript = bfno_v1.1.py). See requirements for
> details.
> > > # Requirements:
> > > #   1. The Battlefield.no modified admin script (bfno_v1.1.py) v1.1
> > > #   2. The file adminsettings.con (see 1) with the following settings:
> > > #      - bfno.highPingAutoKick <1|0>
> > > #      - bfno.highPingLimit <integer>
> > > #      - bfno.highPingWarnings <integer>
> > > # Installation:
> > > #   Place this script in your <bf2>/admin/standard_admin directory, and
> > > #   add the lines 'import pingkick' and 'pingkick.init()' to the file
> > > #   '<bf2>/admin/standard_admin/__init__.py'.
> > >
> # ------------------------------------------------------------------------
> > >
> > >
> > >
> # ------------------------------------------------------------------------
> > > #                        I M P O R T
> > >
> # ------------------------------------------------------------------------
> > >
> > > import host
> > > import bf2
> > > from bf2 import g_debug
> > >
> > >
> # ------------------------------------------------------------------------
> > > #                       V A R I A B L E S
> > >
> # ------------------------------------------------------------------------
> > >
> > > # We need a timer for our ping kicking:
> > > pktimer = 30
> > >
> > > # Interval between ping checks (overridden by
> > > bf2.adminoptions['bfno.highPingCheckInterval']):
> > > interval = 30
> > >
> > >
> # ------------------------------------------------------------------------
> > > #                       F U N C T I O N S
> > >
> # ------------------------------------------------------------------------
> > >
> > >
> > >
> # ------------------------------------------------------------------------
> > > # The init function run by the standard_admin/__init__ functions:
> > >
> # ------------------------------------------------------------------------
> > > def init():
> > >    global pktimer
> > >    global interval
> > >    if g_debug: print 'PINGKICK: initializing pingkick script'
> > >    autokick = None
> > >    # Try to access the autokick setting:
> > >    try:
> > >       autokick = str(bf2.adminoptions['bfno.highPingAutoKick'])
> > >       pinglimit = int(bf2.adminoptions['bfno.highPingLimit'])
> > >       pingwarnings = int(bf2.adminoptions['bfno.highPingWarnings'])
> > >    except:
> > >       if g_debug: print "PINGKICK: WARNING - Could not get settings from
> > > 'bf2adminoptions'!"
> > >       return False
> > >
> > >    # Print debug message if autokick is disabled:
> > >    if '1' != autokick:
> > >       if g_debug: print 'PINGKICK: High ping autokick not enabled'
> > >
> > >    # Autokick is enabled, so hook it up:
> > >    else:
> > >       if g_debug: print 'PINGKICK: Enabling kick for high ping: %s/%s'
> > > %(bf2.adminoptions['bfno.highPingLimit'],
> > > bf2.adminoptions['bfno.highPingWarnings'])
> > >
> > >       # Register 'PlayerConnect' hook:
> > >       host.registerHandler('PlayerConnect', onPlayerConnect, 1)
> > >
> > >       # Reset TK Warnings
> > >       for p in bf2.playerManager.getPlayers():
> > >          onPlayerConnect(p)
> > >
> > >       # PingKickTimer:
> > >       enableTimer()
> > >
> # ------------------------------------------------------------------------
> > >
> > >
> > >
> # ------------------------------------------------------------------------
> > > # Enable the pktimer:
> > >
> # ------------------------------------------------------------------------
> > > def enableTimer():
> > >    """Enables the timer that runs the 'checkPing' function which kicks
> > > high-pingers"""
> > >    global pktimer
> > >    if pktimer:
> > >       return True
> > >    else:
> > >       # Try to read the ping check interval:
> > >       try:
> > >          interval = int(bf2.adminoptions['bfno.highPingCheckInterval'])
> > >          if g_debug: print "PINGKICK: Interval set to " + str(interval)
> > >       except:
> > >          if g_debug: print "PINGKICK: WARNING - Could not get the
> > > 'bfno.highPingCheckInterval' setting. Not starting timer!"
> > >          return False
> > >       # Create the timer:
> > >       if g_debug: print "PINGKICK: Timer not enabled. Enabling..."
> > >       pktimer = bf2.Timer(checkPing, interval, 1)
> > >       pktimer.setRecurring(10)
> > >       # Print debug message telling the status of the timer:
> > >       if pktimer:
> > >          if g_debug: print "PINGKICK: Time = %s" % (pktimer.getTime())
> > >          return True
> > >       else:
> > >          if g_debug: print "PINGKICK: Not enabled"
> > >          return False
> > >
> # ------------------------------------------------------------------------
> > >
> > >
> > >
> # ------------------------------------------------------------------------
> > > # Loop all players, checking their ping, kick high-pinger:
> > >
> # ------------------------------------------------------------------------
> > > def checkPing(data):
> > >    """Checks ping of all players, and kicks high-pingers"""
> > >
> > >    # Make sure our timer is enabled:
> > >    if not enableTimer(): return
> > >
> > >    if g_debug: print "PINGKICK: Running checkPing"
> > >
> > >    # Try to read the adminoptions dict from bf2
> > >    # NB: This requires a modified version of the 'sv.adminScript'
> > > (default.py)
> > >    #     which again requires the 'adminsettings.con' file.
> > >    try:
> > >       limit = int(bf2.adminoptions['bfno.highPingLimit'])
> > >       maxwarns = int(bf2.adminoptions['bfno.highPingWarnings'])
> > >    except:
> > >       return False
> > >
> > >    if g_debug: print "PINGKICK: Ping-limit set to " + str(limit)
> > >
> > >    # Loop all players
> > >    for p in bf2.playerManager.getPlayers():
> > >       name = str(p.getName())
> > >       # Check if this player has reached the limit for maximum warnongs
> > >       if maxwarns == p.pingWarnings:
> > >          # Kick if limit is reached:
> > >          print "PINGKICK: Kicking player " + name + " for high ping"
> > >          result = host.rcon_invoke("admin.kickPlayer " + str(p.index))
> > >       else:
> > >          # Check the ping if the limit hasn't been reached:
> > >          ping = None
> > >          try:
> > >             ping = p.getPing()
> > >          except:
> > >             pass
> > >          # If we have a valid ping, check it, and issue a warning if the
> > > ping exceeds the limit:
> > >          if ping:
> > >             if g_debug: print "PINGKICK: " + name + " has " + str(ping)
> + "
> > > in ping and has " + str(p.pingWarnings) + " Ping-warnings"
> > >             if ping > limit:
> > >                p.pingWarnings += 1
> > >                print "PINGKICK: Player " + name + " exceeds ping limit
> for
> > > the " + str(p.pingWarnings) + ". time"
> > >                host.rcon_invoke("game.sayAll \"WARNING: " + name + " has
> > > exeeded the ping limit " + str(p.pingWarnings) + " time(s)\"")
> > >             # Issue a warning if a player has reached the maximum number
> of
> > > warnings. Will be kicked next time 'checkPing' is run:
> > >             if maxwarns == p.pingWarnings:
> > >                host.rcon_invoke("game.sayAll \"Kicking player " + name +
> "
> > > for high ping\"")
> > >
> # ------------------------------------------------------------------------
> > >
> > >
> > >
> # ------------------------------------------------------------------------
> > > # Callback function for the "PlayerConnect" event:
> > >
> # ------------------------------------------------------------------------
> > > def onPlayerConnect(p):
> > >    """Resets the ping warning counter for the player"""
> > >    print "PINGKICK: Player connected"
> > >    p.pingWarnings = 0 # Reset the 'TK Warnings' counter.
> > >
> # ------------------------------------------------------------------------
> > >
> > >
> > > now i start the server with the command
> > >
> > >
> > > screen ./start.sh
> > >
> > > But no kick with High Ping.
> > >
> > > Please help me
> > >
> > > Thanks for all
> > >
> > >
> > >
> > >
> > > ----- Original Message -----
> > > From: "Panic" <panic at battlefield.no>
> > > To: <bf1942 at icculus.org>
> > > Sent: Monday, June 27, 2005 10:20 PM
> > > Subject: Re: [bf1942] How to test high ping kicker is working
> > >
> > >
> > > > Hei Chris
> > > >
> > > > Christian wrote:
> > > >
> > > > >Hi Panic,
> > > > >
> > > > >you have a small typing error in the section "Creating the Admin
> > > > >Settings File" from the modified admin script ('default.py')
> > > > >
> > > > >adminsetting.con should be adminsettings.con
> > > > >
> > > > I've updated the wiki now. Thanks a lot for letting me know :-)
> > > >
> > > > ----------------------------------------------------------------------
> > > >  Name: Frode Hommedal
> > > >  Location: Norway
> > > >  Day job: VLSI designer and programmer
> > > >  Site: Battlefield.no [ http://www.battlefield.no ]
> > > > ----------------------------------------------------------------------
> > > >  International Game Server Operators Association [ http://igsoa.com ]
> > > > ----------------------------------------------------------------------
> > > >
> > >
> > >
> >
> >
> > --
> > Paul Bowsher
> > IT Systems Developer
> > Simply Stuck Ltd
> >
> 
> 


-- 
Paul Bowsher
IT Systems Developer
Simply Stuck Ltd



More information about the Bf1942 mailing list