{"id":50606851,"url":"https://github.com/ayrton09/umbrellaranked-cs2","last_synced_at":"2026-06-15T05:01:32.865Z","repository":{"id":362788280,"uuid":"1260812882","full_name":"Ayrton09/UmbrellaRanked-CS2","owner":"Ayrton09","description":"Native CounterStrikeSharp ranked system for CS2","archived":false,"fork":false,"pushed_at":"2026-06-05T22:58:57.000Z","size":2195,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-06T00:06:03.235Z","etag":null,"topics":["counter-strike-2","counterstrikesharp","cs2","csharp","mysql","ranked","sqlite"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ayrton09.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-05T22:44:07.000Z","updated_at":"2026-06-05T23:02:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Ayrton09/UmbrellaRanked-CS2","commit_stats":null,"previous_names":["ayrton09/umbrellaranked-cs2"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Ayrton09/UmbrellaRanked-CS2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayrton09%2FUmbrellaRanked-CS2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayrton09%2FUmbrellaRanked-CS2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayrton09%2FUmbrellaRanked-CS2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayrton09%2FUmbrellaRanked-CS2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ayrton09","download_url":"https://codeload.github.com/Ayrton09/UmbrellaRanked-CS2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayrton09%2FUmbrellaRanked-CS2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34348292,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["counter-strike-2","counterstrikesharp","cs2","csharp","mysql","ranked","sqlite"],"created_at":"2026-06-06T00:01:50.539Z","updated_at":"2026-06-15T05:01:32.860Z","avatar_url":"https://github.com/Ayrton09.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Umbrella Ranked cover](assets/cover.png)\r\n\r\n# Umbrella Ranked\r\n\r\nNative CounterStrikeSharp ranked system for CS2.\r\n\r\n## Features\r\n\r\n- Rank tracking with kills, deaths, assists, KDA, points, playtime, and per-weapon kills.\r\n- Ranking modes: `Points` or `Kda`.\r\n- MySQL and SQLite support, selected explicitly with `DatabaseMode`.\r\n- Internal WASD menu system for `top`, `toptime`, `topweapons`, pagination, details, and reset confirmation.\r\n- Top-player join announcements and optional Top #1 sound.\r\n- Autosave, disconnect save, map-end flush, and unload flush.\r\n- Per-player command cooldown.\r\n- Localization through CounterStrikeSharp `lang/*.json`.\r\n- Runtime competitive toggle with `css_rank_enabled 0/1`.\r\n- Map pattern blocking for competitive ranking while keeping playtime active.\r\n\r\n## Commands\r\n\r\nPlayer commands:\r\n\r\n- `!rank`, `/rank`, `rank`\r\n- `!top`, `/top`, `top`\r\n- `!toptime`, `/toptime`, `toptime`\r\n- `!topweapons`, `/topweapons`, `topweapons`\r\n- `!toparmas`, `/toparmas`, `toparmas`\r\n- `!resetrank`, `/resetrank`, `resetrank`\r\n- `!rrank`, `/rrank`, `rrank`\r\n\r\nAdmin commands:\r\n\r\n- `css_rank_status`\r\n- `css_rank_prunenow`\r\n\r\nAdmin commands require `@css/root`.\r\n\r\n## Configuration\r\n\r\nUse [samples/UmbrellaRanked.mysql.sample.json](samples/UmbrellaRanked.mysql.sample.json) as the main template.\r\n\r\nImportant settings:\r\n\r\n- `Enabled`: enables competitive ranking features.\r\n- `DatabaseMode`: `MySql` or `Sqlite`.\r\n- `RankingMode`: `Points` or `Kda`.\r\n- `MinimumKillsRequired`: minimum kills required to appear in ranked top lists.\r\n- `MinimumPlayersForStats`: minimum real players required before competitive stats count.\r\n- `DisabledRankMapPatterns`: map patterns where competitive ranking is paused.\r\n- `CommandCooldownSeconds`: per-player command anti-spam.\r\n- `AutosaveIntervalSeconds`: periodic save interval.\r\n- `TopCacheSeconds`: short cache for top menus.\r\n- `AllowResetRank` and `ResetRankCooldownDays`: reset-rank behavior.\r\n- `TopAnnouncementThreshold`: announces players who join while ranked inside this threshold.\r\n- `Top1Sound`: optional sound playback when a Top #1 player joins.\r\n\r\nRuntime CVar:\r\n\r\n```cfg\r\ncss_rank_enabled 1\r\n```\r\n\r\nSet `css_rank_enabled 0` to pause competitive rank tracking and rank/weapon menus immediately. Playtime and `!toptime` continue.\r\n\r\n## Points\r\n\r\nDefault point values are conservative and close to common CS ranking plugins:\r\n\r\n```json\r\n{\r\n  \"Kill\": 2,\r\n  \"HeadshotBonus\": 1,\r\n  \"KnifeKillBonus\": 3,\r\n  \"TaserKillBonus\": 2,\r\n  \"Assist\": 1,\r\n  \"DeathPenalty\": 2,\r\n  \"SuicidePenalty\": 3,\r\n  \"TeamKillPenalty\": 5,\r\n  \"Mvp\": 1,\r\n  \"BombPlant\": 2,\r\n  \"BombDefuse\": 3,\r\n  \"BombExplode\": 3,\r\n  \"HostageRescue\": 3,\r\n  \"TeamWin\": 1,\r\n  \"TeamLossPenalty\": 1\r\n}\r\n```\r\n\r\nEffective examples:\r\n\r\n- Normal kill: attacker `+2`, victim `-2`.\r\n- Headshot kill: attacker `+3`, victim `-2`.\r\n- Knife kill: attacker `+5`, victim `-5`.\r\n- Zeus/taser kill: attacker `+4`, victim `-4`.\r\n- Suicide: victim `-5`.\r\n- Teamkill: attacker `-5`, victim does not lose points.\r\n\r\n## Database\r\n\r\nTables use the fixed CS2 prefix `ur_cs2_`:\r\n\r\n- `ur_cs2_player_stats`\r\n- `ur_cs2_weapon_stats`\r\n\r\n`ur_cs2_player_stats.playtime` is also used by `!toptime`.\r\n\r\nReset rank clears kills, deaths, assists, points, and weapon stats, but preserves playtime.\r\n\r\n## Deploy\r\n\r\nRequired plugin files:\r\n\r\n- `umbrellaranked.dll`\r\n- `umbrellaranked.deps.json`\r\n- dependency DLLs beside the plugin DLL\r\n- `lang/`\r\n- `sqlite/` if `DatabaseMode = Sqlite`\r\n\r\nConfig path:\r\n\r\n```text\r\naddons/counterstrikesharp/configs/plugins/umbrellaranked/umbrellaranked.json\r\n```\r\n\r\nPlugin path:\r\n\r\n```text\r\naddons/counterstrikesharp/plugins/umbrellaranked/\r\n```\r\n\r\n## Project Layout\r\n\r\n```text\r\nUmbrellaRanked/\r\n  Config/\r\n  Core/\r\n  Data/\r\n  Menus/\r\n  Models/\r\n  Utils/\r\n  lang/\r\n  samples/\r\n  UmbrellaRanked.csproj\r\n  UmbrellaRankedPlugin.cs\r\n```\r\n\r\nMain components:\r\n\r\n- `UmbrellaRankedPlugin.cs`: lifecycle, commands, events, menus, announcements.\r\n- `Core/RankService.cs`: load/save/reset orchestration.\r\n- `Core/PlayerSessionService.cs`: live session tracking and reconnect safety.\r\n- `Core/AutosaveService.cs`: non-overlapping autosaves and flushes.\r\n- `Menus/WasdMenuService.cs`: internal WASD menu system.\r\n- `Data/*Repository.cs`: MySQL/SQLite repositories.\r\n- `Data/SchemaInitializer.cs`: table and index initialization.\r\n\r\n## Notes\r\n\r\n- Steam IDs are stored as Steam2-style strings.\r\n- Competitive stats require `MinimumPlayersForStats`; playtime does not.\r\n- Disabled map patterns pause competitive ranking only; playtime continues.\r\n- The plugin targets CounterStrikeSharp `1.0.369 or newer` and `.NET 10`.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayrton09%2Fumbrellaranked-cs2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fayrton09%2Fumbrellaranked-cs2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayrton09%2Fumbrellaranked-cs2/lists"}