[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


Messages In This Thread
Usando sscanf em zcmd - by RebeloX - 19.08.2011, 17:06
Re: Usando sscanf em zcmd - by steki. - 19.08.2011, 17:08
Re: Usando sscanf em zcmd - by BrunoBSF - 19.08.2011, 17:25
Re: Usando sscanf em zcmd - by RebeloX - 19.08.2011, 17:38
Re: Usando sscanf em zcmd - by Leeo_Perez - 19.08.2011, 18:09
Re: Usando sscanf em zcmd - by MiTToS - 19.08.2011, 18:12
Re: Usando sscanf em zcmd - by histire - 19.08.2011, 18:54
Re: Usando sscanf em zcmd - by RebeloX - 19.08.2011, 18:59
Re: Usando sscanf em zcmd - by Miqueias Barros - 19.08.2011, 20:05
Re: Usando sscanf em zcmd - by Josma_cmd - 19.08.2011, 20:17

Forum Jump:


Users browsing this thread: 1 Guest(s)