[bf1942] How to test high ping kicker is working

Nicolo Tüllmann Nico at immortalesclan.de
Tue Jun 28 07:15:30 EDT 2005


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
>




More information about the Bf1942 mailing list