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 & simples processador de comandos (atualizado 30/10/2009)

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


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

    [INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) Empty [INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009)

    Mensagem por Weslley_Script Ter 20 Set 2016 - 7:32

    Descrição Este é apenas um pouco de incluir que usa OnPlayerCommandText () para processar comandos dos jogadores. Cada comando tem uma função separada como em dcmd, mas zcmd chama-los diretamente via CallLocalFunction () . Esse método é muito mais rápido do que quando você sucessivamente comparar o jogador texto inserido a cada comando que você tem em seu script (especialmente se ele enviar um cmd inexistente, você passa embora todos então) e sua superioridade sobre a maneira antiga é proporcional ao número de comandos. Eu fiz um teste de velocidade quando eu acabei de statrted pensar sobre esta abordagem, você pode encontrar seus resultados aqui . 

    Usage Tudo que você precisa para adicionar um comando é apenas fazer uma função pública usando macro pré-definido especial, como este:
    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;
    }


    Este é um 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 "retornar 0", o jogador verá a mensagem padrão "Comando desconhecido". O parâmetro "sucesso" é igual ao valor retornado pela função de comando de retorno (se não existir o sucesso vai ser 0). Note-se que não é necessário para adicionar esses retornos de chamada para o seu script, se você não usá-los. Como fazer dois comandos diferentes fazendo a mesma coisa Por exemplo, você tem / algo cmd:
    Código:
    COMMAND:something(playerid, params[])
    {
      // some stuff here
      return 1;
    }
    }

    e você quiser criar um outro como o / outra que faz o / algo faz. A maneira mais simples de fazer isso é:
    Código:
    COMMAND:something(playerid, params[])
    {
      // some stuff here
      return 1;
    }

    Nota # 1: Se você quiser usar zcmd em um filterscript, colocar isso definir antes de incluir:
    Código:
    #define FILTERSCRIPT

    Nota # 2: Se você quiser verificar se cadeia de parâmetros está vazia, não deve fazê-lo gosto:
    Código:
    if (!strlen(params))
    {
      // no parameters
    }

    ou:
    Código:

    if (!params[0])

    porque o seu comprimento nunca é nula (leia mais aqui ), basta usar isnull () incluído na zcmd:
    Código:
    if (isnull(params)

    Na verdade, se você usar sscanf você não precisa fazer isso, pois foi construído com verificação isnull. Aqui está um exemplo de como você pode fazer de 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;
    }

    Codigo logo abaixo:

    Código:
    /**********************************
     *                                *
     *   @Author:      ZeeX           *
     *   @Version:     0.3.1          *
     *   @Released:    31/10/2009     *
     *                                *
     **********************************/

    #if defined _zcmd_included
       #endinput
    #endif   
    #define _zcmd_included

    #define MAX_FUNC_NAME (32)

    #define COMMAND:%1(%2)          \
             forward cmd_%1(%2); \
             public cmd_%1(%2)      
             
    #define CMD:%1(%2) \
             COMMAND:%1(%2)

    #define command(%1,%2,%3) \
             COMMAND:%1(%2, %3)      
          
    #define cmd(%1,%2,%3) \
             COMMAND:%1(%2, %3)

    #if !defined isnull
       #define isnull(%1) \
                ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
    #endif


    forward OnPlayerCommandReceived(playerid, cmdtext[]); 
    forward OnPlayerCommandPerformed(playerid, cmdtext[], success); 


    static
       bool:zcmd_g_HasOPCS = false,
       bool:zcmd_g_HasOPCE = false;

    #if defined FILTERSCRIPT

    public OnFilterScriptInit()
    {
       zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
       zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
        return CallLocalFunction("zcmd_OnFilterScriptInit", "");
    }

    #if defined _ALS_OnFilterScriptInit
        #undef OnFilterScriptInit
    #else
        #define _ALS_OnFilterScriptInit
    #endif
    #define OnFilterScriptInit zcmd_OnFilterScriptInit
    forward zcmd_OnFilterScriptInit();

    #else /*not a filterscript*/

    public OnGameModeInit()
    {
       zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
       zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
       if (funcidx("zcmd_OnGameModeInit") != -1)
       {
          return CallLocalFunction("zcmd_OnGameModeInit", "");
       }   
       return 1;
    }

    #if defined _ALS_OnGameModeInit
        #undef OnGameModeInit
    #else
        #define _ALS_OnGameModeInit
    #endif
    #define OnGameModeInit zcmd_OnGameModeInit
    forward zcmd_OnGameModeInit();

    #endif /*if defined FILTERSCRIPT*/

    public OnPlayerCommandText(playerid, cmdtext[])
    {
        if (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
        {
            return 1;
        }
        new
            pos,
            funcname[MAX_FUNC_NAME];
        while (cmdtext[++pos] > ' ') 
       {
          funcname[pos-1] = tolower(cmdtext[pos]); 
       }
       format(funcname, sizeof(funcname), "cmd_%s", funcname);
        while (cmdtext[pos] == ' ') pos++;
       if (!cmdtext[pos])
       {
          if (zcmd_g_HasOPCE)
          {
             return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
          }
          return CallLocalFunction(funcname, "is", playerid, "\1");   
       }
       if (zcmd_g_HasOPCE)
       {
          return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
       }
       return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
    }

    #if defined _ALS_OnPlayerCommandText
        #undef OnPlayerCommandText
    #else
        #define _ALS_OnPlayerCommandText
    #endif
    #define OnPlayerCommandText zcmd_OnPlayerCommandText
    forward zcmd_OnPlayerCommandText(playerid, cmdtext[]);

    Agradecimentos especiais a:
    - Y_Less



    [INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) D07Xwqb
    [INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) Yjab9HN
    Stremmer_Scripter#0961
    Stremmer_Scripter#0961
    --> Postador Fanático
    --> Postador Fanático


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

    [INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) Empty Re: [INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009)

    Mensagem por Stremmer_Scripter#0961 Dom 2 Jan 2022 - 21:03

    ae topzao

      Data/hora atual: Qua 8 maio 2024 - 20:00