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(playeridissueridFloatamountweaponidbodypart)
{
        
//funзгo      
        
new string[55], FloatDistancia;
        
Distancia GetDistanciaEntrePlayers(issueridplayerid);
        
format(stringsizeof(string), "Distancia:_%.1f Metros"Distancia);
        
TextDrawSetString(TextIdstring);
        return 
1;

PHP код:
stock GetDistanciaEntrePlayers(playeridplayerid2)
{
    new 
FloatPos1[3], FloatPos2[3], Floatdistancia;
    
GetPlayerPos(playeridPos1[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(playeridissueridFloatamountweaponidbodypart)
{
        
//funзгo      
        
new string[55], FloatDistancia;
        
Distancia GetDistanciaEntrePlayers(issueridplayerid);
        
format(stringsizeof(string), "Distancia:_%.1f Metros"Distancia);
        
TextDrawSetString(TextIdstring);
        return 
1;

PHP код:
stock GetDistanciaEntrePlayers(playeridplayerid2)
{
    new 
FloatPos1[3], FloatPos2[3], Floatdistancia;
    
GetPlayerPos(playeridPos1[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