How to: zcmd & sscanf -
RebeloX - 23.12.2011
Oque й o ZCMD e o SSCANF?
ZCMD й um processador de comandos rapido que usa "CallRemoteFunction".
SSCANF faz o mesmo trabalho que o strtok, porйm й muito mais rapido, facil, ocupa menos espaзo e й multiread.
ZCMD'
pawn Код:
CMD:hello(playerid,params[]) return print("Hello World");
Zcmd й muito mais rapido, como pode ver eu gastei 1 linha, em strcmp iria gastar mais, o que o comando irб fazer й executar o comando e retornar com uma mensagem para o log do servidor.
Para fazer um comando zcmd vocк necessita de fazer um Marco, um marco й o mesmo que uma define, ou seja, vocк pode usar
pawn Код:
CMD:hello(playerid,params[]) return print("Hello World");
ou
pawn Код:
COMMAND:hello(playerid,params[]) return print("Hello World");
Dentro desde bonito comando esta uma funзгo muito grande que o faz ser rapido porque o zcmd usa CallRemoteFunction, ou sejб irб chamar uma callback veja o exemplo.
pawn Код:
CMD:hello(playerid,params[]) return print("Hello World");
por traz do comando...
pawn Код:
forward cmd_hello(playerid,params[]);
public cmd_hello(playerid,params[]) return print("Hello World");
Vocк pode usar os parametros do zcmd, exemplo.
pawn Код:
CMD:vida(playerid,params[]) return SetPlayerHealth(playerid,strval(params));
Bem como pode ver aqui nгo й necessario usarmos sscanf, pois vocк usou 1 parвmetro (/vida [parвmetro]) se usar mais que ai sim deve usar o sscanf, agora vejamos o que й o sscanf.
SSCANF'
pawn Код:
CMD:pm(playerid,params[])
{
new
mString[50],
iName[25],
pName[25],
text,
id
;
if(sscanf(params,"us[128]",id,text))
return SendClientMessage(playerid,-1,"USE: /pm [id] [texto]");
if(!IsPlayerConnected(id))
return SendClientMessage(playerid,-1,"*Jogador offline");
GetPlayerName(playerid,pName,sizeof(pName));
GetPlayerName(id,iName,sizeof(iName));
format(mString,sizeof(mString),"Nova PM de %s | Texto: %s",pName,text);
SendClientMessage(id,-1,mString);
format(mString,sizeof(mString),"PM enviada com sucesso! Destinatario %s",iName);
SendClientMessage(playerid,-1,mString);
return true;
}
Como pode ver aqui usamos apenas 19 linhas, se fosse em strcmp teria o dobro, ou seja seria 38 linhas.
Como pode ver usamos 2 parвmetros, o "u" e o "s[128]", o "u" й para ID e Nomes de jogadores, ou seja, o "u" verifica o id e o nome do player, jб se vocк usar "d" sу irб verificar o id, depois o "id" e o "text" sгo variaveis que defenimos, caso reparar o sscanf й parecido ao format, ou seja, ambos usam parametros, sу que o format usa %s, mas no fim vocк deve defenir as variaveis para nгo dar nenhum erro.
Parвmetros do sscanf
Код:
Format Use
L(true/false) Optional logical truthity
l Logical truthity
B(binary) Optional binary number
b Binary number
N(any format number) Optional number
n Number
C(character) Optional character
c Character
I(integer) Optional integer
i Integer
D(integer) Optional integer
d Integer
H(hex value) Optional hex number
h Hex number
O(octal value) Optional octal value
o Octal value
F(float) Optional floating point number
f Floating point number
G(float/INFINITY/-INFINITY/NAN/NAN_E) Optional float with IEEE definitions
g Float with IEEE definitions
{ Open quiet section
} Close quiet section
P<delimiter> Invalid delimiter change
p<delimiter> Delimiter change
Z(string)[length] Invalid optional string
z(string)[length] Deprecated optional string
S(string)[length] Optional string
s[length] String
U(name/id) Optional user (bot/player)
u User (bot/player)
Q(name/id) Optional bot (bot)
q Bot (bot)
R(name/id) Optional player (player)
r Player (player)
A<type>(default)[length] Optional array of given type
a<type>[length] Array of given type
E<specification>(default) Optional enumeration of given layout
e<specification> Enumeration of given layout
'string' Search string
% Deprecated optional specifier prefix
Concluindo: SSCANF & ZCMD sгo coisas simples, rapidas e faceis de usar.
Perguntas Ferquentes'
Antes de perguntar algo veja isto.
P: Onde faзo o download do SSCANF & ZCMD?
R: ZCMD | SSCANF
P: Qual a difrenзa entre return 1 e return true?
R: Nenhuma, 1 ou true sгo os mesmo valores, alias sу existe 2 valores, (true = 1 ou false = 0).
P: Posso usar sscanf com um parвmetro?
R: Sim, mas apenas use o parвmetro "u", caso for usar parametros como "d" "i" "s" etc.. use os parametros do zcmd.
P: Como uso o "params" do zcmd?
R: Veja este exemplo
pawn Код:
CMD:all(playerid,params[])
{
if(!IsPlayerAdmin(playerid))
return SendClientMessage(playerid,-1,"*Vocк nгo й admin!");
new text,tString[34];
if(isnull(params))
return SendClientMessage(playerid,-1,"use: /all [texto]");
text = strval(params);
GetPlayerName(playerid,tString,sizeof(tString));
format(tString,sizeof(tString),"Admin %s : %s",tString,text);
SendClientMessageToAll(-1,tString);
return true;
}
P: O SSCANF funciona para o 0.3d
R: Sim o ****** atualizou o sscanf para o 0.3d
P: Porque vocк nгo explicou o delimitador?
R: Bem sinceramente ainda nгo precebi muito como o usa, mas pelo que eu vejo, o delimitador й para dividir, ou seja, se vocк tiver algo assim
pawn Код:
string[] = "Texto,50.6,2"
Como vocк pode ver no "Texto,50...." tem uma virgula, essa virgula esta a dividir, entгo й isso que temos que fazer no sscanf, vocк deve colocar algo assim:
P: Jб tem muitos tutoriais sobre o zcmd & sscanf, porque fez mais outro?
R: Bem os que jб existem sгo desatualizados e eu gosto de manter esta board informada (:
Creditos'
BlueX - Pelo tutorial
Zeex - Criador do ZCMD
****** - Criador do sscanf
RockFire - Pelo tutorial dele
Re: How to: zcmd & sscanf -
Hardware - 23.12.2011
Gostei. Tinha algumas coisas que nгo tinham sido esclarecidas sobre zcmd e sscanf. Aprendi mais algumas coisas e dicas. Parabйns, bom tutorial. Sу cuida mais a ortografia.
Re: How to: zcmd & sscanf -
RebeloX - 23.12.2011
Quote:
Originally Posted by Hardware
Gostei. Tinha algumas coisas que nгo tinham sido esclarecidas sobre zcmd e sscanf. Aprendi mais algumas coisas e dicas. Parabйns, bom tutorial. Sу cuida mais a ortografia.
|
Obrigado, ah nem liga mano tava falando com uma amiga aqui que tava triste ai nem liguei para os erros, preferi ajudar ela do que fazer o tuto, por isso que demorei umas 2/3h fazendo o tuto.
Re: How to: zcmd & sscanf -
BrunoBSF - 23.12.2011
belo tuto bluex
Re: How to: zcmd & sscanf -
Hardware - 23.12.2011
Quote:
Originally Posted by BlueX
Obrigado, ah nem liga mano tava falando com uma amiga aqui que tava triste ai nem liguei para os erros, preferi ajudar ela do que fazer o tuto, por isso que demorei umas 2/3h fazendo o tuto.
|
Agora tб explicado. Na prуxima vez que for postar algum release, nгo fique falando com sua amiga.-q EHUEHEHUEH
Re: How to: zcmd & sscanf -
RebeloX - 23.12.2011
Quote:
Originally Posted by Mata_Noob
19/20 euoeuoeueo Podia ter mais Cores =D Muito Bom, agora sim aprendi a Usar ZCMD, boa Sorte com sua Amiga ae ( Olha a Safadeza hein euoeueoueoueoueoueo )
|
й eu curto ela usausahasuhsa, valeu mano (:
Para mim nгo importa as cores, importa й a explicaзгo e organizaзгo para que todos entendгo (:
Quote:
Originally Posted by BrunoBSF
belo tuto bluex
|
Obrigado (:
Quote:
Originally Posted by Hardware
Agora tб explicado. Na prуxima vez que for postar algum release, nгo fique falando com sua amiga.-q EHUEHEHUEH
|
Ah sabe como й meninas sгo meninas sabe sauasuhasuhasuash
Re: How to: zcmd & sscanf -
RebeloX - 23.12.2011
Quote:
Originally Posted by Mata_Noob
Boa Sorte =D
|
Valeu amigo (:
Re: How to: zcmd & sscanf -
Macintosh - 23.12.2011
bom tutorial gonзalo '-'
Re: How to: zcmd & sscanf -
RebeloX - 23.12.2011
Quote:
Originally Posted by Macintosh
bom tutorial gonзalo '-'
|
Ta bom lucas uhasuhasas.
Re: How to: zcmd & sscanf -
Victor Cesaroni - 23.12.2011
Nice work man!
Vai ajudar eu pra caramba, ainda mais que estou comeзando um novo GM de... pra falar a verdade nem sei de que que vou fazer '-'
Re: How to: zcmd & sscanf -
RebeloX - 24.12.2011
Quote:
Originally Posted by Victor Cesaroni
Nice work man!
Vai ajudar eu pra caramba, ainda mais que estou comeзando um novo GM de... pra falar a verdade nem sei de que que vou fazer '-'
|
Valeu (:
Re: How to: zcmd & sscanf -
Sampizito - 24.12.2011
Blue, coloquei teu link do post lб no meu pros novatos se guiarem tambйm *-* , tu deixa ne ? '-'
Re: How to: zcmd & sscanf -
RebeloX - 24.12.2011
Quote:
Originally Posted by Sampizito
Blue, coloquei teu link do post lб no meu pros novatos se guiarem tambйm *-* , tu deixa ne ? '-'
|
Claro mano HUAEHUAEUHAEUHEA, acha que eu vou ficar chateado por isso? Valeu deboa (:
Se quizer da rep tambem pode huasuhasuhasu -q
Re: How to: zcmd & sscanf -
Sampizito - 24.12.2011
Ta editado lб ♥
Re: How to: zcmd & sscanf -
RebeloX - 24.12.2011
Quote:
Originally Posted by Sampizito
Ta editado lб ♥
|
Й eu jб vi rsrsrs
Re: How to: zcmd & sscanf -
[O.z]Caroline - 24.12.2011
muito bom tutorial Gonssгlo
Re: How to: zcmd & sscanf -
!Niiw - 24.12.2011
Eu comecei a aprender scriptar usando zcmd e sscanf, mas ainda tinha umas duvidas que foram exclarecidas.
Belo tutorial ajudou bastante
Re: How to: zcmd & sscanf -
StreetGT - 24.12.2011
bom tutorial para iniciantes, parabens
Re: How to: zcmd & sscanf -
WLSF - 24.12.2011
Bom Bom, parabйns...
Re: How to: zcmd & sscanf -
RebeloX - 24.12.2011
Quote:
Originally Posted by Willian_Luigi
Bom Bom, parabйns...
|
4
Й nem faзo anos auheuaehueahae, ta bom (:
Bom natal para todos! ._.