SA-MP Forums Archive
[Ajuda] /kill - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] /kill (/showthread.php?tid=495497)



/kill - Lucas_HenryK - 17.02.2014

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;
}



Re: /kill - ViniBorn - 17.02.2014

Use KillTimer

No link hб um exemplo.


Re: /kill - brunox - 17.02.2014

Link a funcionar:
KillTimer


Re: /kill - Kmatsu - 17.02.2014

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]"
._.


Re: /kill - Lucas_HenryK - 17.02.2014

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

Kmatsu , como eu compararia entгo ?


Re: /kill - ViniBorn - 17.02.2014

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)



Re: /kill - Lucas_HenryK - 17.02.2014

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.


Re: /kill - ViniBorn - 17.02.2014

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;
}



Re: /kill - Lucas_HenryK - 17.02.2014

Muito obrigado ViniBorn, rep+.