[Ajuda] /kill
#1

o problema e que esta matando o player mesmo que ele tenha se mexido ..

pawn Код:
new Float:PosAtual[MAX_PLAYERS];

forward KillPlayer(playerid);
public KillPlayer(playerid)
{
    new PosDepois = GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);

    if(PosAtual[playerid] == PosDepois)
    {
        SetPlayerHealth(playerid,0.0);
        SendClientMessage(playerid,cor_verde,"Info: Vocк foi morto.");
    }
    else
    {
        SendClientMessage(playerid,cor_vermelho,"Erro: Vocк nгo pode ser morto porque se mecheu!");
    }
    return 1;
}

CMD:kill(playerid,params[])
{
    new
        acstr[100]
    ;
   
    PosAtual[playerid] = GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
   
    SetTimerEx("KillPlayer",5000,false,"d",playerid);
    SendClientMessage(playerid,cor_amarelo,"Atenзгo: Aguarda 5 segundos parada para ser morto.");
    return 1;
}
Reply
#2

Use KillTimer

No link hб um exemplo.
Reply
#3

Link a funcionar:
KillTimer
Reply
#4

pawn Код:
new PosDepois = GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
Vocк nao deve comparar o "PosDepois" e sim o "pPos[0], pPos[1], pPos[2]"
._.
Reply
#5

Nгo consegui revolver o problema com nenhuma de suas respostas.

Kmatsu , como eu compararia entгo ?
Reply
#6

Vocк tem que enviar as posiзхes coletadas no comando /kill X e Y para a funзгo KillPlayer.

Assim que ela for chamada pelo timer, vocк verifica novamente a posiзгo, e compara com a fornecida que citei acima

Ex:
pawn Код:
if(Pos[0] == NewPos[0])
A funзгo
pawn Код:
public KillPlayer(playerid)
Poderia ser
pawn Код:
public KillPlayer(playerid, Float:posX, Float: posY)
Reply
#7

Olб ViniBorn, eu continuo nгo entendendo, se possнvel o sr poderia adaptar o cуdigo por favor?

Minha callback KillPlayer estб assim no momento:

pawn Код:
public KillPlayer(playerid)
{
    new Float:pPos2[3];
    new PosDepois = GetPlayerPos(playerid,Float:PosAgr[0],PosAgr[1],Float:PosAgr[2]);

    if(PosAtual[playerid] == GetPlayerPos(playerid,PosDepois))
    {
        SetPlayerHealth(playerid,0.0);
        SendClientMessage(playerid,cor_verde,"Info: Vocк foi morto.");
    }
    else
    {
        SendClientMessage(playerid,cor_vermelho,"Erro: Vocк nгo pode ser morto porque se mecheu!");
        KillTimer(KillPlayer(playerid));
    }
    return 1;
}
Agradeзo.
Reply
#8

pawn Код:
forward KillPlayer(playerid, Float:OldPosX, Float:OldPosY);
public KillPlayer(playerid, Float:OldPosX, Float:OldPosY)
{
    new Float:NewPos[3];
    GetPlayerPos(playerid,NewPos[0],NewPos[1],NewPos[2]);

    if(OldPosX == NewPos[0] && OldPosY == NewPos[1])
    {
        SetPlayerHealth(playerid,0.0);
        SendClientMessage(playerid,cor_verde,"Info: Vocк foi morto.");
    }
    else SendClientMessage(playerid,cor_vermelho,"Erro: Vocк nгo pode ser morto porque se mecheu!");

    return 1;
}

CMD:kill(playerid,params[])
{
    new Float:pPos[3];
    GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
    SetTimerEx("KillPlayer",5000,false,"dff",playerid,pPos[0],pPos[1]);
    SendClientMessage(playerid,cor_amarelo,"Atenзгo: Aguarda 5 segundos parada para ser morto.");
    return 1;
}
Reply
#9

Muito obrigado ViniBorn, rep+.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)