[Tutorial] Usando 1 parametro em comandos [ZCMD]
#1

pawn Код:
////////////////////////////////////////////////////////////////////////////////////////////////
////                                                                       
////                                                                       
////                                                                       
////                                                                     
////   Usando 1 parametro em comandos [ZCMD]                               
////   Criado por: AlucarDSnow                                         
////   Agradecimentos:                                                   
////   iSmir - Ensinar a usar somente com 1 parametro o ZCMD.                        
////   BlueX - Tutorial sobre ZCMD e SSCANF.                                     
////   Luis Miki - Pela explicaзгo do "params".                                  
////   Zeex - Criaзгo da include ZCMD.                                       
////                                                                 
////       
////   
////                                                         
////   Tutorial sugeito a crнticas construtivas, irei atualiza-lo ao passar do tempo.                
////////////////////////////////////////////////////////////////////////////////////////////////
Olб pessoal, esse й o primeiro tutorial que estou compartilhando meu conhecimento em ZCMD com vocкs, pretendo ensinar a vocкs usar o comando com 1 parametro.
A maiora das pessoas usam ZCMD e SSCANF com 1 parametro, isso nгo й necessбrio, existe a forma mais fбcil que й sу usar o ZCMD, fica muito mais fбcil e rбpido.
Criei esse tutorial com a intensгo de prolongar o ensinamento ъtil do BlueX.

Qualquer erro, melhoramento pode fazer postando um comentбrio nesse tуpico.
Nгo irei tolerar chingamentos.
Faзa uma crнtica construtiva.


Para inicio vocк precisa ter a include ZCMD, caso nгo tenha a include faзa o seguinte:
-> Entre no pastebin.
-> Copie todo o cуdigo.
-> Coloque o cуdigo em algum documento e salve como "zcmd.inc".
-> Jogue o arquivo dentro da pasta "pawno/include".
-> Depois no topo do GM adicionar a include ZCMD.
Include ZCMD, clique aqui.
pawn Код:
#include a_samp
#include zcmd

Quote:
Originally Posted by iSmir
Esse metуdo pode ser usado para o YCMD, bCMD, vбrios processadores de comandos.
Vamos direto ao ponto, vou dar um exemplo de comando e explica-lo com 1 parametro e deixar um tutorial do BlueX no final sobre 2 parametros com SSCANF.

pawn Код:
#define     xBranco     0xFFFFFFFF

CMD:dinheiro(playerid, params[])
{
    new frase[128], UsadorDoComando[25];

    if ( isnull ( params ))
        return SendClientMessage(playerid, xBranco, "Use: /dargrana quantia");

    GivePlayerMoney(playerid, params);

    GetPlayerName(playerid, UsadorDoComando, sizeof(UsadorDoComando));

    format(frase, sizeof(frase), "O politico %s desviou %d da obra.", UsadorDoComando, params);
    SendClientMessageToAll(xBranco, frase);

    return 1;
}
O comando acima ele entrega a quantidade de dinheiro que o playerid irб digitar.
Exemplo: "/dinheiro 8994", irб entregar ao player que digitou 8994.
Vamos as explicaзхes:


pawn Код:
new frase[128], UsadorDoComando[25];
Explicaзгo -> Cria as duas variaveis que iremos usar para esse comando.
frase -> Й a nossa string, nela cabe 128 celulas.
UsadorDoComando -> Com ela iremos pegar o nome do playerid e jogar o nome dele no comando.


pawn Код:
if ( isnull strval ( params )) return SendClientMessage...
Explicaзгo -> Caso nгo tenha algo inserido no campo "params" retorna a mensagem "Use /dargrana quantia".
isnull -> Nulo.
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)


pawn Код:
GivePlayerMoney(playerid, strval (params));
Explicaзгo -> Adiciona dinheiro ao jogador que digitou o comando.
params -> Adiciona a quantidade que foi inserida no params.


pawn Код:
GetPlayerName(playerid, UsadorDoComando, sizeof(UsadorDoComando));
Explicaзгo -> Pega o nome do playerid e o armazena na variavel "UsadorDoComando".

pawn Код:
format(frase, sizeof(frase), "O politico %s desviou %d da obra.", UsadorDoComando, params);
SendClientMessageToAll(xBranco, frase);
Explicaзгo -> Envia a mensagem, pegando o nome do player com o %s e mostrando o valor do params em nъmeros "%d".

pawn Код:
if( strval ( params ) == playerid)
    return SendClientMessage(playerid, xBranco, "Vocк nгo pode dar dinheiro a vocк mesmo.");
Explicaзгo -> Irб checar se o valor inserido em "params" й o mesmo que o player que digitou (playerid), ao constatar que й o valor й igual ao playerid, ele retorna a mensagem "Vocк nгo pode dar dinheiro a vocк mesmo.".
------------------------------------- FIM Comando /dinheiro ------------------------------

pawn Код:
CMD:pos(playerid, params[])
{
    new xRL[128], Float:xPos[3];

    if( isnull ( params ))
       return SendClientMessage(playerid, xBranco, "Use: /pos ID");

    if(!IsPlayerConnected( strval (params))
       return SendClientMessage(playerid, xBranco, "Esse ID nгo estб online.");

    GetPlayerPos(strval (params), xPos[0], xPos[1], xPos[2]);

    format(xRL, sizeof(xRL), "X - %f  Y - %f  Z - %f", xPos[0], xPos[1], xPos[2]);
    SendClientMessage(strval (params), xBranco, xRL);

    return 1;
}
Para entender mais um pouco sobre a funзгo: " strval (params) "
Nesse caso quem recebeu a mensagem foi o params ( ID escolhido ).
------------------------------------- FIM Comando /pos -------------------------------------

PS: Quando usar dois parametros vocк pode pegar o valor do id apenas colocando (id).
Mais com 1 parametro й preciso usar "strval (params)".
Veja um exemplo no CODE abaixo, perceba o "strval (params)" e "(id)".


Vamos ver esse exemplo com 2 parametros usando SSCANF.

pawn Код:
#include ZCMD
#include sscanf
pawn Код:
CMD:dargrana(playerid, params[])
{
    static xRL[128], Recebedor[25], Usador[25], id, quantia;

    if(sscanf(params, "ud", id, quantia))
        return SendClientMessage(playerid, xBranco, "Use: /dargrana ID quantia.");

    if(!IsPlayerConnected(id))
        return SendClientMessage(playerid, xBranco, "O ID que digitou nгo estб online.");

    if( strval (id) == playerid ))
        return SendClientMessage(playerid, xBranco, "Vocк nгo pode lhe setar dinheiro.");

    GivePlayerMoney(id, quantia));

    format(xRL, sizeof(xRL), "O Carinha %s deu dinheiro ao player %s, quantia %d.", Usador, Recebedor, quantia);
        SendClientMessageToAll(playerid, xBranco, xRL);
    return 1;
}
Nгo irei explicar pois nгo tem necessidade, o tutorial do BlueX jб tira todas as suas dъvidas.
https://sampforum.blast.hk/showthread.php?tid=277842
Reply
#2

Bem bacana o tutorial =]
Reply
#3

Quote:
Originally Posted by AlucardSnow
Посмотреть сообщение
-> Coloque o cуdigo em algum documento e salve como "zcmd.ini".
Nao deveria ser .inc ?
Reply
#4

Quote:
Originally Posted by BreakDriFT
Посмотреть сообщение
Bem bacana o tutorial =]
Obrigado, irei tentar melhorar a explicaзгo assim que possivel.

Quote:
Originally Posted by PT
Посмотреть сообщение
Nao deveria ser .inc ?
Erro de digitaзгo mals ae, jб arrumei.
Reply
#5

Fora isso, muito bom parabйns
Reply
#6

gosti
Reply
#7

No correto seria "CMD:" ou "COMMAND:", nгo?
Reply
#8

Quote:
Originally Posted by Caio_Freeze
Посмотреть сообщение
gosti
O conhecimento =)

Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
No correto seria "CMD:" ou "COMMAND:", nгo?
Os dois estгo corretos.
Reply
#9

@ .FuneraL.

Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
No correto seria "CMD:" ou "COMMAND:", nгo?
tambem pode ser 'ZCMD' olha os caras aqui usando: link

mas nao daquela forma que o cara tem ae tem de ser:

pawn Код:
zcmd(comando, playerid, params[])
acho que entendera o que quis dizer
Reply
#10

Quote:
Originally Posted by PT
Посмотреть сообщение
@ .FuneraL.



tambem pode ser 'ZCMD' olha os caras aqui usando: link

mas nao daquela forma que o cara tem ae tem de ser:

pawn Код:
zcmd(comando, playerid, params[])
acho que entendera o que quis dizer
zcmd Nгo seria command(
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)