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.

2 participantes

    [INC] zcmd 0.3.1 | Fast & Simple Command Processor (updated 30/10/2009)

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


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

    [INC] zcmd 0.3.1 | Fast & Simple Command Processor (updated 30/10/2009) Empty [INC] zcmd 0.3.1 | Fast & Simple Command Processor (updated 30/10/2009)

    Mensagem por Weslley_Script Sex 24 maio 2019 - 15:11

    Descrição
    Este é apenas um pequeno include que usa OnPlayerCommandText () para processar os comandos dos jogadores. Cada comando tem uma função separada, como em dcmd, mas o zcmd os chama diretamente via CallLocalFunction (). Esse método é muito mais rápido do que quando você compara sucessivamente o texto inserido em cada comando que você tem em seu script (especialmente se ele envia um cmd inexistente, você passa por todos) e sua superioridade sobre o antigo é proporcional ao número de comandos. Eu fiz um teste de velocidade quando comecei a pensar sobre essa abordagem, você pode encontrar os resultados aqui.

    Uso
    Tudo que você precisa para adicionar um comando é apenas fazer uma função pública usando uma macro pré-definida especial, como esta:



    Código:
    COMMAND:mycommand(playerid, params[]) // or CMD:mycommand(playerid, params[])
    {
      // Do something
      return 1;
    }


    ou (estilo antigo):


    Código:
    command(mycommand, playerid, params[]) // or cmd(mycommand, playerid, params[])
    {
      // Do something
      return 1;
    }



    Aqui params [] é a string de parâmetros, o playerid é um ID do jogador que envia este comando.
    Isso é tudo! Muito fácil, não é?

    Importante: Já que a v0.3 OnPlayerCommandText não pode mais ser usada (também a opção ZCMD_NO_CALLBACK foi removida), mas há duas novas chamadas de retorno:


    Código:
    OnPlayerCommandReceived(playerid, cmdtext[])


    Este é chamado quando alguém envia um comando. Se você retornar 0 aqui, o comando não será executado.


    Código:
    OnPlayerCommandPerformed(playerid, cmdtext[], success)



    E este é chamado após a execução do comando, aqui se você "retornar 0" o jogador verá a mensagem padrão "Comando Desconhecido". O parâmetro "success" é igual ao valor retornado pelos retornos da função de comando (se não existir, o sucesso será 0).


    Observe que não é necessário adicionar esses retornos de chamada ao seu script se você não usá-los.

    Como fazer dois comandos diferentes fazendo a mesma coisa

    Por exemplo, você tem /something  cmd:

    Código:
    COMMAND:something(playerid, params[])
    {
      // some stuff here
      return 1;
    }



    e você quer criar outro como /another que faz o que /something  faz. A maneira mais simples de fazer isso é:


    Código:
    COMMAND:another(playerid, params[])
    {
      return cmd_something(playerid, params);
    }




    Nota # 1: Se você quiser usar o zcmd em um filterscript, coloque isto define antes de incluir:

    Código:
    #define FILTERSCRIPT



    Nota #2: Se você quiser verificar se a string de parâmetros está vazia, você não deve fazer como:


    Código:
    if (!strlen(params))
    {
      // no parameters
    }


    ou:


    Código:
    if (!params[0])



    porque seu comprimento nunca é nulo (leia mais aqui), simplesmente use isnull () incluído no zcmd:

    Código:
    if (isnull(params))


    Na verdade, se você usar o sscanf, não precisará fazer isso, pois ele possui uma verificação interna.


    Aqui está um exemplo de como você pode fazer o comando / givemoney usando zcmd com sscanf:


    Código:
    COMMAND:givemoney(playerid, params[])
    {
        if (IsPlayerAdmin(playerid))
        {
            new
              toplayerid, // the player we want to give money to
              amount;
            // extracting player's ID and amount from params
            if (!sscanf(params, "ii", toplayerid, amount))
            {
              if (toplayerid != INVALID_PLAYER_ID)
              {
                new
                  message[40];
                GivePlayerMoney(toplayerid, amount);
                format(message, sizeof(message), "You got $%d from admin!", amount);
                SendClientMessage(toplayerid, 0x00FF00FF, message);
              }
              else SendClientMessage(playerid, 0xFF0000FF, "That player is not connected");
            }
            else SendClientMessage(playerid, 0xFFFFFFFF, "Usage: /givemoney <playerid> <amount>");
        }
        else SendClientMessage(playerid, 0xFF0000FF, "Only admins can use this command!");
        return 1;
    }



    Download
    Pastebin



    [INC] zcmd 0.3.1 | Fast & Simple Command Processor (updated 30/10/2009) D07Xwqb
    [INC] zcmd 0.3.1 | Fast & Simple Command Processor (updated 30/10/2009) Yjab9HN
    Stremmer_Scripter#0961
    Stremmer_Scripter#0961
    --> Postador Fanático
    --> Postador Fanático


    Celular : 17981120325
    Mensagens : 681
    Moedas : 2994
    Data de inscrição : 19/10/2019
    Idade : 28

    [INC] zcmd 0.3.1 | Fast & Simple Command Processor (updated 30/10/2009) Empty Re: [INC] zcmd 0.3.1 | Fast & Simple Command Processor (updated 30/10/2009)

    Mensagem por Stremmer_Scripter#0961 Sex 31 Dez 2021 - 18:16

    parabens otimo

      Data/hora atual: Sex 26 Abr 2024 - 10:32