bCMD
"Novo processador de comandos"
"Novo processador de comandos"
Depois de ter desenvolvido o bcmd eu deparei-me com vários problemas no código e com bugs críticos, prometi resolver esses bugs, mas com alguma preguiça minha não resolvi os bugs, depois veio a escola e ainda pior, mas agora chegou as férias e já algum tempo estava a editar ele, estava a desenvolver a versão 2.0, mas antes disso necessitei de fazer um upgrade para a versão 1.8, acho que seria mais importante, do que criar outras coisas não tão importantes, mas bem, o bcmd é um processador de comandos, processado por via CallLocalFunction, o comando cria callbacks o que torna mais rápido a sua execução.
Syntaxs
pawn Code:
bCMD[nome_do_comando]>(playerid:params[]:help) return 1; CMD::nome_do_comando(playerid,params[],help) return 1; cmd(nome_do_comando:playerid,params[],help) return 1;
Reformulei a syntax do bcmd, lembrando que é necessário colocar todos os parametros (playerid,params[],help), caso não coloque um erro ocorrerá no bcmd o que pode prejudicar o seu funcionamento.
[pawn]
Help
Este sistema é idêntico ao YCMD, alguns membros pediram-me para adicionar e eu adicionei em umas versões anteriores.
exemplo de uso:
pawn Code:
bCMD[grana]>(playerid:params[]:help) { if(help) return SendClientMessage(playerid,-1,"Este comando é usado para dar dinheiro, ex: /grana 100"); if(isnull(params) return SendClientMessage(playerid,-1,"USE: /grana [valor]"); GivePlayerMoney(playerid,strval(params)); return 1; }
Quando voce executar o comando, ao digitar /grana help ou /grana ajuda ele irá processar a condição if(help){...}
AVISO: Lembre-se que é necessário colocar a condição if(help) primeiro que if(isnull) ou if(sscanf(...))
CallBacks
Quando o comando é chamando também é chamada a função OnPlayerCallCommand, você pode usa-lo e verificar se o comando existe ou não, exemplo:
pawn Code:
public OnPlayerCallCommand(playerid,cmdtext[],sucess){ if(!sucess) { new result[128]; format(result,sizeof(result),"O comando %s não existe",cmdtext); SendClientMessage(playerid,-1,result); } return 1; }
BenchMarks
Todas as benchmarks anteriores foram consideradas com nulas, após eu ter descoberto que benchmark do slice mostra quantas vezes uma função pode ser executada em um ms(milissegundo)
Code:
Bench for bcmd2: executes, by average, 236.99 times/ms. Bench for bcmd: executes, by average, 98.40 times/ms.
ChangeLog
- 18/07/2012 - v1.0
- Lançameto
- 19/07/2012 - v1.1 (BETA)
- Optimização do código.
- Perda de velocidade, não era essa minha intenção, logo depois estarei reparando isso.
- Nova forma de usar comandos, agora em vez de usarmos /meucommando podemos usar !meucommando ou @meucommando (mais informações veja no topo)
- 20/07/2012 - v1.2
- Optimização
- Mais velocidade.
- 21/07/2012 - v1.3
- Reparação de bugs, agradecimentos ao paulor por ter reportado!
- Optimização
- Mais um pouco de velocidade, não muita.
- 27/07/2012 - v1.4
- Reparação de bugs críticos.
- Adicionado o parâmetro help. (veja como funciona no topo do tópico)
- 30/07/2012 - v1.5
- Reparação de bugs críticos. Obrigado Paulo!
- Optimização, agradecimentos ao bruno por me falar sobre o funcidx.
- Agora também detectamos a palavra "ajuda" (ver na parte do help)
- 30/07/2012 - v1.6
- Optimização do código.
- Agora também é chamada a OnPlayerCallCommand caso o comando exista
- 22/08/2012 - v1.7
- Resolução de bugs.
- 17/12/2012 - v1.8
- Reparação de um bug critico.
- Optimização do código.
- Reajuste no código.
- Nova syntax.
Download
Download-Pastebin v1.8
Pastebin v1.7
Pastebin v1.6
Pastebin v1.5
Pastebin v1.4
Pastebin v1.3
Pastebin v1.2
Pastebin v1.1
Download - Pastebin v1.0
Nota: Versão 1.0 não está para download por causa dos links corrompidos e não tenho o mesmo link, as outras versões deixo apenas o pastebin

BUG'S
Testei muitas vezes para ver se existia qualquer bug, mas não detetei nenhum bug, porém eu testei apenas por via console, pois não conseguia entrar InGame devido a problemas internos do meu bonito computador, enfim, penso que não existem bugs, mas caso encontre um bug reporte-me por PM ou aqui no tópico.
Créditos
- ZeeX
- Criador do ZCMD e deu-me a luz para o inicio da include.
- BlueX
- Criador da include.
- Y_Less
- Criador do sscanf
- [iPs]Team
- Melhor equipe de programação.
- SA-MP Team
- Team past, present and future - SA:MP.
- Paulo_Terror
- Tirou-me algumas duvidas.
- Stewie`
- Um grande amigo.
- Wiki SA-MP
- Tirou-me algumas duvidas.
- DraKiNs ou Bruno
- Ajudou-me em optimização.
0 comentários:
Postar um comentário