Skip to content

A bunnyhop timer plugin for Counter-Strike: Source and Counter-Strike: Global Offensive.

License

Notifications You must be signed in to change notification settings

Asunaya/bhoptimer

 
 

Repository files navigation

Build status

Build status

AlliedModders thread

Download

shavit's simple bhop timer

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!

Mapzones' setup demonstration

Requirements:

  • 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)

Optional requirements:

  • 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 for shavit_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.

Installation:

  1. 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"           ""
	}
}
  1. 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.
  2. Copy base.nav to the maps folder.
  3. 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 the materials folder.
  4. Copy the configs folder to your server and modify them if you need to.
    5.1. Changing shavit-prefix.txt to contain your MySQL database prefix might be needed depending on your usage.
  5. Copy the translations folder to your server.
  6. Restart your server.

Required plugins:

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.

Todo for 1.5b release (out of beta!)

General

  • 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).

Core

  • 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 of shavit.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 to users.
  • Allow late loading by adding Shavit_OnDatabaseLoaded() and get the new database handle in modules.
  • Add style changing commands (config file).

HUD

  • 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 make sm_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.

Replay

  • 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.

Stats

  • 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.

Miscellaneous

  • 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.

Sounds (NEW!)

  • 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.

Rankings (NEW!)

  • TBA

Web Interface

  • Implement points.
  • Compatibility for unix timestamps.
  • Compatibility for new points.

Chat (NEW!)

  • 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.

Zones

  • Add teleport zones (multiple). Use the command sm_tpzone between the time of setting the zone and confirming the setup. made them very easy to 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.

World Records

  • 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 make sm_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.

Time Limits

  • Make the query order by time and add proper limitations.
  • Optimize query.

About

A bunnyhop timer plugin for Counter-Strike: Source and Counter-Strike: Global Offensive.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • SourcePawn 74.8%
  • C++ 16.6%
  • PHP 8.0%
  • Other 0.6%