[Tutorial] Usando sscanf em zcmd
#1



¤Usando sscanf em zcmd¤


Bem comecei a usar zcmd a pouco tempo, mas tenho visto que й muito diferente de strcmp, alem de tudo й mais fбcil de se aprender, neste tutorial vou ensinar como usar sscanf em zcmd, irei ensinar o que aprendi claro, nгo estarei dizendo coisas que nгo sei, por tanto vamos comeзar...

Bem para usar sscanf em zcmd terб que criar o comando zcmd logico, entгo vamos lб.

No topo do GM/Fs adicione
pawn Код:
#include zcmd
#include sscanf2
Entгo agora vamos criar um comando de mp

Nгo se esqueзa de adicionar as arrays como logico, claro que pode mudar o nome, nгo й preciso chamar-se new Texto, pode ser new frase, o que quiser, sу tem que saber colocar...
pawn Код:
//=====[ARRAYS]======
new texto;
new nome[MAX_PLAYER_NAME];
new Str[128];
new id;
pawn Код:
CMD:mp(playerid, params[])
{
    if(sscanf(params, "us",id,texto))
    {
        SendClientMessage(playerid,-1,"Use: /mp [id] [texto]");
    }
    else
    {
        if(IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Este jogador nгo estб conectado");
        GetPlayerName(playerid,nome,sizeof(nome));
        format(Str, sizeof(Str), "Mesangem Privada de %s: %s",nome,texto);
        SendClientMessage(id,-1,Str);
    }
    return true;
}
Bem vamos falar agora um pouco sobre o comando.

pawn Код:
if(sscanf(params, "us",id,texto))
if - Primeiramente. Pra quк if? Simples. sscanf, quando consegue cumprir sua funзгo, retorna 0 (O que й um costume desconhecido em pawn). Ou seja, quando ele separa a string corretamente e todas as variбvels sгo preenchidas, retorna 0, caso contrбrio 1, o que mostraria a ajuda do comando. (Crйditos Luнs Miki)


params - Como vocк jб sabe, no zcmd, params й o que vem depois do /comando. Ou seja, seu objetivo й quebrar a string 'params' para poder pegar a hora para setar o servidor. (Crйditos Luнs Miki)

us - Bem essa parte й o que torna sscanf facil de usar em zcmd, vc sabe sabe quando usa mensagem que tenha que pegar o nome do player? ou o id, que usa %s, %d aqui й mesma coisa sу que sem %, entгo vamos ver alguns dos que eu sei...

Код:
d ou i - usado quando vocк usa nъmeros, exemplo numero do seu celular...
s - й o string usado quando vocк usa letras, exemplo "Meu nome й BlueX"
u - usado para aquele famoso [Id do Player]...
f - usado para coordenadas...
Existem mais, mas eu ainda nгo todos....
depois para acabar basta adicionar as arrays, tipo, para o u vocк pode criar uma array chamada id, para o s vocк pode criar uma chamada Texto, por ai a diante...

pawn Код:
SendClientMessage(playerid,-1,"Use: /mp [id] [texto]");
↑ isso й aquela mensagem quando vocк sу digita o comando, /mp dai aparece essa mensagem...

pawn Код:
else
↑ irб retornar caso vocк adicione o id e o texto exemplo /mp 1 eae.

Por fim usamos ↓
pawn Код:
format(Str, sizeof(Str), "Mesangem Privada de%s: %s",nome,texto);
Ah mlk mais vc nгo tem que adicionar o id?
Nгo pois vocк irб mandar para o player nгo serб necessбrio, mas caso vocк queira que mostre o id basta colocar assim:
pawn Код:
format(Str, sizeof(Str), "Mesangem Privada de %s [ID%d]: %s",nome,playerid,texto);
Bom eu expliquei este comando todo, acho que por agora aprenderam, entгo, vou exemplificar mais outros comandos

/av para admin:
pawn Код:
CMD:av(playerid, params[])
{
    if(IsPlayerAdmin(playerid))
    {
        if(sscanf(params, "s",texto))
        {
            SendClientMessage(playerid,-1,"Use: /av [texto]");
        }
        else
        {
            GetPlayerName(playerid,nome,sizeof(nome));
            format(Str, sizeof(Str),"Admin %s [ID:%d]: %s",nome,playerid,texto);
            SendClientMessageToAll(-1,Str);
        }
    }
    else SendClientMessage(playerid,-1,"Vocк nгo esta logado na rcon");
    return true;
}
/a (chat de admins)
pawn Код:
CMD:a(playerid, params[])
{
    for( new i; i < MAX_PLAYERS; i++ )
    {
        if(IsPlayerAdmin(playerid))
        {
            if(sscanf(params, "s",texto))
            {
                SendClientMessage(playerid,-1,"Use: /a [texto]");
            }
            else
            {
                GetPlayerName(playerid,nome,sizeof(nome));
                format(Str, sizeof(Str),"%s: %s",nome,texto);
                SendClientMessage(i,-1,Str);
            }
        }
        else SendClientMessage(playerid,-1,"Vocк nгo й adminRcon");
    }
    return true;
}
Bem agora basta usar imaginaзгo e pronts, vocк consegue fazer coisas mais rapidas com zcmd e sscanf.
Usando imaginaзгo vocк chega lб. Espero que goste

®Creditos®


®BlueX - Por criaзгo do Tutorial
®Luis Miki - Por explicaзгo de duas coisas que eu nгo sabia
®****** - Pela criaзгo do sscanf
®Zeex - Plea criaзгo do zcmd

↓Download↓


↓ZCMD - Clique Aqui
↓sscanf 2.0 - Clique Aqui
Reply
#2

*---*
Reply
#3

Otimo parabens
Reply
#4

Quote:
Originally Posted by Luнs Miki
Посмотреть сообщение
*---*
hehe *---*

Quote:
Originally Posted by BrunoBSF
Посмотреть сообщение
Otimo parabens
Tanks...
Reply
#5

bacana, eu ia fazer um tuto desse , mas vc foi mais rapido, seu tutorial ficou mt bem explicativo!

@edit:
esqueci de avisar... vc podia deixar esse code mais facil de fazer e mais rapido tbm(na minha opniao!)

CMD:mp(playerid, params[])
{
if(sscanf(params, "us",id,texto)) return SendClientMessage(playerid,-1,"Use: /mp [id] [texto]");
if(IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Este jogador nгo estб conectado");
GetPlayerName(playerid,nome,sizeof(nome));
format(Str, sizeof(Str), "Mesangem Privada de %s: %s",nome,texto);
SendClientMessage(id,-1,Str);
return true;
}

sу acho que assim seria mais facil ou mais 'otimizado', de qualquer maneira foi apenas uma sugestгo , belo tutorial!
Reply
#6

Como eu devo usar o sscanf com o parametro "u"?
Eu tentei de algumas maneiras mas nunca me funcionava, vi pessoas do fуrum com o mesmo problema -q
pode dar um exemplo?

EDIT: LoL acabei de ver que tem um exemplo com o "u" -q
mals.

Bom tuto +reputacao
Reply
#7

man sу kero fala uma coisa "obrigado hihi"
ontem de ontem tava falando com o dylan tava kerendo aprender sscanf e zcmd vlw pelo tuto vei + repu
Reply
#8

Quote:
Originally Posted by Leeo_Perez
Посмотреть сообщение
bacana, eu ia fazer um tuto desse , mas vc foi mais rapido, seu tutorial ficou mt bem explicativo!
Obrigado

Quote:
Originally Posted by MiTToS
Посмотреть сообщение
Como eu devo usar o sscanf com o parametro "u"?
Eu tentei de algumas maneiras mas nunca me funcionava, vi pessoas do fуrum com o mesmo problema -q
pode dar um exemplo?

EDIT: LoL acabei de ver que tem um exemplo com o "u" -q
mals.

Bom tuto +reputacao
Nгo percisa de desculpar LoooL, o "u" й o id do player, usado para setar, dar grana, enviar mp, tudo o que tenha a ver com dar algo a um player....

Quote:
Originally Posted by histire
Посмотреть сообщение
man sу kero fala uma coisa "obrigado hihi"
ontem de ontem tava falando com o dylan tava kerendo aprender sscanf e zcmd vlw pelo tuto vei + repu
Thanks
Reply
#9

Nossa BlueX, parabйns mano
Reply
#10

Bom tutorial parabйns, bem explicado.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)