Advertisement
Guest User

[include]LSR

a guest
Sep 20th, 2010
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.04 KB | None | 0 0
  1. /*
  2. *
  3. *   -= LSR INCLUDE =-
  4. *   Larceny Speed Radar
  5. *
  6. *   Autor: Larceny
  7. *   Special Thanks to: Protioso ([VGS]Protioso_OC)
  8. *   First Release: September 20, 2010 - V1.7
  9. *
  10. */
  11. #include "a_samp"
  12.  
  13. #define MAX_Radar 100
  14. #define LSR_TIME_CHECK 1500 // Tempo em milisegundos.
  15.  
  16. /*Function List -----------------------------------------------------------------------------||
  17.  
  18. native CreateRadar(Float:x, Float:y, Float:z, speedmax, radiacao, pickup, virtualword = -1);
  19. native DestroyRadar(lrid);
  20. native RadarExists(lrid);
  21. native SetRadarPos(lrid, Float:x, Float:y, Float:z);
  22. native SetRadarVirtualWorld(lrid, virtualworld);
  23. native GetRadarPos(lrid, &Float:x, &Float:y, &Float:z);
  24. native GetRadarVirtualWorld(lrid);
  25.  
  26. /------------------------------------------------------------------------------------------------------------||*/
  27.  
  28. enum lrdef
  29. {
  30.     LSR_VW,
  31.     LSR_OID,
  32.     Float:LSR_X,
  33.     Float:LSR_Y,
  34.     Float:LSR_Z,
  35.     LSR_speedmax,
  36.     LSR_radiacao,
  37.     LSR_pickup
  38. };
  39.  
  40. static  LSR_Timer, LSR_Total, LSR_Radar[MAX_Radar][lrdef];
  41.  
  42. #define LSR_CheckTimerAd() if(!LSR_Timer) LSR_Timer = SetTimer("CheckRadar", LSR_TIME_CHECK, 1)
  43. #define LSR_CheckTimerRe() if(!LSR_Total){KillTimer(LSR_Timer); LSR_Timer = 0;}
  44.  
  45. forward CheckRadar();
  46. forward HideRadar(playerid);
  47. forward PlayerInPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
  48. forward OnPlayerEnterRadar(playerid, speed, radarid);
  49. forward UseFlashRadar();
  50. forward MoverPickup(lrid,Float:x,Float:y,Float:z);
  51.  
  52. new Text:Flash;
  53. new UseFlash;
  54.  
  55. stock CreateRadar(Float:x, Float:y, Float:z, speedmax, radiacao, pickup, virtualword = -1)
  56. {
  57.     new bid = LSR_ProcurarIDLivre();
  58.     if(bid == -1)
  59.     {
  60.         printf("[LSP:] Radar limit was exceeded!(Max:%d) Increase the value or delete some...", MAX_Radar);
  61.         return 0;
  62.     }
  63.     LSR_Radar[bid][LSR_OID] = CreatePickup(pickup,1,x,y,z+2,-1);
  64.     LSR_Radar[bid][LSR_X] = x;
  65.     LSR_Radar[bid][LSR_Y] = y;
  66.     LSR_Radar[bid][LSR_Z] = z;
  67.     LSR_Radar[bid][LSR_speedmax] = speedmax;
  68.     LSR_Radar[bid][LSR_VW] = virtualword;
  69.     LSR_Radar[bid][LSR_radiacao] = radiacao;
  70.     LSR_Radar[bid][LSR_pickup] = pickup;
  71.     LSR_CheckTimerAd();
  72.     LSR_Total++;
  73.     return bid;
  74. }
  75.  
  76. stock DestroyRadar(lrid)
  77. {
  78.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  79.     LSR_Total--;
  80.     DestroyPickup(LSR_Radar[lrid][LSR_pickup]);
  81.     LSR_Radar[lrid][LSR_OID] = 0;
  82.     LSR_CheckTimerRe()
  83.     return 1;
  84. }
  85.  
  86. stock RadarExists(lrid) return (!LSR_Radar[lrid][LSR_OID]) ? 0 : 1;
  87.  
  88. stock SetRadarPos(lrid, Float:x, Float:y, Float:z)
  89. {
  90.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  91.     LSR_Radar[lrid][LSR_X] = x;
  92.     LSR_Radar[lrid][LSR_Y] = y;
  93.     LSR_Radar[lrid][LSR_Z] = z;
  94.     return MoverPickup(LSR_Radar[lrid][LSR_OID], x, y, z);
  95. }
  96.  
  97. public MoverPickup(lrid,Float:x,Float:y,Float:z)
  98. {
  99.     if(LSR_Radar[lrid][LSR_OID])
  100.     {
  101.         DestroyPickup(LSR_Radar[lrid][LSR_OID]);
  102.         LSR_Radar[lrid][LSR_X] = x;
  103.         LSR_Radar[lrid][LSR_Y] = y;
  104.         LSR_Radar[lrid][LSR_Z] = z;
  105.         CreatePickup(LSR_Radar[lrid][LSR_pickup], 1, x, y, z, -1);
  106.         return 1;
  107.     }
  108.     return 0;
  109. }
  110.  
  111. stock SetRadarVirtualWorld(lrid, virtualworld)
  112. {
  113.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  114.     LSR_Radar[lrid][LSR_VW] = virtualworld;
  115.     DestroyPickup(LSR_Radar[lrid][LSR_OID]);
  116.     new x = LSR_Radar[lrid][LSR_X];
  117.     new y = LSR_Radar[lrid][LSR_Y];
  118.     new z = LSR_Radar[lrid][LSR_Z];
  119.     CreatePickup(LSR_Radar[lrid][LSR_pickup], 1, x, y, z, virtualworld);
  120.     return 1;
  121. }
  122.  
  123. stock GetRadarPos(lrid, &Float:x, &Float:y, &Float:z)
  124. {
  125.     if(!LSR_Radar[lrid][LSR_OID])
  126.     {
  127.         x = 0.0;
  128.         y = 0.0;
  129.         z = 0.0;
  130.     }
  131.     x = LSR_Radar[lrid][LSR_X];
  132.     y = LSR_Radar[lrid][LSR_Y];
  133.     z = LSR_Radar[lrid][LSR_Z];
  134. }
  135.  
  136. stock GetRadarVirtualWorld(lrid)
  137. {
  138.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  139.     return LSR_Radar[lrid][LSR_VW];
  140. }
  141.  
  142. public PlayerInPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
  143. {
  144.     if(IsPlayerConnected(playerid))
  145.     {
  146.         new Float:oldposx, Float:oldposy, Float:oldposz;
  147.         new Float:tempposx, Float:tempposy, Float:tempposz;
  148.         GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  149.         tempposx = (oldposx -x);
  150.         tempposy = (oldposy -y);
  151.         tempposz = (oldposz -z);
  152.         if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  153.         {
  154.             return 1;
  155.         }
  156.     }
  157.     return 0;
  158. }
  159.  
  160. public CheckRadar()
  161. {
  162.     for(new i = 0; i < MAX_PLAYERS; i++)
  163.     {
  164.         for(new b = 1; b <= LSR_Total; b++)
  165.         {
  166.             if(LSR_Radar[b][LSR_OID])
  167.             {
  168.                 if(LSR_Radar[b][LSR_VW] == -1 || GetPlayerVirtualWorld(i) == LSR_Radar[b][LSR_VW])
  169.                 {
  170.                     if(PlayerInPoint(LSR_Radar[b][LSR_radiacao], i, LSR_Radar[b][LSR_X], LSR_Radar[b][LSR_Y], LSR_Radar[b][LSR_Z]))
  171.                     {
  172.                         RadarForPlayer(i, LSR_Radar[b][LSR_speedmax], LSR_Radar[b][LSR_OID]);
  173.                     }  
  174.                 }
  175.             }
  176.         }
  177.     }
  178. }
  179.  
  180. stock LSR_ProcurarIDLivre()
  181. {
  182.     for(new b = 1; b < MAX_Radar; b++) if(!LSR_Radar[b][LSR_OID]) return b;
  183.     return -1;
  184. }
  185.  
  186. stock GetSpeed(playerid, bool:velo)
  187. {
  188.     new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
  189.     if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else GetPlayerVelocity(playerid,Vx,Vy,Vz);
  190.     rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  191.     return velo?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
  192. }
  193.  
  194. stock RadarForPlayer(playerid, speedlimit, radarid)
  195. {
  196.     new currentspeed = GetSpeed(playerid, true);
  197.     if(currentspeed >= speedlimit)
  198.     {
  199.         if(UseFlash == 1){TextDrawShowForPlayer(playerid, Flash); SetTimerEx("HideRadar", 1000, 0, "d", playerid);}
  200.         PlayerPlaySound(playerid,1132,0.0,0.0,0.0);
  201.         OnPlayerEnterRadar(playerid, currentspeed, radarid);
  202.     }
  203.     return 1;
  204. }
  205. public HideRadar(playerid)
  206. {
  207.     TextDrawHideForPlayer(playerid, Flash);
  208.     return 1;
  209. }
  210.  
  211. public UseFlashRadar()
  212. {
  213.     UseFlash = 1;
  214.     Flash = TextDrawCreate(635.000000, 432.000000, "__");
  215.     TextDrawBackgroundColor(Flash, 255);
  216.     TextDrawFont(Flash, 1);
  217.     TextDrawLetterSize(Flash, 0.500000, -45.900001);
  218.     TextDrawColor(Flash, -256);
  219.     TextDrawSetOutline(Flash, 0);
  220.     TextDrawSetProportional(Flash, 1);
  221.     TextDrawSetShadow(Flash, 1);
  222.     TextDrawUseBox(Flash, 1);
  223.     TextDrawBoxColor(Flash, -86);
  224.     TextDrawTextSize(Flash, 6.000000, 35.000000);
  225.     return 1;
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement