Requisitos:
Код:- Código:
Include zcmd
Comeзando:
Passo 1: Primeiramente vamos por a include "zcmd"
pawn Код:Passo 1: Primeiramente vamos por a include "zcmd"
- 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 Код:O nosso cуdigo ficarб da seguinte forma:
- 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 Код:nosso cуdigo entгo ficara assim:
- 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 Код:Nosso cуdigo passara a ficar dessa forma:
- 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 Код: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...
- 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 Код:No fim o comando ficara da seguinte forma:
- 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 Код:No caso ficara assim:
- 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