Simples Processador de Comandos (Usando Strtok) -
ipsBruno - 28.08.2010
Por DraKoN
Introduзгo:
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;
}
Usando:
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;
}
Cуdigos Complementares:
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");
(
Como Podem Ver 'tmp' й o que o player Digitarб apуs o Comando )
Espero que tenham Gostado й bem Simples de se mexer,Bug? Envie uma PM para mim,irei testar a Corrigi-lo
CRЙDITOS A DRAKON
Re: Simples Processador de Comandos (Usando Strtok) -
dogu - 28.08.2010
Ta Mas pra tutorial
Respuesta: Simples Processador de Comandos (Usando Strtok) -
ipsBruno - 28.08.2010
Mais й um Filterscript, e sendo eu que fiz eu tenho total direito de explicar como funciona,ou nгo?
Quote:
O "mas" й uma conjunзгo adversativa. Й usada para dar idйia de oposiзгo entre duas oraзхes.
O "mais" й um adverbio de intensidade.
|
Re: Simples Processador de Comandos (Usando Strtok) -
SuB_ZeRo0_ - 28.08.2010
Gostei do "FS" Drakon, mas como sempre tentarei melhorar ou pensar mais alto (menor).
OFF:
Entra no msn, que quero falar com vocк. xD
Respuesta: Simples Processador de Comandos (Usando Strtok) -
ipsBruno - 28.08.2010
Valeu Suba,ja entrei no msn *-*
Re: Simples Processador de Comandos (Usando Strtok) -
dogu - 29.08.2010
Eu n estou criticando, acho atй melhor assim, sу q deveria colocar o codigo pronto pra down, ja q se trata de um FS
Respuesta: Simples Processador de Comandos (Usando Strtok) -
ipsBruno - 29.08.2010
Sim eu Sei
Dogu mais o cуdigo ja esta pronto,basta ler melhor o Tуpico,se eu postasse dessa forma nгo saberiam como usar ¬¬
Respuesta: Simples Processador de Comandos (Usando Strtok) -
ipsBruno - 03.09.2010
ATUALIZADO,rs.
Mudado para '\0'
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] = '\0'; return r;
}
Re: Simples Processador de Comandos (Usando Strtok) -
[Fx]GhOsT - 01.01.2011
o.O ta mais pra copia do YCMD, sem querer ser chato. (E creio q o msm seja mais rapido)
Mas ta valendo. Talvez seja util algm dia