| configs | ||
| gamedata | ||
| maps | ||
| materials/shavit | ||
| scripting | ||
| sound/shavit | ||
| translations | ||
| webserver | ||
| .gitattributes | ||
| .gitignore | ||
| .travis.yml | ||
| 1.2b_todo.md | ||
| 1.3b_todo.md | ||
| 1.4b_todo.md | ||
| FEATURES.md | ||
| LICENSE | ||
| README.md | ||
| smbuild | ||
Build status
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!
Requirements:
- SourceMod 1.8 and above
clientprefsplugin/extension. Comes built-in with SourceMod.- DHooks - required for compilation of
shavit-misc. - The RTLer is required to compile
shavit-chatand 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_alphaset to 1 in CS:GO forshavit_misc_playeropacityto work.- Bunnyhop Statistics - to show amount of scrolls for non-auto styles in the key display. CS:S only!
- SteamWorks - for the
{serverip}advertisement variable.
Installation:
- 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
mapsfolder. - Copy the files from the
soundfolder to the one on your server. Make sure to also have equivalent bz2 files on your FastDL server!
4.1. Do the same for thematerialsfolder. - Copy the
configsfolder to your server and modify them if you need to.
5.1. Changingshavit-prefix.txtto contain your MySQL database prefix might be needed depending on your usage. - Copy the
translationsfolder to your server. - 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 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
lastlogincolumn tousers. - 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_zonehudand makesm_huda 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_deletereplayfor 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_uspsm_glocksm_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_rankssm_chatranks. - Add
Shavit_FormatChatnative. - Add random rgb and random rgba for CS:S parsing.
Zones
- Add teleport zones (multiple).
Use the commandmade them very easy to setup!sm_tpzonebetween 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
UpdateWRCachesmaller. 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_wrswand makesm_wra 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_recentsm_recentrecordssm_rr. - Add strafes/sync to the WR menu where available.
- Add 'player stats' to submenu.
- Grab points from
playertimesinstead of calculating on the fly. - Support multiple tracks.
Time Limits
- Make the query order by time and add proper limitations.
- Optimize query.