Advertisement
Xaviour212

Ulric Vehicle System v2.0

May 4th, 2011
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 23.05 KB | None | 0 0
  1. /*==========================Ulric Vehicle System================================
  2.     Credits to:
  3.         - Xaviour212, make this filterscript
  4.         - Sheen, helping me
  5.         - Xtrememood, fixed the Lock bug
  6. //==========================Change log==========================================
  7.     In v1.6 :
  8.         - Fixed /vbuy bug
  9.         - New CMD : /vfind, /vunfind, /vadmpark
  10.         - Type /vfind - for find you car
  11.         - Type /vunfind - for destroy checkpoint of /vfind
  12.         - Type /vadmpark (RCON CMD) -  for park car
  13.     In v2.0 :
  14.         - Fixed plate bug
  15.         - Manual set cost for Vehicle
  16.         - Fixed bug in lock vehicle
  17.         - Added a new command, /setcost and /sellcarto
  18.         - New GameText for someone who entered car if it he is the owner of the car
  19.         - Type /setcost (RCON CMD) for set a vehicle cost
  20.         - Type /sellcarto for sell you car to a player
  21. ====================Dont Remove The Credits, Please.....======================*/
  22.  
  23. #include <a_samp>
  24. #include <dini>
  25. #include <sscanf>
  26.  
  27. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  28.  
  29. #define Blue 0x0259EAAA
  30. #define Red 0xFF0000AA
  31. #define Green 0x16EB43FF
  32.  
  33. #define DefVehCost 80000 // You can change this
  34. #define DefVehPlate "~Xav~212"
  35.  
  36. enum VehicleData
  37. {
  38.     Cost,
  39.     Locked,
  40.     Parked,
  41.     Owner,
  42.     SellCost,
  43.     VehID
  44. };
  45. new VehicleInfo[MAX_VEHICLES][VehicleData];
  46.  
  47. enum CarSellData
  48. {
  49.     Owner,
  50.     SellCost,
  51.     VehID
  52. };
  53. new SellCarInfo[CarSellData];
  54.  
  55. new file[256];
  56. new VehNames[212][] =
  57. {
  58.         "Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster",
  59.         "Stretch","Manana","Infernus","Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto",
  60.         "Taxi","Washington","Bobcat","Mr Whoopee","BF Injection","Hunter","Premier","Enforcer","Securicar","Banshee",
  61.         "Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie","Stallion","Rumpo",
  62.         "RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer",
  63.         "Turismo","Speeder","Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer",
  64.         "Pcj - 600","Faggio","Freeway","RC Baron","RC Raider","Glendale","Oceanic","Sanchez","Sparrow","Patriot",
  65.         "Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","Zr3 50","Walton","Regina","Comet","Bmx",
  66.         "Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo",
  67.         "Greenwood","Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa",
  68.         "RC Goblin","Hotring Racer A","Hotring Racer B","Bloodring Banger","Rancher","Super GT","Elegant",
  69.         "Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain","Nebula","Majestic",
  70.         "Buccaneer","Shamal","Hydra","FCR - 900","NRG - 500","Hpv - 1000","Cement Truck","Tow Truck","Fortune","Cadrona",
  71.         "FBI Truck","Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight",
  72.         "Streak","Vortex","Vincent","Bullet","Clover","Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob",
  73.         "Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A","Monster B","Uranus",
  74.         "Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight",
  75.         "Trailer","Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford",
  76.         "BF-400","Newsvan","Tug","Trailer A","Emperor","Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C",
  77.         "Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)","Police Car (LVPD)","Police Ranger",
  78.         "Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
  79.         "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
  80. };
  81.  
  82. public OnFilterScriptInit()
  83. {
  84.     print("\n--------------------------------------");
  85.     print(" Ulric Vehicle System by Xaviour212");
  86.     print("--------------------------------------\n");
  87.     AddStaticVehicle(500,2487.1797,-1682.7505,13.0802,92.0700,4,1); //This Mesa only for test, you can buy all vehicle in your server if it vehicle not in unbuyable
  88.     for(new i = 0; i < MAX_VEHICLES; i++)
  89.     {
  90.         if(!dini_Exists(VFile(i)))
  91.         {
  92.             SetVehicleNumberPlate(i, DefVehPlate);//You can change this
  93.             VehicleInfo[i][Cost] = DefVehCost;
  94.             SetVehicleCost(i, VehicleInfo[i][Cost]);
  95.         }
  96.         else if(dini_Exists(VFile(i)))
  97.         {
  98.             SetVehicleNumberPlate(i, dini_Get(VFile(i), "Plate"));
  99.             VehicleInfo[i][Cost] = dini_Int(VFile(i), "Cost");
  100.             SetVehicleCost(i, VehicleInfo[i][Cost]);
  101.             VehicleInfo[i][Locked] = dini_Int(VFile(i), "Lock");
  102.             VehicleInfo[i][Parked] = dini_Int(VFile(i), "Parked");
  103.         }
  104.     }
  105.     return 1;
  106. }
  107.  
  108. public OnVehicleSpawn(vehicleid)
  109. {
  110.     new playerid;
  111.     for(new i = 0; i < MAX_VEHICLES; i++)
  112.     if(dini_Exists(VFile(i)))
  113.     {
  114.         if(VehicleInfo[i][Parked] == 1)
  115.         {
  116.             SetVehiclePos(i, dini_Float(VFile(GetPlayerVehicleID(playerid)), "X"), dini_Float(VFile(GetPlayerVehicleID(playerid)), "Y"), dini_Float(VFile(GetPlayerVehicleID(playerid)), "Z"));
  117.         }
  118.     }
  119.     return 1;
  120. }
  121.  
  122. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  123. {
  124.     new string[100];
  125.     if(dini_Int(VFile(vehicleid),"UnBuyable") == 0 && dini_Int(VFile(vehicleid),"Owned") == 1 && dini_Int(PFile(playerid),"CarID") != vehicleid)
  126.     {
  127.         format(string, sizeof(string), "~r~This %s has belogs to %s. And this car is not available for purchase", VehNames[GetVehicleModel(vehicleid)-400],dini_Get(VFile(vehicleid),"Owner"));
  128.         GameTextForPlayer(playerid, string, 3000, 3);
  129.     }
  130.     if(dini_Int(VFile(vehicleid),"UnBuyable") == 0 && dini_Int(VFile(vehicleid),"Owned") == 1 && dini_Int(PFile(playerid),"CarID") == vehicleid)
  131.     {
  132.         format(string, sizeof(string), "~g~Welcome to you %s, %s. Enjoy with you car", VehNames[GetVehicleModel(vehicleid)-400], Gn(playerid));
  133.         GameTextForPlayer(playerid, string, 3000, 3);
  134.     }
  135.     else if(dini_Int(VFile(vehicleid),"UnBuyable") == 1)
  136.     {
  137.         format(string, sizeof(string), "~b~This %s in Unbuyable by Administration server", VehNames[GetVehicleModel(vehicleid)-400]);
  138.         GameTextForPlayer(playerid, string, 3000, 4);
  139.     }
  140.     else if(dini_Int(VFile(vehicleid),"UnBuyable") == 0 && dini_Int(VFile(vehicleid),"Owned") == 0)
  141.     {
  142.         format(string, sizeof(string), "~g~This %s in Buyable. \nThe cost is %d", VehNames[GetVehicleModel(vehicleid)-400], VehicleInfo[vehicleid][Cost]);
  143.         GameTextForPlayer(playerid, string, 3000, 4);
  144.     }
  145.     return 1;
  146. }
  147.  
  148. public OnPlayerUpdate(playerid)
  149. {
  150.     new veh1 = GetPlayerVehicleID(playerid);
  151.     if(IsPlayerInAnyVehicle(playerid))
  152.     {
  153.         if(dini_Int(VFile(veh1),"Lock") == 1 && veh1!=Pc(playerid))
  154.         {
  155.             new string[126];
  156.             RemovePlayerFromVehicle(playerid);
  157.             format(string, sizeof(string), "This %s locked by %s", VehNames[GetVehicleModel(veh1)-400],dini_Get(VFile(veh1),"Owner"));
  158.             SendClientMessage(playerid, Red, string);
  159.         }
  160.     }
  161.     return 1;
  162. }
  163.  
  164. public OnPlayerCommandText(playerid, cmdtext[])
  165. {
  166.     dcmd(vbuy,4,cmdtext);
  167.     dcmd(vsell,5,cmdtext);
  168.     dcmd(vcall,5,cmdtext);
  169.     dcmd(vunbuyable,10,cmdtext);
  170.     dcmd(vbuyable,8,cmdtext);
  171.     dcmd(vlock,5,cmdtext);
  172.     dcmd(vunlock,7,cmdtext);
  173.     dcmd(vpark,5,cmdtext);
  174.     dcmd(vplate,6,cmdtext);
  175.     dcmd(vhelp,5,cmdtext);
  176.     //============================Update in v.16================================
  177.     dcmd(vfind,5,cmdtext);
  178.     dcmd(vunfind,7,cmdtext);
  179.     dcmd(vadmpark,8,cmdtext);
  180.     //========================Added in v2.0=====================================
  181.     dcmd(setcost,7,cmdtext);
  182.     dcmd(sellcarto,9,cmdtext);
  183.    
  184.     return 0;
  185. }
  186.  
  187. dcmd_vbuy(playerid, params[])
  188. {
  189.     #pragma unused params
  190.     new vehicleid = GetPlayerVehicleID(playerid), string[50];
  191.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in Vehicle to use this command");
  192.     if(dini_Int(VFile(vehicleid),"Owned")== 1) return SendClientMessage(playerid,Red,"[ERROR]This car is already owned");
  193.     if(dini_Int(VFile(vehicleid),"UnBuyable")== 1) return SendClientMessage(playerid,Red,"[ERROR]This car in unbuyable");
  194.     if(dini_Int(PFile(playerid),"HaveCar")== 1) return SendClientMessage(playerid,Red,"[ERROR]You already have a Car");
  195.     if(GetPlayerMoney(playerid)< VehicleInfo[vehicleid][Cost]) return SendClientMessage(playerid,Red,"[ERROR]You dont have a some money");
  196.     if(!dini_Exists(PFile(playerid)))
  197.     {
  198.         dini_Create(PFile(playerid));
  199.         SetPlayerVehicle(playerid, vehicleid);
  200.     }
  201.     else if(dini_Exists(PFile(playerid)))
  202.     {
  203.         SetPlayerVehicle(playerid, vehicleid);
  204.     }
  205.     if(!dini_Exists(VFile(vehicleid)))
  206.     {
  207.         dini_Create(VFile(vehicleid));
  208.         SetVehicleOwner(vehicleid, playerid);
  209.     }
  210.     else if(dini_Exists(VFile(vehicleid)))
  211.     {
  212.         SetVehicleOwner(vehicleid, playerid);
  213.     }
  214.     format(string, sizeof(string), "You has buy a %s", VehNames[GetVehicleModel(vehicleid)-400]);
  215.     SendClientMessage(playerid, Green, string);
  216.     SendClientMessage(playerid, Blue, "To call your vehicle, type /vcall. Type /vhelp to help command");
  217.     GivePlayerMoney(playerid, VehicleInfo[vehicleid][Cost]);
  218.     return 1;
  219. }
  220.  
  221. dcmd_vsell(playerid, params[])
  222. {
  223.     #pragma unused params
  224.     new vehicleid = GetPlayerVehicleID(playerid);
  225.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in Vehicle to use this command");
  226.     if(dini_Int(PFile(playerid),"HaveCar") == 0) return SendClientMessage(playerid, Red, "[ERROR]You dont have a car");
  227.     if(vehicleid!=Pc(playerid)) return SendClientMessage(playerid,Red,"[ERROR]This vehicle is not your car");
  228.     SetPlayerNotHaveVehicle(playerid);
  229.     SetVehicleNotOwned(vehicleid);
  230.     dini_Remove(VFile(vehicleid));
  231.     SendClientMessage(playerid, Green,"You has sell your car. Now you can buy a car again");
  232.     GivePlayerMoney(playerid, VehicleInfo[vehicleid][Cost]-1000);
  233.     SetVehicleToRespawn(vehicleid);
  234.     return 1;
  235. }
  236.  
  237. dcmd_vcall(playerid, params[])
  238. {
  239.     #pragma unused params
  240.     if(dini_Int(PFile(playerid),"HaveCar") == 0)return SendClientMessage(playerid,Red,"[ERROR]You dont have a car");
  241.     if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, Red, "[ERROR]You must not used vehicle to call you car");
  242.     CallVehicle(playerid);
  243.     SendClientMessage(playerid, Green, "You has call you vehicle. Enjoy with you car");
  244.     return 1;
  245. }
  246.  
  247. dcmd_vunbuyable(playerid, params[])
  248. {
  249.     #pragma unused params
  250.     new vehicleid = GetPlayerVehicleID(playerid), string[50];
  251.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Red,"[ERROR]Only RCON Admin can use this command");
  252.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in vehicle to use this command");
  253.     if(dini_Int(VFile(vehicleid),"UnBuyable")== 1) return SendClientMessage(playerid, Red, "[ERROR]This vehicle already in unbuyable");
  254.     if(!dini_Exists(VFile(vehicleid)))
  255.     {
  256.         dini_Create(VFile(vehicleid));
  257.         SetUnbuyableVehicle(vehicleid, 1);
  258.     }
  259.     else
  260.     {
  261.         SetUnbuyableVehicle(vehicleid, 1);
  262.     }
  263.     format(string, sizeof(string), "Now this %s is in unbuyable", VehNames[GetVehicleModel(vehicleid)-400]);
  264.     SendClientMessage(playerid, Green, string);
  265.     return 1;
  266. }
  267.  
  268. dcmd_vbuyable(playerid, params[])
  269. {
  270.     #pragma unused params
  271.     new vehicleid = GetPlayerVehicleID(playerid), string[50];
  272.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Red,"[ERROR]Only RCON Admin can use this command");
  273.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in vehicle to use this command");
  274.     if(dini_Int(VFile(vehicleid),"UnBuyable")== 0) return SendClientMessage(playerid, Red, "[ERROR]This vehicle already in buyable");
  275.     if(!dini_Exists(VFile(vehicleid)))
  276.     {
  277.         dini_Create(VFile(vehicleid));
  278.         SetUnbuyableVehicle(vehicleid, 0);
  279.     }
  280.     else
  281.     {
  282.         SetUnbuyableVehicle(vehicleid, 0);
  283.     }
  284.     format(string, sizeof(string), "Now this %s is in buyable", VehNames[GetVehicleModel(vehicleid)-400]);
  285.     SendClientMessage(playerid, Green, string);
  286.     return 1;
  287. }
  288.  
  289. dcmd_vlock(playerid, params[])
  290. {
  291.     #pragma unused params
  292.     new vehicleid = GetPlayerVehicleID(playerid), string[50];
  293.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in vehicle to use this command");
  294.     if(dini_Int(PFile(playerid),"HaveCar") == 0) return SendClientMessage(playerid, Red, "[ERROR]You dont have a car");
  295.     if(vehicleid!=Pc(playerid)) return SendClientMessage(playerid,Red,"[ERROR]This vehicle is not your car");
  296.     if(VehicleInfo[vehicleid][Locked] == 1) return SendClientMessage(playerid, Red, "[ERROR]This vehicle has been locked");
  297.     SetVehicleLockStatus(vehicleid, 1);
  298.     format(string, sizeof(string), "Now this %s has been locked", VehNames[GetVehicleModel(vehicleid)-400]);
  299.     SendClientMessage(playerid, Green, string);
  300.     return 1;
  301. }
  302.  
  303. dcmd_vunlock(playerid, params[])
  304. {
  305.     #pragma unused params
  306.     new vehicleid = GetPlayerVehicleID(playerid), string[100];
  307.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in vehicle to use this command");
  308.     if(dini_Int(PFile(playerid),"HaveCar") == 0) return SendClientMessage(playerid, Red, "[ERROR]You dont have a car");
  309.     if(vehicleid!=Pc(playerid)) return SendClientMessage(playerid,Red,"[ERROR]This vehicle is not your car");
  310.     if(VehicleInfo[vehicleid][Locked] == 0) return SendClientMessage(playerid, Red, "[ERROR]This vehicle not in locked");
  311.     SetVehicleLockStatus(vehicleid, 0);
  312.     format(string, sizeof(string), "Now this %s has been unlocked", VehNames[GetVehicleModel(vehicleid)-400]);
  313.     SendClientMessage(playerid, Green, string);
  314.     return 1;
  315. }
  316.  
  317. dcmd_vpark(playerid, params[])
  318. {
  319.     #pragma unused params
  320.     new vehicleid = GetPlayerVehicleID(playerid), string[100];
  321.     new Float:A, Float:B, Float:C;
  322.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in vehicle to use this command");
  323.     if(dini_Int(PFile(playerid),"HaveCar") == 0) return SendClientMessage(playerid, Red, "[ERROR]You dont have a car");
  324.     if(vehicleid!=Pc(playerid)) return SendClientMessage(playerid,Red,"[ERROR]This vehicle is not your car");
  325.     ParkVehicle(vehicleid);
  326.     format(string, sizeof(string), "You has park you car in %f, %f, %f", A, B, C);
  327.     SendClientMessage(playerid, Green, string);
  328.     return 1;
  329. }
  330.  
  331. dcmd_vplate(playerid, params[])
  332. {
  333.     new string[50], vehicleid = GetPlayerVehicleID(playerid);
  334.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in vehicle to use this command");
  335.     if(!strlen(params)) return SendClientMessage(playerid, Red, "[ERROR]Use: /vplate [plate]");
  336.     if(dini_Int(PFile(playerid),"HaveCar") == 0) return SendClientMessage(playerid, Red, "[ERROR]You dont have a car");
  337.     if(vehicleid!=Pc(playerid)) return SendClientMessage(playerid,Red,"[ERROR]This vehicle is not your car");
  338.     dini_Set(VFile(vehicleid),"Plate",params);
  339.     SetVehicleNumberPlate(vehicleid, params);
  340.     format(string, sizeof(string), "You car plate has been changed to %s", params);
  341.     SendClientMessage(playerid, Green, string);
  342.     SetVehicleToRespawn(vehicleid);
  343.     return 1;
  344. }
  345.  
  346. dcmd_vfind(playerid, params[])
  347. {
  348.     #pragma unused params
  349.     if(dini_Int(PFile(playerid),"HaveCar") == 0) return SendClientMessage(playerid, Red, "[ERROR]You dont have a car");
  350.     new Float:A, Float:B, Float:C;
  351.     GetVehiclePos(Pc(playerid),A,B,C);
  352.     SetPlayerRaceCheckpoint(playerid, 1, A, B, C, 0.0, 0.0, 0.0, 2);
  353.     SendClientMessage(playerid, Green, "Follow checkpoint to find you car");
  354.     return 1;
  355. }
  356.  
  357. dcmd_vunfind(playerid, params[])
  358. {
  359.     #pragma unused params
  360.     DisablePlayerRaceCheckpoint(playerid);
  361.     SendClientMessage(playerid, Green, "Checkpoint has been destroyed");
  362.     return 1;
  363. }
  364.  
  365. dcmd_vhelp(playerid, params[])
  366. {
  367.     #pragma unused params
  368.     SendClientMessage(playerid, Blue, "Ulric Vehicle System by ~Xaviour212~");
  369.     SendClientMessage(playerid, Green, "Type /vbuy to buy a vehicle");
  370.     SendClientMessage(playerid, Green, "Type /vsell to sell you car");
  371.     SendClientMessage(playerid, Green, "Type /vcall to call your vehicle");
  372.     SendClientMessage(playerid, Green, "Type /vlock to lock your car");
  373.     SendClientMessage(playerid, Green, "Type /vunlock to unlock your car");
  374.     SendClientMessage(playerid, Green, "Type /vpark to park your vehicle");
  375.     SendClientMessage(playerid, Green, "Type /vplate to change your car plate");
  376.     SendClientMessage(playerid, Green, "Type /vfind to find you car");
  377.     SendClientMessage(playerid, Green, "Type /vunfind to destroy a checkpoint from /vfind");
  378.     if(IsPlayerAdmin(playerid))
  379.     {
  380.         SendClientMessage(playerid, Blue, "Rcon Commands");
  381.         SendClientMessage(playerid, Green, "Type /vbuyable to set a car to buyable");
  382.         SendClientMessage(playerid, Green, "Type /vunbuyable to set a car to unbuyable");
  383.         SendClientMessage(playerid, Green, "Type /vadmpark to park a vehicle");
  384.     }
  385.     return 1;
  386. }
  387.  
  388. dcmd_vadmpark(playerid, params[])
  389. {
  390.     #pragma unused params
  391.     new vehicleid = GetPlayerVehicleID(playerid), string[100];
  392.     new Float:A, Float:B, Float:C;
  393.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Red,"[ERROR]Only RCON admin can use this command");
  394.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in vehicle to use this command");
  395.     ParkVehicle(vehicleid);
  396.     format(string, sizeof(string), "You has park this %s in %f, %f, %f", VehNames[GetVehicleModel(vehicleid)-400], A, B, C);
  397.     SendClientMessage(playerid, Green, string);
  398.     return 1;
  399. }
  400.  
  401. dcmd_setcost(playerid, params[])
  402. {
  403.     new vehicleid = GetPlayerVehicleID(playerid), string[100];
  404.     new cost;
  405.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Red,"[ERROR]Only RCON admin can use this command");
  406.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in vehicle to use this command");
  407.     if(sscanf(params,"d",cost))return SendClientMessage(playerid, Red, "[ERROR]Usage: /setcost [Amount]");
  408.     SetVehicleCost(vehicleid, cost);
  409.     format(string, sizeof(string), "You has changed this %s cost to %d", VehNames[GetVehicleModel(vehicleid)-400], cost);
  410.     SendClientMessage(playerid, Green, string);
  411.     return 1;
  412. }
  413.  
  414. dcmd_sellcarto(playerid, params[])
  415. {
  416.     new vehicleid = GetPlayerVehicleID(playerid), string[100];
  417.     new cost, player1, tmp[128];
  418.     if(dini_Int(PFile(playerid),"HaveCar") == 0) return SendClientMessage(playerid, Red, "[ERROR]You dont have a car");
  419.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Red,"[ERROR]You must in Vehicle to use this command");
  420.     if(vehicleid!=Pc(playerid)) return SendClientMessage(playerid,Red,"[ERROR]This vehicle is not your car");
  421.     if(sscanf(params,"dd",player1, cost))return SendClientMessage(playerid, Red, "[ERROR]Usage: /sellcarto [PlayerID] [Cost]");
  422.     SetVehicleCost(vehicleid, cost);
  423.     SellCarInfo[Owner] = playerid;
  424.     SellCarInfo[VehID] = vehicleid;
  425.     SellCarInfo[SellCost] = cost;
  426.     format(string, sizeof(string), "You has sell this %s to %s with cost %d", VehNames[GetVehicleModel(vehicleid)-400], Gn(player1), cost);
  427.     SendClientMessage(playerid, Green, string);
  428.     format(tmp, sizeof(tmp), "%s has sell a %s to you with a cost %d", Gn(playerid), VehNames[GetVehicleModel(vehicleid)-400], cost);
  429.     ShowPlayerDialog(player1, 1338, DIALOG_STYLE_MSGBOX, "Do you agree with its bid?", tmp, "Yes", "No");
  430.     return 1;
  431. }
  432.  
  433. public OnPlayerEnterRaceCheckpoint(playerid)
  434. {
  435.     DisablePlayerRaceCheckpoint(playerid);
  436.     SendClientMessage(playerid, Green, "Your car has been found");
  437.     return 1;
  438. }
  439.  
  440. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  441. {
  442.     if(dialogid == 1338)
  443.     {
  444.         if(response)
  445.         {
  446.             if(GetPlayerMoney(playerid) < SellCarInfo[SellCost])
  447.             {
  448.                 new string[256], tmp[256];
  449.                 GiveCarTo(SellCarInfo[VehID],SellCarInfo[Owner], playerid, SellCarInfo[SellCost]);
  450.                 format(string, sizeof(string), "You has accepted the bid of %s", Gn(SellCarInfo[Owner]));
  451.                 SendClientMessage(playerid, Green, string);
  452.                 format(tmp, sizeof(tmp), "%s has accepted your offers", Gn(playerid));
  453.                 SendClientMessage(SellCarInfo[Owner], Green, tmp);
  454.             }
  455.             else
  456.             {
  457.                 SendClientMessage(playerid, Red, "[ERROR]You dont have some money");
  458.             }
  459.         }
  460.         else
  461.         {
  462.             new string[128], vehicleid;
  463.             format(string, sizeof(string), "%s has rejected your offers", Gn(playerid));
  464.             SendClientMessage(VehicleInfo[vehicleid][Owner], Red, string);
  465.         }
  466.         return 1;
  467.     }
  468.     return 0;
  469. }
  470. /*==============================================================================
  471.                                 Function
  472. ==============================================================================*/
  473. forward SetVehicleCost(vehicleid, cost);
  474. public SetVehicleCost(vehicleid, cost)
  475. {
  476.     dini_IntSet(VFile(vehicleid),"Cost",cost);
  477.     VehicleInfo[vehicleid][Cost] = cost;
  478. }
  479.  
  480. forward SetPlayerVehicle(playerid, vehicleid);
  481. public SetPlayerVehicle(playerid, vehicleid)
  482. {
  483.     dini_IntSet(PFile(playerid),"HaveCar",1);
  484.     dini_IntSet(PFile(playerid),"CarID",vehicleid);
  485. }
  486.  
  487. forward SetVehicleOwner(vehicleid, playerid);
  488. public SetVehicleOwner(vehicleid, playerid)
  489. {
  490.     dini_IntSet(VFile(vehicleid),"Owned",1);
  491.     dini_Set(VFile(vehicleid),"Owner",Gn(playerid));
  492.     dini_Set(VFile(vehicleid),"Plate",Gn(playerid));
  493. }
  494.  
  495. forward SetPlayerNotHaveVehicle(playerid);
  496. public SetPlayerNotHaveVehicle(playerid)
  497. {
  498.     dini_IntSet(PFile(playerid),"HaveCar",0);
  499.     dini_Set(PFile(playerid),"CarID","None");
  500. }
  501.  
  502. forward SetVehicleNotOwned(vehicleid);
  503. public SetVehicleNotOwned(vehicleid)
  504. {
  505.     dini_IntSet(VFile(vehicleid),"Owner",0);
  506.     dini_IntSet(VFile(vehicleid),"Owned",0);
  507.     dini_IntSet(VFile(vehicleid),"UnBuyable",0);
  508.     SetVehicleLockStatus(vehicleid, 0);
  509. }
  510.  
  511. forward CallVehicle(playerid);
  512. public CallVehicle(playerid)
  513. {
  514.     new Float:p[4];
  515.     GetPlayerPos(playerid,p[0],p[1],p[2]);
  516.     GetPlayerFacingAngle(playerid,p[3]);
  517.     SetVehiclePos(Pc(playerid),p[0],p[1],p[2]);
  518.     SetVehicleZAngle(Pc(playerid),p[3]);
  519.     PutPlayerInVehicle(playerid,Pc(playerid),0);
  520. }
  521.  
  522. SetUnbuyableVehicle(vehicleid, status)
  523. {
  524.     dini_IntSet(VFile(vehicleid),"UnBuyable",status);
  525.     dini_IntSet(VFile(vehicleid),"Owned",0);
  526.     dini_IntSet(VFile(vehicleid),"Owner",0);
  527. }
  528.  
  529. SetVehicleLockStatus(vehicleid, status)
  530. {
  531.     dini_IntSet(VFile(vehicleid),"Lock",status);
  532.     VehicleInfo[vehicleid][Locked] = status;
  533. }
  534.  
  535. GiveCarTo(vehicleid, playerid, playerid2, cost)
  536. {
  537.     SetPlayerVehicle(playerid2, vehicleid);
  538.     SetPlayerNotHaveVehicle(playerid);
  539.     GivePlayerMoney(playerid, cost);
  540.     GivePlayerMoney(playerid2, -cost);
  541.     SetVehicleOwner(vehicleid, playerid2);
  542. }
  543.  
  544. forward ParkVehicle(vehicleid);
  545. public ParkVehicle(vehicleid)
  546. {
  547.     new playerid;
  548.     new Float:A, Float:B, Float:C;
  549.     dini_IntSet(VFile(vehicleid),"Parked",1);
  550.     GetVehiclePos(Pc(playerid),A,B,C);
  551.     dini_FloatSet(VFile(vehicleid),"X",A);
  552.     dini_FloatSet(VFile(vehicleid),"Y",B);
  553.     dini_FloatSet(VFile(vehicleid),"Z",C);
  554.     VehicleInfo[vehicleid][Parked] = 1;
  555. }
  556.  
  557. stock Gn(playerid)
  558. {
  559.     new pname[24];
  560.     GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
  561.     return pname;
  562. }
  563.  
  564. stock PFile(playerid)
  565. {
  566.     format(file,64,"Cars/Users/%s.ini",Gn(playerid));
  567.     return file;
  568. }
  569.  
  570. stock VFile(vehicleid)
  571. {
  572.     new Car[64];
  573.     format(Car,64,"Cars/%d.ini",vehicleid);
  574.     return Car;
  575. }
  576.  
  577. stock Pc(playerid) return dini_Int(PFile(playerid),"CarId");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement