Advertisement
Guest User

Missile Skript SA:MP

a guest
May 27th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.70 KB | None | 0 0
  1. /*  SA-MP Mörser Include
  2.  *
  3.  *  (c) Copyright 2019, Kaliber
  4.  *
  5.  */
  6. /******************************************************************************/
  7. #if defined _missile_included
  8.     #endinput
  9. #endif
  10. #define _missile_included
  11. /******************************************************************************/
  12. #if !defined _samp_included
  13.     #include <a_samp>
  14. #endif
  15. /******************************************************************************/
  16. #define MISSILE_SPEED 500
  17. #define MAX_MISSILE_HEIGHT 50
  18. /******************************************************************************/
  19. static stock route[100],r_idx;
  20.  
  21. stock ShowRoute(Float:x,Float:y,Float:z, Float:x2,Float:y2,Float:z2)
  22. {
  23.     if(r_idx != 0) DestroyRoute();
  24.    
  25.     new Float:tx, Float:ty, Float:tz;
  26.    
  27.     new Float:dis = VectorSize(x-x2,y-y2,z-z2);
  28.    
  29.     new Float:step = floatdiv(dis,sizeof(route));
  30.    
  31.     new Float:a = atan2(y-y2,x-x2)-270.0;
  32.    
  33.     new Float:sin = floatdiv(180,sizeof(route));
  34.    
  35.     for(new i,Float:t=step,Float:s; i<sizeof(route); i++,t+=step,s+=sin)
  36.     {
  37.         tx = x + t * floatsin(-a, degrees);
  38.         ty = y + t * floatcos(-a, degrees);
  39.         tz = z + 50 * floatsin(s, degrees);
  40.         route[r_idx++] = CreateDynamicObject(1598,tx,ty,tz,0,0,0);
  41.     }
  42.     return 1;
  43. }
  44. stock DestroyRoute()
  45. {
  46.     for(new i; i<sizeof(route); i++) DestroyDynamicObject(route[i]);
  47.     r_idx=0;
  48.     return 1;
  49. }
  50. /******************************************************************************/
  51. stock StartMissile(Float:x,Float:y,Float:z, Float:x2,Float:y2,Float:z2)
  52. {
  53.     new Float:dis = VectorSize(x-x2,y-y2,z-z2);
  54.  
  55.     new Float:step = floatdiv(dis,sizeof(route));
  56.  
  57.     new Float:a = atan2(y-y2,x-x2)-270.0;
  58.  
  59.     new Float:sin = floatdiv(180,sizeof(route));
  60.  
  61.     new obj = CreateDynamicObject(345,x,y,z,0,0,a);
  62.    
  63.     SetTimerEx(!"@fly",100,0,!"iifffffffffff",obj,0,a,x,y,z,step,step,0,sin,x2,y2,z2);
  64.     return 1;
  65. }
  66.  
  67. static @fly(obj,i,Float:a,
  68.             Float:x,Float:y,Float:z,
  69.             Float:t,Float:step,
  70.             Float:s,Float:sin,
  71.             Float:ax,Float:ay,Float:az);
  72.         @fly(obj,i,Float:a,
  73.             Float:x,Float:y,Float:z,
  74.             Float:t,Float:step,
  75.             Float:s,Float:sin,
  76.             Float:ax,Float:ay,Float:az)
  77. {
  78.  
  79.     if(i==sizeof(route))
  80.     {
  81.         DestroyDynamicObject(obj),OnMissileFinished(ax,ay,az);
  82.         return 0;
  83.     }
  84.  
  85.     new Float:tx = x + t * floatsin(-a, degrees),
  86.         Float:ty = y + t * floatcos(-a, degrees),
  87.         Float:tz = z + MAX_MISSILE_HEIGHT * floatsin(s, degrees);
  88.        
  89.     MoveDynamicObject(obj,tx,ty,tz,MISSILE_SPEED);
  90.    
  91.     SetTimerEx(!"@fly",30,0,!"iifffffffffff",obj,i+1,a,x,y,z,t+step,step,s+sin,sin,ax,ay,az);
  92.     return 1;
  93. }
  94.  
  95. forward OnMissileFinished(Float:x,Float:y,Float:z);
  96. /******************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement