[Tutorial] Iniciantes: Criando Comandos Simples
#1

Bom, como o numero de Scripters Iniciantes estб aumentando muito, resolvi fazer este Tutorial para Ajuda-los a fazerem comandos.

Inicio
Onde Coloco os Comandos?

Resposta:
Код:
public OnPlayerCommandText(playerid, cmdtext[])
Como iniciar um Comando?

Resposta:

Vocк usa um if ( Em Portuguкs: Se ) e um strcmp.

Exemplo:
Код:
if(strcmp("/Comando", cmdtext, true) == 0)
Oque й o strcmp?

O strcmp й um comparador de strings.

Exemplo:

Se o Nome do Jogador for Dr_Pawno e o dono de uma casa for Shickard e o Dr_Pawno tiver a chave da casa do shickard por bug ela checarб o nome do jogador com o nome do dono da casa para poder retirar o bug.

ExemploІ:

pawn Код:
forward CheckStrings(playerid, string1[], string2[]);

public CheckStrings(playerid, string1[], string2[])
{
    if(strcmp(string1, string2, true) == 0))
    {
        SendClientMessage(playerid, -1, "A String1 й igual a String2.");
    }
    else
    {
        SendClientMessage(playerid, -1, "A String1 Nгo й igual a String2.");
    }
    return 1;
}
Como eu uso o strcmp?

Simples:

Код:
strcmp("Comando", Formato do Texto /* No cado do OnPlayerCommandText vocк usa cmdtext */, true, 7 /* Numero Maximo de Letras no Comando. Nгo й preciso usar. */)
Como devo iniciar um comando?

Vocк deve iniciar um comando com um if se o jogador precisar de algum status ou profissao ou com um SendClientMessage se o comando for para mandar uma mensagem.

Exemplo:
pawn Код:
new pLevel[MAX_PLAYERS];

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp("/MeuComando", cmdtext, true) == 0)
    {
        if(pLevel[playerid] == 1)
        {
            SendClientMessage(playerid, -1, "Vocк й level 1!");
        }
        else
        {
            SendClientMessage(playerid, -1, "Vocк nгo й level 1 para usar este comando.");
        }
        return true;
    }
    return false;
}
ou
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp("/MeuComando", cmdtext, true) == 0)
    {
        SendClientMessage(playerid, -1, "Vocк usou o comando: /MeuComando!");
        return true;
    }
    return false;
}
Como devo terminar um comando?

Vocк sempre deve terminar com um return true para evitar o erro: (...)

Код:
SERVER: Unknown Command
(...) que irб aparecer.

Como eu crio um comando que funcione para todos os jogadores online?

Isso jб sairб um pouco do Bбsico.

Vocк deve usar um for para criar um loop.

Como devo usar o for?

Vocк deve Criar ou ter uma variбvel jб criada e o tamanho maximo.

Se vocк nгo tiver uma variбvel jб criada vocк usa o for com um new.

O tamanho maximo vocк pode escolher quando quiser.

Exempo:

Sem Variбvel Criada:
Код:
for(new Variavel = 0; Variavel < Tamanho; Variavel++)
Com Variбvel Criada:
Код:
new Variavel;
for(Variavel = 0; Variavel < Tamanho; Variavel++)
Exemplo em um Comando:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp("/MeuComando", cmdtext, true) == 0)
    {
        for(new Variavel = 0; Variavel < MAX_PLAYERS; Variavel++)
        {
            if(IsPlayerConnected(Variavel) && Variavel != playerid) // Checa se o jogador esta conectado e depois se a Variбvel nгo й o JogadorID para impedir o envio de 2 mensagens ao mesmo tempo.
            {
                SendClientMessage(Variavel, -1, "Algum jogador usou o comando /MeuComando e vocк agora й level 1!");
                pLevel[Variavel] = 1;
            }
        }
        SendClientMessage(playerid, -1, "Vocк usou o comando /MeuComando e agora todos os jogadores sгo level 1!");
        return true;
    }
    return false;
}
Como eu fasso um comando que mostra o nome do jogador?

Vocк deve criar uma String com MAX_PLAYER_NAME ou com 24 celulas.
Logo apos vocк pega o nome do jogador com esta string usando o GetPlayerName.

Depois vocк formata um texto para colocar o Nome do jogador.

Exemplo:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp("/MeuNome", cmdtext, true) == 0)
    {
        new MeuNome[MAX_PLAYER_NAME],
                string[64];
        GetPlayerName(playerid, MeuNome, sizeof(MeuNome));
        format(string, sizeof(string), "Seu nome й %s. E seu id й %d.", MeuNome, playerid);
        SendClientMessage(playerid, -1, string);
        return true;
    }
    return false;
}
Bom, й isso.
Espero que gostem

Se tiver algo errado me avisem para mim corrigir.
Reply


Messages In This Thread
Iniciantes: Criando Comandos Simples - by Dr_Pawno - 02.07.2011, 02:34
Re: Iniciantes: Criando Comandos Simples - by Transferencia - 02.07.2011, 02:42
Re: Iniciantes: Criando Comandos Simples - by Shadoww5 - 02.07.2011, 02:47
Re: Iniciantes: Criando Comandos Simples - by Dr_Pawno - 02.07.2011, 02:51
Re: Iniciantes: Criando Comandos Simples - by demonneni - 02.07.2011, 02:54
Re: Iniciantes: Criando Comandos Simples - by Transferencia - 02.07.2011, 02:57
Re: Iniciantes: Criando Comandos Simples - by Andrew_Guiga - 02.07.2011, 03:09
Re: Iniciantes: Criando Comandos Simples - by Macintosh - 02.07.2011, 03:27
Re: Iniciantes: Criando Comandos Simples - by Dr_Pawno - 02.07.2011, 04:05
Re: Iniciantes: Criando Comandos Simples - by TheGarfield - 02.07.2011, 04:06

Forum Jump:


Users browsing this thread: 9 Guest(s)