SA-MP Forums Archive
[Ajuda] OnPlayerGiveDamage - Sistema de HIT - 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] OnPlayerGiveDamage - Sistema de HIT (/showthread.php?tid=574312)



Distancia entre player - edit - ModaLOKO - 15.05.2015

Como posso saber a distancia de um player ao outro ?

tipo , se eu atiro em um player com uma sniper , como posso saber qual a distanзia de mim para o player em que tirei damage ?

pawn Код:
GetDistanceBetweenPlayers
acredito que necessita disso , mas como ?


Re: OnPlayerGiveDamage - Sistema de HIT - Bruno_Cyra - 16.05.2015

Vocк pode usar o GetPlayerPos e o GetPlayerDistanceFromPoint

PHP код:
    new Float:xFloat:yFloat:z;
    
GetPlayerPos(damagedidxyz);
    new 
Floatdistancia GetPlayerDistanceFromPoint(playeridxyz); 



Re: OnPlayerGiveDamage - Sistema de HIT - Jimmmy - 16.05.2015

Acabei de fazer ..

Obs: Nгo testei mais pela logica estб parecendo ser fucional .


pawn Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
    if(issuerid != INVALID_PLAYER_ID && weaponid == 34)
    {
        new Float:Distancia, string[100];
        Distancia = GetDistanceBetweenPlayers(issuerid,playerid);
        format(string, sizeof(string), "[ INFO ] vocк deu um tiro no jogador %s em uma distancia de %.1f", PlayerName(playerid), Distancia);
        SendClientMessage(issuerid, -1, string);
    }
    return 1;
}


pawn Код:
stock PlayerName(playerid)
{
new Nome[MAX_PLAYERS];
GetPlayerName(playerid, Nome, MAX_PLAYERS);
return Nome;
}
pawn Код:
stock GetDistanceBetweenPlayers(playerid,playerid2){
        new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
        new Float:dis;
        GetPlayerPos(playerid,x1,y1,z1);
        GetPlayerPos(playerid2,x2,y2,z2);
        dis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
        return floatround(dis);
}



Re: OnPlayerGiveDamage - Sistema de HIT - ModaLOKO - 16.05.2015

jimmmy o meu iria funcionar corretamente ?

pawn Код:
if(weaponid == 34)
    {
    if(damagedid != INVALID_PLAYER_ID)
    {
        new string[128], hitado[MAX_PLAYER_NAME];
        GetPlayerName(damagedid, hitado, sizeof (hitado));
        new Float:x, Float:y, Float:z;
        GetPlayerPos(damagedid, x, y, z);
        new Float: distancia = GetPlayerDistanceFromPoint(playerid, x, y, z);
        format(string, sizeof(string), "{B50909}[H.I.T] {FFFFFF}Hit confirmando em:{17A80F}%s[%d]:{FFFFFF}Distancia {17A80F}.:%d Feet(s) [Danos: %d]",hitado, damagedid, distancia, amount);
        SendClientMessage(playerid , 0xFFFFFFFF, string);
    }
    }



Re: OnPlayerGiveDamage - Sistema de HIT - Jimmmy - 16.05.2015

Quote:
Originally Posted by ModaLOKO
Посмотреть сообщение
jimmmy o meu iria funcionar corretamente ?

pawn Код:
if(weaponid == 34)
    {
    if(damagedid != INVALID_PLAYER_ID)
    {
        new string[128], hitado[MAX_PLAYER_NAME];
        GetPlayerName(damagedid, hitado, sizeof (hitado));
        new Float:x, Float:y, Float:z;
        GetPlayerPos(damagedid, x, y, z);
        new Float: distancia = GetPlayerDistanceFromPoint(playerid, x, y, z);
        format(string, sizeof(string), "{B50909}[H.I.T] {FFFFFF}Hit confirmando em:{17A80F}%s[%d]:{FFFFFF}Distancia {17A80F}.:%d Feet(s) [Danos: %d]",hitado, damagedid, distancia, amount);
        SendClientMessage(playerid , 0xFFFFFFFF, string);
    }
    }
Nгo rs

pawn Код:
if(damagedid != INVALID_PLAYER_ID)
new Float: distancia = GetPlayerDistanceFromPoint(playerid, x, y, z);
outros ...
Use o meu como base Amigo, mude a mensagem se quiser


Re: OnPlayerGiveDamage - Sistema de HIT - ModaLOKO - 16.05.2015

Obrigado <3 +rep