domingo, 10 de março de 2013

0 bCMD - Processador de comandos (v1.8)

bCMD
"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.
Esta benchmark é uma comparação entre a versão antiga (bcmd) e a versão recente (bcmd2)

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: