RIDE2DAY

vSync v0.02 (ALS)

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