SA-MP Forums Archive
[Tutorial] Como criar um sistema temporario - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Como criar um sistema temporario (/showthread.php?tid=469343)



Como criar um sistema temporario - DanDRT - 12.10.2013

Aqui vai um rбpido tutorial de como criar um sistema temporario.
  • O que irei precisar?
  1. De uma include para o Salvamento, sera usada no tutorial a DOF2.
  2. Da include a_samp.
  3. Da include ConvertDays, Download Aqui.
  4. De uma include de processamento de comandos, no tutorial irei usar ZCMD + SSCANF.
  • Criando o sistema temporario

  1. Instalaremos as includes no GameMode
    pawn Код:
    #include <a_samp>
    // Usaremos algumas callback's e nativas dela.
    #include <ConvertDays>
    // Trabalharemos os sistemas temporarios com ela.
    #include <DOF2>
    // Salvaremos as informaзхes com ela.
    #include <zcmd>
    // Criaremos os comandos com ela.
    #include <sscanf>
    // Trabalharemos com os parametros do ZCMD com ela.
  2. Criando a define TempSystem
    pawn Код:
    #define TempSystem          "/TempSystem/%s.ini" // Troque TempSystem pela pasta em que ficaram os seus sistemas temporarios.
  3. Criando a variavel que armazenaremos os dados do sistema temporбrio
    pawn Код:
    new TemporarySystem[MAX_PLAYERS];
  4. Vamos setar o TemporarySystem assim que ele conectar(Logicamente que se for um sistema de ban ele, nгo continuarб online e precisarб ser kickado.):
    pawn Код:
    public OnPlayerConnect(playerid) // Esta callback й chamada quando o jogador se conecta ao servidor
    {
        TemporarySystem[playerid] = 0; // Setaremos o tempo de TemporarySystem para 0, para nгo haver bug's
        new string[70], pname[MAX_PLAYER_NAME]; // criaremos uma variavel para armazenar os textos a serem enviados e o nome do jogador.
        GetPlayerName(playerid, pname, sizeof(pname)); // Pegamos o nome do jogador
        format(string, sizeof(string), TempSystem, pname);  // salvamos na string um texto que equivale a um arquivo que esta ou nгo salvo como nickdojogador.ini
        if(DOF2_FileExists(string)) // Caso o arquivo exista continuarб
        {
            TemporarySystem[playerid] = DOF2_GetInt(string, "Dias"); // Pegaremos os dias do TemporarySystem.
            if(VerifyExpiredDays(TemporarySystem[playerid])) // Caso tenha expirado
            {
                SendClientMessage(playerid, -1, "Seu tempo de TemporarySystemName expirou!"); // Enviamos a mensagem ao player.
                TemporarySystem[playerid] = 0;     TemporarySystem[playerid] = 0; // Setaremos o tempo de TemporarySystem para 0, pois nгo existe mais TemporarySystemName pro playerid.
            }
            else // caso nгo tenha expirado
            {
                format(string,sizeof(string), "Vocк tкm %s de TemporarySystemName", ConvertToDays(TemporarySystem[playerid])); // formataremos a mensagem a ser envaida
                SendClientMessage(playerid, -1, string); // Enviamos a mensagem
            }
        }
        return 1; // retornamos o valor 1(verdadeiro)
    }
  5. Criando o comando de setagem do sistema temporario
    pawn Код:
    CMD:settempsystem(playerid, params[]) // definimos um comando, tambem definimos que nele usaremos o playerid e os params(parametros).
    {
        new id, days, pname[MAX_PLAYER_NAME]; // o id do jogador que receberб o beneficio do sistema temporario, uma tambem para o nome do jogador, e os dias do sistema temporario.

        if(sscanf(params, "ud", id, days)) // Pega os parametros e joga nas variaveis.
            return SendClientMessage(playerid, 0xFF0000AA, "Uso Correto: /setvip [id] [dias]"); // Envia caso nгo for possivel pegar os parametros e jogar nas variaveis.

        if(IsPlayerAdmin(playerid)) // Se o jogador estiver logado na rcon continuarб.
        {
            if(days < 0) return SendClientMessage(playerid, 0xFF0000AA, "Digite um numero de dias validos!"); // Se os dias forem menores que 0 retornarб este erro.
            if(IsPlayerConnected(id)) // Se o jogador (id) estiver conectado continuarб.
            {
                GetPlayerName(id, pname, sizeof(pname)); // Pegamos o nome do jogador
                TemporarySystem[id] = ConvertDays(days); // Daremos ao jogador o total de dias ja convertidos.
                new string[85]; // criaremos uma variavel para armazenar os textos a serem enviados.
                format(string, sizeof(string), "** Vocк deu %d dias de TemporarySystemName para %s.", days, pname); // pegaremos o texto e enviaremos para string.
                SendClientMessage(playerid, -1, string); // Enviaremos a mensagem ao jogador que solicitou o comando
                format(string, sizeof(string), "** Vocк recebeu %d dias de TemporarySystemName.", days, pname); // pegaremos o texto e enviaremos para string.
                SendClientMessage(playerid, -1, string); // Enviaremos a mensagem ao jogador que solicitou o comando

                format(string, sizeof(string), TempSystem, pname); // salvamos na string um texto que equivale a um arquivo que esta ou nгo salvo como nickdojogador.ini
                DOF2_CreateFile(TempSystem); // Criaremos o arquivo.
                DOF2_SetInt(TempSystem, "Dias", TemporarySystem[id]); // Salvaremos os dias.
                DOF2_SaveFile(); // Salvaremos o arquivo.
            }
            else // Caso nгo esteja logado na conectado...
                return SendClientMessage(playerid, 0xFF0000AA, "ERRO: Este jogador nгo estб conectado!"); // retornarб este ERRO.

        }
        else // Caso nгo esteja logado na Rcon...
            return SendClientMessage(playerid, 0xFF0000AA, "ERRO: Vocк nгo estб logado na RCON"); // retornarб este ERRO.

        return true; // retornamos que o comando foi executado com sucesso.
    }
Se Tiver duvidas, comente, as explicaзхes estгo do lado das funзхes.
  • Creditos
  1. DanDRT - Tutorial
  2. Willian Luigi - Apoio moral e ajuda na include ConvertDays :3



Re: Como criar um sistema temporario - shittt - 12.10.2013

Boa !


Re: Como criar um sistema temporario - PT - 12.10.2013

ainda prefiro o metodo do bruno, acho melhor

here


mesmo assim continue, esta melhorando

parabens


Respuesta: Re: Como criar um sistema temporario - DanDRT - 12.10.2013

Quote:
Originally Posted by PT
Посмотреть сообщение
ainda prefiro o metodo do bruno, acho melhor

here


mesmo assim continue, esta melhorando

parabens
Vocк leu?
Sistemas temporarios = Vip, Ban e etc.


Re: Respuesta: Re: Como criar um sistema temporario - PT - 12.10.2013

Quote:
Originally Posted by DanDRT
Посмотреть сообщение
Vocк leu?
Sistemas temporarios = Vip, Ban e etc.
sim eu li, la o sistema do bruno tambem da pra fazer isso cara.


Re: Como criar um sistema temporario - Juniiro3 - 12.10.2013

Muito bom.

OBS: Para quem nгo usa um processador de comandos e irб seguir esse tutorial, veja meu tutorial Strcmp (OnPlayerCommandText) e Sscanf para ter um desempenho melhor que strtok


Respuesta: Como criar um sistema temporario - DanDRT - 12.10.2013

Esqueci de por o sscanf no comando ajeitando ...


Re: Como criar um sistema temporario - WLSF - 13.10.2013

Bacana, tirando o fato que nгo gosto de dof2.


Respuesta: Re: Como criar um sistema temporario - DanDRT - 13.10.2013

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Bacana, tirando o fato que nгo gosto de dof2.
Obrigado, й opcional o uso do sistema de salvamento


Re: Como criar um sistema temporario - Schocc - 13.10.2013

Bom trabalho parceiro, tem gente aqui que sу tende a evoluir ao contrario de muitos, que ainda estгo naquela de editar gamemodes.

Great Tutorial.