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] Como utilizar ZCMD + sscanf - Com exemplo.

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11378
    Moedas : 1031966
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Como utilizar ZCMD + sscanf - Com exemplo. Empty [Tutorial] Como utilizar ZCMD + sscanf - Com exemplo.

    Mensagem por Weslley_Script Dom 26 Mar 2023 - 11:01

    [size=48]T[/size][size=48]utorial[/size]
    Oi pessoal! Aqui й o SrAlface007, bom. Hoje, vou ensinar a utilizar o ZCMD + sscanf. Entгo, prossigamos.

    Primeiro, colocaremos no topo do seu FS ou GM os includes.


    Код:

    Código:
    #include <a_samp>
    #include <zcmd>
    #include <sscanf2>
    #include <string>


    (a include string, nгo baixem. Pois ela jб vem no server SA-MP!)

    Agora se lembre: Todos os comandos ZCMD, nгo podem estar em qualquer callback!! apenas fora da callback, bom. Eu sempre coloco no final do FS ou GM.

    Para criar um comando colocamos:

    Код:

    Código:
    CMD:NomeDoComandoSemBarra(playerid, params[] {
    // CMD: = comando, PlayerId = Player que executarб o comando, params = paramкtro //


    Primeiro, vocк precisa entender sobre variбveis.
    Sу o mнnimo! Poderб encontrar tutoriais no fуrum. Pela equipe do Fуrum!

    Criaremos as variбveis que precisaremos:

    Код:

    Código:
    new id; // Id do jogador que receberб o comando, caso nгo seja para um jogador. E sim para vocк, nгo crie pelo // //ZCMD.



    new skin; // Coloque o nome do comando que serб executado, eu colocarei skin. Pois trocarei a skin, mas pode ser //qualquer outro nome, por exemplo. Criarei vida, para dar vida ao jogador. Entгo posso colocar qualquer nome de //variбvel.

    new str[128]; // Й ai que usaremos a include String. Ela servirб para dizer ao jogador, o que foi executado nele.

    new aName [MAX_PLAYER_NAME]; // Serб o administrador que executarб o comando no jogador.

    Agora colocaremos

    Код:

    Código:
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME); // Ele servirб para getar o id do jogador que o comando serб executado e o nome do Administrador que usarб o comando.


    Para sу os administradores usarem, usaremos o IsPlayerAdmin.

    Код:

    Código:
    [size=14][size=13]if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!"); // If = Se, !IsPlayerAdmin = Usamos quando se o jogador for admin ele nгo usarб o comando, isso serб feito. Apуs o Return. PlayerID = Identificar qual jogador estб usando esse comando, return = para voltar o comando, ou seja. Se nгo for admin, o comando nгo serб executado. E apуs isso algo serб executado. // SendClientMessage = Para enviarmos uma mensagem ao jogador que estarб usando o comando. 0xFF0000FF (cor vermelha) = Cor da mensagem que serб transmitida ao jogador. E apуs as aspas, use o texto que serб dito ao jogador. Que tentarб usar um comando que sу й restrito aos administradores.[/size][/size]


    [size=14]Agora usaremos o SSCANF.[/size]


    Код:
    i

    Código:
    f(sscanf(params, "ddd", id, skin)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarskin [id] [id da skin]"); // IF = se, sscanf = serб o include usado para dizer ao administrador que o seu comando estб sendo digitado errado, caso ele digite sу /setarskin ou /setarskin id. Apуs isso

    usaremos Params = Parвmetro, para dizer como o comando serб usado. Entгo colocaremos "ddd", id, nomedavariavel)) Caso ele coloque errado, o return serб ocorrido e avisarб como o comando deve ser usado. Ou seja, ai entra o SendClientMessage, que jб expliquei.

    Usaremos agora IsPlayerConnected.
    Код:
    i

    Código:
    f(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado."); // If = se, !IsPlayrerConnected(id)) = vai verificar se o id digitado estб conectado, caso nгo. Serб executado o return, que o SendClientMessage falarб o que aconteceu.


    Agora colocaremos, o comando. Que poderб ser encontrado na WIKI do SA-MP, como eu usei a skin. Usarei o comando da skin.

    Код:

    Código:
    SetPlayerSkin(id, skin); // SetPlayerSkin = Serб

    o comando que vocк colocarб que deseja executar, pode colocar-se qualquer outro que seja vбlido. EU coloquei SetPlayerSkin pois й o comando que usarei, nos parкnteses, coloque as variбveis. Ou seja. id = Id do jogador se serб executado o comando, Skin = Coloque a variбvel que vocк criou para utilizar o comando. No meu caso, coloquei SKIN.

    Agora, usaremos a string!

    Код:

    Código:
    [size=14][size=13]format(str, sizeof(str), "[x] O Administrador(a) %s setou sua skin para a ID: %d", aName, skin); // Format = Vai dizer ao player, o modo que foi executado. O comando que vai ser executado. Str ou String ( vocк pode colocar um desses dois, ou str ou String) = Serб o que dizerб os nomes. Ou seja %s. Apуs isso, usaremos entre as aspas. O Administrador(a) %s. %s = String, usamos para idenficar Nomes, palavras, letras ou frases. setou sua skin para a ID: %d, %d = Usamos para nъmeros inteiros, exemplo: 2, 3, 109, 180000. Apуs as aspas, colocaremos de acordo com a ordem usada. Usamos o nome do administrador primeiro, usando a %s. Entгo colocaremos primeiro o. Aname, apуs o aName. Colocamos o nome da variбvel usada. Assim a variбvel dizerб o valor do que foi mudado no jogador.[/size][/size]


    [size=14]Apуs isso, colocaremos o SendClientMessage. Para identificar a cor do erro.[/size]



    Код:

    Código:
    [size=14][size=13]SendClientMessage(id, 0xFF0000FF, str); // Essa nem preciso explicar, acabei de explicar na mensagem acima.[/size][/size]


    [size=14]Quando o comando for terminado usaremos, return.[/size]



    Код:

    Código:
    return 1;
    }


    [size=48]AVISO!!!!!!!!!: OS COMANDOS SУ PODERГO SER USADOS CASO VOCК ESTEJA LOGADO NA RCON!! SE NГO USAR O aNAME PODERБ USAR OS COMANDOS COMO PLAYER!![/size]
    COMANDO INTEIRO (skin)

    Код:

    Código:
    CMD:setarskin(playerid, params[]) {

    new id;
    new skin;
    new str[128];
    new aName [MAX_PLAYER_NAME];
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
    if(sscanf(params, "ddd", id, skin)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarskin [id] [skin]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
    SetPlayerSkin(id, skin);
    format(str, sizeof(str), "[x] O Administrador(a) %s setou sua skin para a ID: %d", aName, skin);
    SendClientMessage(id, 0xFF0000FF, str);
    return 1;
    }


    [size=48]E[/size][size=48]xemplo[/size]

    Aqui usarei um sistema administrativo, que ainda estб em processo. Bom, ainda nгo terminei. (Nгo use o comando /kick ou /ban!)

    Код:

    Código:
    #include <a_samp>
    #include <ZCMD>
    #include <string>
    #include <sscanf2>
    #if defined FILTERSCRIPT
    #define red 0xFF0000AA
    #define str String




    Código:
    public OnFilterScriptInit()
    {
       print("\n--------------------------------------");
       print(" Sistema Administrativo (ZCMD) By: SrAlface007"); // Para usar os comandos, й necessбrio estar logado na rcon!
       print("--------------------------------------\n");
       return 1;
    }

    public OnFilterScriptExit()
    {
       return 1;
    }




    Código:
    #endif





    Código:
    // Comandos ZCMD // Nгo mecha em nada desse script, pois qualquer coisa que vocк fizer errado, o sistema pode parar de funcionar!
    CMD:setarvida(playerid, params[]) {
    new id;
    new str[128];
    new vida;
    new aName [MAX_PLAYER_NAME];
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[Erro] Vocк nгo й um administrador(a)!"); // O que darб se o player nгo for administrador.
    if(sscanf(params, "ddd", id, vida)) return SendClientMessage(playerid, 0xFF0000FF, "[Erro] Digite: /setarvida [id] [quantidade]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[Erro] O player nгo estб conectado.");
    SetPlayerHealth(id, vida);
    format(str, sizeof(str), "[x] O Administrador(a) %s lhe deu vida, quantidade: %d .", aName, vida);
    SendClientMessage(id, 0xFF0000FF, str);
    return 1;

    }





    Código:
    CMD:dararma(playerid, params[]) {
    new id;
    new str[128];
    new arma;
    new municao;
    new aName [MAX_PLAYER_NAME];
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF00000FF, "[ERRO] Vocк nгo й um administrador(a)!");
    if(sscanf(params, "ddd", id, arma, municao)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /dararma [id] [arma] [muniзгo]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
    GivePlayerWeapon(id, arma, municao);
    format(str, sizeof(str), "[x] O Administrador(a) %s lhe deu a arma ID: %d com %d de muniзгo(хes)", aName, arma, municao);
    SendClientMessage(id, 0xFF0000FF, str);
    return 1;

    }









    Código:
    CMD:setarcolete(playerid, params[]) {
    new id;
    new str[128];
    new colete;
    new aName [MAX_PLAYER_NAME];
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[Erro] Vocк nгo й um administrador(a)!");
    if(sscanf(params, "ddd", id, colete)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarcolete [id] [colete]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
    SetPlayerArmour(id, colete);
    format(str, sizeof(str), "[x] O Administrador(a) %s lhe deu colete, quantidade: %d .", aName, colete);
    SendClientMessage(id, 0xFF0000FF, str);
    return 1;

    }




    Código:
    CMD:comandosadmin(playerid, params[]) {



    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
    SendClientMessage(playerid, 0xFF0000FF, " /setarcolete /setarvida /dararma /comandosadmin");
    SendClientMessage(playerid, 0xFF0000FF, " /setarscore /trazer /ir /kick /ban /lchat /setarskin");
    return 1;
    }




    Código:
    CMD:setarscore(playerid, params[]) {

    new id;
    new score;
    new str[128];
    new aName [MAX_PLAYER_NAME];
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
    if(sscanf(params, "ddd", id, score)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarscore [id] [score]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
    SetPlayerScore(id, score);
    format(str, sizeof(str), "[x] O Administrador(a) %s lhe setou %d de score(s)", aName, score);
    SendClientMessage(id, 0xFF0000FF, str);
    return 1;

    }




    Código:
    CMD:setarskin(playerid, params[]) {

    new id;
    new skin;
    new str[128];
    new aName [MAX_PLAYER_NAME];
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
    if(sscanf(params, "ddd", id, skin)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarskin [id] [skin]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
    SetPlayerSkin(id, skin);
    format(str, sizeof(str), "[x] O Administrador(a) %s setou sua skin para a ID: %d", aName, skin);
    SendClientMessage(id, 0xFF0000FF, str);
    return 1;
    }




    Código:
    CMD:kick(playerid, params[]) {

    new id;
    new kick;
    new aName [MAX_PLAYER_NAME];
    new str[128];
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
    Kick(id);
    SendClientMessage(id, 0xFF0000FF, str);
    return 1;
    }


    [size=32]Se eu ajudei, falem. Caso nгo, avisem. Se deu algum erro inesperado no compiler. Me avisem, e direi como resolver. Obrigado, e adeus.[/size]



    [Tutorial] Como utilizar ZCMD + sscanf - Com exemplo. D07Xwqb
    [Tutorial] Como utilizar ZCMD + sscanf - Com exemplo. Yjab9HN

      Data/hora atual: Sáb 27 Abr 2024 - 16:47