Guest User

a_angles

a guest
Oct 13th, 2010
408
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.22 KB | None | 0 0
  1. // a_angles.inc
  2. // Angle functions
  3. // Created by:
  4. // Tannz0rz
  5.  
  6. #if defined _a_angles_included
  7.   #endinput
  8. #endif
  9. #define _a_angles_included
  10.  
  11. #include <a_samp>
  12.  
  13. stock IsPlayerBehindPlayer(playerid, targetid, Float:dOffset)
  14. {
  15.  
  16.     new
  17.         Float:pa,
  18.         Float:ta;
  19.  
  20.     if(!IsPlayerConnected(playerid) || !IsPlayerConnected(targetid)) return 0;
  21.    
  22.     GetPlayerFacingAngle(playerid, pa);
  23.     GetPlayerFacingAngle(targetid, ta);
  24.    
  25.     if(AngleInRangeOfAngle(pa, ta, dOffset) && IsPlayerFacingPlayer(playerid, targetid, dOffset)) return true;
  26.  
  27.     return false;
  28.  
  29. }
  30.  
  31. stock SetPlayerToFacePlayer(playerid, targetid)
  32. {
  33.  
  34.     new
  35.         Float:pX,
  36.         Float:pY,
  37.         Float:pZ,
  38.         Float:X,
  39.         Float:Y,
  40.         Float:Z,
  41.         Float:ang;
  42.  
  43.     if(!IsPlayerConnected(playerid) || !IsPlayerConnected(targetid)) return 0;
  44.  
  45.     GetPlayerPos(targetid, X, Y, Z);
  46.     GetPlayerPos(playerid, pX, pY, pZ);
  47.  
  48.     if( Y > pY ) ang = (-acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
  49.     else if( Y < pY && X < pX ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 450.0);
  50.     else if( Y < pY ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
  51.  
  52.     if(X > pX) ang = (floatabs(floatabs(ang) + 180.0));
  53.     else ang = (floatabs(ang) - 180.0);
  54.    
  55.     SetPlayerFacingAngle(playerid, ang);
  56.  
  57.     return 0;
  58.  
  59. }
  60.  
  61. stock IsPlayerFacingPlayer(playerid, targetid, Float:dOffset)
  62. {
  63.  
  64.     new
  65.         Float:pX,
  66.         Float:pY,
  67.         Float:pZ,
  68.         Float:pA,
  69.         Float:X,
  70.         Float:Y,
  71.         Float:Z,
  72.         Float:ang;
  73.  
  74.     if(!IsPlayerConnected(playerid) || !IsPlayerConnected(targetid)) return 0;
  75.  
  76.     GetPlayerPos(targetid, pX, pY, pZ);
  77.     GetPlayerPos(playerid, X, Y, Z);
  78.     GetPlayerFacingAngle(playerid, pA);
  79.  
  80.     if( Y > pY ) ang = (-acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
  81.     else if( Y < pY && X < pX ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 450.0);
  82.     else if( Y < pY ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
  83.  
  84.     if(AngleInRangeOfAngle(-ang, pA, dOffset)) return true;
  85.  
  86.     return false;
  87.  
  88. }
  89.  
  90. stock AngleInRangeOfAngle(Float:a1, Float:a2, Float:range)
  91. {
  92.  
  93.     a1 -= a2;
  94.     if((a1 < range) && (a1 > -range)) return true;
  95.  
  96.     return false;
  97.  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment