SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [TUTORIAL] SScanf Em ZCMD

    Lincoln_Br
    Lincoln_Br
    --> Postador Iniciante
    --> Postador Iniciante


    Celular : 82700739
    Mensagens : 97
    Moedas : 3088
    Data de inscrição : 01/07/2016
    Idade : 25
    Localização : Jaragua-GO

    include - [TUTORIAL] SScanf Em ZCMD Empty [TUTORIAL] SScanf Em ZCMD

    Mensagem por Lincoln_Br Qui 22 Set 2016 - 13:37

    ¤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
    Code:
    #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...
    Code:
    //=====[ARRAYS]======
    new texto;
    new nome[MAX_PLAYER_NAME];
    new Str[128];
    new id;


    Code:
    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.


    Code:
    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...


    Code:
    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...


    Code:
    SendClientMessage(playerid,-1,"Use: /mp [id] [texto]");
    ↑ isso é aquela mensagem quando você só digita o comando, /mp dai aparece essa mensagem...


    Code:
    else
    ↑ irá retornar caso você adicione o id e o texto exemplo /mp 1 eae.


    Por fim usamos ↓
    Code:
    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:
    Code:
    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:
    Code:
    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)
    Code:
    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



    include - [TUTORIAL] SScanf Em ZCMD Forma_10

      Data/hora atual: Qua 1 maio 2024 - 20:42