Thanks for helping! This organization hosts SourceMod plugins, C++ extensions and tools for Source engine servers. Each repository is independent: read its README (and .github/copilot-instructions.md when present) before starting.
- Use the issue forms and fill in versions and logs: most bugs can't be fixed without them.
- Security problems go through private reporting, see SECURITY.md.
- Questions and support: Discord.
- Fork the repository and create a branch from the default branch (
masterormain). - Keep the PR focused on one change, and describe how to test it.
- Make sure CI is green: it compiles the project and builds the release package.
- A maintainer will review and merge. Pushes to the default branch publish the
latestrelease automatically.
- Layout:
addons/sourcemod/{scripting,scripting/include,gamedata,translations,configs}. - CI compiles with SourceMod 1.12 (
rumblefrog/setup-sp). Your code must compile there without new warnings. - Every
.spstarts with#pragma semicolon 1and#pragma newdecls required; use new-style declarations and methodmaps. - Naming: globals prefixed with
g_(g_cvFoo,g_hTimer). - Free handles with
delete. To reset aStringMap/ArrayList,deleteand recreate it instead of calling.Clear(). - Optional dependencies:
#undef REQUIRE_PLUGIN+#tryinclude, then checkLibraryExists/GetFeatureStatusbefore calling their natives. - SQL must be threaded (async queries or transactions) with escaped input. Never block the game thread.
- User-facing strings go in
translations/*.phrases.txt. Create cvars inOnPluginStartand callAutoExecConfig(true). - Bump the version in
myinfowhen behavior changes.
- Built with AMBuild against SourceMod and Metamod:Source 1.12 (see the repository's workflow for exact versions).
- Say which platform and architecture you tested (Linux/Windows, x86/x64).
- Gamedata changes must be verified for every game and platform they touch.
- Many files use CRLF line endings: preserve them so the diff only shows your changes.
- Don't commit build outputs (
.smx,.so,.dll) unless the repository already does. - For forks of upstream projects, consider whether your fix belongs upstream too.