Skip to content

Latest commit

 

History

History
2408 lines (1951 loc) · 177 KB

CHANGELOG.md

File metadata and controls

2408 lines (1951 loc) · 177 KB

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

Shavit SurfTimer - Change log - 2025-1-18 -

  • Update [v1.0.4 Bugfix...v1.0.5]

WARNING

  • New ranking system is no longer support SQL version without window function, please check your database version before update

Separate control of the prespeed limit for each stage zone/track:

New option 'Speed Limit Options' added in zone edit / create menu, to control the ways to stop client from gaining speed in start zone:

  • Limit horizental speed: Keep player's maximum velocity lower than a specific value (runspeed + shavit_core_prestrafelimit).
  • Block Bunnyhop: Stop player if they jump more than once in start zone.
  • Block Pre-jump: Stop player jumping inside start zone.
  • Reduce speed when exceeding limit: Scale player's velocity to 1/3 if they exceeded limit.
  • Start timer if vertical speed exists: Work as same as the functionality of shavit_core_nozaxisspeed.

If you have two or more start zone on a track, only the highest level of speed limit will apply to all start zone in this track.

New ranking system

New ranking system add rank as factor to caculate points

  • point = rank point (RP) + finish point (FP)

RP : Main - (250, 850] | Bonus - (150, 400] | Stage - (50, 250] FP : Main - 18.33 | Bonus - 35.0

  • Formula

Main = (RP + records * ( tier^2 / 9 - tier )) / rank + (FP * (tier + (tier-4)^2 * tier)) Bonus = (RP + ( records / 2 )) / rank + FP Stage = (RP + records * ( tier^2 / 16 - tier )) / rank + ( tier * 2 )

New features

  • Persistent data for personal replay: Saved replay for a player after disconnected from server
  • New sounds config option wrcp for beating stage records
  • Caculate and storage attempts and stage times for main run on staged map
  • Add checkpoint records comparison menu
  • Add 'Reset speed after teleport' Option for Teleport Zone
  • Storage First login for each users, and display in Profile menu (Thanks for suggestion from @Calig)
  • Auto hook map start zone / end zone / stages / checkpoints for surf maps for specific targetname patterns triggers
  • Integrates newmap feature in shavit-mapchooser github
  • Command !mapinfo <map> to display info of a map in chat.
  • Add mapinfo HUD on key hint.

Bug fixes

  • Fix uncorrect exit back on recent record sub menu
  • Fix problem still able to set teleport destination in another stage zone
  • Fix error on table create
  • Fix bug cause StartTimer stopped by Shavit_OnStartPre after player use noclip
  • Fix bug cause ArrayList.Resize to negative value when Edit replay frames for stage records
  • Fix bug casue error when fetch wrcp from another map
  • Fix speedometer feature disabled cause by plugin late load
  • Fix translation name typos

The following commands are available in new version

  • !cpwr - to see world record's checkpoint records
  • !cppb - to see personal records's checkpoint records
  • !cpr / ccpr - to see comparison between PB and WR
  • !specbot - spectate a replay bot
  • !recalcall - recaculate all points (Admin menu)
  • !newmaps - open new map menu
  • !saveloc - alias command of !save
  • !teleprev !telenext - alias command of !prevcp !nextcp

Merge stuffs from shavit bhoptimer & pull reqest

Change details

  • Teleport to zone changes: Set client to practice mode after teleport to zone [commit]

  • Remove style settings: prespeed_type blockprejump nozaxisspeed [commit]

  • Handle speed limit logic in shavit-core instead of shavit-misc [commit]

  • Check player's speed when zone increment is 1 (Timer started) instead of when EndTouchPost called [commit]

  • Check if a client inside a stage zone when Start/End Touch a zone instead of every tick [commit]

  • Move command sm_useshtier from shavit-ranking to shavit-wrsh [commit]

  • Convar changes:

Remove: shavit_misc_prespeed shavit_misc_prestrafezones shavit_misc_prestrafelimit shavit_core_blockjump shavit_core_nozaxisspeed Add: shavit_core_prestrafezones shavit_core_prestrafelimit shavit_hud_recordnamesymbollength shavit_zone_defaultzoneprespeedlimit shavit_replay_playernamesymbollength shavit_personalreplay_persistdata_expiredtime shavit_wrsh_mapnamefix Default change:shavit_replay_preruntime: 2.0 -> 1.7 shavit_replay_postruntime: 0.1 -> 0.2

  • Native change: Shavit_GetZoneUseSpeedLimit bool -> Shavit_GetTrackSpeedLimitFlags int
  • Add natives: Shavit_GetClientStageAttempts Shavit_SetClientStageAttempts Shavit_GetClientStageAttempt Shavit_SetClientStageAttempt Shavit_GetClientStageFinishTimes Shavit_SetClientStageFinishTimes Shavit_GetClientStageFinishTime Shavit_SetClientStageFinishTime

Shavit SurfTimer - Change log - 2024-11-20 -

  • Update [v1.0.4...v1.0.4 Bugfix]

Shavit SurfTimer update [v1.0.4...v1.0.4 Bugfix]

Release note:

I'm sorry for publish a bugfix release and found this bug at this late, Please understand that I am the only one working on this plugin and no one test this plugin for me. And if there are any server using my plugins (appreciate it), please use this bugfix version ASAP

New feature

  • Allow players to use checkpoints when timer paused
  • Insert new wr's checkpoint times after old wr is deleted

Bug fixes

  • Fix checkpoint times database insert error caused by SQL .
  • Fix bug that cause bot angle flick on replay start.

Shavit SurfTimer - Change log - 2024-11-9 -

  • Update [v1.0.3...v1.0.4]

New plugin

  • New plugin shavit-persenoalreplay, save 5 replay in cache for players and allow them to watch.

New point caculate System

  • Change the way to caculate point for finish map / bonus / stage.
  • See more details HERE

Chat Message Options

  • Add new menu to change chat message options instead in HUD option menu.
  • Add Extra Finish Message for more details of your run.
  • Add Points gained info when player gained points.

New features

  • Caculate And Save Max / Avg / Start / End Velocity and Sync for each stages.
  • New Option Lock Axis for zone creation, much more better to create a zone for not square-shaped platform.
  • Add start speed comparison to WR and PB.
  • New command sm_help to show all commands and description in menu.
  • Stop player prespeed with noclip.
  • Convar shavit_zones_forcetargetnamereset able to handle main / bonus track separately
  • A LOT OF New translations

Bug fixes

  • Fix HUD Formating BUG.
  • Fix SQL Error.
  • Fix bug that cause player teleport to NULL_VECTOR on restart.
  • Fix bug cause timer incidently start in wrong stage start zone.
  • Fix bug of Shavit_StartReplayFromFrameCache Get Native Cell uncorrectly

Merge stuffs from shavit bhoptimer

Shavit SurfTimer - Change log - 2024-7-22 -

  • Update [v1.0.2...v1.0.3]

New features

  • New plugin shavit-ghost2! which can draw WR route for clients in 3 different ways, use sm_ghost to display menu.
  • New plugin shavit-wrsh, fetch top records from SurfHeaven, and allow player to check their rank of map times in SurfHeaven
  • Players can set start for each stages
  • Admins can set map maxvelocity to each maps by using command sm_setmaxvelocity
  • Shows player's stage completions AND stage WRs in player's profile
  • Show players Records of map / bonus / stage in map stats
  • Show recent stage records in Recent records and allow to select map / bonus / stage records separately
  • Allow to create zone by hooking a trigger but create it as box form (for multiple_trigger only)
  • Draw multiple_trigger zone as trigger instead a box (added an option to draw it as a box too)
  • Add new translations for new features

Change to practice mode

  • To prevent player from getting advantage from using noclip, the plugins will put player in practice mode in any situation when a player uses noclip.
  • Practice mode WILL NOT disable when player in start zones (also stage start zone), player can only disable practice mode by using sm_restart (or alias command) to disable practice mode
  • Block player use sm_setstart (or alias command) if they are in practice mode or timer paused

Bug fixes

  • Fix few menu display erros in TpToZone Menu
  • Fix bugs of touching Checkpoint Zone
  • Fix bug of noclip command listener

Merge stuffs from shavit bhoptimer

Shavit SurfTimer - Change log - 2024-5-9 -

Rework of stage timer

shavit-core.sp

  • Add new native Shavit_GetClientStageTime
  • Add new native Shavit_GetClientLastStage
  • Add new native Shavit_SetClientLastStage
  • Add new native Shavit_StartStageTimer
  • Add new forawrd Shavit_OnStageChanged
  • Change forawrd Shavit_OnFinishStagePre paramters
  • Add float varible fCPTimes in struct timer_snapshot_t

shavit-zones.sp

  • Remove global gA_StageStartTimer
  • Remove global gI_LastStage
  • Remove native Shavit_GetClientLastStage
  • Remove native Shavit_SetClientLastStage
  • Remove native Shavit_GetClientStageTime
  • Remove native Shavit_GetStageStartSnapshot
  • Remove native Shavit_SetStageStartInfo
  • Remove native Shavit_GetStageStartTime
  • Remove forawrd Shavit_OnStageChanged
  • Change forward Shavit_OnReachNextStage parameters
  • Call Shavit_StartStageTimer wehn client touchpost in stage zone

shavit-wr.sp

  • Remove global gA_StageReachedTimes

Add new zone Zone_Checkpoint

shavit-zones.sp

  • Add new forward Shavit_OnReachNextCP
  • Add new native Shavit_GetCheckpointCount
  • Change Zone_Stage iType from 12 -> 2
  • Add Zone_Checkpoint iType is 3
  • The rest of zone's type increased by 2 than original type
  • Add new function RecalcHighestCheckpoint
  • Add translations

shavit-core.sp

  • Add new native Shavit_GetClientCPTimes
  • Add new native Shavit_SetClientCPTimes
  • Add new native Shavit_GetClientCPTime
  • Add new native Shavit_SetClientCPTime

Add limit prespeed option when edit Zone_Stage

shavit-zones.sp

  • Add native Shavit_GetZoneUseSpeedLimit
  • Add bool variable bUseSpeedLimit to struct zone_cache_t
  • Add parameter &limitspeed to references if the stage zone limit prespeed
  • Add new translation

sql-create-tables-and-migrations.sp

  • Change migrations Migration_AddZonesFlagsAndData to Migration_AddZonesFlagsAndDataAndSpeedlimit
  • Add new migration `AddMapzonesSpeedlimit
  • Add new column speedlimit in mapzones table

misc

  • Update prespeed limit processing for this new feature
  • Stop setting player's stage time invalid when leave a stage zone without prespeed limit.`

Change zone create style

shavit-zones.sp

  • Change zone creation style from 2 steps to 3 steps The original style was to create a zone two points and use default height, the new one need to set three points to create a zone (specify length, width and height).
  • Add new convar gCV_MinHeight
  • Delete convar `gCV_Height
  • Add translations`

Add new command sm_noclipspeed

shavit-core.sp

  • Add new global gF_NoclipSpeed
  • Add new convar sv_noclipspeed
  • Add new command sm_ns sm_noclipspeed to trigger Command_Noclipspeed

Add new message color config key improving

  • Add new char[] variable sImproving in chatstrings_t

Bug fixes

  • Fix the bug that start zone stop players when they are in booster
  • Fix the bug which show uncorrect time differences when player in bonus
  • Fix the bug which cannot read stage replay file correctly due to the not enough string size

Shavit SurfTimer v1.0.0 - Change log - 2024-4-30 -

-Add new command sm_repeat. -Add new translations for repeat feature. -Change segement style setting.

shavit-core

  • Add new command sm_repeat
  • Add new function CallOnRepeatChanged
  • Add mew global gB_PlayerRepeat
  • Add new native Shavit_IsClientRepeat
  • Add new native Shavit_SetClientRepeat

shavit-zones

  • Add new function ChangeClientLastStage
  • Rework Shavit_SetClientLastStage, call function ChangeClientLastStage instead assign a value to gI_LastStage directly
  • Add new function TeleportToStartZone to teleport a client to start zone, not through any custom spawn zone or custom settings
  • Add new function CallOnZoneDeleted to do stuffs when delete zone
  • Add Stage 1 option to stage menu if Main Start Zone exist
  • Process stage command when argument is 1 (like sm_s 1)
  • Allow start timer when enter a stage zone which has lower stage number than the player's last stage number.
  • Add new native Shavit_TeleportToStartZone
  • Add new forward Shavit_OnStageChanged

shavit-hud

  • Bug fix and show ZoneHUD In Stage 1 Start instead In Main Start when player repeating on stage 1

Shavit SurfTimer v1.0.0 release - Change log - 2024-4-25 -

Implement save/play stage replays. And finish other stuff which related to stage replays. also bug fixes.##

details

shavit-core.sp & core.inc

  • Add new struct stagestart_info_t
  • Replace float fStageStartTime with stagestart_info_t aStageStartInfo in timer_snapshot_t
  • Decrease STYLE_LIMIT from 256 to 128
  • Increased Track_Bonus_Last frome 8 to 12
  • Change Shavit_FinishStage StartTimer BuildSnapshot and Shavit_LoadSnapshot adapted the change of timer_snapshot_t

replay-file.inc & replay-stocks.sp

  • Change REPLAY_FORMAT_SUBVERSION from 0x09 to 0x0A
  • Add new variable int iStage to struct replay_header_t
  • Add new variable int stage to struct frame_t
  • Add new parameter int stage to function LoadReplayCache
  • Add new parameter int stage to function ReadReplayHeader
  • Add new parameter int stage to function WriteReplayHeader
  • Add new parameter int stage to function Shavit_GetReplayFilePath
  • Add stage message to header to 0x0A replay version.

shavit-replay-recorder.sp & replay-recorder.inc

  • Add new Convar gCV_ClearFrameDelay
  • Add new global gH_ClearFrameDelay
  • Change global list gB_GrabbingPostFrames gA_FinishedRunInfo gH_PostFramesTimer to two-dimensional array
  • Change shavit_replay_postruntime default from 1.5 to 0.1
  • Add new function Timer_StagePostFrames to grab frame after player finished a stage
  • Add new function EditReplay
  • Add new function CaculateStageStartPreFrames
  • Add new parameter int stage to ExistingWrReplayLength
  • When client finished a stage during a full run, DoReplaySaverCallbacks will Edit the stage replay from gA_PlayerFrames
  • Record client's current stage number to replay frame.
  • Add new native Shavit_EditReplay

shavit-replay-playback.sp & replay-playback.inc

  • Add new variable bool bStageLoop to struct loopingbot_config_t
  • Add two new variable int iStage int iCurrentStage to struct bot_info_t
  • Add new global int gI_MenuStage
  • Change gA_FrameCache to third-dimensional array (from [STYLE_LIMIT][TRACKS_SIZE] to [STYLE_LIMIT][TRACKS_SIZE][MAX_STAGES])
  • Change gH_ClosestPos to third-dimensional array (from [TRACKS_SIZE][STYLE_LIMIT] to [STYLE_LIMIT][TRACKS_SIZE][MAX_STAGES])
  • Add new function OpenTrackTypeMenu to allow client choose Main Stage or Bonus replay
  • Add new keyword stageloop to shavit-replay config
  • Add new parameter int stage to function FindNextLoop
  • Add new parameter int &stage to function StartReplay
  • Add new parameter int stage to function StopOrRestartBots
  • Add new parameter int stage to function LoadReplay
  • Add new parameter int stage to function LoadReplayCache
  • Add new parameter int stage to function UnloadReplay
  • Add new parameter int stage to function DefaultLoadReplay
  • Add new parameter int stage to function CreateReplayEntity
  • Add new parameter int stage to function DeleteReplay
  • Add new parameter int stage to function FormatStyle
  • Add new parameter int stage to function GetReplayLength
  • Add new parameter int stage to function GetReplayName
  • A lot of stuff to adapt to the above changes
  • Add new parameter int stage to native Shavit_DeleteReplay
  • Add new parameter int stage to native Shavit_GetReplayFrameCount
  • Add new parameter int stage to native Shavit_GetReplayPreFrames
  • Add new parameter int stage to native Shavit_GetReplayPostFrames
  • Add new parameter int stage to native Shavit_GetReplayFrames
  • Add new parameter int stage to native Shavit_GetReplayLength
  • Add new parameter int stage to native Shavit_GetReplayName
  • Add new parameter int stage to native Shavit_IsReplayDataLoaded
  • Add new parameter int stage to native Shavit_StartReplay
  • Add new parameter int stage to native Shavit_StartReplayFromFrameCache
  • Add new parameter int stage to native Shavit_StartReplayFromFile
  • Add new native Shavit_GetReplayBotCurrentStage
  • Add new native Shavit_GetReplayBotStage
  • Add new native Shavit_GetReplayBotInfoIndex

shavit-hud.sp & hud.inc

  • Add new variable iReplayStage to struct huddata_t
  • Make center text and keyhint text show correctly when client spectating a stage replay bot
  • Show L or R while client using +left +right
  • Add stage transaction

shavit-misc.sp & misc.inc

  • Delete native Shavit_GetPreStrafeLimit
  • Add new keywords stage bonus tier to shavit-advertisements config
  • Add stage translation

shavit-checkpoints.sp

  • Generate a snapshot correctly when player save snapshot to a stage replay bot

shavit-tas.sp

  • Fixed a bug where client wouldn't auto jump when leaving the stage start zone

shavit-zones.sp & zones.inc

  • Change native name from Shavit_GetStageStartInfo to Shavit_GetStageStartSnapshot
  • Fix the bug where Shavit_StartTimer not called when player leave the ground in stage start zone and style config startinair is true
  • Delete native Shavit_SetStageStartTime
  • Add new native Shavit_SetStageStartInfo
  • Add new native Shavit_GetMapTrackCount

shavit-wr.sp

  • Get prestrafe limit by FindConVar("shavit_misc_prestrafelimit") instead Shavit_GetPreStrafeLimit
  • Fix the error that called DeleteWRFinal instead DeleteStageWRFinal when player delete a stage world record.
  • Add stage translation

shavit-timelimit.sp

  • Add command sm_ext

speedometer.sp

  • Some bug fixes

Change log - 2024-4-3 -

Main changes

- Add new commands: `sm_deleteallstage` `sm_timer`
- Add timer menu.
- Add delete stage records option to timer admin menu.

shavit-core

API

- Add new forward Shavit_OnTimerMenuMade
- Add new forward Shavit_OnTimerMenuSelect

shavit-wr

- Add new function Command_DeleteAll_Stage

API

- Add new native Shavit_DeleteStageWR

shavit-hud

API

- Merge 2 new forwards `Shavit_PreOnKeyHintHUD` and `Shavit_OnKeyHintHUD`

Change log - 2024-3-28 -

Main changes

- Add new commands: `sm_cpwr` `sm_stagewr` `sm_stageworldrecord` `sm_stageworldrecords` `sm_deletestagerecord` `sm_deletestagerecords`
- Implement display Checkpoint times.
- Implement display stage records.
- Implement stage record deletion.

shavit-core

- Add two view in database: `stagewrs` `stagewrs_min`

shavit-wr

- Add new integer variable `iLastTrack` to struct `wrcache_t`
- Add new function `Command_DeleteStageRecord` `DeleteStageSubMenu` `MenuHandler_DeleteStage_First` to handle stage record deletion.
- Add new function `DeleteStageWR` `DeleteStageWRGetID_Callback` `DeleteStageWRInner` `DeleteStageWR_Callback` `DeleteStageWRFinal` to handle stage wr deletion.
- Fix ArrayList index out of range error when load checkpoint times in cache.
- Now player's timer will stop correctlly if player finish a stage run with excceded prespeed in start zone.
- Checkpoint time message will show correctlly when player finishing a stage run.

APIs

- Change forward `Shavit_OnWRDeleted` behaviour. Add integer parameter `stage`.
- Add new native `Shavit_DeleteStageWR`.

translation

- Add new translation `DeleteStageSingle` `CheckpointRecord`
- Change transaction `ListClientRecords` formatting to show track names.

shavit-zones

- Stop player using `sm_back` in stage start zone to get advantage.

translation

- Add new translation `StageCommandInsideStageZone`

Change log - 2024-3-24 -

shavit-core

- Change table name from "stagetimespb" to "stagecppb"
- Change table name from "stagetimeswr" to "stagecpwr"
- Create new table "stagetimes"

shavit-wr

Now the stage times are able to write and load!

- Add global float variable gF_PlayerStageRecord
- Add global int variable gI_PlayerStageCompletions
- Add global float variable gF_StageWRTime
- Add global int variable gI_StageWRRecordID
- Add global int variable gI_StageWRSteamID
- Add global ArrayList variable gA_StageLeaderboards
- Add global bool variable gB_StageLoadedCache
- Add global StringMap variable gSM_StageWRNames
- Add new function "ResetStageLeaderboard"
- Add new function "ResetStageWRs"
- Add new function "UpdateStageLeaderboards"
- Change function name from "SQL_UpdateStagePBCache_Callback" to "SQL_UpdateCPPBCache_Callback"
- Add new function "SQL_UpdateStagePBCache_Callback"
- Add new function "SQL_OnFinishStage_Callback"
- Implement written stage time to database in forward Shavit_OnFinishStage 

APIs

- Add new native Shavit_GetStageWorldRecord
- Add new native Shavit_GetStageWRRecordID
- Add new native Shavit_GetStageWRName
- Add new native Shavit_GetClientStagePB
- Add new native Shavit_SetClientStagePB
- Add new native Shavit_GetStageRecordAmount
- Add new native Shavit_GetStageRankForTime
- Add new native Shavit_GetStageTimeForRank
- Add new native Shavit_GetClientStageCompletions
- Add new forward Shavit_OnFinishStage_Post
- Add new forward Shavit_OnStageWorldRecordsCached

- Add parameter "stage" to forward Shavit_OnFinish
- Add parameter "stage" to forward Shavit_OnWorldRecord

shavit-hud

Add stage PB/WR HUD to KeyHint

- Now huddata.iRank is assaign correctly when client finishing a stage run.
- Remove HUD2 setting "HUD2_PERFS"
- Add HUD2 setting "HUD2_STAGEWRPB"

translation

- Add new translation HudStageWRPB

shavit-replay-recorder

- Grapping replay info in Shavit_OnFinishStage
- Add parameter "stage" to function SaveReplay
- Add parameter "stage" to function DoReplaySaverCallbacks
- Add int variable "stage" to struct finished_run_info

APIs

- Add new parameter "stage" to forward Shavit_ShouldReplaySave

shavit-zones

- Remove the "stage zone" option when creating a new zone to track bonus.

APIs

- Remove "isStageOnly" parameter from froward Shavit_OnReachNextStage

Change logs - 2024-3-17 -

note

next update i will try to create a new db to storeage stage times. and try to save stage replays.

shavit-core

- Now zone offset is caculate to run time.

shavit-hud

- Change HUD_SYNC to HUD_SPEEDTRAP.
- Change HUD_TOPLEFT to HUD_WRPB.
- Change HUD2_TOPLEFTRANK to HUD_STAGETIME.

shavit-misc

- Add new Convar shavit_misc_prestrafezone to control which start zone and what situation should apply prestrafe limit.

shavit-wr

- Speed trap message shows GetVectorLength() value instead of 2D velocity
- Now speed trap message is able to turn off by HUD settings.

Change logs - 2024-3-3 -

Main Changes

  1. Implemented storeage of StageCP Personal Best.
    • show time difference to PB/WR when player reached next stage
    • add HUD option "stage"
  2. Add center speed HUD.
    • fully color, postion and refresh rate customize
    • show speed difference
    • get color by player's strafe gain
  3. Timer will start when player run on a single stage now.

shavit-core

- Add iLastStage to timer_snapshot_t: int variable, client's last reached stage zone number  
- Add fStageStartTime to timer_snapshot_t: float variable, assign to client's current time when leave a stage zone/start zone.
- Add bStageTimeValid to timer_snapshot_t: bool variable, assign when client leave a stage zone, check if client's velocity greater than prespeed limit
- Add bOnlyStageMode to timer_snapshot_t: bool variable, timer will start in a stage zone if bOnlyStageMode is true.
- Set player's last stage (gI_LastStage iLastStage) to 1 when StartTimer() called
- Assign iLastStage fStageStartTime bStageTimeValid bOnlyStageMode when BuildSnapshot() called

APIs

- Add native Shavit_SetClientTrack
- Add native Shavit_IsOnlyStageMode
- Add native Shavit_SetOnlyStageMode
- Add native Shavit_FinishStage
- Add forward Shavit_OnFinishStage
- Add forward Shavit_OnFinishStagePre
- Change forward Shavit_OnRestart(int client, int track) to Shavit_OnRestart(int client, int track, bool tostartzone)

shavit-checkpoint

- Some change adapte to shavit-core's changes

shavit-hud

- Delete TopLeftHUD
- Now WR/PB and Style are showing on Key Hint
- Add iCurrentStage iStageCount iZoneStage fStageTime bInsideStageZone to huddata_t
- Add ZoneHUD_StageStart to ZoneHUD
- Rework the logic of function AddHUDToBuffer_Source2013
- Add stage message to Center HUD
- Add stage time message to Center HUD
- Show start/end zone's track in ZoneHUD (eg. In Main Start)
- Now main timer show as full min:sec instead dynamic format

shavit-misc

- Adapte bInStart to only stage mode when player inside a stage start zone
- Now apply prespeed limit to a stage zone.

shavit-replay-recorder

- Adapte bInStart to only stage mode when player inside a stage start zone
- Now preframes will reset when player in stage start while bOnlyStageMode is true

shavit-zones

- Add new global timer_snapshot_t struct gA_StageStartTimer
- Add new command "sm_back"
- Add new logic to function Command_Stages
- Add new logic to function Shavit_OnRestart allow player teleport to current stage start zone while running on a single stage
- Call Shavit_StartTimer when player entered a stage zone while bOnlyStageMode is true
- Call Shavit_FinishStage when player entered stage zone which stage number equals gI_LastStage + 1
- Assign 1 to gI_LastStage when player entered a start zone. (start zone recognize as a stage 1 zone)

APIs

- Delete forward Shavit_OnStageMessage
- Add forward Shavit_OnReachNextStage
- Add native Shavit_SetClientLastStage
- Add native Shavit_GetClientStageTime
- Add native Shavit_GetStageStartInfo
- Add native Shavit_GetStageStartTime
- Add native Shavit_SetStageStartTime
- Add native Shavit_InsideZoneStage
- Implemente native Shavit_GetStageCount

shavit-Wr

- Now plugin is able to load player's stage checkpoint personal best to cache
- Add logic to Shavit_OnLeaveZone to check if player's prespeed greater than prespeed limit
- Add logic to Shavit_OnFinish to print message correctly in a situation of first player finish the map.
- Add new global arrayList gA_StageCP_PB
- Add new global variable gA_StageReachedTimes
- Add new global variable gA_StageFinishedTimes
- Add new global variablegA_StageTimeValid
- Add new function ResetStagePBCPs
- Add new function SQL_UpdateStagePBCache_Callback
- Add new function UpdateClientStagePBCacheOnFinish
- Change finish message to "<username> finished [<track>] in <time> (<WR diff> | <PB diff>). Rank: <rank> (<style>)"

APIs

- Add new native Shavit_GetStageCPWR
- Add new native Shavit_GetStageCPPB
- Add new native Shavit_StageTimeValid
- Add new native Shavit_SetStageTimeValid

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

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

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

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

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

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

v3.2.0...v3.3.0-3 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

v3.1.3...v3.2.0 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 (shavitush#1123 / shavitush#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 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

v3.1.1...v3.1.2 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

v3.1.0...v3.1.1 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

v3.0.8...v3.1.0 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

v3.0.7...v3.0.8 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

v3.0.6...v3.0.7 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

v3.0.5...v3.0.6 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

v3.0.0...v3.0.5 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

v2.6.0...v3.0.0 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 (shavitush#861). https://github.com/shavitush/bhoptimer/commit/19c5ccb7f38cc793f974a2c118c1c10ccc20e71a
  • 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_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

Misc

Timer configs

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

v2.5.6...v2.5.7a 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

v2.5.5a...v2.5.6 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

v2.5.5...v2.5.5a 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

v2.5.4...v2.5.5 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

v2.5.3...v2.5.4 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

v2.5.2...v2.5.3 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

v2.5.1...v2.5.2 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

v2.5.0...v2.5.1 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

v2.4.1...v2.5.0 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

v2.4.0...v2.4.1 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

v2.3.6...v2.4.0 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

v2.3.5...v2.3.6 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

v2.3.4...v2.3.5 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

v2.3.3...v2.3.4 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

v2.3.2...v2.3.3 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

v2.3.1...v2.3.2 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

v2.3.0...v2.3.1 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

v2.2.0...v2.3.0 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

v2.1.2...v2.2.0 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

v2.1.1...v2.1.2 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

v2.1.0...v2.1.1 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

v2.0.3...v2.1.0 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

v2.0.2...v2.0.3 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

v2.0.1...v2.0.2 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

v2.0.0...v2.0.1 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

1.4b-hotfix...v2.0.0 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

1.4b...1.4b-hotfix 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

1.3b...1.4b 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

1.1b...1.3b 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