Se você desenvolve para SA:MP (San Andreas Multiplayer) e já pensou em criar seus próprios plugins, sabe que a tarefa pode ser complexa.
Mas com a biblioteca de modelos samp-ptl, o processo fica muito mais simples e seguro, permitindo que você crie funcionalidades poderosas para o seu servidor sem dor de cabeça.
O que é a samp-ptl?
A samp-ptl é uma biblioteca escrita em C++17 que fornece uma base pronta para desenvolvimento de plugins SA:MP.
Com ela, você não precisa se preocupar com a integração manual entre C++ e o sistema AMX do SA:MP — a biblioteca já traz funções utilitárias, tratamento de erros e conversões automáticas.
Principais Recursos
-
✅ API C++ AMX segura – tratamento de erros integrado, evitando crashs no servidor.
-
📜 Conjunto de scripts – modo de jogo de exemplo pronto para testes.
-
⚡ Callbacks fáceis – execução simples de funções públicas com cache opcional para melhor desempenho.
-
🔄 Cadastro de nativos simplificado – parâmetros do tipo
cellconvertidos automaticamente para tipos C++ comuns (int,float,std::string, etc.). -
🛠 Definição de conversões personalizadas – crie regras de conversão para tipos próprios.
-
🔍 Verificação de versão – o plugin verifica se está usando a versão correta dos scripts.
-
📚 Exemplos prontos – ajuda você a começar rapidamente.
Como Usar a Biblioteca
1. Pré-requisitos
Antes de começar, você vai precisar de:
-
Compilador compatível com C++17 (GCC 7+, Clang 5+, MSVC 2017+)
-
CMake para compilar o projeto
-
SDK do SA:MP para desenvolvimento de plugins
-
Conhecimento básico de C++
💡 Dica: Você pode usar um servidor virtual (VPS) para hospedar o SA:MP e testar seus plugins sem depender do seu PC.
Se precisar de uma máquina para desenvolvimento ou hospedagem, confira nossos planos em AyooCloud.com.br — com ótimo desempenho e suporte para desenvolvedores de jogos.
2. Estrutura Básica de um Plugin com samp-ptl
A biblioteca fornece um modelo básico para você começar.
Um plugin mínimo poderia ser assim:
#include <ptl/ptl.hpp>
PLUGIN_EXPORT bool PLUGIN_CALL OnGameModeInit()
{
ptl::log("Plugin iniciado com sucesso!");
return true;
}
PTL_PLUGIN()
Esse exemplo cria um plugin que simplesmente mostra uma mensagem no console do servidor quando o modo de jogo inicia.
3. Registrando um Nativo
Se você quiser criar uma função que possa ser chamada no seu .pwn, basta registrá-la:
#include <ptl/ptl.hpp>
int GetServerVersion(AMX* amx, cell* params)
{
return 1; // Versão fictícia
}
PTL_BEGIN()
PTL_NATIVE("GetServerVersion", GetServerVersion)
PTL_END()
No seu script .pwn, você poderia chamar:
4. Chamando Callbacks do Servidor
Com a samp-ptl, você pode disparar eventos como se fossem do próprio SA:MP: