mysql_samp

Plugin MySQL para SA:MP escrito em Rust — por NullSablex

License SA:MP open.mp Build Architecture Release

[!WARNING] Este projeto está em fase inicial de desenvolvimento. A API pode sofrer alterações entre versões.

Visão geral

mysql_samp é um plugin MySQL moderno para SA:MP (San Andreas Multiplayer) e open.mp construído inteiramente em Rust. Fornece uma API completa para conectividade com banco de dados, queries non-blocking, sistema de cache e ORM, sem nenhuma dependência externa em runtime.

Destaques

Instalação

  1. Baixe a versão mais recente para sua plataforma:
    • mysql_samp.so (Linux)
    • mysql_samp.dll (Windows)
  2. Coloque o arquivo no diretório plugins/ do seu servidor.
  3. Copie mysql_samp.inc para a pasta de includes do compilador:
    • Windows: pawno/include/ ou qawno/include/
    • Linux: include/ (na raiz do servidor)
  4. Adicione ao server.cfg (ou config.json no open.mp):
    plugins mysql_samp.so
    

    No Windows:

    plugins mysql_samp.dll
    

[!IMPORTANT] Não é necessário instalar libmysqlclient ou qualquer outra biblioteca. O plugin é auto-contido.

Início rápido

#include <a_samp>
#include <mysql_samp>

new gMysql;

public OnGameModeInit() {
    gMysql = mysql_connect("127.0.0.1", "root", "senha", "samp_db");

    if (mysql_errno()) {
        return 1;
    }

    // Query non-blocking com callback
    mysql_query(gMysql, "SELECT * FROM players LIMIT 10", "OnPlayersLoaded");
    return 1;
}

forward OnPlayersLoaded();
public OnPlayersLoaded() {
    new rows = cache_get_row_count();
    printf("Jogadores encontrados: %d", rows);

    new name[MAX_PLAYER_NAME];
    for (new i = 0; i < rows; i++) {
        cache_get_value_name(i, "name", name);
        printf("  - %s", name);
    }
}

public OnGameModeExit() {
    mysql_close(gMysql);
    return 1;
}

Documentacao

A documentacao completa do plugin esta em docs/:

Documento Conteudo
Instalacao e configuracao Setup, server.cfg, requisitos
Conexao mysql_connect, mysql_close, options, charset, SSL
Queries mysql_query, mysql_pquery, mysql_format, mysql_escape_string
Cache Todas as funcoes cache_*, save/restore, ciclo de vida
ORM Mapeamento objeto-relacional, CRUD, bindings
Tratamento de erros mysql_errno, mysql_error, OnQueryError, codigos
Referencia da API Tabela completa de todas as natives e forwards
Seguranca Escape, UTF-8, limites, boas praticas
Migracao do R41-4 Diferencas e como migrar do mysql R41-4

Compilando o codigo-fonte

Requisitos

Build de desenvolvimento

cargo build

Build de release (Linux + Windows)

bash scripts/build.sh

Os arquivos sao gerados em dist/ com checksums SHA-256.

[!CAUTION] Este plugin e distribuido sob a GPL v3. Qualquer trabalho derivado deve manter o codigo-fonte aberto sob a mesma licenca.

Licenca

Copyright (c) 2026 NullSablex

Este projeto esta licenciado sob a GNU General Public License v3.0.