31.10.2014, 18:16
Requisitos:
Comeзando:
Passo 1: Primeiramente vamos por a 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)
Passo 3: Iremos iniciar o comando (CMD:"comando"(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:
Passo 5: vamos pegar o nome do player e armazenar em "nome"
nosso cуdigo entгo ficara assim:
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:
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...
Passo 8: Iremos por o return e fechar a primeira chave lб em cima...
No fim o comando ficara da seguinte forma:
Passo 9: Na Callback "OnPlayerConnect" nуs iremos setar o valor da variбvel "PlayerAFK" para "false"
No caso ficara assim:
O CУDIGO FINAL FICARA DA SEGUINTE FORMA:
Crйditos:
Код:
Include zcmd - Download
Passo 1: Primeiramente vamos por a include "zcmd"
pawn Код:
#include <zcmd>
pawn Код:
new bool:PlayerAFK[MAX_PLAYERS];
pawn Код:
CMD:afk(playerid, params[])
O nosso cуdigo ficarб da seguinte forma:
pawn Код:
CMD:afk(playerid, params[])
{ // Nгo esquece de abrir a chave
new Nome[MAX_PLAYER_NAME], string[64];
nosso cуdigo entгo ficara assim:
pawn Код:
CMD:afk(playerid, params[])
{
new Nome[MAX_PLAYER_NAME], string[64];
GetPlayerName(playerid, Nome, MAX_PLAYER_NAME);
Nosso cуdigo passara a ficar dessa forma:
pawn Код:
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
{
}
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 Код:
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
}
No fim o comando ficara da seguinte forma:
pawn Код:
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;
}
No caso ficara assim:
pawn Код:
public OnPlayerConnect(playerid)
{
PlayerAFK[playerid] = false;
return 1;
}
pawn Код:
#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:
Код:
Zeex - por ter criado a include ZCMD