View Single Post
Author Message
alongub
Veteran Member
Join Date: Aug 2009
Location: Israel
Old 07-10-2012 , 13:21   [CS:S] Timer 1.0.7
Reply With Quote #1

Timer

Quick questions, comments, concerns? You can reach me quickly in the SourceMod IRC Channel: #sourcemod

The most recent source code is available at this project's GitHub repository: https://github.com/alongubkin/timer

About
Timer is all about the competitive Bhop, Trikz and XC experience.
  • It is completely modular and extensible.
  • It measures the time and jumps it takes players to finish the map.
  • Players can choose their level of difficulty. You can add up to 32 levels of difficulty, and change their physical effects on the player.
  • It has an advanced world record system.
  • A map start and end is determined by map zones. You can add map zones in-game (video). There are also glitch map zones, that try to stop players from exploiting map bugs that can possibly be used to cheat the timer.
  • It has a HUD that displays players their current timer (or if you're a spectator it displays the timer of the player you're spectating).
  • It supports MySQL, and theoretically SQLite too (but because of a bug in the old version of SQLite that SM uses, the WR module currently doesn't work with SQLite).
  • It supports Updater by GoD-Tony.
Some of its functionality existed in some form in cP mod, among many other features. This plugin is much more focused. It is also modular and extensible - which means you can enable and disable any feature of the plugin, and developers can easily integrate it with their own plugins. If you need the checkpoints functionallity of cP mod, you can use other plugins such as SM_CheckpointSaver.
Modules
Unless stated otherwise, all modules work independently and do not require other plugins/modules to be loaded. The one exception being timer-core.smx, which is required for the timer to work at all. This means that any modules which you are not using can be disabled.
Core - timer-core.smx
The core component of the Timer. It is required for the timer to function. It provides the most of the API, as well as the following commands for players:
  • /restart - Restarts your timer. If the map zones module is enabled, it will teleport the player to the start map zone.
  • /stop - Stops your timer.
  • /pause and /resume - Players can pause their timers, and move around the map. When they resume the timer, it'll automatically teleport them to where they paused it.
Physics - timer-physics.smx
You can configure different levels of difficulty in your server. Every level of difficulty has certain effect on the player who chooses it. You can easily add or remove levels of difficulty, and change their effects on the player.

For example, one can create an 'easy' difficulty with low gravity and auto jump enabled, a 'hard' difficulty where the A and D keys are disabled, and a 'medium' difficulty with a different value of stamina.

The physics module exposes the /difficulty command that allows players to change their level of difficulty.
Map Zones - timer-mapzones.smx
For every map, you can add different map zones. The plugin has an in-game map zone editor for admins.

Timer currently supports 5 types of map zones:
  • A start map zone that automatically starts the timer for players who inside it,
  • An end map zone that stops the timer for a player and adds a new record to the database,
  • ... and 3 other 'glitch' map zones that try to stop players from exploiting map bugs that can possibly be used to cheat the timer.
World Record - timer-worldrecord.smx
Allows players to view the records for the current map using the /wr command. If the physics module is enabled, it will display different world records for each difficulty. This module supports a console version of wr, in the same way status prints results.

It also provides the /record and the /record <name> commands to view your or another player's record for the current map. In addition, it provides the /delete command, that allows you to delete any of your records in this map.
HUD - timer-hud.smx
The HUD module adds a constant hint message for players, showing them their timers. Usually, it shows the time since the timer started, jumps, speed and best times for this map. If the physics module is enabled, it also shows them their current difficulty.

If you're currently spectating someone else, it will show you his timer.
Logging - timer-logging.smx
The logging module has 5 different levels of messages: trace, debug, info, warning and error. It logs to sourcemod/logs/timer-<date>.txt. You can configure the minimum type of messages that you want in your log (for example: warning and errors only), in configs/timer/logging.cfg.

Installation
Just download the attached zip archive and extract to your sourcemod folder intact. Then navigate to your configs/ directory and add the following entry in databases.cfg:

HTML Code:
        "timer"
        {
                "driver"                        "mysql"
                "host"                          "<your-database-host>"
                "database"                      "<your-database-name>"
                "user"                          "<username>"
                "pass"                          "<password>"
        }
The plugin will automatically create the necessary tables.
Configuration
For most modules, there is a corresponding cvar configuration file located in cfg/sourcemod/. They will be prefixed with "timer-".

Besides the cvar configuration files, there is the levels of difficulty configuration, in configs/timer/difficulties.cfg.

For every map you want to use the Timer in, you'll need to add map zones. I've created a simple video tutorial on how to do it: http://www.youtube.com/watch?v=YAX7FAF_N8Q
Changelog
The most recent source code is available at this project's GitHub repository:
https://github.com/alongubkin/timer

1.0.7 (9 February 2013)
  • Added flashbang count for Trikz maps.
  • Optimized anti-prespeeding.
  • Added rank natives.
  • Added the timer_three_axis_speed cvar.
  • Added optional forward button prevention on difficulties.
  • Added native for some anti-cheats.
  • Added the OnTimerPause, OnTimerResume and OnTimerDeleteOneRecord forwards.
  • Added the Timer_Pause and Timer_Resume natives.
  • Added cvar timer_drawzones.
  • Added cvar timer_hud_update_time.
  • Add total number of records to Records Title.
  • Added French translations, thanks to blacklagoon.
  • Added the Timer_GetBestRecord native; deprecated Timer_GetBestRound.
  • Many, many other improvements and bug fixes based on your feedback.
1.0.6 (4 August 2012)
  • Updated translations.
1.0.5 (3 August 2012)
  • Added an advanced logging module, configurable in configs/timer/logging.cfg.
  • Added support for anti pre-speeding in start zones, configurable using the timer_stopprespeeding cvar.
  • Added an option for admins to remove all zones from the current map.
  • The admin delete record menu now allows to delete records of players who aren't connected to the server.
  • Fixed cvar handling in some modules.
  • Added the sm_deleterecord and sm_deleterecord_all admin commands.
  • Added time difference in the finish map message.
  • Added Portuguese translations.
  • Added the timer_showjumps cvar, that sets whether or not jumps are shown in some messages.
  • Improved some messages.
  • Removed the timer_resetbeforestart cvar, this is now always enabled.
  • Improved auto bhop in timer-physics.
  • Fixed the ground map zone bug.
  • Fixed some memory leaks.
  • Removed loghelper dependency.
  • Reduced smlib dependency to smlib/arrays only.
  • Other minor improvements and bugfixes.
1.0.4 (23 July 2012)
  • Fixed a memory leak with SQL connection handling in timer-core, timer-mapzones and timer-worldrecord.
  • Fixed a memory leak with difficulties loading in timer-physics.
  • Implemented GetClientSerial/GetClientFromSerial in some timers.
  • Now verifying if player is still in-game before sending him the Map Zone Delete message in DeleteMapZoneCallback.
  • Fixed an exploit where players could delete records that do not belong to them in rare situations.
1.0.3 (23 July 2012)
  • Added the timer_restart_enabled, timer_stop_enabled, timer_pauseresume_enabled cvars so you can enable or disable the /restart, /stop, /pause and /resume commands. They are enabled by default.
  • Added support for frags (time) and deaths (jumps). Configurable using the timer_frags and timer_jumps_death cvars. They are disabled by default.
  • Added support for the H:M:S.thousands time format for more accuracy.
  • Changed the HUD update timer to 0.25 for more accuracy.
  • Jumps are now shown in the WR main menu.
  • Added optional support for showing the difficulty menu in player_team. Configurable using the timer_jointeam_difficulty cvar, which is disabled by default.
  • Menu strings are now translated to the client's language.
  • !restart now teleports the player to the center of the start zone.
  • Not considering the vertical component of velocity anymore when calculating speed (again).
  • Fixed a bug where spectators didn't see the timer of the player whom they're currently spectating.
  • Changed the player tracker timer to 0.1 for more accuracy.
  • Added jump count to the finish message.
  • Changed "Map Zones Management" to "Timer Management" in the admin menu.
  • Added an option for admins with the RCON flag to delete a player's record (requires the timer-worldrecord module).
  • Added an option for admins with the RCON flag to delete all records from the current map (requires the timer-worldrecord module).
  • Fixed World Record player sorting.
  • Fixed a bug with difficulty in personal record info.
  • Many other small bug fixes.
1.0.2 (11 July 2012)
  • Fixed Russian translations.
  • Added the OnTimerStarted, OnTimerStopped and OnTimerRestart forwards.
  • Added the timer_resetbeforestart cvar that sets whether or not the timer is restarted in the start zone (disabled by default).
1.0.1 (11 July 2012)
  • Added Russian translations, thanks to Glite.
  • Timers now automatically stop on player_death, player_team, player_spawn and player_disconnect.
  • Not using FormatTime anymore because of a bug in SM in Windows SRCDS.
  • Hour part doesn't show up anymore unless you're actually an hour in to the timer.
  • Fixed the message of the WR module when there are no records and the timer-physics module is disabled.
  • Changed speed units to u/s instead of m/s.
  • Added the timer_hud_* cvars to show or hide specific information in the HUD.
  • Not considering the vertical component of velocity anymore when calculating speed.
  • Fixed a bug where spectators got map records.
  • Not auto-bhopping anymore if the client is on a ladder.


Attached Files
File Type: zip timer-1.0.7.zip (126.4 KB, 9825 views)
__________________

Last edited by alongub; 03-02-2013 at 11:48. Reason: Updated to version 1.0.7
alongub is offline