[Ajuda] Sistema AFK personalizado
#1

Boas a todos

Alguem sabe um sistema de AFK que no qual o jogador faz o comando /afk e tera esperar 5 segundos parado para ser movido para um lugar x y z tipo, uma jaula, que na qual esta paralizado. e depois faz /Sairafk e volta ao local que tava!

Alguem tem esse sistema?

Agradecia imenso *-*
Reply
#2

Fiz pra vocк, nгo testei mas acho que funciona, bom vamos lб por o code.
Topo do GM:
pawn Код:
new Float: posantesafkX,Float: posantesafkY, Float: posantesafkZ;
forward FicandoAfk(playerid);
Em OnPlayerCommandText:
pawn Код:
if(strcmp(cmdtext, "/afk",true) == 0)
{
   SendClientMessage(playerid,-1,"Vocк digitou /afk e daqui 5 segundos serб movido. Para sair do afk use /sairafk.");
   GetPlayerPos(playerid,posantesafkX,posantesafkY,posantesafkZ);
   SetTimerEx("FicandoAfk",5000,false,"d",playerid);
   return 1;
}
if(strcmp(cmdtext, "/sairafk",true) == 0)
{
   SetPlayerPos(playerid,posantesafkX,posantesafkY,posantesafkZ);
   SendClientMessage(playerid,-1,"Vocк saiu do afk e voltou pra onde tava.");
   TogglePlayerControllable(playerid,1);
   return 1;
}
E embaixo da public OnPlayerCommandText poe essa:
pawn Код:
public FicandoAfk(playerid)
{
    SetPlayerPos(playerid, coordenadas);
    SetPlayerInterior(playerid, id do interior); // caso precise
    TogglePlayerControllable(playerid,0);
    SendClientMessage(playerid,-1,"Vocк estб afk, nгo se esqueзa, para sair do afk e voltar onde estava use /sairafk.");
    return 1;
}

AJUDEI? +REP =D
Reply
#3

vo faze em ZCMD pq й mais rapido ta:

pawn Код:
//topo
new Float:X,
    Float:Y,
    Float:Z;
forward ColocarAFK(playerid);

//comando
CMD:afk(playerid, param[])
{
     SetTimerEx("ColocarAFK", 5000, false, "i", playerid);
     SendClientMessage(playerid, -1, "AFK em 5 segundos!");
     GetPlayerPos(playerid, X, Y, Z);
     return 1;
}

CMD:sairafk(playerid, params[])
{
     SetPlayerPos(playerid, X, Y, Z);
     SendClientMessage(playerid, -1, "Vocк nгo estб mais AFK");
     return 1;
}

public ColocarAFK(playerid)
{
     SetPlayerPos(playerid, Cord X, Cord Y, Cord Z);
     TogglePlayerControllable(playerid, false);
     SendClientMessage(playerid, -1, "vocк estб AFK, para sair use /sairafk");
     return 1;
}
tenta ae.


~EDIT~ Foi mal, nгo vi que a humildadeforever tinha postado
Reply
#4

Topo:
pawn Код:
new Float:antesAFK[MAX_PLAYERS][3];
OnPlayerCommandText:
pawn Код:
if(strcmp(cmdtext, "/afk", true) == 0)
{
    GetPlayerPos(playerid, antesAFK[playerid][0], antesAFK[playerid][1], antesAFK[playerid][2]);
    SetTimerEx("EntrarAFK", 5000, 0, "i", playerid);
    GameTextForPlayer(playerid, "~b~AFK", 5000, 1);
    return 1;
}
if(strcmp(cmdtext, "/sairafk", true) == 0)
{
    TogglePlayerControllable(playerid, 1);
    SetPlayerPos(playerid, antesAFK[playerid][0], antesAFK[playerid][1], antesAFK[playerid][2]);
    SendClientMessage(playerid, 0xffffffff, "Saiu do AFK");
    return 1;
}
Fim:
pawn Код:
forward EntrarAFK(playerid);
public EntrarAFK(playerid)
{
    SetPlayerPos(playerid, coordenadas);
    SetPlayerInterior(playerid, interior);
    SetPlayerVirtualWorld(playerid, virtualworld);
    TogglePlayerControllable(playerid, 0);
    return 1;
}
Acho que vai bugar do jeito do alemгo com as variaveis sem arrays. Mas posso estar enganado, mas o alemгo esqueceu de por pra descongelar o player
Reply
#5

Quote:
Originally Posted by Lucas_Alemao
Посмотреть сообщение
vo faze em ZCMD pq й mais rapido ta:

pawn Код:
//topo
new Float:X,
    Float:Y,
    Float:Z;
forward ColocarAFK(playerid);

//comando
CMD:afk(playerid, param[])
{
     SetTimerEx("ColocarAFK", 5000, false, "i", playerid);
     SendClientMessage(playerid, -1, "AFK em 5 segundos!");
     GetPlayerPos(playerid, X, Y, Z);
     return 1;
}

CMD:sairafk(playerid, params[])
{
     SetPlayerPos(playerid, X, Y, Z);
     SendClientMessage(playerid, -1, "Vocк nгo estб mais AFK");
     return 1;
}

public ColocarAFK(playerid)
{
     SetPlayerPos(playerid, Cord X, Cord Y, Cord Z);
     TogglePlayerControllable(playerid, false);
     SendClientMessage(playerid, -1, "vocк estб AFK, para sair use /sairafk");
     return 1;
}
tenta ae.


~EDIT~ Foi mal, nгo vi que a humildadeforever tinha postado
Como funciona esse sistema? comandos?
Reply
#6

Tutorial de zcmd e sscanf

Conseguiu seu sistema de AFK?
Reply
#7

Presiso ajuda para este sistema!! Ao estar AFK se fizer novamente /afk 2 vezes seguidas, o player fica no local do AFK e consegue mexer se! da para fazerem que ele nao consiga fazer novamente /afk quando esta no local do afk?
Este aqui:
pawn Код:
new Float: posantesafkX,Float: posantesafkY, Float: posantesafkZ;
forward FicandoAfk(playerid);
Em OnPlayerCommandText:
pawn Код:
if(strcmp(cmdtext, "/afk",true) == 0)
{
   SendClientMessage(playerid,-1,"Vocк digitou /afk e daqui 5 segundos serб movido. Para sair do afk use /sairafk.");
   GetPlayerPos(playerid,posantesafkX,posantesafkY,posantesafkZ);
   SetTimerEx("FicandoAfk",5000,false,"d",playerid);
   return 1;
}
if(strcmp(cmdtext, "/sairafk",true) == 0)
{
   SetPlayerPos(playerid,posantesafkX,posantesafkY,posantesafkZ);
   SendClientMessage(playerid,-1,"Vocк saiu do afk e voltou pra onde tava.");
   TogglePlayerControllable(playerid,1);
   return 1;
}
E embaixo da public OnPlayerCommandText poe essa:
pawn Код:
public FicandoAfk(playerid)
{
    SetPlayerPos(playerid, coordenadas);
    SetPlayerInterior(playerid, id do interior); // caso precise
    TogglePlayerControllable(playerid,0);
    SendClientMessage(playerid,-1,"Vocк estб afk, nгo se esqueзa, para sair do afk e voltar onde estava use /sairafk.");
    return 1;
}
Reply
#8

Topo:
pawn Код:
new Float:antesAFK[MAX_PLAYERS][3];
new bool:AFK[MAX_PLAYERS];
OnPlayerCommandText:
pawn Код:
if(strcmp(cmdtext, "/afk", true) == 0)
{
        if(AFK[playerid]) return SendClientMessage(playerid, 0x00CD00FF, "Vocк jб estб AFK!");
    GetPlayerPos(playerid, antesAFK[playerid][0], antesAFK[playerid][1], antesAFK[playerid][2]);
    SetTimerEx("EntrarAFK", 5000, 0, "i", playerid);
    GameTextForPlayer(playerid, "~b~AFK", 5000, 1);
    return 1;
}
if(strcmp(cmdtext, "/sairafk", true) == 0)
{
        if(!AFK[playerid]) return SendClientMessage(playerid, 0x00CD00FF, "Vocк nгo estб AFK");
    TogglePlayerControllable(playerid, 1);
    SetPlayerPos(playerid, antesAFK[playerid][0], antesAFK[playerid][1], antesAFK[playerid][2]);
    SendClientMessage(playerid, 0xffffffff, "Saiu do AFK");
        AFK[playerid] = false;
    return 1;
}
Fim:
pawn Код:
forward EntrarAFK(playerid);
public EntrarAFK(playerid)
{
        AFK[playerid] = true;
    SetPlayerPos(playerid, coordenadas);
    SetPlayerInterior(playerid, interior);
    SetPlayerVirtualWorld(playerid, virtualworld);
    TogglePlayerControllable(playerid, 0);
    return 1;
}
os codigos do alemao e do humildade acho que bugarao se tiverem diversos players no servidor a derem afk, pois a posicao sera sempre a do ultimo jogador a dar afk, entao, se eu estou em LS e dou AFK e voce estб em SF e da AFK, eu quando digitar /sairafk vou parar em SF, creio que isso pode ocorrer no codigo deles.
Reply
#9

Muito bom mesmo obrigado!

So mais uma coisa para completar, como faco para ter varios spawns para players?

Exemplo:
1 - SetPlayerPos(playerid, 385546.67657275,2604651.6331,16456.4564844);
2 - SetPlayerPos(playerid, 385.6657275,27601.6331,1756.4456456844);
3 - SetPlayerPos(playerid, 385.665dfsf7275,27601.6dsfdsfds331,17fdsf56.445645 6844);
4 - SetPlayerPos(playerid, 38gfda5.6657275,2gdsfg7601.6331,1756.4456dsfgdfg45 6844);

Ps: Coordenadas Inventadas, mas players e tipo ficarem todos dentro de uma jaula parados mas nao juntos em cima uns dos outros
pawn Код:
forward EntrarAFK(playerid);
public EntrarAFK(playerid)
{
    AFK[playerid] = true;
    SetPlayerPos(playerid, 385.6275,2601.6331,16.4844);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    TogglePlayerControllable(playerid, 0);
    return 1;
}
Reply
#10

Isso?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)