{"id":40060379,"url":"https://github.com/riisdev/strikelink","last_synced_at":"2026-04-07T03:01:16.822Z","repository":{"id":332334119,"uuid":"1118786730","full_name":"RiisDev/StrikeLink","owner":"RiisDev","description":"StrikeLInk is a modern .NET library for Counter-Strike 2 and Valve ecosystem integration. It provides event-driven access to in-game chat, game state updates, Steam client services, CS2 console interaction, and Valve configuration formats using modern C# and .NET.","archived":false,"fork":false,"pushed_at":"2026-04-06T02:20:47.000Z","size":434,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T04:23:55.198Z","etag":null,"topics":["acf","cfg","chat","console","counter-strike","counter-strike-2","cs2","event-driven","game-integration","game-state","gsi","steam","steam-client","valve","vcfg","vdf"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RiisDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-12-18T09:24:06.000Z","updated_at":"2026-04-06T02:20:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/RiisDev/StrikeLink","commit_stats":null,"previous_names":["riisdev/strikelink"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/RiisDev/StrikeLink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FStrikeLink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FStrikeLink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FStrikeLink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FStrikeLink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RiisDev","download_url":"https://codeload.github.com/RiisDev/StrikeLink/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FStrikeLink/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31498070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"online","status_checked_at":"2026-04-07T02:00:07.164Z","response_time":105,"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":["acf","cfg","chat","console","counter-strike","counter-strike-2","cs2","event-driven","game-integration","game-state","gsi","steam","steam-client","valve","vcfg","vdf"],"created_at":"2026-01-19T07:13:46.357Z","updated_at":"2026-04-07T03:01:16.805Z","avatar_url":"https://github.com/RiisDev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# StrikeLInk\n\n**StrikeLInk** is a modern, cross-platform **.NET library** for integrating with **Counter-Strike 2** and related Valve ecosystem services.\nIt provides structured access to **chat events**, **game state changes**, **client services**, and **Valve configuration formats**, all using modern C# and .NET APIs.\n\n\u003e 📦 Available on **NuGet** as **StrikeLInk**\n\n**Documentation**: [https://github.com/RiisDev/StrikeLink/blob/main/docs/index.md](https://github.com/RiisDev/StrikeLink/blob/main/docs/index.md)\n\n![C#](https://img.shields.io/badge/-.NET%208.0-blueviolet?style=for-the-badge\u0026logo=windows\u0026logoColor=white)\n[![Support Server](https://img.shields.io/discord/477201632204161025.svg?label=Discord\u0026logo=Discord\u0026colorB=7289da\u0026style=for-the-badge)](https://discord.gg/yyuggrH)\n![GitHub](https://img.shields.io/github/license/RiisDev/StrikeLink?style=for-the-badge)\n![Nuget All Releases](https://img.shields.io/nuget/dt/StrikeLink?label=Nuget%20Downloads\u0026style=for-the-badge)\n\n---\n\n## ✨ Features\n\n* ✅ Modern **C#** targeting **.NET 8, 9, and 10**\n* 🧩 Event-driven architecture\n* 🎮 Counter-Strike 2 client \u0026 console integration\n* 💬 Global \u0026 team chat handling\n* 🗺️ Game state tracking (map, player, round)\n* ⚙️ Valve config reader \u0026 writer (JSON-styled)\n* 🌍 Cross-platform design *Built on windows, untested on linux*\n\n---\n\n## 📦 Installation\n\nInstall via NuGet:\n\n```bash\ndotnet add package StrikeLInk\n```\n\nOr via the NuGet Package Manager:\n\n```powershell\nInstall-Package StrikeLInk\n```\n\n---\n\n## 🧠 Core Concepts\n\nStrikeLInk is structured around **services**, **events**, and **state integration**.\nConsumers subscribe to events and invoke methods to interact with the game client.\n\n---\n\n## 💬 Chat Service\n\nProvides access to in-game chat messages and sending capabilities.\n\n### Events\n\n* `OnTeamChat`\n* `OnGlobalChat`\n\n### Methods\n\n* `SendChatAsync(NewChatMessage message)`\n\n```csharp\npublic enum ChatChannel\n{\n\tTeam,\n\tGlobal\n}\n\npublic record NewChatMessage(ChatChannel Channel, string Message);\n```\n\n---\n\n## 🎮 Game State Integration\n\nTrack live game state changes through event-based updates.\n\nBased on [GameStateInteraction](https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Game_State_Integration) with help from [this reddit post](https://reddit.com/r/GlobalOffensive/comments/cjhcpy)\n\n### Supported State Events\n\n* **Gsi Listener**\n  * Offers a base event `OnPostReceived` for all incoming GSI payloads\n\n* **Map State**\n\n  * `MapState` events\n* **Player State**\n\n  * `PlayerState` events\n* **Round State**\n\n  * `RoundState` events\n\nThese events allow real-time reactions to gameplay changes such as round transitions, player updates, and map changes.\n\n---\n\n## 🧩 Client Services\n\n### 🟦 SteamService\n\nProvides access to Steam and CS2 client data.\n\n#### Methods\n\n* `GetSteamPath()`\n* `TryGetGamePath(int gameId, out string path)`\n* `GetGamePath(int gameId)`\n* `GetUserConfig(long? userId)`\n* `GetGameLaunchOptions(int gameId)`\n* `GetCurrentUserId()`\n\n---\n\n### 🖥️ ConsoleService (CS2 Console Integration)\n\nInteract directly with the CS2 console and listen to runtime events.\n\n#### Events\n\n* `OnLogReceived`\n* `OnPlayerConnected`\n* `OnMapJoined`\n* `OnGlobalChatMessageReceived`\n* `OnTeamChatMessageReceived`\n* `OnUiStateChanged`\n* `OnAddonProgress`\n* `OnAddonFinished`\n* `OnServerJoining`\n* `OnServerConnected`\n* `OnServerDisconnected`\n\nThis service enables advanced automation, monitoring, and addon integration.\n\n---\n\n## ⚙️ Valve Config Reader / Writer\n\nA flexible configuration system built around **`JsonDocument`-style APIs**.\n\n### Supported Formats\n\n* `.vcfg`\n* `.cfg`\n* `.vdf`\n* `.acf`\n\n### Capabilities\n\n* Read and parse Valve configuration formats\n* Modify values using structured JSON-style access\n* Write configurations back to disk safely\n* Designed for tooling, modding, and automation\n\n--- \n\n## Ai Disclosure\n\n\u003e This was made as a hobby project that I use personally to make small little programs for fun, all of my software is free and open source via MIT licensing, if you have a problem with AI do not take it up with me.\n\nSome form of AI was used for the following items\n\n* Readme - I'm notoriously bad at writing readmes, but was proof read and modified after initial creation.\n* Incode ///summary Statements - I use the built in CoPilot summary auto complete to get a base summary which is then proof read and modified.\n* /DemoParser/Parsing - I extensively looked into how to do it properly and couldn't figure it out, so it wrote the files located within. (PS valve please update documentation page).\n* /Services/WebService/SqlService - I didn't want to use further nuget packages when all I needed to do was query a DB. \n* /Services/Config - Same reason as SqlService","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friisdev%2Fstrikelink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Friisdev%2Fstrikelink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friisdev%2Fstrikelink/lists"}