Vuk7

Dynamic Carownership by RAPlaY - Balkanska verzija

Aug 4th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 30.15 KB | None | 0 0
  1. //      Dynamic Carownership by RAPlaY - Balkanska verzija
  2.  
  3. //---------------------------- [ Include ] -------------------------------------
  4. #include <a_samp>
  5. #include <YSI\y_commands>
  6. #include <YSI\y_ini>
  7. #include <YSI\y_va>
  8. #include <sscanf2>
  9.  
  10. //---------------------------- [ Define ] -------------------------------------
  11. #define ERROR(%0,%1)                        SendClientMessage(%0, 0xfa5555AA, "[ERROR] "%1)
  12. #define USAGE(%0,%1)                        SendClientMessage(%0, 0xDED6BAFF, "[USAGE] "%1)
  13. #define INFO(%0,%1)                         SendClientMessage(%0, 0x396DFAFF, "[INFO] "%1)
  14.  
  15. #define MAX_CARS                            (150)
  16. #define VEH_FILE                            "Vehicles/%d.ini"
  17. #define GetVehicleNameEx(%0)                CarNames[(%0) - 400]
  18. //---------------------------- [ Colors ] -------------------------------------
  19. #define col_white                           "{FFFFFF}"
  20. #define col_red                             "{FFFF00}"
  21. //--------------------------- [ Enumators ] ------------------------------------
  22. enum {
  23.     DIALOG_CARCOLORS,
  24.     DIALOG_CARINFO,
  25.     DIALOG_CARSELL
  26. }
  27.  
  28. enum pInfo {
  29.     pVehicleKey,
  30.     pMoney
  31. }
  32. new PlayerInfo[MAX_PLAYERS][pInfo];
  33.  
  34. enum vInfo {
  35.     vOwner[24],
  36.     vModel,
  37.     Float:vPosition[4],
  38.     vPrice,
  39.     vColor[2],
  40.     carID,
  41.     vGPS,
  42.     vLocked,
  43.     vOwned
  44. }
  45. new VehicleInfo[MAX_CARS][vInfo],
  46.     vehicleFile[32],
  47.     countVehicles = 0,
  48.     engine, alarm, lights, doors, bonnet, boot, objective;
  49.  
  50. enum pVariables {
  51.     bool:PlayerInSaleVehicle,
  52.     bool:vehLocated,
  53.     pBuyingFrom,
  54.     pBuyingPrice
  55. }
  56. new PlayerVariables[MAX_PLAYERS][pVariables];
  57.  
  58. //--------------------------- [ Variables ] ------------------------------------
  59. new PlayerText:CosTD[MAX_PLAYERS][3];
  60.  
  61. new CarNames[][] = {
  62.     "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
  63.     "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus", "Voodoo",
  64.     "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto",
  65.     "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier",
  66.     "Enforcer", "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks",
  67.     "Hotknife", "Trailer 1", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo",
  68.     "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow",
  69.     "Pizzaboy", "Tram", "Trailer 2", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed",
  70.     "Yankee", "Caddy", "Solair", "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio",
  71.     "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic", "Sanchez", "Sparrow",
  72.     "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350",
  73.     "Walton", "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage",
  74.     "Dozer", "Maverick", "Chopper", "Rancher", "FBI Rancher", "Virgo", "Greenwood",
  75.     "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick", "Boxvillde",
  76.     "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger",
  77.     "Rancher", "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle",
  78.     "Cropduster", "Stunt", "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer",
  79.     "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck",
  80.     "Fortune", "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine",
  81.     "Feltzer", "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
  82.     "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo", "Cargobob",
  83.     "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster",
  84.     "Monster", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger",
  85.     "Flash", "Tahoma", "Savanna", "Bandito", "Freight Flat", "Streak Carriage", "Kart",
  86.     "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley",
  87.     "Stafford", "BF-400", "News Van", "Tug", "Trailer 3", "Emperor", "Wayfarer", "Euros",
  88.     "Hotdog", "Club", "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch",
  89.     "LShowPlayerDialog Car", "SFPD Car", "LVPD Car", "Police Ranger", "Picador", "S.W.A.T Tank", "Alpha",
  90.     "Phoenix", "Glendale", "Sadler", "Luggage Trailer 1", "Luggage Trailer 2", "Stairs Trailer",
  91.     "Boxville", "Utility Trailer 1", "Utility Trailer 2"
  92. };
  93.  
  94. //--------------------------- [ Callback's ] -----------------------------------
  95. public OnFilterScriptInit() {
  96.     for(new i = (1); i < MAX_CARS; i++) {
  97.         format(vehicleFile, sizeof(vehicleFile), VEH_FILE, i);
  98.         if(fexist(vehicleFile)) {
  99.             INI_ParseFile(vehicleFile, "loadVehicle", .bExtra = true, .extra = i);
  100.             VehicleInfo[i][carID] = CreateVehicle(VehicleInfo[i][vModel], VehicleInfo[i][vPosition][0], VehicleInfo[i][vPosition][1], VehicleInfo[i][vPosition][2], VehicleInfo[i][vPosition][3], VehicleInfo[i][vColor][0], VehicleInfo[i][vColor][1], 50000);
  101.             SetVehicleParamsEx(VehicleInfo[i][carID], engine, lights, alarm, VehicleInfo[i][vLocked], bonnet, boot, objective);
  102.             countVehicles++;
  103.         }
  104.     }
  105.     printf("Ucitano [%d] Carownership vozila.", countVehicles);
  106.     return (true);
  107. }
  108.  
  109. public OnFilterScriptExit() {
  110.     for(new i = (1); i < MAX_CARS; i++) {
  111.         format(vehicleFile, sizeof(vehicleFile), VEH_FILE, i);
  112.         if(fexist(vehicleFile)) {
  113.             saveVehicle(i);
  114.         }
  115.     }
  116.     return (true);
  117. }
  118.  
  119. public OnPlayerConnect(playerid) {
  120.     PlayerVariables[playerid][PlayerInSaleVehicle]  =   false;
  121.     PlayerVariables[playerid][vehLocated]           =   false;
  122.     PlayerVariables[playerid][pBuyingFrom]          =   -1;
  123.     PlayerVariables[playerid][pBuyingPrice]         =   -1;
  124.  
  125.     if (fexist(UserPath(playerid))) {
  126.         INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  127.     }
  128.     else {
  129.         PlayerInfo[playerid][pVehicleKey] = -1;
  130.         SavePlayer(playerid);
  131.     }
  132.     return (true);
  133. }
  134.  
  135. public OnPlayerDisconnect(playerid, reason) {
  136.     SavePlayer(playerid);
  137.     return (true);
  138. }
  139.  
  140. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  141.     new r = PlayerInfo[playerid][pVehicleKey],
  142.         jebemtisvufamiliju = GetPlayerVehicleID(playerid);
  143.     if(dialogid == DIALOG_CARCOLORS) {
  144.         if(response) {
  145.             switch (listitem) {
  146.                 case 0: {
  147.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  148.                     VehicleInfo[r][vColor][0] = 128;
  149.                     VehicleInfo[r][vColor][1] = 128;
  150.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  151.                     GivePlayerMoney(playerid, -500);
  152.                     INFO(playerid, "You successfully repainted your vehicle!");
  153.                     saveVehicle(r);
  154.                 }
  155.                 case 1: {
  156.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  157.                     VehicleInfo[r][vColor][0] = 3;
  158.                     VehicleInfo[r][vColor][1] = 3;
  159.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  160.                     GivePlayerMoney(playerid, -500);
  161.                     INFO(playerid, "You successfully repainted your vehicle!");
  162.                     saveVehicle(r);
  163.                 }
  164.                 case 2: {
  165.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  166.                     VehicleInfo[r][vColor][0] = 222;
  167.                     VehicleInfo[r][vColor][1] = 222;
  168.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  169.                     GivePlayerMoney(playerid, -500);
  170.                     INFO(playerid, "You successfully repainted your vehicle!");
  171.                     saveVehicle(r);
  172.                 }
  173.                 case 3: {
  174.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  175.                     VehicleInfo[r][vColor][0] = 194;
  176.                     VehicleInfo[r][vColor][1] = 194;
  177.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  178.                     GivePlayerMoney(playerid, -500);
  179.                     INFO(playerid, "You successfully repainted your vehicle!");
  180.                     saveVehicle(r);
  181.                 }
  182.                 case 4: {
  183.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  184.                     VehicleInfo[r][vColor][0] = 211;
  185.                     VehicleInfo[r][vColor][1] = 211;
  186.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  187.                     GivePlayerMoney(playerid, -500);
  188.                     INFO(playerid, "You successfully repainted your vehicle!");
  189.                     saveVehicle(r);
  190.                 }
  191.                 case 5: {
  192.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  193.                     VehicleInfo[r][vColor][0] = 162;
  194.                     VehicleInfo[r][vColor][1] = 162;
  195.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  196.                     GivePlayerMoney(playerid, -500);
  197.                     INFO(playerid, "You successfully repainted your vehicle!");
  198.                     saveVehicle(r);
  199.                 }
  200.                 case 6: {
  201.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  202.                     VehicleInfo[r][vColor][0] = 130;
  203.                     VehicleInfo[r][vColor][1] = 130;
  204.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  205.                     GivePlayerMoney(playerid, -500);
  206.                     INFO(playerid, "You successfully repainted your vehicle!");
  207.                     saveVehicle(r);
  208.                 }
  209.                 case 7: {
  210.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  211.                     VehicleInfo[r][vColor][0] = 251;
  212.                     VehicleInfo[r][vColor][1] = 251;
  213.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  214.                     GivePlayerMoney(playerid, -500);
  215.                     INFO(playerid, "You successfully repainted your vehicle!");
  216.                     saveVehicle(r);
  217.                 }
  218.                 case 8: {
  219.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  220.                     VehicleInfo[r][vColor][0] = 173;
  221.                     VehicleInfo[r][vColor][1] = 173;
  222.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  223.                     GivePlayerMoney(playerid, -500);
  224.                     INFO(playerid, "You successfully repainted your vehicle!");
  225.                     saveVehicle(r);
  226.                 }
  227.                 case 9: {
  228.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  229.                     VehicleInfo[r][vColor][0] = 1;
  230.                     VehicleInfo[r][vColor][1] = 1;
  231.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  232.                     GivePlayerMoney(playerid, -500);
  233.                     INFO(playerid, "You successfully repainted your vehicle!");
  234.                     saveVehicle(r);
  235.                 }
  236.                 case 10: {
  237.                     if(GetPlayerMoney(playerid) < 500) return ERROR(playerid, "Nemate dovoljno novca za farbanje vozila!!");
  238.                     VehicleInfo[r][vColor][0] = 0;
  239.                     VehicleInfo[r][vColor][1] = 0;
  240.                     ChangeVehicleColor(jebemtisvufamiliju, VehicleInfo[r][vColor][0], VehicleInfo[r][vColor][1]);
  241.                     GivePlayerMoney(playerid, -500);
  242.                     INFO(playerid, "You successfully repainted your vehicle!");
  243.                     saveVehicle(r);
  244.                 }
  245.             }
  246.         }
  247.     }
  248.     if(dialogid == DIALOG_CARSELL) {
  249.         if(response) {
  250.             new id, price;
  251.             if(sscanf(inputtext, "ii", id, price)) return ERROR(playerid, "Moras ukucati ID igraca i CIJENU vozila!");
  252.             if(id == playerid) return ERROR(playerid, "Ne mozes sam sebi prodati vozilo!");
  253.             if(!IsPlayerInRangeOfPlayer(playerid, 10.0, id)) return  ERROR(playerid, "Moras biti sa igracem!");
  254.             if(price < 1000 || price > 1000000) return  ERROR(playerid, "Cijena ne moze biti manja od 1.000$ a veca od 1.000.000$!");
  255.             PlayerVariables[id][pBuyingFrom] = playerid;
  256.             PlayerVariables[id][pBuyingPrice] = price;
  257.             va_SendClientMessage(playerid, -1, "Ponudio si igracu "col_red"%s "col_white"tvoje vozilo po cijeni od $"col_red"%d", GetName(id), price);
  258.             va_SendClientMessage(id, 0xEAFF00FF, "-------------- [ Dobili ste ponutu za kupovinu vozila["col_red" %s{EAFF00}) ] ----------------", GetVehicleNameEx(VehicleInfo[PlayerInfo[playerid][pVehicleKey]][vModel]));
  259.             va_SendClientMessage(playerid, -1, "Dobili ste ponudu od "col_red"%s "col_white"cijena $"col_red"%d", GetName(id), price);
  260.             INFO(id, "Ukucajte /car accept da kupite vozilo!");
  261.         }
  262.     }
  263.     return (false);
  264. }
  265.  
  266. public OnPlayerEnterCheckpoint(playerid) {
  267.     if(PlayerVariables[playerid][vehLocated] == true) {
  268.         DisablePlayerCheckpoint(playerid);
  269.         PlayerVariables[playerid][vehLocated] = false;
  270.         GameTextForPlayer(playerid, "~r~Stigli ste!", 1500, 5);
  271.     }
  272.     return (true);
  273. }
  274.  
  275. public OnPlayerStateChange(playerid, newstate, oldstate) {
  276.     new vehicleid = GetPlayerVehicleID(playerid);
  277.     if(oldstate == PLAYER_STATE_ONFOOT || newstate == PLAYER_STATE_DRIVER) {
  278.         for(new i = (0); i < MAX_CARS; i++) {
  279.             format(vehicleFile, sizeof(vehicleFile), VEH_FILE, i);
  280.             if(fexist(vehicleFile)) {
  281.                 if(vehicleid == VehicleInfo[i][carID]) {
  282.                     if(VehicleInfo[i][vOwned] == 0) {
  283.                         va_SendClientMessage(playerid, -1, "Ukucaj /buyvehicle da kupis vozilo!");
  284.  
  285.                         CreateCosTD(playerid, true);
  286.                         new strInfo[60];
  287.                         format(strInfo, sizeof(strInfo), "~g~model: ~w~%s~n~~g~cijena: $~w~%d", GetVehicleNameEx(VehicleInfo[i][vModel]), VehicleInfo[i][vPrice]);
  288.                         PlayerTextDrawSetString(playerid, CosTD[playerid][2], strInfo);
  289.                         SetVehicleParamsEx(VehicleInfo[i][carID], 0, lights, alarm, 0, bonnet, boot, objective);
  290.                     }
  291.                     else if(VehicleInfo[i][vOwned] == 1) {
  292.                         va_SendClientMessage(playerid, -1, ""col_white"Vozilo registrovano na: "col_red"%s", VehicleInfo[i][vOwner]);
  293.                         SetVehicleParamsEx(VehicleInfo[i][carID], 1, lights, alarm, VehicleInfo[i][vLocked], bonnet, boot, objective);
  294.                     }
  295.                 }
  296.             }
  297.         }
  298.     }
  299.     if(oldstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_ONFOOT) {
  300.         if(PlayerVariables[playerid][PlayerInSaleVehicle] == true) {
  301.             CreateCosTD(playerid, false);
  302.         }
  303.     }
  304.     return (true);
  305. }
  306.  
  307. YCMD:cvehicle(playerid, params[], help) {
  308.     #pragma unused help
  309.     new model, price, vehID = NextVehicleID(), Float:plPositions[4];
  310.     GetPlayerPos(playerid, plPositions[0], plPositions[1], plPositions[2]);
  311.     GetPlayerFacingAngle(playerid, plPositions[3]);
  312.     if(!IsPlayerAdmin(playerid)) return ERROR(playerid, "Morate biti RCON Administrator!");
  313.     if(countVehicles >= MAX_CARS) return ERROR(playerid, "Na serveru je dostignut maksimalan broj vozila!");
  314.     if(sscanf(params, "ii", model, price)) return USAGE(playerid, "/cvehicle [Model ID] [Price]");
  315.     if(model < 400 || model > 610) return ERROR(playerid, "Nepoznat model!");
  316.     if(price < 2000 || price > 1000000) return ERROR(playerid, "Cijena ne moze biti manja od 2000$ a veca od 1.000.000$!");
  317.  
  318.     format(VehicleInfo[vehID][vOwner], 24, "Drzava");
  319.     VehicleInfo[vehID][vModel] = model;
  320.     VehicleInfo[vehID][vPosition][0] = plPositions[0];
  321.     VehicleInfo[vehID][vPosition][1] = plPositions[1];
  322.     VehicleInfo[vehID][vPosition][2] = plPositions[2];
  323.     VehicleInfo[vehID][vPosition][3] = plPositions[3];
  324.     VehicleInfo[vehID][vPrice] = price;
  325.     VehicleInfo[vehID][vColor][0] = 1;
  326.     VehicleInfo[vehID][vColor][1] = 1;
  327.     VehicleInfo[vehID][vGPS] = 0;
  328.     VehicleInfo[vehID][vLocked] = 0;
  329.     VehicleInfo[vehID][vOwned] = 0;
  330.  
  331.     saveVehicle(vehID);
  332.  
  333.     VehicleInfo[vehID][carID] = CreateVehicle(VehicleInfo[vehID][vModel], VehicleInfo[vehID][vPosition][0], VehicleInfo[vehID][vPosition][1], VehicleInfo[vehID][vPosition][2], VehicleInfo[vehID][vPosition][3], VehicleInfo[vehID][vColor][0], VehicleInfo[vehID][vColor][1], 50000);
  334.  
  335.     INFO(playerid, "Vozilo kreirano.");
  336.  
  337.     SetPlayerPos(playerid, plPositions[0], plPositions[1], plPositions[2]+2.3);
  338.     return (true);
  339. }
  340. YCMD:buyvehicle(playerid, params[], help) {
  341.     #pragma unused help
  342.     new vehicleid = GetPlayerVehicleID(playerid);
  343.     if(PlayerInfo[playerid][pVehicleKey] != -1) return ERROR(playerid, "Vec imas vozilo!");
  344.     for(new i = (0); i < MAX_CARS; i++) {
  345.         format(vehicleFile, sizeof(vehicleFile), VEH_FILE, i);
  346.         if(fexist(vehicleFile)) {
  347.             if(vehicleid == VehicleInfo[i][carID]) {
  348.                 if(VehicleInfo[i][vOwned] == 1) {
  349.                     ERROR(playerid, "This vehicle is not for sale!");
  350.                     return (1);
  351.                 }
  352.                 else {
  353.                     if(GetPlayerMoney(playerid) < VehicleInfo[i][vPrice]) return ERROR(playerid, "Nemas dovoljno novca za kupovinu vozila!");
  354.                     PlayerInfo[playerid][pVehicleKey] = i;
  355.                     VehicleInfo[i][vOwned] = 1;
  356.                     format(VehicleInfo[i][vOwner], 24, "%s", GetName(playerid));
  357.                     GivePlayerMoney(playerid, -VehicleInfo[i][vPrice]);
  358.                     saveVehicle(i);
  359.                     SavePlayer(playerid);
  360.                     RemovePlayerFromVehicle(playerid);
  361.                     CreateCosTD(playerid, false);
  362.                 }
  363.             }
  364.         }
  365.     }
  366.  
  367.     return (true);
  368. }
  369.  
  370. YCMD:car(playerid, params[], help) {
  371.     #pragma unused help
  372.     new option[9],
  373.         k = PlayerInfo[playerid][pVehicleKey];
  374.     if(sscanf(params, "s[9]", option)) {
  375.         USAGE(playerid, "/car [Opcija]");
  376.         SendClientMessage(playerid, -1, "Opcije: info, locate, park, buygps");
  377.         SendClientMessage(playerid, -1, "Opcije: color, lock, sell, accept");
  378.         SendClientMessage(playerid, -1, "Opcije: delete ("col_red"UPOZORENJE: "col_white"vase vozilo ce biti potpuno izbrisano iz baze)");
  379.         SendClientMessage(playerid, -1, "-------------------------------------------");
  380.  
  381.         return (1);
  382.     }
  383.     if(strcmp(option, "info", true) == 0) {
  384.         if(PlayerInfo[playerid][pVehicleKey] == -1) return ERROR(playerid, "Nemas vozilo!");
  385.         new strVeh[250];
  386.         format(strVeh, sizeof(strVeh), ""col_red"_______________________________\n\n\
  387.                                         "col_red"Model: "col_white"%s\n\
  388.                                         "col_red"Price: "col_white"%d$\n\
  389.                                         "col_red"Boja 1(ID): "col_white"%d\n\
  390.                                         "col_red"Boja 2(ID): "col_white"%d\n\n\
  391.                                         "col_red"_______________________________", GetVehicleNameEx(VehicleInfo[k][vModel]), VehicleInfo[k][vPrice], VehicleInfo[k][vColor][0], VehicleInfo[k][vColor][1]);
  392.         ShowPlayerDialog(playerid, DIALOG_CARINFO, DIALOG_STYLE_MSGBOX, ""col_white"Vehicle info", strVeh, "Close", "");
  393.     }
  394.     else if(strcmp(option, "locate", true) == 0) {
  395.         if(PlayerInfo[playerid][pVehicleKey] == -1) return ERROR(playerid, "Nemas vozilo!");
  396.         if(VehicleInfo[k][vGPS] == 0) return ERROR(playerid, "Nemate GPS u vasem vozilu!");
  397.         new Float:locPos[3];
  398.         GetVehiclePos(VehicleInfo[k][carID], locPos[0], locPos[1], locPos[2]);
  399.         PlayerVariables[playerid][vehLocated] = true;
  400.         SetPlayerCheckpoint(playerid, locPos[0], locPos[1], locPos[2], 5.0);
  401.         INFO(playerid, "Your vehicle is located on map.");
  402.     }
  403.     else if(strcmp(option, "park", true) == 0) {
  404.         new Float:playerPos[4];
  405.         if(PlayerInfo[playerid][pVehicleKey] == -1) return ERROR(playerid, "Nemas vozilo!");
  406.         if(GetPlayerVehicleID(playerid) != VehicleInfo[k][carID]) return ERROR(playerid, "Moras biti u svom vozilu!");
  407.         GetVehiclePos(GetPlayerVehicleID(playerid), playerPos[0], playerPos[1], playerPos[2]);
  408.         GetVehicleZAngle(GetPlayerVehicleID(playerid), playerPos[3]);
  409.         VehicleInfo[k][vPosition][0] = playerPos[0];
  410.         VehicleInfo[k][vPosition][1] = playerPos[1];
  411.         VehicleInfo[k][vPosition][2] = playerPos[2];
  412.         VehicleInfo[k][vPosition][3] = playerPos[3];
  413.  
  414.         saveVehicle(k);
  415.  
  416.         DestroyVehicle(VehicleInfo[k][carID]);
  417.  
  418.         VehicleInfo[k][carID] = CreateVehicle(VehicleInfo[k][vModel], VehicleInfo[k][vPosition][0], VehicleInfo[k][vPosition][1], VehicleInfo[k][vPosition][2], VehicleInfo[k][vPosition][3], VehicleInfo[k][vColor][0], VehicleInfo[k][vColor][1], 50000);
  419.  
  420.         INFO(playerid, "You have successfully parked vehicle.");
  421.     }
  422.     else if(strcmp(option, "color", true) == 0) {
  423.         if(PlayerInfo[playerid][pVehicleKey] == -1) return ERROR(playerid, "Nemas vozilo!");
  424.         if(GetPlayerVehicleID(playerid) != VehicleInfo[k][carID]) return ERROR(playerid, "Moras biti u svom vozilu!");
  425.         INFO(playerid, "Repainting vehicle costs $500.");
  426.         ShowPlayerDialog(playerid, DIALOG_CARCOLORS, DIALOG_STYLE_LIST, ""col_white"Vehicle colors", "Green\nRed\nOrange\nYellow\nPurple\nDark blue\nLight blue\nGrey\nBrown\nWhite\nBlack", "Select", "Cancel");
  427.     }
  428.     else if(strcmp(option, "buygps", true) == 0) {
  429.         if(PlayerInfo[playerid][pVehicleKey] == -1) return ERROR(playerid, "Nemas vozilo!");
  430.         if(GetPlayerVehicleID(playerid) != VehicleInfo[k][carID]) return ERROR(playerid, "Moras biti u svom vozilu!");
  431.         if(VehicleInfo[k][vGPS] == 1) return ERROR(playerid, "Vec imas GPS!");
  432.         if(GetPlayerMoney(playerid) < 800) return ERROR(playerid, "Nemas dovoljno novca da bi kupio GPS!");
  433.  
  434.         VehicleInfo[k][vGPS] = 1;
  435.         GivePlayerMoney(playerid, -800);
  436.         saveVehicle(k);
  437.         INFO(playerid, "You have successfully buyed GPS.");
  438.     }
  439.     else if(strcmp(option, "lock", true) == 0) {
  440.         if(PlayerInfo[playerid][pVehicleKey] == -1) return ERROR(playerid, "Nemas vozilo!");
  441.         if(GetClosestVehicle(playerid) != VehicleInfo[k][carID]) return ERROR(playerid, "Moras biti u svom vozilu or close to your vehicle!");
  442.         GetVehicleParamsEx(GetClosestVehicle(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
  443.         if(VehicleInfo[k][vLocked] == VEHICLE_PARAMS_OFF) {
  444.             SetVehicleParamsEx(VehicleInfo[k][carID], engine, lights, alarm, VEHICLE_PARAMS_ON, bonnet, boot, objective);
  445.             GameTextForPlayer(playerid, "~r~Locked", 1500, 5);
  446.             VehicleInfo[k][vLocked] = VEHICLE_PARAMS_ON;
  447.         }
  448.         else if(VehicleInfo[k][vLocked] == VEHICLE_PARAMS_ON) {
  449.             SetVehicleParamsEx(VehicleInfo[k][carID], engine, lights, alarm, VEHICLE_PARAMS_OFF, bonnet, boot, objective);
  450.             GameTextForPlayer(playerid, "~g~Unlocked", 1500, 5);
  451.             VehicleInfo[k][vLocked] = VEHICLE_PARAMS_OFF;
  452.         }
  453.     }
  454.     else if(strcmp(option, "delete", true) == 0) {
  455.         if(PlayerInfo[playerid][pVehicleKey] == -1) return ERROR(playerid, "Nemas vozilo!");
  456.         if(GetPlayerVehicleID(playerid) != VehicleInfo[k][carID]) return ERROR(playerid, "Moras biti u svom vozilu!");
  457.         DeleteVehicle(PlayerInfo[playerid][pVehicleKey]);
  458.         countVehicles--;
  459.         PlayerInfo[playerid][pVehicleKey] = -1;
  460.         SavePlayer(playerid);
  461.         DestroyVehicle(GetPlayerVehicleID(playerid));
  462.         SendClientMessage(playerid, 0xFFFF00FF, "Obrisali ste vozilo iz baze podataka.");
  463.     }
  464.     else if(strcmp(option, "sell", true) == 0) {
  465.         if(PlayerInfo[playerid][pVehicleKey] == -1) return ERROR(playerid, "Nemas vozilo!");
  466.         if(PlayerVariables[playerid][pBuyingFrom] != -1) return ERROR(playerid, "Vec prodajete vozilo!");
  467.         if(GetPlayerVehicleID(playerid) != VehicleInfo[k][carID]) return ERROR(playerid, "Moras biti u svom vozilu!");
  468.         ShowPlayerDialog(playerid, DIALOG_CARSELL, DIALOG_STYLE_INPUT, ""col_white"Vehicle sale", "Type ID of player and PRICE of vehicle in empty space", "Offer", "Cancel");
  469.     }
  470.     else if(strcmp(option, "accept", true) == 0) {
  471.         if(PlayerVariables[playerid][pBuyingFrom] == -1) return ERROR(playerid, "Ne kupujete vozilo!");
  472.         if(PlayerVariables[playerid][pBuyingPrice] == -1) return ERROR(playerid, "Ne kupujete vozilo!");
  473.         if(GetPlayerVehicleID(playerid) != VehicleInfo[PlayerInfo[PlayerVariables[playerid][pBuyingFrom]][pVehicleKey]][carID]) return ERROR(playerid, "You must be in vehicle wich you want to buy!");
  474.  
  475.         GivePlayerMoney(PlayerVariables[playerid][pBuyingFrom], PlayerVariables[playerid][pBuyingPrice]);
  476.         GivePlayerMoney(playerid, -PlayerVariables[playerid][pBuyingPrice]);
  477.  
  478.         PlayerInfo[playerid][pVehicleKey] = PlayerInfo[PlayerVariables[playerid][pBuyingFrom]][pVehicleKey];
  479.  
  480.         format(VehicleInfo[PlayerInfo[playerid][pVehicleKey]][vOwner], 24, "%s", GetName(playerid));
  481.         PlayerInfo[PlayerVariables[playerid][pBuyingFrom]][pVehicleKey] = -1;
  482.  
  483.         saveVehicle(PlayerInfo[playerid][pVehicleKey]);
  484.         SavePlayer(playerid);
  485.         SavePlayer(PlayerVariables[playerid][pBuyingFrom]);
  486.  
  487.         va_SendClientMessage(playerid, -1, "Kupili ste vozilo od "col_red"%s "col_white"po cijeni $"col_red"%d", GetName(PlayerVariables[playerid][pBuyingFrom]), PlayerVariables[playerid][pBuyingPrice]);
  488.         va_SendClientMessage(PlayerVariables[playerid][pBuyingFrom], -1, "Prodali ste vozilo igracu "col_red"%s "col_white"po cijeni $"col_red"%d", GetName(playerid), PlayerVariables[playerid][pBuyingPrice]);
  489.  
  490.         PlayerVariables[playerid][pBuyingFrom]  = -1;
  491.         PlayerVariables[playerid][pBuyingPrice] = -1;
  492.     }
  493.  
  494.  
  495.     return (true);
  496. }
  497.  
  498. //----------------------------- [ Other ] --------------------------------------
  499. stock ClearChat(playerid, lines) {
  500.     for(new i = (0); i < lines; i++) {
  501.         SendClientMessage(playerid, -1, "");
  502.     }
  503.     return (lines);
  504. }
  505.  
  506. stock IsPlayerInRangeOfPlayer(playerid, Float:range, oplayerid) {
  507.     new Float:Positions[3];
  508.     GetPlayerPos(oplayerid, Positions[0], Positions[1], Positions[2]);
  509.     if (IsPlayerInRangeOfPoint(playerid, range, Positions[0], Positions[1], Positions[2])) return 1;
  510.     else return 0;
  511. }
  512.  
  513. stock GetClosestVehicle(playerid) {
  514.     new Float:posx, Float:posy, Float:posz, Float:dist, Float:closedist=9999, closeveh;
  515.     for(new i=0; i < MAX_VEHICLES; i++) {
  516.         if(GetVehiclePos(i, posx, posy, posz)) {
  517.             dist = GetPlayerDistanceFromPoint(playerid, posx, posy, posz);
  518.             if(dist < closedist) {
  519.                 closedist = dist;
  520.                 closeveh = i;
  521.             }
  522.         }
  523.     }
  524.     return closeveh;
  525. }
  526.  
  527. forward LoadUser_data(playerid, name[], value[]);
  528. public LoadUser_data(playerid, name[], value[]) {
  529.     INI_Int("VehicleKey", PlayerInfo[playerid][pVehicleKey]);
  530.     return 1;
  531. }
  532.  
  533. stock SavePlayer(playerid) {
  534.     new INI:File = INI_Open(UserPath(playerid));
  535.  
  536.     INI_SetTag(File, "data");
  537.  
  538.     INI_WriteInt(File, "VehicleKey", PlayerInfo[playerid][pVehicleKey]);
  539.     INI_Close(File);
  540.  
  541.     return 1;
  542. }
  543.  
  544. stock UserPath(playerid) {
  545.     new string[128],
  546.         playername[MAX_PLAYER_NAME];
  547.     GetPlayerName(playerid,playername,sizeof(playername));
  548.     format(string,sizeof(string), "Vehicles/Players/%s", playername);
  549.     return string;
  550. }
  551.  
  552. forward loadVehicle(vehicleID, name[], value[]);
  553. public loadVehicle(vehicleID, name[], value[])
  554. {
  555.     INI_String("Owner", VehicleInfo[vehicleID][vOwner], 24);
  556.     INI_Int("Model", VehicleInfo[vehicleID][vModel]);
  557.     INI_Float("Pos_X", VehicleInfo[vehicleID][vPosition][0]);
  558.     INI_Float("Pos_Y", VehicleInfo[vehicleID][vPosition][1]);
  559.     INI_Float("Pos_Z", VehicleInfo[vehicleID][vPosition][2]);
  560.     INI_Float("Pos_A", VehicleInfo[vehicleID][vPosition][3]);
  561.     INI_Int("Price", VehicleInfo[vehicleID][vPrice]);
  562.     INI_Int("Color_1", VehicleInfo[vehicleID][vColor][0]);
  563.     INI_Int("Color_2", VehicleInfo[vehicleID][vColor][1]);
  564.     INI_Int("GPS", VehicleInfo[vehicleID][vGPS]);
  565.     INI_Int("Locked", VehicleInfo[vehicleID][vLocked]);
  566.     INI_Int("Owned", VehicleInfo[vehicleID][vOwned]);
  567.     return (true);
  568. }
  569.  
  570. stock saveVehicle(vehicleID)
  571. {
  572.     format(vehicleFile, sizeof(vehicleFile), VEH_FILE, vehicleID);
  573.     new INI:File = INI_Open(vehicleFile);
  574.  
  575.     INI_WriteString(File, "Owner", VehicleInfo[vehicleID][vOwner]);
  576.     INI_WriteInt(File, "Model", VehicleInfo[vehicleID][vModel]);
  577.     INI_WriteFloat(File, "Pos_X", VehicleInfo[vehicleID][vPosition][0]);
  578.     INI_WriteFloat(File, "Pos_Y", VehicleInfo[vehicleID][vPosition][1]);
  579.     INI_WriteFloat(File, "Pos_Z", VehicleInfo[vehicleID][vPosition][2]);
  580.     INI_WriteFloat(File, "Pos_A", VehicleInfo[vehicleID][vPosition][3]);
  581.     INI_WriteInt(File, "Price", VehicleInfo[vehicleID][vPrice]);
  582.     INI_WriteInt(File, "Color_1", VehicleInfo[vehicleID][vColor][0]);
  583.     INI_WriteInt(File, "Color_2", VehicleInfo[vehicleID][vColor][1]);
  584.     INI_WriteInt(File, "GPS", VehicleInfo[vehicleID][vGPS]);
  585.     INI_WriteInt(File, "Locked", VehicleInfo[vehicleID][vLocked]);
  586.     INI_WriteInt(File, "Owned", VehicleInfo[vehicleID][vOwned]);
  587.  
  588.     INI_Close(File);
  589.     return (true);
  590. }
  591.  
  592. stock DeleteVehicle(id) {
  593.     format(vehicleFile, sizeof(vehicleFile), VEH_FILE, id);
  594.     if(fexist(vehicleFile)) {
  595.         fremove(vehicleFile);
  596.     }
  597.     return (true);
  598. }
  599.  
  600. stock NextVehicleID() {
  601.     new id = (-1);
  602.     for(new loop = (0), provjera = (-1), Data_[64] = "\0"; loop != MAX_CARS; ++ loop) {
  603.        provjera = (loop+1);
  604.        format(Data_, (sizeof Data_), VEH_FILE, provjera);
  605.        if(!fexist(Data_)) {
  606.           id = (provjera);
  607.           break;
  608.        }
  609.     }
  610.     return (id);
  611. }
  612.  
  613. stock GetName(playerid) {
  614.     new name[MAX_PLAYER_NAME];
  615.     GetPlayerName(playerid, name, sizeof(name));
  616.     return name;
  617. }
  618.  
  619. stock CreateCosTD(playerid, bool:created) {
  620.     if(created == false) {
  621.         PlayerTextDrawHide(playerid, CosTD[playerid][0]);
  622.         PlayerTextDrawHide(playerid, CosTD[playerid][1]);
  623.         PlayerTextDrawHide(playerid, CosTD[playerid][2]);
  624.  
  625.         PlayerTextDrawDestroy(playerid, CosTD[playerid][0]);
  626.         PlayerTextDrawDestroy(playerid, CosTD[playerid][1]);
  627.         PlayerTextDrawDestroy(playerid, CosTD[playerid][2]);
  628.         PlayerVariables[playerid][PlayerInSaleVehicle] = false;
  629.     }
  630.     else if(created == true) {
  631.         CosTD[playerid][0] = CreatePlayerTextDraw(playerid,643.000000, 141.000000, "_");
  632.         PlayerTextDrawBackgroundColor(playerid,CosTD[playerid][0], 255);
  633.         PlayerTextDrawFont(playerid,CosTD[playerid][0], 1);
  634.         PlayerTextDrawLetterSize(playerid,CosTD[playerid][0], 0.500000, 5.399999);
  635.         PlayerTextDrawColor(playerid,CosTD[playerid][0], -1);
  636.         PlayerTextDrawSetOutline(playerid,CosTD[playerid][0], 0);
  637.         PlayerTextDrawSetProportional(playerid,CosTD[playerid][0], 1);
  638.         PlayerTextDrawSetShadow(playerid,CosTD[playerid][0], 1);
  639.         PlayerTextDrawUseBox(playerid,CosTD[playerid][0], 1);
  640.         PlayerTextDrawBoxColor(playerid,CosTD[playerid][0], 68);
  641.         PlayerTextDrawTextSize(playerid,CosTD[playerid][0], 500.000000, 0.000000);
  642.         PlayerTextDrawSetSelectable(playerid,CosTD[playerid][0], 0);
  643.  
  644.         CosTD[playerid][1] = CreatePlayerTextDraw(playerid,530.000000, 134.000000, "vehicle on sale");
  645.         PlayerTextDrawBackgroundColor(playerid,CosTD[playerid][1], 51);
  646.         PlayerTextDrawFont(playerid,CosTD[playerid][1], 3);
  647.         PlayerTextDrawLetterSize(playerid,CosTD[playerid][1], 0.300000, 1.300000);
  648.         PlayerTextDrawColor(playerid,CosTD[playerid][1], -1);
  649.         PlayerTextDrawSetOutline(playerid,CosTD[playerid][1], 1);
  650.         PlayerTextDrawSetProportional(playerid,CosTD[playerid][1], 1);
  651.         PlayerTextDrawSetSelectable(playerid,CosTD[playerid][1], 0);
  652.  
  653.         CosTD[playerid][2] = CreatePlayerTextDraw(playerid,508.000000, 155.000000, "~g~model: ~w~infernus~n~~g~price: $~w~100000");
  654.         PlayerTextDrawBackgroundColor(playerid,CosTD[playerid][2], 51);
  655.         PlayerTextDrawFont(playerid,CosTD[playerid][2], 3);
  656.         PlayerTextDrawLetterSize(playerid,CosTD[playerid][2], 0.300000, 1.300000);
  657.         PlayerTextDrawColor(playerid,CosTD[playerid][2], -1);
  658.         PlayerTextDrawSetOutline(playerid,CosTD[playerid][2], 1);
  659.         PlayerTextDrawSetProportional(playerid,CosTD[playerid][2], 1);
  660.         PlayerTextDrawSetSelectable(playerid,CosTD[playerid][2], 0);
  661.  
  662.         PlayerTextDrawShow(playerid, CosTD[playerid][0]);
  663.         PlayerTextDrawShow(playerid, CosTD[playerid][1]);
  664.         PlayerTextDrawShow(playerid, CosTD[playerid][2]);
  665.         PlayerVariables[playerid][PlayerInSaleVehicle] = true;
  666.     }
  667.     return (1);
  668. }
Advertisement
Add Comment
Please, Sign In to add comment