Servidores de Jogos

Conectando o gamemode ao MySQL com o plugin MySQL

Conectando o gamemode ao MySQL com o plugin MySQL

Este é o passo a passo para conectar o gamemode ao banco usando o plugin MySQL (série R41 e posteriores, de pBlueG), o mais usado na comunidade.

1. Instale o plugin

  • Baixe a versão compatível com o open.mp no repositório oficial;
  • Coloque o .so em plugins/ e o include a_mysql.inc na pasta de includes;
  • Declare o plugin na configuração do servidor;
  • Algumas versões exigem bibliotecas adicionais (como a libmysqlclient). Leia o README.

2. Conecte no OnGameModeInit

#include <open.mp>
#include <a_mysql>

new MySQL:Banco;

public OnGameModeInit()
{
    new MySQLOpt:opcoes = mysql_init_options();
    mysql_set_option(opcoes, AUTO_RECONNECT, true);

    Banco = mysql_connect("host", "usuario", "senha", "banco", opcoes);

    if (Banco == MYSQL_INVALID_HANDLE || mysql_errno(Banco) != 0)
    {
        print("[MySQL] Falha na conexão. Encerrando.");
        SendRconCommand("exit");
        return 1;
    }

    mysql_set_charset("utf8mb4", Banco);
    print("[MySQL] Conectado com sucesso.");
    return 1;
}

Os nomes das opções e funções podem variar entre versões do plugin. Consulte o wiki da versão que você usa.

3. Feche ao desligar

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

Salve os dados dos jogadores antes de fechar a conexão.

4. Não deixe a senha no código

Colocar a senha do banco no .pwn é arriscado: ela vai parar no Git, no Discord da equipe e em backups. Uma alternativa suportada pelo plugin é o arquivo mysql.ini, lido com mysql_connect_file():

hostname = localhost
username = usuario
password = senha_forte
database = meuservidor
auto_reconnect = true

Mantenha esse arquivo fora do controle de versão.

5. Registre os erros

Implemente o callback de erro do plugin (OnQueryError) para registrar consultas que falharam, com o código do erro e o SQL. Isso salva horas de depuração.

Problemas comuns

  • Access denied: usuário, senha ou host incorretos, ou falta de permissão no banco;
  • Can't connect: host ou porta errados, ou o MySQL não aceita a conexão daquele IP;
  • Acentos quebrados: charset diferente entre tabelas, conexão e gamemode.

Hospede seu servidor com a VittHost

Os planos OPENMP-BR da VittHost já incluem MySQL, prontos para conectar ao seu gamemode. Servidores no Brasil, painel Pterodactyl, proteção DDoS, compatibilidade total com scripts SA-MP e teste grátis de 3 dias.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS