Servidores de Jogos

sscanf: lendo parâmetros de comandos com segurança

sscanf: lendo parâmetros de comandos com segurança

Separar "/dar 12 5000" em partes com strtok é trabalhoso e cheio de armadilhas. O sscanf2 faz isso em uma linha, com tipos e validação.

Especificadores mais usados

Especificador Lê
i ou d Inteiro
f Decimal (Float)
s[tamanho] Texto (tamanho obrigatório)
u Jogador (ID ou parte do nome)
r Jogador, incluindo NPCs
c Um caractere
I(padrão) Inteiro opcional com valor padrão
S(padrão)[tamanho] Texto opcional

Exemplo: /dar [jogador] [valor]

cmd:dar(playerid, params[])
{
    new alvo, valor;
    if (sscanf(params, "ui", alvo, valor))
        return SendClientMessage(playerid, -1, "Uso: /dar [id/nome] [valor]");

    if (alvo == INVALID_PLAYER_ID)
        return SendClientMessage(playerid, -1, "Jogador não encontrado.");

    // validações de valor...
    return 1;
}

sscanf retorna 0 em caso de sucesso. Por isso o if trata o erro.

Texto no fim do comando

new alvo, motivo[64];
if (sscanf(params, "us[64]", alvo, motivo))
    return SendClientMessage(playerid, -1, "Uso: /kick [id] [motivo]");

O último s captura o resto da linha, com espaços.

Parâmetros opcionais

new pagina;
sscanf(params, "I(1)", pagina); // /ajuda ou /ajuda 2

Validação: o sscanf não faz tudo

O sscanf garante o tipo, não a regra de negócio. Sempre valide:

  • Negativos: /dar 3 -5000 pode tirar dinheiro de outro jogador;
  • Limites: valores absurdos ou overflow;
  • Alvo: INVALID_PLAYER_ID, o próprio jogador, jogador não logado;
  • Texto: tamanho e caracteres, principalmente se for para o banco (use escape ou consultas preparadas).

Mensagens de uso claras

Mostre sempre o formato correto quando o comando for digitado errado. Jogadores agradecem e a staff recebe menos dúvidas.

Instalação

Use a versão do sscanf compatível com o open.mp (plugin e include da mesma versão) e a build Linux em servidores Linux.

Hospede seu servidor com a VittHost

Nos planos OPENMP-BR da VittHost, você instala o sscanf e outros plugins pelo 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