RIDE2DAY

vSync v0.02 (YSI)

Oct 20th, 2017
331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 52.15 KB | None | 0 0
  1. /*
  2.     vSync v0.02 wrote by RIDE2DAY
  3.     Official thread: http://forum.sa-mp.com/showthread.php?t=642022
  4. */
  5.  
  6. #include <YSI-Includes\YSI\y_bit>
  7. #include <YSI-Includes\YSI\y_hooks>
  8. #include <YSI-Includes\YSI\y_iterate>
  9.  
  10. // ================================== [DEFINITIONS] ================================== //
  11. #if !defined isodd
  12.     #define isodd(%1)               ((%1) & 1)
  13. #endif
  14.  
  15. #if !defined strcpy
  16.     #define strcpy(%0,%1)           strcat((%0[0] = EOS, %0), %1)
  17. #endif
  18.  
  19. #if !defined RELEASED
  20.     #define RELEASED(%0)            (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  21. #endif
  22.  
  23. #define NEON_LIGHT_RED              18647
  24. #define NEON_LIGHT_BLUE             18648
  25. #define NEON_LIGHT_GREEN            18649
  26. #define NEON_LIGHT_YELLOW           18650
  27. #define NEON_LIGHT_PINK             18651
  28. #define NEON_LIGHT_WHITE            18652
  29.  
  30. #define MAX_VEHICLE_NAME            31
  31. #define MAX_VEHICLE_NUMBERPLATE     32
  32. #define INVALID_PAINTJOB_ID         3
  33. #define CARMODTYPE_FRONT_BULLBAR    14
  34. #define CARMODTYPE_REAR_BULLBAR     15
  35.  
  36. #define IsComponentRearBullbar(%0)  (%0 == 1109 || %0 == 1110)
  37.  
  38. forward OnVehicleCreated(vehicleid);
  39. forward OnVehicleChangePaintjob(playerid, vehicleid, paintjobid);
  40.  
  41.  
  42. // ================================== [VARIABLES] ================================== //
  43. static vSync_pTick[MAX_PLAYERS];
  44. static vSync_pPaintjobID[MAX_PLAYERS char];
  45.  
  46. static BitArray:vSync_pInsideModShop<MAX_PLAYERS>;
  47. static BitArray:vSync_pBuyingPaintjob<MAX_PLAYERS>;
  48.  
  49. enum vSync_Internal_Data
  50. {
  51.     vSync_Color1,
  52.     vSync_Color2,
  53.     vSync_OrgCol1,
  54.     vSync_OrgCol2,
  55.     vSync_Paintjob,
  56.     vSync_Interior,
  57.     vSync_NumberP[MAX_VEHICLE_NUMBERPLATE],
  58.     vSync_Siren,
  59.     vSync_Stereo,
  60.     vSync_Bumpers[2],
  61.     vSync_Bullbars[2],
  62.     vSync_Neon[2]
  63. }
  64. static vSync_gVehicleInternal[MAX_VEHICLES][vSync_Internal_Data];
  65.        
  66. static Float:vSync_gPaynSprayPos[10][3] = {
  67.     {1025.05, -1024.23, 32.1},  // LS Temple
  68.     {487.68, -1740.87, 11.13},  // LS Santa Maria
  69.     {-1420.73, 2583.37, 55.56}, // El Quebrados
  70.     {-1904.39, 284.97, 40.75},  // Wang Cars
  71.     {-2425.91, 1022.33, 50.10}, // Juniper Hill
  72.     {1975.60, 2162.16, 10.77},  // LV Redsands
  73.     {2065.38, -1831.51, 13.25}, // Idlewood
  74.     {-99.55, 1118.36, 19.44},   // Fort Carson
  75.     {721.07, -455.94, 16.04},   // Dillimore
  76.     {2393.74, 1493.01, 10.52}   // LV Unused (Pyramid)
  77. };
  78.  
  79. enum vSync_Vehicle_Info
  80. {
  81.     Name[MAX_VEHICLE_NAME],
  82.     Seats,
  83.     Float:Mass,
  84.     DriveType,
  85.     EngineType,
  86.     MaxSpeed,
  87.     Float:NeonOffsetX,
  88.     Float:NeonOffsetY,
  89.     Float:NeonOffsetZ
  90. }
  91.  
  92. static const vSync_VehicleInfo[212][vSync_Vehicle_Info] = {
  93.     {"Landstalker", 4, 1700.0, '4', 'D', 159, -0.924997, 0.009998, -0.674997},
  94.     {"Bravura", 2, 1300.0, 'F', 'P', 148, -0.979999, 0.074997, -0.489998},
  95.     {"Buffalo", 2, 1500.0, 'R', 'P', 188, -1.034999, -0.029998, -0.579999},
  96.     {"Linerunner", 2, 3800.0, 'R', 'D', 111, -0.884998, 1.834998, -1.099997},
  97.     {"Perennial", 4, 1200.0, 'F', 'P', 134, -0.839999, -0.064998, -0.419999},
  98.     {"Sentinel", 4, 1600.0, 'R', 'P', 165, -0.914999, 0.000000, -0.534999},
  99.     {"Dumper", 1, 20000.0, 'R', 'D', 111, -1.129999, 0.354999, -1.219998},
  100.     {"Firetruck", 2, 6500.0, 'R', 'D', 150, -1.214998, 0.125000, -0.759998},
  101.     {"Trashmaster", 2, 5500.0, 'R', 'D', 101, -0.664999, 0.709999, -0.889998},
  102.     {"Stretch", 4, 2200.0, 'R', 'P', 159, -0.914999, -0.294999, -0.474999},
  103.     {"Manana", 2, 1000.0, 'F', 'P', 131, -0.879998, 0.000000, -0.389999},
  104.     {"Infernus", 2, 1400.0, '4', 'P', 223, -0.969999, 0.004999, -0.559997},
  105.     {"Voodoo", 2, 1800.0, 'R', 'P', 170, -0.994997, -0.154999, -0.569998},
  106.     {"Pony", 4, 2600.0, 'R', 'D', 111, -0.919999, -0.069999, -0.719999},
  107.     {"Mule", 2, 3500.0, 'R', 'D', 107, -0.759998, -0.469998, -0.524999},
  108.     {"Cheetah", 2, 1200.0, 'R', 'P', 194, -0.949998, -0.009998, -0.524999},
  109.     {"Ambulance", 4, 2600.0, '4', 'D', 155, -1.259999, -0.604999, -0.664999},
  110.     {"Leviathan", 2, 15000.0, '4', 'P', 143, -2.255002, 0.859999, -0.124999},
  111.     {"Moonbeam", 4, 2000.0, 'R', 'D', 116, -1.004999, 0.089997, -0.829999},
  112.     {"Esperanto", 2, 1800.0, 'R', 'P', 150, -0.934997, -0.009998, -0.584999},
  113.     {"Taxi", 4, 1450.0, 'F', 'P', 146, -0.954999, -0.009998, -0.444999},
  114.     {"Washington", 2, 1850.0, 'R', 'P', 155, -0.929997, -0.029998, -0.589999},
  115.     {"Bobcat", 2, 1700.0, '4', 'D', 141, -0.889998, 0.009998, -0.609999},
  116.     {"Mr. Whoopee", 2, 1700.0, 'R', 'D', 100, -0.999997, 0.164997, -0.714999},
  117.     {"BF Injection", 2, 1200.0, 'R', 'P', 137, -0.739997, 0.039999, -0.234999},
  118.     {"Hunter", 1, 10000.0, '4', 'P', 214, -0.639998, 2.475008, -0.789999},
  119.     {"Premier", 4, 1600.0, 'R', 'P', 175, -0.969999, 0.000000, -0.464998},
  120.     {"Enforcer", 4, 4000.0, 'R', 'D', 167, -1.124999, -0.714999, -0.734999},
  121.     {"Securicar", 4, 7000.0, 'R', 'D', 158, -1.124999, 0.054999, -0.759998},
  122.     {"Banshee", 2, 1400.0, 'R', 'P', 203, -0.844999, 0.004999, -0.474999},
  123.     {"Predator", 1, 2200.0, 'R', 'P', 184, 0.000000, 0.000000, 0.000000},
  124.     {"Bus", 9, 5500.0, 'R', 'D', 131, -1.304998, 2.300004, -0.714999},
  125.     {"Rhino", 1, 25000.0, '4', 'D', 95, 0.000000, 0.000000, 0.000000},
  126.     {"Barracks", 2, 10500.0, '4', 'D', 112, -0.579999, 0.994997, -0.874997},
  127.     {"Hotknife", 2, 1400.0, 'R', 'P', 169, 0.000000, 0.000000, 0.000000},
  128.     {"Article Trailer", 1, 3800.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  129.     {"Previon", 2, 1400.0, 'F', 'P', 150, -0.859999, -0.024999, -0.489998},
  130.     {"Coach", 9, 9500.0, 'R', 'D', 159, -1.314998, 2.245002, -0.724999},
  131.     {"Cabbie", 4, 1750.0, 'R', 'P', 144, -0.969999, -0.034999, -0.674997},
  132.     {"Stallion", 2, 1600.0, 'R', 'P', 170, -0.884998, 0.034999, -0.644999},
  133.     {"Rumpo", 4, 2000.0, 'F', 'P', 137, -0.914999, -0.045000, -0.899999},
  134.     {"RC Bandit", 1, 100.0, '4', 'E', 76, 0.000000, 0.000000, 0.000000},
  135.     {"Romero", 2, 2500.0, 'R', 'P', 140, -1.004999, -0.074997, -0.604999},
  136.     {"Packer", 2, 8000.0, 'R', 'D', 127, -0.809997, 2.770015, -1.174998},
  137.     {"Monster", 2, 5000.0, '4', 'P', 111, -1.064998, 0.000000, 0.135000},
  138.     {"Admiral", 4, 1650.0, 'F', 'P', 165, -0.949998, 0.000000, -0.519999},
  139.     {"Squallo", 1, 2200.0, 'R', 'P', 240, 0.000000, 0.000000, 0.000000},
  140.     {"Seasparrow", 2, 3000.0, '4', 'P', 145, -1.004999, 0.259999, -0.769999},
  141.     {"Pizzaboy", 1, 350.0, 'R', 'P', 190, 0.000000, 0.000000, 0.000000},
  142.     {"Tram", 2, 1900.0, 'R', 'P', 185, 0.000000, 0.000000, 0.000000},
  143.     {"Article Trailer 2", 1, 3800.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  144.     {"Turismo", 2, 1400.0, '4', 'P', 195, -0.984999, -0.194997, -0.519999},
  145.     {"Speeder", 1, 2200.0, 'R', 'P', 183, 0.000000, 0.000000, 0.000000},
  146.     {"Reefer", 1, 5000.0, 'R', 'P', 57, 0.000000, 0.000000, 0.000000},
  147.     {"Tropic", 1, 2200.0, 'R', 'P', 130, 0.000000, 0.000000, 0.000000},
  148.     {"Flatbed", 2, 8500.0, 'R', 'D', 159, -0.579999, 0.979999, -0.859999},
  149.     {"Yankee", 2, 4500.0, 'R', 'D', 107, -0.764998, -0.179997, -0.464998},
  150.     {"Caddy", 2, 1000.0, '4', 'E', 96, 0.000000, 0.000000, 0.000000},
  151.     {"Solair", 4, 2000.0, 'R', 'P', 159, -0.959999, -0.039999, -0.594999},
  152.     {"Topfun Van (Berkley's RC)", 4, 1900.0, 'R', 'D', 137, -0.919999, -0.069999, -0.719999},
  153.     {"Skimmer", 2, 5000.0, '4', 'P', 135, -1.399996, 0.554997, -1.819998},
  154.     {"PCJ-600", 2, 500.0, 'R', 'P', 207, 0.000000, 0.000000, 0.000000},
  155.     {"Faggio", 2, 350.0, 'R', 'P', 190, 0.000000, 0.000000, 0.000000},
  156.     {"Freeway", 2, 800.0, 'R', 'P', 210, 0.000000, 0.000000, 0.000000},
  157.     {"RC Baron", 1, 100.0, 'F', 'P', 45, 0.000000, 0.000000, 0.000000},
  158.     {"RC Raider", 1, 100.0, '4', 'P', 50, 0.000000, 0.000000, 0.000000},
  159.     {"Glendale", 4, 1600.0, 'R', 'P', 148, -0.989997, -0.064998, -0.489998},
  160.     {"Oceanic", 4, 1900.0, 'R', 'P', 142, -0.989997, -0.044998, -0.484999},
  161.     {"Sanchez", 2, 500.0, 'R', 'P', 186, 0.000000, 0.000000, 0.000000},
  162.     {"Sparrow", 2, 2500.0, '4', 'P', 145, 0.000000, 0.000000, 0.000000},
  163.     {"Patriot", 4, 2500.0, '4', 'P', 158, -1.119999, -0.149997, -0.359999},
  164.     {"Quad", 2, 400.0, '4', 'P', 111, 0.000000, 0.000000, 0.000000},
  165.     {"Coastguard", 1, 1200.0, 'R', 'P', 125, 0.000000, 0.000000, 0.000000},
  166.     {"Dinghy", 1, 800.0, 'R', 'P', 107, 0.000000, 0.000000, 0.000000},
  167.     {"Hermes", 2, 1950.0, 'F', 'P', 150, -0.994997, -0.064998, -0.544999},
  168.     {"Sabre", 2, 1700.0, 'R', 'P', 175, -0.904999, -0.054999, -0.549997},
  169.     {"Rustler", 1, 5000.0, '4', 'P', 220, 0.000000, 0.000000, 0.000000},
  170.     {"ZR-350", 2, 1400.0, 'R', 'P', 188, -0.979999, 0.019997, -0.514998},
  171.     {"Walton", 2, 1850.0, '4', 'D', 119, -0.804997, 0.064998, -0.519999},
  172.     {"Regina", 4, 1500.0, 'F', 'P', 141, -0.854999, 0.090000, -0.454997},
  173.     {"Comet", 2, 1400.0, '4', 'P', 186, -0.879998, 0.000000, -0.489998},
  174.     {"BMX", 1, 100.0, 'R', 'P', 97, 0.000000, 0.000000, 0.000000},
  175.     {"Burrito", 2, 1900.0, 'R', 'P', 158, -0.989997, 0.000000, -0.759998},
  176.     {"Camper", 3, 1900.0, 'R', 'P', 124, -0.834999, -0.149997, -0.744997},
  177.     {"Marquis", 1, 5000.0, 'R', 'P', 64, 0.000000, 0.000000, 0.000000},
  178.     {"Baggage", 1, 1000.0, 'R', 'E', 100, -0.629998, 0.164997, -0.374998},
  179.     {"Dozer", 1, 10000.0, '4', 'D', 65, 0.000000, 0.000000, 0.000000},
  180.     {"Maverick", 4, 5000.0, '4', 'P', 181, 0.000000, 0.000000, 0.000000},
  181.     {"News Chopper", 2, 3500.0, '4', 'P', 170, 0.000000, 0.000000, 0.000000},
  182.     {"Rancher", 2, 2500.0, '4', 'P', 141, -1.019999, 0.109999, -0.679997},
  183.     {"FBI Rancher", 4, 3500.0, '4', 'P', 158, -1.054998, 0.125000, -0.604999},
  184.     {"Virgo", 2, 1700.0, 'R', 'P', 150, -0.874997, -0.009998, -0.569998},
  185.     {"Greenwood", 4, 1600.0, 'R', 'P', 142, -0.909999, 0.000000, -0.459998},
  186.     {"Jetmax", 1, 3000.0, 'R', 'P', 183, 0.000000, 0.000000, 0.000000},
  187.     {"Hotring Racer", 2, 1600.0, 'R', 'P', 217, -0.909999, -0.199999, -0.639998},
  188.     {"Sandking", 2, 2000.0, '4', 'P', 178, -1.024999, 0.184999, -0.809997},
  189.     {"Blista Compact", 2, 1000.0, 'F', 'P', 164, -0.854999, 0.029998, -0.469998},
  190.     {"Police Maverick", 4, 4500.0, '4', 'P', 190, 0.000000, 0.000000, 0.000000},
  191.     {"Boxville", 4, 5500.0, 'R', 'D', 109, -1.149999, 0.269998, -0.654999},
  192.     {"Benson", 2, 3500.0, 'R', 'D', 124, -0.969999, -1.404996, -0.199999},
  193.     {"Mesa", 2, 1300.0, '4', 'D', 142, -0.969999, 0.189998, -0.574998},
  194.     {"RC Goblin", 1, 100.0, '4', 'P', 30, 0.000000, 0.000000, 0.000000},
  195.     {"Hotring Racer A", 2, 1600.0, 'R', 'P', 217, -0.909999, 0.029998, -0.639998},
  196.     {"Hotring Racer B", 2, 1600.0, 'R', 'P', 217, -0.909999, -0.184999, -0.639998},
  197.     {"Bloodring Banger", 2, 2100.0, 'R', 'P', 175, -0.989997, -0.059999, -0.494998},
  198.     {"Rancher (black-tinted windows)", 2, 2500.0, '4', 'P', 141, -1.019999, 0.109999, -0.679997},
  199.     {"Super GT", 2, 1400.0, 'R', 'P', 181, -0.904999, -0.249999, -0.509998},
  200.     {"Elegant", 4, 2200.0, 'R', 'P', 167, -1.084998, -0.024999, -0.589999},
  201.     {"Journey", 2, 3500.0, 'R', 'D', 109, -1.334998, -0.424997, -0.979999},
  202.     {"Bike", 1, 100.0, 'R', 'P', 105, 0.000000, 0.000000, 0.000000},
  203.     {"Mountain Bike", 1, 100.0, 'R', 'P', 130, 0.000000, 0.000000, 0.000000},
  204.     {"Beagle", 2, 10000.0, '4', 'P', 133, 0.000000, 0.000000, 0.000000},
  205.     {"Cropduster", 1, 5000.0, '4', 'P', 115, 0.000000, 0.000000, 0.000000},
  206.     {"Stuntplane", 1, 5000.0, '4', 'P', 151, 0.000000, 0.000000, 0.000000},
  207.     {"Tanker", 2, 3800.0, 'R', 'D', 122, -0.969999, 1.669998, -1.174998},
  208.     {"Roadtrain", 2, 5000.0, 'R', 'D', 144, -1.454998, 0.439999, -1.854997},
  209.     {"Nebula", 4, 1400.0, 'F', 'P', 159, -0.989997, 0.024999, -0.584999},
  210.     {"Majestic", 2, 1400.0, 'R', 'P', 159, -0.959999, 0.004999, -0.554997},
  211.     {"Buccaneer", 2, 1700.0, 'R', 'P', 166, -1.049998, 0.109999, -0.439999},
  212.     {"Shamal", 1, 15000.0, '4', 'P', 272, 0.000000, 0.000000, 0.000000},
  213.     {"Hydra", 1, 9000.0, '4', 'P', 272, 0.000000, 0.000000, 0.000000},
  214.     {"FCR-900", 2, 500.0, 'R', 'P', 209, 0.000000, 0.000000, 0.000000},
  215.     {"NRG-500", 2, 400.0, 'R', 'P', 209, 0.000000, 0.000000, 0.000000},
  216.     {"HPV1000", 2, 500.0, 'R', 'P', 197, 0.000000, 0.000000, 0.000000},
  217.     {"Cement Truck", 2, 5500.0, 'R', 'D', 131, -0.689997, 1.489997, -1.319998},
  218.     {"Towtruck", 2, 3500.0, 'R', 'D', 162, -1.054998, 0.499998, -0.329997},
  219.     {"Fortune", 2, 1700.0, 'R', 'P', 159, -0.899999, 0.000000, -0.564997},
  220.     {"Cadrona", 2, 1200.0, 'R', 'P', 150, -0.944998, 0.154999, -0.419999},
  221.     {"FBI Truck", 2, 4000.0, '4', 'D', 178, -0.924997, 0.059999, -0.529999},
  222.     {"Willard", 4, 1800.0, 'R', 'P', 150, -0.934997, -0.109999, -0.429998},
  223.     {"Forklift", 1, 1000.0, 'F', 'E', 61, 0.000000, 0.000000, 0.000000},
  224.     {"Tractor", 1, 2000.0, 'R', 'D', 71, -0.144997, 0.314999, -0.444999},
  225.     {"Combine Harvester", 1, 8500.0, '4', 'D', 111, 0.000000, 0.000000, 0.000000},
  226.     {"Feltzer", 2, 1600.0, 'R', 'P', 169, -0.924997, -0.034999, -0.479999},
  227.     {"Remington", 2, 1800.0, 'R', 'P', 170, -0.984999, 0.164997, -0.564997},
  228.     {"Slamvan", 2, 1950.0, 'R', 'P', 160, -1.069998, -0.034999, -0.569998},
  229.     {"Blade", 2, 1500.0, 'R', 'P', 175, -0.954999, -0.019997, -0.579999},
  230.     {"Freight", 2, 5500.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  231.     {"Brown Streak", 2, 5500.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  232.     {"Vortex", 1, 1900.0, 'R', 'P', 101, -1.004999, -0.049998, -0.019997},
  233.     {"Vincent", 4, 1800.0, 'F', 'P', 150, -1.024999, -0.090000, -0.639998},
  234.     {"Bullet", 2, 1200.0, 'R', 'P', 205, -0.904999, 0.000000, -0.414999},
  235.     {"Clover", 2, 1600.0, 'R', 'P', 166, -0.894999, 0.014999, -0.539999},
  236.     {"Sadler", 2, 1700.0, '4', 'D', 152, -0.904999, 0.009998, -0.409999},
  237.     {"Firetruck (ladder variant)", 2, 6500.0, 'R', 'D', 150, -1.089998, 0.000000, -0.709999},
  238.     {"Hustler", 2, 1700.0, 'R', 'P', 148, -0.939997, -0.029998, -0.564997},
  239.     {"Intruder", 4, 1800.0, 'R', 'P', 150, -1.039999, -0.100000, -0.474999},
  240.     {"Primo", 4, 1600.0, 'R', 'P', 144, -0.884998, 0.059999, -0.479999},
  241.     {"Cargobob", 2, 20000.0, '4', 'P', 158, -1.769997, 1.484997, -1.774996},
  242.     {"Tampa", 2, 1700.0, 'R', 'P', 155, -0.949998, 0.104998, -0.439999},
  243.     {"Sunrise", 4, 1600.0, 'F', 'P', 146, -1.089998, -0.059999, -0.554997},
  244.     {"Merit", 4, 1800.0, 'R', 'P', 159, -0.964999, 0.004999, -0.564997},
  245.     {"Utility Van", 2, 2600.0, 'R', 'D', 122, -1.034999, 0.749997, -0.254999},
  246.     {"Nevada", 1, 25000.0, '4', 'P', 193, 0.000000, 0.000000, 0.000000},
  247.     {"Yosemite", 2, 3000.0, 'R', 'P', 145, -1.109997, 0.009998, -0.534999},
  248.     {"Windsor", 2, 1500.0, 'R', 'P', 160, -0.754998, 0.000000, -0.464998},
  249.     {"Monster A", 2, 5000.0, '4', 'P', 111, -1.119999, 0.000000, 0.184999},
  250.     {"Monster B", 2, 5000.0, '4', 'P', 111, -1.129999, 0.044998, 0.074997},
  251.     {"Uranus", 2, 1400.0, 'R', 'P', 157, -0.894999, -0.089997, -0.374998},
  252.     {"Jester", 2, 1500.0, 'F', 'P', 179, -0.964999, 0.000000, -0.444999},
  253.     {"Sultan", 4, 1400.0, '4', 'P', 171, -1.004999, 0.054999, -0.414999},
  254.     {"Stratum", 4, 1800.0, 'R', 'P', 155, -0.919999, 0.129998, -0.574998},
  255.     {"Elegy", 2, 1500.0, 'R', 'P', 179, -0.909999, 0.119998, -0.404998},
  256.     {"Raindance", 2, 10000.0, '4', 'P', 160, 0.000000, 0.000000, 0.000000},
  257.     {"RC Tiger", 1, 100.0, '4', 'E', 89, 0.000000, 0.000000, 0.000000},
  258.     {"Flash", 2, 1400.0, 'F', 'P', 166, -0.824998, 0.000000, -0.414999},
  259.     {"Tahoma", 4, 1800.0, 'R', 'P', 161, -0.989997, -0.049998, -0.479999},
  260.     {"Savanna", 4, 1500.0, 'R', 'P', 175, -1.089998, 0.309998, -0.609999},
  261.     {"Bandito", 1, 1000.0, 'R', 'P', 148, -0.334998, 0.100000, -0.374998},
  262.     {"Freight Flat Trailer", 1, 5500.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  263.     {"Brown Streak Trailer", 1, 5500.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  264.     {"Kart", 1, 300.0, 'R', 'P', 94, 0.000000, 0.000000, 0.000000},
  265.     {"Mower", 1, 800.0, 'R', 'P', 61, 0.000000, 0.000000, 0.000000},
  266.     {"Dune", 2, 10000.0, '4', 'P', 111, 0.000000, 0.000000, 0.000000},
  267.     {"Sweeper", 1, 800.0, 'R', 'P', 61, 0.000000, 0.000000, 0.000000},
  268.     {"Broadway", 2, 1700.0, 'R', 'P', 159, -0.924997, 0.004999, -0.334998},
  269.     {"Tornado", 2, 1700.0, 'R', 'P', 159, -1.019999, -0.140000, -0.419999},
  270.     {"AT-400", 2, 60000.0, '4', 'P', 250, 0.000000, 0.000000, 0.000000},
  271.     {"DFT-30", 2, 5500.0, 'R', 'D', 131, -1.429998, -0.649999, -0.879998},
  272.     {"Huntley", 4, 2500.0, '4', 'P', 159, -1.014999, 0.000000, -0.484999},
  273.     {"Stafford", 4, 2200.0, 'R', 'P', 154, -1.089998, 0.014999, -0.474999},
  274.     {"BF-400", 2, 500.0, 'R', 'P', 200, 0.000000, 0.000000, 0.000000},
  275.     {"Newsvan", 4, 1900.0, 'R', 'D', 137, -0.984999, -0.194997, -0.709999},
  276.     {"Tug", 1, 800.0, 'R', 'P', 86, -0.674997, 0.259999, 0.129998},
  277.     {"Petrol Trailer", 1, 3800.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  278.     {"Emperor", 4, 1800.0, 'R', 'P', 154, -1.019999, -0.009998, -0.354999},
  279.     {"Wayfarer", 2, 800.0, 'R', 'P', 211, 0.000000, 0.000000, 0.000000},
  280.     {"Euros", 2, 1400.0, '4', 'P', 166, -1.009999, -0.064998, -0.534999},
  281.     {"Hotdog", 2, 5500.0, 'R', 'D', 109, -1.374997, 0.000000, -0.664999},
  282.     {"Club", 2, 1400.0, 'F', 'P', 164, -0.909999, 0.000000, -0.359999},
  283.     {"Freight Box Trailer", 1, 5500.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  284.     {"Article Trailer 3", 1, 3800.0, 'R', 'D', 0, 0.000000, 0.000000, 0.000000},
  285.     {"Andromada", 2, 40000.0, '4', 'P', 266, 0.000000, 0.000000, 0.000000},
  286.     {"Dodo", 2, 5000.0, '4', 'P', 135, 0.000000, 0.000000, 0.000000},
  287.     {"RC Cam", 1, 100.0, '4', 'E', 62, 0.000000, 0.000000, 0.000000},
  288.     {"Launch", 1, 2200.0, 'R', 'P', 118, 0.000000, 0.000000, 0.000000},
  289.     {"Police Car (LSPD)", 4, 1600.0, 'R', 'P', 177, -0.974999, 0.000000, -0.469998},
  290.     {"Police Car (SFPD)", 4, 1600.0, 'R', 'P', 177, -0.969999, 0.000000, -0.464998},
  291.     {"Police Car (LVPD)", 4, 1600.0, 'R', 'P', 177, -1.004999, -0.014999, -0.414999},
  292.     {"Ranger", 2, 2500.0, '4', 'D', 159, -1.019999, 0.115000, -0.684997},
  293.     {"Picador", 2, 1600.0, 'R', 'D', 152, -0.959999, 0.204998, -0.499998},
  294.     {"S.W.A.T.", 2, 5000.0, '4', 'D', 111, 0.000000, 0.000000, 0.000000},
  295.     {"Alpha", 2, 1500.0, 'R', 'P', 171, -1.024999, 0.000000, -0.549997},
  296.     {"Phoenix", 2, 1500.0, 'R', 'P', 173, -0.954999, 0.034999, -0.629998},
  297.     {"Glendale (destroyed)", 4, 1600.0, 'R', 'P', 148, -0.989997, -0.064998, -0.489998},
  298.     {"Sadler (destroyed)", 2, 1700.0, '4', 'D', 152, -0.904999, 0.009998, -0.409999},
  299.     {"Baggage Trailer A", 1, 1000.0, 'R', 'E', 0, 0.000000, 0.000000, 0.000000},
  300.     {"Baggage Trailer B", 1, 1000.0, 'R', 'E', 0, 0.000000, 0.000000, 0.000000},
  301.     {"Tug Stairs Trailer", 1, 1000.0, 'R', 'E', 0, 0.000000, 0.000000, 0.000000},
  302.     {"Boxville (burglary)", 4, 5500.0, 'R', 'D', 109, -1.149999, 0.269998, -0.654999},
  303.     {"Farm Trailer", 1, 400.0, 'R', 'E', 0, 0.000000, 0.000000, 0.000000},
  304.     {"Utility Trailer", 1, 1000.0, 'R', 'E', 0, 0.000000, 0.000000, 0.000000}
  305. };
  306.  
  307. static const vSync_gVehDefaultColors[212][19] = {
  308.     {16,4,1,123,1,113,1,101,1,75,1,62,1,40,1,36,1},                 // Landstalker
  309.     {16,41,41,47,47,52,52,66,66,74,74,87,87,91,91,113,113},         // Bravura
  310.     {16,10,10,13,13,22,22,30,30,39,39,90,90,98,98,110,110},         // Buffalo
  311.     {16,36,1,37,1,30,1,28,1,25,1,40,1,101,1,113,1},                 // Linerunner
  312.     {16,113,39,119,50,123,92,109,100,101,101,95,105,83,110,66,25},  // Perennial
  313.     {16,11,1,24,1,36,1,40,1,75,1,91,1,123,1,4,1},                   // Sentinel
  314.     {2,1,1},                                                        // Dumper
  315.     {2,3,1},                                                        // Firetruck
  316.     {2,26,26},                                                      // Trashmaster
  317.     {2,1,1},                                                        // Stretch
  318.     {16,4,1,9,1,10,1,25,1,36,1,40,1,45,1,84,1},                     // Manana
  319.     {16,12,1,64,1,123,1,116,1,112,1,106,1,80,1,75,1},               // Infernus
  320.     {16,9,1,10,8,11,1,25,8,27,1,29,8,30,1,37,8},                    // Voodoo
  321.     {16,87,1,88,1,91,1,105,1,109,1,119,1,4,1,25,1},                 // Pony
  322.     {16,25,1,28,1,43,1,67,1,72,1,9,1,95,1,24,1},                    // Mule
  323.     {16,20,1,25,1,36,1,40,1,62,1,75,1,92,1,0,1},                    // Cheetah
  324.     {2,1,3},                                                        // Ambulance
  325.     {2,0,0},                                                        // Leviathan
  326.     {16,119,119,117,227,114,114,108,108,95,95,81,81,61,61,41,41},   // Moonbeam
  327.     {16,45,75,47,76,33,75,13,76,54,75,69,76,59,75,87,76},           // Esperanto
  328.     {2,6,1},                                                        // Taxi
  329.     {16,4,1,13,1,25,1,30,1,36,1,40,1,75,1,95,1},                    // Washington
  330.     {14,96,25,97,25,101,25,111,31,113,36,83,57,67,59},              // Bobcat
  331.     {12,1,16,1,56,1,17,1,53,1,5,1,35},                              // Mr Whoopee
  332.     {16,1,0,2,2,3,2,3,6,6,16,15,30,24,53,35,61},                    // BF Injection
  333.     {2,43,0},                                                       // Hunter
  334.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Premier
  335.     {2,0,1},                                                        // Enforcer
  336.     {2,4,75},                                                       // Securicar
  337.     {16,12,12,13,13,14,14,1,2,2,1,1,3,3,1,10,10},                   // Banshee
  338.     {2,46,26},                                                      // Predator
  339.     {16,71,59,75,59,92,72,47,74,55,83,59,83,71,87,82,87},           // Bus
  340.     {2,43,0},                                                       // Rhino
  341.     {2,43,0},                                                       // Barracks
  342.     {14,1,1,12,12,2,2,6,6,4,4,46,46,53,53},                         // Hotknife
  343.     {2,1,1},                                                        // Trailer 1
  344.     {14,83,1,87,1,92,1,95,1,109,1,119,45,11,1},                     // Previon
  345.     {16,54,7,79,7,87,7,95,16,98,20,105,20,123,20,125,21},           // Coach
  346.     {2,6,76},                                                       // Cabbie
  347.     {16,57,8,8,17,43,21,54,38,67,8,37,78,65,79,25,78},              // Stallion
  348.     {16,34,34,32,32,20,20,110,110,66,66,84,84,118,118,121,121},     // Rumpo
  349.     {16,2,96,79,42,82,54,67,86,126,96,70,96,110,54,67,98},          // RC Bandit
  350.     {16,0,0,11,105,25,109,36,0,40,36,75,36,0,36,0,109},             // Romero
  351.     {16,4,1,20,1,24,1,25,1,36,1,40,1,54,1,84,1},                    // Packer
  352.     {12,32,36,32,42,32,53,32,66,32,14,32,32},                       // Monster
  353.     {16,34,34,35,35,37,37,39,39,41,41,43,43,45,45,47,47},           // Admiral
  354.     {0},                                                            // Squalo
  355.     {2,75,2},                                                       // Seasparrow
  356.     {2,3,6},                                                        // Pizzaboy
  357.     {2,1,74},                                                       // Tram
  358.     {2,1,1},                                                        // Trailer 2
  359.     {16,123,123,125,125,36,36,16,16,18,18,46,46,61,61,75,75},       // Turismo
  360.     {16,1,3,1,5,1,16,1,22,1,35,1,44,1,53,1,57},                     // Speeder
  361.     {2,56,56},                                                      // Reefer
  362.     {2,26,26},                                                      // Tropic
  363.     {16,84,15,84,58,84,31,32,74,43,31,1,31,77,31,32,74},            // Flatbed
  364.     {16,84,63,91,63,102,65,105,72,110,93,121,93,12,95,23,1},        // Yankee
  365.     {16,58,1,2,1,63,1,18,1,32,1,45,1,13,1,34,1},                    // Caddy
  366.     {16,91,1,101,1,109,1,113,1,4,1,25,1,30,1,36,1},                 // Solair
  367.     {16,26,26,28,28,44,44,51,51,57,57,72,72,106,106,112,112},       // Berkley's RC Van
  368.     {16,1,3,1,9,1,18,1,30,17,23,46,23,46,32,57,34},                 // Skimmer
  369.     {16,36,1,37,1,43,1,53,1,61,1,75,1,79,1,88,1},                   // PCJ-600
  370.     {16,12,12,13,13,14,14,1,2,2,1,1,3,3,1,10,10},                   // Faggio
  371.     {16,79,79,84,84,7,7,11,11,19,19,22,22,36,36,53,53},             // Freeway
  372.     {2,14,75},                                                      // RC Baron
  373.     {2,14,75},                                                      // RC Raider
  374.     {16,67,76,68,76,78,76,2,76,16,76,18,76,25,76,45,88},            // Glendale
  375.     {16,51,1,58,8,60,1,68,8,2,1,13,8,22,1,36,8},                    // Oceanic
  376.     {8,6,6,46,46,53,53,3,3},                                        // Sanchez
  377.     {2,1,3},                                                        // Sparrow
  378.     {2,43,0},                                                       // Patriot
  379.     {16,120,117,103,111,120,114,74,91,120,112,74,83,120,113,66,71}, // Quad
  380.     {4,56,15,56,53},                                                // Coastguard
  381.     {4,56,15,56,53},                                                // Dinghy
  382.     {16,97,1,81,1,105,1,110,1,91,1,74,1,84,1,83,1},                 // Hermes
  383.     {16,2,39,9,39,17,1,21,1,33,0,37,0,41,29,56,29},                 // Sabre
  384.     {16,6,7,7,6,1,6,89,91,119,117,103,102,77,87,71,77},             // Rustler
  385.     {16,92,1,94,1,101,1,121,1,0,1,22,1,36,1,75,1},                  // ZR-350
  386.     {16,72,1,66,1,59,1,45,1,40,1,39,1,35,1,20,1},                   // Walton
  387.     {16,27,36,59,36,60,35,55,41,54,31,49,23,45,32,40,29},           // Regina
  388.     {14,73,45,12,12,2,2,6,6,4,4,46,46,53,53},                       // Comet
  389.     {16,1,1,3,3,6,6,46,46,65,9,14,1,12,9,26,1},                     // BMX
  390.     {16,41,41,48,48,52,52,64,64,71,71,85,85,10,10,62,62},           // Burrito
  391.     {0},                                                            // Camper
  392.     {8,12,35,50,32,40,26,66,36},                                    // Marquis
  393.     {14,1,73,1,74,1,75,1,76,1,77,1,78,1,79},                        // Baggage
  394.     {2,1,1},                                                        // Dozer
  395.     {16,26,14,29,42,26,57,54,29,26,3,3,29,12,39,74,35},             // Maverick
  396.     {4,2,26,2,29},                                                  // News Chopper
  397.     {12,13,118,14,123,120,123,112,120,84,110,76,102},               // Rancher
  398.     {2,0,0},                                                        // FBI Rancher
  399.     {12,40,65,71,72,52,66,64,72,30,72,60,72},                       // Virgo
  400.     {16,30,26,77,26,81,27,24,55,28,56,49,59,52,69,71,107},          // Greenwood
  401.     {2,36,13},                                                      // Jetmax
  402.     {16,36,117,36,13,42,30,42,33,54,36,75,79,92,101,98,109},        // Hotring
  403.     {16,123,124,119,122,118,117,116,115,114,108,101,106,88,99,5,6}, // Sandking
  404.     {16,74,72,66,72,53,56,37,19,22,22,20,20,9,14,0,0},              // Blista Compact
  405.     {2,0,1},                                                        // Police Maverick
  406.     {16,11,123,13,120,20,117,24,112,27,107,36,105,37,107,43,93},    // Boxville
  407.     {16,109,25,109,32,112,32,10,32,30,44,32,52,84,66,84,69},        // Benson
  408.     {16,75,84,40,84,40,110,28,119,25,119,21,119,13,119,4,119},      // Mesa
  409.     {2,14,75},                                                      // RC Goblin
  410.     {16,7,94,36,88,51,75,53,75,58,67,75,67,75,61,79,62},            // Hotring Racer A
  411.     {16,83,66,87,74,87,75,98,83,101,100,103,101,117,116,123,36},    // Hotring Racer B
  412.     {16,51,39,57,38,45,29,34,9,65,9,14,1,12,9,26,1},                // Bloodring Banger
  413.     {12,13,118,14,123,120,123,112,120,84,110,76,102},               // Rancher Lure
  414.     {10,3,3,6,6,7,7,52,52,76,76},                                   // Super GT
  415.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Elegant
  416.     {2,1,1},                                                        // Journey
  417.     {16,7,1,74,1,61,1,16,1,25,1,30,1,36,1,53,1},                    // Bike
  418.     {16,43,43,46,46,39,39,28,28,16,16,6,6,5,5,2,2},                 // Mountain Bike
  419.     {16,3,90,4,90,7,68,8,66,12,60,27,97,34,51,37,51},               // Beagle
  420.     {16,17,39,15,123,32,112,45,88,52,71,57,67,61,96,96,96},         // Cropdust
  421.     {16,38,51,21,36,21,34,30,34,54,34,55,20,48,18,51,6},            // Stunt
  422.     {16,10,1,25,1,28,1,36,1,40,1,54,1,75,1,113,1},                  // Tanker
  423.     {16,13,76,24,77,63,78,42,76,54,77,39,78,11,76,62,77},           // Roadtrain
  424.     {16,116,1,119,1,122,1,4,1,9,1,24,1,27,1,36,1},                  // Nebula
  425.     {16,37,36,36,36,40,36,43,41,47,41,51,72,54,75,55,84},           // Majestic
  426.     {16,2,39,9,39,17,1,21,1,33,0,37,0,41,29,56,29},                 // Buccaneer
  427.     {2,1,1},                                                        // Shamal
  428.     {0},                                                            // Hydra
  429.     {16,74,74,75,13,87,118,92,3,115,118,25,118,36,0,118,118},       // FCR-900
  430.     {16,3,3,3,8,6,25,7,79,8,82,36,105,39,106,51,118},               // NRG-500
  431.     {0},                                                            // HPV1000
  432.     {0},                                                            // Cement Truck
  433.     {14,1,1,17,20,18,20,22,30,36,43,44,51,52,54},                   // Tow Truck
  434.     {16,2,39,9,39,17,1,21,1,33,0,37,0,41,29,56,29},                 // Fortune
  435.     {16,52,1,53,1,66,1,75,1,76,1,81,1,95,1,109,1},                  // Cadrona
  436.     {0},                                                            // FBI Truck
  437.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Willard
  438.     {16,110,1,111,1,112,1,114,1,119,1,122,1,4,1,13,1},              // Forklift
  439.     {12,2,35,36,2,51,53,91,2,11,22,40,35},                          // Tractor
  440.     {0},                                                            // Combine
  441.     {16,73,1,74,1,75,1,77,1,79,1,83,1,84,1,91,1},                   // Feltzer
  442.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Remington
  443.     {16,3,1,28,1,31,1,55,1,66,1,97,1,123,1,118,1},                  // Slamvan
  444.     {16,9,1,12,1,26,96,30,96,32,1,37,1,57,96,71,96},                // Blade
  445.     {2,1,1},                                                        // Freight
  446.     {2,1,1},                                                        // Streak
  447.     {14,96,67,86,70,79,74,70,86,61,98,75,75,75,91},                 // Vortex
  448.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Vincent
  449.     {16,51,1,58,8,60,1,68,8,2,1,13,8,22,1,36,8},                    // Bullet
  450.     {16,13,118,24,118,31,93,32,92,45,92,113,92,119,113,122,113},    // Clover
  451.     {16,76,8,32,8,43,8,67,8,11,11,8,90,2,2,83,13},                  // Sadler
  452.     {2,3,1},                                                        // Firetruck LA
  453.     {16,50,1,47,1,44,96,40,96,39,1,30,1,28,96,9,96},                // Hustler
  454.     {16,62,37,78,38,2,62,3,87,2,78,113,78,119,62,7,78},             // Intruder
  455.     {16,122,1,123,1,125,1,10,1,24,1,37,1,55,1,66,1},                // Primo
  456.     {2,1,1},                                                        // Cargobob
  457.     {16,74,39,72,39,75,39,79,39,83,36,84,36,89,35,91,35},           // Tampa
  458.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Sunrise
  459.     {16,67,1,72,1,75,1,83,1,91,1,101,1,109,1,20,1},                 // Merit
  460.     {6,56,56,49,49,26,124},                                         // Utility
  461.     {16,38,9,55,23,61,74,71,87,91,87,98,114,102,119,111,3},         // Nevada
  462.     {16,53,32,15,32,45,32,34,30,65,32,14,32,12,32,43,32},           // Yosemite
  463.     {16,51,1,58,1,60,1,68,1,2,1,13,1,22,1,36,1},                    // Windsor
  464.     {2,1,1},                                                        // Monster A
  465.     {2,1,1},                                                        // Monster B
  466.     {16,112,1,116,1,117,1,24,1,30,1,35,1,36,1,40,1},                // Uranus
  467.     {16,51,1,58,8,60,1,68,8,2,1,13,8,22,1,36,8},                    // Jester
  468.     {16,52,39,9,39,17,1,21,1,33,0,37,0,41,29,56,29},                // Sultan
  469.     {16,57,8,8,17,43,21,54,38,67,8,37,78,65,79,25,78},              // Stratum
  470.     {16,36,1,35,1,17,1,11,1,116,1,113,1,101,1,92,1},                // Elegy
  471.     {2,1,6},                                                        // Raindance
  472.     {0},                                                            // RC Tiger
  473.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Flash
  474.     {16,109,1,30,8,95,1,84,8,83,1,72,8,71,1,52,8},                  // Tahoma
  475.     {16,97,96,88,64,90,96,93,64,97,96,99,81,102,114,114,1},         // Savanna
  476.     {16,2,39,9,39,17,1,21,1,33,0,37,0,41,29,56,29},                 // Bandito
  477.     {2,1,1},                                                        // Freight Flat
  478.     {2,1,1},                                                        // Streak Carriage
  479.     {12,2,35,36,2,51,53,91,2,11,22,40,35},                          // Kart
  480.     {16,94,1,101,1,116,1,117,1,4,1,25,1,30,1,37,1},                 // Mower
  481.     {16,91,38,115,43,85,6,79,7,78,8,77,18,79,18,86,24},             // Duneride
  482.     {2,26,26},                                                      // Sweeper
  483.     {16,12,1,19,96,31,64,25,96,38,1,51,96,57,1,66,96},              // Broadway
  484.     {16,67,1,68,96,72,1,74,8,75,96,76,8,79,1,84,96},                // Tornado
  485.     {12,1,3,8,7,8,10,8,16,23,31,40,44},                             // AT-400
  486.     {2,1,1},                                                        // DFT-30
  487.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Huntley
  488.     {18,92,92,81,81,67,67,66,66,61,61,53,53,51,51,47,47,43,43},     // Stafford
  489.     {16,54,1,58,1,66,1,72,1,75,1,87,1,101,1,36,1},                  // BF-400
  490.     {16,41,10,41,20,49,11,56,123,110,113,112,116,114,118,119,101},  // Newsvan
  491.     {2,1,1},                                                        // Tug
  492.     {2,1,1},                                                        // Trailer 3
  493.     {16,37,37,42,42,53,53,62,62,7,7,10,10,11,11,15,15},             // Emperor
  494.     {16,119,1,122,1,8,1,10,1,13,1,25,1,27,1,32,1},                  // Wayfarer
  495.     {16,36,1,40,1,43,1,53,1,72,1,75,1,95,1,101,1},                  // Euros
  496.     {2,1,1},                                                        // Hotdog
  497.     {16,37,37,31,31,23,23,22,22,7,7,124,124,114,114,112,112},       // Club
  498.     {0},                                                            // Freight Carriage
  499.     {2,1,1},                                                        // Trailer 3
  500.     {2,1,1},                                                        // Andromada
  501.     {16,51,1,58,8,60,1,68,8,2,1,13,8,22,1,36,8},                    // Dodo
  502.     {0},                                                            // RC Cam
  503.     {2,112,20},                                                     // Launch
  504.     {2,0,1},                                                        // Police Car (LSPD)
  505.     {2,0,1},                                                        // Police Car (SFPD)
  506.     {2,0,1},                                                        // Police Car (LVPD)
  507.     {2,0,1},                                                        // Police Ranger
  508.     {16,81,8,32,8,43,8,67,8,11,11,8,90,2,2,83,13},                  // Picador
  509.     {2,1,1},                                                        // S.W.A.T. Van
  510.     {16,58,1,69,1,75,77,18,1,32,1,45,45,13,1,34,1},                 // Alpha
  511.     {16,58,1,69,1,75,77,18,1,32,1,45,45,13,1,34,1},                 // Phoenix
  512.     {16,67,76,68,76,78,76,2,76,16,76,18,76,25,76,45,88},            // Glendale shit
  513.     {16,61,8,32,8,43,8,67,8,11,11,8,90,2,2,83,13},                  // Sadler shit
  514.     {0},                                                            // Luggage Trailer A
  515.     {0},                                                            // Luggage Trailer B
  516.     {2,1,1},                                                        // Stair Trailer
  517.     {2,36,36},                                                      // Boxville 2
  518.     {0},                                                            // Farm Plow
  519.     {0}                                                             // Utility Trailer
  520. };
  521.  
  522. static const vSync_gVehFrontBullbars[5] = {
  523.     1100, 1115, 1116, 1123, 1125
  524. };
  525.  
  526.  
  527. // ================================== [HOOKED FUNCTIONS] ================================== //
  528. stock vSync_CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren=0)
  529. {
  530.     // Check vehicle's model ID.
  531.     if(!(400 <= modelid <= 611))
  532.     {
  533.         return INVALID_VEHICLE_ID;
  534.     }
  535.    
  536.     // Add siren to the Firetruck (ladder variant), by default it's disabled.
  537.     if(modelid == 544)
  538.     {
  539.         addsiren = 1;
  540.     }
  541.  
  542.     // Generate random colors (if it proceeds)
  543.     if((color1 == -1 || color2 == -1) && vSync_gVehDefaultColors[modelid - 400][0] != 0)
  544.     {
  545.  
  546.         new rand_col = random(vSync_gVehDefaultColors[modelid - 400][0]) + 1;
  547.  
  548.         if(!isodd(rand_col))
  549.         {
  550.             rand_col--;
  551.         }
  552.  
  553.         if(color1 == -1)
  554.         {
  555.             color1 = vSync_gVehDefaultColors[modelid - 400][rand_col];
  556.         }
  557.  
  558.         if(color2 == -1)
  559.         {
  560.             color2 = vSync_gVehDefaultColors[modelid - 400][rand_col + 1];
  561.         }
  562.     }
  563.  
  564.     new vehicleid = CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren);
  565.  
  566.     // Check vehicle's ID (to avoid using INVALID_VEHICLE_ID as array index).
  567.     if(1 <= vehicleid <= MAX_VEHICLES)
  568.     {
  569.         SetVehicleHealth(vehicleid, 999.0);
  570.  
  571.         vSync_gVehicleInternal[vehicleid - 1][vSync_Color1] = color1;
  572.         vSync_gVehicleInternal[vehicleid - 1][vSync_Color2] = color2;
  573.  
  574.         vSync_gVehicleInternal[vehicleid - 1][vSync_OrgCol1] = color1;
  575.         vSync_gVehicleInternal[vehicleid - 1][vSync_OrgCol2] = color2;
  576.        
  577.         vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob] = INVALID_PAINTJOB_ID;
  578.         vSync_gVehicleInternal[vehicleid - 1][vSync_Interior] = 0;
  579.  
  580.         vSync_gVehicleInternal[vehicleid - 1][vSync_Siren] = addsiren;
  581.  
  582.         vSync_gVehicleInternal[vehicleid - 1][vSync_Stereo] = 0;
  583.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][0] = 0;
  584.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][1] = 0;
  585.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][0] = 0;
  586.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][1] = 0;
  587.  
  588.         strcpy(vSync_gVehicleInternal[vehicleid - 1][vSync_NumberP], "XYZSR998", MAX_VEHICLE_NUMBERPLATE);
  589.  
  590.         CallLocalFunction("OnVehicleCreated", "i", vehicleid);
  591.     }
  592.     return vehicleid;
  593. }
  594. #if defined _ALS_CreateVehicle
  595.     #undef CreateVehicle
  596. #else
  597.     #define _ALS_CreateVehicle
  598. #endif
  599. #define CreateVehicle vSync_CreateVehicle
  600.  
  601. stock vSync_AddStaticVehicle(modelid, Float:x, Float:y, Float:z, Float:rotation, color1, color2)
  602. {
  603.     // Check vehicle's model ID.
  604.     if(!(400 <= modelid <= 611))
  605.     {
  606.         return INVALID_VEHICLE_ID;
  607.     }
  608.  
  609.     // Generate random colors (if it proceeds)
  610.     if((color1 == -1 || color2 == -1) && vSync_gVehDefaultColors[modelid - 400][0] != 0)
  611.     {
  612.         new rand_col = random(vSync_gVehDefaultColors[modelid - 400][0]) + 1;
  613.  
  614.         if(!isodd(rand_col))
  615.         {
  616.             rand_col--;
  617.         }
  618.  
  619.         if(color1 == -1)
  620.         {
  621.             color1 = vSync_gVehDefaultColors[modelid - 400][rand_col];
  622.         }
  623.  
  624.         if(color2 == -1)
  625.         {
  626.             color2 = vSync_gVehDefaultColors[modelid - 400][rand_col + 1];
  627.         }
  628.     }
  629.  
  630.     new vehicleid = AddStaticVehicle(modelid, Float:x, Float:y, Float:z, Float:rotation, color1, color2);
  631.  
  632.     // Check vehicle's ID (to avoid using INVALID_VEHICLE_ID as array index).
  633.     if(1 <= vehicleid <= MAX_VEHICLES)
  634.     {
  635.         SetVehicleHealth(vehicleid, 999.0);
  636.        
  637.         vSync_gVehicleInternal[vehicleid - 1][vSync_Color1] = color1;
  638.         vSync_gVehicleInternal[vehicleid - 1][vSync_Color2] = color2;
  639.  
  640.         vSync_gVehicleInternal[vehicleid - 1][vSync_OrgCol1] = color1;
  641.         vSync_gVehicleInternal[vehicleid - 1][vSync_OrgCol2] = color2;
  642.        
  643.         vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob] = INVALID_PAINTJOB_ID;
  644.         vSync_gVehicleInternal[vehicleid - 1][vSync_Interior] = 0;
  645.  
  646.         vSync_gVehicleInternal[vehicleid - 1][vSync_Siren] = addsiren;
  647.  
  648.         vSync_gVehicleInternal[vehicleid - 1][vSync_Stereo] = 0;
  649.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][0] = 0;
  650.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][1] = 0;
  651.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][0] = 0;
  652.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][1] = 0;
  653.  
  654.         strcpy(vSync_gVehicleInternal[vehicleid - 1][vSync_NumberP], "XYZSR998", MAX_VEHICLE_NUMBERPLATE);
  655.  
  656.         CallLocalFunction("OnVehicleCreated", "i", vehicleid);
  657.     }
  658.     return vehicleid;
  659. }
  660. #if defined _ALS_AddStaticVehicle
  661.     #undef AddStaticVehicle
  662. #else
  663.     #define _ALS_AddStaticVehicle
  664. #endif
  665. #define AddStaticVehicle vSync_AddStaticVehicle
  666.  
  667. stock vSync_AddStaticVehicleEx(modelid, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren=0)
  668. {
  669.     // Check vehicle's model ID.
  670.     if(!(400 <= modelid <= 611))
  671.     {
  672.         return INVALID_VEHICLE_ID;
  673.     }
  674.    
  675.     // Add siren to the Firetruck (ladder variant), by default it's disabled.
  676.     if(modelid == 544)
  677.     {
  678.         addsiren = 1;
  679.     }
  680.  
  681.     // Generate random colors (if it proceeds)
  682.     if((color1 == -1 || color2 == -1) && vSync_gVehDefaultColors[modelid - 400][0] != 0)
  683.     {
  684.         new rand_col = random(vSync_gVehDefaultColors[modelid - 400][0]) + 1;
  685.  
  686.         if(!isodd(rand_col))
  687.         {
  688.             rand_col--;
  689.         }
  690.  
  691.         if(isodd(rand_col))
  692.         {
  693.             rand_col--;
  694.         }
  695.  
  696.         if(color1 == -1)
  697.         {
  698.             color1 = vSync_gVehDefaultColors[modelid - 400][rand_col];
  699.         }
  700.  
  701.         if(color2 == -1)
  702.         {
  703.             color2 = vSync_gVehDefaultColors[modelid - 400][rand_col + 1];
  704.         }
  705.     }
  706.  
  707.     new vehicleid = AddStaticVehicleEx(modelid, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren);
  708.  
  709.     // Check vehicle's ID (to avoid using INVALID_VEHICLE_ID as array index).
  710.     if(1 <= vehicleid <= MAX_VEHICLES)
  711.     {
  712.         SetVehicleHealth(vehicleid, 999.0);
  713.  
  714.         vSync_gVehicleInternal[vehicleid - 1][vSync_Color1] = color1;
  715.         vSync_gVehicleInternal[vehicleid - 1][vSync_Color2] = color2;
  716.  
  717.         vSync_gVehicleInternal[vehicleid - 1][vSync_OrgCol1] = color1;
  718.         vSync_gVehicleInternal[vehicleid - 1][vSync_OrgCol2] = color2;
  719.        
  720.         vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob] = INVALID_PAINTJOB_ID;
  721.         vSync_gVehicleInternal[vehicleid - 1][vSync_Interior] = 0;
  722.  
  723.         vSync_gVehicleInternal[vehicleid - 1][vSync_Siren] = addsiren;
  724.  
  725.         vSync_gVehicleInternal[vehicleid - 1][vSync_Stereo] = 0;
  726.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][0] = 0;
  727.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][1] = 0;
  728.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][0] = 0;
  729.         vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][1] = 0;
  730.  
  731.         strcpy(vSync_gVehicleInternal[vehicleid - 1][vSync_NumberP], "XYZSR998", MAX_VEHICLE_NUMBERPLATE);
  732.  
  733.         CallLocalFunction("OnVehicleCreated", "i", vehicleid);
  734.     }
  735.     return vehicleid;
  736. }
  737. #if defined _ALS_AddStaticVehicleEx
  738.     #undef AddStaticVehicleEx
  739. #else
  740.     #define _ALS_AddStaticVehicleEx
  741. #endif
  742. #define AddStaticVehicleEx vSync_AddStaticVehicleEx
  743.  
  744. stock vSync_SetVehicleNumberPlate(vehicleid, numberplate[])
  745. {
  746.     if(1 <= vehicleid <= MAX_VEHICLES)
  747.     {
  748.         strcpy(vSync_gVehicleInternal[vehicleid - 1][vSync_NumberP], numberplate, MAX_VEHICLE_NUMBERPLATE);
  749.         return SetVehicleNumberPlate(vehicleid, numberplate);
  750.     }
  751.     return 0;
  752. }
  753. #if defined _ALS_SetVehicleNumberPlate
  754.     #undef SetVehicleNumberPlate
  755. #else
  756.     #define _ALS_SetVehicleNumberPlate
  757. #endif
  758. #define SetVehicleNumberPlate vSync_SetVehicleNumberPlate
  759.  
  760. stock vSync_LinkVehicleToInterior(vehicleid, interior)
  761. {
  762.     if(1 <= vehicleid <= MAX_VEHICLES)
  763.     {
  764.         vSync_gVehicleInternal[vehicleid - 1][vSync_Interior] = interior;
  765.         return LinkVehicleToInterior(vehicleid, interior);
  766.     }
  767.     return 0;
  768. }
  769. #if defined _ALS_LinkVehicleToInterior
  770.     #undef LinkVehicleToInterior
  771. #else
  772.     #define _ALS_LinkVehicleToInterior
  773. #endif
  774. #define LinkVehicleToInterior vSync_LinkVehicleToInterior
  775.  
  776. stock vSync_ChangeVehicleColor(vehicleid, color1, color2)
  777. {
  778.     new modelid = GetVehicleModel(vehicleid);
  779.  
  780.     if(!(400 <= modelid <= 611))
  781.     {
  782.         return 0;
  783.     }
  784.  
  785.     // Generate random colors (if it proceeds)
  786.     if((color1 == -1 || color2 == -1) && vSync_gVehDefaultColors[modelid - 400][0] != 0)
  787.     {
  788.         new rand_col = random(vSync_gVehDefaultColors[modelid - 400][0]) + 1;
  789.  
  790.         if(!isodd(rand_col))
  791.         {
  792.             rand_col--;
  793.         }
  794.  
  795.         if(color1 == -1)
  796.         {
  797.             color1 = vSync_gVehDefaultColors[modelid - 400][rand_col];
  798.         }
  799.  
  800.         if(color2 == -1)
  801.         {
  802.             color2 = vSync_gVehDefaultColors[modelid - 400][rand_col + 1];
  803.         }
  804.     }
  805.  
  806.     vSync_gVehicleInternal[vehicleid - 1][vSync_Color1] = color1;
  807.     vSync_gVehicleInternal[vehicleid - 1][vSync_Color2] = color2;
  808.  
  809.     return ChangeVehicleColor(vehicleid, vSync_gVehicleInternal[vehicleid - 1][vSync_Color1], vSync_gVehicleInternal[vehicleid - 1][vSync_Color2]);
  810. }
  811. #if defined _ALS_ChangeVehicleColor
  812.     #undef ChangeVehicleColor
  813. #else
  814.     #define _ALS_ChangeVehicleColor
  815. #endif
  816. #define ChangeVehicleColor vSync_ChangeVehicleColor
  817.  
  818. stock vSync_ChangeVehiclePaintjob(vehicleid, paintjobid)
  819. {
  820.     if(1 <= vehicleid <= MAX_VEHICLES)
  821.     {
  822.         vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob] = paintjobid;
  823.         ChangeVehiclePaintjob(vehicleid, vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob]);
  824.         ChangeVehicleColor(vehicleid, vSync_gVehicleInternal[vehicleid - 1][vSync_Color1], vSync_gVehicleInternal[vehicleid - 1][vSync_Color2]);
  825.         return 1;
  826.     }
  827.     return 1;
  828. }
  829. #if defined _ALS_ChangeVehiclePaintjob
  830.     #undef ChangeVehiclePaintjob
  831. #else
  832.     #define _ALS_ChangeVehiclePaintjob
  833. #endif
  834. #define ChangeVehiclePaintjob vSync_ChangeVehiclePaintjob
  835.  
  836. stock vSync_GetVehicleComponentType(componentid)
  837. {
  838.     if(IsComponentFrontBullbar(componentid))
  839.     {
  840.         return CARMODTYPE_FRONT_BULLBAR;
  841.     }
  842.     else if(IsComponentRearBullbar(componentid))
  843.     {
  844.         return CARMODTYPE_REAR_BULLBAR;
  845.     }
  846.     return GetVehicleComponentType(componentid);
  847. }
  848. #if defined _ALS_GetVehicleComponentType
  849.     #undef GetVehicleComponentType
  850. #else
  851.     #define _ALS_GetVehicleComponentType
  852. #endif
  853. #define GetVehicleComponentType vSync_GetVehicleComponentType
  854.  
  855. stock vSync_GetVehicleComponentInSlot(vehicleid, slot)
  856. {
  857.     if(1 <= vehicleid <= MAX_VEHICLES)
  858.     {
  859.         switch(slot)
  860.         {
  861.             case CARMODTYPE_STEREO:
  862.             {
  863.                 return vSync_gVehicleInternal[vehicleid - 1][vSync_Stereo];
  864.             }
  865.             case CARMODTYPE_FRONT_BUMPER:
  866.             {
  867.                 return vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][0];
  868.             }
  869.             case CARMODTYPE_REAR_BUMPER:
  870.             {
  871.                 return vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][1];
  872.             }
  873.             case CARMODTYPE_FRONT_BULLBAR:
  874.             {
  875.                 return vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][0];
  876.             }
  877.             case CARMODTYPE_REAR_BULLBAR:
  878.             {
  879.                 return vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][1];
  880.             }
  881.         }
  882.         return GetVehicleComponentInSlot(vehicleid, slot);
  883.     }
  884.     return 0;
  885. }
  886. #if defined _ALS_GetVehicleComponentInSlot
  887.     #undef GetVehicleComponentInSlot
  888. #else
  889.     #define _ALS_GetVehicleComponentInSlot
  890. #endif
  891. #define GetVehicleComponentInSlot vSync_GetVehicleComponentInSlot
  892.  
  893. stock vSync_RemoveVehicleComponent(vehicleid, componentid)
  894. {
  895.     if(1 <= vehicleid <= MAX_VEHICLES)
  896.     {
  897.         switch(GetVehicleComponentType(componentid))
  898.         {
  899.             case CARMODTYPE_STEREO:
  900.             {
  901.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Stereo] = 0;
  902.             }
  903.             case CARMODTYPE_FRONT_BUMPER:
  904.             {
  905.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][0];
  906.             }
  907.             case CARMODTYPE_REAR_BUMPER:
  908.             {
  909.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][1];
  910.             }
  911.             case CARMODTYPE_FRONT_BULLBAR:
  912.             {
  913.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][0];
  914.             }
  915.             case CARMODTYPE_REAR_BULLBAR:
  916.             {
  917.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][1];
  918.             }
  919.         }
  920.         return RemoveVehicleComponent(vehicleid, componentid);
  921.     }
  922.     return 0;
  923. }
  924. #if defined _ALS_RemoveVehicleComponent
  925.     #undef RemoveVehicleComponent
  926. #else
  927.     #define _ALS_RemoveVehicleComponent
  928. #endif
  929. #define RemoveVehicleComponent vSync_RemoveVehicleComponent
  930.  
  931. stock vSync_DestroyVehicle(vehicleid)
  932. {
  933.     if(1 <= vehicleid <= MAX_VEHICLES)
  934.     {
  935.         SetVehicleNeonLights(vehicleid, false);
  936.         return DestroyVehicle(vehicleid);
  937.     }
  938.     return 0;
  939. }
  940. #if defined _ALS_DestroyVehicle
  941.     #undef DestroyVehicle
  942. #else
  943.     #define _ALS_DestroyVehicle
  944. #endif
  945. #define DestroyVehicle vSync_DestroyVehicle
  946.  
  947.  
  948. // ================================== [HOOKED CALLBACKS] ================================== //
  949. hook OnPlayerConnect(playerid)
  950. {
  951.     Bit_Vet(vSync_pInsideModShop, playerid);
  952.     Bit_Vet(vSync_pBuyingPaintjob, playerid);
  953.     return 1;
  954. }
  955.  
  956. hook OnPlayerUpdate(playerid)
  957. {
  958.     if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  959.     {
  960.         new Float:v_health;
  961.         new vehicleid = GetPlayerVehicleID(playerid);
  962.  
  963.         GetVehicleHealth(vehicleid, v_health);
  964.  
  965.         if(v_health >= 1000.0)
  966.         {
  967.             SetVehicleHealth(vehicleid, 999.0);
  968.  
  969.             if(IsPlayerInsidePNS(playerid))
  970.             {
  971.                 ChangeVehicleColor(vehicleid, -1, -1);
  972.                 CallRemoteFunction("OnVehicleRespray", "iiii", playerid, vehicleid, vSync_gVehicleInternal[vehicleid - 1][vSync_Color1], vSync_gVehicleInternal[vehicleid - 1][vSync_Color2]);
  973.             }
  974.         }
  975.     }
  976.     return 1;
  977. }
  978.  
  979. hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  980. {
  981.     if(RELEASED(KEY_SPRINT))
  982.     {
  983.         if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && Bit_Get(vSync_pBuyingPaintjob, playerid) && GetTickDiff(GetTickCount(), vSync_pTick[playerid]) > 50 && GetPlayerMoney(playerid) >= 500)
  984.         {
  985.             new vehicleid = GetPlayerVehicleID(playerid);
  986.  
  987.             Bit_Vet(vSync_pBuyingPaintjob, playerid);
  988.  
  989.             vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob] = vSync_pPaintjobID{playerid};
  990.             CallLocalFunction("OnVehicleChangePaintjob", "iii", playerid, vehicleid, vSync_pPaintjobID{playerid});
  991.         }
  992.     }
  993.     else if(RELEASED(KEY_SECONDARY_ATTACK))
  994.     {
  995.         if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && Bit_Get(vSync_pBuyingPaintjob, playerid))
  996.         {
  997.             Bit_Vet(vSync_pBuyingPaintjob, playerid);
  998.         }
  999.     }
  1000.     return 1;
  1001. }
  1002.  
  1003. hook OnEnterExitModShop(playerid, enterexit, interiorid)
  1004. {
  1005.     new vehicleid = GetPlayerVehicleID(playerid);
  1006.     new max_passengers = GetVehicleSeats(GetVehicleModel(vehicleid));
  1007.     new count_passengers;
  1008.  
  1009.     if(enterexit)
  1010.     {
  1011.         Bit_Let(vSync_pInsideModShop, playerid);
  1012.         SetVehicleVirtualWorld(vehicleid, playerid);
  1013.  
  1014.         foreach(new x : Player)
  1015.         {
  1016.             if(GetPlayerVehicleID(x) == vehicleid)
  1017.             {
  1018.                 SetPlayerVirtualWorld(x, playerid);
  1019.                 count_passengers++;
  1020.  
  1021.                 if(count_passengers >= max_passengers)
  1022.                 {
  1023.                     break;
  1024.                 }
  1025.             }
  1026.         }
  1027.     }
  1028.     else
  1029.     {
  1030.         Bit_Vet(vSync_pInsideModShop, playerid);
  1031.         SetVehicleVirtualWorld(vehicleid, 0);
  1032.  
  1033.         foreach(new x : Player)
  1034.         {
  1035.             if(GetPlayerVehicleID(x) == vehicleid)
  1036.             {
  1037.                 SetPlayerVirtualWorld(x, 0);
  1038.                 count_passengers++;
  1039.  
  1040.                 if(count_passengers >= max_passengers)
  1041.                 {
  1042.                     break;
  1043.                 }
  1044.             }
  1045.         }
  1046.     }
  1047.     return 1;
  1048. }
  1049.  
  1050. hook OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  1051. {
  1052.     if(paintjobid <= 2 && paintjobid != vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob])
  1053.     {
  1054.         vSync_pTick[playerid] = GetTickCount();
  1055.         vSync_pPaintjobID{playerid} = paintjobid;
  1056.         Bit_Let(vSync_pBuyingPaintjob, playerid);
  1057.     }
  1058.     return 1;
  1059. }
  1060.  
  1061. hook OnVehicleRespray(playerid, vehicleid, color1, color2)
  1062. {
  1063.     if(Bit_Get(vSync_pInsideModShop, playerid) || (color1 == vSync_gVehicleInternal[vehicleid - 1][vSync_Color1] && color2 == vSync_gVehicleInternal[vehicleid - 1][vSync_Color2] && !IsPlayerInsidePNS(playerid)))
  1064.     {
  1065.         return -1;
  1066.     }
  1067.  
  1068.     vSync_gVehicleInternal[vehicleid - 1][vSync_Color1] = color1;
  1069.     vSync_gVehicleInternal[vehicleid - 1][vSync_Color2] = color2;
  1070.     return 1;
  1071. }
  1072.  
  1073. hook OnVehicleSpawn(vehicleid)
  1074. {
  1075.     vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob] = 3;
  1076.  
  1077.     vSync_gVehicleInternal[vehicleid - 1][vSync_Stereo] = 0;
  1078.     vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][0] = 0;
  1079.     vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][1] = 0;
  1080.     vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][0] = 0;
  1081.     vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][1] = 0;
  1082.  
  1083.     ChangeVehicleColor(vehicleid, vSync_gVehicleInternal[vehicleid - 1][vSync_OrgCol1], vSync_gVehicleInternal[vehicleid - 1][vSync_OrgCol2]);
  1084.     return 1;
  1085. }
  1086.  
  1087. hook OnVehicleMod(playerid, vehicleid, componentid)
  1088. {
  1089.     switch(GetVehicleComponentType(componentid))
  1090.     {
  1091.         case CARMODTYPE_STEREO:
  1092.         {
  1093.             vSync_gVehicleInternal[vehicleid - 1][vSync_Stereo] = componentid;
  1094.         }
  1095.         case CARMODTYPE_FRONT_BUMPER:
  1096.         {
  1097.             vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][0] = componentid;
  1098.         }
  1099.         case CARMODTYPE_REAR_BUMPER:
  1100.         {
  1101.             vSync_gVehicleInternal[vehicleid - 1][vSync_Bumpers][1] = componentid;
  1102.         }
  1103.         case CARMODTYPE_FRONT_BULLBAR:
  1104.         {
  1105.             vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][0] = componentid;
  1106.         }
  1107.         case CARMODTYPE_REAR_BULLBAR:
  1108.         {
  1109.             vSync_gVehicleInternal[vehicleid - 1][vSync_Bullbars][1] = componentid;
  1110.         }
  1111.     }
  1112.     return 1;
  1113. }
  1114.  
  1115.  
  1116. // ================================== [NEW FUNCTIONS] ================================== //
  1117. stock GetVehicleName(vehicleid, name[], len = sizeof(name))
  1118. {
  1119.     new modelid = GetVehicleModel(vehicleid);
  1120.  
  1121.     if(400 <= modelid <= 611)
  1122.     {
  1123.         strcpy(name, vSync_VehicleInfo[modelid - 400][Name], len);
  1124.     }
  1125.     return strlen(name);
  1126. }
  1127.  
  1128. stock GetVehicleColor(vehicleid, &color1, &color2)
  1129. {
  1130.     if(1 <= vehicleid <= MAX_VEHICLES)
  1131.     {
  1132.         color1 = vSync_gVehicleInternal[vehicleid - 1][vSync_Color1];
  1133.         color2 = vSync_gVehicleInternal[vehicleid - 1][vSync_Color2];
  1134.         return 1;
  1135.     }
  1136.     return 0;
  1137. }
  1138.  
  1139. stock GetVehiclePaintjob(vehicleid)
  1140. {
  1141.     if(1 <= vehicleid <= MAX_VEHICLES)
  1142.     {
  1143.         return vSync_gVehicleInternal[vehicleid - 1][vSync_Paintjob];
  1144.     }
  1145.     return -1;
  1146. }
  1147.  
  1148. stock GetVehicleNumberPlate(vehicleid, dest[], len = sizeof(dest))
  1149. {
  1150.     if(1 <= vehicleid <= MAX_VEHICLES)
  1151.     {
  1152.         strcpy(dest, vSync_gVehicleInternal[vehicleid - 1][vSync_NumberP], len);
  1153.     }
  1154.     return strlen(dest);
  1155. }
  1156.  
  1157. stock GetVehicleInterior(vehicleid)
  1158. {
  1159.     if(1 <= vehicleid <= MAX_VEHICLES)
  1160.     {
  1161.         return vSync_gVehicleInternal[vehicleid - 1][vSync_Interior];
  1162.     }
  1163.     return 0;
  1164. }
  1165.  
  1166. stock GetVehicleSiren(vehicleid)
  1167. {
  1168.     if(1 <= vehicleid <= MAX_VEHICLES)
  1169.     {
  1170.         return vSync_gVehicleInternal[vehicleid - 1][vSync_Siren];
  1171.     }
  1172.     return 0;
  1173. }
  1174.  
  1175. stock GetVehicleSeats(modelid)
  1176. {
  1177.     if(400 <= modelid <= 611)
  1178.     {
  1179.         return vSync_VehicleInfo[modelid - 400][Seats];
  1180.     }
  1181.     return -1;
  1182. }
  1183.  
  1184. stock GetVehicleMaxSpeed(modelid)
  1185. {
  1186.     if(400 <= modelid <= 611)
  1187.     {
  1188.         return vSync_VehicleInfo[modelid - 400][MaxSpeed];
  1189.     }
  1190.     return 0;
  1191. }
  1192.  
  1193. stock Float:GetVehicleWeight(modelid)
  1194. {
  1195.     if(400 <= modelid <= 611)
  1196.     {
  1197.         return vSync_VehicleInfo[modelid - 400][Mass];
  1198.     }
  1199.     return 0.0;
  1200. }
  1201.  
  1202. stock GetVehicleSpeed(vehicleid)
  1203. {
  1204.     new Float:v_x;
  1205.     new Float:v_y;
  1206.     new Float:v_z;
  1207.  
  1208.     GetVehicleVelocity(vehicleid, v_x, v_y, v_z);
  1209.  
  1210.     return floatround(floatsqroot((v_x * v_x) + (v_y * v_y) + (v_z * v_z)) * 181.5);
  1211. }
  1212.  
  1213. stock GetVehicleEngineType(modelid)
  1214. {
  1215.     if(400 <= modelid <= 611)
  1216.     {
  1217.         if(modelid == 481 || modelid == 509 || modelid == 510) // Bikes
  1218.         {
  1219.             return 'H'; // Human-powered vehicle
  1220.         }
  1221.         else
  1222.         {
  1223.             return vSync_VehicleInfo[modelid - 400][EngineType];
  1224.         }
  1225.     }
  1226.     return 0;
  1227. }
  1228.  
  1229. stock GetVehicleDriveType(modelid)
  1230. {
  1231.     if(400 <= modelid <= 611)
  1232.     {
  1233.         if(modelid == 481 || modelid == 509 || modelid == 510) // Bikes
  1234.         {
  1235.             return 'H'; // Human-powered vehicle
  1236.         }
  1237.         else
  1238.         {
  1239.             return vSync_VehicleInfo[modelid - 400][DriveType];
  1240.         }
  1241.     }
  1242.     return 0;
  1243. }
  1244.  
  1245. stock VehicleSupportsNeonLights(modelid)
  1246. {
  1247.     new idx = modelid - 400;
  1248.  
  1249.     if(0 <= idx <= 211)
  1250.     {
  1251.         if(vSync_VehicleInfo[idx][NeonOffsetX] == 0.0 && vSync_VehicleInfo[idx][NeonOffsetY] == 0.0 && vSync_VehicleInfo[idx][NeonOffsetZ] == 0.0)
  1252.         {
  1253.             return 0;
  1254.         }
  1255.         return 1;
  1256.     }
  1257.     return 0;
  1258. }
  1259.  
  1260. stock SetVehicleNeonLights(vehicleid, bool:enable = true, color = NEON_LIGHT_RED)
  1261. {
  1262.     new idx = GetVehicleModel(vehicleid) - 400;
  1263.  
  1264.     if(0 <= idx <= 211)
  1265.     {
  1266.         for(new x = 0; x < 2; x++)
  1267.         {
  1268.             #if defined _streamer_included
  1269.                 if(IsValidDynamicObject(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][x]))
  1270.                 {
  1271.                     DestroyDynamicObject(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][x]);
  1272.                 }
  1273.             #else
  1274.                 if(IsValidObject(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][x]))
  1275.                 {
  1276.                     DestroyObject(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][x]);
  1277.                 }
  1278.             #endif
  1279.         }
  1280.  
  1281.         if((NEON_LIGHT_RED <= color <= NEON_LIGHT_WHITE) && enable)
  1282.         {
  1283.             #if defined _streamer_included
  1284.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][0] = CreateDynamicObject(color, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  1285.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][1] = CreateDynamicObject(color, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  1286.  
  1287.                 AttachDynamicObjectToVehicle(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][0], vehicleid, vSync_VehicleInfo[idx][NeonOffsetX], vSync_VehicleInfo[idx][NeonOffsetY], vSync_VehicleInfo[idx][NeonOffsetZ], 0.0, 0.0, 0.0);
  1288.                 AttachDynamicObjectToVehicle(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][1], vehicleid, -vSync_VehicleInfo[idx][NeonOffsetX], vSync_VehicleInfo[idx][NeonOffsetY], vSync_VehicleInfo[idx][NeonOffsetZ], 0.0, 0.0, 0.0);
  1289.             #else
  1290.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][0] = CreateObject(color, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  1291.                 vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][1] = CreateObject(color, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  1292.  
  1293.                 AttachObjectToVehicle(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][0], vehicleid, vSync_VehicleInfo[idx][NeonOffsetX], vSync_VehicleInfo[idx][NeonOffsetY], vSync_VehicleInfo[idx][NeonOffsetZ], 0.0, 0.0, 0.0);
  1294.                 AttachObjectToVehicle(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][1], vehicleid, -vSync_VehicleInfo[idx][NeonOffsetX], vSync_VehicleInfo[idx][NeonOffsetY], vSync_VehicleInfo[idx][NeonOffsetZ], 0.0, 0.0, 0.0);
  1295.             #endif
  1296.         }
  1297.         return 1;
  1298.     }
  1299.     return 0;
  1300. }
  1301.  
  1302. stock GetVehicleNeonLightsState(vehicleid)
  1303. {
  1304.     if(1 <= vehicleid <= MAX_VEHICLES)
  1305.     {
  1306.         #if defined _streamer_included
  1307.             if(IsValidDynamicObject(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][0]) && IsValidDynamicObject(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][1]))
  1308.             {
  1309.                 return 1;
  1310.             }
  1311.         #else
  1312.             if(IsValidObject(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][0]) && IsValidObject(vSync_gVehicleInternal[vehicleid - 1][vSync_Neon][1]))
  1313.             {
  1314.                 return 1;
  1315.             }
  1316.         #endif
  1317.     }
  1318.     return 0;
  1319. }
  1320.  
  1321.  
  1322. // ================================== [OTHER FUNCTIONS] ================================== //
  1323. stock IsPlayerInsidePNS(playerid)
  1324. {
  1325.     for(new i = 0; i < sizeof(vSync_gPaynSprayPos); i++)
  1326.     {
  1327.         if(IsPlayerInRangeOfPoint(playerid, 10.0, vSync_gPaynSprayPos[i][0], vSync_gPaynSprayPos[i][1], vSync_gPaynSprayPos[i][2]))
  1328.         {
  1329.             return 1;
  1330.         }
  1331.     }
  1332.     return 0;
  1333. }
  1334.  
  1335. stock GetTickDiff(newtick, oldtick)
  1336. {
  1337.     if(oldtick < 0 && newtick >= 0)
  1338.     {
  1339.         return newtick - oldtick;
  1340.     }
  1341.     else if(oldtick >= 0 && newtick < 0 || oldtick > newtick)
  1342.     {
  1343.         return (cellmax - oldtick + 1) - (cellmin - newtick);
  1344.     }
  1345.     return newtick - oldtick;
  1346. }
  1347.  
  1348. stock IsComponentFrontBullbar(componentid)
  1349. {
  1350.     for(new x = 0; x < 5; x++)
  1351.     {
  1352.         if(vSync_gVehFrontBullbars[x] == componentid)
  1353.         {
  1354.             return 1;
  1355.         }
  1356.     }
  1357.     return 0;
  1358. }
Advertisement
Add Comment
Please, Sign In to add comment