Advertisement
Guest User

LSR - V2.0 INC

a guest
Dec 27th, 2010
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.46 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: 18, Setember, 2010 - V1.0
  9. *   Fix      Release: 00, 00000000, 0000 - V1.1
  10. *   Second   Release: 18, Setember, 2010 - V1.2
  11. *   Third    Release: 19, Setember, 2010 - V1.3
  12. *   Fix      Release: 00, 00000000, 0000 - V1.4
  13. *   Fix      Release: 00, 00000000, 0000 - V1.5
  14. *   Fix      Release: 00, 00000000, 0000 - V1.6
  15. *   Fourth   Release: 20, Setember, 2010 - V1.7
  16. *   Fifth    Release: 20, Setember, 2010 - V1.8
  17. *   Sixth    Release: 22, October,  2010 - V1.9
  18. *   Seven    Release: 27, December, 2010 - V2.0
  19. *
  20. */
  21. #include "a_samp"
  22.  
  23. #define MAX_Radar 100
  24. #define LSR_TIME_CHECK 1500 // Time in miliseconds.
  25.  
  26. /*Function List -----------------------------------------------------------------------------||
  27.  
  28. native CreateRadar(Float:x, Float:y, Float:z, speedmax, radiation, pickup, activated, virtualword = -1);
  29. native DestroyRadar(lrid);
  30. native RadarExists(lrid);
  31. native SetRadarPos(lrid, Float:x, Float:y, Float:z);
  32. native SetRadarVirtualWorld(lrid, virtualworld);
  33. native SetRadarActivate(lrid, toggle);
  34. native SetRadarMaxSpeed(lrid, speed);
  35. native SetRadarRadius(lrid, Float:radius);
  36. native SetRadarPickup(lrid, pickupid);
  37. native GetRadarPos(lrid, &Float:x, &Float:y, &Float:z);
  38. native GetRadarVirtualWorld(lrid);
  39. native LoadStaticRadarsFromFile(const filename[]);
  40.  
  41. /------------------------------------------------------------------------------------------------------------||*/
  42.  
  43. enum lrdef
  44. {
  45.     LSR_VW,
  46.     LSR_OID,
  47.     Float:LSR_X,
  48.     Float:LSR_Y,
  49.     Float:LSR_Z,
  50.     LSR_speedmax,
  51.     LSR_radiation,
  52.     LSR_pickup,
  53.     LSR_activated
  54. };
  55.  
  56. static  LSR_Timer, LSR_Total, LSR_Radar[MAX_Radar][lrdef];
  57.  
  58. #define LSR_CheckTimerAd() if(!LSR_Timer) LSR_Timer = SetTimer("CheckRadar", LSR_TIME_CHECK, 1)
  59. #define LSR_CheckTimerRe() if(!LSR_Total){KillTimer(LSR_Timer); LSR_Timer = 0;}
  60.  
  61. forward CheckRadar();
  62. forward HideRadar(playerid);
  63. forward PlayerInPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
  64. forward OnPlayerEnterRadar(playerid, speed, radarid);
  65. forward UseFlashRadar();
  66. forward MoverPickup(lrid,Float:x,Float:y,Float:z);
  67.  
  68. new Text:Flash;
  69. new UseFlash;
  70.  
  71. stock CreateRadar(Float:x, Float:y, Float:z, speedmax, radiation, pickup, activated, virtualword = -1)
  72. {
  73.     new bid = LSR_ProcurarIDLivre();
  74.     if(bid == -1)
  75.     {
  76.         printf("[LSP:] Radar limit was exceeded!(Max:%d) Increase the value or delete some...", MAX_Radar);
  77.         return 0;
  78.     }
  79.     LSR_Radar[bid][LSR_OID] = CreatePickup(pickup,1,x,y,z+2,-1);
  80.     LSR_Radar[bid][LSR_X] = x;
  81.     LSR_Radar[bid][LSR_Y] = y;
  82.     LSR_Radar[bid][LSR_Z] = z;
  83.     LSR_Radar[bid][LSR_speedmax] = speedmax;
  84.     LSR_Radar[bid][LSR_VW] = virtualword;
  85.     LSR_Radar[bid][LSR_radiation] = radiation;
  86.     LSR_Radar[bid][LSR_pickup] = pickup;
  87.     LSR_Radar[bid][LSR_activated] = activated;
  88.     LSR_CheckTimerAd();
  89.     LSR_Total++;
  90.     return bid;
  91. }
  92.  
  93. stock DestroyRadar(lrid)
  94. {
  95.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  96.     LSR_Total--;
  97.     DestroyPickup(LSR_Radar[lrid][LSR_pickup]);
  98.     LSR_Radar[lrid][LSR_OID] = 0;
  99.     LSR_CheckTimerRe()
  100.     return 1;
  101. }
  102.  
  103. stock RadarExists(lrid) return (!LSR_Radar[lrid][LSR_OID]) ? 0 : 1;
  104.  
  105. stock SetRadarPos(lrid, Float:x, Float:y, Float:z)
  106. {
  107.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  108.     LSR_Radar[lrid][LSR_X] = x;
  109.     LSR_Radar[lrid][LSR_Y] = y;
  110.     LSR_Radar[lrid][LSR_Z] = z;
  111.     return MoverPickup(LSR_Radar[lrid][LSR_OID], x, y, z);
  112. }
  113.  
  114. public MoverPickup(lrid,Float:x,Float:y,Float:z)
  115. {
  116.     if(LSR_Radar[lrid][LSR_OID])
  117.     {
  118.         DestroyPickup(LSR_Radar[lrid][LSR_OID]);
  119.         LSR_Radar[lrid][LSR_X] = x;
  120.         LSR_Radar[lrid][LSR_Y] = y;
  121.         LSR_Radar[lrid][LSR_Z] = z;
  122.         CreatePickup(LSR_Radar[lrid][LSR_pickup], 1, x, y, z, -1);
  123.         return 1;
  124.     }
  125.     return 0;
  126. }
  127.  
  128. stock SetRadarVirtualWorld(lrid, virtualworld)
  129. {
  130.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  131.     LSR_Radar[lrid][LSR_VW] = virtualworld;
  132.     DestroyPickup(LSR_Radar[lrid][LSR_OID]);
  133.     new x = LSR_Radar[lrid][LSR_X];
  134.     new y = LSR_Radar[lrid][LSR_Y];
  135.     new z = LSR_Radar[lrid][LSR_Z];
  136.     CreatePickup(LSR_Radar[lrid][LSR_pickup], 1, x, y, z, virtualworld);
  137.     return 1;
  138. }
  139.  
  140. stock SetRadarAtivate(lrid, toggle)
  141. {
  142.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  143.     if(toggle == 1 || toggle == true){LSR_Radar[lrid][LSR_ativado] = 1;}
  144.     if(toggle == 0 || toggle == false){LSR_Radar[lrid][LSR_ativado] = 0;}
  145.     return MoverPickup(LSR_Radar[lrid][LSR_OID], x, y, z);
  146. }
  147.  
  148. stock SetRadarMaxSpeed(lrid, speed)
  149. {
  150.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  151.     return LSR_Radar[lrid][LSR_speedmax] = speed;
  152. }
  153.  
  154. stock SetRadarRadius(lrid, Float:radius)
  155. {
  156.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  157.     return LSR_Radar[lrid][LSR_radiation] = radius;
  158. }
  159.  
  160.  
  161. stock SetRadarPickup(lrid, pickupid)
  162. {
  163.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  164.     LSR_Radar[lrid][LSR_pickup] = pickupid;
  165.     return MoverPickup(lrid, LSR_Radar[lrid][LSR_X], LSR_Radar[lrid][LSR_Y], LSR_Radar[lrid][LSR_Z]+2);
  166. }
  167.  
  168. stock GetRadarPos(lrid, &Float:x, &Float:y, &Float:z)
  169. {
  170.     if(!LSR_Radar[lrid][LSR_OID])
  171.     {
  172.         x = 0.0;
  173.         y = 0.0;
  174.         z = 0.0;
  175.     }
  176.     x = LSR_Radar[lrid][LSR_X];
  177.     y = LSR_Radar[lrid][LSR_Y];
  178.     z = LSR_Radar[lrid][LSR_Z];
  179. }
  180.  
  181. stock GetRadarVirtualWorld(lrid)
  182. {
  183.     if(!LSR_Radar[lrid][LSR_OID]) return 0;
  184.     return LSR_Radar[lrid][LSR_VW];
  185. }
  186.  
  187. public PlayerInPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
  188. {
  189.     if(IsPlayerConnected(playerid))
  190.     {
  191.         new Float:oldposx, Float:oldposy, Float:oldposz;
  192.         new Float:tempposx, Float:tempposy, Float:tempposz;
  193.         GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  194.         tempposx = (oldposx -x);
  195.         tempposy = (oldposy -y);
  196.         tempposz = (oldposz -z);
  197.         if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  198.         {
  199.             return 1;
  200.         }
  201.     }
  202.     return 0;
  203. }
  204.  
  205. public CheckRadar()
  206. {
  207.     for(new i = 0; i < MAX_PLAYERS; i++)
  208.     {
  209.         for(new b = 1; b <= LSR_Total; b++)
  210.         {
  211.             if(LSR_Radar[b][LSR_OID])
  212.             {
  213.                 if(LSR_Radar[b][LSR_activated] == 1)
  214.                 {
  215.                     if(LSR_Radar[b][LSR_VW] == -1 || GetPlayerVirtualWorld(i) == LSR_Radar[b][LSR_VW])
  216.                     {
  217.                         if(PlayerInPoint(LSR_Radar[b][LSR_radiation], i, LSR_Radar[b][LSR_X], LSR_Radar[b][LSR_Y], LSR_Radar[b][LSR_Z]))
  218.                         {
  219.                             RadarForPlayer(i, LSR_Radar[b][LSR_speedmax], LSR_Radar[b][LSR_OID]);
  220.                         }
  221.                     }
  222.                 }
  223.             }
  224.         }
  225.     }
  226. }
  227.  
  228. stock LSR_ProcurarIDLivre()
  229. {
  230.     for(new b = 1; b < MAX_Radar; b++) if(!LSR_Radar[b][LSR_OID]) return b;
  231.     return -1;
  232. }
  233.  
  234. stock GetSpeed(playerid, bool:velo)
  235. {
  236.     new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
  237.     if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else GetPlayerVelocity(playerid,Vx,Vy,Vz);
  238.     rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  239.     return velo?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
  240. }
  241.  
  242. stock LoadStaticRadarsFromFile(const filename[])
  243. {
  244.     new File:file_ptr;
  245.     new line[256];
  246.     new var_from_line[64];
  247.     new Float:SpawnX;
  248.     new Float:SpawnY;
  249.     new Float:SpawnZ;
  250.     new SpeedMax;
  251.     new Radiation, Pickup;
  252.     new Ativado, VirtualWorld;
  253.     new index;
  254.     new radars_loaded;
  255.  
  256.     file_ptr = fopen(filename,filemode:io_read);
  257.     if(!file_ptr) return 0;
  258.  
  259.     radars_loaded = 0;
  260.  
  261.     while(fread(file_ptr,line,256) > 0)
  262.     {
  263.         index = 0;
  264.  
  265.         // Read X, Y, Z, Rotation
  266.         index = token_by_delim(line,var_from_line,',',index);
  267.         if(index == (-1)) continue;
  268.         SpawnX = floatstr(var_from_line);
  269.  
  270.         index = token_by_delim(line,var_from_line,',',index+1);
  271.         if(index == (-1)) continue;
  272.         SpawnY = floatstr(var_from_line);
  273.  
  274.         index = token_by_delim(line,var_from_line,',',index+1);
  275.         if(index == (-1)) continue;
  276.         SpawnZ = floatstr(var_from_line);
  277.  
  278.         // Read Speed Max
  279.         index = token_by_delim(line,var_from_line,',',index+1);
  280.         if(index == (-1)) continue;
  281.         SpeedMax = strval(var_from_line);
  282.  
  283.         // Read Radiation, Pickup
  284.         index = token_by_delim(line,var_from_line,',',index+1);
  285.         if(index == (-1)) continue;
  286.         Radiation = strval(var_from_line);
  287.  
  288.         index = token_by_delim(line,var_from_line,',',index+1);
  289.         if(index == (-1)) continue;
  290.         Pickup = strval(var_from_line);
  291.  
  292.         //Read Ativado, VirtualWorld
  293.         index = token_by_delim(line,var_from_line,',',index+1);
  294.         if(index == (-1)) continue;
  295.         Ativado = strval(var_from_line);
  296.  
  297.         index = token_by_delim(line,var_from_line,';',index+1);
  298.         VirtualWorld = strval(var_from_line);
  299.  
  300.         CreateRadar(SpawnX, SpawnY, SpawnZ, SpeedMax, Radiation, Pickup, Ativado, VirtualWorld);
  301.         radars_loaded++;
  302.     }
  303.  
  304.     fclose(file_ptr);
  305.     printf("[LSR:] Loaded %d Radars from file: %s",radars_loaded,filename);
  306.     return radars_loaded;
  307. }
  308.  
  309. stock RadarForPlayer(playerid, speedlimit, radarid)
  310. {
  311.     new currentspeed = GetSpeed(playerid, true);
  312.     if(currentspeed >= speedlimit)
  313.     {
  314.         if(UseFlash == 1){TextDrawShowForPlayer(playerid, Flash); SetTimerEx("HideRadar", 1000, 0, "d", playerid);}
  315.         PlayerPlaySound(playerid,1132,0.0,0.0,0.0);
  316.         OnPlayerEnterRadar(playerid, currentspeed, radarid);
  317.     }
  318.     return 1;
  319. }
  320. public HideRadar(playerid)
  321. {
  322.     TextDrawHideForPlayer(playerid, Flash);
  323.     return 1;
  324. }
  325.  
  326. public UseFlashRadar()
  327. {
  328.     UseFlash = 1;
  329.     Flash = TextDrawCreate(635.000000, 432.000000, "__");
  330.     TextDrawBackgroundColor(Flash, 255);
  331.     TextDrawFont(Flash, 1);
  332.     TextDrawLetterSize(Flash, 0.500000, -45.900001);
  333.     TextDrawColor(Flash, -256);
  334.     TextDrawSetOutline(Flash, 0);
  335.     TextDrawSetProportional(Flash, 1);
  336.     TextDrawSetShadow(Flash, 1);
  337.     TextDrawUseBox(Flash, 1);
  338.     TextDrawBoxColor(Flash, -86);
  339.     TextDrawTextSize(Flash, 6.000000, 35.000000);
  340.     return 1;
  341. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement