Advertisement
Xaviour212

Ulric Vehicle System v2.0.1

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