---
title: "How to Set Up a Bhop Server with a Timer"
excerpt: "How to build a bunnyhop server on CS 1.6: the engine cvars that shape movement, an auto-bhop plugin so jumps chain, a KZ-style timer for records, and the map and rate settings that make it feel right."
category: "installation"
tags: "bhop, mods"
image: ""
read_time: "8 min read"
---
<p>A bunnyhop (bhop) server is a movement server: players chain jumps to build speed, and a timer records how fast they clear a course. CS 1.6 has no built-in "bhop mode" — you assemble it from an engine that allows the movement, a plugin that makes jumps chain reliably, and a timer plugin that records times. This walks through a clean setup on ReHLDS.</p>
<h2>1. Start on ReHLDS + ReGameDLL</h2>
<p>Bhop servers live or die on movement consistency, so run the maintained stack: <a href="/tutorials/install-rehlds-on-linux">ReHLDS</a> with <a href="/tutorials/install-regamedll-cs16">ReGameDLL_CS</a> underneath. ReGameDLL gives you clean control over the movement code and the cvars below behave predictably. Add <a href="/tutorials/install-metamod-r">Metamod-r</a> and <a href="/tutorials/install-amx-mod-x-1-9">AMX Mod X 1.9</a> on top, because the bhop and timer plugins are AMXX plugins.</p>
<h2>2. Set the movement cvars</h2>
<p>Two engine cvars shape how bhop feels. Put them in <a href="/tutorials/setup-server-cfg-cs16">server.cfg</a>:</p>
<pre>sv_airaccelerate 100
sv_maxspeed 320</pre>
<p><code>sv_airaccelerate</code> controls how fast you can gain speed while strafing in the air; stock CS uses <code>10</code>, and bhop/KZ servers raise it (100 is a common value) so strafing actually accelerates you. <code>sv_maxspeed</code> caps ground speed — leave it at the CS default of <code>320</code> unless you deliberately want a faster feel. Do not confuse this with a bunnyhop cvar; CS 1.6 has no stock "enable bhop" switch, which is why you need the plugin in the next step.</p>
<h2>3. Install an auto-bhop plugin</h2>
<p>On stock CS, the engine inserts a small penalty that makes perfectly-timed manual jumps hard, so most bhop servers run an auto-bhop plugin that fires the jump the instant you land while holding jump — the classic "hold space to bhop" behaviour. Our GPL implementation is <a href="/plugins/csb-bhop-enable">CSB Bhop Enable</a>. Drop its <code>.amxx</code> into the plugins folder and register it — see <a href="/tutorials/install-amxx-plugin-files">installing plugin files</a> and <a href="/tutorials/plugins-ini-load-order">plugins.ini load order</a>:</p>
<pre>bhop_enable.amxx</pre>
<p>Most such plugins expose a cvar to toggle auto-jump and a per-player <code>say</code> command so purists can turn it off and hop manually. If you want stacked jumps for movement gimmicks, <a href="/plugins/csb-multi-jump">CSB Multi-Jump</a> grants a configurable number of mid-air jumps.</p>
<h2>4. Add a timer for records</h2>
<p>What makes it a bhop <em>server</em> rather than just a mod is the timer: a run starts when the player leaves the start zone and stops at the end zone, and the plugin stores the time and a leaderboard. Use <a href="/plugins/csb-kz-timer">CSB KZ-Timer</a>, which times runs, shows a live speedometer and clock on the HUD, and keeps per-map records. Add it to <code>plugins.ini</code>:</p>
<pre>kz_timer.amxx</pre>
<p>The timer keys records by SteamID, so on a non-Steam server make sure <a href="/tutorials/install-reunion">Reunion</a> is handing out stable ids — otherwise two players share a record and the leaderboard is meaningless.</p>
<h2>5. Load bhop or KZ maps</h2>
<p>Bhop courses are custom maps (typically prefixed <code>bhop_</code>, and KZ climbing maps <code>kz_</code>). Put the <code>.bsp</code> files in <code>cstrike/maps/</code>, add them to <code>mapcycle.txt</code>, and serve them over <a href="/tutorials/fastdl-setup-guide">FastDL</a> so players download them quickly on join. These maps have start and end zones the timer reads, so use maps built for timing rather than generic community maps.</p>
<h2>6. Tune the server for movement</h2>
<p>Movement players are sensitive to registration, so raise the rates. In server.cfg:</p>
<pre>sys_ticrate 1000
sv_maxupdaterate 100
sv_maxrate 100000</pre>
<p>A high <code>sys_ticrate</code> keeps the server frame time low so jumps land consistently, and generous rate caps let clients run 100 updates/sec. Turn friendly fire off and set a long <code>mp_timelimit</code> or none — bhop players want to stay on a map and grind a time, not rotate every 20 minutes.</p>
<h2>Common errors</h2>
<ul>
<li><strong>Jumps do not chain / feel sticky</strong> — no auto-bhop plugin, or <code>sv_airaccelerate</code> left at the stock <code>10</code>. Add the plugin and raise airaccelerate.</li>
<li><strong>Timer never starts</strong> — the map has no start/end zones the timer recognises. Use maps built for the timer plugin.</li>
<li><strong>Two players share the top time</strong> — colliding non-Steam SteamIDs. Fix identity with <a href="/tutorials/install-reunion">Reunion</a>.</li>
<li><strong>Speed feels capped no matter what</strong> — a plugin or config is clamping <code>sv_maxspeed</code>; read it back in the console and trace what re-sets it.</li>
<li><strong>Choppy movement under load</strong> — <code>sys_ticrate</code> too low or the box is CPU-starved. Raise ticrate and check server FPS.</li>
</ul>
<h2>Verification</h2>
<p>Load a <code>bhop_</code> map, hold jump, and confirm you chain hops and build speed — the speedometer from the timer should climb as you strafe. Cross the start zone and confirm the clock starts, then the end zone and confirm it stops and records a time. Reconnect and check your record survived, which proves the timer is keying by a stable id. When hops chain, the clock runs, and records persist, the server is complete.</p>