Portal SAMP
[Utilitário] Samp Development Kit - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Lançamentos (https://portalsamp.com/forumdisplay.php?fid=26)
+---- Fórum: Utilitários (https://portalsamp.com/forumdisplay.php?fid=28)
+---- Tópico: [Utilitário] Samp Development Kit (/showthread.php?tid=4985)



Samp Development Kit - xbruno1000x - 19/03/2025

SA-MP Development Kit for Plugins
 

SDK Completo para Extensão de Servidores SA-MP/OPEN.MP
 



Introdução
  • Kit de desenvolvimento profissional para criação de plugins SA-MP (San Andreas Multiplayer) em C/C++. Oferece controle total sobre a máquina virtual AMX, permitindo implementação de funcionalidades nativas de alto desempenho. Compatível com OPEN.MP e todas versões modernas do SA-MP. 
 


 



Visão Geral do SDK 
  • Coleção de 15+ headers especializados e bibliotecas otimizadas 
  • Suporte completo à arquitetura 32/64-bit 
  • Integração multiplataforma (Windows/Linux/macOS) 
  • Sistema de debug integrado com 25+ códigos de erro 
 


 



Componentes Principais 


1 - Sistema AMX Avançado 
  • Máquina virtual para execução de scripts Pawn 
  • Gerenciamento de memória com 3 modelos de alocação 
  • Registro de 200+ funções nativas pré-implementadas 
  • Suporte a Unicode e codificação UTF-8 
 



2 - Arquitetura Multiplataforma 
  • Headers específicos para Windows (MSVC), Linux (GCC), FreeBSD 
  • Tratamento automático de endianness e alinhamento 
  • Macros para caminhos (DIRSEP_CHAR) e compilação condicional 
 



3 - Sistema de Plugins Profissional 
  • Interface de inicialização/descarregamento de plugins 
  • Registro automático de funções nativas via AMX_NATIVE_INFO 
  • Acesso direto à memória do servidor 
  • Handlers para eventos críticos 
 


 



Detalhes Técnicos
 



Estruturas Principais
 



AMX_HEADER (amx_structures.h) 

Código:
typedef struct tagAMX_HEADER { 
    int32_t size;          // Tamanho total 
    uint16_t magic;        // Assinatura (0xF1E0) 
    char file_version;    // Versão do formato 
    char amx_version;      // Versão AMX requerida 
    int16_t flags;        // Flags de operação 
    // ... (+15 campos) 
} AMX_HEADER;
 



AMX_NATIVE_INFO (amx.h) 

Código:
typedef struct tagAMX_NATIVE_INFO { 
    const char* name;    // Nome da função 
    AMX_NATIVE func;      // Ponteiro para implementação 
} AMX_NATIVE_INFO;
 



Sistema de Erros
 
  • 28 códigos de erro detalhados (amx_constants.h): 
       
  • AMX_ERR_MEMORY (16): Falha crítica de alocação 
       
  • AMX_ERR_NATIVE (10): Erro em função nativa 
       
  • AMX_ERR_JIT (22): Falha na compilação JIT 
 



Gerenciamento de Memória
 

  1. Alocação dinâmica via amx_Allot() 
  2. Compactação automática (AMX_COMPACTMARGIN=64) 
  3. Verificação de limites de acesso 
  4. Sistema de tags de usuário (AMX_USERNUM) 
 


 



Recursos Avançados
 



1 - Compilação JIT 

Código:
#if defined JIT 
    int AMXAPI amx_InitJIT(AMX *amx, void *reloc_table, void *native_code); 
    #define AMX_FLAG_JITC 0x2000 
#endif
 
  • Aceleração em tempo de execução 
  • Suporte a otimizações específicas de CPU 
 



2 - Interface de Depuração 

Código:
typedef int (AMXAPI *AMX_DEBUG)(AMX *amx); 
int AMXAPI amx_SetDebugHook(AMX *amx, AMX_DEBUG debug);
 
  • Breakpoints programáveis 
  • Monitoramento de registradores (CIP/HEA/STP) 
  • Log de execução detalhado 
 



3 - Manipulação de Strings 

Código:
#define amx_StrParam(amx, param, result) \ 
    /* Implementação completa */ 
AMXAPI amx_UTF8Check(const char *string, int *length);
 
  • Conversão automática de codificações 
  • Suporte a caracteres multibyte 
  • Sanitização de inputs 
 


 



Exemplos Práticos
 



1 - Plugin de Monitoramento
 

Código:
#include <amxplugin.h>

PLUGIN_EXPORT void PLUGIN_CALL OnServerTick() { 
    static int tick; 
    logprintf("Ticks: %d | Memória livre: %dKB", 
        ++tick, 
        amx_MemInfo(amx, NULL, NULL, NULL) / 1024 
    ); 
}

PLUGIN_EXPORT int PLUGIN_INIT() { 
    amx_Register(debug_natives); 
    return 1; 
}
 



2 - Função Nativa Avançada
 

Código:
cell AMX_NATIVE_CALL GetPlayerStats(AMX *amx, cell *params) { 
    cell *addr; 
    int player_id = params[1]; 
   
    // Validação de segurança 
    if(player_id < 0 || player_id > MAX_PLAYERS) 
        return amx_RaiseError(amx, AMX_ERR_BOUNDS); 
   
    // Acesso à memória 
    amx_GetAddr(amx, params[2], &addr); 
    *addr = GetPing(player_id); 
   
    return 1; 
}
 






Licenciamento
 
 



Documentação completa disponível nos headers | Suporte para 9 idiomas


obs: Apenas estou disponibilizando o conteúdo aqui no fórum, não tenho relação alguma com o projeto.


RE: Samp Development Kit - Calasans - 22/03/2025

Está redirecionando para outro link, Bruno.