[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