bhoptimer/CHANGELOG.md

166 KiB

CHANGELOG.md file for bhoptimer -- https://github.com/shavitush/bhoptimer Note: Dates are UTC+0.

v3.5.0 - too much, too little, and too late - 2025-06-06 - rtldg

this is too dense and unreadable. I'm sorry...

v3.4.2 - Long overdue edition (Extended Director's Cut) - 2022-10-17 - rtldg

v3.4.1...v3.4.2 https://github.com/shavitush/bhoptimer/releases/tag/v3.4.2

Bug fix release for v3.4.0 / v3.4.1. See the changelogs here: https://github.com/shavitush/bhoptimer/releases/tag/v3.4.0 https://github.com/shavitush/bhoptimer/releases/tag/v3.4.1

  • mark SteamWorks_SetHTTPRequestAbsoluteTimeoutMS as optional in shavit-zones-http f16b9aa7f3
  • faster mysql query for the deprecate exact_time_int stuff (and more migration logging) 07727e1db0
    • the transaction batches turned out to be REALLY slow

v3.4.1 - Long overdue edition (Director's Cut) - 2022-10-16 - rtldg

v3.4.0...v3.4.1 https://github.com/shavitush/bhoptimer/releases/tag/v3.4.1 d0d3c62ff5

Bug fix release for v3.4.0. See the changelog for v3.4.0 here: https://github.com/shavitush/bhoptimer/releases/tag/v3.4.0

  • fix leaderboard times from mysql not parsing correctly (after the deprecation of exact_time_int in v3.4.0 894b039e4e) 4fee1e4cc1
    • Mysql returns formatted floats with commas when it's >=1000 (like 2,095.12345123). The comma makes DBResultSet.FetchFloat (atof internally) return 2 instead of 2095.12345123.
  • potentially fix segmented replay saving edge case & add some error logging if replay files can't be opened for writing 5ac888c3a0

v3.4.0 - Long overdue edition - 2022-10-14 - rtldg

v3.3.2...v3.4.0 https://github.com/shavitush/bhoptimer/releases/tag/v3.4.0 3db30bea98

Note: Release includes eventqueuefix 1.3.1 which works with Sourcemod 1.10/1.11 Windows/Linux

Thanks to all the contributors who pushed this release along by making PRs which made me feel guilty for slacking.

v3.3.2 - bug fixes 2 📲 👙 🍌🕗 🖋 🐰 🚨 🐂 😘 - 2022-07-20 - rtldg

v3.3.1...v3.3.2 https://github.com/shavitush/bhoptimer/releases/tag/v3.3.2 e76ab45a55

  • some czones bugfixes
    • fixed bonus 1 using the same settings as main (bug since 3.3.0) 684ade8dd9
    • fixed czone cookies when using mysql but reverting all the fun space saving stuff 1e7459a6c4
  • made the !editzone adjust menu not have multiple pages bf25061444
  • some random things & doc updates 898c46379d @BoomShotKapow 7878784887
    • also only increases strafe count when not-on-ground now
  • added bhop_avantasia to mapfixes to set rngfix_triggerjump 0 because of one of the roofs with the ac units or whatever they are @lilac1337 cec7805047
  • made looping replay bots spawn on different ticks to hopefully help the people who get the occasional script execution timeout f703aca4d6

v3.3.1 - bug fixes 🥤 - 2022-07-11 - rtldg

v3.3.0...v3.3.1 https://github.com/shavitush/bhoptimer/releases/tag/v3.3.1 5ba8ede632

A release for all the bugs that cropped up for the zones stuff & for the ccname thing.

I did make releases for a couple (v3.3.0-2 through v3.3.0-4) but that was sloppy versioning and then I was too busy to make a release with more of the bug fixes...

Eventqueuefix note: the release zip includes a version for Sourcemod 1.10 & for Sourcemod 1.11. The 1.11 version comes from @BoomShotKapow ce28b301a3. More info here https://github.com/hermansimensen/eventqueue-fix/issues/19. It's needs more testing according to @hermansimensen so feel free to help :) nevermind

v3.3.0 - zone stuff & bloat - 2022-06-28 - rtldg

v3.2.0...v3.3.0-3 https://github.com/shavitush/bhoptimer/releases/tag/v3.3.0 1a86a2b643 https://github.com/shavitush/bhoptimer/releases/tag/v3.3.0-3 8aad5e6f00

Note: Contributors and more copyright attributions were added to files and plugins mostly by skimming through git blame. If a name was missed or should be added/removed, please let me know (also the ordering of names was pretty random)

Edit: bhoptimer-v3.3.0-2.zip = includes 0360b957e4 Edit: bhoptimer-v3.3.0-3.zip = includes 6dc1fb66e4 Edit: bhoptimer-v3.3.0-4.zip = includes bdfa61e3f9

zone stuff

  • main commits e3aac2d24e 4315221b86
  • new cvars:
    • shavit_zones_usesql: Whether to automatically load zones from the database or not. If you're using standardized zones from some source with shavit-zones-http, then you'd change this cvar to 0 for example.
    • shavit_zones_useprebuilt: Whether to automatically hook trigger_multiple zones like climb_zone* and mod_zone*.
    • shavit_zones_usebuttons: Whether to automatically hook climb_* buttons...
  • you can now hook trigger_multiples, func_buttons, and trigger_teleports by their hammerids or by targetname (trigger_multiple/func_button) / target (trigger_teleport).
    • trigger_teleports should usually be hooked by hammerid because hooking by target is a bit iffy.
    • there's a menu that shows all the hookable things and the player's distance to them. also a menu option to hook the thing the player is looking at...
    • oh yeah, it's sm_hookzone and also in the Timer Commands menu
  • shavit-zones-http.sp added. maybe sourcejump can use it or something.
    • this plugin is also a good example of how to use the new APIs for adding zones from other plugins.
    • The dependencies & headers (sm-json & ripext) for this plugin are not included in the bhoptimer repo. You'll have to retrieve them yourself for now if you intend to compile this.
  • zone points are now be normalized (sql migration and when sending to db). corner1 turns into the zone mins and corner2 turns into the maxs.
  • a "speed" zone config thing was added for zones. you can add this key to shavit-zones.cfg to make zone beam textures move.
  • api and stuff:
    • zone_cache_t is now usable for adding zones from other plugins.
      • forward Shavit_LoadZonesHere() is where you should add zone_cache_t's from other plugins
    • removed Shavit_GetStageZone() as it doesn't work well with multiple stage zones.
    • added Shavit_ReloadZones(), Shavit_UnloadZones(), Shavit_GetZoneCount(), Shavit_GetZone(), Shavit_AddZone(), and Shavit_RemoveZone()
    • MAX_ZONES 64->128. MAX_STAGES 51->69.

everything else

  • added an option to use an duplicate other players' checkpoints (https://github.com/shavitush/bhoptimer/pull/1142) @sh4hrazad 487e3db9d0
    • You can toggle this with shavit_checkpoints_useothers (default: 1)
    • new parameters added to Shavit_OnTeleportPre, Shavit_OnTeleport, Shavit_OnSavePre, Shavit_OnSave, Shavit_OnCheckpointMenuSelect, and Shavit_TeleportToCheckpoint
  • changed czone settings to let all zone types be configurable. made the settings for bonuses apply to every bonus ab73e36a15
  • added Zone_Speedmod so oblivious could have fun bonuses acf47a11b1
    • avoid putting these inside of entites that trigger a map's player_speedmod because they'll probably override each other randomly
    • also gravity zones should show the gravity amount in zone edit menus now
  • added the !maprestart & !mapreload aliases a23348d843
  • add csgo stripper:source configs for workshop/2117675766/bhop_craton, workshop/1195609162/bhop_bless, and workshop/859067603/bhop_bless d816423eb6
    • also a config for a shit mod_zone_start on bhop_n0bs1_css was added
  • added ent_fire to cheat commands list since it can be used on csgo bc62b92983
  • added HUD_SPECTATORSDEAD / !hud option Spectator list (only when dead) to hide the spectators list when you're alive because people spectating me makes me nervous 😵‍💫 22a68b491b
  • added shavit_core_hijack_teleport_angles (temporary?) TODO description 53463d8fb9
  • added an option to toggle the basic autostrafer on the autogain/velocity/oblivious autostrafer thing c2e50761ec
    • +Shavit_SetAutogainBasicStrafer, +Shavit_GetAutogainBasicStrafer, sm_autogainbss, +/-autogainbss
  • slay zones were changed slightly so the player-killer has a 100% success rate..... but make it only slay if the timer is running 96ef03e458
  • made the !wr menu also print steamids to chat like the !profile menu does 7dddfe25f3
  • added sm_beamer d8a9dd7d7b
  • added shavit_misc_bad_setlocalangles_fix for CS:S/TF2. fixes some func_rotating things that stop rotating 79baadf541
  • the player's current value from player_speedmods is now reset to 1.0 on timer start. this shouldn't affect many things but it does help on deathrun_steam_works 8f11f9aaf1
    • open an issue or join the discord if you encounter any problems with this please.
  • fixed the Timer Commands admin menu category disappearing or being wiped when some bhoptimer plugins are reloaded 09917f91d9
  • !ccmsg off and !ccname off were changed slightly ||i can't remember what the difference is now|| bfa9aa45e4
  • fixed some flag & admin checks for shavit-chat ranks when reloading or removing admin from people 41f50505f9 affac70f99
  • added buttons, scrolls, and anglediff to huddata_t 8e0e5ec8c1
  • added back button to admin command menus 7c251ef81d
  • sqlite now automatically runs migrations too fa6ccdbded
  • added shavit_core_log_sql and removed Database2/Transaction2 methodmap nonsense 0f44dd1710
  • added an auto stage zone numbering thing for https://github.com/shavitush/bhoptimer/issues/1147 d922cebf97
    • first stage thing is given 2... I'm not really sure what I want to do for this...
  • playtime saving sql queries from disconnecting players are now buffered & grouped into a transaction. so instead of on map change spamming like 12 queries, with the delay between queries for each, the timer will now just have to send one transaction to hopefully help with some slight sql query blockage on map change... fa28502a0d
  • added shavit_replay_disable_hibernation for CS:S. 9cbed1972b
  • fixed permission style setting typo that came from the v3.1.0 release 1a03bdac13
  • updated tf2 gamedata for the 2022-06-21 update 178d42e2fd
  • added some code to help deal with different sql db drivers. should help with porting queries to sqlite (shavit-rankings) & postgresql (sm 1.11) 4486528880

v3.2.0 - checkpoints & resettargetname stuffffff - 2022-04-27 - rtldg

v3.1.3...v3.2.0 https://github.com/shavitush/bhoptimer/releases/tag/v3.2.0 7c842afdf0

Lots of checkpoint API changes and also lots of changes to how the shavit_misc_resettargetname family works.

Protip: If you don't have eventqueuefix on your server then you're going to suffer through booster exploits & other broken shit.

Update shavit-mapfixes.cfg every release. It wasn't ever explicitly mentioned in release notes so I'll put it here.

Maps that have triggers in the start zone for resetting targetnames & classnames should now activate with @GAMMACASE's changes (https://github.com/shavitush/bhoptimer/pull/1123 / https://github.com/shavitush/bhoptimer/pull/1135) to the shavit_misc_resettargetname family, compared to previously where it wiped all events in the startzone and had a lot of cvars added to shavit-mapfixes.cfg to unbreak the maps.

If you have any new breakage on maps, let us know in the discord server or with a Github issue.

// Enable sm_usp, sm_glock, sm_knife, and infinite ammo?
// 0 - Disabled
// 1 - Enabled
// 2 - Also give infinite reserve ammo for USP & Glocks.
// 3 - Also give infinite clip ammo for USP & Glocks.
// 4 - Also give infinite reserve for all weapons (and grenades).
// 5 - Also give infinite clip ammo for all weapons (and grenades).
// -
// Default: "2"
// Minimum: "0.000000"
// Maximum: "5.000000"
shavit_misc_weaponcommands "2"

v3.1.3 - asdf - 2022-02-27 - rtldg

v3.1.2...v3.1.3 https://github.com/shavitush/bhoptimer/releases/tag/v3.1.3 d77fa13ebe

edit: bhoptimer-v3.1.3-1.zip = included eventqueuefix license. bhoptimer-v3.1.3-2.zip = bug fix commit included from 70f29d3ca5

small things mainly and might as well push out a release instead of waiting another two weeks. hopefully nobody notices that half the !czones colors don't work because overlapping beams fucks with the color intensity. might have a bigger release next that messes with how the replays are stored and the replay format.

  • included eventqueuefix 1.2.1 in release zip so people use the correct eventqueuefix version for the timer
  • invert this duck autogain nsl boolean 26dfdcc927
  • added player_speedmod & m_flLaggedMovementValue values to debug targetname hud thing 9a5ff64fc5
  • draw perfs keyhint even in startzone so the hud doesn't resize constantly 987eebb3b0
  • don't let mp_humanteam get in the way of jointeam 1 (for css spectatemenu prompt on first join) a0153de9f8
  • two stats playtime bugfixes 253321ced6 363627603b
  • fixed lowgrav & ladders sometimes breaking still (in 2022) ef5ac148b3
  • added the startinair style setting which might be useful for non-bhop gamemodes like surf or tf2 stuff. might be exploitable so just let me know :^) a6ade753fe
  • @NukoOoOoOoO added !czones so players can change zone colors & style 9c634868cb https://github.com/shavitush/bhoptimer/pull/1119
  • multiple maps added to shavit-mapfixes.cfg
  • don't start non-prespeed styles unless on ground for .5s 89e97dfd3d
  • modified prespeed_ez_vel to hopefully prevent invalid velocities & to make it work with just where the player is looking while standing still 98ee179927
  • make shavit_zones_box_offset affect zones when changed mid-map 840490cc54
  • prevent "invalid" from showing up in the top left immediately after a new WR is made.2e791a8237
    • adds a return value to Shavit_GetWRName
  • make the scroll count !keys display work for (non-prop) replay bots 80e8480b7a
    • adds Shavit_GetReplayEntityFlags(), although it might be removed in the "near" future
  • prevent shavit-replay-recorder from overwriting faster replay files if shavit-replay-playback is unloaded 060ce5e660
  • added more shavit-checkpoint forwards so third-party plugins can store custom data in checkpoints. 69445ebab5

v3.1.2 - asdf - 2022-01-28 - rtldg

v3.1.1...v3.1.2 https://github.com/shavitush/bhoptimer/releases/tag/v3.1.2 d335ec7262

  • more robust max prestrafe limit thing to replace something from v3.1.1 dd0059f15f
  • fix crash that came with the player_speedmod hook 0000000146
  • added bhop_lowg to mapfixes 7399512f5e
  • small change to prespeed_ez_vel's internal stuff to maybe prevent the -2147483648 velocity thing from happening and freezing you 00000008fd

v3.1.1 - asdf - 2022-01-19 - rtldg

v3.1.0...v3.1.1 https://github.com/shavitush/bhoptimer/releases/tag/v3.1.1 a1d30afdbe

Note: If you get errors like this then just restart your server because it should be a one-off thing.

[shavit-rankings.smx] Timer (WR Holder Rank table creation 0/4) SQL query failed. Reason: View 'shavit.wrs' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

[shavit-wr.smx] Timer (WR RetrieveWRMenu) SQL query failed. Reason: View 'shavit.wrs' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
  • made most of the shavit-timeleft time-remaining messages silent 6921f38214
  • removed forgotten chat message when changing timescale b4d13836ea
  • added something to have an empty timer prefix with no preceding space 9adc56e284
  • fixed shavit-stats error when not using shavit-mapchooser 6c88f45ba0
  • make block_pstrafe do nothing when autostrafe is enabled 4167001b5c
  • replay bot name is filled with steamid by default (which is helpful for playing replays of a player who isn't in your db) 2909a38179
  • fixed some pb menu bugginess 6d296caf36
  • added !adverts 3d40d4f809
  • added reset-checkpoints back to tas menu ecbc7edca2
  • prefix css expected hud rank with # 062efd4772
  • basic autostrafer implemented e43c011711
  • moved some style-setting handling stuff around c8c87347a5
  • removed xutax_find_offsets bacc5672fc
  • add !hideweps as an alias for !hidewep fda843a09f
  • added something to help with csgo (128 tick) tas autoprestrafe starting the timer earlier due to going faster than 290.0 aef89e9bb4
  • removed more unnecessary shavit-rankings point recalculations and removed column points_calced_from b3b7de37e2 7a11acf2e6
  • fix bug that'd make players stuck when checkpointing replay bots 117d2d277c
  • hijack angles when autoprestrafing 345461a838

v3.1.0 - asdf - 2022-01-11 - rtldg

v3.0.8...v3.1.0 https://github.com/shavitush/bhoptimer/releases/tag/v3.1.0 0133300a40

important things

  • shavit-replay was split into shavit-replay-playback and shavit-replay-recorder
    • delete shavit-replay.smx or stuff will break
  • added minimum_time (default: 3.5) and minimum_time_bonus (default: 0.5) style keys 2fc7254149 98505fd999 361826908e
    • You will need to adjust these for any meme dumb styles that let you go really fast like parkour, unreal, or thanos.

main changelog stuff

  • closestpos has been updated to v1.1.1. https://github.com/rtldg/sm_closestpos/releases/tag/v1.1.1
  • moved checkpoint code out of shavit-misc and into shavit-checkpoints
  • sped up queries used for recalculating points
  • shavit-mapchooser stuff
    • added smc_mapvote_printtoconsole a3e3e0682b
    • fix an error introduced that involves novote & rtv 0164d15910
    • made !map with no args show the menu using the shavit-mapchooser list 3388c7b5d3
    • fix !map menu using wrong parameter for client 4f98303b4c
    • made rtv change the map immediately if novote wins cf51054460
    • added Shavit_GetMapsArrayList() and Shavit_GetMapsStringMap() cdb4b5746e
    • remove nomination on disconnect ad837a7d24
  • added shavit_rankings_weighting_limit ae82d9a5ad
  • add missing sync next to strafe count in CS:S hud c5d4679c9a
  • changed shavit_misc_botfootsteps to shavit_replay_bot_footsteps c33ea7c0d0
  • turned replay reading & writing functions into stocks so they can be used by external plugins easier ab0fc28c26
  • removed Shavit_OpenCheckpointMenu(). Use FakeClientCommand(client, "sm_checkpoints"); instead 0b31c6a608
  • removed Shavit_OpenStatsMenu(). Use FakeClientCommand(client, "sm_profile steamid"); instead 1bb7b3e274
  • fixed bug that was changing human names on connect message c81f958efb
  • added an alternate format for the !keys text that should work better for linux players a0a2cce04a
  • flashlight flag is now disabled when someone uses !spec 0f66a081a3
  • swapped to using OnPlayerRunCmdPost for recording replay frames 55b6253b30
  • fixed isBestReplay and isTooLong being swapped in Shavit_OnReplaySaved() 4d8faa1099 de1d1d5145
  • fixed own playtime display & rank in !playtime menu df2e9c402d
  • added some stripper configs for bad maps 09693df6eb d59399b59c 5a39f5ce45 849bc0ed76 3f3474f463
  • made !hide's set-transmit hook to also hide dead players like btimes (so players can't use a speclist cheat in csgo) 73b17941ce
  • removed shavit_misc_bhopsounds 0 5d26e76ec2
  • allow !setstart outside of the start-zone b88367d079
  • removed shavit_core_timernozone 4b51bd7116
  • split shavit.inc into .inc files for each plugin. shavit.inc now just includes all the separate .inc files.
  • mapfixes for bhop_overthinker's bonus, shavit_misc_resetclassname_main to unbreak bhop_japan, kz_bhop_strafe_comjump2 and kz_bhop_strafe_comjump2_v2, bhop_horseshit_5, unbreak bhop_decbble 59ec8eb6e5, bhop_appaisaniceman3 dedbba5ec9 5b8a149343, and some more misc 5882e458db
  • something to stop hsw tracking strafes on w 573e97e9dc
  • something that might let people unrtv after a non-rtv'd mapvote cf7c1d85bb
  • replaced shavit_misc_weaponsspawngood with !hud settings that toggle USPs with silencers and glocks being given burst-fire. 8a31bc84aa 0591499471
    • added !hud setting that lets you pick between spawning with a USP or glock.
    • added Shavit_GetHUD2Settings() in this commit
    • made weapons spawn with skins 8ce9cd97b4
  • Fixed SQL error that'd happen from inserting player names on CS:S due to steam names being [32+1] and CS:S names being [32] by introducing SanerGetClientName. 5312c31253
  • Fixed name changes not showing up in chat f61ea0f070
  • added !sm_drawallzones and shavit_zones_allowdrawallzones a68b21e9bd
  • added !tptozone 9cb2298764
  • added map list matches to !wr menu bce7c04afe 64088b6147
  • added Shavit_GetReplayFolderPath() 70ca6ace3d
    • also Shavit_GetReplayFolderPath_Stock xd 4b711b1fab
  • merged bhopstats into repo aba539856e
  • adjusted !keys alignment 03d44c9d23
  • added Shavit_Core_CookiesRetrieved() and Loading... text to hud while player cookies are loading f344fddcdf
  • added kzcheckpoints_ladders style setting 48d8e01769
  • added climb_zone_* parsing for prebuilt zones 30574923e5
  • messed around with the csgo hud to hopefully make it look better 7e04e840c4
  • added !addzone & !delzone as aliases bd596bec75
  • fixed css perfs not showing if sync is not enabled 07b165b3ad
  • disable style setting force_timescale 4e16365991
  • merged !ranks menu and !chatranks menu 30935885d4
  • draw zone beams on !r or !end b78a6ec4ec
  • stop tracking style playtime when dead / spectating fb62419006
  • send message to player after using !ccadd on them bc978b6add
  • use mapchooser maps when possible for calculating !profile & !mapsleft/!mapsdone stats da734db699 c89e1d4400 f8f336d21a
  • make !recentrecords use the shavit_wr_recentlimit cvar correctly 183e758971
  • add hacky fix for zone disappearing after hitting exit on the zone-edit menu 3c5958eb93
  • added more commands to the anti-sv_cheats command list 79cd7f1225
  • print steamids to chat when using !profile <otherplayer> 4d1a0b5eb3
  • allow you to use !settier on a map you're not on (!settier N bhop_different_map) 6d21e25679
  • added Zone_NoTimerGravity and Zone_Gravity c55531168d 13d6d586b3
  • change shavit-zones.cfg parsing so you don't have to include everything every zone type (especially for multiple bonus) 2067dc7c38
  • don't display stop confirmation when in practice mode f3ec01870b
  • don't print practice mode warning when teleporting to practice mode checkpoint while already in practice mode f5652c641e
  • some random checks for times <= 0.11 so dumb times don't happen bff7ace887
  • allow pressing climb_endbutton's without being on the ground f02ac94bbf
  • fixed some buggy kz button restarting things 86b23b33a2
    • Shavit_MarkKZMap() and Shavit_IsKZMap() now require track parameters
  • any number of kz buttons should work on a map now 04eea994d8
  • added shavit_core_save_ips so you can disable storing player ips in the users sql table if you want 729f060f91
  • based strafe count on input vel instead of button flags 0db2b30a77
    • this also solves the thing where using +klook and holding +forward would give you 0 strafes.
  • some wip csgo hud stuff and more forwards 3295e23553 7675b60567
    • Shavit_PreOnTopLeftHUD, Shavit_PreOnDrawCenterHUD, Shavit_PreOnDrawKeysHUD
  • disable shavit-rankings SQL function creation if shavit_rankings_weighting is 1.0 254eea7780
  • made scoreboard update on a 0.2s timer instead of 1.0s a8016dff00
  • unbreak player_speedmods that disable buttons (like the one on bhop_futile) 1802dd8007 03c3af1a4f
  • try to prevent bad mins/maxs values for zones by adjusting how offsets are applied 39c9d96924
    • xc_fox_shrine_japan_v1 will crash if i make a 16unit zone at the top (maybe elsewhere too?) so that's why this was added.
  • make Shavit_OnTimeIncrement unable to edit time (this change breaks some tas plugins) a146b51fb1
    • also fixes usage of the end-zone-offset
      • bumped replay version number to help track which replays might be affected by this 94b3c41f41
  • update velocity-difference if pause-movement is enabled 2e627fe3e2
  • add Shavit_GetReplayFolderPath_Stock 4b711b1fab
  • added style settings that override convars relevant to prespeed for #954 396f2017c5
    • prespeed_type for shavit_misc_prespeed, blockprejump for shavit_core_blockprejump, nozaxisspeed for shavit_core_nozaxisspeed, and restrictnoclip for shavit_misc_restrictnoclip
  • use all valve_fs search-paths for maps folder reader functions (so custom/maps/ folders work better for me) 3c59adce57
  • Refresh menu is now shown on every page of zone editing menus c68d50a4d0
  • ensure timescale-change callback is called on Shavit_LoadSnapshot f14ae3a604
  • made style/track change callbacks actually change style/track before the callbacks happen cd2a74240a
  • add sm_prevcp, sm_nextcp, and sm_deletecp f89816449a
  • hopefully stop timer commands menu from being wiped on plugins reload 1509e77728
  • made some of the admin menus, like time-deletion, reopen aa7887ecf4
  • got more stoptimer confirmation menus working (style change, !end, !r) 53aeec31f2 35391f36d1
    • adds Shavit_OnEndPre, Shavit_GotoEnd(), and Shavit_OnStyleCommandPre
  • made spectate command use !spec handler 62c2a26e48
  • made the timer-increase-scale = tas_timescale * timescale cd91255c52
  • fix wrholderrank table creation error with versions of mysql 8.0 for #1097 94d8d91a82
  • made points recalculate on wr-delete and remove recalculating on mapend (since it's unnecessary) ede141d8c0
  • made shavit-wr validmaps query combine mapzones&playertimes 43d6a31ac0
  • delay wrhrankXXX queries by 10s on mapchange since they're slow and block cookies on databases with a lot (a lot) of runs 8827864fb8
  • made smc_display_timeleft display time until map vote in chat 01a2e616a6
  • made !ihate!main & advertisements messages silent 900083b321
  • made shavit-hud update topleft on track change & spectatee change 431fd18ecb b2d7b4d9bd4a07f7266a53d2917c404eabf89a4f
  • show topleft when spectating idle central !replay bot a750753a62
  • made debug targetname thing a !hud option instead of cvar https://github.com/shavitush/bhoptimer/compare/v3.0.8...master
  • added style setting prespeed_ez_vel which can set the player velocity on first jump for prespeed styles 8e0736e3d3 https://www.youtube.com/watch?v=ae2mH78bzUI
  • made everything in specialstring be set as regular styles. key1;key2=something would set key1 to 1 and key2 to something 73d21ea9d1 8a9fe14274
  • added Shavit_IsClientUsingHide() 4ec8a620be
  • various changes so bhoptimer will work with sourcemod 1.11 3348e54316 ae0145430a
  • add menu parameter to Shavit_OnCheckpointMenuMade 794c379bf2
  • added Shavit_GetZoneTrack(), Shavit_GetZoneType(), and Shavit_GetZoneID() baa824e872 9c4f626076
  • added shavit_chat_enabled if you want to use alternative chat processors fa58b0f7fe
  • made player savestates save on player suicide 871f59c235
  • added option to play replay bots at 0.5 speed in the !replay menu. 0cc406c962
    • adds Shavit_GetReplayPlaybackSpeed()
  • implementation of !pb/!times <target> added for #636 3be3b4e3b2 590d1fb290
  • made csgo use center-text for keys 46550e7a83 f474a944ae
  • spec_next/spec_prev memory leak fix f4d2d6d653
  • shavit-tas.sp, tas, tas_timescale, and more! 4aac85d3fd f193679a9d 1ce6acc5f4 2fa06031de e3ed6027ca 1633201e16 576c773134 da172f07aa ba5ad21661 b34a4e6677 c089b3af9d 0286df9edd a115632b7b e8e8f71657
    • tas_timescale
      • greater than 0.0 = forced tas-timescale on this style (example: "tas_timescale" "0.5")
      • -1 = players can change their timescale manually
      • The implementation was based on KiD-TAS
    • autostrafe
      • -1 = players can toggle between the 1-tick autostrafer & the autogain velocity based one
      • 1 = 1-tick autostrafer from @xutaxkamay (retrieved from KiD-TAS)
      • 2 = faux autostrafer that gives velocity from @defiy (retrieved from defiy/autogain)
      • 3 = faux autostrafer that gives velocity (no speed loss version (for fun high speed turns)) from @defiy
        • not a "legit" tas mode since impossible turns are possible.
    • autoprestrafe
      • TAS Prestrafer for maximum ground movement speed.
    • edgejump
      • Automatically jumps when the player will fall off a ledge next tick.
      • Should jump out of the start-zone with a 0.0 zone offset.
    • autojumponstart
      • Automatically jumps when the player will leave the start zone.
    • "tas" "1" = Enables the TAS style settings unless they are explicitly disabled:
      • tas_timescale -1, autostrafe 1, autoprestrafe 1, edgejump 1, and autojumponstart 1
    • +/- timescale options show up in the segmented checkpoints menu when tas_timescale is enabled 578dd01e1a
    • added !tasmenu/!tasm, !ts <number>, !tsplus <number>, and !tsminus <number>
    • +autostrafe/-autostrafe/!autostrafe, +autoprestrafe/-autoprestrafe/!autoprestrafe, +edgejump/-edgejump/!edgejump, +autojumponstart/-autojumponstart/!autojumponstart
    • added Shavit_ShouldProcessFrame().
    • added fplayer_speedmod, fNextFrameTime, and iLastMoveTypeTAS to timer_snapshot_t
    • Shavit_SetAutostrafeEnabled(), Shavit_GetAutostrafeEnabled(), Shavit_SetAutostrafeType(), Shavit_GetAutostrafeType(), Shavit_SetAutostrafePower(), Shavit_GetAutostrafePower(), Shavit_SetAutostrafeKeyOverride(), Shavit_GetAutostrafeKeyOverride(), Shavit_SetAutoPrestrafe(), Shavit_GetAutoPrestrafe(), Shavit_SetAutoJumpOnStart(), Shavit_GetAutoJumpOnStart(), Shavit_SetEdgeJump, Shavit_GetEdgeJump

Maybe I should've released some of this sooner as 3.0.9, but oh well.

Shoutout to sirhephaestus for watching an 18 hour playthrough of The Witcher 1 game with me and shoutout to aho.

v3.0.8 - asdf - 2021-10-04 - rtldg

v3.0.7...v3.0.8 https://github.com/shavitush/bhoptimer/releases/tag/v3.0.8 b2a95095e7

stuff

  • fix replay bot being given a usp repeatedly on csgo e7bf386d14
  • hide timeleft from chat if smc_hide_rtv_chat 1 468e9bfee9
  • fixed sm_profile without any args not working 468e9bfee9
  • fixed sm_mapsdone without any args not working 0f250cc780
  • added bhop_symbiotic to shavit-mapfixes.cfg 87f361ac3d
  • make the Alphabetic list in !nominate filter out maps following smc_min_tier and smc_max_tier 83a572ce96
  • added map count to tier display string 7375900b83
  • added bhop_drop to mapfixes b64ed479a9
  • added shavit_hud_debugtargetname b1a5339910
  • added shavit_timelimit_minimum & shavit_timelimit_maximum 35de5f5716
  • added shavit_timelimit_hidecvarchange ad48845d62
  • change the dynamic time limit averaging from row-count to the minimum times thing 6b2f709320
  • add shavit_misc_spec_scoreboard_order e53fb80373
  • add ranks to playtime menu c52eb10755
  • removed shavit_misc_prespeed_startzone_message and usage of BHStartZoneDisallowed bfdfff0eb1
  • fixed the completion message when spectating someone that I broke 480dbefabc
  • prevent nominate/unnominate when the map vote is active or finished c3e57b851c
  • added sm_reloadmap & sm_restartmap which reload the current map f425294f54
  • some replay bot changes so bots join and have the true name earlier f7fd2af33c
  • adjust dynamic time limit to always multiply average e174b95043
  • added matches menu when using !map afed33e944 276d74b968

v3.0.7 - asdf - 2021-09-23 - rtldg

v3.0.6...v3.0.7 https://github.com/shavitush/bhoptimer/releases/tag/v3.0.7 346d7f903c e7bf386d14 (v3.0.7-1) (added with a single commit added for csgo handling of shavit_replay_botweapon) 32f0e50905 (v3.0.7-2) (added to fix !profile with no arguments saying it was broken)

stuff

  • some name trim & buffer size stuff for !recent menu 60d9609b7d 94f30693c0
  • reverted shavit-wr change that resulted in handles leaking 8ee42d6490
  • in-game player's cache is refreshed when they have a time of theirs deleted b893486972
  • added !ihate!main 1954583070
  • !wr menu remembers page 82c1605e94
  • !wrn, !wrsw, !bwrscroll, etc added c80515496a
  • added Shavit_SetReplayCacheName 36a468615d
  • fixed prebuilt zones being cached twice https://github.com/shavitush/bhoptimer/commit/ea5e6b853579a9ec3b4cA1fcbb6816c0b17d643a
  • added support for playing btimes replays (file names still need to be renamed) fe1d01e1fb
  • tried to prevent zone beam flickering a bit a62a5ca3bb fe076df49e
  • fix thing that was wiping !wr menu cache 5eae3f686a
  • fix mvp star query not running c25e3404b4
  • wrholder queries changed 8bc2662418
  • add more parameters to Shavit_OnReplayStart and Shavit_OnReplayEnd f88885bafc
  • fixed tf2 linux bot creation 6e3bd85c14
  • add dominatingme symbols for players who hold a wr on the current map 4d03e30e6f
  • fix tf2 uncrouch that would limit velocity cfa724f738
  • added shavit_misc_prespeed_startzone_message b602c57440
  • add playtime tracking. total time & also per-style. (replaces shavit-playtime by cam/whocodes) 670f220b76 d3b285f645 bf9b73180f
  • made !profile/!mapsdone/!mapsleft <steamid> work b23542c1d8 0698a9d77e
  • In End/Start Zone is now only shown when you are inside a zone of your current track ef5bf0c460
  • fixed bullet sound/impact hook not working 100% of the time 24e6a0b937
  • merged in shavit-mapchooser d79cf72559
    • many speed improvements. you can now use !map or !nominate with 6k maps and it won't lag :)
    • added smc_prefix, smc_anti_spam, smc_maplist_type 4, smc_rtv_spectator_cooldown, smc_exclude_prefixes, smc_autocomplete_prefixes, smc_hide_rtv_chat, smc_nominate_delay, sm_extend (alias of sm_extendmap), smc_mapvote_extend_limit -1
    • added something to stop segmented players from accidentally voting by blocking the menu for 1.75s 7342baabe4
    • duplicate maps don't show in the map vote menu anymore fed35516f8
  • moved setting timescale for eventqueuefix events into the timer to handle some style settings (you'll also need to update eventqueuefix) f8147a63f3
  • added bhop_kirous to shavit-mapfixes.cfg 3149fc63f6
  • added track to zone log message 07a55bd250
  • !stats/!profile menu was made cooler by @NukoOoOoOoO & @Nairdaa https://github.com/shavitush/bhoptimer/pull/1077
  • fixed being able to abuse endtouch boosters on segmented (requires eventqueuefix) f4d8e55789
  • migrated map names in db to be lowercase f23bd4b96c
  • updated csgo offsets for UpdateStepSound & GetPlayerMaxSpeed 5b522d31c5 06e9f2338b

v3.0.6 - asdf - 2021-08-21 - rtldg

v3.0.5...v3.0.6 https://github.com/shavitush/bhoptimer/releases/tag/v3.0.6 c00ab666be

  • fix reset-checkpoints menu from being overlapped by the checkpoint menu reopening. thanks, haze fc801e8a01
  • fixed some more errors that came up from the Shavit_OnDatabaseLoaded stuff 309421ad18 599b276e42
  • wr cache is now emptied on map end so you no longer see stale times on map change for a couple seconds 09f34bcef3
  • delayed bot name change to prevent crash in Host_Changelevel f7cd8bf072
  • stopped timescale from being set to less-than-or-equal-to zero. this should fix the rare bug that'd cause people to be stuck on map change 4553286104

v3.0.5 - asdf - 2021-08-20 - rtldg

v3.0.0...v3.0.5 https://github.com/shavitush/bhoptimer/releases/tag/v3.0.5 5687095144 599b276e42 (v3.0.5-2) (replaced with zip with some more sql handle checks & a fix for the Reset checkpoints menu before you can fix it)

  • The zone intersection checks now block start & end zones from intersecting. 6bcb16b361 e00b394356
  • Fixed a number of things for replay bots using custom-frames
  • Added kz_bhop_izanami to shavit-mapfixes.cfg f5a5f5e0c5
  • Made the WR message2 (avg/max vel & perf percentage) only print for non-autobhop styles. a373329499
  • Added Shavit_OnRestartPre to fix using sm_r to respawn from spectator. 3f14b65cc4
    • The return value from Shavit_OnRestart is now ignored.
  • Added shavit_core_disable_sv_cheats to block sv_cheats from being set. 140b43dd40 c5480e7087 9f313ee0cf 4da5d528a6
    • The following commands can only be used by rcon admins now:
      • ent_setpos
      • setpos
      • setpos_exact
      • setpos_player
      • explode <player>
      • explodevector <player> ...
      • kill <player>
      • killvector <player> ...
      • give
      • Also, some of the cheat impulses.
  • The checkpoints menu will now reopen every 0.5s to help people who have bad internet aa78c6fc0e
  • Weapons on the ground will now be removed every 10s if shavit_misc_noweapondrops is enabled. c3ad16b418
  • Nobody liked the replay postframes increasing the time at the end of the replay, so it was removed 2eb78a2a14
  • Changed the wrhrank* family of TEMPORARY tables to be VIEWs instead d4b61a474f
  • Made sure sm_closestpos handles are deleted when a replay is unloaded. c8bcd75fa0
    • By the way, the releases page now has linux & windows binaries made from github actions. Thanks @fuckOff1703
  • Prebuilt zones (mod_zone_*) are inserted into the database now so things like !mapsleft work properly for them.
  • Replay Props have been improved so you can now see entities that are outside your AreaNum! 2733faf57d
  • Added SHAVIT_LOG_QUERIES 2b4d77d281

v3.0.4 - asdf - 2021-08-08 - rtldg

https://github.com/shavitush/bhoptimer/releases/tag/v3.0.0 eab31036a4

  • make mp_humanteam always apply
  • prevent zones from being placed inside another zone
  • fix grid snap visualization

v3.0.3 - asdf - 2021-08-08 - rtldg

https://github.com/shavitush/bhoptimer/releases/tag/v3.0.0 8009dbab88 (probably...)

  • added shavit_misc_resettargetname_main & shavit_misc_resettargetname_bonus to help with some more maps
  • trim lines in convar_class so potentially remove erring crlfs
  • reopen !replay menu only if still open
  • fix some checkpoint/gravity/timescale/speed related stuff
  • make mapname buffers all use PLATFORM_MAX_PATH
  • add missing parameters to function declaration
  • add bhop_space & bhop_crash_egypt to shavit-mapfixes.cfg
  • make {styletag} & {style} work for !replay bots again

v3.0.2 - asdf - 2021-07-31 - rtldg

https://github.com/shavitush/bhoptimer/releases/tag/v3.0.0 8a8db13c4a

  • fix error from gH_SQL being null in OnMapEnd after server restart

v3.0.1 - asdf - 2021-07-30 - rtldg

https://github.com/shavitush/bhoptimer/releases/tag/v3.0.0 32658a029d

  • update eventqueuefix header
  • mark shavit-wr as required in notes
  • fix shavit_misc_hideteamchanges on css
  • make Shavit_OnDatabaseLoaded run after migration like it's supposed to

v3.0.0 - Fluffytail Edition - 2021-07-29 - rtldg

v2.6.0...v3.0.0 https://github.com/shavitush/bhoptimer/releases/tag/v3.0.0 9adf78d311

(originally this was going to be v2.7.0 but it took too long and had too many changes so it became v3.0.0 and also the very_good_yes was deprecated with the bump to v3.0.0)

This update breaks plugins using natives with enum structs along with removing some natives. Recompile any plugin that uses shavit.inc. Also stylesettings_t was removed so anything that uses that will need to be changed, but it's easy to fix.

Also, make sure to post any errors or problems you find in the github issue tracker or in the #timer-support-here channel of the bhoptimer discord https://discord.gg/jyA9q5k

Update Notes TL;DR (the most notable things):

  • You can now make a total of 8 bonuses.
  • !r now goes to the most recent track. !main/!m was added to go to the main track.
  • Multiple replay bots can be spawned simultaneously. Also you can make replay bots that loop styles & tracks.
  • The !replay menu now has options to skip forwards, skip backwards, and play at 2x speed.
  • The stage times from the WR run will now be saved (if you add stage zones).
  • Support added for hermansimensen/eventqueue-fix to allow timescaling map events and help prevent some map exploits.
  • Postframes added to replays.
  • More efficient time-difference calculation possible with rtldg/sm_closestpos
  • Times should now be slightly more accurate by basing off tick-interval instead of frame-time.

Concommands

  • added sm_ccadd <steamid> and sm_ccdelete <steamid> to give ccname&ccmsg access via steamid instead of adding them with admin flags or something (https://github.com/shavitush/bhoptimer/issues/861). 19c5ccb7f3
  • sm_recalcall and sm_recalcmap should be faster now.
  • added sm_toggleadverts for clients.
  • Multiple bonus typo convenience commands added. sm_b1, sm_b2, etc through to sm_b8.
  • Multiple stage typo convenience commands added. sm_s1, sm_s2, etc through sm_s9.
  • !r now resets your timer back to the track you were previously on. !main/!m was added to move you back to the main track
  • sm_p has been changed to be an alias of sm_profile instead of noclip. You'll probably want to use sm_nc now.
    • sm_noclip can now be used as an alias of the timer noclip commands. dd756b95cc
  • sm_loadunzonedmap to load the next unzoned map from the maps folder (doesn't include workshop maps or sub-folders).
  • sm_save will now refresh an open checkpoint menu.

Convars

  • added shavit_rankings_default_tier. (https://github.com/shavitush/bhoptimer/issues/1041)
  • renamed shavit_stats_mvprankones to shavit_rankings_mvprankones.
  • renamed shavit_stats_mvprankones_maintrack to shavit_rankings_mvprankones_maintrack.
  • shavit_misc_prespeed gained 5 - Limit horizontal speed to prestrafe but allow prespeeding. 70ae9bc4cb
  • shavit_hud_timedifference renamed to shavit_replay_timedifference
  • added shavit_replay_timedifference_tick to change often the time/velocity difference values are updated.
  • shavit_misc_hideradar will now force sv_disable_radar on CS:GO. 6229900baf
  • added shavit_replay_dynamicbotlimit to set how many replay bots can be spawned by players.
  • added shavit_replay_allowpropbots to enable/disable Prop (prop_physics) Replay Bots.
  • added shavit_core_timeinmessages to print the server time before chat messages and timer messages. 7df2e2c959
  • added shavit_misc_botfootsteps to toggle replay bot footstep sounds. c4520b7ab8 3c5fa5e07b 4d797d2347
  • added {cr} as an option for shavit_misc_clantag
  • added shavit_misc_weaponcommands 3 to give infinite clip ammo (useful for CSS which doesn't have sv_infinite_ammo). 6bd7b0af0e
  • added shavit_replay_postruntime to set how long postframes should record. 28e9d4029b
  • fixed shavit_misc_godmode 1 (no fall damage) not working (https://github.com/shavitush/bhoptimer/pull/1051)
    • spectators being aimpunched has been fixed also. 4f23ec8791
  • added shavit_misc_weaponsspawngood to make glocks spawn on burst-fire and USPs to spawn with a silencer on.
  • added shavit_core_pause_movement to allow player movement/noclip while paused. (https://github.com/shavitush/bhoptimer/pull/1067)
  • added shavit_zones_prebuilt_visual_offset to adjust the visual zones for maps like bhop_amaranthglow and bhop_tranquility
  • added shavit_misc_experimental_segmented_eyeangle_fix to fix segmented replays have bad eye-angles when teleporting to a checkpoint. aff3f95813

Misc

  • Allow !goto/!tpto from start/end zone (https://github.com/shavitush/bhoptimer/pull/963)
  • only print the stage time message once per stage (https://github.com/shavitush/bhoptimer/pull/965)
  • allow !resume when not on the ground (https://github.com/shavitush/bhoptimer/pull/966)
  • Multiple bonuses (1-8) added (https://github.com/shavitush/bhoptimer/pull/982)
    • Bonus1 settings are copied to any bonuses that don't have settings in shavit-zones.cfg
  • Persistent-data, savestates, and checkpoints have been improved.
    • Can now checkpoint onto a ladder thanks to m_vecLadderNormal.
    • Fixed segmented checkpoints from starting in practice mode sometimes (https://github.com/shavitush/bhoptimer/issues/1023)
    • Persistent data is now kept when changing map to the same map. This is done because of server hibernation causes map changes a lot on csgo which is annoying.
    • reduced some allocations and ArrayList cloning
    • fixed persistent data & savestates spawning you in the wall if you were ducked in a tunnel.
  • Add support for https://github.com/hermansimensen/eventqueue-fix
    • boosters & map outputs can be saved in checkpoints to prevent cheesability
    • events are paused from running when the timer is paused (although this still needs to be worked on)
  • increased top left WR hud buffer size to handle long player names (https://github.com/shavitush/bhoptimer/pull/1050)
  • changed replay bot score from 2000 to 1337 (https://github.com/shavitush/bhoptimer/pull/1059)
  • initial DynamicChannels stuff added (which probably doesn't work too well)
  • Fix exploit allowing extra height on spawn. f7c878b8f1
  • Speculative exploit fix for passing through zones or something. 976fc90d87
  • Speculative fix for timers starting when you're not on the ground. 3f7d3e3a59
  • Fixed bug that caused style command callbacks to register twice.
  • Improve zone drawing cycle stuff.
  • Various SQL query changes to hopefully improve the speed of some things.
  • Replay bots now do a (jank) jump animation (https://github.com/shavitush/bhoptimer/pull/1046)
  • Block SHSW on HSW while still allowing +back to be used in the air to stop. (https://github.com/shavitush/bhoptimer/pull/973)
  • Removed restart warning for segmented styles.
  • Fixed player_speedmod and timescaled styles interacting. For example the bhop_voyage hot air balloon level now works timescaled. 6db6b5f3cf
    • edit 2021-11-08: also speed and timescale both affect styles now since some commit somewhere... slow mo was affected. just remove the "speed" "0.5" and it should work how it used to
  • Setspawn/setstart for each player added. !sp / !ss / !delss / !delsp (https://github.com/shavitush/bhoptimer/pull/1028)
  • Added velocity difference to the HUD from the closest replay time position. 8b48ae8c91
  • Removed base.nav by embedding it in shavit-replay.sp.
  • .nav files are now written for all maps on plugin start. 91ccae3509
  • .nav files can now be loaded without needing to changelevel. 0448297994
  • Show wrs and blank styles on !wr notcurrentmap. dcb9595f1a
  • Menus now stay open forever unless closed.
  • Zone editing and creation modifiers and grid-snap values will now be saved between menu usages. 11137e9407
  • Changed TraceRay masks to use MASK_PLAYERSOLID for zone snapping. (https://github.com/shavitush/bhoptimer/pull/1032)
  • fixed worse-time completion messages not printing for spectators.
  • !keys menu had changed a bit.
  • blocked pausing while ducking. d272aae97b
  • fixed csgo team menu being open on join and also needing to be closed twice. 6386577ef4
  • fix checkpoints not saving timescale. 5c772b06e3
  • The playertimes table added exact_time_int which will be used to save the exact time value since there's some rounding problems with float-formatting & database handling. a6be0127ee
  • fix bug with shavit-timeleft repeatedly calling Shavit_StopChatSound.
  • The weapon commands, sm_glock, sm_usp, and sm_knife, now have rate-limiting to prevent the server from spawning too many entities and crashing. 82918f1945
  • fixed the original zone disappearing if you are editing zones and then cancel. 328f4301aa
  • Spawns created by shavit_misc_createspawnpoints will only fill in missing spawnpoints now and will not create extra. 576534092b fdacc94c32
    • A couple of hooks have been added to make all spawnpoints valid for spawning and to skip "Team is full" checks for bots. 50d000c20e d5713824ce
  • fixed a bug that'd give 2 completions on initial map finish. 7b4d2f5b23 ca6ad88b7b
    • A migration was added to subtract 1 from all completions in the database to correct older times that were affected. 4f704a2fe4
  • The zone start-point and end-point are now blocked from being placed in the same x or y axis. aka: no zero-width zones. 57e6f9563d
  • More radio commands and pinging commands where added to the radio blocklist. 793116d476 35de299212
  • Shavit_PrintToChatAll changed into a native to decrease some allocations and also to work with Shavit_StopChatSound. cdc0c651b9
  • CS:S and TF2 center hud thing now hides when the scoreboard is open so less flickering is shown. 00fa237c28
  • reset stamina on landing for csgo easybhop so you don't have to change sv_staminalandcost (unless you want to) 7117b38038
  • avg/max velocity added to run completion (2nd) message.
    • calculates based on the velocity from every frame instead of velocity on jump. (so it works well with surf)
  • added support for https://github.com/rtldg/sm_closestpos (C++ extension) to improve closest position finding speed.
    • sm_closestpos(0.000006s) -- sourcepawn(0.011590s) (time needed to locate closest position with a long badges replay i had)
  • Added looping, dynamicly spawning, and physics_prop replay bots. 9e43f67fc3 (there's many more commits, but that's the initial one)
    • Looping bots will repeat any replays on tracks and styles specified for it in shavit-replay.cfg.
    • Dynamic bots allow multiple replay bots to be spawned by different players so replay bot hogging isn't as problematic.
    • Prop replay bots are physics_props that the client spectates and don't take a player slot.
      • Currently does not work well with area portals, func_illusionary stuff, and anything that is generally in a different "area".
    • bot_join_after_player is now used to determine whether to spawn bots in an empty server.
      • Here's some relevant convars to disable CS:GO server hibernation or bot-kicking:
      sv_hibernate_postgame_delay 9999999
      sv_hibernate_punt_tv_clients 0
      sv_hibernate_when_empty 0
      bot_auto_vacate 0
      bot_join_after_player 0
      mp_autokick 0
      
  • Removed usage of bot_quota and started to call BotAddCommand directly which works really well and is really cool and I love it. bot_quota sucks. 57e9072b19
  • Replay playback should work a bit better if the tickrate was changed by TickrateControl (https://github.com/shavitush/bhoptimer/pull/1018).
  • Post-run frames / postframes added to replays. 28e9d4029b
  • usercmd mousex/mousey and forwardmove/sidemove added to replay file.
  • When spectating replays, the percentage-complete now goes below 0% for preframes and above 100% for postframes.
  • Fixed replay bots teleporting on the last frame of a replay and screwing up prediction.
  • the !replay menu now includes +1s, -1s, +10s, -10s, and 2x speed options to rewind/fastforward. a2735d8a2a
  • Stage stuff: 2697e6c5b1 and 96281d2f85

Timer configs

  • shavit-styles.cfg
  • shavit-zones.cfg
    • Zone beams can now be changed for each zone type.
      • beam - the custom beam path for the zone type.
      • vanilla_sprite - whether to use the default sprite or the timer's sprite.
      • no_halo - whether the zone should have a halo drawn for it.
    • Added beam_ignorez to draw zone beams through walls (https://github.com/shavitush/bhoptimer/issues/618)
  • shavit-chat.cfg
    • added w (WR Count) and W (rank out of WR holders) options to the ranks filtering
    • added {pts}, {wrs}, and {wrrank} for chat ranks
  • shavit-replay.cfg
  • shavit-mapfixes.cfg.
    • Sets convars on certain maps.
    • Currently used to adjust prebuilt-zone visual-offsets on a few maps and to disable shavit_misc_resettargetname to the timer doesn't break some maps.

API

  • Constants, enums, and defines:
    • Added MAX_STAGES
    • There's 8 bonuses now. Track_Bonus (1) through Track_Bonus_Last (8)
    • Removed Replay_Legacy
    • Added Replay_Dynamic and Replay_Prop
    • enums ReplayStatus and ReplayBotType have been de-typed so the values can be used as ints.
    • REPLAY_FORMAT_SUBVERSION is now up to 0x08 (+4)! Progress!
  • Added natives:
    • Shavit_GetStyleSetting, Shavit_GetStyleSettingInt, Shavit_GetStyleSettingBool, Shavit_GetStyleSettingFloat, Shavit_HasStyleSetting, Shavit_SetStyleSettingFloat, Shavit_SetStyleSettingBool, and Shavit_SetStyleSettingInt
      • Any key in configs/shavit-styles.cfg can now be grabbed with these
      • Probably will be used to replace specialstring usage eventually
    • Shavit_WRHolders, Shavit_GetWRHolderRank.
    • Shavit_GetTimesTeleported - Eventually the value from this will be stored in the database.
    • Shavit_SetStart / Shavit_DeleteSetStart.
    • Shavit_GetClosestReplayStyle - Returns the style currently being used for the client's time/velocity difference.
    • Shavit_SetClosestReplayStyle - Can be used to change the style used for the client's time/velocity difference to compare a Normal time to a Segmented time for example.
    • Shavit_GetClosestReplayVelocityDifference - Returns the velocity difference between the client and closest position of the target replay.
    • Shavit_GetStyleStringsStruct - Fills a stylestrings_t as an alternative to Shavit_GetStyleStrings.
    • Shavit_GetChatStringsStruct - Fills a chatstrings_t as an alternative to Shavit_GetChatStrings.
    • Shavit_GetAvgVelocity - Retrieves the player's average (2D) velocity throughout their run.
    • Shavit_GetMaxVelocity - Retrieves the player's highest (2D) velocity throughout their run.
    • Shavit_DeleteWR
    • Shavit_IsReplayEntity - Returns true if the entity is a replay bot client or replay bot physics prop.
    • Shavit_GetReplayStarter - Returns the client who started the replay entity.
    • Shavit_GetReplayButtons - Returns the buttons for the replay's current tick. Added since otherwise there'd be no way to grab a Replay_Prop's buttons. Also angle-difference so we can see it in !keys.
    • Shavit_GetReplayCacheFrameCount - Retrieves the frame count from the replay bot's frame_cache_t.
    • Shavit_GetReplayCacheLength - Retrieves the replay length from the replay bot's frame_cache_t.
    • Shavit_StartReplayFromFrameCache - Can be used to start replay bots with a custom frames. Useful for playing a replay downloaded from a global replay database or something.
    • Shavit_StartReplayFromFile - Can be used to start replay bots with a custom frames. Useful for playing a replay downloaded from a global replay database or something.
    • Shavit_GetClientLastStage - Retrieves the clients highest stage number in their current run.
    • Shavit_GetStageWR - Retrieves the WR run's stage time (if it exists).
    • Shavit_GetLoopingBotByName - Used to find a looping replay-bot client-index from the loop-config name.
  • Stocks:
    • GetSpectatorTarget added to shavit.inc. Target might NOT be a client (like when watching a Replay_Prop)
    • GetTrackName added to shavit.inc.
    • SteamIDToAuth added to shavit.inc. Converts STEAM_0:1:61 and [U:1:123] to 123.
      • Now used by sm_wipeplayer, sm_ccadd, and sm_ccdelete.
  • Changed natives:
    • Shavit_OnStart can NOT stop StartTimer anymore. Use Shavit_OnStartPre to stop StartTimer.
    • Shavit_HijackAngles now has a int ticks parameter.
    • Shavit_GetWRCount now has parameters for style and track.
    • Shavit_GetClosestReplayTime(client, style, track) -> Shavit_GetClosestReplayTime(client)
    • void Shavit_GetReplayBotFirstFrame(int style, float &time) -> float Shavit_GetReplayBotFirstFrame(int entity)
    • Shavit_GetReplayBotIndex(int style) -> Shavit_GetReplayBotIndex(int style, int track)
    • Shavit_GetReplayBotCurrentFrame(int style) -> Shavit_GetReplayBotCurrentFrame(int entity)
    • Shavit_GetReplayTime(int style, int track) -> Shavit_GetReplayTime(int entity)
    • Shavit_StartReplay now returns an replay entity index (int) instead of a bool.
    • Shavit_GetReplayBotFirstFrame renamed to Shavit_GetReplayBotFirstFrameTime
    • Shavit_GetReplayPreFrame renamed to Shavit_GetReplayPreFrames
    • Shavit_GetReplayPostFrame renamed to Shavit_GetReplayPostFrames
    • Shavit_GetReplayCachePreFrame renamed to Shavit_GetReplayCachePreFrames
    • Shavit_GetReplayCachePostFrame renamed to Shavit_GetReplayCachePostFrames
    • Shavit_GetPlayerPreFrame renamed to Shavit_GetPlayerPreFrames
    • Shavit_GetTimeOffset replaced with to Shavit_GetZoneOffset
  • Changed Structures:
    • timer_snapshot_t now includes fAvgVelocity, fMaxVelocity, fTimescale, iZoneIncrement, and fTimescaledTicks.
      • fTimeOffset was replaced with fZoneOffset.
    • cp_cache_t now includes iSteamID, aEvents, aOutputWaits, and vecLadderNormal
      • iTimerPreFrames removed.
  • Removed Structures:
    • stylesettings_t - Use some of the new GetStyleSetting natives.
  • Removed natives:
    • Shavit_GetStyleSettings - Use some of the new Shavit_GetStyleSetting* natives instead.
    • Shavit_GetGameType - Use GetEngineVersion instead.
    • Shavit_GetDB - Use Shavit_GetDatabase instead.
    • Shavit_GetTimer - Use different natives.
    • Shavit_GetWRTime - Use Shavit_GetWorldRecord instead.
    • Shavit_GetPlayerPB - Use Shavit_GetClientPB instead.
    • Shavit_GetPlayerTimerFrame
    • Shavit_SetPlayerTimerFrame
  • Changed forwards:
    • Shavit_OnUserCmdPre no longer has the stylesettings_t parameter. Use some of the Shavit_GetStyleSetting* natives with the option names from shavit-styles.cfg instead. Examples: Shavit_GetStyleSettingBool(style, "unranked") or Shavit_GetStyleSettingInt(style, "prespeed")
    • Shavit_OnTimeIncrement no longer has the stylesettings_t parameter.
    • Shavit_OnTimeIncrementPost no longer has the stylesettings_t parameter.
    • Shavit_OnFinish gained float avgvel, float maxvel, int timestamp
    • Shavit_OnFinish_Post gained float avgvel, float maxvel, int timestamp
    • Shavit_OnFinishMessage now has a message2 parameter that is used to print an extra message to spectators and the player. Curently prints avg/max velocity and perf percentage. 435a23f065
    • Shavit_OnWorldRecord gained float avgvel, float maxvel, int timestamp
    • Shavit_OnTopLeftHUD will now run more often so plugins like https://github.com/rtldg/wrsj can show the SourceJump WR in the top-left all the time.
  • Added forwards:
    • Shavit_ShouldSaveReplayCopy - Called when a player finishes a run and can be used to save a copy of the replay even if it is not a WR.
    • Shavit_OnStartPre - Used to potentially block StartTimer from starting a player's timer. Previously Shavit_OnStart would've been used.
    • Shavit_OnReplaySaved - Called when a replay (WR or copy) has been saved. SourceJump replay uploader should use this now

v2.6.0 - Community Update Edition - 2020-11-23 - kidfearless

v2.5.7a...v2.6.0 https://github.com/shavitush/bhoptimer/releases/tag/v2.6.0 06addf326f (v2.6.0) cbda666700 (v2.6.0-1) -- Included fix for Shavit_SaveCheckpoint native

This update breaks plugins using natives with enum structs. To fix simply recompile broken plugins with latest shavit.inc

DHooks is no longer an optional requirement for the timer. You will need it installed in order to use the new precise ticking method

  • GuessBestMapName moved to shavit.inc
  • Tidied up shavit-chatsettings.cfg loading to throw a better exception if not present(Thanks gammacase)
  • Added accountid validation to replay deletion (Thanks deadwinter)
  • PB's are now reset on players if they are connected when their replay is deleted.
  • Times are now incremented after a players movement has been processed in order to more accurately track times and prevent exploits.
  • HUD default values can now be set from a convar.
  • Turn binds now show up in keys panel
  • Players can now enable seeing their rank for the given time in the top left hud.
  • Checkpoints are now stored in an arraylist and can be deleted individually.
  • Radar and flash are now removed constantly to prevent being displayed again.
  • Stamina is now reset inside OnRestart as well.
  • Added OnPlay forward to allow for dynamic wr sounds.
  • Spectate bot if using the !replay command while alive.
  • Implemented a fix for rounds restarting in single round servers into shavit-timelimit.
  • Added enable/disable convars to minor shavit plugins.
  • fix using -1 for shavit_misc_persistdata
  • fix error that happens if you 'sm_tele 0' with no checkpoints
  • don't set FL_ATCONTROLS when dead/spec so you can freecam while paused
  • Added ProcessMovement forwards for easier access.

Big thanks to Gammacase, rtldg, nairdaa, deadwinter, carnifex, and SaengerItsWar for the majority of contributions to the development of the timer this update.

Convars

  • shavit_core_useoffsets - Calculates more accurate times by subtracting/adding tick offsets from the time the server uses to register that a player has left or entered a trigger.
  • shavit_hud_timedifference - Enabled dynamic time differences in the hud.
    • Recommended to be left off.
  • shavit_hud_specnamesymbollength - Maximum player name length that should be displayed in spectators panel.
  • shavit_hud_default - Default HUD settings as a bitflag
    • see description for bitflag values.
  • shavit_hud2_default - Default HUD2 settings as a bitflag
    • see description for bitflag values.
  • shavit_sounds_enabled - Enables/Disables functionality of the shavit sounds plugin.
  • shavit_timelimit_gamestartfix - If set to 1, will block the round from ending because another player joined. Useful for single round servers.
  • shavit_timelimit_enabled - Enables/Disables functionality of the shavit timelimit plugin.
  • shavit_replay_timedifference_cheap - Disabled 1 - only clip the search ahead to shavit_replay_timedifference_search 2 - only clip the search behind to players current frame 3 - clip the search to +/- shavit_replay_timedifference_search seconds to the players current frame.
    • Recommended value if set is 3.
  • shavit_replay_timedifference_search - Time in seconds to search the players current frame for dynamic time differences 0 - Full Scan
    • Note: Higher values will result in worse performance
    • Recommended value if set is 10.

API

  • Changed Structures:
    • timer_snapshot_t now contains time and distance offsets.
  • Changed natives:
    • Shavit_DeleteReplay now passes in the accountid to be validated against, 0 to skip.
  • Added natives:
    • Shavit_GetStageZone - Retrieve the zone ID for a given stage number. Will return exception if stage number doesn't have a zone.
    • Shavit_SetClientPB - Sets the cached pb directly for the given client, style and track.
    • Shavit_GetClientCompletions - Retrieves the completions of a player.
    • Shavit_StartReplay - Starts a replay given a style and track.
  • Changed forwards:
    • Shavit_OnWRDeleted - Added accountid of deleted record.
  • Added forwards:
    • Shavit_OnDelete - Called when a player deletes a checkpoint.
    • Shavit_OnPlaySound - Called before a sound is played by shavit-sounds.
    • Shavit_OnProcessMovement - Called before the server & timer handle the ProcessMovement method.
    • Shavit_OnProcessMovementPost - Called After the server handles the ProcessMovement method, but before the timer handles the method.

v2.5.7a - asdf - 2020-07-07 - kidfearless

v2.5.6...v2.5.7a https://github.com/shavitush/bhoptimer/releases/tag/v2.5.7a 7567cde52d

This update breaks plugins using natives with enum structs. To fix simply recompile broken plugins with latest shavit.inc

If you have performance issues after this update, disable dynamic time difference.

  • Added preruns to replays. Thanks @deadw1nter
  • Added dynamic time difference. Thanks again rellog, and @deadw1nter
  • Implemented hintfix for csgo players to reduce memory leaks.
  • Fix for adminmenu late load or reload. Thanks @Kxnrl
  • Added jump_multiplier and jump_bonus to shavit-styles
  • Increased dynamic memory size
  • Syntax fix for MySQL 8.0
  • Fixed perf jump detection being slightly off

Convars

  • shavit_hud_csgofix - Apply the csgo color fix to the center hud? This will add a dollar sign and block sourcemod hooks to hint message
  • shavit_replay_preruntime - Time (in seconds) to record before a player leaves start zone. (The value should NOT be too high)
  • shavit_replay_prerun_always - Record prerun frames outside the start zone?
  • shavit_misc_restrictnoclip - Should noclip be be restricted?
    • 0 - Disabled
    • 1 - No vertical velocity while in noclip in start zone
    • 2 - No noclip in start zone
  • shavit_zones_box_offset - Offset zone trigger boxes by this many unit
    • 0 - matches players bounding box
    • 16 - matches players center

API

  • Added natives:
    • Shavit_GetReplayStatus - Gets the replay status.
    • Shavit_SaveCheckpoint - Saves a new checkpoint and returns the new checkpoint index.
    • Shavit_GetCurrentCheckpoint - Gets the current checkpoint index.
    • Shavit_SetCurrentCheckpoint - Sets the current checkpoint index.
    • Shavit_GetPlayerPreFrame - Returns the number of preframes in the players current run.
    • Shavit_SetPlayerPreFrame - Sets player's preframe length.
    • Shavit_GetClosestReplayTime - Gets time from replay frame that is closest to client.
    • Shavit_GetPlayerTimerFrame - returns the number of timer preframes in the players current run.
    • Shavit_SetPlayerTimerFrame - Sets player's timer preframe length.
  • Added forwards:
    • Shavit_OnCheckPointMenuMade - Called after the checkpoint menu has been made and before it's sent to the client.
    • Shavit_OnCheckpointMenuSelect - Called when before a selection is processed in the main checkpoint menu.
    • Shavit_OnTimescaleChanged - Called when a clients dynamic timescale has been changed.

v2.5.6 - asdf - 2020-01-23 - kidfearless

v2.5.5a...v2.5.6 https://github.com/shavitush/bhoptimer/releases/tag/v2.5.6 c8467630ab

This update contains changes that may alter your plugin configs. Be sure to backup your plugin configs beforehand.

This update contains changes to the shavit-zones translation files, as well as the zones config files. Update accordingly.

  • Added stage zone to shavit-zones. Accessible via sm_stages and sm_stage.
  • Moved convars into an auto-updating convar methodmap.
  • Moved cp_cache_t enum struct into shavit.inc for native usage.
  • Added dynamic timescales for styles like TAS.
  • Fixed Shavit_GetReplayBotCurrentFrame pointing to the wrong native callback.
  • Selecting an unfinished map from the !profile menu, will attempt to nominate it for the client.
  • Removed extra bracket. Thanks @SaengerItsWar
  • Permission flags inside shavit-styles.cfg no longer need a command override to work.
  • Chat messages from sm_tele are now suppressed.

Console Variables

  • shavit_misc_bhopsounds - Should bhop (landing and jumping) sounds be muted? 0 - Disabled 1 - Blocked while !hide is enabled 2 - Always blocked

API

  • Added natives:
    • Shavit_GetTotalCheckpoints - Gets the total number of CPs that a client has saved.
    • Shavit_GetCheckpoint - Gets CP data for a client at the specified index. See cp_cache_t.
    • Shavit_SetCheckpoint - Sets CP data for a client at specified index. See cp_cache_t.
    • Shavit_TeleportToCheckpoint - Teleports client to the checkpoint at the given index.
    • Shavit_ClearCheckpoints - Clears all saved checkpoints for the specified client.
    • Shavit_OpenCheckpointMenu - Opens checkpoint menu for a client.
    • Shavit_SetClientTimescale - Sets the clients dynamic timescale. -1.0 to use the timescale of the client's style.
      • Note: Values above 1.0 won't scale into the replay bot.
    • Shavit_GetClientTimescale - Gets the clients dynamic timescale, or -1.0 if unset.
  • New forward behavior:
    • Shavit_OnTeleport - now includes the checkpoint index that was teleported to.
    • Shavit_OnSave - now includes the index the checkpoint was saved to. As well as whether that checkpoint triggered an overflow and wiped a previous checkpoint.
    • Shavit_OnEnterZone - now passes the zone data for stage referencing.
    • Shavit_OnLeaveZone - now passes the zone data for stage referencing.
  • Added forwards:
    • Shavit_OnTrackChanged - Called when a player changes their bhop track.
    • Shavit_OnReplaysLoaded - Called when all replays files have been loaded.
    • Shavit_OnTimescaleChanged - Called when a clients dynamic timescale has been changed.

v2.5.5a - asdf - 2019-08-08 - shavit

v2.5.5...v2.5.5a https://github.com/shavitush/bhoptimer/releases/tag/v2.5.5a 979c911a26

As usual, backup your database before ANY update in case something breaks.

If you're suspicious of server's database being slower than it should be, after updating, follow this procedure:

Note that this only applies to installations where bhoptimer was first installed before the release of v2.5.5.

  1. Run the following queries in your database:
# Note: if you use a table prefix, add it in front of the following keywords: playertimes, pt_auth, chat, ch_auth
ALTER TABLE `playertimes` DROP FOREIGN KEY `pt_auth`;
ALTER TABLE `chat` DROP FOREIGN KEY `ch_auth`;
  1. Disable the shavit-rankings module if it's in use.
  2. Start the server, lock it with a password so no one can enter it.
  3. Run the command sm_migration all with root access.
  4. Wait up to 1 minute.
  5. Restart the server. If you desire to use the rankings module, enable it again.

Your database should be MUCH faster if it was misconfigured due to failed migrations.


  • Improved measuring for perfect jumps (scroll styles).
  • Added failsafe to prevent data loss when players finish maps when the database is locked.
  • Fixed !end not working on maps with trigger zones.
  • Fixed trigger zones not working if the running map is the first one since server start.
  • Fixed replay plugin causing connect/disconnect messages to not show up.
  • Added sm_migration command to re-apply database migrations if needed.
  • Added logging when wiping player data.
  • Added warning message when trying to wipe player data for invalid SteamIDs.
  • Minor database optimizations.
  • Fixed foreign keys not being removed/added properly for tables with prefixes, in database migrations.

Console Variables

  • shavit_misc_wrmessages - change this to set the amount of messages that show up when someone sets a WR. 0 to completely disable the message.

API

  • Added natives: (thanks @kidfearless!)
    • Shavit_GetClientFrameCount
    • Shavit_GetReplayFrames
  • Added forwards:
    • Shavit_OnFinishMessage - allows you to modify the finish messages in chat.

v2.5.5 - asdf - 2019-07-14 - shavit

v2.5.4...v2.5.5 https://github.com/shavitush/bhoptimer/releases/tag/v2.5.5 e4c8be08bc

This update features automatic database migrations. Backup your database and read this gist before updating.

(gist enclosed in this spoiler text below:)

31/05/2019 if you are running v2.5.5 or above (from very_good_yes branch), there's some good news. unless you're on sqlite of course. if you're on sqlite, you might have to stick to the same version, or recreate your database i've added database migration and lots of optimizations, you don't need to do them on your end because the plugin will automatically do them for you! *however*, the first batch of database migrations contains 12 migrations, which is a lot. some of them take a while to execute, and some will be pretty much instant
because of that, when you upgrade to from v2.5.4 or older, to v2.5.5 or newer i ask you to follow the following procedure:

0. **DO A DATABASE BACKUP!! YOUR DATABASE MIGHT BREAK IF THE MIGRATION IS BEING INTERRUPTED AND YOU WILL LOSE DATA!!**
1. if you have more than one server running the same database, take them all offline until this process is done
2. close access to the game server that will perform the database migration. via password, server maintenance plugins, firewall, or whatever solution you can think  of
3. update the game server to the latest version of bhoptimer, and start it. the server console will show "applying migration..." lines. let it run, it can take from 5 sec up to even 10 minutes, depending on the size of your database and your server's specs
4. when the migration is done, you should see a `migrations` table in your database with entries from 0 all the way to 11 (as of v2.5.5. newer versions might have more). if you see this, it means that the migration is completed
5. if the migration is completed, you can shut down the server, remove the password and put it back online :)

frequent issues when migrating the database:
```
Timer (zone refresh) SQL query failed. Reason: Unknown column 'flags' in 'field list'
```
- this is fine. the error happens because the zones plugin has no way of knowing if the migration has happened already or not. it should go away right after finishing the migration

```
Timer (rankings, update all points) error! Reason: Incorrect integer value: '[U:1:steamid]' for column ..steamid at row X
```
- the database migration was interrupted or you haven't closed access to the server while migrating! run it again starting from step 1. i hope you have a backup, otherwise this will be a pain in the ass to fix and i will not manually fix your broken database, sorry.

if you notice anything weird with the migration, let me know

Somewhat big update. I'm unmotivated recently so it'll probably be a while until next one.

  • prespeed setting in style config now supports the value of 2. If it's set to 2, the value of shavit_core_nozaxisspeed will be respected by the style.
  • Fixed an error that occurs when someone finishes a map without having any sound in the "noimprovement" section.
  • Fixed record cache issues when maps have more than 1000 records combined between all styles/modes.
  • After opening the KZ menu manually, it will be kept open unless interrupted by other menus.
  • Fixed points recalculation for long map names.
  • Fixed SQL query issues when using table prefix.
  • Fixed foreign key constraints issues when running multiple bhoptimer servers on the same database.
  • Added new CS:GO radio commands to the radio block list.
  • Split replay loaders for the different kinds of replay formats. (technical change, helps me maintain the code)
  • Fixed the very first frame of replays from version 1.4b and below not being played.
  • Added shavit_rankings_llrecalc cvar, see the section below.
  • Optimized chat plugin to not query the database for data saving unless it is needed.
  • Added database migrations! Refer to my gist about it.
  • Optimized the database structure by A LOT. Wait a while (depends on how big your database is) after starting the server, after updating. You should wait at least 30 min for big databases before restarting the server.
  • Added the ability to force invisible zones to be shown the players. The use case is making glitch zones visible to players while not doing it for all of them.
  • Added custom sv_airaccelerate zones.
  • Changed the behavior of No Speed Limit zones to Custom Speed Limit. All old zones are unlimited speed limit.
  • Added GitHub Sponsors. Sponsoring itself is not usable right now because I'm not accepted yet though.
  • Fixed "weapon is not owned by client " error.
  • Added tracking for map completions. It is shown in the submenu of a record's details.
  • Added "simplerladders", see cvar section.
  • Optimized rankings plugin to not query the database for recalculations more times than needed.
  • Split database handles per-plugin instead of using the same connection for all of them.
  • Fixed sync for HSW. Thanks @Nairdaa!

Console Variables

  • shavit_rankings_llrecalc - Maximum amount of time (in minutes) since last login to recalculate points for a player. sm_recalcall does not respect this setting. 0 - disabled, don't filter anyone. This setting optimizes recalculation time by a lot.
  • shavit_core_simplerladders - Allows using all keys on limited styles (such as sideways) after touching ladders. Touching the ground enables the restriction again.

v2.5.4 - asdf - 2019-04-15 - shavit

v2.5.3...v2.5.4 https://github.com/shavitush/bhoptimer/releases/tag/v2.5.4 88b8b9a079

This is a hotfix update with some changes requested shortly after the v2.5.3 update.

  • Added force_groundkeys style property. It forces the key blocking settings even when on ground. e.g. enabling this on W-Only will not allow prestrafing with the A/D keys.
  • Fixed an issue that caused !r to not show up the menu that has "your timer will stop" warning.
  • Slight reorganization the checkpoints menu. I moved the reset button one item below, and it now has a confirmation prompt when you try to reset your checkpoints.
  • Fixed multiple issues with the KZ menu. Additionally, it will now not keep persisting when manually closed.
  • Fixed an issue that caused autobhop WR submenus show the perfect jump %.
  • Fixed a query error with the !rr command on servers running MySQL 5.7 and ONLY_FULL_GROUP_BY. Lower versions, and MariaDB servers are unaffected.

v2.5.3 - asdf - 2019-04-14 - shavit

v2.5.2...v2.5.3 https://github.com/shavitush/bhoptimer/releases/tag/v2.5.3 2a1914010c

  • Added pause button in KZ CP menu.
    • In addition, the KZ CP menu now persists and will re-open in case it disappears.
  • Fixed error when a player uses !top before the rankings have been calculated.
  • Removed the pointless round restarting logic in the Dynamic Timelimit module.
  • Made the default method for zoning to be aiming.
  • Added warning that shows up before using functionalities that can stop the timer when your time passes a defined number of seconds. See the new added console variable shavit_misc_stoptimerwarning. This is triggered on noclip/stop and style changing commands.
  • Added "noimprovement" sound config file. The sound will play if you finish the map, but not beating your personal best.

Console Variables

  • shavit_misc_stoptimerwarning - the amount of seconds someone's timer needs to have to receive the "your timer will be stopped" warning upon using !stop, !nc or changing their style.

API

  • Added natives:
    • Shavit_CanPause - determines whether a player is able to pause or not. A value of 0 means that they can pause or resume their timer. Otherwise, this native retrieves flags: CPR_ByConVar, CPR_NoTimer, CPR_InStartZone, CPR_NotOnGround. Sample usage:
if((Shavit_CanPause(client) & CPR_ByConVar) > 0)
{
    // this code will be executed if the pause cvar is disabled
}
  • New native behavior:

    • Shavit_ResumeTimer - now has a second parameter, teleport. True will teleport the player to the position they paused at.
  • Added forwards:

    • Shavit_OnTeleport - called upon teleporting with a checkpoint
    • Shavit_OnStopPre - called when the timer is stopping. Ignored when Shavit_StopTimer is called with the bypass parameter set to true. Returning false here will prevent the timer from stopping.

v2.5.2 - asdf - 2019-03-29 - shavit

v2.5.1...v2.5.2 https://github.com/shavitush/bhoptimer/releases/tag/v2.5.2 5fb84e6ace

  • Fixed harmless error that occurs when a player is disconnecting before getting fully in-game.
  • Fixed being able to break records by -0.000. Might or might not work. Probably does though.
  • Added integrity checks to replay files.
  • Fixed minor memory leak caused by loading corrupted replay files.

v2.5.1 - asdf - 2019-03-29 - shavit

v2.5.0...v2.5.1 https://github.com/shavitush/bhoptimer/releases/tag/v2.5.1 c631f2f549

Highly recommended to update if you're on v2.5.0.

  • Fixed a game breaking exploit related to persisted data.

v2.5.0 - asdf - 2019-03-29 - shavit

v2.4.1...v2.5.0 https://github.com/shavitush/bhoptimer/releases/tag/v2.5.0 95d9cad309

  • Added enabled, inaccessible and kzcheckpoints style modifiers.
    • enabled - 0 to disable a style, -1 to disable it from being shown in all menus.
    • inaccessible - disables manual switching to the style. You may only switch to such a style using external modules (use case is TP mode for KZ).
    • kzcheckpoints - enables a new mode for checkpoints. They don't modify the timer, you don't keep your speed and they get reset as soon as you start a new run.
  • Added persisting for timer data (also known as "saveloc") on player disconnection.
  • Optimizations to database structure have been applied. If your initial installation was prior to this release, please follow the database maintenance wiki page's instructions.
  • Optimizations to database queries have been applied as well.
  • Improved cvar enforcing in replay plugin.
  • Re-added the "No Speed Limit" text to CS:S HUD.
  • Fixed foreign key error in chat module.
  • Fixed errors in chat module when running SQLite.
  • Changed default zone modifier setting to 16 units.
  • !replay now opens the menu at the same page if playback fails.
  • Fixed a bug that allowed teleporting to deleted checkpoints.
  • Fixed a rare bug with replay playback.
  • Fixed WR counter being inaccurate.
  • Fixed compatibility with ONLY_FULL_GROUP_BY database servers.
  • Removed very old table migration code due to it being slow.
  • Now !style shows bonus rank 1 times if you're on bonus track.
  • Added a decrease button for grid snap during zone setup.
  • Added !mapsdone and !mapsleft commands.
  • Maps left menu now shows map tier.
  • Removed old delete function from admin menu.
  • Fixed mp_humanteam setting being ignored.
  • Changed zone setup to be easier for bonus zones.
  • Transition to last frame of the replay will be smoother now.
  • Fixed replay HUD bug for styles with speed multipliers.
  • Fixed issues with the replay counter for HSW.
  • Revamped spawn point addition. It also supports bonus track now.
  • Fixed rare bug caused by slow databases.

Console Variables

  • shavit_misc_hidechatcmds - hides all commands in chat.
  • shavit_misc_persistdata - controls minimum time (in seconds) to persist timer data for a player that disconnects.

API

  • Added forwards:
    • Shavit_OnTeleport - called upon teleporting with a checkpoint
    • Shavit_OnSave - called upon saving a checkpoint

v2.4.1 - asdf - 2019-03-08 - shavit

v2.4.0...v2.4.1 https://github.com/shavitush/bhoptimer/releases/tag/v2.4.1 a0d205247a

  • Fixed exploit related to checkpoints.
  • Added sm_wipeplayer command.
  • Added style ordering to menus. Use ordering style config to order styles without changing their IDs.
  • Added the ability to stop replay playback as the requester.
  • *Improved logging of single-record deletion.
  • !replay command moves you to spectator, and refers you to the replay bot upon use now.
  • Added PB split to HUD. The top-left HUD will split to two sections; "best" and "PB".
  • Added map tier to start zone HUD.
  • Fixed unintended behavior with checkpoints menu.
  • Added the {rank} format specifier to custom clan tag console variable.
  • !r shows the track in the message if start zone doesn't exist.
  • Fixed HUD showing wrong time when playing with timescale.
  • Fixed checkpoints not properly setting targetname and classname.
  • Fixed error when certain commands are used from the server's console. This fix allows them to work now.
  • Changed !deleteall so you can delete all records per-style rather than just per-track.
  • Fixed an issue where deleted replays would not be overwritten.
  • Added cooldown for replay playback/stop for non-admin users.
  • Fixed replay bots breaking at certain interactions; such as stopping playback between the replay's end and its nullification and then requesting new playback.
  • Improved smoothness of all replay playback.
  • Fixed a bug that caused the last frame of replays seem out-of-place.

API

  • Added natives:

    • Shavit_ChangeClientStyle
    • Shavit_ReloadLeaderboards
    • Shavit_DeleteReplay
    • Shavit_GetOrderedStyles
    • Shavit_IsPaused
  • Added forwards:

    • Shavit_OnRankAssigned

A relatively big update considering it's a minor version, have fun!

v2.4.0 - asdf - 2019-02-02 - shavit

v2.3.6...v2.4.0 https://github.com/shavitush/bhoptimer/releases/tag/v2.4.0 1cd4b4c9c3

Note: bhoptimer now requires SourceMod 1.10 or above.

  • Revamped HUD for CS:GO. CS:GO HUD has been technically modified so it is easier to manipulate for developers.
  • Restructured the whole plugin to use enum struct. Code should be easier to understand. As far as I'm aware other modules should not break. However, they will need to be modified if a recompilation is desired.
  • Fixed chat colors in CS:GO.
  • Deprecated Shavit_GetPlayerPB and Shavit_GetWRTime. Use Shavit_GetClientPB and Shavit_GetWorldRecord respectively.
  • Added shavit_rankings_weighting cvar. This allows you to control the weighting in rankings. Set this to 1.0 to disable weighting and instead give users the exact amount of points shown in record submenus.
  • Changed users.name collation to utf8mb4_general_ci. This is not an automatic migration and will require manual action for existing installations.
  • Added shavit_core_nochatsound to get rid of the chat ticking sound from timer messages.
  • Fixed exploit in chat plugin that allowed breakage of the chat in CS:S.
  • Fixed RTLer not working in chat plugin.
  • Fixed attempts to teleport a kicked/non spawning central bot resulting in logged errors and paused script execution.
  • Changed !hud so it is easier to understand for the end-user. The menu now also has new settings that allow you to disable the main HUD's components individually.
  • Added commands to toggle frequently changed HUD components. !keys, !master, !center, !zonehud, !hideweapon, !truevel
  • Fixed exploit allowing users to submit segmented runs as if they were done in realtime.
  • Fixed server crash exploit with checkpoints.

v2.3.6 - asdf - 2018-12-23 - shavit

v2.3.5...v2.3.6 https://github.com/shavitush/bhoptimer/releases/tag/v2.3.6 98d9b29c1d

bhoptimer v2.4.x and above will require SourceMod 1.10 (6371 or newer)

  • Fixed out of bounds error in Shotgun Shot sound hook
  • Prioritized custom spawns > server zones > prebuilt zones

v2.3.5 - asdf - 2018-12-07 - shavit

v2.3.4...v2.3.5 https://github.com/shavitush/bhoptimer/releases/tag/v2.3.5 f527455a2d

  • Fixed some stats being off (map completion, ranks etc)
  • Fixed targetnames and classnames not saving properly in checkpoints
  • Updated run speed offset for CS:GO
  • Made color formatting in shavit-chatsettings.cfg possible

v2.3.4 - Pausing development for a while - 2018-11-03 - shavit

v2.3.3...v2.3.4 https://github.com/shavitush/bhoptimer/releases/tag/v2.3.4 398c9ee84e

  • Added practice mode alert toggle to !hud.
  • Fixed several issues with CP menu prev/next buttons.
  • Replaced halftime style setting with timescale. I added backwards compatibility. See style config for usage example.
  • Fixed replay unsyncing for a short time when hitting thin teleports while crouching.
  • Optimized replay file writing to be much faster.
  • Fixed issues with unicode inputs for username/chat settings. Might need to manually change the column collation to utf8mb4_unicode_ci.

v2.3.3 - asdf - 2018-10-10 - shavit

v2.3.2...v2.3.3 https://github.com/shavitush/bhoptimer/releases/tag/v2.3.3 b8d0522e96

  • Fixed rankings SQL issues with optimized MySQL/MariaDB configs.
  • Fixed PB in HUD showing rank 0 when it's rank 1.
  • Removed code that is now unnecessary from shavit-sounds.
  • Added Shavit_OnReplayStart and Shavit_OnReplayEnd forwards.

v2.3.2 - asdf - 2018-10-03 - shavit

v2.3.1...v2.3.2 https://github.com/shavitush/bhoptimer/releases/tag/v2.3.2 73fdf77d36

  • Fixed !ranks being broken for some setups.
  • Fixed core loading when rankings is unloaded.

v2.3.1 - asdf - 2018-09-22 - shavit

v2.3.0...v2.3.1 https://github.com/shavitush/bhoptimer/releases/tag/v2.3.1 e9a203ba94

  • Added !deletemap.
  • FIxed !ranks showing titles as unranked even though they're not.
  • Fixed memory leak in shavit-replay.
  • Increased shavit_replay_timelimit's default to 2 hours
  • Made replay plugin not record more frames after going past time limit.

v2.3.0 - asdf - 2018-09-14 - shavit

v2.2.0...v2.3.0 https://github.com/shavitush/bhoptimer/releases/tag/v2.3.0 c774f41ac8

  • Fixed errors.
  • Reworked checkpoints to not be so poopoo.
  • Fixed memory leak with checkpoints.
  • Fixed low gravity styles being trash with boosters.
  • Fixed HUD showing wrong speeds for slower/faster styles.
  • Fixed shavit_misc_prespeed 4. Set to 4 and combine with shavit_core_nozaxisspeed 1 to get the same behavior that SourceCode timer has.
  • Added shavit_replay_botweapon. Choose whatever weapon you want the bots to have.
  • Added shavit_replay_botplususe. You can disable bots from using +use.
  • Added !ranks command in chat module. This shows a list with all* the visible chat titles. Select an entry in the menu to preview the chat rank!
    • Easter eggs and privileged titles are excluded from this menu.
  • Added "easteregg" and "flag" settings to chat titles. The former decides on if it shows up in the !ranks menu. The latter limits this title to the flag/override you choose.

v2.2.0 - new chat processor - 2018-06-23 - shavit

v2.1.2...v2.2.0 https://github.com/shavitush/bhoptimer/releases/tag/v2.2.0 945b1c85d0

  • Wrote a new chat processor for bhoptimer.
    • Uninstall any other chat processor you have installed.
  • Changed clan tag {time} to display only at 1 second or above.
  • Ensured segmented replays with deleted replay data are gone.
  • Added shavit_misc_speclist for misc's !speclist.
  • Added shavit_hud_speclist for HUD's spectator list.
  • Fixed chat color injections.
  • Fixed percentile ranking titles being broken.
  • Fixed SQL error on new setups.
  • Removed flat zone cvar, added shavit-zones config instead.
    • Removed custom spawn from cfg to prevent confusions.
  • Made viewangle recording use verified angles instead. This makes replays smoother, and removes most (not all) of the flickering from segmented replays.
  • Made CP save targetname/classname, both are very efficient now! Closer to real save states.
  • Added shavit_misc_maxcp and shavit_misc_maxcp_seg.
  • Fixed invalid client error on CP saving.
  • Fixed top-left HUD not showing correct style/track data.
  • Removed unused 'spawn point' zone setting.
  • Minor optimizations all around the codebase.
  • Fixed !save behaving differently from the !cp menu option.

v2.1.2 - bug fixes and polishing - 2018-05-07 - shavit

v2.1.1...v2.1.2 https://github.com/shavitush/bhoptimer/releases/tag/v2.1.2 a5c68940c6

  • Changed default +left/right block behavior.
    • 1 now blocks movement, 2 also stops timer.
  • Segmented CP menu now pops up when changing between two segmented styles.
  • Changed bot flag behavior to ensure bots properly get their entity flags applied.
  • Fixed possible memory leak.
  • Fixed chat/style setting errors on player connections.

v2.1.1 - exploit fix - 2018-05-03 - shavit

v2.1.0...v2.1.1 https://github.com/shavitush/bhoptimer/releases/tag/v2.1.1 fda9d81bc7

  • Fixed serious exploit to do with checkpoints. Update ASAP!
  • Reduced database load on server start.
  • Removed perfect jump% from !wr on old, unmeasured records.

v2.1.0 - segmented runs! - 2018-05-02 - shavit

v2.0.3...v2.1.0 https://github.com/shavitush/bhoptimer/releases/tag/v2.1.0 3e558558b0

  • Added support for segmented runs. Use "specialstring" "segments" to allow a style to use segmented checkpoints. Use the !cp menu on supported styles! Segmented styles also work with replays.
  • Fixed multiple memory leaks.
  • Added Segmented (normal) as a style to the default setup.
  • Added shavit_replay_botshooting. This cvar can allow you to disable attacking buttons for bots. 0 will make the bots not press mouse1/mouse2 at all. 1 will only allow shooting, 2 will only allow right clicking and 3 will allow everything.
  • Added two natives: Shavit_HijackAngles, Shavit_GetPerfectJumps.
  • Fixed a bug with replay data when loading a state after finishing the map.
  • Now mp_humanteam is respected by shavit-misc. The TF2 equivalent also is.
  • Now shavit_replay_defaultteam is always respected, regardless of if the map has a spawn point for the team.
  • Rewrote admin menu integration. Use the shavit_admin override to grant access. The Timer Commands category now has replay removal too.
  • Now weapons dropped by disconnected players will automatically clean up.
  • Added record count in !delete menu, disabled buttons when unnecessary.
  • Added perfect jump% measuring for scroll styles.

v2.0.3 - small updates - 2018-04-29 - shavit

v2.0.2...v2.0.3 https://github.com/shavitush/bhoptimer/releases/tag/v2.0.3 c294408c43

  • Added style permissions:
    • Added Shavit_HasStyleAccess native.
    • Added permissions setting to styles. Use like "p;style_tas" for example. First section is the flag needed, and the second section is the override for it.
  • Micro optimization in spawn point generation.
  • Scaled slide zones with speed/gravity.
  • Reworked sounds to emit properly in CS:GO.
  • Fixed typos in the code, and translations. Thanks @strafe!
  • Fixed an issue where players get a wrong rank when actually unranked. Thanks Nairda for finding this!

v2.0.2 - begone, bugs! - 2018-04-19 - shavit

v2.0.1...v2.0.2 https://github.com/shavitush/bhoptimer/releases/tag/v2.0.2 a066507213

  • Addressed CP menu bugs.
  • Addressed an issue where donor plugins not always allowing players to use custom titles.
  • Addressed an issue that caused chat titles to not always show.
  • Fixed CS:S HUD not showing track properly.
  • Fixed pre-zoned maps not saving spawn points if you just started the server.
  • Removed duck/unduck requirement for checkpoints. Upon teleporting, the plugin will automatically adjust you to the state of the checkpoint.
  • Fixed the 'to X rank' parameter when using percentile ranking in titles.
  • Reworked gun shot muting. Now it supports TF2, and I've fixed the issue that caused others' gun shots to not play at all in CS:GO.
  • Added shavit_core_defaultstyle. Usage: style ID. Add an exclamation mark as the prefix to ignore style cookies (i.e. "!3" to force everyone to play scroll when they join).

v2.0.1 - bug fixes - 2018-03-23 - shavit

v2.0.0...v2.0.1 https://github.com/shavitush/bhoptimer/releases/tag/v2.0.1 c28de91fd4

  • Fixed serious exploits that had to do with checkpoints.
  • Fixed not being able to change the teleport zones' track on creation.
  • Fixed CS:S HUD not showing irregular tracks.
  • Fixed HUD breaking apart after adding styles without server restarts.
  • Removed minimum for shavit_timelimit_default.

v2.0.0 - official release! - 2018-03-18 - shavit

1.4b-hotfix...v2.0.0 https://github.com/shavitush/bhoptimer/releases/tag/v2.0.0 f9b67450db

We're out of beta now! The last release was in September 21, 2015. There have been too many changes, but I'll try to mention the important ones.

  • Added configuration files.
  • There are multiple styles now. They're defined in addons/sourcemod/configs/shavit-styles.cfg.
  • The database structure has been revamped. Visit the wiki page for information.
  • Added cvars for most features.
  • Created a website for bhoptimer. See https://bhop.online/
  • Revamped the whole zones plugin. You can setup aesthetic looking zones thanks to grid snapping, wall snapping and cursor zoning.
  • Added many zone types: No speed limit, teleport zone, easybhop zone, slide zone.
  • You can now choose the zone sprite.
  • You can now edit zones after creating them. This includes manual editing of coordinations.
  • The plugin has received massive optimizations. It's very lightweight now.
  • Added a stats module. The main command is !stats (or !profile), it shows lots of useful information.
  • Added a dynamic timelimits module. It sets the timelimit for the map relatively to the average completion time.
  • Added replay bots. By default, there's a single bot that players can choose to playback with, the command is !replay. The recorded data is saved in an efficient structure (binary, rather than UTF) to make sure the server doesn't hiccup when data is saved.
  • Added a rankings module. The design idea is simple: points given per record are relative to the map's length, tier and how good the record is compared to the rank 1 record. The style played also affects the amount of points given.
  • Added bonus track.
  • Added logging for admin actions.
  • Added chat module. It integrates with rankings and allows players to use custom titles if they have access. See !chatranks and !cchelp.
  • The target version is now SourceMod 1.9 as it offers functionality needed for accurate timing.
  • Added checkpoints. You can save while spectating players or bots too. Teleporting will make sure you're at the exact same state you were in while saving (including timer data), so that you can't segment an impossible to achieve record.
  • Added automatic integration with KZ maps with buttons, and the Fly zoning standard.
  • Added +strafe detection.
  • Added strafe/sync counters.
  • Added custom sv_airaccelerate values for styles.
  • Added the ability to have custom physics for styles (i.e. HSW, SHSW, W-only etc).
  • Made prespeed/prejump limitations more user-friendly.
  • Added CS:S support.
  • Added TF2 support.
  • Fixed zones not rendering after a certain number.
  • Added the !hud command, it allows players to make their HUD contain the information they want to see.
  • Added commands to teleport to the end zones (!end, !bend).
  • Added team join hooks for comfortable spawning.
  • Added spectator lists.
  • Redone player hiding.
  • Added player teleportation.
  • Added weapon commands (!usp, !glock, !knife) and ammo management.
  • Added noclip commands (!p, !nc, +noclip etc).
  • Allowed dropping all weapons.
  • Added godmode.
  • Added custom prespeed limitations.
  • Removed clutter (like team changes) from chat.
  • Hid radar.
  • Changed weapons to disappear when dropped.
  • Added auto-respawn.
  • Added radio commands blocking.
  • Added scoreboard manipulation (clan tags, score/deaths etc).
  • Added configurable chat advertisements.
  • Added player ragdoll removal.
  • Added fuzzy search in !wr (so you can write !wr arcane rather than !wr bhop_arcane_v1 for example).
  • Added !rr command to see the recent world records.
  • Fixed all reported bugs.

v1.4b - hotfix - 2015-09-21 - shavit

1.4b...1.4b-hotfix https://github.com/shavitush/bhoptimer/releases/tag/1.4b-hotfix 489a6826d7

Fixed compilation for the SM 1.7.3 compiler.

v1.4b - more plugins - 2015-09-20 - shavit

1.3b...1.4b https://github.com/shavitush/bhoptimer/releases/tag/1.4b 519a647a53

shavit-core:

  • + Add a cvar for autobhop.
  • + Add a cvar for +left/right blocks.
  • + Add cvars that prevent pausing/restarting.

shavit-zones:

  • + Add a submenu that can adjust the zone's X/Y/Z axis before it's being confirmed.

[NEW PLUGIN] shavit-stats:

  • + Show maps done (/SW)
  • + Show maps left (/SW)
  • + Show SteamID3
  • * Make it actually work

[NEW PLUGIN] shavit-timelimit:

  • + Take an average of X (default: 100) times on a map and use it to decide the timelimit/roundtime for the map.

[NEW PLUGIN] shavit-replay:

  • + Properly working replay bot for forwards
  • + ^ same but also for sideways

v1.3b - Freestyle zones update! - 2015-07-27 - shavit

1.1b...1.3b https://github.com/shavitush/bhoptimer/releases/tag/1.3b fd4bb2c672

shavit-core:

  • Handle freestyle zones

shavit-zones:

  • Allow creation of freestyle zones
  • Make multiple freestyle zones possible (damn you Aoki and badges for making stuff difficult!)
  • Handle deletion of multiple freestyle zones
  • Handle drawing of end/freestyle zones properly

The update should (SHOULD, not promising anything!) also make remote MySQL databases work, even though I'm really against them and they could make the server lag hard. And it also fixes many of the SQL issues that some server owners had.

v1.1b - created github repo - 2015-07-09 - shavit

https://github.com/shavitush/bhoptimer/releases/tag/1.1b 116cbab219