Skip to content

Latest commit

 

History

History
1613 lines (1343 loc) · 135 KB

CHANGELOG.md

File metadata and controls

1613 lines (1343 loc) · 135 KB

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

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

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

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

https://github.com/shavitush/bhoptimer/releases/tag/v3.3.1 https://github.com/shavitush/bhoptimer/commit/5ba8ede632258ff3b0855ef792dce5369bec62da

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 https://github.com/hermansimensen/eventqueue-fix/commit/ce28b301a3d187a96f9c437e81d9d5deefee2fd5. More info here hermansimensen/eventqueue-fix#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

https://github.com/shavitush/bhoptimer/releases/tag/v3.3.0 https://github.com/shavitush/bhoptimer/commit/1a86a2b643a324b38b648ffeeed83c1c19e30b6f https://github.com/shavitush/bhoptimer/releases/tag/v3.3.0-3 https://github.com/shavitush/bhoptimer/commit/8aad5e6f005cc73408191ced645017df175a163f

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 https://github.com/shavitush/bhoptimer/commit/0360b957e46ac46866313f9d7a97d6dc5635c208 Edit: bhoptimer-v3.3.0-3.zip = includes https://github.com/shavitush/bhoptimer/commit/6dc1fb66e4a559ec397575956431dc617ad6f9ae Edit: bhoptimer-v3.3.0-4.zip = includes https://github.com/shavitush/bhoptimer/commit/bdfa61e3f9fb53f96531d76819d8f45a105ab4d2

zone stuff

  • main commits https://github.com/shavitush/bhoptimer/commit/e3aac2d24efc239cf8bc6d1296f0ede031b7f0b1 https://github.com/shavitush/bhoptimer/commit/4315221b86889c65c2b35d9d07bf3241e4c57315
  • 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

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

https://github.com/shavitush/bhoptimer/releases/tag/v3.2.0 https://github.com/shavitush/bhoptimer/commit/7c842afdf05e6c9b37174d7b1d6e21d685f6ce57

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 (#1123 / #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

https://github.com/shavitush/bhoptimer/releases/tag/v3.1.3 https://github.com/shavitush/bhoptimer/commit/d77fa13ebe679b7cca4493436e1fa045a15d3865

edit: bhoptimer-v3.1.3-1.zip = included eventqueuefix license. bhoptimer-v3.1.3-2.zip = bug fix commit included from https://github.com/shavitush/bhoptimer/commit/70f29d3ca55a9f70d64f74ac9059c3cd1ab00a7a

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.

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

https://github.com/shavitush/bhoptimer/releases/tag/v3.1.2 https://github.com/shavitush/bhoptimer/commit/d335ec72625b29f90668ab332f58323e528dd98f

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

https://github.com/shavitush/bhoptimer/releases/tag/v3.1.1 https://github.com/shavitush/bhoptimer/commit/a1d30afdbe8352df489f5e16739efcdde56129f2

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

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

https://github.com/shavitush/bhoptimer/releases/tag/v3.1.0 https://github.com/shavitush/bhoptimer/commit/0133300a400f70116776b71197fb2f4fb0a55e59

important things

main changelog stuff

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

https://github.com/shavitush/bhoptimer/releases/tag/v3.0.8 https://github.com/shavitush/bhoptimer/commit/b2a95095e788f86724ef463f9d8dfae1077c01c3

stuff

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

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

stuff

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

https://github.com/shavitush/bhoptimer/releases/tag/v3.0.6 https://github.com/shavitush/bhoptimer/commit/c00ab666bedc92afdced75f89ce40ff8b2a1f129

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

https://github.com/shavitush/bhoptimer/releases/tag/v3.0.5 https://github.com/shavitush/bhoptimer/commit/5687095144b87c64bc32ec1e7f43baf408270eac https://github.com/shavitush/bhoptimer/commit/599b276e42b2468a28014015d36d637ca548c990 (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)

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

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

  • 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 https://github.com/shavitush/bhoptimer/commit/8009dbab88cafeddd6fb3b9d0cf686c311e6fb52 (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 https://github.com/shavitush/bhoptimer/commit/8a8db13c4a74f9e9c0c22f2e4a5835432c9a85ed

  • 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 https://github.com/shavitush/bhoptimer/commit/32658a029d0aa35ca646434a8518f700d62ac624

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v3.0.0 https://github.com/shavitush/bhoptimer/commit/9adf78d311192f91ccf32edf9decb72fa1597313

(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 (#861). commit
  • 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. commit
  • 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. (#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. commit
  • 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. commit
  • 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. commit
  • added shavit_misc_botfootsteps to toggle replay bot footstep sounds. commit, commit2, commit3
  • 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). commit
  • added shavit_replay_postruntime to set how long postframes should record. commit
  • fixed shavit_misc_godmode 1 (no fall damage) not working (#1051)
    • spectators being aimpunched has been fixed also. commit
  • 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. (#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. commit

Misc

  • Allow !goto/!tpto from start/end zone (#963)
  • only print the stage time message once per stage (#965)
  • allow !resume when not on the ground (#966)
  • Multiple bonuses (1-8) added (#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 (#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 hermansimensen/eventqueuefix
    • 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 (#1050)
  • changed replay bot score from 2000 to 1337 (#1059)
  • initial DynamicChannels stuff added (which probably doesn't work too well)
  • Fix exploit allowing extra height on spawn. commit
  • Speculative exploit fix for passing through zones or something. commit
  • Speculative fix for timers starting when you're not on the ground. commit
  • 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 (#1046)
  • Block SHSW on HSW while still allowing +back to be used in the air to stop. (#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. commit
    • 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 (#1028)
  • Added velocity difference to the HUD from the closest replay time position. commit
  • Removed base.nav by embedding it in shavit-replay.sp.
  • .nav files are now written for all maps on plugin start. commit
  • .nav files can now be loaded without needing to changelevel. commit
  • Show wrs and blank styles on !wr notcurrentmap. commit
  • Menus now stay open forever unless closed.
  • Zone editing and creation modifiers and grid-snap values will now be saved between menu usages. commit
  • Changed TraceRay masks to use MASK_PLAYERSOLID for zone snapping. (#1032)
  • fixed worse-time completion messages not printing for spectators.
  • !keys menu had changed a bit.
    • +left/+right are now visible in the !keys menu (#980)
    • added angle difference arrows (similar btimes) to !keys. commit
    • another commit
  • blocked pausing while ducking. commit
  • fixed csgo team menu being open on join and also needing to be closed twice. commit
  • fix checkpoints not saving timescale. commit
  • 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. commit
  • 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. commit
  • fixed the original zone disappearing if you are editing zones and then cancel. commit
  • Spawns created by shavit_misc_createspawnpoints will only fill in missing spawnpoints now and will not create extra. commit commit2
    • A couple of hooks have been added to make all spawnpoints valid for spawning and to skip "Team is full" checks for bots. commit commit2
  • fixed a bug that'd give 2 completions on initial map finish. commit commit2
    • A migration was added to subtract 1 from all completions in the database to correct older times that were affected. commit
  • 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. commit
  • More radio commands and pinging commands where added to the radio blocklist. commit commit2
  • Shavit_PrintToChatAll changed into a native to decrease some allocations and also to work with Shavit_StopChatSound. commit
  • CS:S and TF2 center hud thing now hides when the scoreboard is open so less flickering is shown. commit
  • reset stamina on landing for csgo easybhop so you don't have to change sv_staminalandcost (unless you want to) commit
  • 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 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. commit (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. commit
  • Replay playback should work a bit better if the tickrate was changed by TickrateControl (#1018).
  • Post-run frames / postframes added to replays. main commit
  • 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. commit
  • Stage stuff: initial commit, and another

Timer configs

  • shavit-styles.cfg
    • force_timescale added. commit
  • 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 (#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. commit
    • Shavit_OnWorldRecord gained float avgvel, float maxvel, int timestamp
    • Shavit_OnTopLeftHUD will now run more often so plugins like 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.6.0 https://github.com/shavitush/bhoptimer/commit/06addf326f155b05f63acec78b816406a3aaaad5 (v2.6.0) https://github.com/shavitush/bhoptimer/commit/cbda66670072ee3dddeb4e309b6ebfaea5291d7e (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

https://github.com/shavitush/bhoptimer/releases/tag/v2.5.7a https://github.com/shavitush/bhoptimer/commit/7567cde52df2adf0461984db72fb60531c331f8e

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

https://github.com/shavitush/bhoptimer/releases/tag/v2.5.6 https://github.com/shavitush/bhoptimer/commit/c8467630ab94c295a740270b888f3d7a68ef54b7

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

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

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

https://github.com/shavitush/bhoptimer/releases/tag/v2.5.5 https://github.com/shavitush/bhoptimer/commit/e4c8be08bc18884236b1b5842df58b83990f0f69

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

https://github.com/shavitush/bhoptimer/releases/tag/v2.5.4 https://github.com/shavitush/bhoptimer/commit/88b8b9a0799e95ac4680c20786d3b412f4a6d788

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

https://github.com/shavitush/bhoptimer/releases/tag/v2.5.3 https://github.com/shavitush/bhoptimer/commit/2a1914010c943e8cfc4e3c5cfbcf9f22de2c052c

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.5.2 https://github.com/shavitush/bhoptimer/commit/5fb84e6ace5fcd8e39a409550d167e7e1501dc60

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.5.1 https://github.com/shavitush/bhoptimer/commit/c631f2f549beef5bc5ecad664236c51f03218d65

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

https://github.com/shavitush/bhoptimer/releases/tag/v2.5.0 https://github.com/shavitush/bhoptimer/commit/95d9cad3091003bb0da4c40c92522635604bb233

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.4.1 https://github.com/shavitush/bhoptimer/commit/a0d205247a5bde6ea7edaf749af4dcad7b21c017

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.4.0 https://github.com/shavitush/bhoptimer/commit/1cd4b4c9c364cdade32456e7caa65ebc07528bd9

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

https://github.com/shavitush/bhoptimer/releases/tag/v2.3.6 https://github.com/shavitush/bhoptimer/commit/98d9b29c1da86bf22df5586428cc5c006c0403c1

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

https://github.com/shavitush/bhoptimer/releases/tag/v2.3.5 https://github.com/shavitush/bhoptimer/commit/f527455a2d66f5ec278a3148bb9bda0be3726ecd

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.3.4 https://github.com/shavitush/bhoptimer/commit/398c9ee84e0c481e29ec1cfd3e2cf55ec7fca36e

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.3.3 https://github.com/shavitush/bhoptimer/commit/b8d0522e96e8867402915d5aa55e9f5fbf0b7ea5

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.3.2 https://github.com/shavitush/bhoptimer/commit/73fdf77d36d1fd60fc2b3417c19454cabc349e50

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

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

https://github.com/shavitush/bhoptimer/releases/tag/v2.3.1 https://github.com/shavitush/bhoptimer/commit/e9a203ba946c58617e77619c45ff292ef1b7cf98

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.3.0 https://github.com/shavitush/bhoptimer/commit/c774f41ac80ca2b77a210a6fe7d7cd8c58f7b37b

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.2.0 https://github.com/shavitush/bhoptimer/commit/945b1c85d00216dfb469b41d0e6ea48e77f852a1

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.1.2 https://github.com/shavitush/bhoptimer/commit/a5c68940c60740d53169da0be847a18c13eb5629

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.1.1 https://github.com/shavitush/bhoptimer/commit/fda9d81bc7ca1bfb32bf8751f6aa24da962dc166

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.1.0 https://github.com/shavitush/bhoptimer/commit/3e558558b003bd7e504fdc0ce9528ce0cbe383d3

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.0.3 https://github.com/shavitush/bhoptimer/commit/c294408c431f315730e0bc71248009d74c1ddc73

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.0.2 https://github.com/shavitush/bhoptimer/commit/a0665072139c16aaac355953404982709f9ba816

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.0.1 https://github.com/shavitush/bhoptimer/commit/c28de91fd4a1a153099c7adc1b95d4be0453ce00

  • 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

https://github.com/shavitush/bhoptimer/releases/tag/v2.0.0 https://github.com/shavitush/bhoptimer/commit/f9b67450db01c1954d28dd36fe2e9ab96c45c11c

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

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

Fixed compilation for the SM 1.7.3 compiler.

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

https://github.com/shavitush/bhoptimer/releases/tag/1.4b https://github.com/shavitush/bhoptimer/commit/519a647a53b79eb46fa3323ca44a1681ccda1f2a

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

https://github.com/shavitush/bhoptimer/releases/tag/1.3b https://github.com/shavitush/bhoptimer/commit/fd4bb2c67201ce30703a66a372a7d6d749db8171

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 https://github.com/shavitush/bhoptimer/commit/116cbab219b05ab033100e2ea2cbd1e52d0a1b92