Advertisement
Private200

Dynamic Vehicle and Dealership system [SQL]

Apr 5th, 2016
3,369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 20.36 KB | None | 0 0
  1. #include <a_samp>
  2. #include <easydb>
  3. #include <sscanf2>
  4. #include <zcmd>
  5. #include <streamer>
  6. #include <dialogs>
  7.  
  8. #define PLAYER_MAX_VEHICLES 5
  9. #define MAX_DEALERSHIP_VEHICLES 24
  10.  
  11. new bool:CanSpawnVehicle[MAX_PLAYERS];
  12. new VehicleCheckpoint[MAX_PLAYERS];
  13. new ParkingCheckpoint[MAX_PLAYERS];
  14.  
  15. #if !defined INFINITY
  16.     #define INFINITY (Float:0x7F800000)
  17. #endif
  18.  
  19. #if !defined isnull
  20.     #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  21. #endif
  22.  
  23. enum VehicleEnum
  24. {
  25.     vOwner[24],
  26.     dbID,
  27.     vID,
  28.     vModel,
  29.     Float:vPos_X,
  30.     Float:vPos_Y,
  31.     Float:vPos_Z,
  32.     Float:vAngle,
  33.     vPrice
  34. };
  35. new vInfo[MAX_VEHICLES][VehicleEnum];
  36.  
  37. /* Dealership locations are standing like:
  38.  
  39. PosX ( Range of point for player to buy car)
  40. PosY
  41. PosZ
  42. ___________________________________________
  43.  
  44. SpawnX ( Positions where cars will spawn after buying )
  45. SpawnY
  46. SpawnZ
  47. ___________________________________________
  48.  
  49. Dealership name (describes itself || MUST BE DEALERSHIP DATABASE NAME!)
  50.  
  51. */
  52.  
  53. enum DealershipInfo
  54. {
  55.     Float:DS_PosX,
  56.     Float:DS_PosY,
  57.     Float:DS_PosZ,
  58.     Float:DS_SpawnX,
  59.     Float:DS_SpawnY,
  60.     Float:DS_SpawnZ,
  61.     DealershipName[36]
  62. }
  63.  
  64. new DealershipLocations[][DealershipInfo] =
  65. {
  66.     {542.9274,-1292.7112,17.2422, 526.5967,-1284.5935,16.9692, "Grotti"}
  67. };
  68.  
  69. new vTable;
  70. new dsTable[MAX_PLAYERS];
  71. new dsname[MAX_PLAYERS][36];
  72.  
  73. // STOCKINGS
  74.  
  75.  
  76. stock UpdatePlayerVehicle(playerid, vehicleid)
  77. {
  78.     new query[256], dbid = vInfo[vehicleid][dbID];
  79.     format(query, sizeof query, "UPDATE `Vehicles` SET PosX = '%f', PosY = '%f',PosZ = '%f', Angle='%f' WHERE id='%d'",
  80.     vInfo[vehicleid][vPos_X], vInfo[vehicleid][vPos_Y], vInfo[vehicleid][vPos_Z], vInfo[vehicleid][vAngle], dbid);
  81.     DB::Query(query, false);
  82.     printf("Vehicle ID %d has been saved. [%s vehicle]", vehicleid, GetName(playerid));
  83.     return 1;
  84. }
  85.  
  86. stock LoadPlayerVehicle(playerid, vid)
  87. {
  88.     new query[200];
  89.     format(query, sizeof(query), "SELECT * FROM `Vehicles` WHERE `id`='%d' LIMIT 1", vid);
  90.     new DBResult:results = DB::Query(query, false);
  91.  
  92.     if(db_num_rows(results))
  93.     {
  94.         new vehOwner[24];
  95.         db_get_field(results, 1, vehOwner, 24);
  96.  
  97.         if(!strcmp(vehOwner, GetName(playerid), true))
  98.         {
  99.             if(CanSpawnVehicle[playerid] == true)
  100.             {
  101.                 new dbid[10], id;
  102.                 db_get_field(results, 0, dbid, 10);
  103.                 id=strval(dbid);
  104.  
  105.                 new vehiclemodel[50], model;
  106.                 db_get_field(results, 2, vehiclemodel, 50);
  107.                 model=strval(vehiclemodel);
  108.  
  109.                 new vehposx[50], Float:PosX;
  110.                 db_get_field(results, 3, vehposx, 50);
  111.                 PosX=strval(vehposx);
  112.  
  113.                 new vehposy[50], Float:PosY;
  114.                 db_get_field(results, 4, vehposy, 50);
  115.                 PosY=strval(vehposy);
  116.  
  117.                 new vehposz[50], Float:PosZ;
  118.                 db_get_field(results, 5, vehposz, 50);
  119.                 PosZ=strval(vehposz);
  120.  
  121.                 new vprice = db_get_field_int(results, 7);
  122.  
  123.                 new Float:angle = db_get_field_float(results, 6);
  124.  
  125.                 new vehicleid = CreateVehicle(model, PosX, PosY, PosZ, angle, 0, 0, -1);
  126.  
  127.                 vInfo[vehicleid][vID] = vehicleid;
  128.                 vInfo[vehicleid][dbID] = id;
  129.                 vInfo[vehicleid][vPos_X] = PosX;
  130.                 vInfo[vehicleid][vPos_Y] = PosY;
  131.                 vInfo[vehicleid][vPos_Z] = PosZ;
  132.                 vInfo[vehicleid][vAngle] = angle;
  133.  
  134.                 vInfo[vehicleid][vPrice] = vprice;
  135.  
  136.                 format(vInfo[vehicleid][vOwner], MAX_PLAYER_NAME, "%s", GetName(playerid));
  137.                
  138.                 CanSpawnVehicle[playerid] = false;
  139.  
  140.                 VehicleCheckpoint[playerid] = CreateDynamicCP(PosX, PosY, PosZ, 6.25, 0, 0, playerid, -1);
  141.  
  142.                 new string[128];
  143.                 format(string, sizeof string, "{FF0000}[VEHICLE SPAWN] {FFFFFF}Your %s has been spawned and marked on the minimap", GetVehicleModelName(model));
  144.                 SendClientMessage(playerid, -1, string);
  145.             }
  146.             else SendClientMessage(playerid, -1, "{FF0000}Another vehicle is already spawned!");
  147.         }
  148.         else SendClientMessage(playerid, -1, "{FF0000}This vehicle ID does not belong to you!");
  149.     }
  150.     return 1;
  151. }
  152.  
  153. stock GiveVehicle(playerid, model, price)
  154. {
  155.     new Float:Veh_SpawnPos[4];
  156.    
  157.     for(new i; i < sizeof DealershipLocations; i++)
  158.     {
  159.         if(!strcmp(DealershipLocations[i][DealershipName], dsname[playerid], true))
  160.         {
  161.             Veh_SpawnPos[0] = DealershipLocations[i][DS_SpawnX];
  162.             Veh_SpawnPos[1] = DealershipLocations[i][DS_SpawnY];
  163.             Veh_SpawnPos[2] = DealershipLocations[i][DS_SpawnZ];
  164.             break;
  165.         }
  166.     }
  167.    
  168.     if(GetPlayerMoney(playerid) >= price)
  169.     {
  170.         GivePlayerMoney(playerid, -price);
  171.         new carid = CreateVehicle(model, Veh_SpawnPos[0],Veh_SpawnPos[1],Veh_SpawnPos[2],0, 0, 0, -1, 1);
  172.         PutPlayerInVehicle(playerid, carid, 0);
  173.  
  174.  
  175.         vInfo[carid][vID] = carid;
  176.         vInfo[carid][vModel] = model;
  177.         vInfo[carid][vPos_X] = Veh_SpawnPos[0];
  178.         vInfo[carid][vPos_Y] = Veh_SpawnPos[1];
  179.         vInfo[carid][vPos_Z] = Veh_SpawnPos[2];
  180.         vInfo[carid][vAngle] = 238.2809;
  181.         vInfo[carid][vPrice] = price;
  182.         format(vInfo[carid][vOwner], MAX_PLAYER_NAME, GetName(playerid));
  183.         print(vInfo[carid][vOwner]);
  184.         vInfo[carid][dbID] = DB::RetrieveLastKey(vTable, _, _, "Owner", GetName(playerid));
  185.         DB::CreateRow(vTable, "Owner", GetName(playerid));
  186.  
  187.         DB::SetLastIntEntry(vTable, "Model", model, GetName(playerid));
  188.         DB::SetLastFloatEntry(vTable, "PosX", Veh_SpawnPos[0], GetName(playerid));
  189.         DB::SetLastFloatEntry(vTable, "PosY", Veh_SpawnPos[1], GetName(playerid));
  190.         DB::SetLastFloatEntry(vTable, "PosZ", Veh_SpawnPos[3], GetName(playerid));
  191.         DB::SetLastFloatEntry(vTable, "Angle", 238.2809, GetName(playerid));
  192.         DB::SetLastIntEntry(vTable, "Price", price, GetName(playerid));
  193.     }
  194.     else SendClientMessage(playerid, -1, "{FF0000}[ERROR]: {FFFFFF}You don't have enough money!");
  195.     return 1;
  196. }
  197.  
  198. new VehiclesNames[212][] = {
  199.         {"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},
  200.         {"Dumper"},{"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},
  201.         {"Pony"},{"Mule"},{"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},
  202.         {"Washington"},{"Bobcat"},{"Mr. Whoopee"},{"BF. Injection"},{"Hunter"},{"Premier"},{"Enforcer"},
  203.         {"Securicar"},{"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Article Trailer"},
  204.         {"Previon"},{"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
  205.         {"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Article Trailer 2"},{"Turismo"},{"Speeder"},
  206.         {"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},{"Skimmer"},
  207.         {"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},{"Sanchez"},
  208.         {"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},{"Rustler"},{"ZR-350"},
  209.         {"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},{"Baggage"},{"Dozer"},
  210.         {"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},{"Jetmax"},{"Hotring"},
  211.         {"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},{"Mesa"},{"RC Goblin"},
  212.         {"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},{"Super GT"},{"Elegant"},
  213.         {"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},{"Tanker"},{"Roadtrain"},
  214.         {"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},{"NRG-500"},{"HPV1000"},
  215.         {"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},{"Willard"},{"Forklift"},
  216.         {"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},{"Blade"},{"Freight"},{"Streak"},
  217.         {"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},{"Firetruck LA"},{"Hustler"},{"Intruder"},
  218.         {"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},{"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},
  219.         {"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},{"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},
  220.         {"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},{"Bandito"},{"Freight Flat"},{"Streak Carriage"},
  221.         {"Kart"},{"Mower"},{"Dunerider"},{"Sweeper"},{"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},
  222.         {"Stafford"},{"BF-400"},{"Newsvan"},{"Tug"},{"Article Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Mobile Hotdog"},
  223.         {"Club"},{"Freight Carriage"},{"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},
  224.         {"Police Car (SFPD)"},{"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T Van"},{"Alpha"},
  225.         {"Phoenix"},{"Glendale"},{"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},
  226.         {"Boxville"},{"Farm Plow"},{"Utility Trailer"}
  227. };
  228.  
  229. stock GetVehicleModelName(vehicleid)
  230. {
  231.     new GVFNstring[56];
  232.     format(GVFNstring, sizeof(GVFNstring), VehiclesNames[vehicleid-400]);
  233.     return GVFNstring;
  234. }
  235.  
  236. stock GetName(playerid)
  237. {
  238.     new name[24];
  239.     GetPlayerName(playerid, name, sizeof(name));
  240.     return name;
  241. }
  242.  
  243. public OnFilterScriptInit()
  244. {
  245.     DB::Open("Vehicles.db");
  246.    
  247.     vTable = DB::VerifyTable("Vehicles", "id");
  248.    
  249.     DB::VerifyColumn(vTable, "Owner", DB::TYPE_STRING, "");
  250.     DB::VerifyColumn(vTable, "Model", DB::TYPE_STRING, "");
  251.     DB::VerifyColumn(vTable, "PosX", DB::TYPE_FLOAT, 0);
  252.     DB::VerifyColumn(vTable, "PosY", DB::TYPE_FLOAT, 0);
  253.     DB::VerifyColumn(vTable, "PosZ", DB::TYPE_FLOAT, 0);
  254.     DB::VerifyColumn(vTable, "Angle", DB::TYPE_FLOAT, 0);
  255.     return 1;
  256.    
  257. }
  258. public OnFilterScriptExit()
  259. {
  260.     DB::Close();
  261.     return 1;
  262. }
  263.  
  264. public OnPlayerConnect(playerid)
  265. {
  266.     /* DEBUG - REPLACE IF WANTED
  267.    
  268.     new query[200];
  269.     format(query, sizeof(query), "SELECT * FROM `Vehicles` WHERE `Owner`='%s' LIMIT 1", GetName(playerid));
  270.     new DBResult:results = DB::Query(query, false);
  271.    
  272.     if(!db_num_rows(results)) printf("No vehicles were found under the name of: %s", GetName(playerid)); */
  273.    
  274.     CanSpawnVehicle[playerid] = true;
  275.     VehicleCheckpoint[playerid] = -1;
  276.     ParkingCheckpoint[playerid] = -1;
  277.     dsTable[playerid] = -1;
  278.     dsname[playerid] = "";
  279.     return 1;
  280. }
  281.  
  282. public OnPlayerDisconnect(playerid, reason)
  283. {
  284.     if(CanSpawnVehicle[playerid] == false)
  285.     {
  286.         for(new i; i < MAX_VEHICLES; i++)
  287.         {
  288.             if(!strcmp(GetName(playerid), vInfo[i][vOwner], true))
  289.             {
  290.                 UpdatePlayerVehicle(playerid, i);
  291.                 DestroyVehicle(i);
  292.                 break;
  293.             }
  294.         }
  295.     }
  296.     dsTable[playerid] = -1;
  297.     CanSpawnVehicle[playerid] = true;
  298.     VehicleCheckpoint[playerid] = -1;
  299.     ParkingCheckpoint[playerid] = -1;
  300.     dsname[playerid] = "";
  301.     return 1;
  302. }
  303.  
  304. public OnPlayerSpawn(playerid)
  305. {
  306.     return 1;
  307. }
  308.  
  309. public OnPlayerDeath(playerid, killerid, reason)
  310. {
  311.     return 1;
  312. }
  313.  
  314. public OnVehicleSpawn(vehicleid)
  315. {
  316.     return 1;
  317. }
  318.  
  319. public OnVehicleDeath(vehicleid, killerid)
  320. {
  321.     return 1;
  322. }
  323.  
  324. public OnPlayerText(playerid, text[])
  325. {
  326.     return 1;
  327. }
  328.  
  329. CMD:mycars(playerid, params[])
  330. {
  331.     new keys[PLAYER_MAX_VEHICLES];
  332.     DB::RetrieveKey(vTable, keys, _, "Owner", GetName(playerid));
  333.     new modelid;
  334.     new string[512];
  335.     for (new i, j = sizeof(keys); i < j; i++)
  336.     {
  337.         if (keys[i] != DB::INVALID_KEY)
  338.         {
  339.             modelid = DB::GetIntEntry(vTable, keys[i], "Model");
  340.             format(string, sizeof (string), "%s%d\n%s\n", string, modelid, GetVehicleModelName(modelid));
  341.         }
  342.     }
  343.     ShowPlayerDialog(playerid, 6969, DIALOG_STYLE_PREVMODEL, "Vehicle's list", string, "Spawn", "Close");
  344.     return 1;
  345. }
  346.  
  347. public OnPlayerEnterDynamicCP(playerid, checkpointid)
  348. {
  349.     if(checkpointid == VehicleCheckpoint[playerid])
  350.     {
  351.         DestroyDynamicCP(VehicleCheckpoint[playerid]);
  352.     }
  353.     if(checkpointid == ParkingCheckpoint[playerid])
  354.     {
  355.         if(CanSpawnVehicle[playerid] == false)
  356.         {
  357.             if(IsPlayerInAnyVehicle(playerid))
  358.             {
  359.                 new vid = GetPlayerVehicleID(playerid);
  360.                 new owner[36];
  361.                 format(owner, sizeof owner, vInfo[vid][vOwner]);
  362.  
  363.                 if(!isnull(owner) && !strcmp(owner, GetName(playerid)))
  364.                 {
  365.                     UpdatePlayerVehicle(playerid, vid);
  366.                     DestroyVehicle(vid);
  367.                     CanSpawnVehicle[playerid] = true;
  368.                     DestroyDynamicCP(ParkingCheckpoint[playerid]);
  369.                 }
  370.             }
  371.         }
  372.     }
  373.     return 1;
  374. }
  375.  
  376. CMD:createdealership(playerid, params[])
  377. {
  378.     if(IsPlayerAdmin(playerid))
  379.     {
  380.         new dname[36];
  381.         if(sscanf(params, "s[36]", dname)) return SendClientMessage(playerid, -1, "{FF0000}[SYNTAX]: {FFFFFF}/createdealership [name]");
  382.  
  383.         dsTable[playerid] = DB::VerifyTable(dname, "id");
  384.  
  385.         DB::VerifyColumn(dsTable[playerid], "Model", DB::TYPE_STRING, "");
  386.         DB::VerifyColumn(dsTable[playerid], "Price", DB::TYPE_STRING, "");
  387.         DB::VerifyColumn(dsTable[playerid], "Reference", DB::TYPE_STRING, "Reference");
  388.     }
  389.     else SendClientMessage(playerid, -1, "{FF0000}You do not have access to this command.");
  390.     return 1;
  391. }
  392.  
  393. CMD:addvehicle(playerid, params[])
  394. {
  395.     if(IsPlayerAdmin(playerid))
  396.     {
  397.         new dname[36], model, price, query[200];
  398.         if(sscanf(params, "dds[36]", model, price, dname)) return SendClientMessage(playerid, -1, "{FF0000}[SYNTAX]: {FFFFFF}/addvehicle [model] [price] [dealership name]");
  399.  
  400.         format(query, sizeof query, "SELECT * FROM %s", dname);
  401.         new DBResult:results = DB::Query(query, false);
  402.         if(db_num_rows(results) < 25)
  403.         {
  404.             format(query, sizeof query, "SELECT * FROM %s WHERE `Model` = '%d'", dname, model);
  405.             results = DB::Query(query, false);
  406.            
  407.             if(db_num_rows(results) == 0)
  408.             {
  409.                 format(query, sizeof query, "INSERT INTO %s (Model, Price, Reference) VALUES ('%d', '%d', 'Reference')", dname, model, price);
  410.                 DB::Query(query, false);
  411.                 format(query, sizeof query, "%s [Model: %d] has been added into dealership named as: %s (Price: $%d)", GetVehicleModelName(model), model, dname, price);
  412.             }
  413.             else SendClientMessage(playerid, -1, "{FF0000}[ERROR]: {FFFFFF}There's already another vehicle with such ID in this dealership!");
  414.         }
  415.        
  416.     }
  417.     else SendClientMessage(playerid, -1, "{FF0000}You do not have access to this command.");
  418.     return 1;
  419. }
  420.  
  421. CMD:dealershipcars(playerid, params[])
  422. {
  423.     if(IsPlayerAdmin(playerid))
  424.     {
  425.         new dealership[36];
  426.         if(sscanf(params, "s[36]", dealership)) return SendClientMessage(playerid, -1, "{FF0000}[SYNTAX]: {FFFFFF}/dealershipcars [dealership name]");
  427.         new query[200], string[1000], hstring[100];
  428.         format(query, sizeof(query), "SELECT * FROM `%s`", dealership);
  429.         new DBResult:results = DB::Query(query, false);
  430.  
  431.         if(db_num_rows(results))
  432.         {
  433.             new id, model, price;
  434.             new count = 0;
  435.             for(new i; i < db_num_rows(results); i++)
  436.             {
  437.                 count++;
  438.                 id = db_get_field_int(results, 0);
  439.                 model = db_get_field_int(results, 1);
  440.                 price = db_get_field_int(results, 2);
  441.                
  442.                 format(hstring, sizeof(hstring), "{FFD64F}%d) {FFFFFF}%s (ID: %d | Model: %d) - Price: %d\n\n", count, GetVehicleModelName(model), id, model, price);
  443.  
  444.                 db_next_row(results);
  445.  
  446.                 strcat(string, hstring, sizeof(string));
  447.             }
  448.         }
  449.         ShowPlayerDialog(playerid, 6969, DIALOG_STYLE_MSGBOX, "Dealership Vehicles", string, "Okay", "");
  450.     }
  451.     else SendClientMessage(playerid, -1, "{FF0000}You do not have access to this command.");
  452.     return 1;
  453. }
  454.  
  455. CMD:deletevehicle(playerid, params[])
  456. {
  457.     if(IsPlayerAdmin(playerid))
  458.     {
  459.         new model, query[200], dealership[36];
  460.         if(sscanf(params, "ds[36]", model, dealership)) return SendClientMessage(playerid, -1, "{FF0000}[SYNTAX]: {FFFFFF}/deletevehicle [model] [dealership name]");
  461.  
  462.         format(query, sizeof query, "SELECT * FROM %s WHERE `Model` = '%d'", dealership, model);
  463.         new DBResult:results = DB::Query(query, false);
  464.         if(db_num_rows(results) > 0)
  465.         {
  466.             format(query, sizeof query, "DELETE FROM %s WHERE `Model`='%d'", dealership, model);
  467.             results = DB::Query(query, false);
  468.         }
  469.         else SendClientMessage(playerid, -1, "{FF0000}[ERROR]: {FFFFFF}There are no vehicles with such ID in this dealership!");
  470.     }
  471.     else SendClientMessage(playerid, -1, "{FF0000}You do not have access to this command.");
  472.     return 1;
  473. }
  474.  
  475. CMD:park(playerid, params[])
  476. {
  477.     if(IsPlayerInAnyVehicle(playerid))
  478.     {
  479.         new vid = GetPlayerVehicleID(playerid);
  480.         new owner[36];
  481.         format(owner, sizeof owner, vInfo[vid][vOwner]);
  482.         if(!isnull(owner) && !strcmp(owner, GetName(playerid)))
  483.         {
  484.             ParkingCheckpoint[playerid] = CreateDynamicCP(vInfo[vid][vPos_X], vInfo[vid][vPos_Y], vInfo[vid][vPos_Z], 6.25, 0, 0, playerid, -1);
  485.  
  486.             SendClientMessage(playerid, -1, "{FF0000}Vehicle's parking checkpoint has been shown in the minimap!");
  487.         }
  488.         else SendClientMessage(playerid, -1, "{FF0000}[ERROR]: {FFFFFF}This vehicle isn't owned by you.");
  489.     }
  490.     else SendClientMessage(playerid, -1, "{FF0000}[ERROR]: {FFFFFF}You must be in a vehicle in order to use this.");
  491.     return 1;
  492. }
  493.  
  494. CMD:buypark(playerid, params[])
  495. {
  496.     if(IsPlayerInAnyVehicle(playerid))
  497.     {
  498.         new vid = GetPlayerVehicleID(playerid);
  499.         new owner[36];
  500.         format(owner, sizeof owner, vInfo[vid][vOwner]);
  501.        
  502.         if(!isnull(owner) && !strcmp(owner, GetName(playerid)))
  503.         {
  504.             printf("%s %s", owner, GetName(playerid));
  505.             new Float:vCPos[4];
  506.             GetVehiclePos(vid, vCPos[0], vCPos[1], vCPos[2]);
  507.             GetVehicleZAngle(vid, vCPos[3]);
  508.             vInfo[vid][vPos_X] = vCPos[0];
  509.             vInfo[vid][vPos_Y] = vCPos[1];
  510.             vInfo[vid][vPos_Z] = vCPos[2];
  511.             vInfo[vid][vAngle] = vCPos[3];
  512.             UpdatePlayerVehicle(playerid, vid);
  513.             SendClientMessage(playerid, -1, "{FF0000}Your vehicle has been parked!");
  514.         }
  515.         else SendClientMessage(playerid, -1, "{FF0000}[ERROR]: {FFFFFF}This vehicle isn't owned by you."), printf("%d %s", vid, GetName(playerid));
  516.     }
  517.     else SendClientMessage(playerid, -1, "{FF0000}[ERROR]: {FFFFFF}This must be in a vehicle in order to use this.");
  518.     return 1;
  519. }
  520.  
  521. CMD:buycar(playerid, params[])
  522. {
  523.     if(CanSpawnVehicle[playerid] == true)
  524.     {
  525.         new query[150];
  526.         for(new i; i < sizeof DealershipLocations; i++)
  527.         {
  528.             if(IsPlayerInRangeOfPoint(playerid, 5, DealershipLocations[i][DS_PosX], DealershipLocations[i][DS_PosY], DealershipLocations[i][DS_PosZ]))
  529.             {
  530.                 format(dsname[playerid], sizeof dsname, DealershipLocations[i][DealershipName]);
  531.                 break;
  532.             }
  533.         }
  534.  
  535.         if(!isnull(dsname[playerid]))
  536.         {
  537.             dsTable[playerid] = DB::VerifyTable(dsname[playerid], "id");
  538.  
  539.             format(query, sizeof(query), "SELECT * FROM `Vehicles` WHERE `Owner`='%s'", GetName(playerid));
  540.             new DBResult:results = DB::Query(query, false);
  541.  
  542.             if(db_num_rows(results) < PLAYER_MAX_VEHICLES)
  543.             {
  544.                 new keys[MAX_DEALERSHIP_VEHICLES];
  545.                 DB::RetrieveKey(dsTable[playerid], keys, _, "Reference", "Reference");
  546.  
  547.                 new modelid;
  548.                 new string[512];
  549.                 for (new i, j = sizeof(keys); i < j; i++)
  550.                 {
  551.                     if (keys[i] != DB::INVALID_KEY)
  552.                     {
  553.                         modelid = DB::GetIntEntry(dsTable[playerid], keys[i], "Model");
  554.                         printf("%d", modelid);
  555.                         format(string, sizeof (string), "%s%d\n%s\n", string, modelid, GetVehicleModelName(modelid));
  556.                     }
  557.                 }
  558.                 ShowPlayerDialog(playerid, 6968, DIALOG_STYLE_PREVMODEL, "Vehicle's list", string, "Buy", "Close");
  559.             }
  560.             else SendClientMessage(playerid, -1, "You have already reached the maximum of cars you can buy!");
  561.         }
  562.         else SendClientMessage(playerid, -1, "{FF0000}[ERROR]: {FFFFFF}You are not in range of any dealership!");
  563.     }
  564.     return 1;
  565. }
  566.  
  567. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  568. {
  569.     if (dialogid == 6969)
  570.     {
  571.         if (response)
  572.         {
  573.             new key[PLAYER_MAX_VEHICLES];
  574.             DB::RetrieveKey(vTable, key, _, "Owner", GetName(playerid));
  575.  
  576.             for (new i, j = sizeof (key); i < j; i++)
  577.             {
  578.                 if (i == listitem)
  579.                 {
  580.                     LoadPlayerVehicle(playerid, key[i]);
  581.                     break;
  582.                 }
  583.             }
  584.         }
  585.         return 1;
  586.     }
  587.     if (dialogid == 6968)
  588.     {
  589.         if (response)
  590.         {
  591.             new key[MAX_DEALERSHIP_VEHICLES];
  592.             DB::RetrieveKey(dsTable[playerid], key, _, "Reference", "Reference");
  593.  
  594.             for (new i, j = sizeof (key); i < j; i++)
  595.             {
  596.                 if (i == listitem)
  597.                 {
  598.                     new modelid = DB::GetIntEntry(dsTable[playerid], key[i], "Model");
  599.                     new price = DB::GetIntEntry(dsTable[playerid], key[i], "Price");
  600.                     GiveVehicle(playerid, modelid, price);
  601.                     break;
  602.                 }
  603.             }
  604.         }
  605.         return 1;
  606.     }
  607.     return 1;
  608. }
  609. CMD:kill(playerid)
  610. {
  611.     SetPlayerHealth(playerid, 0);
  612.     return 1;
  613. }
  614. CMD:spawnvcar(playerid)
  615. {
  616.     new Float:PlayerCPos[3];
  617.     GetPlayerPos(playerid, PlayerCPos[0], PlayerCPos[1], PlayerCPos[2]);
  618.     new carid = CreateVehicle(411, PlayerCPos[0], PlayerCPos[1], PlayerCPos[2], 0, 0, 0, -1, 1);
  619.     PutPlayerInVehicle(playerid, carid, 0);
  620.     return 1;
  621. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement