Um guia sobre como compilar plugins do SourceMod.
Plugins do SourceMod são scripts ou addons personalizados criados para ampliar e modificar as funcionalidades de servidores de jogos que rodam na engine Source.
A linguagem de programação associada ao código-fonte dos plugins do SourceMod é o SourcePawn. A extensão de arquivo do SourcePawn é sp.
Compilar plugins do SourceMod é bastante simples e será explicado abaixo.
Baixando o SourceMod
Consulte o guia a seguir sobre como baixar e extrair o SourceMod. Você não precisa instalar o SourceMod no seu servidor para compilar plugins.
https://moddingcommunity.com/blog/how-to-install-update-sourcemod-metamod/
Após extrair os arquivos do SourceMod, vá até o diretório addons/sourcemod/scripting no Linux (ou a pasta addons\sourcemod\scripting no Windows).
Compilando plugins do SourceMod
Compilar plugins do SourceMod costuma ser bem fácil, especialmente no Windows.
Windows
Explorador de Arquivos do Windows
Se quiser compilar plugins rapidamente, você pode arrastar e soltar o arquivo de código-fonte do plugin sobre o executável compile.exe, localizado na pasta scripting. Uma janela do Prompt de Comando será aberta e você verá a saída da compilação. Se a compilação for bem-sucedida, você verá os plugins compilados dentro da pasta compiled. Plugins do SourceMod compilados normalmente têm a extensão de arquivo smx.

Embora esse método seja rápido e prático, o método por linha de comando explicado abaixo oferece mais opções que você pode definir.
Linha de comando
Se quiser compilar plugins pela linha de comando usando o Prompt de Comando ou o PowerShell, primeiro você precisará abrir um terminal e navegar até a pasta scripting.
Em seguida, você usará os executáveis spcomp.exe ou spcomp64.exe (para suporte a 64 bits) para compilar os plugins.
Aqui está um comando básico que compila um plugin.
.\spcomp.exe <Plugin File Name With Extension>
Por exemplo, se quisermos compilar o plugin basechat que vem incluído, usaríamos o seguinte comando.
.\spcomp.exe basechat.sp
Linux
Para compilar plugins do SourceMod pelo terminal do Linux, você pode seguir um processo parecido com o método de linha de comando no Windows explicado acima. Será necessário usar os executáveis spcomp ou spcomp64 (para suporte a 64 bits) para compilar os plugins.
Aqui está um comando básico que compila um plugin.
./spcomp <Plugin File Name With Extension>
Por exemplo, se quisermos compilar o plugin basechat que vem incluído, usaríamos o seguinte comando.
./spcomp basechat.sp
Se a compilação for bem-sucedida, você verá o novo arquivo do plugin compilado no mesmo diretório do código-fonte (scripting/).
Opções adicionais de linha de comando
Como dito acima, compilar plugins pela linha de comando permite definir opções adicionais. Abaixo está a saída do menu de ajuda, que traz uma lista das flags e dos argumentos que você pode definir.
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.
Por exemplo, no Linux, se quisermos que o plugin basechat compilado com sucesso vá para o diretório compiled/, usaríamos o(s) seguinte(s) comando(s).
# Make sure compiled directory is made.
mkdir -p compiled
# Output: compiled/basechat.smx
./spcomp -o compiled/basechat basechat.sp
Arquivos de include
Existem muitos plugins do SourceMod publicados que contêm arquivos de include com a extensão inc. Esses arquivos precisam ficar no diretório/pasta include/. Caso contrário, é provável que os plugins não compilem.
Além disso, você pode usar a flag -i ao compilar pela linha de comando para incluir diretórios e pastas fora do diretório e da pasta include padrão.
Conclusão
É isso! Agora você já deve conhecer todos os métodos para compilar plugins do SourceMod.
Se você tiver dúvidas ou comentários sobre este guia, responda ao tópico dele no fórum aqui! Este guia será trabalhado e aprimorado com o tempo.
Entre no nosso servidor do Discord!
