SA-MP Forums Archive
[Ajuda] Posiзгo de onde veio o tiro - 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] Posiзгo de onde veio o tiro (/showthread.php?tid=647084)



Posiзгo de onde veio o tiro - gmstrikker - 29.12.2017

https://uploaddeimagens.com.br/imagens/blood-png--12
Alguйm jб fez isso ou sabe como fazer?

Seria possнvel pegando ao player receber dano, pegar a posiзгo do player que atirou e o player atingido e fazer uma textdraw apontando pra direзгo do cara que acertou como funciona em quase todos os FPS?


Re: Posiзгo de onde veio o tiro - DelK - 29.12.2017

Quote:
Originally Posted by gmstrikker
Посмотреть сообщение
https://uploaddeimagens.com.br/imagens/blood-png--12
Alguйm jб fez isso ou sabe como fazer?

Seria possнvel pegando ao player receber dano, pegar a posiзгo do player que atirou e o player atingido e fazer uma textdraw apontando pra direзгo do cara que acertou como funciona em quase todos os FPS?
Acabei de fazer um sistema de headshot que irei postar mais tarde e eu coloquei essa funзгo, mas ainda nгo criei a textdraw do dano mais й sу vocк seguir essa lуgica.
PHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
        
//funзгo      
        
new string[55], Float: Distancia;
        
Distancia = GetDistanciaEntrePlayers(issuerid, playerid);
        
format(string, sizeof(string), "Distancia:_%.1f Metros", Distancia);
        
TextDrawSetString(TextId, string);
        return 
1;
} 
PHP код:
stock GetDistanciaEntrePlayers(playerid, playerid2)
{
    new 
Float: Pos1[3], Float: Pos2[3], Float: distancia;
    
GetPlayerPos(playerid, Pos1[0], Pos1[1], Pos1[2]);
    
GetPlayerPos(playerid2,Pos2[0], Pos2[1], Pos2[2]);
    
distancia = floatsqroot(floatpower(floatabs(floatsub(Pos2[0], Pos1[0])),2)+floatpower(floatabs(floatsub(Pos2[1], Pos1[1])),2)+floatpower(floatabs(floatsub(Pos2[2], Pos1[2])),2));
    return 
floatround(distancia);
} 



Re: Posiзгo de onde veio o tiro - maikons - 31.12.2017

Quote:
Originally Posted by DelK
Посмотреть сообщение
Acabei de fazer um sistema de headshot que irei postar mais tarde e eu coloquei essa funзгo, mas ainda nгo criei a textdraw do dano mais й sу vocк seguir essa lуgica.
PHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
        
//funзгo      
        
new string[55], Float: Distancia;
        
Distancia = GetDistanciaEntrePlayers(issuerid, playerid);
        
format(string, sizeof(string), "Distancia:_%.1f Metros", Distancia);
        
TextDrawSetString(TextId, string);
        return 
1;
} 
PHP код:
stock GetDistanciaEntrePlayers(playerid, playerid2)
{
    new 
Float: Pos1[3], Float: Pos2[3], Float: distancia;
    
GetPlayerPos(playerid, Pos1[0], Pos1[1], Pos1[2]);
    
GetPlayerPos(playerid2,Pos2[0], Pos2[1], Pos2[2]);
    
distancia = floatsqroot(floatpower(floatabs(floatsub(Pos2[0], Pos1[0])),2)+floatpower(floatabs(floatsub(Pos2[1], Pos1[1])),2)+floatpower(floatabs(floatsub(Pos2[2], Pos1[2])),2));
    return 
floatround(distancia);
} 
Essa funзгo retorna a distancia? Mas os X da questгo й a direзгo com relaзгo as textdraws, nгo a distancia...

Eu acho que o ideal era fazer com uma funзгo como essa:

stock Float:AngleBetweenPoints(Float:XA, Float:YA, Float:XB, Float:YB)
{
new Float:Angle=-(90+(atan2(YA-YB,XA-XB)));// * 180.0 / 3.141592653;
return Angle;
}

AngleBetweenPoints(p1X,p1Y,p2X,p2Y);

Mas eu nгo sei como criar a textdraw na direзгo, se alguйm souber por favor me fale...


Re: Posiзгo de onde veio o tiro - renatog - 31.12.2017

A matemбtica pra fazer isso й tгo pesada que nem vale a pena tentar implementar isso no SA:MP, mas se vocк quiser muito, isso pode te ajudar: https://sampforum.blast.hk/showthread.php?tid=480286