SA-MP Forums Archive
Отбросить игрока - 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: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Отбросить игрока (/showthread.php?tid=444431)



Отбросить игрока - proff116 - 16.06.2013

Как отбросить игрока от точки (x,y) c помощью SetPlayerVelocity. ?


Пробовал через неё, не вышло
PHP код:
stock GetXYInFrontOfPoint(Float:xFloat:y, &Float:x2, &Float:y2Float:AFloat:distance)
{
    
x2 + (distance floatsin(-Adegrees));
    
y2 + (distance floatcos(-Adegrees));

Понял что нужно найти угол относительно двух точек, но так и не получилось


Re: Отбросить игрока - Stepashka - 16.06.2013

В определенном направлении или в любом?


Re: Отбросить игрока - proff116 - 16.06.2013

да, в определенном


Re: Отбросить игрока - proff116 - 16.06.2013

Известна координата откуда нужно откинуть


Re: Отбросить игрока - Richard_Gere - 17.06.2013

Я раньше в OnPlayerTakeDamage откидывал так, может приспособите под себя
pawn Код:
new Float:X, Float:Y, Float:Z, Float:pAng;
    GetPlayerFacingAngle(issuerid, pAng);
    GetPlayerVelocity(playerid, X, Y, Z);
    SetPlayerVelocity(playerid, X + (floatsin(-pAng, degrees) * 0.1), Y + (floatcos(pAng, degrees) * 0.1) , Z+0.05);



Re: Отбросить игрока - proff116 - 17.06.2013

Да, спасибо. Знаю этот метод. Как раз таки пытался найти угол под эти операции, нахожу ,по видимому, не верно


Re: Отбросить игрока - Alexander_Petrov - 17.06.2013

Что именно не работает?


Re: Отбросить игрока - proff116 - 17.06.2013

PHP код:
new Float:XFloat:YFloat:ZFloat:A;
180-atan2(POS[1][0]-POS[0][0], POS[1][1]-POS[0][1]);
GetPlayerVelocity(iXYZ);
SetPlayerVelocity(i+ (floatsin(-Adegrees) * 4.0), + (floatcos(Adegrees) * 4.0) , Z+1.0); 
То притягивает, то отталкивает не так как надо (в сторону). Проще говоря, взялся за не свое


Re: Отбросить игрока - proff116 - 17.06.2013

А вот нашел правильное нахождение угла

PHP код:
#define fclamp360(%0) %0 += (%0 >= 360.0) ? -360.0 : ((%0 < 0.0) ? 360.0 : 0.0)
 
stock ReturnZAngleToPoint(playeridFloat:xFloat:y)
{
    new 
Float:P[4];
    
GetPlayerPos(playerid,P[0],P[1],P[2]);
    
P[3] = (180.0 atan2(floatsub(P[0],x),floatsub(P[1],y)));
    
fclamp360(P[3]);
    return 
P[3];




Re: Отбросить игрока - proff116 - 17.06.2013

Всё, всё отлично работает