[Tutorial] How to: zcmd & sscanf
#1

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:
pawn Код:
"p<|>s[6]dd"


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
Reply
#2

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.
Reply
#3

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.
Reply
#4

belo tuto bluex
Reply
#5

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
Reply
#6

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
Reply
#7

Quote:
Originally Posted by Mata_Noob
Посмотреть сообщение
Boa Sorte =D
Valeu amigo (:
Reply
#8

bom tutorial gonзalo '-'
Reply
#9

Quote:
Originally Posted by Macintosh
Посмотреть сообщение
bom tutorial gonзalo '-'
Ta bom lucas uhasuhasas.
Reply
#10

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 '-'
Reply
#11

Quote:
Originally Posted by Victor Cesaroni
View Post
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 (:
Reply
#12

Blue, coloquei teu link do post lб no meu pros novatos se guiarem tambйm *-* , tu deixa ne ? '-'
Reply
#13

Quote:
Originally Posted by Sampizito
View Post
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
Reply
#14

Ta editado lб ♥
Reply
#15

Quote:
Originally Posted by Sampizito
View Post
Ta editado lб ♥
Й eu jб vi rsrsrs
Reply
#16

muito bom tutorial Gonssгlo
Reply
#17

Eu comecei a aprender scriptar usando zcmd e sscanf, mas ainda tinha umas duvidas que foram exclarecidas.

Belo tutorial ajudou bastante
Reply
#18

bom tutorial para iniciantes, parabens
Reply
#19

Bom Bom, parabйns...
Reply
#20

Quote:
Originally Posted by Willian_Luigi
View Post
Bom Bom, parabйns...
4

Й nem faзo anos auheuaehueahae, ta bom (:

Bom natal para todos! ._.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)