2024/06/25 - 17:26 - 11189v
Last modified 2012/05/14

Forlix SoStats (2011/07)

This long awaited SourceMod plugin for the CS:S soccer game mode works in conjunction with the SoScore plugin and delivers detailed soccer gameplay statistics, supporting well known chat commands such as top, rank, statsme and session. Soccer gameplay is tracked once a sufficient amount of players has entered the server. Events such as passes, ball steals and of course goals, own-goals, and goal misses are recorded for each player. A point system based on these events gives or takes points to/from the players, depending on various factors such as the ranking of the opponent, the distance of the shot, or the amount of time into the round that the goal is scored.
The Top list with highlighted in-game players
The Top list with highlighted in-game players

Development of this plugin already began in November 2009, and on December 24th the first public beta was deployed on the Forlix pure! soccer server. Efficiency and stability were of primary concern during the development of this plugin, making it stand out and convincing with its attention to detail.

The point system is designed in a way so that no player can keep accumulating points indefinitely - every player will reach a certain equilibrium (depending on their skill) at which his or her points value will settle if the skill does not change. This is due to the fact that players lose more points when losing against a lower ranked player than they would lose when losing against a higher ranked player, and gain less points when winning against a lower ranked player than they would gain when winning against a higher ranked player.

To prevent players from exploiting this concept, players without a rank will not cause their opponents to lose as much points in a one on one event; to get a rank, a player has to have done a configurable number of passes.

The player ranks are based on the points, are calculated at the end of each round and can be displayed at any time using the top command. In-game players are conveniently highlighted in this list for easy identification. All the required player data is stored inside an SQLite database (included with SourceMod) where the core statistical computations are done directly via SQL statements, minimizing any possible influence on the game server performance.

As an addition to the common statsme command, players are also given the ability to view the statistics of other players, once they learn the rank of the player in question by use of the top ranking list.

Detailed features:

  • Top, Rank, StatsMe and Session command support
  • Statistics include goals, passes, steals, misses, saves and many more
  • Minimum player count threshold below which stats will not be tracked
  • New players that do not stay connected long enough will not be stored in the database
  • Database is self-cleaning - inactive players are dropped, global stats resets are not required
  • Players can reset their stats at any time via a menu option (can be disabled)
  • Players gain a rank once they've done a configurable number of passes
  • Points of inactive players decay linearly during a configurable time period
  • Visibility of the chat commands is configurable for each command individually
  • Tracking messages display all registered events and point delta's to the player
  • Top command supports offsets - use top123 to jump directly to that rank in the list
  • Rank command is rate limited to prevent excessive chat spamming
  • StatsMe of other players displayable using stats123 for player on rank 123
  • Bad/misformatted player names are filtered before storage to prevent display issues
  • All player-plugin interactions are rate-limited to prevent flooding
  • Plugin will unload together with SoScore for unconfigured maps
  • Typing !sostats in chat displays a short how-to
  • Multilanguage support; English and German phrase-files are already included
  • Hot-reload feature - plugin can be reloaded any time, but players session stats will be reset

Changes in v1.0: (2011/07)

  • Initial release

Configuration ConVars:

forlix_sostats_announcement_type (default 0)
- How often the plugin may announce itself to players: Every round-start (0), Once after connect (1)

forlix_sostats_tracking_min_players (default 3)
- Minimum amount of players required per team for tracking to be enabled

forlix_sostats_time_played_for_db_store (default 150)
- Time in seconds a new player has to remain on the server to be retained in the database

forlix_sostats_points_decay_start (default 2)
- Time in days from last connect after which a players points decay will start

forlix_sostats_points_decay_period (default 28)
- Points will decay within this many days and a player be deleted at the end of this period

forlix_sostats_min_passes_for_rank (default 25)
- Minimum amount of passes (ground+air) required for a player to be ranked

forlix_sostats_allow_player_stats_reset (default 1)
- Whether (1) or not (0) players can reset their stats from within the SoStats help panel

forlix_sostats_hide_bare_chat_triggers (default 0)
- Which bare chat triggers to hide (add as desired: +1 top, +2 rank, +4 stats, +8 session)

forlix_sostats_max_rankcmds_per_round (default 3)
- How many times per round a player can print his/her rank to everyone (0 for infinite)

forlix_sostats_chat_trigger (default "!")
- Set this to one of the ChatTrigger strings configured in SourceMod's core.cfg

- Version tracking (don't modify this) - Servers running this plugin (

The StatsMe panel with detailed player statistics
The StatsMe panel with detailed player statistics

The plugin binary has been built for SourceMod version 1.3 and up.
It requires Forlix SoScore v1.58 or higher.

Forlix SoStats v1.0
License: GPL (SourceMod plugin)

Source code (Plugin source)

© 2006-2012 | Terms of use | Contact

Powered by Apache 2.2

Powered by Perl        Valid XHTML 1.1