Advertisement
srdjan

Vehicle speed radar

Aug 31st, 2011
5,462
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.64 KB | None | 0 0
  1.  
  2.  
  3. /*  Cruiser dash mounted speed radar
  4.     made by Srdjan. Today's date 31/08/2011
  5.     All credits go to me                   */
  6.    
  7.    
  8. #include <a_samp>
  9.  
  10. #define COLOR_YELLOW 0xFFFF00AA
  11.  
  12. new VehRadarID [MAX_VEHICLES];
  13. new Text: RadarHud;
  14. new Text: SpeedAndModel [MAX_VEHICLES];
  15. new CheckingSpeed [MAX_VEHICLES];
  16. new OldVehID [MAX_PLAYERS];
  17.  
  18. forward UpdateSpeed (vehid);
  19. forward CheckValidTextDraws();
  20.  
  21.  
  22. new VehicleModel[212][] ={
  23. "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial","Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana",
  24. "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance","Leviathan", "Moonbeam", "Esperanto", "Taxi",
  25. "Washington", "Bobcat","Whoopee", "BF Injection", "Hunter", "Premier","Enforcer", "Securicar", "Banshee",
  26. "Predator", "Bus", "Rhino", "Barracks", "Hotknife","Trailer 1", "Previon", "Coach", "Cabbie", "Stallion",
  27. "Rumpo", "RC Bandit", "Romero", "Packer","Monster", "Admiral", "Squalo","Seasparrow", "Pizzaboy", "Tram", "Trailer 2",
  28. "Turismo", "Speeder", "Reefer", "Tropic","Flatbed", "Yankee", "Caddy", "Solair","Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio",
  29. "Freeway", "RC Baron", "RC Raider","Glendale", "Oceanic", "Sanchez", "Sparrow","Patriot", "Quad", "Coastguard", "Dinghy", "Hermes",
  30. "Sabre", "Rustler", "ZR-350","Walton", "Regina", "Comet", "BMX", "Burrito","Camper", "Marquis", "Baggage", "Dozer", "Maverick",
  31. "News Chopper", "Rancher","FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring","Sandking", "Blista Compact", "Police Maverick",
  32. "Boxvillde", "Benson","Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B","Bloodring Banger", "Rancher", "Super GT", "Elegant",
  33. "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster","Stunt",  "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer",
  34. "Shamal", "Hydra","FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune","Cadrona", "FBI Truck", "Willard",
  35. "Forklift", "Tractor", "Combine","Feltzer", "Remington", "Slamvan", "Blade", "Freight","Streak","Vortex", "Vincent", "Bullet",
  36. "Clover", "Sadler", "Firetruck LA","Hustler", "Intruder", "Primo", "Cargobob", "Tampa","Sunrise", "Merit","Utility", "Nevada",
  37. "Yosemite", "Windsor", "Monster A", "Monster B", "Uranus", "Jester", "Sultan","Stratum", "Elegy", "Raindance","RC Tiger",
  38. "Flash", "Tahoma", "Savanna", "Bandito","Freight Flat", "Streak Carriage", "Kart","Mower", "Dune", "Sweeper", "Broadway",
  39. "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford","BF-400", "News Van", "Tug", "Trailer 3", "Emperor","Wayfarer", "Euros",
  40. "Hotdog","Club", "Freight Carriage", "Trailer 4","Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)","Police Car (SFPD)",
  41. "Police Car (LVPD)", "Police Ranger", "Picador", "S.W.A.T", "Alpha","Phoenix", "Glendale", "Sadler", "Luggage Trailer A",
  42. "Luggage Trailer B", "Stairs", "Boxville", "Tiller", "Utility Trailer" };
  43.  
  44.  
  45. public OnFilterScriptInit ()
  46. {
  47.     printf (" \nCruiser speed radar made by Srdjan loaded.\n");
  48.    
  49.     SetTimer ("CheckValidTextDraws", 1000, 1);
  50.    
  51.     RadarHud = TextDrawCreate (495.0, 200.0, "~b~Model: ~n~~r~Speed:         kmph");
  52.     TextDrawFont (RadarHud, 2);
  53.     TextDrawLetterSize (RadarHud, 0.3, 1.0);
  54.    
  55.     for (new i = 1; i <= MAX_VEHICLES; i++)
  56.     {
  57.         VehRadarID [i] = -1;
  58.         SpeedAndModel [i] = TextDrawCreate (545.0, 200.0, "~b~ ~n~~r~");
  59.         TextDrawFont (SpeedAndModel [i], 2);
  60.         TextDrawLetterSize (SpeedAndModel [i], 0.3, 1.0);
  61.         CheckingSpeed [i] = 0;
  62.     }
  63.    
  64.     return 1;
  65. }
  66.  
  67. public OnPlayerCommandText (playerid, cmdtext[])
  68. {
  69.     if (!strcmp (cmdtext, "/placeradar"))
  70.     {
  71.         if (IsPlayerInAnyVehicle (playerid))
  72.         {
  73.             new vehid = GetPlayerVehicleID (playerid);
  74.             if (VehRadarID [vehid] > -1) return 1;
  75.            
  76.             new Float: x, Float: y, Float: z, Float: a;
  77.             GetVehiclePos (vehid, x, y, z);
  78.             GetVehicleZAngle (vehid, a);
  79.             SendClientMessage (playerid, COLOR_YELLOW, "Radar has been added successfully.");
  80.             VehRadarID [vehid] = CreateObject (367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 300.0);
  81.             AttachObjectToVehicle (VehRadarID [vehid], vehid, 0.2, 0.50, 0.3, 0.0, 0.0, 90.0);
  82.            
  83.             for (new i = 0; i < MAX_PLAYERS; i++)
  84.             {
  85.                 if (IsPlayerInVehicle (i, vehid))
  86.                 {
  87.                     TextDrawShowForPlayer (i, RadarHud);
  88.                 }
  89.             }
  90.         }
  91.         return 1;
  92.     }
  93.    
  94.     if (!strcmp (cmdtext, "/removeradar"))
  95.     {
  96.         if (IsPlayerInAnyVehicle (playerid))
  97.         {
  98.             new vehid = GetPlayerVehicleID (playerid);
  99.             if (VehRadarID [vehid] == -1) return 1;
  100.  
  101.             DestroyObject (VehRadarID [vehid]);
  102.             SendClientMessage (playerid, COLOR_YELLOW, "Radar has been removed successfully.");
  103.             VehRadarID [vehid] = -1;
  104.             KillTimer (CheckingSpeed [vehid]);
  105.             CheckingSpeed [vehid] = -1;
  106.            
  107.             for (new i = 0; i < MAX_PLAYERS; i++)
  108.             {
  109.                 if (IsPlayerInVehicle (i, vehid))
  110.                 {
  111.                     TextDrawHideForPlayer (i, RadarHud);
  112.                     TextDrawHideForPlayer (playerid, SpeedAndModel [vehid]);
  113.                 }
  114.             }
  115.         }
  116.         return 1;
  117.     }
  118.  
  119.     if (!strcmp (cmdtext, "/checkspeed"))
  120.     {
  121.         if (IsPlayerInAnyVehicle (playerid))
  122.         {
  123.             new vehid = GetPlayerVehicleID (playerid);
  124.             if (VehRadarID [vehid] == -1) return 1;
  125.             CheckingSpeed [vehid] = SetTimerEx ("UpdateSpeed", 100, 1, "d", vehid);
  126.         }
  127.         return 1;
  128.     }
  129.    
  130.     if (!strcmp (cmdtext, "/stopchecking"))
  131.     {
  132.         if (IsPlayerInAnyVehicle (playerid))
  133.         {
  134.             new vehid = GetPlayerVehicleID (playerid);
  135.             if (CheckingSpeed [vehid] > 0)
  136.             {
  137.                 KillTimer (CheckingSpeed [vehid]);
  138.                 CheckingSpeed [vehid] = -1;
  139.             }
  140.             for (new i = 0; i < MAX_PLAYERS; i++)
  141.             {
  142.                 if (IsPlayerInVehicle (i, vehid))
  143.                 {
  144.                     TextDrawHideForPlayer (i, SpeedAndModel [vehid]);
  145.                 }
  146.             }
  147.         }
  148.         return 1;
  149.     }
  150.    
  151.     if (!strcmp (cmdtext, "/issueticket"))
  152.     {
  153.         if (IsPlayerInAnyVehicle (playerid))
  154.         {
  155.             new vehid = GetPlayerVehicleID (playerid);
  156.             if (CheckingSpeed [vehid] > -1)
  157.             {
  158.                 for (new i = 0; i < MAX_PLAYERS; i++)
  159.                 {
  160.                     if (IsPlayerConnected (i) && i != playerid)
  161.                     {
  162.                         if (IsPlayerInVehicle (i, GetVehicleInfrontID (vehid)))
  163.                         {
  164.                             if (GetPlayerVehicleSeat (i) == 0)
  165.                             {
  166.                                 GivePlayerMoney (i, -1500);
  167.                             }
  168.                         }
  169.                     }
  170.                 }
  171.             }
  172.         }
  173.         return 1;
  174.     }
  175.    
  176.     return 0;
  177. }
  178.  
  179. GetVehicleInfrontID (vehid)
  180. {
  181.     new Float: temp = 7.0;
  182.     new j = 0;
  183.     for (new i = 1; i <= MAX_VEHICLES; i++)
  184.     {
  185.         new Float: a, Float: x1, Float: y1, Float: z1, Float: x2, Float: y2, Float: z2;
  186.         GetVehiclePos (vehid, x1, y1, z1);
  187.         GetVehicleZAngle (vehid, a);
  188.         if (i != vehid)
  189.         {
  190.             if (GetVehiclePos (i, x2, y2, z2))
  191.             {
  192.                 new Float: distance = floatsqroot (floatpower ((x1 - x2), 2) + floatpower ((y1 - y2), 2) + floatpower ((z1 - z2), 2));
  193.                 GetVehicleZAngle (vehid, a);
  194.  
  195.                 if (distance < 300.0)
  196.                 {
  197.                     x1 = x1 + (distance * floatsin(-a, degrees));
  198.                     y1 = y1 + (distance * floatcos(-a, degrees));
  199.  
  200.                     distance = floatsqroot ((floatpower ((x1 - x2), 2)) + (floatpower ((y1 - y2), 2)));
  201.  
  202.                     if (temp > distance)
  203.                     {
  204.                         temp = distance;
  205.                         j = i;
  206.                     }
  207.                 }
  208.             }
  209.         }
  210.     }
  211.     if (temp < 7.0) return j;
  212.     return -1;
  213. }
  214.  
  215. public UpdateSpeed (vehid)
  216. {
  217.     new id = GetVehicleInfrontID (vehid);
  218.     if (id < 0)
  219.     {
  220.         TextDrawSetString (SpeedAndModel [vehid], "~b~N/A ~n~~r~N/A");
  221.     }
  222.     else
  223.     {
  224.         new str[32], Float: velocityX, Float: velocityY, Float: velocityZ;
  225.         GetVehicleVelocity (id, velocityX, velocityY, velocityZ);
  226.         new speed = floatround (floatsqroot (floatpower (velocityX, 2) + floatpower (velocityY, 2) + floatpower (velocityZ, 2)) * 136.666667, floatround_round);
  227.         format (str, sizeof (str), "~b~%s ~n~~r~%d", VehicleModel [GetVehicleModel (id) - 400], speed);
  228.         TextDrawSetString (SpeedAndModel [vehid], str);
  229.     }
  230.  
  231.     for (new i = 0; i < MAX_PLAYERS; i++)
  232.     {
  233.         if (IsPlayerInVehicle (i, vehid))
  234.         {
  235.             TextDrawShowForPlayer (i, SpeedAndModel [vehid]);
  236.         }
  237.     }
  238.     return 1;
  239. }
  240.  
  241. public CheckValidTextDraws()
  242. {
  243.     for (new i = 0; i < MAX_PLAYERS; i++)
  244.     {
  245.         if (IsPlayerConnected (i))
  246.         {
  247.             if (IsPlayerInAnyVehicle (i))
  248.             {
  249.                 new vehid = GetPlayerVehicleID (i);
  250.                 if (VehRadarID [vehid] > -1)
  251.                 {
  252.                     TextDrawShowForPlayer (i, RadarHud);
  253.                     if (CheckingSpeed [vehid] > 0)
  254.                     {
  255.                         TextDrawShowForPlayer (i, SpeedAndModel [vehid]);
  256.                     }
  257.                     else
  258.                     {
  259.                         TextDrawHideForPlayer (i, SpeedAndModel [vehid]);
  260.                     }
  261.                 }
  262.                 else
  263.                 {
  264.                     TextDrawHideForPlayer (i, RadarHud);
  265.                 }
  266.             }
  267.            
  268.             else
  269.             {
  270.                 TextDrawHideForPlayer (i, RadarHud);
  271.                 TextDrawHideForPlayer (i, SpeedAndModel [OldVehID[i]]);
  272.                 OldVehID [i] = 0;
  273.             }
  274.         }
  275.     }
  276.     return 1;
  277. }
  278.  
  279. public OnPlayerStateChange (playerid, newstate, oldstate)
  280. {
  281.     if ((oldstate == PLAYER_STATE_ONFOOT) && (newstate == PLAYER_STATE_PASSENGER || newstate == PLAYER_STATE_DRIVER))
  282.     {
  283.          OldVehID [playerid] = GetPlayerVehicleID (playerid);
  284.     }
  285.     return 1;
  286. }
  287.  
  288. public OnVehicleDeath (vehicleid)
  289. {
  290.     DestroyObject (VehRadarID [vehicleid]);
  291.     VehRadarID [vehicleid] = -1;
  292.     KillTimer (CheckingSpeed [vehicleid]);
  293.     CheckingSpeed [vehicleid] = -1;
  294.     for (new i = 0; i < MAX_PLAYERS; i++)
  295.     {
  296.         if (IsPlayerInVehicle (i, vehicleid))
  297.         {
  298.             TextDrawHideForPlayer (i, RadarHud);
  299.             TextDrawHideForPlayer (i, SpeedAndModel [vehicleid]);
  300.         }
  301.     }
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement