[Include] bCMD - Processador de comandos - Total Samp™ ..::Tudo Para Seu Servidor SA-MP::..
Receba Nosso Feed

Receba Todas as Nossas Atualizações em Seu E-mail:

468x60

Divulgue Aqui

Divulgue Seu Servidor Aqui

Divulgue Na TS Divulgue Na TS

Brasil Strain Hard

Editamos RG IP:199.119.226.172:7786

Strain Hard [PT/BR]Brasil Strain Hard[0.3e]

Titulo da Imagem

Host de Qualidade

Maia Br Maia Br

Titulo da Imagem

Host de Qualidade

Maia Br Maia Br

Brasil Live Experience

Sua Vida Real. de um Geito Virtual

Brasil Live Experience Titulo da Imagem

Curta Nossa Pagina

[Include] bCMD - Processador de comandos




bCMD
"Novo Processador de Comandos"

Hoje apresento-vos o novo processador de comandos, ele é processado por CallRemoteFunction e o comando cria callbacks tornando mais rápido a sua execução.

Syntaxs

pawn Code:
bCMD[seucomando]-(playerid,params[]) //ou bcmd:seucomando(playerid,space[])
No momento só existem essas formas, eu pretendo criar uma mais dinâmico.

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; }

Agora voce pode escolher outra forma de executar comandos, a tipica forma matem-se para não ocorrer bugs, para quem não sabe a tipica forma é /meucomando, para isso basta usar a função bKey(playerid,_key[],cmdtext[]); veja este exemplo

pawn Code:
public OnPlayerText(playerid,text[]){     if(bKey(playerid,"!",text)) return 0;     else if(bKey(playerid,"@",text)) return 0;     return 1; }

Agora podemos executar os comandos de 3 formas diferentes, /meucomando, !meucomando, @meucomando, lembrando que é necessário colocar essa função dentro da public OnPlayerText !

BenchMarks

Eu fiz 3 benchmarks e fiz a media deles e deu este resultado.

Code:
Benchmark (18/07/2012):
[19:13:14]  Bench for bcmd with out params: executes, by average, 555.43 times/ms.
[19:11:39]  Bench for zcmd sem params: executes, by average, 529.54 times/ms.

[19:13:16]  Bench for bcmd with params: executes, by average, 523.56 times/ms.
[19:11:41]  Bench for zcmd com params: executes, by average, 591.51 times/ms.

[19:13:18]  Bench for bcmd with sscanf: executes, by average, 565.32 times/ms.
[19:11:43]  Bench for zcmd com sscanf: executes, by average, 578.74 times/ms.

Benchmark (19/07/2012):
[01:08:57]  Bench for bcmd with out params: executes, by average, 585.48 times/ms. (+30 ms)
[01:08:59]  Bench for bcmd with params: executes, by average, 564.63 times/ms. (+41.07ms)
[01:09:01]  Bench for bcmd with sscanf: executes, by average, 605.54 times/ms. (+40.22ms)
Lembrando que este processador de comandos faz o mesmo que o zcmd, ou seja, ele usa CallRemoteFunction e callbacks como já referido, porém eu usei a minha logica e tornei ele mais rápido.

Exemplos

Bem como não podia faltar, aqui esta alguns exemplos do bCMD.

pawn Code:
bCMD[grana]-(playerid)     return GivePlayerMoney(playerid,10000);

bCMD com params(space)
pawn Code:
bCMD[kick]-(playerid,params[]){     if(isnull(params))         return SendClientMessage(playerid,-1,"use: /kick [id]");     if(!IsPlayerAdmin(playerid))         return SendClientMessage(playerid,-1,"Voce não é admin!");     Kick(strval(params));     return 1; }

bCMD + sscanf
pawn Code:
bCMD[pm]-(playerid,params[]){     new id,_text[128],pName[25];     if(sscanf(params,"ds[64]",id,_text))         return SendClientMessage(playerid,-1,"USE: /pm [id] [messagem]");     if(IsPlayerConnected(id)){         GetPlayerName(playerid,pName,25);         format(_text,sizeof(_text),"PM de %s | texto: %s",_text);         SendClientMessage(id,-1,_text);     }     else         SendClientMessage(playerid,-1,"Jogador não conectado!");     return 1; }

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)

Download

Download - Pastebin v1.1

Download - Pastebin v1.0


BUGS

No entanto não achei nenhum bug, caso achar algum bug reporte por PM ou reporte aqui no tópico, assim isto ajudara eu a resolver os bugs.

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.

      Postado Por: Caozinho_DosCorre

0 comentários:

Postar um comentário