Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 38.99 KB | None | 0 0
  1. /*
  2.                                 Seifehicle - Seif's vehicle system
  3.                      Saves and loads vehicles in/from a file. Also saves mods.
  4. Tradotto Da: Gianni_Dark AKA Gianni AKA Jonny_Venturas AKA DarkDrago
  5. */
  6. /*x---------------------------------Important-------------------------------------x*/
  7. //**INCLUDES**//
  8. #include <a_samp>
  9. //**PRAGMAS**//
  10.  
  11. //**MISC**//
  12.  
  13. /*x---------------------------------Defining-------------------------------------x*/
  14. //**COLORS*//
  15. #define GREEN           0x21DD00FF
  16. #define RED             0xE60000FF
  17. #define ADMIN_RED       0xFB0000FF
  18. #define YELLOW          0xFFFF00FF
  19. #define ORANGE          0xF97804FF
  20. #define LIGHTRED        0xFF8080FF
  21. #define LIGHTBLUE       0x00C2ECFF
  22. #define PURPLE          0xB360FDFF
  23. #define PLAYER_COLOR    0xFFFFFFFF
  24. #define BLUE            0x1229FAFF
  25. #define LIGHTGREEN      0x38FF06FF
  26. #define DARKPINK        0xE100E1FF
  27. #define DARKGREEN       0x008040FF
  28. #define ANNOUNCEMENT    0x6AF7E1FF
  29. #define COLOR_SYSTEM    0xEFEFF7AA
  30. #define GREY            0xCECECEFF
  31. #define PINK            0xD52DFFFF
  32. #define DARKGREY        0x626262FF
  33. #define AQUAGREEN       0x03D687FF
  34. #define NICESKY         0x99FFFFAA
  35. #define WHITE           0xFFFFFFFF
  36. #define COLOR_LIGHTORANGE 0xFF8000FF
  37. //**MISC**//
  38. #define VEH_SAVE_FILE   "Seifehicle/%s.cfg"
  39.  
  40. #define MAX_MODS        12
  41. #define RESPAWN_TIME    1000
  42.  
  43. #define VEHSHOW_X       -1974.6205
  44. #define VEHSHOW_Y       284.9893
  45. #define VEHSHOW_Z       35.1719
  46. #define VEHSHOW_A       360.0
  47.  
  48. #define VTYPE_CAR       1
  49. #define VTYPE_HEAVY     2
  50. #define VTYPE_BIKE      3
  51. #define VTYPE_AIR       4
  52. #define VTYPE_SEA       5
  53. #define VTYPE_MISC      6
  54. #define VTYPE_MOTORBIKE 7
  55.  
  56. #define CAR_COST        150000  // $
  57. #define BIKE_COST       1000     // $
  58. #define MOTORBIKE_COST  40000   // $
  59. #define BOAT_COST       1500000  // $
  60. #define PLANE_COST      1500000  // $
  61. #define MISC_COST       250000    // $
  62. #define TRUCK_COST      500000   // $
  63.  
  64. #define on      1
  65. #define off     0
  66.  
  67. #define SHOW_LEGEND     // Shows the legend of the script on how to buy a car, etc. Comment to not show, leave it uncommented to show.
  68. //**VARIABLES**//
  69. enum vInfo
  70. {
  71.     vModel,
  72.     Float:vX,
  73.     Float:vY,
  74.     Float:vZ,
  75.     Float:vA,
  76.     Float:vPX,
  77.     Float:vPY,
  78.     Float:vPZ,
  79.     Float:vPA,
  80.     vColor1,
  81.     vColor2,
  82.     vPaintjob,
  83.     vMod[MAX_MODS],
  84.     vOwner[MAX_PLAYER_NAME],
  85.     vName[128],
  86.     vLock,
  87.     vPark,
  88. }
  89. new VehicleInfo[MAX_VEHICLES][vInfo];
  90.  
  91. new CarModels[212] =
  92. {
  93.     400,
  94.     401,
  95.     402,
  96.     403,
  97.     404,
  98.     405,
  99.     406,
  100.     407,
  101.     408,
  102.     409,
  103.     410,
  104.     411,
  105.     412,
  106.     413,
  107.     414,
  108.     415,
  109.     416,
  110.     417,
  111.     418,
  112.     419,
  113.     420,
  114.     421,
  115.     422,
  116.     423,
  117.     424,
  118.     425,
  119.     426,
  120.     427,
  121.     428,
  122.     429,
  123.     430,
  124.     431,
  125.     432,
  126.     433,
  127.     434,
  128.     435,
  129.     436,
  130.     437,
  131.     438,
  132.     439,
  133.     440,
  134.     441,
  135.     442,
  136.     443,
  137.     444,
  138.     445,
  139.     446,
  140.     447,
  141.     448,
  142.     449,
  143.     450,
  144.     451,
  145.     452,
  146.     453,
  147.     454,
  148.     455,
  149.     456,
  150.     457,
  151.     458,
  152.     459,
  153.     460,
  154.     461,
  155.     462,
  156.     463,
  157.     464,
  158.     465,
  159.     466,
  160.     467,
  161.     468,
  162.     469,
  163.     470,
  164.     471,
  165.     472,
  166.     473,
  167.     474,
  168.     475,
  169.     476,
  170.     477,
  171.     478,
  172.     479,
  173.     480,
  174.     481,
  175.     482,
  176.     483,
  177.     484,
  178.     485,
  179.     486,
  180.     487,
  181.     488,
  182.     489,
  183.     490,
  184.     491,
  185.     492,
  186.     493,
  187.     494,
  188.     495,
  189.     496,
  190.     497,
  191.     498,
  192.     499,
  193.     500,
  194.     501,
  195.     502,
  196.     503,
  197.     504,
  198.     505,
  199.     506,
  200.     507,
  201.     508,
  202.     509,
  203.     510,
  204.     511,
  205.     512,
  206.     513,
  207.     514,
  208.     515,
  209.     516,
  210.     517,
  211.     518,
  212.     519,
  213.     520,
  214.     521,
  215.     522,
  216.     523,
  217.     524,
  218.     525,
  219.     526,
  220.     527,
  221.     528,
  222.     529,
  223.     530,
  224.     531,
  225.     532,
  226.     533,
  227.     534,
  228.     535,
  229.     536,
  230.     537,
  231.     538,
  232.     539,
  233.     540,
  234.     541,
  235.     542,
  236.     543,
  237.     544,
  238.     545,
  239.     546,
  240.     547,
  241.     548,
  242.     549,
  243.     550,
  244.     551,
  245.     552,
  246.     553,
  247.     554,
  248.     555,
  249.     556,
  250.     557,
  251.     558,
  252.     559,
  253.     560,
  254.     561,
  255.     562,
  256.     563,
  257.     564,
  258.     565,
  259.     566,
  260.     567,
  261.     568,
  262.     569,
  263.     570,
  264.     571,
  265.     572,
  266.     573,
  267.     574,
  268.     575,
  269.     576,
  270.     577,
  271.     578,
  272.     579,
  273.     580,
  274.     581,
  275.     582,
  276.     583,
  277.     584,
  278.     585,
  279.     586,
  280.     587,
  281.     588,
  282.     589,
  283.     590,
  284.     591,
  285.     592,
  286.     593,
  287.     594,
  288.     595,
  289.     596,
  290.     597,
  291.     598,
  292.     599,
  293.     600,
  294.     601,
  295.     602,
  296.     603,
  297.     604,
  298.     605,
  299.     606,
  300.     607,
  301.     608,
  302.     609,
  303.     610,
  304.     611
  305. };
  306. new VehicleName[][] =
  307. {
  308.    "Landstalker",
  309.    "Bravura",
  310.    "Buffalo",
  311.    "Linerunner",
  312.    "Pereniel",
  313.    "Sentinel",
  314.    "Dumper",
  315.    "Firetruck",
  316.    "Trashmaster",
  317.    "Stretch",
  318.    "Manana",
  319.    "Infernus",
  320.    "Voodoo",
  321.    "Pony",
  322.    "Mule",
  323.    "Cheetah",
  324.    "Ambulance",
  325.    "Leviathan",
  326.    "Moonbeam",
  327.    "Esperanto",
  328.    "Taxi",
  329.    "Washington",
  330.    "Bobcat",
  331.    "Mr Whoopee",
  332.    "BF Injection",
  333.    "Hunter",
  334.    "Premier",
  335.    "Enforcer",
  336.    "Securicar",
  337.    "Banshee",
  338.    "Predator",
  339.    "Bus",
  340.    "Rhino",
  341.    "Barracks",
  342.    "Hotknife",
  343.    "Trailer",
  344.    "Previon",
  345.    "Coach",
  346.    "Cabbie",
  347.    "Stallion",
  348.    "Rumpo",
  349.    "RC Bandit",
  350.    "Romero",
  351.    "Packer",
  352.    "Monster Truck",
  353.    "Admiral",
  354.    "Squalo",
  355.    "Seasparrow",
  356.    "Pizzaboy",
  357.    "Tram",
  358.    "Trailer",
  359.    "Turismo",
  360.    "Speeder",
  361.    "Reefer",
  362.    "Tropic",
  363.    "Flatbed",
  364.    "Yankee",
  365.    "Caddy",
  366.    "Solair",
  367.    "Berkley's RC Van",
  368.    "Skimmer",
  369.    "PCJ-600",
  370.    "Faggio",
  371.    "Freeway",
  372.    "RC Baron",
  373.    "RC Raider",
  374.    "Glendale",
  375.    "Oceanic",
  376.    "Sanchez",
  377.    "Sparrow",
  378.    "Patriot",
  379.    "Quad",
  380.    "Coastguard",
  381.    "Dinghy",
  382.    "Hermes",
  383.    "Sabre",
  384.    "Rustler",
  385.    "ZR-350",
  386.    "Walton",
  387.    "Regina",
  388.    "Comet",
  389.    "BMX",
  390.    "Burrito",
  391.    "Camper",
  392.    "Marquis",
  393.    "Baggage",
  394.    "Dozer",
  395.    "Maverick",
  396.    "News Chopper",
  397.    "Rancher",
  398.    "FBI Rancher",
  399.    "Virgo",
  400.    "Greenwood",
  401.    "Jetmax",
  402.    "Hotring",
  403.    "Sandking",
  404.    "Blista Compact",
  405.    "Police Maverick",
  406.    "Boxville",
  407.    "Benson",
  408.    "Mesa",
  409.    "RC Goblin",
  410.    "Hotring Racer",
  411.    "Hotring Racer",
  412.    "Bloodring Banger",
  413.    "Rancher",
  414.    "Super GT",
  415.    "Elegant",
  416.    "Journey",
  417.    "Bike",
  418.    "Mountain Bike",
  419.    "Beagle",
  420.    "Cropdust",
  421.    "Stunt",
  422.    "Tanker",
  423.    "RoadTrain",
  424.    "Nebula",
  425.    "Majestic",
  426.    "Buccaneer",
  427.    "Shamal",
  428.    "Hydra",
  429.    "FCR-900",
  430.    "NRG-500",
  431.    "HPV1000",
  432.    "Cement Truck",
  433.    "Tow Truck",
  434.    "Fortune",
  435.    "Cadrona",
  436.    "FBI Truck",
  437.    "Willard",
  438.    "Forklift",
  439.    "Tractor",
  440.    "Combine",
  441.    "Feltzer",
  442.    "Remington",
  443.    "Slamvan",
  444.    "Blade",
  445.    "Freight",
  446.    "Streak",
  447.    "Vortex",
  448.    "Vincent",
  449.    "Bullet",
  450.    "Clover",
  451.    "Sadler",
  452.    "Firetruck",
  453.    "Hustler",
  454.    "Intruder",
  455.    "Primo",
  456.    "Cargobob",
  457.    "Tampa",
  458.    "Sunrise",
  459.    "Merit",
  460.    "Utility",
  461.    "Nevada",
  462.    "Yosemite",
  463.    "Windsor",
  464.    "Monster Truck",
  465.    "Monster Truck",
  466.    "Uranus",
  467.    "Jester",
  468.    "Sultan",
  469.    "Stratum",
  470.    "Elegy",
  471.    "Raindance",
  472.    "RC Tiger",
  473.    "Flash",
  474.    "Tahoma",
  475.    "Savanna",
  476.    "Bandito",
  477.    "Freight",
  478.    "Trailer",
  479.    "Kart",
  480.    "Mower",
  481.    "Duneride",
  482.    "Sweeper",
  483.    "Broadway",
  484.    "Tornado",
  485.    "AT-400",
  486.    "DFT-30",
  487.    "Huntley",
  488.    "Stafford",
  489.    "BF-400",
  490.    "Newsvan",
  491.    "Tug",
  492.    "Trailer",
  493.    "Emperor",
  494.    "Wayfarer",
  495.    "Euros",
  496.    "Hotdog",
  497.    "Club",
  498.    "Trailer",
  499.    "Trailer",
  500.    "Andromada",
  501.    "Dodo",
  502.    "RC Cam",
  503.    "Launch",
  504.    "Police Car (LSPD)",
  505.    "Police Car (SFPD)",
  506.    "Police Car (LVPD)",
  507.    "Police Ranger",
  508.    "Picador",
  509.    "S.W.A.T. Van",
  510.    "Alpha",
  511.    "Phoenix",
  512.    "Glendale",
  513.    "Sadler",
  514.    "Luggage Trailer",
  515.    "Luggage Trailer",
  516.    "Stair Trailer",
  517.    "Boxville",
  518.    "Farm Plow",
  519.    "Utility Trailer"
  520. };
  521.  
  522. new MAX_VEH_SPAWNED = 0;
  523. new ShopCar[MAX_PLAYERS];
  524. new bool:CarShopping[MAX_PLAYERS];
  525. new carbrowse[MAX_PLAYERS];
  526. new Float:OrgX[MAX_PLAYERS];
  527. new Float:OrgY[MAX_PLAYERS];
  528. new Float:OrgZ[MAX_PLAYERS];
  529. new Float:OrgA[MAX_PLAYERS];
  530. new CarColor[MAX_PLAYERS][2];
  531. new Menu:CarMenu;
  532. /*x---------------------------------CallBacks-------------------------------------x*/
  533. forward Main();
  534. public  Main()
  535. {
  536.     print("<|-----------------------------------------|>");
  537.     print(" |.:[ - Seifehicle Vehicle System By Seif - ]:.|");
  538.     print("<|-----------------------------------------|>");
  539. }
  540.  
  541. public OnFilterScriptInit()
  542. {
  543.     Main();
  544.     CarMenu = CreateMenu("Menu",1,20,120,150,400);
  545.     AddMenuItem(CarMenu,0,"Vendi");
  546.     AddMenuItem(CarMenu,0,"Parcheggia");
  547.     AddMenuItem(CarMenu,0,"Chiudi");
  548.     AddMenuItem(CarMenu,0,"Apri");
  549.     AddMenuItem(CarMenu,0,"Chiama Veicolo");
  550.     AddMenuItem(CarMenu,0,"Resetta Componenti");
  551.  
  552.     for(new i = 0; i < MAX_PLAYERS; i++)
  553.     {
  554.         CarColor[i][0] = 1;
  555.         CarColor[i][1] = 1;
  556.     }
  557.     for(new v = 1; v < MAX_VEHICLES; v++)
  558.     {
  559.         VehicleInfo[v][vModel] = 0;
  560.         VehicleInfo[v][vX] = 0;
  561.         VehicleInfo[v][vY] = 0;
  562.         VehicleInfo[v][vZ] = 0;
  563.         VehicleInfo[v][vA] = 0;
  564.         VehicleInfo[v][vColor1] = -1;
  565.         VehicleInfo[v][vColor2] = -1;
  566.         VehicleInfo[v][vPaintjob] = -1;
  567.         format(VehicleInfo[v][vName], MAX_PLAYER_NAME, "[NONE]");
  568.         format(VehicleInfo[v][vOwner], MAX_PLAYER_NAME, "[NONE]");
  569.         VehicleInfo[v][vPark] = 0;
  570.         VehicleInfo[v][vPX] = 0;
  571.         VehicleInfo[v][vPY] = 0;
  572.         VehicleInfo[v][vPZ] = 0;
  573.         VehicleInfo[v][vPA] = 0;
  574.         for(new m = 0; m < MAX_MODS; m++) VehicleInfo[v][vMod][m] = 0;
  575.     }
  576.     return 1;
  577. }
  578.  
  579. public OnFilterScriptExit()
  580. {
  581.     for(new v = 1; v < MAX_VEHICLES; v++)
  582.     {
  583.         if (IsVehicleSpawned(v))
  584.         {
  585.             if (VehicleInfo[v][vModel] > 0) DestroyVehicle(v);
  586.         }
  587.     }
  588.     return 1;
  589. }
  590.  
  591. public OnPlayerConnect(playerid)
  592. {
  593.     LoadPlayerVehicle(playerid);
  594.     CarColor[playerid][0] = 1;
  595.     CarColor[playerid][1] = 1;
  596.     for(new v = 1; v < MAX_VEHICLES; v++) LockVehicle(v);
  597.     return 1;
  598. }
  599.  
  600. public OnPlayerDisconnect(playerid, reason)
  601. {
  602.     SavePlayerVehicle(playerid);
  603.     CarColor[playerid][0] = 1;
  604.     CarColor[playerid][1] = 1;
  605.     if (CarShopping[playerid] == true)
  606.     {
  607.         CarShopping[playerid] = false;
  608.         DestroyVehicle(ShopCar[playerid]);
  609.         carbrowse[playerid] = 0;
  610.     }
  611.     return 1;
  612. }
  613.  
  614. public OnPlayerSpawn(playerid)
  615. {
  616.     return 1;
  617. }
  618.  
  619. public OnPlayerDeath(playerid, killerid, reason)
  620. {
  621.     return 1;
  622. }
  623.  
  624. public OnVehicleSpawn(vehicleid)
  625. {
  626.     return 1;
  627. }
  628.  
  629. public OnVehicleDeath(vehicleid, killerid)
  630. {
  631.     return 1;
  632. }
  633.  
  634. public OnPlayerText(playerid, text[])
  635. {
  636.     return 1;
  637. }
  638.  
  639.  
  640.  
  641. public OnPlayerCommandText(playerid, cmdtext[])
  642. {
  643.     new cmd[128];
  644.     new idx;
  645.     new tmp[128];
  646.     cmd = strtok(cmdtext, idx);
  647.  
  648.     if (!strcmp("/compraveicolo", cmdtext, true))
  649.     {
  650.         if (GetOwnedVehicleID(playerid) != INVALID_VEHICLE_ID) return SendClientMessage(playerid, RED, "Hai già un veicolo");
  651.         if (GetPlayerInterior(playerid) != 0) return SendClientMessage(playerid, RED, "Non puoi usarlo qui"); // To prevent screw ups
  652.         GetPlayerPos(playerid, OrgX[playerid], OrgY[playerid], OrgZ[playerid]);
  653.         GetPlayerFacingAngle(playerid, OrgA[playerid]);
  654.         new Float:X,Float:Y;
  655.         new color1 = CarColor[playerid][0];
  656.         new color2 = CarColor[playerid][1];
  657.         X = VEHSHOW_X;
  658.         Y = VEHSHOW_Y;
  659.         TogglePlayerControllable(playerid, false);
  660.         X -= (10.0 * floatsin(-VEHSHOW_A+90, degrees));
  661.         Y -= (10.0 * floatcos(-VEHSHOW_A+90, degrees));
  662.         SetPlayerCameraPos(playerid, X, Y, VEHSHOW_Z);
  663.         X += (10.0 * floatsin(-VEHSHOW_A+90, degrees));
  664.         Y += (10.0 * floatcos(-VEHSHOW_A+90, degrees));
  665.         SetPlayerCameraLookAt(playerid, X, Y, VEHSHOW_Z);
  666.         SetPlayerVirtualWorld(playerid, playerid);
  667.         ShopCar[playerid] = CreateVehicle(CarModels[0], VEHSHOW_X, VEHSHOW_Y, VEHSHOW_Z, 0.0, color1, color2, 6000000);
  668.         SetVehicleVirtualWorld(ShopCar[playerid], playerid);
  669.         PutPlayerInVehicle(playerid, ShopCar[playerid], 0);
  670.         TogglePlayerControllable(playerid, false);
  671.         CarShopping[playerid] = true;
  672.         SendClientMessage(playerid, GREEN, "Benvenuto nella concessionaria, scegli il veicolo da comprare.");
  673.             SendClientMessage(playerid, ORANGE, "Per passare velocemente ad un modello di veicolo fai /modello [nome].");
  674.             SendClientMessage(playerid, ORANGE, "Per cambiare il colore fai /colore [id1] [id2].");
  675.             SendClientMessage(playerid, ORANGE, "Dopo aver scelto il veicolo premi CTRL (TASTO FUOCO) per comprarlo!");
  676.         SetTimerEx("BrowseCars", 300, 0, "d", playerid);
  677.         //SetTimerEx("FreezeCar", 100, 0, "d", playerid);
  678.         return 1;
  679.     }
  680.  
  681.     if (!strcmp("/modello", cmd, true))
  682.     {
  683.         if (CarShopping[playerid] == false) return SendClientMessage(playerid, RED, "Non stai comprando un auto");
  684.         tmp = strtok(cmdtext, idx);
  685.         if (!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USA: /modello [Nomemodello/ID]");
  686.         new id = GetVehicleModelIDFromName(tmp);
  687.         if (id < 400 || id > 611) return SendClientMessage(playerid, RED, "ID/NOME Veicolo Invalido");
  688.         new color1 = CarColor[playerid][0];
  689.         new color2 = CarColor[playerid][1];
  690.         carbrowse[playerid] = id-400;
  691.         DestroyVehicle(ShopCar[playerid]);
  692.         ShopCar[playerid] = CreateVehicle(CarModels[carbrowse[playerid]], VEHSHOW_X, VEHSHOW_Y, VEHSHOW_Z, 0.0, color1, color2, 6000000);
  693.         SetVehicleVirtualWorld(ShopCar[playerid], playerid);
  694.         PutPlayerInVehicle(playerid, ShopCar[playerid], 0);
  695.         return 1;
  696.     }
  697.  
  698.     if (!strcmp("/colore", cmd, true))
  699.     {
  700.         if (CarShopping[playerid] == false) return SendClientMessage(playerid, RED, "You're not shopping for a car!");
  701.         tmp = strtok(cmdtext, idx);
  702.         if (!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /colore [ID COLORE 1] [ID COLORE 2]");
  703.         new color1 = strval(tmp);
  704.         if (color1 < 0 || color1 > 126) return SendClientMessage(playerid, RED, "[ERRORE]Gli id's vanno da 0 fino a 126!");
  705.         CarColor[playerid][0] = color1;
  706.         new color2;
  707.         tmp = strtok(cmdtext, idx);
  708.         if (!strlen(tmp)) color2 = color1;
  709.         else color2 = strval(tmp);
  710.         if (color2 < 0 || color2 > 126) return SendClientMessage(playerid, RED, "[ERRORE]Gli id's vanno da 0 fino a 126!");
  711.         CarColor[playerid][1] = color2;
  712.         ChangeVehicleColor(GetPlayerVehicleID(playerid), color1, color2);
  713.         return 1;
  714.     }
  715.  
  716.     if (!strcmp("/menuveicolo", cmdtext, true))
  717.     {
  718.         TogglePlayerControllable(playerid, false);
  719.         ShowMenuForPlayer(CarMenu, playerid);
  720.         return 1;
  721.     }
  722.     return 0;
  723. }
  724.  
  725.  
  726.  
  727. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  728. {
  729.     return 1;
  730. }
  731.  
  732. public OnPlayerExitVehicle(playerid, vehicleid)
  733. {
  734.     return 1;
  735. }
  736.  
  737. public OnPlayerStateChange(playerid, newstate, oldstate)
  738. {
  739.     new vehicleid = GetPlayerVehicleID(playerid);
  740.     new string[128];
  741.     if (CarShopping[playerid] == false)
  742.     {
  743.         if (newstate == PLAYER_STATE_DRIVER)
  744.         {
  745.             if (!strcmp(VehicleInfo[vehicleid][vOwner],GetName(playerid)))
  746.             {
  747.                 format(string,128,"|- Bentornato Nel Tuo Veicolo -|", VehicleInfo[vehicleid][vName]);
  748.                 SendClientMessage(playerid, YELLOW, string);
  749.             }
  750.             else
  751.             {
  752.                 format(string,128,"[AVVISO:]Questo Veicolo E' Di Proprietà", VehicleInfo[vehicleid][vName], VehicleInfo[vehicleid][vOwner]);
  753.                 SendClientMessage(playerid, YELLOW, string);
  754.             }
  755.         }
  756.     }
  757.     return 1;
  758. }
  759.  
  760. public OnPlayerEnterCheckpoint(playerid)
  761. {
  762.     return 1;
  763. }
  764.  
  765. public OnPlayerLeaveCheckpoint(playerid)
  766. {
  767.     return 1;
  768. }
  769.  
  770. public OnPlayerEnterRaceCheckpoint(playerid)
  771. {
  772.     return 1;
  773. }
  774.  
  775. public OnPlayerLeaveRaceCheckpoint(playerid)
  776. {
  777.     return 1;
  778. }
  779.  
  780. public OnRconCommand(cmd[])
  781. {
  782.     return 1;
  783. }
  784.  
  785. public OnObjectMoved(objectid)
  786. {
  787.     return 1;
  788. }
  789.  
  790. public OnPlayerObjectMoved(playerid, objectid)
  791. {
  792.     return 1;
  793. }
  794.  
  795. public OnPlayerPickUpPickup(playerid, pickupid)
  796. {
  797.     return 1;
  798. }
  799.  
  800. public OnPlayerSelectedMenuRow(playerid, row)
  801. {
  802.     new Menu:menu = GetPlayerMenu(playerid);
  803.     if (menu == CarMenu)
  804.     {
  805.         OnPlayerExitedMenu(playerid);
  806.         switch (row)
  807.         {
  808.             case 0:
  809.             {
  810.                 new vehicleid = GetOwnedVehicleID(playerid);
  811.                 if (vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(playerid, RED, "Non possiedi un veicolo.");
  812.                 new string[128];
  813.                 format(string, sizeof string, "|- Hai venduto la tua %s ed hai guadagnato: $%d -|", VehicleName[GetVehicleModel(vehicleid)-400], GetVehicleCost(vehicleid));
  814.                 DeleteVehicle(playerid);
  815.                 SendClientMessage(playerid, GREEN, string);
  816.                 GivePlayerMoney(playerid, GetVehicleCost(vehicleid));
  817.             }
  818.             case 1:
  819.             {
  820.              new vehicleid = GetOwnedVehicleID(playerid);
  821.                 if (vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(playerid, RED, "Non possiedi un veicolo.");
  822.                 new string[128];
  823.                 VehicleInfo[vehicleid][vPark] = 1;
  824.                 GetVehiclePos(vehicleid, VehicleInfo[vehicleid][vPX], VehicleInfo[vehicleid][vPY], VehicleInfo[vehicleid][vPZ]);
  825.                 GetVehicleZAngle(vehicleid, VehicleInfo[vehicleid][vPA]);
  826.                 format(string, sizeof string, "|- Hai parcheggiato qui la tua %s -|", VehicleInfo[vehicleid][vName]);
  827.                 SendClientMessage(playerid, GREEN, string);
  828.             }
  829.             case 2:
  830.             {
  831.                 new vehicleid = GetOwnedVehicleID(playerid);
  832.                 if (vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(playerid, RED, "Non possiedi un veicolo.");
  833.                 new string[128];
  834.                 VehicleInfo[vehicleid][vLock] = 1;
  835.                 LockVehicle(vehicleid);
  836.                 format(string, sizeof string, "|- Hai chiuso la tua: %s -|", VehicleInfo[vehicleid][vName]);
  837.                 SendClientMessage(playerid, GREEN, string);
  838.                 PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
  839.             }
  840.             case 3:
  841.             {
  842.                 new vehicleid = GetOwnedVehicleID(playerid);
  843.                 if (vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(playerid, RED, "Non possiedi un veicolo.");
  844.                 new string[128];
  845.                 VehicleInfo[vehicleid][vLock] = 0;
  846.                 UnlockVehicle(vehicleid);
  847.                 format(string, sizeof string, "|- Hai aperto la tua: %s -|", VehicleInfo[vehicleid][vName]);
  848.                 SendClientMessage(playerid, GREEN, string);
  849.                 PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
  850.             }
  851.             case 4:
  852.             {
  853.                 if (IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, RED, "Devi essere dentro la macchina!");
  854.                 new vehicleid = GetOwnedVehicleID(playerid);
  855.                 if (vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(playerid, RED, "Non possiedi un veicolo.");
  856.                 new string[128];
  857.                 new intruder = PlayerInVehicle(vehicleid);
  858.                 new Float:X,Float:Y,Float:Z;
  859.                 if (intruder != INVALID_VEHICLE_ID)
  860.                 {
  861.                     GetPlayerPos(intruder, X, Y, Z);
  862.                     SetPlayerPos(intruder, X, Y, Z+2);
  863.                 }
  864.                 GetPlayerPos(playerid, X, Y, Z);
  865.                 PutPlayerInVehicle(playerid, vehicleid, 0);
  866.                 SetVehiclePos(vehicleid, X, Y, Z);
  867.                 format(string, sizeof string, "|- Il camionista ti ha portato la tua: %s -|", VehicleInfo[vehicleid][vName]);
  868.                 SendClientMessage(playerid, GREEN, string);
  869.             }
  870.             case 5:
  871.             {
  872.                 new vehicleid = GetOwnedVehicleID(playerid);
  873.                 if (vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(playerid, RED, "Non possiedi un veicolo.");
  874.                 new string[128];
  875.                 new count;
  876.                 for(new m = 0; m < MAX_MODS; m++)
  877.                 {
  878.                     if (VehicleInfo[vehicleid][vMod][m] > 0)
  879.                     {
  880.                         RemoveVehicleComponent(vehicleid, VehicleInfo[vehicleid][vMod][m]);
  881.                         VehicleInfo[vehicleid][vMod][m] = 0;
  882.                         count++;
  883.                     }
  884.                 }
  885.                 format(string, sizeof string, "|- Hai rimosso: %d elaborazioni dalla tua: %s -|", count, VehicleInfo[vehicleid][vName]);
  886.                 SendClientMessage(playerid, GREEN, string);
  887.             }
  888.         }
  889.     }
  890.     return 1;
  891. }
  892.  
  893. public OnPlayerExitedMenu(playerid)
  894. {
  895.     TogglePlayerControllable(playerid, true);
  896.     return 1;
  897. }
  898.  
  899. stock split(const strsrc[], strdest[][], delimiter)
  900. {
  901.     new i, li;
  902.     new aNum;
  903.     new len;
  904.  
  905.     while(i <= strlen(strsrc)){
  906.         if(strsrc[i]==delimiter || i==strlen(strsrc)){
  907.             len = strmid(strdest[aNum], strsrc, li, i, 128);
  908.             strdest[aNum][len] = 0;
  909.             li = i+1;
  910.             aNum++;
  911.         }
  912.         i++;
  913.     }
  914.     return 1;
  915. }
  916.  
  917. forward LoadPlayerVehicle(playerid);
  918. public  LoadPlayerVehicle(playerid)
  919. {
  920.     new openfile[128];
  921.     format(openfile, sizeof openfile, VEH_SAVE_FILE, GetName(playerid));
  922.     printf("file name: %s", openfile);
  923.     if (!fexist(openfile)) return 1; // He doesn't own a vehicle
  924.     print("loading player vehicle");
  925.     new File:vehs = fopen(openfile,io_read);
  926.     new string[256];
  927.     new load[30][32];
  928.     new newload = 15; // last "strval(load[x])" before the mods loop
  929.     if (vehs)
  930.     {
  931.         print("attempting to read file");
  932.         while (fread(vehs, string, 256))
  933.         {
  934.             split(string, load, '|');
  935.  
  936.             print("spawning vehicles");
  937.  
  938.             // Spawn vehicles
  939.             new v = INVALID_VEHICLE_ID;
  940.             if (strval(load[11]) == 1)
  941.             {
  942.                 v = CreateVehicle(
  943.                     strval(load[0]),
  944.                     floatstr(load[12]),
  945.                     floatstr(load[13]),
  946.                     floatstr(load[14]),
  947.                     floatstr(load[15]),
  948.                     strval(load[5]),
  949.                     strval(load[6]),
  950.                     RESPAWN_TIME
  951.                 );
  952.             }
  953.             else
  954.             {
  955.                 v = CreateVehicle(
  956.                     strval(load[0]),
  957.                     floatstr(load[1]),
  958.                     floatstr(load[2]),
  959.                     floatstr(load[3]),
  960.                     floatstr(load[4]),
  961.                     strval(load[5]),
  962.                     strval(load[6]),
  963.                     RESPAWN_TIME
  964.                 );
  965.             }
  966.             printf("car spawned: %d", v);
  967.  
  968.             // Load vehicles
  969.             VehicleInfo[v][vModel] = strval(load[0]);
  970.             VehicleInfo[v][vX] = floatstr(load[1]);
  971.             VehicleInfo[v][vY] = floatstr(load[2]);
  972.             VehicleInfo[v][vZ] = floatstr(load[3]);
  973.             VehicleInfo[v][vA] = floatstr(load[4]);
  974.             VehicleInfo[v][vColor1] = strval(load[5]);
  975.             VehicleInfo[v][vColor2] = strval(load[6]);
  976.             VehicleInfo[v][vPaintjob] = strval(load[7]);
  977.             printf("name: %s", load[8]);
  978.             strmid(VehicleInfo[v][vName], load[8], 0, strlen(load[8]), 128);
  979.             printf("owner: %s", load[9]);
  980.             strmid(VehicleInfo[v][vOwner], load[9], 0, strlen(load[9]), MAX_PLAYER_NAME);
  981.             VehicleInfo[v][vLock] = strval(load[10]);
  982.             VehicleInfo[v][vPark] = strval(load[11]);
  983.             VehicleInfo[v][vPX] = floatstr(load[12]);
  984.             VehicleInfo[v][vPY] = floatstr(load[13]);
  985.             VehicleInfo[v][vPZ] = floatstr(load[14]);
  986.             VehicleInfo[v][vPA] = floatstr(load[15]);
  987.             for(new m = 0; m < MAX_MODS; m++)
  988.             {
  989.                 newload++;
  990.                 VehicleInfo[v][vMod][m] = strval(load[newload]);
  991.             }
  992.  
  993.             for(new m = 0; m < MAX_MODS; m++)
  994.             {
  995.                 if (VehicleInfo[v][vMod][m] > 0)
  996.                 {
  997.                     AddVehicleComponent(v,VehicleInfo[v][vMod][m]);
  998.                 }
  999.             }
  1000.             if (VehicleInfo[v][vPaintjob] > -1)
  1001.             {
  1002.                 ChangeVehiclePaintjob(v,VehicleInfo[v][vPaintjob]);
  1003.             }
  1004.             MAX_VEH_SPAWNED++;
  1005.             break;
  1006.         }
  1007.         fclose(vehs);
  1008.     }
  1009.     return 1;
  1010. }
  1011.  
  1012. forward SavePlayerVehicle(playerid);
  1013. public  SavePlayerVehicle(playerid)
  1014. {
  1015.     new string[256];
  1016.     format(string, 128, VEH_SAVE_FILE, GetName(playerid));
  1017.     if (GetOwnedVehicleID(playerid) == INVALID_VEHICLE_ID) return 1;
  1018.     new File:vehs = fopen(string, io_write);
  1019.     if (vehs)
  1020.     {
  1021.         new v = GetOwnedVehicleID(playerid);
  1022.         printf("vehicle name: %s", VehicleInfo[v][vName]);
  1023.         format(string, sizeof(string), "%d|%f|%f|%f|%f|%d|%d|%d|%s|%s|%d|%d|%f|%f|%f|%f|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d",
  1024.             VehicleInfo[v][vModel],
  1025.             VehicleInfo[v][vX],
  1026.             VehicleInfo[v][vY],
  1027.             VehicleInfo[v][vZ],
  1028.             VehicleInfo[v][vA],
  1029.             VehicleInfo[v][vColor1],
  1030.             VehicleInfo[v][vColor2],
  1031.             VehicleInfo[v][vPaintjob],
  1032.             VehicleInfo[v][vName],
  1033.             VehicleInfo[v][vOwner],
  1034.             VehicleInfo[v][vLock],
  1035.             VehicleInfo[v][vPark],
  1036.             VehicleInfo[v][vPX],
  1037.             VehicleInfo[v][vPY],
  1038.             VehicleInfo[v][vPZ],
  1039.             VehicleInfo[v][vPA],
  1040.             VehicleInfo[v][vMod][0],
  1041.             VehicleInfo[v][vMod][1],
  1042.             VehicleInfo[v][vMod][2],
  1043.             VehicleInfo[v][vMod][3],
  1044.             VehicleInfo[v][vMod][4],
  1045.             VehicleInfo[v][vMod][5],
  1046.             VehicleInfo[v][vMod][6],
  1047.             VehicleInfo[v][vMod][7],
  1048.             VehicleInfo[v][vMod][8],
  1049.             VehicleInfo[v][vMod][9],
  1050.             VehicleInfo[v][vMod][10],
  1051.             VehicleInfo[v][vMod][11]
  1052.         );
  1053.         fwrite(vehs, string);
  1054.         fclose(vehs);
  1055.         VehicleInfo[v][vModel] = 0;
  1056.         VehicleInfo[v][vX] = 0;
  1057.         VehicleInfo[v][vY] = 0;
  1058.         VehicleInfo[v][vZ] = 0;
  1059.         VehicleInfo[v][vA] = 0;
  1060.         VehicleInfo[v][vColor1] = -1;
  1061.         VehicleInfo[v][vColor2] = -1;
  1062.         VehicleInfo[v][vPaintjob] = -1;
  1063.         format(VehicleInfo[v][vName], MAX_PLAYER_NAME, "[NONE]");
  1064.         format(VehicleInfo[v][vOwner], MAX_PLAYER_NAME, "[NONE]");
  1065.         VehicleInfo[v][vPark] = 0;
  1066.         VehicleInfo[v][vPX] = 0;
  1067.         VehicleInfo[v][vPY] = 0;
  1068.         VehicleInfo[v][vPZ] = 0;
  1069.         VehicleInfo[v][vPA] = 0;
  1070.         for(new m = 0; m < MAX_MODS; m++) VehicleInfo[v][vMod][m] = 0;
  1071.         DestroyVehicle(v);
  1072.     }
  1073.     return 1;
  1074. }
  1075.  
  1076. stock GetName(playerid)
  1077. {
  1078.     new name[MAX_PLAYER_NAME];
  1079.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  1080.     return name;
  1081. }
  1082.  
  1083. forward DeleteVehicle(ownerid);
  1084. public  DeleteVehicle(ownerid)
  1085. {
  1086.     new vehicleid = GetOwnedVehicleID(ownerid);
  1087.     if (vehicleid == INVALID_VEHICLE_ID) return print("invalid vehicle id - no deletion"), 0;
  1088.     new string[128];
  1089.     format(string, 128, VEH_SAVE_FILE, GetName(ownerid));
  1090.     if (fexist(string)) fremove(string);
  1091.     VehicleInfo[vehicleid][vModel] = 0;
  1092.     VehicleInfo[vehicleid][vX] = 0;
  1093.     VehicleInfo[vehicleid][vY] = 0;
  1094.     VehicleInfo[vehicleid][vZ] = 0;
  1095.     VehicleInfo[vehicleid][vA] = 0;
  1096.     VehicleInfo[vehicleid][vColor1] = 0;
  1097.     VehicleInfo[vehicleid][vColor2] = 0;
  1098.     VehicleInfo[vehicleid][vPaintjob] = 0;
  1099.     format(VehicleInfo[vehicleid][vName], MAX_PLAYER_NAME, "[NONE]");
  1100.     format(VehicleInfo[vehicleid][vOwner], MAX_PLAYER_NAME, "[NONE]");
  1101.     VehicleInfo[vehicleid][vPark] = 0;
  1102.     VehicleInfo[vehicleid][vPX] = 0;
  1103.     VehicleInfo[vehicleid][vPY] = 0;
  1104.     VehicleInfo[vehicleid][vPZ] = 0;
  1105.     VehicleInfo[vehicleid][vPA] = 0;
  1106.     for(new m = 0; m < MAX_MODS; m++) VehicleInfo[vehicleid][vMod][m] = 0;
  1107.     DestroyVehicle(vehicleid);
  1108.     return 1;
  1109. }
  1110.  
  1111. forward BrowseCars(playerid);
  1112. public  BrowseCars(playerid)
  1113. {
  1114.     if (CarShopping[playerid] != true) return 1;
  1115.  
  1116.     new keys, updown, leftright;
  1117.     GetPlayerKeys(playerid, keys, updown, leftright);
  1118.  
  1119.     new color1 = CarColor[playerid][0];
  1120.     new color2 = CarColor[playerid][1];
  1121.  
  1122.     if (leftright == KEY_RIGHT)
  1123.     {
  1124.         carbrowse[playerid]++;
  1125.         if (carbrowse[playerid] > 211) carbrowse[playerid] = 0;
  1126.         DestroyVehicle(ShopCar[playerid]);
  1127.         ShopCar[playerid] = CreateVehicle(CarModels[carbrowse[playerid]], VEHSHOW_X, VEHSHOW_Y, VEHSHOW_Z, 0.0, color1, color2, 6000000);
  1128.         SetVehicleVirtualWorld(ShopCar[playerid], playerid);
  1129.         PutPlayerInVehicle(playerid, ShopCar[playerid], 0);
  1130.         TogglePlayerControllable(playerid, false);
  1131.     }
  1132.     else if (leftright == KEY_LEFT)
  1133.     {
  1134.         carbrowse[playerid]--;
  1135.         if (carbrowse[playerid] < 0) carbrowse[playerid] = 211;
  1136.         DestroyVehicle(ShopCar[playerid]);
  1137.         ShopCar[playerid] = CreateVehicle(CarModels[carbrowse[playerid]], VEHSHOW_X, VEHSHOW_Y, VEHSHOW_Z, 0.0, color1, color2, 6000000);
  1138.         SetVehicleVirtualWorld(ShopCar[playerid], playerid);
  1139.         PutPlayerInVehicle(playerid, ShopCar[playerid], 0);
  1140.         TogglePlayerControllable(playerid, false);
  1141.     }
  1142.     else if (keys == KEY_FIRE)
  1143.     {
  1144.         new vehicleid = GetPlayerVehicleID(playerid);
  1145.         if (GetPlayerMoney(playerid) >= GetVehicleCost(vehicleid))
  1146.         {
  1147.             strmid(VehicleInfo[vehicleid][vOwner], GetName(playerid), 0, strlen(GetName(playerid)), MAX_PLAYER_NAME);
  1148.             GivePlayerMoney(playerid, -GetVehicleCost(vehicleid));
  1149.             TogglePlayerControllable(playerid, true);
  1150.             CarShopping[playerid] = false;
  1151.             carbrowse[playerid] = 0;
  1152.             GameTextForPlayer(playerid, " ", 1000, 3);
  1153.             SetVehiclePos(vehicleid, OrgX[playerid], OrgY[playerid], OrgZ[playerid]);
  1154.             SetVehicleZAngle(vehicleid, OrgA[playerid]);
  1155.             SetPlayerVirtualWorld(playerid, 0);
  1156.             SetVehicleVirtualWorld(vehicleid, 0);
  1157.             SetCameraBehindPlayer(playerid);
  1158.  
  1159.             vehicleid = ShopCar[playerid];
  1160.             VehicleInfo[vehicleid][vModel] = GetVehicleModel(vehicleid);
  1161.             VehicleInfo[vehicleid][vX] = OrgX[playerid];
  1162.             VehicleInfo[vehicleid][vY] = OrgY[playerid];
  1163.             VehicleInfo[vehicleid][vZ] = OrgZ[playerid];
  1164.             VehicleInfo[vehicleid][vA] = OrgA[playerid];
  1165.             VehicleInfo[vehicleid][vColor1] = CarColor[playerid][0];
  1166.             VehicleInfo[vehicleid][vColor2] = CarColor[playerid][1];
  1167.             VehicleInfo[vehicleid][vPaintjob] = -1;
  1168.             strmid(VehicleInfo[vehicleid][vName], VehicleName[GetVehicleModel(vehicleid)-400], 0, strlen(VehicleName[GetVehicleModel(vehicleid)-400]), 128);
  1169.             strmid(VehicleInfo[vehicleid][vOwner], GetName(playerid), 0, strlen(GetName(playerid)), MAX_PLAYER_NAME);
  1170.             VehicleInfo[vehicleid][vPark] = 0;
  1171.             VehicleInfo[vehicleid][vPX] = 0.0;
  1172.             VehicleInfo[vehicleid][vPY] = 0.0;
  1173.             VehicleInfo[vehicleid][vPZ] = 0.0;
  1174.             VehicleInfo[vehicleid][vPA] = 0.0;
  1175.             for(new m = 0; m < MAX_MODS; m++) VehicleInfo[vehicleid][vMod][m] = 0;
  1176.         }
  1177.         else
  1178.         {
  1179.             new mes[64];
  1180.             format(mes, sizeof mes, "Questo veicolo (%s) costa: $%d! Tu hai solo: $%d...", VehicleName[carbrowse[playerid]], GetVehicleCost(vehicleid), GetPlayerMoney(playerid));
  1181.             SendClientMessage(playerid, RED, mes);
  1182.         }
  1183.     }
  1184.     else if (keys == KEY_SECONDARY_ATTACK)
  1185.     {
  1186.         DestroyVehicle(ShopCar[playerid]);
  1187.         TogglePlayerControllable(playerid, true);
  1188.         CarShopping[playerid] = false;
  1189.         carbrowse[playerid] = 0;
  1190.         GameTextForPlayer(playerid, " ", 1000, 3);
  1191.         SetPlayerPos(playerid, OrgX[playerid], OrgY[playerid], OrgZ[playerid]);
  1192.         SetPlayerFacingAngle(playerid, OrgA[playerid]);
  1193.         SetPlayerVirtualWorld(playerid, 0);
  1194.         SetCameraBehindPlayer(playerid);
  1195.     }
  1196.  
  1197.     new gt[32];
  1198.     if (CarShopping[playerid] == true)
  1199.     {
  1200.         format(gt, sizeof gt, "~g~%s~w~(~y~%d~w~)", VehicleName[carbrowse[playerid]], carbrowse[playerid]+400);
  1201.         GameTextForPlayer(playerid, gt, 1000000, 3);
  1202.     }
  1203.  
  1204.     SetTimerEx("BrowseCars", 300, 0, "d", playerid);
  1205.     return 1;
  1206. }
  1207.  
  1208. forward FreezeCar(playerid);
  1209. public  FreezeCar(playerid)
  1210. {
  1211.     if (CarShopping[playerid] != true) return 1;
  1212.     SetVehiclePos(ShopCar[playerid], VEHSHOW_X, VEHSHOW_Y, VEHSHOW_Z);
  1213.     SetTimerEx("FreezeCar", 100, 0, "d", playerid);
  1214.     return 1;
  1215. }
  1216.  
  1217. stock GetVehicleModelIDFromName(vname[]) // Simon
  1218. {
  1219.     for(new i = 0; i < 211; i++)
  1220.     {
  1221.         if (strfind(VehicleName[i], vname, true) != -1) return i+400;
  1222.     }
  1223.     return -1;
  1224. }
  1225.  
  1226. stock GetVehicleType(vehicleid) // Pixels^
  1227. {
  1228.     new type;
  1229. // ================== CARS =======
  1230.     switch(GetVehicleModel(vehicleid))
  1231.     {
  1232.         case
  1233.         416,   //ambulan  -  car
  1234.         445,   //admiral  -  car
  1235.         602,   //alpha  -  car
  1236.         485,   //baggage  -  car
  1237.         568,   //bandito  -  car
  1238.         429,   //banshee  -  car
  1239.         499,   //benson  -  car
  1240.         424,   //bfinject,   //car
  1241.         536,   //blade  -  car
  1242.         496,   //blistac  -  car
  1243.         504,   //bloodra  -  car
  1244.         422,   //bobcat  -  car
  1245.         609,   //boxburg  -  car
  1246.         498,   //boxville,   //car
  1247.         401,   //bravura  -  car
  1248.         575,   //broadway,   //car
  1249.         518,   //buccanee,   //car
  1250.         402,   //buffalo  -  car
  1251.         541,   //bullet  -  car
  1252.         482,   //burrito  -  car
  1253.         431,   //bus  -  car
  1254.         438,   //cabbie  -  car
  1255.         457,   //caddy  -  car
  1256.         527,   //cadrona  -  car
  1257.         483,   //camper  -  car
  1258.         524,   //cement  -  car
  1259.         415,   //cheetah  -  car
  1260.         542,   //clover  -  car
  1261.         589,   //club  -  car
  1262.         480,   //comet  -  car
  1263.         596,   //copcarla,   //car
  1264.         599,   //copcarru,   //car
  1265.         597,   //copcarsf,   //car
  1266.         598,   //copcarvg,   //car
  1267.         578,   //dft30  -  car
  1268.         486,   //dozer  -  car
  1269.         507,   //elegant  -  car
  1270.         562,   //elegy  -  car
  1271.         585,   //emperor  -  car
  1272.         427,   //enforcer,   //car
  1273.         419,   //esperant,   //car
  1274.         587,   //euros  -  car
  1275.         490,   //fbiranch,   //car
  1276.         528,   //fbitruck,   //car
  1277.         533,   //feltzer  -  car
  1278.         544,   //firela  -  car
  1279.         407,   //firetruk,   //car
  1280.         565,   //flash  -  car
  1281.         455,   //flatbed  -  car
  1282.         530,   //forklift,   //car
  1283.         526,   //fortune  -  car
  1284.         466,   //glendale,   //car
  1285.         604,   //glenshit,   //car
  1286.         492,   //greenwoo,   //car
  1287.         474,   //hermes  -  car
  1288.         434,   //hotknife,   //car
  1289.         502,   //hotrina  -  car
  1290.         503,   //hotrinb  -  car
  1291.         494,   //hotring  -  car
  1292.         579,   //huntley  -  car
  1293.         545,   //hustler  -  car
  1294.         411,   //infernus,   //car
  1295.         546,   //intruder,   //car
  1296.         559,   //jester  -  car
  1297.         508,   //journey  -  car
  1298.         400,   //landstal,   //car
  1299.         403,   //linerun  -  car
  1300.         517,   //majestic,   //car
  1301.         410,   //manana  -  car
  1302.         551,   //merit  -  car
  1303.         500,   //mesa  -  car
  1304.         418,   //moonbeam,   //car
  1305.         572,   //mower  -  car
  1306.         423,   //mrwhoop  -  car
  1307.         516,   //nebula  -  car
  1308.         582,   //newsvan  -  car
  1309.         467,   //oceanic  -  car
  1310.         404,   //peren  -  car
  1311.         514,   //petro  -  car
  1312.         603,   //phoenix  -  car
  1313.         600,   //picador  -  car
  1314.         413,   //pony  -  car
  1315.         426,   //premier  -  car
  1316.         436,   //previon  -  car
  1317.         547,   //primo  -  car
  1318.         489,   //rancher  -  car
  1319.         479,   //regina  -  car
  1320.         534,   //remingtn,   //car
  1321.         505,   //rnchlure,   //car
  1322.         442,   //romero  -  car
  1323.         440,   //rumpo  -  car
  1324.         475,   //sabre  -  car
  1325.         543,   //sadler  -  car
  1326.         605,   //sadlshit,   //car
  1327.         495,   //sandking,   //car
  1328.         567,   //savanna  -  car
  1329.         428,   //securica,   //car
  1330.         405,   //sentinel,   //car
  1331.         535,   //slamvan  -  car
  1332.         458,   //solair  -  car
  1333.         580,   //stafford,   //car
  1334.         439,   //stallion,   //car
  1335.         561,   //stratum  -  car
  1336.         409,   //stretch  -  car
  1337.         560,   //sultan  -  car
  1338.         550,   //sunrise  -  car
  1339.         506,   //supergt  -  car
  1340.         601,   //swatvan  -  car
  1341.         574,   //sweeper  -  car
  1342.         566,   //tahoma  -  car
  1343.         549,   //tampa  -  car
  1344.         420,   //taxi  -  car
  1345.         459,   //topfun  -  car
  1346.         576,   //tornado  -  car
  1347.         583,   //tug  -  car
  1348.         451,   //turismo  -  car
  1349.         558,   //uranus  -  car
  1350.         552,   //utility  -  car
  1351.         540,   //vincent  -  car
  1352.         491,   //virgo  -  car
  1353.         412,   //voodoo  -  car
  1354.         478,   //walton  -  car
  1355.         421,   //washing  -  car
  1356.         529,   //willard  -  car
  1357.         555,   //windsor  -  car
  1358.         456,   //yankee  -  car
  1359.         554,   //yosemite,   //car
  1360.         477   //zr3 50  -  car
  1361.         : type = VTYPE_CAR;
  1362.  
  1363.     // ================== MOTORBIKES =======
  1364.         case
  1365.         581,   //bf400  -  bike
  1366.         523,   //copbike  -  bike
  1367.         462,   //faggio  -  bike
  1368.         521,   //fcr900  -  bike
  1369.         463,   //freeway  -  bike
  1370.         522,   //nrg500  -  bike
  1371.         461,   //pcj600  -  bike
  1372.         448,   //pizzaboy,   //bike
  1373.         468,   //sanchez  -  bike
  1374.         586,   //wayfarer,   //bike
  1375.         471   //quad  -  quad
  1376.         : type = VTYPE_MOTORBIKE;
  1377.  
  1378.     // ================== BIKES =======
  1379.         case
  1380.         509,   //bike  -  bmx
  1381.         481,   //bmx  -  bmx
  1382.         510   //mtbike  -  bmx
  1383.         : type = VTYPE_BIKE;
  1384.  
  1385.     // ================== SEA =======
  1386.         case
  1387.         472,   //coastg  -  boat
  1388.         473,   //dinghy  -  boat
  1389.         493,   //jetmax  -  boat
  1390.         595,   //launch  -  boat
  1391.         484,   //marquis  -  boat
  1392.         430,   //predator,   //boat
  1393.         453,   //reefer  -  boat
  1394.         452,   //speeder  -  boat
  1395.         446,   //squalo  -  boat
  1396.         454   //tropic  -  boat
  1397.         : type = VTYPE_SEA;
  1398.  
  1399.     // ================== AIR =======
  1400.         case
  1401.         548,   //cargobob,   //heli
  1402.         425,   //hunter  -  heli
  1403.         417,   //leviathn,   //heli
  1404.         487,   //maverick,   //heli
  1405.         497,   //polmav  -  heli
  1406.         563,   //raindanc,   //heli
  1407.         501,   //rcgoblin,   //heli
  1408.         465,   //rcraider,   //heli
  1409.         447,   //seaspar  -  heli
  1410.         469,   //sparrow  -  heli
  1411.         488,   //vcnmav  -  heli
  1412.         592,   //androm  -  plane
  1413.         577,   //at 400  -  plane
  1414.         511,   //beagle  -  plane
  1415.         512,   //cropdust,   //plane
  1416.         593,   //dodo  -  plane
  1417.         520,   //hydra  -  plane
  1418.         553,   //nevada  -  plane
  1419.         464,   //rcbaron  -  plane
  1420.         476,   //rustler  -  plane
  1421.         519,   //shamal  -  plane
  1422.         460,   //skimmer  -  plane
  1423.         513,   //stunt  -  plane
  1424.         539   //vortex  -  plane
  1425.         : type = VTYPE_AIR;
  1426.  
  1427.     // ================== HEAVY =======
  1428.         case
  1429.         588,   //hotdog  -  car
  1430.         437,   //coach  -  car
  1431.         532,   //combine  -  car
  1432.         433,   //barracks,   //car
  1433.         414,   //mule  -  car
  1434.         443,   //packer  -  car
  1435.         470,   //patriot  -  car
  1436.         432,   //rhino  -  car
  1437.         525,   //towtruck,   //car
  1438.         531,   //tractor  -  car
  1439.         408,   //trash  -  car
  1440.         406,   //dumper  -  mtruck
  1441.         573,   //duneride,   //mtruck
  1442.         444,   //monster  -  mtruck
  1443.         556,   //monstera,   //mtruck
  1444.         557,   //monsterb,   //mtruck
  1445.         435,   //artict1  -  trailer
  1446.         450,   //artict2  -  trailer
  1447.         591,   //artict3  -  trailer
  1448.         606,   //bagboxa  -  trailer
  1449.         607,   //bagboxb  -  trailer
  1450.         610,   //farmtr1  -  trailer
  1451.         584,   //petrotr  -  trailer
  1452.         608,   //tugstair,   //trailer
  1453.         611,   //utiltr1  -  trailer
  1454.         590,   //freibox  -  train
  1455.         569,   //freiflat,   //train
  1456.         537,   //freight  -  train
  1457.         538,   //streak  -  train
  1458.         570,   //streakc  -  train
  1459.         449   //tram  -  train
  1460.         : type = VTYPE_HEAVY;
  1461.  
  1462.         // ================== MISC =======
  1463.         case
  1464.         441,   //rcbandit,   //misc
  1465.         594,   //rccam  -  misc
  1466.         564,   //rctiger  -  misc
  1467.         515,   //rdtrain  -  misc
  1468.         571   //kart  -  misc
  1469.         : type = VTYPE_MISC;
  1470.     }
  1471.     return type;
  1472. }
  1473.  
  1474. stock GetVehicleCost(vehicleid)
  1475. {
  1476.     new typeid = GetVehicleType(vehicleid);
  1477.     if (typeid == VTYPE_CAR) return CAR_COST;
  1478.     if (typeid == VTYPE_HEAVY) return TRUCK_COST;
  1479.     if (typeid == VTYPE_BIKE) return BIKE_COST;
  1480.     if (typeid == VTYPE_AIR) return PLANE_COST;
  1481.     if (typeid == VTYPE_SEA) return BOAT_COST;
  1482.     if (typeid == VTYPE_MOTORBIKE) return MOTORBIKE_COST;
  1483.     if (typeid == VTYPE_MISC) return MISC_COST;
  1484.     return 0;
  1485. }
  1486.  
  1487. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  1488. {
  1489.     return 1;
  1490. }
  1491.  
  1492. stock LockVehicle(vehicleid)
  1493. {
  1494.     new name[MAX_PLAYER_NAME];
  1495.     for(new i; i < MAX_PLAYERS; i++)
  1496.     {
  1497.         if (IsPlayerConnected(i))
  1498.         {
  1499.             if (VehicleInfo[vehicleid][vLock] == 1)
  1500.             {
  1501.                 GetPlayerName(i, name, sizeof name);
  1502.                 if (strcmp(name, VehicleInfo[vehicleid][vOwner]))
  1503.                 {
  1504.                     SetVehicleParamsForPlayer(vehicleid, i, false, true);
  1505.                 }
  1506.             }
  1507.         }
  1508.     }
  1509. }
  1510.  
  1511. stock UnlockVehicle(vehicleid)
  1512. {
  1513.     for(new i; i < MAX_PLAYERS; i++)
  1514.     {
  1515.         if (IsPlayerConnected(i))
  1516.         {
  1517.             SetVehicleParamsForPlayer(vehicleid, i, false, false);
  1518.         }
  1519.     }
  1520. }
  1521.  
  1522. stock IsVehicleSpawned(vehicleid)
  1523. {
  1524.     new Float:X,Float:Y,Float:Z;
  1525.     GetVehiclePos(vehicleid, X, Y, Z);
  1526.     if (X == 0.0 && Y == 0.0 && Z == 0.0) return 0;
  1527.     return 1;
  1528. }
  1529.  
  1530. stock GetOwnedVehicleID(playerid)
  1531. {
  1532.     for(new v = 1; v < MAX_VEHICLES; v++)
  1533.     {
  1534.         if (IsVehicleSpawned(v))
  1535.         {
  1536.             if (!strcmp(VehicleInfo[v][vOwner], GetName(playerid))) return v;
  1537.         }
  1538.     }
  1539.     return INVALID_VEHICLE_ID;
  1540. }
  1541.  
  1542. stock PlayerInVehicle(vehicleid)
  1543. {
  1544.     for(new i; i < MAX_PLAYERS; i++)
  1545.     {
  1546.         if (IsPlayerConnected(i))
  1547.         {
  1548.             if (IsPlayerInVehicle(i, vehicleid)) return i;
  1549.         }
  1550.     }
  1551.     return INVALID_PLAYER_ID;
  1552. }
  1553.  
  1554. public OnVehicleMod(playerid, vehicleid, componentid)
  1555. {
  1556.     new count;
  1557.     for(new m = 0; m < MAX_MODS; m++)
  1558.     {
  1559.         if (VehicleInfo[vehicleid][vMod][m] == 0)
  1560.         {
  1561.             count++;
  1562.             VehicleInfo[vehicleid][vMod][m] = componentid;
  1563.             break;
  1564.         }
  1565.     }
  1566.     if (count == 0) SendClientMessage(PlayerInVehicle(vehicleid), RED, "Hai superato il limite di elaborazioni. Per azzerarli scrivi /menuveicolo e seleziona 'Resetta Componenti'!");
  1567.     return 1;
  1568. }
  1569.  
  1570. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  1571. {
  1572.     VehicleInfo[vehicleid][vColor1] = color1;
  1573.     VehicleInfo[vehicleid][vColor2] = color2;
  1574.     return 1;
  1575. }
  1576.  
  1577. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  1578. {
  1579.     VehicleInfo[vehicleid][vPaintjob] = paintjobid;
  1580.     return 1;
  1581. }
  1582.  
  1583. stock strtok(const string[], &index)
  1584. {
  1585.     new length = strlen(string);
  1586.     while ((index < length) && (string[index] <= ' '))
  1587.     {
  1588.         index++;
  1589.     }
  1590.  
  1591.     new offset = index;
  1592.     new result[128];
  1593.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  1594.     {
  1595.         result[index - offset] = string[index];
  1596.         index++;
  1597.     }
  1598.     result[index - offset] = EOS;
  1599.     return result;
  1600. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement