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.

    [Tutorial] Sistema de admin

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


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

    [Tutorial] Sistema de admin Empty [Tutorial] Sistema de admin

    Mensagem por Weslley_Script Qui 16 Mar 2023 - 7:04

    Olб,estou criando este tutorial para alguns que ainda nгo tem o sistema de administraзгo, os comandos vгo estar em zCMD!

    Bom vamos lб!

    1. Coloque estas include no comeзo do GameMode , serгo necessбrias:


    Código:
    #include <zcmd>
    #include <sscanf>
    #include <DOF2>


    1,1 . Coloque estas defines no inicio do GameMode:


    Código:
    #define Moderador 1
    #define Guardiao  2
    #define Admin   3
    #define SubDono     4
    #define Dono      5


    2. Coloque isto no comeзo do GameMode:


    Código:
    enum PlayerAdmin
    {
        Level
    }
    new pAdmin[MAX_PLAYERS][PlayerAdmin];


    Explicação


    Código:
    enum PlayerAdmin // Isto o ( enum ) й chamado Enumeradores, serve pra armazenar valores, como o LEVEL que armazena o level do admin.
    {
        Level
    }
    new pAdmin[MAX_PLAYERS][PlayerAdmin]; // Isso ( new ) й uma Variбvel , й usada para utilizar o Enumerador PlayerAdmin .


    3. Coloque isso em OnGamemodeExit ou se for FS (OnFilterScriptExit) .


    Código:
    DOF2_Exit();


    Explicação


    DOF2_Exit(); // Isso й pra quando o samp-server.exe fechar,a include tambйm,e tambйm  nunca se esqueзa de colocar isso! Pode dar alguns warnings ou nгo funcionar a include direito!


    4. Agora vamos criar os comandos, como disse no inнcio, vamos usar zCMD, entгo no final do GameMode coloque isso:




    Código:
    CMD:daradmin(playerid, params[])
    {
        new id, level, string[256], string2[256], ganhou[MAX_PLAYER_NAME], deu[MAX_PLAYER_NAME];
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xAD0000AA, "{00E5FF}Vocк nгo estб autorizado.");
        if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xAD0000AA, "Use /daradmin [ID] [LEVEL]");
        if (level < 0 || level > 5) return SendClientMessage(playerid, 0xFF0000FF, "Level invбlido. Use de 1 б 5 .");
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo estб online.");
        GetPlayerName(id, ganhou, sizeof(ganhou));
        GetPlayerName(playerid, deu, sizeof(deu));
        format(string, sizeof(string), "Vocк deu admin level %s para o %s", GetLevelAdmin(level), ganhou);
        SendClientMessage(playerid, 0x00F6F6AA, string);
        format(string2, sizeof(string2), "O admin %s deu admin level %s para vocк.", deu , GetLevelAdmin(level));
        SendClientMessage(id, VERDE, string2);
        pAdmin[id][Level] =  level;
        return 1;
    }



    Explicação


    Código:
    CMD:daradmin(playerid, params[])
    {
        new id, level, string[256], string2[256], ganhou[MAX_PLAYER_NAME], deu[MAX_PLAYER_NAME]; // Variбveis que vamos usar no comando .
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xAD0000AA, "{00E5FF}Vocк nгo estб autorizado."); // Verifica se estб na logado na rcon, se nгo, vai manda a mensagem "Vocк nгo estб autorizado." .
        if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xAD0000AA, "Use /daradmin [ID] [LEVEL]"); // Estamos usando o sscanf, este comando do sscanf server para usar um parвmetro.
        if (level < 1 || level > 5) return SendClientMessage(playerid, 0xFF0000FF, "Level invбlido. Use de 1 б 5 ."); // Isso verifica se vocк digitou o level na forma correta, se nгo manda a mensagem "Level invбlido. Use de 1 б 5 ."
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo estб online."); // Verifica se o id estб online, se nгo, envia a mensagem "Este jogador nгo estб online."
        GetPlayerName(id, ganhou, sizeof(ganhou)); // Isso serve para pegar o nome do player.
        GetPlayerName(playerid, deu, sizeof(deu));  // Isso serve para pegar o nome do player.
        format(string, sizeof(string), "Vocк deu admin level %s para o %s", GetLevelAdmin(level), ganhou); // Formata a mensagem para ser enviada .
        SendClientMessage(playerid, 0x00F6F6AA, string); //Envia a mensagem formatada a cima .
        format(string2, sizeof(string2), "O admin %s deu admin level %s para vocк.", deu , GetLevelAdmin(level)); // Formata a mensagem para ser enviada .
        SendClientMessage(id, VERDE, string2); //Envia a mensagem a cima.
        pAdmin[id][Level] =  level; //Muda o level do player para o conforme digitado.
        return 1;
    }


    5. Agora vamos criar o sistema de salvamento, em DOF2 .

    Em OnPlayerDisconnect coloque isso:


    Código:
    new arquiva[34], playernome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, playernome, sizeof(playernome));
        format(arquiva, sizeof(arquiva), "Admins/%s", playernome);
        if(DOF2_FileExists(arquiva))
        {
            DOF2_SetInt(arquiva, "Level", pAdmin[playerid][Level]);
            DOF2_SaveFile();
        }
        else
        {
            DOF2_CreateFile(arquiva);
            DOF2_SetInt(arquiva, "Level", pAdmin[playerid][Level]);
            DOF2_SaveFile();
        }



    Agora em OnPlayerConnect:
    Código:
    new arquivi[34], nomeplayer[MAX_PLAYER_NAME];
        GetPlayerName(playerid, nomeplayer, sizeof(nomeplayer));
        format(arquivi, sizeof(arquivi), "Admins/%s", nomeplayer);
        pAdmin[playerid][Level] = DOF2_GetInt(arquivi, "Level");


    Explicação


    Código:
    new arquiva[34], playernome[MAX_PLAYER_NAME]; //Variбveis que vamos usar .
        GetPlayerName(playerid, playernome, sizeof(playernome)); //Geta o nome do player .
        format(arquiva, sizeof(arquiva), "Admins/%s", playernome); Formata o local da pasta que vai salvar as contas dos admins .
        if(DOF2_FileExists(arquiva)) //Se existir
        {
            DOF2_SetInt(arquiva, "Level", pAdmin[playerid][Level]); //Criamos o valor de Level na Enum PlayerAdmin,e se a conta existir,atualiza o valor no aquivo da pasta Admin .
            DOF2_SaveFile(); //Salva o arquivo .
        }
        else //Se a conta nгo existir
        {
            DOF2_CreateFile(arquiva); //Cria o arquivo
            DOF2_SetInt(arquiva, "Level", pAdmin[playerid][Level]); //Criamos o valor de Level na Enum PlayerAdmin,e se a conta existir,atualiza o valor no aquivo da pasta Admin .
            DOF2_SaveFile(); //Salva o arquivo .
        }




    Código:
    new arquivi[34], nomeplayer[MAX_PLAYER_NAME]; //Variбveis que iremos usar .
        GetPlayerName(playerid, nomeplayer, sizeof(nomeplayer)); Geta o nome do player
        format(arquivi, sizeof(arquivi), "Admins/%s", nomeplayer); //Formata o local da pasta que vai salvar as contas dos admins .
        pAdmin[playerid][Level] = DOF2_GetInt(arquivi, "Level"); //Isso vai carregar o valor Level na pasta Admins,no arquivo da conta do admin .


    6. Teremos que criar uma stock para verificar o level que vocк digitou no comando /daradmin . No final do GameMode coloque isso:


    pawn Код:

    Código:
    stock GetLevelAdmin(levelid)
    {
        new str[50];
        if(levelid == 1)
        {
            str = "1";
        }
        else if (levelid == 2)
        {
            str = "2";
        }
        else if (levelid == 3)
        {
            str = "3";
        }
        else if (levelid == 4)
        {
            str = "4";
        }
        else if (levelid == 5)
        {
            str = "5";
        }
        return str;
    }

    7. Ops,esqueci de colocar o comando /tiraradmin , entгo vamos colocar em baixo do /daradmin
    pawn Код:

    Código:
    CMD:tiraradmin(playerid, params[])
    {
        new id, player[MAX_PLAYER_NAME], tirou[MAX_PLAYER_NAME], string[256], string2[256];
        if (pAdmin[playerid][Level] != 5) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб autorizado.");
        if (sscanf(params, "u", id)) return SendClientMessage(playerid, 0xAD0000AA, "Use /tiraradmin [ID] ");
        if (pAdmin[id][Level] < 1) return SendClientMessage(playerid, VERMELHO, "Este player nгo й admin ! ");
        GetPlayerName(id, player, sizeof(player));
        GetPlayerName(playerid, tirou, sizeof(tirou));
        format(string, sizeof(string), "Vocк tirou o admin do %s", player);
        SendClientMessage(playerid, 0x00F6F6AA, string);
        format(string2, sizeof(string2), "O admin %s tirou seu admin.", tirou);
        SendClientMessage(id, VERDE, string2);
        pAdmin[playerid][Level] = 0;
        return 1;
     }


    Explicação
    pawn Код:

    Código:
    CMD:tiraradmin(playerid, params[])
    {
        new id, player[MAX_PLAYER_NAME], tirou[MAX_PLAYER_NAME], string[256], string2[256]; //Variбveis que iremos usar no comando .
        if (pAdmin[playerid][Level] != 5) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб autorizado."); // Verifica se й admin level 5, se nгo, vai manda a mensagem "Vocк nгo estб autorizado." .
        if (sscanf(params, "u", id)) return SendClientMessage(playerid, 0xAD0000AA, "Use /tiraradmin [ID] "); // Estamos usando o sscanf, este comando do sscanf server para usar um parвmetro.
        if (pAdmin[id][Level] < 1) return SendClientMessage(playerid, VERMELHO, "Este player nгo й admin ! "); //Verifica se o player digitado no /tiraradmin й admin ou nгo .
        GetPlayerName(id, player, sizeof(player)); //Geta o nome do player .
        GetPlayerName(playerid, tirou, sizeof(tirou));//Geta o nome do player .
        format(string, sizeof(string), "Vocк tirou o admin do %s", player); //Formata a mensagem que serб enviada .
        SendClientMessage(playerid, 0x00F6F6AA, string); //Envia a mensagem a cima .
        format(string2, sizeof(string2), "O admin %s tirou seu admin.", tirou); //Formata a mensagem que serб enviada .
        SendClientMessage(id, VERDE, string2); //Envia a mensagem acima .
        pAdmin[playerid][Level] = 0; Muda o valor Level do player para 0 .
        return 1;
     }


    8. Agora un comando que sу o player admin possa usar:
    pawn Код:

    Código:
    CMD:trazer(playerid, params[])
    {
        if(pAdmin[playerid][Level] < 1) return SendClientMessage(playerid, VERMELHO,"Vocк nгo estб autorizado.");
        new id, Float: x, Float: y, Float: z, string[256], string2[256], namep[MAX_PLAYER_NAME], namead[MAX_PLAYER_NAME];
        if(sscanf(params, "u", id)) return SendClientMessage(playerid, VERMELHO,"Use /trazer [ID]");
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, VERMELHO,"Este jogador nгo estб online.");
        GetPlayerName(playerid, namead, sizeof(namead));
        GetPlayerName(id, namep, sizeof(namep));
        format(string, sizeof(string), "Trouxe o player %s atй vocк.", namep);
        format(string2, sizeof(string2), "O Administrador %s  trouxe vocк atй ele.", namead);
        SendClientMessage(playerid, Azul_C, string);
        SendClientMessage(id, VERDE, string2);
        GetPlayerPos(playerid, x, y, z);
        SetPlayerPos(id, x+1, y+1, z);
        return 1;
    }


    Explicaзгo
    pawn Код:

    Código:
    CMD:trazer(playerid, params[])
    {
        if(pAdmin[playerid][Level] < 1) return SendClientMessage(playerid, VERMELHO,"Vocк nгo estб autorizado."); //Verifica se o player й admin se nгo for, manda a mensagem "Vocк nгo estб autorizado." .
        new id, Float: x, Float: y, Float: z, string[256], string2[256], namep[MAX_PLAYER_NAME], namead[MAX_PLAYER_NAME]; //Variбveis que iremos usar no comando
        if(sscanf(params, "u", id)) return SendClientMessage(playerid, VERMELHO,"Use /trazer [ID]"); //Estamos usando o sscanf, este comando do sscanf server para usar um parвmetro.
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, VERMELHO,"Este jogador nгo estб online."); //Verifica se o player estб online , se nгo envia a mensagem "Este jogador nгo estб online." .
        GetPlayerName(playerid, namead, sizeof(namead)); //Pega o nome do player.
        GetPlayerName(id, namep, sizeof(namep)); //Pega o nome do player .
        format(string, sizeof(string), "Trouxe o player %s atй vocк.", namep); //Formata a mensagem que serб enviada .
        format(string2, sizeof(string2), "O Administrador %s  trouxe vocк atй ele.", namead); //Formata a mensagem que serб enviada .
        SendClientMessage(playerid, Azul_C, string); //Envia a mensagem a cima.
        SendClientMessage(id, VERDE, string2); //Envia a mensagem acima.
        GetPlayerPos(playerid, x, y, z); //Pega a posiзгo do id digitado no comando .
        SetPlayerPos(id, x+1, y+1, z); //Muda a posiзгo do player para o id digitado no comando .
        return 1;
    }


    Bem galera й isso,e o meu 3є tutorial, sem plбgio,explicado, e espero que gostem !

    Crйditos:

    xxRaioxx ( Eu , criador do tutorial ) & BIEL_TX
    Criador do zCMD
    Criador do DOF2
    Criador do sscanf



    [Tutorial] Sistema de admin D07Xwqb
    [Tutorial] Sistema de admin Yjab9HN

      Data/hora atual: Ter 7 maio 2024 - 19:22