Eine Anleitung zum Kompilieren von SourceMod-Plugins.
SourceMod-Plugins sind eigene Skripte oder Addons, die erstellt werden, um die Funktionalität von Gameservern auf Basis der Source Engine zu erweitern und zu verändern.
Die Programmiersprache, in der der Quellcode von SourceMod-Plugins geschrieben wird, ist SourcePawn. Die Dateiendung für SourcePawn lautet sp.
Das Kompilieren von SourceMod-Plugins ist recht einfach und wird im Folgenden erklärt.
SourceMod herunterladen
Die folgende Anleitung erklärt, wie du SourceMod herunterlädst und entpackst. Du musst SourceMod nicht auf deinem Server installieren, um Plugins zu bauen.
https://moddingcommunity.com/blog/how-to-install-update-sourcemod-metamod/
Wechsle nach dem Entpacken der SourceMod-Dateien unter Linux in das Verzeichnis addons/sourcemod/scripting (bzw. unter Windows in den Ordner addons\sourcemod\scripting).
SourceMod-Plugins kompilieren
Das Kompilieren von SourceMod-Plugins ist in der Regel recht einfach, besonders unter Windows.
Windows
Windows Explorer
Wenn du Plugins schnell kompilieren möchtest, kannst du die Quellcode-Datei des Plugins per Drag and Drop auf die ausführbare Datei compile.exe im Ordner scripting ziehen. Es öffnet sich ein Eingabeaufforderungs-Fenster, in dem du die Ausgabe des Build-Vorgangs siehst. War der Build erfolgreich, findest du die gebauten Plugins im Ordner compiled. Gebaute SourceMod-Plugins haben typischerweise die Dateiendung smx.

Diese Methode ist zwar schnell und unkompliziert, doch die unten beschriebene Methode über die Kommandozeile bietet mehr Optionen, die du festlegen kannst.
Kommandozeile
Wenn du Plugins über die Kommandozeile mit der Eingabeaufforderung oder PowerShell kompilieren möchtest, musst du zunächst ein Terminal öffnen und in den Ordner scripting wechseln.
Anschließend verwendest du die ausführbaren Dateien spcomp.exe oder spcomp64.exe (für 64-Bit-Unterstützung), um die Plugins zu kompilieren.
Hier ist ein einfacher Befehl, der ein Plugin kompiliert.
.\spcomp.exe <Plugin File Name With Extension>
Wenn wir zum Beispiel das mitgelieferte Plugin basechat kompilieren wollen, würden wir folgenden Befehl verwenden.
.\spcomp.exe basechat.sp
Linux
Um SourceMod-Plugins über ein Linux-Terminal zu kompilieren, kannst du ähnlich vorgehen wie bei der oben beschriebenen Kommandozeilen-Methode unter Windows. Du musst dafür entweder die ausführbare Datei spcomp oder spcomp64 (für 64-Bit-Unterstützung) verwenden.
Hier ist ein einfacher Befehl, der ein Plugin kompiliert.
./spcomp <Plugin File Name With Extension>
Wenn wir zum Beispiel das mitgelieferte Plugin basechat kompilieren wollen, würden wir folgenden Befehl verwenden.
./spcomp basechat.sp
War der Build erfolgreich, findest du die neu gebaute Plugin-Datei im selben Verzeichnis wie den Quellcode (scripting/).
Weitere Kommandozeilen-Optionen
Wie oben erwähnt, kannst du beim Kompilieren über die Kommandozeile zusätzliche Optionen festlegen. Hier ist die Ausgabe des Hilfemenüs, die eine Liste der verfügbaren Flags und Argumente enthält.
SourcePawn Compiler 1.11.0.6969
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2021 AlliedModders LLC
Usage: ./spcomp [options] <filename> [filename...]
optional arguments:
--show-stats Show compiler statistics on exit.
-D Active directory path
--active-dir=ACTIVE_DIR
-e Error file path
--error-file=ERROR_FILE
-E, --warnings-as-errors Treat warnings as errors
-h, --show-includes Show included file paths
-z
--compress-level=COMPRESS_LEVEL
Compression level, default 9 (0=none, 1=worst,
9=best)
-t, --tabsize=TABSIZE TAB indent size (in character positions,
default=8)
-v, --verbose=VERBOSE Verbosity level; 0=quiet, 1=normal, 2=verbose
-p, --prefix=PREFIX Set name of "prefix" file
-o, --output=OUTPUT Set base name of (P-code) output file
-O, --opt-level=OPT_LEVEL
Deprecated; has no effect
-i, --include=INCLUDE Path for include files
-w, --warning=WARNING Disable a specific warning by its number.
-;, --require-semicolons Require a semicolon to end each statement.
--syntax-only Perform a dry-run (No file output) on the input
--use-stderr Use stderr instead of stdout for error messages.
--no-verify Disable opcode verification (for debugging).
sym=val Define constant "sym" with value "val".
sym= Define constant "sym" with value 0.
Wenn wir zum Beispiel unter Linux möchten, dass das erfolgreich gebaute Plugin basechat im Verzeichnis compiled/ landet, würden wir folgende Befehle verwenden.
# Make sure compiled directory is made.
mkdir -p compiled
# Output: compiled/basechat.smx
./spcomp -o compiled/basechat basechat.sp
Include-Dateien
Es gibt viele veröffentlichte SourceMod-Plugins, die Include-Dateien mit der Dateiendung inc enthalten. Diese Dateien müssen in das Verzeichnis bzw. den Ordner include/ gelegt werden. Andernfalls schlägt das Kompilieren der Plugins höchstwahrscheinlich fehl.
Zusätzlich kannst du beim Kompilieren über die Kommandozeile das Flag -i verwenden, um Verzeichnisse und Ordner außerhalb des standardmäßigen include-Verzeichnisses bzw. -Ordners einzubinden.
Fazit
Das war's! Du solltest jetzt alle Methoden zum Kompilieren von SourceMod-Plugins kennen.
Wenn du Fragen oder Feedback zu dieser Anleitung hast, antworte bitte hier im zugehörigen Forenthema! Diese Anleitung wird mit der Zeit weiter überarbeitet und verbessert.
Tritt unserem Discord-Server bei!
