bhoptimer/README.md
2016-07-22 13:36:28 +03:00

7.8 KiB

Build status

Build status

AlliedModders thread

Download

shavit's simple bhop timer

a bhop server should be simple

Mapzones' setup demonstration

Requirements:

  • SourceMod 1.8 and above
  • clientprefs plugin/extension. Comes built-in with SourceMod.
  • The RTLer is required to compile shavit-chat and you don't need Simple Chat Processor as listed in Ther RTLer's requirements.
  • Dynamic for compilation and runtime of shavit-chat.

Optional requirements:

  • DHooks - required for static 250 prestrafe (bhoptimer 1.2b and above)
  • The RTLer - required for properly formatted RTL text within shavit-chat.

Installation:

  1. Add a database entry in addons/sourcemod/configs/databases.cfg, call it "shavit"
"Databases"
{
	"driver_default"		"mysql"

	// When specifying "host", you may use an IP address, a hostname, or a socket file path

	"default"
	{
		"driver"			"default"
		"host"				"localhost"
		"database"			"sourcemod"
		"user"				"root"
		"pass"				""
		//"timeout"			"0"
		//"port"			"0"
	}

	"shavit"
	{
		"driver"         "mysql"
		"host"           "localhost"
		"database"       "shavit"
		"user"           "root"
		"pass"           ""
	}
}
  1. Copy the desired .smx files to your plugins (addons/sourcemod/plugins) folder
    2.1. Copy shavit.games.txt to /gamedata if you have DHooks installed.
  2. Copy base.nav to the maps folder.
  3. Copy the files from the sound folder to the one on your server. Make sure to also have equivelant bz2 files on your FastDL server!
  4. Copy the configs file to your server and modify shavit-sounds.cfg if you wish to.
    5.1. Changing shavit-prefix.txt to contain your MySQL database prefix might be needed depending on your usage.
  5. Restart your server.

Required plugins:

shavit-core - no other plugin will work without it.
shavit-zones - required for shavit-core and for shavit-misc.
shavit-wr - required for shavit-stats, shavit-replay, shavit-sounds, shavit-stats and shavit-rankings.
shavit-rankings - required for shavit-chat.

Todo for 1.5b release (out of beta!)

General

  • Migrate every menu to the 1.7 transitional syntax.
  • Migrate DBI to the 1.7 transitional syntax.
  • Migrate events to the 1.7 transitional syntax.
  • Migrate ADT_Arrays to ArrayList.
  • ENDGAME: Migrate all the cached stuff (timer variables, HUD, chat cache) to Dynamic if I find it good and simple enough.

Core

  • Fix chat colors for CS:S.
  • Add table prefix. (configs/shavit-prefix.txt)
  • Add shavit_core_nostaminareset ("easybhop")
  • Make a global enumerator/variable with per-style settings (bitflags) - configs are canceled, just recompile the plugin with your own edit of shavit.inc.
  • Add unranked styles.
  • Add native that will execute threaded MySQL queries and allow callbacks - including safety checks, to prevent error spams. (Migrate DBI to new syntax first!)
  • Measure strafe sync, also have it in the Shavit_OnFinish forward.
  • Add bonus timer.

HUD

  • HUD toggling command. (sm_hud)
  • Zone (start/end) HUD toggling command. (sm_zonehud)
  • [CS:GO] Replace "- Replay Bot -" for bots with an underlined and pretty text.
  • Remove sm_zonehud and make sm_hud a menu that can toggle HUD, zonehud and spectators list in a panel.
  • Add spectator list.
  • Show time in a "TIME/RECORD" format for replay bots.
  • Support for bonus timer.

Replay

  • Make a boolean native that confirms if a client is a replay bot with loaded data. (used for shavit-hud)
  • Remove replay bot data on deletion of the #1 record.
  • Add admin interface. (delete replay data)

WR

  • Make UpdateWRCache smaller. Will result in extra optimization and more uhm.. dynamic!
  • Add a cvar that limits the amount of records in the WR menu. (default: 50 | shavit_wr_recordlimit)
  • Remove sm_wrsw and make sm_wr a dynamic menu with all difficulties. (dynamic!)
  • [rankings] Show points in WR menu.
  • Add strafe sync to the WR menu where available.
  • Add sm_bwr sm_bonuswr sm_bonusworldrecord.
  • Use unix timestamps for future record dates.

Stats

  • Make style names editable from shavit.inc (like I did to the rest of modules) (dynamic!)
  • Make a submenu per style, for aesthetics.
  • [rankings] Points implementation.
  • Make MVP count the amount of WRs the player has.

Miscellaneous

  • Allow changing the prespeed limitation.
  • Add weapon cleanup.

Sounds (NEW!)

  • Play sounds (from config file | configs/shavit-sounds.cfg) on new events.
  • On new #1.
  • On personal best.
  • On map finish.

Rankings (NEW!)

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

Web Interface

  • Implement points.

Chat (NEW!)

  • Add logic that processes chat without requiring an external plugin such as Simple Chat Processor (Redux).
  • RTLer support.
  • Custom chat titles/colors per individual player.
  • Custom chat titles/colors for rank ranges.
  • Update cache for a player when his rank updates.
  • Add sm_ranks sm_chatranks.
  • Add Shavit_FormatChat native.
  • Add random rgb and random rgba for CS:S parsing.

Zones

  • Add teleport zones (multiple).
  • Use string explosion in ZoneAdjuster_Handler and ZoneEdge_Handler for code efficiency.
  • CANCELED: Migrate zone settings to use Dynamic. (i didn't think too far into it before i started)
  • Handle teleport zones. (teleport to a value from gV_Teleport)
  • Canceled all the triggers stuff because I'm a retard: if you ever feel like doing it because I failed hard, the code I worked with is left out commented.
  • CANCELED: Make zones be trigger-based for high-performance. Also remove InsideZone() and use booleans instead (OnStartTouch/OnEndTouch).
  • CANCELED: Cleanup unused variables as we use triggers now.
  • CANCELED: Add Shavit_OnEnterZone and Shavit_OnLeaveZone

World Records

  • Add native that checks the total amount of players with records on a style.
  • Possibly cache the whole leaderboards with Dynamic.

Time Limits

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