a bhop server should be simple
This is (nearly) an all-in-one server plugin for Counter-Strike: Source and Counter-Strike: Global Offensive that adds a timer system and many other utilities, so you can install it and have a proper bunnyhop server running.
Including a records system, map zones (start/end marks etc), HUD with useful information, chat processor, miscellaneous such as weapon commands/spawn point generator, bots that replay the best records of the map, sounds, statistics, rankings and more!
- SourceMod 1.8 and above
clientprefs
plugin/extension. Comes built-in with SourceMod.- DHooks - required for compilation of
shavit-misc
. - The RTLer is required to compile
shavit-chat
and you don't need Simple Chat Processor as listed in The RTLer's requirements. - Chat-Processor - for compilation and better runtime of
shavit-chat
(plugin can run without it). - Dynamic for compilation and runtime of the whole plugin. (use latest version from GitHub)
- DHooks - required for 250/260 prestrafe for all weapons.
- The RTLer - required for properly formatted RTL text within
shavit-chat
. - Chat-Processor - for more proper parsing inside
shavit-chat
. sv_disable_immunity_alpha
set to 1 in CS:GO forshavit_misc_playeropacity
to work.- Bunnyhop Statistics - to show amount of scrolls for non-auto styles in the key display.
- SteamWorks - for the
{serverip}
advertisement varialbe.
- If you want to use MySQL (VERY RECOMMENDED) add a database entry in addons/sourcemod/configs/databases.cfg, call it "shavit". The plugin also supports the "sqlite" driver. You can also skip this step and not modify databases.cfg.
"Databases"
{
"driver_default" "mysql"
// When specifying "host", you may use an IP address, a hostname, or a socket file path
"default"
{
"driver" "default"
"host" "localhost"
"database" "sourcemod"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}
"shavit"
{
"driver" "mysql"
"host" "localhost"
"database" "shavit"
"user" "root"
"pass" ""
}
}
- Copy the desired .smx files to your plugins (addons/sourcemod/plugins) folder
2.1. Copy shavit.games.txt to /gamedata if you have DHooks installed. - Copy base.nav to the
maps
folder. - Copy the files from the
sound
folder to the one on your server. Make sure to also have equivalent bz2 files on your FastDL server!
4.1. Do the same for thematerials
folder. - Copy the
configs
folder to your server and modify them if you need to.
5.1. Changingshavit-prefix.txt
to contain your MySQL database prefix might be needed depending on your usage. - Copy the
translations
folder to your server. - Restart your server.
shavit-core
- no other plugin will work without it.
shavit-zones
- required for shavit-core
and for shavit-misc
.
shavit-wr
- required for shavit-stats
, shavit-replay
, shavit-sounds
, shavit-stats
and shavit-rankings
.
shavit-rankings
- required for shavit-chat
.
- Migrate every menu to the 1.7 transitional syntax.
- Migrate DBI to the 1.7 transitional syntax.
- Migrate events to the 1.7 transitional syntax.
- Migrate ADT_Arrays to ArrayList.
- Support "out of the box" installations and SQLite support.
- Implement a config file for styles and use Dynamic to load them, add Shavit_OnStylesLoaded and caching natives.
- Add support for multiple tracks (main/bonus etc).
- Fix chat colors for CS:S.
- Add table prefix. (configs/shavit-prefix.txt)
- Add shavit_core_nostaminareset ("easybhop")
-
Make a global enumerator/variable with per-style settings (bitflags)- configs are canceled, just recompile the plugin with your own edit ofshavit.inc
. - Add unranked styles.
- Add a setting to not start timer if Z axis velocity is a thing (non-prespeed styles).
- Add speed reset at timer start.
- Add support for 100AA styles.
- Measure strafe count/sync, also have it in the Shavit_OnFinish forward.
- Add low gravity styles (0.6).
- Better implementation of autobhop and +ds (doublestep fix).
- Save autobhop/styles to clientprefs.
- Add
lastlogin
column tousers
. - Allow late loading by adding Shavit_OnDatabaseLoaded() and get the new database handle in modules.
- Add style changing commands (config file).
- HUD toggling command. (
sm_hud
) - Zone (start/end) HUD toggling command. (
sm_zonehud
) - [CS:GO] Replace "- Replay Bot -" for bots with an underlined and pretty text.
- Remove
sm_zonehud
and makesm_hud
a menu that can toggle HUD, zonehud and spectators list in a panel. - Add spectator list.
- Show time in a "TIME/RECORD" format for replay bots.
- Support zonehud for CS:S.
- Redo CS:S HUD and use the HUD capabilities added in late 2013, attempt to look like this HUD because I'm very original!!!111one!1!!
- Show [PAUSED] if needed.
- Add potential map rank.
- Add strafes/sync. (replace 'Player' with strafes and sync in csgo, use keyhinttext for sync in css)
- Show 'time left' to HUD (CS:S only).
- Support for multiple tracks.
- Make a boolean native that confirms if a client is a replay bot with loaded data. (used for
shavit-hud
) - Stop recording frames (and clear cache) when the player is past the WR for the style.
- Overall optimizations.
- Remove replay bot data on deletion of the #1 record.
- Make replay bots dead if there's no replay data loaded.
- Clear player cache on spawn/death.
- Add admin interface. (delete replay data,
sm_deletereplay
for RCON admins. - Support for multiple tracks and styles.
- Make style names editable from shavit.inc (like I did to the rest of modules) (dynamic!)
- Make a submenu per style, for aesthetics.
- [rankings] Points implementation.
- Make MVP count the amount of WRs the player has. (with cvar)
- Generate mapsdone points on the fly.
- Add map rank to mapsdone.
- Show strafes/sync in mapsdone submenu.
- Redo everything.
- Add 'last online' field.
- Add
Shavit_GetWRCount(int client)
. - Stop calculating points on the fly and grab everything from the table.
- Rework on points sorting and show weighting percentages.
- Allow changing the prespeed limitation.
- Add weapon cleanup.
- Support radar hiding for CS:S.
- Fix respawn for auto team join.
- Create extra spawn points for both teams because many bhop maps lack them. (
shavit_misc_createspawnpoints
) - Support map changing, specifically SourceMod's built-in mapchooser and MCE.
- Make frags/score as -time and deaths as rank.
- Add
sm_usp
sm_glock
sm_knife
. - Add SSJ (Speed Sixth Jump), save settings to clientprefs and print SSJ to spectators. REMOVED: Use this.
- Add cvar to disable static 250 maxspeed.
- Play sounds (from config file |
configs/shavit-sounds.cfg
) on new events. - On new #1.
- On personal best.
- On map finish.
- Add support for 'sound for X map rank'.
- Add styles config for enabling/disabling sounds.
- TBA
- Implement points.
- Compatibility for unix timestamps.
- Compatibility for new points.
- Add logic that processes chat without requiring an external plugin such as
Simple Chat Processor (Redux)
. - RTLer support.
- Custom chat titles/colors per individual player.
- Custom chat titles/colors for rank ranges.
- Update cache for a player when his rank updates.
- Add
sm_ranks
sm_chatranks
. - Add
Shavit_FormatChat
native. - Add random rgb and random rgba for CS:S parsing.
- Add teleport zones (multiple).
Use the commandmade them very easy to setup!sm_tpzone
between the time of setting the zone and confirming the setup. - Use string explosion in ZoneAdjuster_Handler and ZoneEdge_Handler for code efficiency.
- CANCELED: Migrate zone settings to use Dynamic. (i didn't think too far into it before i started)
- Handle teleport zones. (teleport to a value from gV_Teleport)
- Change zone sprite. (see configs/shavit-zones.cfg and shavit_zones_usecustomsprite)
- Optimize InsideZone() so 8 points won't be always calculated (blame ofir™). Cut execution time by over 95%!!
- Add grid snapping on zone creation.
- Make
UpdateWRCache
smaller. Will result in extra optimization and more uhm.. dynamic! - Add a cvar that limits the amount of records in the WR menu. (default: 50 |
shavit_wr_recordlimit
) - Remove
sm_wrsw
and makesm_wr
a dynamic menu with all difficulties. (dynamic!) - [rankings] Show points in WR menu.
- Add native that checks the total amount of players with records on a style.
- Cache the whole leaderboard per style, sorted and updated at record removal, insertion and updates.
- Add
Shavit_GetRankForTime(BhopStyle style, float time)
which will calculate a map rank for the given time. - Show map rank on finish.
- Use unix timestamps for future record dates and add backwards compatibility.
- Calculate points on the fly (sub-menu) instead of grabbing them from
playerpoints
. - Add
sm_recent
sm_recentrecords
sm_rr
. - Add strafes/sync to the WR menu where available.
- Add 'player stats' to submenu.
- Grab points from
playertimes
instead of calculating on the fly. - Support multiple tracks.
- Make the query order by time and add proper limitations.
- Optimize query.