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);
formatmonta textos (%stexto,%dinteiro,%fdecimal);- Sempre use
sizeofpara 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.