Vamos lб amigo:
Nesse tipo de comando vocк vai usar uma funзгo chamada strtok, ela serve para pegar o espaзo e identificar o que vem escrito depois do comando, usando ela funcionaria mais ou menos assim seu comando (nгo testei caso tenha erro avise aн):
pawn Код:
if(strcmp(cmd, "/banip", true) == 0 || strcmp(cmd, "/banirip", true) == 0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFAA, "Vocк nгo й administrador."); //Caso o player nгo for adm no caso eu usei a RCON como referкncia, no seu GM vocк modifica
new tmpex[128]; //Criei a variбvel tmpex que vai servir para armazenar o valor depois do primeiro espaзo ou seja o id
new idxex; // Servirб de apoio para funзгo strtok pois vai pegar o нnicio do id
tmpex = strtok(cmdtext, idxex); // Aqui vai atribuir para tmp o reconhecimento do id, pois o strtok vai pegar o espaзo que vem depois
if(!strlen(tmpex)) // Caso o usuбrio nгo digite o id
{
SendClientMessage(playerid,0xFFFFAA,"Uso correto: /banip [id] [motivo].");
return 1;
}
new playerban = strval(tmpex); //Strval serve para passar uma string de texto para um valor inteiro, ou seja tranforma o texto em nъmero, no caso o texto pegado й o id
if(!IsPlayerConnected(playerban)) return SendClientMessage(playerid, 0xFFFFAA, "Esse ID nгo estб conectado.");
/* Aн vocк usarб a funзгo abaixo para pegar o motivo, nгo vou explicar pois nгo conheзo muito bem essa funзгo, vou estudб-la melhor qualquer coisa te explico */
new length = strlen(cmdtext);
while ((idxex < length) && (cmdtext[idxex] <= ' '))// Aqui servirб para detectar o texto apуs o segundo espaзo
{
idxex++;
}
new offset = idxex;
new result[64];//Aqui serб armazenado o motivo do banimento
while ((idxex < length) && ((idxex - offset) < (sizeof(result) - 1)))
{
result[idxex - offset] = cmdtext[idxex];
idxex++;
}
result[idxex - offset] = EOS;
if(!strlen(result))//Caso nгo digite o motivo
{
SendClientMessage(playerid,0xFFFFAA,"Uso correto: /banip [id] [motivo].");
return 1;
}
new aviso[256];
format(aviso, 256,"%s foi banido pelo ADM %s motivo: %s.",pNome(playerban), pNome(playerid), result);
SendClientMessageToAll(0xFFFFAA, aviso);
Ban(playerban);
}
A funзгo pNome que eu criei
pawn Код:
stock pNome(playerid)
{
new nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, nome, sizeof(nome));
return nome;
}