A bunnyhop timer plugin for Counter-Strike: Source, Counter-Strike: Global Offensive and Team Fortress 2.
Go to file
2016-08-03 08:27:43 +03:00
configs fix map changing issues (#88) 2016-08-01 08:19:17 +03:00
gamedata Updated gamedata for CS:S 2016-04-25 10:49:07 +03:00
maps Generate .nav files 2015-09-21 02:22:43 +03:00
materials/shavit git is annoying :( 2016-07-25 14:53:34 +03:00
scripting fix SSJ printed wrong and (#129) 2016-08-03 08:27:43 +03:00
sound/shavit [sounds] Add "worse than pb" sounds 2016-06-24 11:58:05 +03:00
webserver Applied fixes from StyleCI 2016-08-02 22:34:48 -04:00
.gitattributes 🍭 Added .gitattributes & .gitignore files 2015-07-09 20:29:31 +03:00
.gitignore Add my atom-build config to .gitignore 2016-03-07 16:34:08 +02:00
.travis.yml update travis to use SM 1.8 2016-06-18 02:34:02 +03:00
1.2b_todo.md Started using Atom - let it auto indent everything. 2016-03-07 16:14:21 +02:00
1.3b_todo.md Started using Atom - let it auto indent everything. 2016-03-07 16:14:21 +02:00
1.4b_todo.md update todo 2015-09-22 13:35:11 +03:00
LICENSE attach GNU GPL v3 license 2016-06-20 17:30:31 +03:00
README.md [web] add compatibility for unix timetamps 2016-08-03 05:33:57 +03:00
smbuild add -chat to smbuild 2016-07-08 18:38:30 +03:00

Build status

Build status

AlliedModders thread

Download

shavit's simple bhop timer

a bhop server should be simple

Mapzones' setup demonstration

Requirements:

  • SourceMod 1.8 and above
  • clientprefs plugin/extension. Comes built-in with SourceMod.
  • The RTLer is required to compile shavit-chat and you don't need Simple Chat Processor as listed in Ther RTLer's requirements.
  • Dynamic for compilation and runtime of shavit-chat.
  • Simple Chat Processor (Redux) - for compilation and better runtime of shavit-chat (plugin can run without it). Use the scp.inc file I attached in include/scp.inc for transitional syntax support.

Optional requirements:

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 equivelant bz2 files on your FastDL server!
    4.1. Do the same for the materials folder.
  4. Copy the configs file to your server and modify shavit-sounds.cfg if you wish to.
    5.1. Changing shavit-prefix.txt to contain your MySQL database prefix might be needed depending on your usage.
  5. 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.

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 bonus timer.

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 bonus timer.

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.

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

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

Rankings (NEW!)

  • Create tables. (mappoints, playerpoints)
  • Allow ROOT admins to set ideal points for map and time for the default style. (sm_setpoints <time in seconds> <points>)
  • Add sm_points.
  • Implement an algorithm that will calculate points for a record, will also take the time and style into account. Add a +25% bonus if the time is equal or better than the ideal one.
  • Use a weighting system for points calculation. The highest ranked time will be weighted 100% and worse times will be weighted as 5% less each time.
  • Calculate points for players once they connect to the server.
  • Add sm_top that will show the top X players, sort by points.
  • Calculate rank for players once they connect to the server.
  • Add sm_rank.
  • Calculate points per scored time once it's added to the database.
  • Recalculate points for every record on the current map when a ROOT admin changes the point value for it. (retroactive!)
  • Add natives. float Shavit_GetPoints(int client) int Shavit_GetRank(int client) void Shavit_GetMapValues(float &points, float &idealtime)
  • Add native that checks the total amount of players with over 0 points.
  • Find a way to update newly calculated points for all records on a map with the least amount of queries possible.
  • Implement map tiers or remove idealtime and use the WR time for each style instead.
  • Remove deleted records from playerpoints.

Web Interface

  • Implement points.
  • Compatibility for unix timestamps.

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.
  • Implement Simple Chat Processor (Redux) support and make my own chat processor a fallback solution.

Zones

  • Add teleport zones (multiple). Use the command 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.

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 sm_bwr sm_bonuswr sm_bonusworldrecord.

Time Limits

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