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 "/AFK"

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


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

    [Tutorial] Sistema de "/AFK" Empty [Tutorial] Sistema de "/AFK"

    Mensagem por Weslley_Script Qua 19 Abr 2023 - 16:49

    Requisitos:
    Код:

    Código:
    Include zcmd 


    Comeзando:

    Passo 1: Primeiramente vamos por a include "zcmd"
    pawn Код:

    Código:
    #include <zcmd>


    Passo 2: Vamos criar uma variбvel global para checar se o player estб ou nгo AFK! (lembrando: coloque no topo do gm)
    pawn Код:

    Código:
    new bool:PlayerAFK[MAX_PLAYERS];


    Passo 3: Iremos iniciar o comando (CMD:"comando"(playerid, params[]) )
    pawn Код:

    Código:
    CMD:afk(playerid, params[])


    Passo 4: Setaremos algumas variбveis que iremos precisar ( Nome[MAX_PLAYER_NAME] = variбvel para armazenar o nome do player, string[64] = vamos usar para armazenar a mensagem que iremos enviar ao player. - [MAX_PLAYER_NAME] e [64] й o tamanho da cйlula de cada array)
    O nosso cуdigo ficarб da seguinte forma:
    pawn Код:

    Código:
    CMD:afk(playerid, params[])
    { // Nгo esquece de abrir a chave
        new Nome[MAX_PLAYER_NAME], string[64];


    Passo 5: vamos pegar o nome do player e armazenar em "nome"
    nosso cуdigo entгo ficara assim:
    pawn Код:

    Código:
    CMD:afk(playerid, params[])
    {
        new Nome[MAX_PLAYER_NAME], string[64];
        GetPlayerName(playerid, Nome, MAX_PLAYER_NAME);


    Passo 6: Vamos checar se ele estб ou nгo AFK (para isso vamos criar uma condiзгo "if" , que ficara da seguinte forma: if(PlayerAFK[playerid] == false) )
    Nosso cуdigo passara a ficar dessa forma:
    pawn Код:

    Código:
    [size=14][size=13]CMD:afk(playerid, params[])
    {
        new Nome[MAX_PLAYER_NAME], string[64];
        GetPlayerName(playerid, Nome, MAX_PLAYER_NAME);
        if(PlayerAFK[playerid] == false) // caso o player NВO esteja Afk
        {

        }
        else // Caso o player ESTEJA Afk
        {
           
        }[/size][/size]


    [center][/center]

    Passo 7: Vamos por oque ira acontecer caso ele esteja AFK e oque ira acontecer caso ele nгo esteja:
    Caso ele NГO esteja Afk: iremos fazer ele ficar afk.. ( setaremos a variavel "PlayerAFK" para true, congelaremos ele, e mandaremos uma mensagem para o servidor avisando que ele esta afk)

    Caso ele esteja: iremos fazer ele sair do afk.. (setaremos a variavel "PlayerAFK" para false, descongelaremos ele, e mandaremos uma mensagem para o servidor avisando que ele nгo esta mais afk)

    Vou por o cуdigo e explicar direto nele...
    pawn Код:

    Código:
    CMD:afk(playerid, params[])
    {
        new Nome[MAX_PLAYER_NAME], string[64];
        GetPlayerName(playerid, Nome, MAX_PLAYER_NAME);
        if(PlayerAFK[playerid] == false) // caso o player NВO esteja Afk
        {
            PlayerAFK[playerid] = true; // seta PlayerAFK para verdadeiro
            TogglePlayerControllable(playerid, 0); // congela o player
            format(string, sizeof(string), "%s Estб Afk", Nome); // formata a string
            SendClientMessageToAll(-1, string); // envia a string para todos os player do servidor - (-1 й a cor branca)
        }
        else // Caso o player ESTEJA Afk
        {
            PlayerAFK[playerid] = false; // seta PlayerAFK para falso
            TogglePlayerControllable(playerid, 1); // descongela o player
            format(string, sizeof(string), "%s Nгo estб mais afk", Nome); //explicado acima
            SendClientMessageToAll(-1, string);// explicado acima
        }


    Passo 8: Iremos por o return e fechar a primeira chave lб em cima...
    No fim o comando ficara da seguinte forma:
    pawn Код:

    Código:
    [size=14][size=13]CMD:afk(playerid, params[])
    {
        new Nome[MAX_PLAYER_NAME], string[64];
        GetPlayerName(playerid, Nome, MAX_PLAYER_NAME);
        if(PlayerAFK[playerid] == false)
        {
            PlayerAFK[playerid] = true;
            TogglePlayerControllable(playerid, 0);
            format(string, sizeof(string), "%s Estб Afk", Nome);
            SendClientMessageToAll(-1, string);
        }
        else
        {
            PlayerAFK[playerid] = false;
            TogglePlayerControllable(playerid, 1);
            format(string, sizeof(string), "%s Nгo estб mais afk", Nome);
            SendClientMessageToAll(-1, string);
        }
        return 1;
    }[/size][/size]

    Passo 9: Na Callback "OnPlayerConnect" nуs iremos setar o valor da variбvel "PlayerAFK" para "false"
    No caso ficara assim:
    pawn Код:

    Código:
    public OnPlayerConnect(playerid)
    {
        PlayerAFK[playerid] = false;
        return 1;
    }


    O CУDIGO FINAL FICARA DA SEGUINTE FORMA:
    pawn Код:

    Código:
    #include <zcmd>

    new bool:PlayerAFK[MAX_PLAYERS]; // Topo do gm

    public OnPlayerConnect(playerid)
    {
        PlayerAFK[playerid] = false;
        return 1;
    }

    CMD:afk(playerid, params[])
    {
        new Nome[MAX_PLAYER_NAME], string[64];
        GetPlayerName(playerid, Nome, MAX_PLAYER_NAME);
        if(PlayerAFK[playerid] == false)
        {
            PlayerAFK[playerid] = true;
            TogglePlayerControllable(playerid, 0);
            format(string, sizeof(string), "%s Estб Afk", Nome);
            SendClientMessageToAll(-1, string);
        }
        else
        {
            PlayerAFK[playerid] = false;
            TogglePlayerControllable(playerid, 1);
            format(string, sizeof(string), "%s Nгo estб mais afk", Nome);
            SendClientMessageToAll(-1, string);
        }
        return 1;
    }



    Crйditos:
    Код:

    Código:
    Zeex - por ter criado a include ZCMD



    [Tutorial] Sistema de "/AFK" D07Xwqb
    [Tutorial] Sistema de "/AFK" Yjab9HN

      Data/hora atual: Qui 2 maio 2024 - 6:56