[Tutorial] Como criar um sistema temporario
#1

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
Reply
#2

Boa !
Reply
#3

ainda prefiro o metodo do bruno, acho melhor

here


mesmo assim continue, esta melhorando

parabens
Reply
#4

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.
Reply
#5

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.
Reply
#6

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
Reply
#7

Esqueci de por o sscanf no comando ajeitando ...
Reply
#8

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

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

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)