Skip to content

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 09:29
· 26 commits to main since this release

Added

  • SwiftlyS2 target. A separate plugin for SwiftlyS2 servers, released as
    ConnectHistory_swiftly_<version>.zip. SwiftlyS2 needs no Metamod — it has its own
    loader via gameinfo.gi.
  • Native Metamod:Source target. A C++ plugin for servers running neither
    CounterStrikeSharp nor SwiftlyS2, released as ConnectHistory_metamod_<version>.zip
    with Windows and Linux binaries in one archive.
  • Startup banner in the server console with the plugin name, version, platform and
    server number — on all three platforms.
  • CHANGELOG.md, and release notes generated from it.

Fixed

  • spectator_seconds was never written when a session closed normally. The column
    was missing from the UPDATE, so every normally closed session left it NULL. The
    ch_players.total_seconds aggregate was correct all along — only the per-session
    history was lost. Existing rows are not backfilled; new sessions are correct.

Changed

  • Repository restructured into cssharp/, swiftly/ and metamod/. The three
    implementations share no code — only the database schema, which is now an explicit
    contract in docs/DATABASE.md.
  • Release archives are renamed to ConnectHistory_<platform>_<version>.zip. Direct
    links to ConnectHistory.zip will no longer resolve; use the release page.
  • Documentation is now in English by default (README.ru.md remains the Russian
    translation). docs/FLUTE_MODULE.md was removed — the panel module documents itself at
    ConnectHistory-Flute.
  • CI is split per target with path filters; the release workflow builds all three from a
    single tag.

Known limitations of the Metamod target

  • No match results. kills, deaths, assists, headshots, damage, mvp,
    rounds_played, team_final, team_changes and spectator_seconds are always 0;
    score, ping_* and ch_online_snapshots.bots are NULL/0. Connection history
    itself — joins, leaves, duration, map, country, "who is online now" — is complete.
    Reaching those values needs an engine address guessed at runtime (a CGameEventManager
    vtable lookup, or a CGameEntitySystem offset), which nothing in CI can verify and
    which takes the server down on load when it is wrong.
  • ch_playtime and ch_lastseen are server-console commands taking a SteamID64, not
    in-game player commands.
  • See Differences between targets.

Requires MySQL 5.7 / 8.0+ (or MariaDB 10.4+).

Archive Requirements
ConnectHistory_cssharp_3.0.0.zip CounterStrikeSharp >= 1.0.369 (Metamod:Source)
ConnectHistory_swiftly_3.0.0.zip SwiftlyS2 >= 1.4.9 (Metamod not needed)
ConnectHistory_metamod_3.0.0.zip Metamod:Source (native; Windows + Linux in one archive)

Extract into the root of your game server. The plugin creates its configs and
database tables on first run: fill in the Database section of Settings.json
and reload the configuration.

Schema and query cookbook: docs/DATABASE.md.