Fix for players getting softlocked in unassigned state.

nosoop 9d4891383c DRY panel resend 11 months ago
misc 7e5e9a29e9 Initial commit 11 months ago
scripting 9d4891383c DRY panel resend 11 months ago
.gitignore 7e5e9a29e9 Initial commit 11 months ago fd0bda8a03 Refire team select panels if on cooldown 11 months ago 7e5e9a29e9 Initial commit 11 months ago

jointeam Command Fix

☕ fund my caffeine addiction ☕

Prevents players from getting stuck in an unassigned state without being able to open the team select menu.

The issue (as far as I'm personally aware) is described at ValveSoftware/Source-1-Games#3651.

The fix involves a delayed resending of the team select panel if:

  • the player attempted to join a team while the command was on cooldown, and
  • the server attempts to send one to a player while they are on cooldown


  1. Run python --spcomp-dir {DIR} within the project root, where {DIR} is a directory containing the SourcePawn compiler (spcomp) and SourceMod's base include files. This will create the script.
    • If --spcomp-dir isn't specified, the script will try to detect the compiler based on an existing spcomp executable in your path.
    • It is highly preferred that you use a toolchain that is free of third-party include files; those files should be added to the project directly.
    • Do not add to version control; it should always be generated from
  2. Run ninja; this will read the script and build things as necessary. Files will be generated and copied to build/, creating any intermediate folders if they don't exist. Re-run ninja whenever you make changes; it will also reconfigure the build if is modified.
    • Any files removed from will remain in build/; run ninja -t cleandead to remove any lingering files.

A "CSRD Internal" Plugin

This is a plugin mainly intended for use in Pikachu's Canadian Server of Romance and Drama.

While I'm happy if you find some useful code for your own plugins, I can't provide any support for said code, nor will I offer any guarantees that the plugin will remain usable outside of its main use.