Servidores de Jogos

Introdução ao Pawn para open.mp

Introdução ao Pawn para open.mp

Os gamemodes do open.mp (e do SA-MP) são escritos em Pawn, uma linguagem simples, parecida com C, compilada para arquivos .amx que o servidor executa.

Variáveis e tags

Pawn tem essencialmente um tipo (célula de 32 bits), com tags para diferenciar usos:

new dinheiro = 5000;          // inteiro
new Float:vida = 100.0;       // número decimal (tag Float)
new bool:logado = false;      // booleano

Arrays e strings

Strings são arrays de caracteres:

new nome[MAX_PLAYER_NAME];
new mensagem[128];
format(mensagem, sizeof(mensagem), "Olá, %s! Você tem $%d.", nome, dinheiro);
  • format monta textos (%s texto, %d inteiro, %f decimal);
  • Sempre use sizeof para evitar estouro de memória.

Constantes e defines

#define COR_VERDE 0x00FF00FF
const MAX_CASAS = 500;

Funções

stock SomarDinheiro(playerid, valor)
{
    GivePlayerMoney(playerid, valor);
    return 1;
}

stock evita avisos se a função não for usada.

Condicionais e loops

if (dinheiro >= 1000)
{
    SendClientMessage(playerid, COR_VERDE, "Você pode comprar.");
}
else
{
    SendClientMessage(playerid, -1, "Dinheiro insuficiente.");
}

for (new i = 0; i < MAX_PLAYERS; i++)
{
    if (!IsPlayerConnected(i)) continue;
    // ...
}

(Com o open.mp e includes como YSI, há formas mais eficientes de percorrer jogadores, como iteradores.)

Callbacks

O servidor chama funções especiais (callbacks) quando algo acontece:

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, -1, "Bem-vindo(a) ao servidor!");
    return 1;
}

Veja "Callbacks essenciais".

Seu primeiro comando

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!strcmp(cmdtext, "/dinheiro", true))
    {
        new msg[64];
        format(msg, sizeof(msg), "Você tem $%d.", GetPlayerMoney(playerid));
        SendClientMessage(playerid, -1, msg);
        return 1;
    }
    return 0;
}

Para muitos comandos, prefira processadores como Pawn.CMD (veja o post dedicado).

Onde aprender mais

  • Documentação oficial do open.mp (open.mp/docs), com todas as funções e callbacks;
  • Fóruns e Discord da comunidade;
  • Código de gamemodes abertos e bem escritos.

Hospede seu servidor com a VittHost

Nos planos OPENMP-BR da VittHost, você envia seu .amx e acompanha o console em tempo real no painel Pterodactyl. Servidores no Brasil, proteção DDoS, MySQL incluso, 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