K4 - LevelRanks

K4-LevelRanks

A comprehensive level-based ranking system for Counter-Strike 2 that tracks player progression through configurable ranks based on experience points.

Features

Ranking System

  • Point-based progression with fully customizable point values

  • Dynamic point multipliers based on victim/attacker point ratio

  • Customizable ranks with colors, clan tags, and point thresholds

  • LVL Ranks webpanel compatible

  • Competitive rank icons (Premier, Competitive, Wingman, or custom)

Point Events

  • Combat: Kill, Death, Headshot, Assist, Flash Assist, Team Kill, Suicide

  • Special Kills: No-scope, Through Smoke, Blind Kill, Wallbang, Long Distance

  • Weapon Kills: Knife, Taser, Grenade, Molotov/Incendiary, Impact kills

  • Killstreaks: Double Kill through God Like (12 levels)

  • Objectives: Bomb Plant/Defuse/Explode, Hostage Rescue/Hurt/Kill

  • Round: Round Win/Lose, MVP awards

  • Playtime: Configurable points per X minutes

Statistics Tracking

  • Combat stats: Kills, deaths, assists, headshots, K/D ratio

  • Round stats: Wins, losses, rounds played, MVP count

  • Game stats: Match wins, losses, games played

  • Weapon stats: Per-weapon kills, deaths, headshots, shots, hits, damage

  • Hit stats: Body part distribution (head, chest, stomach, arms, legs)

  • Playtime tracking with optional point rewards

Scoreboard Integration

  • Clan tag ranks - Show rank in player’s clan tag

  • Score sync - Sync scoreboard score with points

  • Competitive rank display - Premier, Competitive, Wingman, or custom

Player Features

  • Interactive menus for rank, stats, top players, settings

  • Per-player notification settings (point messages, summaries, rank alerts)

  • Round-end summary or per-action point notifications

  • Reset own rank command

VIP Support

  • Point multiplier for VIP players

  • Configurable permission flags

Admin Features

  • Set, give, or remove player points

  • Automatic purge of inactive players (configurable)

  • Minimum player count for points

Developer Features

  • Shared API for third-party plugins (K4LevelRanks.Api.v1)

  • Access player data, points, ranks programmatically

Author

K4ryuu

Installation

  1. Install SwiftlyS2 on your server

  2. Download the latest release

  3. Extract to swiftlys2/plugins/ directory

  4. Configure config.json, ranks.json, and points.json

  5. Set up MySQL database connection

Requirements

  • SwiftlyS2

  • MySQL/MariaDB Database

Links

4 Likes

it would be nice if each server could have its own database table prefix, not just lvl_base —for example lvl_dus2, lvl_mrg, etc

k4.levelranks | 01/05 19:54:40 | Error | K4Ranks.Plugin k4.levelranks | Failed to load player STEAM_0:0:55791825 MySqlConnector.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Rank, kills AS Kills, deaths AS Deaths, shoots AS Shoots' at line 5 at async ValueTask<PayloadData> MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:1081 at async Task MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in /_/src/MySqlConnector/Core/ResultSet.cs:37 at void MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:131 at async Task MySqlConnector.MySqlDataReader.InitAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary<string, CachedProcedure> cachedProcedures, IMySqlCommand command, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:487 at async ValueTask<MySqlDataReader> MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/CommandExecutor.cs:56 at async ValueTask<MySqlDataReader> MySqlConnector.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/ MySqlCommand.cs:357 at async Task<DbDataReader> MySqlConnector.MySqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:350 at async Task<T> Dapper.SqlMapper.QueryRowAsync<T>(IDbConnection cnn, Row row, Type effectiveType, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:489 at async Task<PlayerData> K4Ranks.Plugin.DatabaseService.LoadPlayerAsync(string visibleSteamId) in /Users/sples/Projects/GitHub/K4-Ranks-SwiftlyS2/src-plugin/Plugin/Database/ DatabaseService.Player.cs:87