28.08.2010, 18:55
(
Последний раз редактировалось ipsBruno; 29.08.2010 в 20:12.
)
Por DraKoN
Oi Galerinha estava aqui mexendo na Strtok e vendo algumas coisas interessantes entгo resolvi criar um Processador de Comandos usando ela,й muito simples e praticamente o mesmo que outros porйm achei mais simples de mexer nela..
Cуdigo:
O Cуdigo й Muito Simples nem necessita colocar para Download pelo fato de ser simples 8 Linhas (como disse muito simples)
Aqui o Cуdigo Basta Adicionar ao Topo ou Final GameMode dependendo do uso e posiзхes das CallBacks de comandos
pawn Код:
#define CMD:(%1) if(!strcmp(cmd,%1, true))
#define UsarProcessador new cmd[128],idx;cmd = Processar(cmdtext, idx);
#define UsarParametros new tmp[128],idxp;tmp = Processar(cmdtext, idxp);
Processar(const s[], &i)
{
new l = strlen(s);while ((i < l) && (s[i] <= ' ')) {
i++;}new o = i;new r[20];while ((i < l) && (s[i] > ' ') && ((i - o) < (sizeof(r) - 1))) {
r[i - o] = s[i];i++;}r[i - o] = EOS; return r;
}
Para usar deve ser da Seguinte Forma:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
UsarProcessador // Indica que Irб processar os Comandos
CMD:("/cmd1") // Comando desta forma "CMD:("/COMANDO") "
{
UsarParametros //Indica que usaram parвmetros para /comandos [id] ,etc..
printf("Vocк Digitou '/cmd1 %s",tmp);//Faz uma impressгo como exemplo do que digitamos
}
return 0;
}
Bom caso queira colocar mensagem do tipo, "Player OFF-LINE" ou Caracter Invalido,algo do Tipo faзa Assim:
pawn Код:
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid,0x08005,"O player Esta OFF-LINE");
if(!strlen(tmp)) return SendClientMessage(playerid,0x08005,"Digite /comando [id]|[texto]");
if(strval(tmp) == playerid) return SendClientMessage(playerid,0x08005,"Nгo pode usar esse comando em si mesmo");
Espero que tenham Gostado й bem Simples de se mexer,Bug? Envie uma PM para mim,irei testar a Corrigi-lo
CRЙDITOS A DRAKON