Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <dudb>
- // VitualWorld bug fixed by Krish
- #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
- //script by Leopard, original created by Antironix
- #define MAX_HOUSES 51
- #define MAX_RENTCOST 1000
- #define MIN_RENTCOST 500
- #define MAX_BUY_CARS 8
- #define CAR_DELIVER_TIME 1
- new HOUSE_STATS = 0; //0=stats on pickup, reverse if 1.
- enum CarInfo {CarModel,CarName[24],CarCost};
- new Buyable_Cars[MAX_BUY_CARS][CarInfo] =
- { //Modelid, Buy Name, Price
- {411,"Infernus",0},
- {522,"NRG-500",50000},
- {451,"Turismo",50000},
- {541,"Bullet",50000},
- {415,"Cheetah",50000},
- {429,"Banshee",50000},
- {494,"Hotring",50000},
- {556,"Monster",50000}
- };
- #define Cost_Admiral 50000
- //----------------------------
- #define c_y 0xFFFF00AA
- #define c_r 0xAA3333AA
- new HousePickup[MAX_HOUSES];
- new playerinterior[MAX_PLAYERS]=-1;
- new inhousepickup[MAX_PLAYERS];
- new playericonhouse[MAX_PLAYERS];
- new Float:housex, Float:housey, Float:housez;
- new housemapicon[MAX_PLAYERS];
- new playerworld[MAX_PLAYERS];
- new bool:KillVeh[MAX_VEHICLES] = false;
- forward rentfee();
- forward newcar();
- forward KillVehicle(carid);
- enum HouseInfo {Name[24],Renter[24],Rentable,Rentcost,Cost,Sell,Interior,Virtualworld,Locked,Float:InteriorX,Float:InteriorY,Float:InteriorZ,Float:iconx,Float:icony,Float:iconz,Rentfee}
- new hInfo[MAX_HOUSES][HouseInfo];
- enum HouseCarInfo {HouseCar,GotCar,Houseid,CarModel,Float:CarX,Float:CarY,Float:CarZ,CarColor1,CarColor2,Respawn_Delay,NewCar}
- new cInfo[MAX_HOUSES][HouseCarInfo];
- public OnFilterScriptInit()
- {
- print("--------------------------------------");
- print(" Simple House System by Antironix");
- print("--------------------------------------");
- AddHouse(0, 2524.708007, -1658.585571, 15.824020, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 96); //Small house
- AddHouse(1, 2523.258544, -1679.322387, 15.496999, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 200);//Medium House
- AddHouse(2, 2514.306396, -1691.628173, 14.046038, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 147); //Small house
- AddHouse(3, 2486.474121, -1644.539794, 14.077178, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 254);//Medium House
- AddHouse(4, 2469.367675, -1646.346313, 13.780097, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 31); //Small house
- AddHouse(5, 2452.079833, -1641.410888, 14.066207, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 42);//Medium House
- AddHouse(6, 2459.347412, -1691.663696, 13.547404, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 165);//Medium House
- AddHouse(7, 2409.027343, -1674.929199, 14.375000, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 60); //Small house
- AddHouse(8, 2413.904785, -1646.787353, 14.011916, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 28); //Small house
- AddHouse(9, 2393.170898, -1646.039550, 13.905097, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 208); //Small house
- AddHouse(10, 2384.562500, -1675.832397, 15.245691, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 62);//Medium House
- AddHouse(11, 2362.864990, -1643.193481, 14.351562, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 165);//Medium House
- AddHouse(12, 2368.354248, -1675.343750, 14.168166, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 64);//Medium House
- AddHouse(13, 2326.885253, -1681.938720, 14.929687, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 238); //Small house
- AddHouse(14, 2326.760986, -1716.704223, 14.237878, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 123);//Medium House
- AddHouse(15, 2308.929443, -1714.336669, 14.980066, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 116);//Medium House
- AddHouse(16, 2022.940307, -1120.264282, 26.421045, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 126);//Medium House
- AddHouse(17, 2000.065063, -1114.055419, 27.125000, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 209);//Medium House
- AddHouse(18, 1955.515747, -1115.504272, 27.830497, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 216);//Medium House
- AddHouse(19, 1939.205078, -1114.483276, 27.452295, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 40); //Small house
- AddHouse(20, 1921.306396, -1115.236816, 27.088310, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 78); //Small house
- AddHouse(21, 1906.116821, -1112.945556, 26.664062, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 157); //Small house
- AddHouse(22, 1885.888427, -1113.511718, 26.275810, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 145); //Small house
- AddHouse(23, 1895.496215, -2068.915771, 15.668893, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 213); //Small house
- AddHouse(24, 1873.601196, -2070.754150, 15.497086, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 156); //Small house
- AddHouse(25, 1851.932250, -2070.454101, 15.481237, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 26); //Small house
- AddHouse(26, 1804.197631, -2124.903564, 13.942373, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 156);//Medium House
- AddHouse(27, 1802.037963, -2098.944580, 14.021014, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 31);//Medium House
- AddHouse(28, 1782.298828, -2126.508789, 14.067889, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 136);//Medium House
- AddHouse(29, 1781.393920, -2101.266845, 14.056648, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 45);//Medium House
- AddHouse(30, 1762.353027, -2101.997314, 13.856951, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 55); //Small house
- AddHouse(31, 1761.206420, -2125.445556, 14.056648, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 237); //Small house
- AddHouse(32, 1734.612426, -2130.351074, 14.021014, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 177); //Small house
- AddHouse(33, 1734.157470, -2097.987792, 14.036639, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 12); //Small house
- AddHouse(34, 1711.653686, -2101.233154, 14.021014, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 168); //Small house
- AddHouse(35, 1715.158447, -2125.452392, 14.056648, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 170);//Medium House
- AddHouse(36, 1695.315063, -2125.835449, 13.810076, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 3);//Medium House
- AddHouse(37, 1895.532104, -2019.673095, 13.546875, 1299.14, -794.77, 1084.00, 30000, 31090, 5, 239); //Mansion
- AddHouse(38, 1377.808959, -1753.181030, 14.140625, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 26);//Medium House
- AddHouse(39, 769.225158, -1746.006835, 13.077295, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 208); //Small house
- AddHouse(40, 769.216430, -1696.486206, 5.155420, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 185); //Small house
- AddHouse(41, 2148.937255, -1484.769409, 26.624198, 2324.33, -1144.79, 1050.71, 150000, 140000, 12, 93);//Big house
- AddHouse(42, 2146.797363, -1470.428222, 26.042566, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 28);//Medium House
- AddHouse(43, 2152.212890, -1446.412719, 26.105066, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 99);//Medium House
- AddHouse(44, 2149.851562, -1433.655517, 26.070312, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 26);//Medium House
- AddHouse(45, 2150.923095, -1419.064575, 25.921875, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 96);//Medium House
- AddHouse(46, 2151.178710, -1400.568969, 26.128503, 2496.65, -1696.55, 1014.74, 10000, 90000, 3, 108);//Medium House
- AddHouse(47, 2244.466308, -1637.620849, 16.237878, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 251); //Small house
- AddHouse(48, 2257.065917, -1643.933837, 15.808191, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 97); //Small house
- AddHouse(49, 2282.194091, -1641.226684, 15.889788, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 8); //Small house
- AddHouse(50, 2306.942626, -1679.198242, 14.331628, 2251.85, -1138.16, 1050.63, 50000, 49000, 9, 76); //Small house
- SetTimer("rentfee", 1*60*60*1000, 1);//1 hour
- SetTimer("newcar", CAR_DELIVER_TIME*60*10*1000,1);//1 hour
- return 0;
- }
- public OnFilterScriptExit()
- {
- for(new i=0;i<MAX_HOUSES;i++)
- {
- DestroyPickup(HousePickup[i]);
- DestroyVehicle(cInfo[i][HouseCar]);
- }
- }
- public OnPlayerCommandText(playerid,cmdtext[])
- {
- dcmd(buy,3,cmdtext);
- dcmd(sell,4,cmdtext);
- dcmd(enter,5,cmdtext);
- dcmd(exit,4,cmdtext);
- dcmd(lock,4,cmdtext);
- dcmd(unlock,6,cmdtext);
- dcmd(home,4,cmdtext);
- dcmd(setrent,7,cmdtext);
- dcmd(rent,4,cmdtext);
- dcmd(unrent,6,cmdtext);
- dcmd(house,5,cmdtext);
- dcmd(housestats,10,cmdtext);
- dcmd(getrent,7,cmdtext);
- dcmd(payrent,7,cmdtext);
- dcmd(ordercar,8,cmdtext);
- return 0;
- }
- AddHouse(houseid, Float:iconX, Float:iconY, Float:iconZ, Float:interiorX, Float:interiorY, Float:interiorZ, Costa, Sella, Interiora, virtualworld)
- {
- new house[256];
- format(house, sizeof(house), "Houses/houseid%d",houseid);
- if(!dini_Exists(house))
- {
- dini_Create(house);
- format(hInfo[houseid][Name], 24, "ForSale");
- dini_Set(house, "Name", "ForSale");
- format(hInfo[houseid][Renter], 24, "ForRent");
- dini_Set(house, "Renter", "ForRent");
- hInfo[houseid][Rentable] = 0;
- dini_IntSet(house, "Rentable", 0);
- hInfo[houseid][Rentcost] = 0;
- dini_IntSet(house, "Rentcost", 0);
- hInfo[houseid][Cost] = Costa;
- dini_IntSet(house, "Cost", Costa);
- hInfo[houseid][Sell] = Sella;
- dini_IntSet(house, "Sell", Sella);
- hInfo[houseid][Interior] = Interiora;
- dini_IntSet(house, "Interior", Interiora);
- dini_IntSet(house, "Virtualworld", virtualworld);
- hInfo[houseid][Virtualworld] = virtualworld;
- hInfo[houseid][Locked] = 1;
- dini_IntSet(house, "Locked", 1);
- hInfo[houseid][InteriorX] = interiorX;
- hInfo[houseid][InteriorY] = interiorY;
- hInfo[houseid][InteriorZ] = interiorZ;
- dini_FloatSet(house, "X", interiorX);
- dini_FloatSet(house, "Y", interiorY);
- dini_FloatSet(house, "Z", interiorZ);
- dini_IntSet(house, "RentPay", 0);
- dini_IntSet(house, "RentGet", 0);
- cInfo[houseid][HouseCar] = 429;
- dini_IntSet(house, "HouseCar", 0);
- cInfo[houseid][CarModel] = 429;
- dini_IntSet(house, "CarModel", 0);
- cInfo[houseid][CarX] = 0;
- cInfo[houseid][CarY] = 0;
- cInfo[houseid][CarZ] = 0;
- dini_FloatSet(house, "CarX", 0);
- dini_FloatSet(house, "CarY", 0);
- dini_FloatSet(house, "CarZ", 0);
- cInfo[houseid][CarColor1] = 0;
- cInfo[houseid][CarColor2] = 0;
- dini_IntSet(house, "CarColor1", 0);
- dini_IntSet(house, "CarColor2", 0);
- cInfo[houseid][GotCar] = 0;
- print("-");
- print("--------------House Created--------------");
- printf("- Houseid: %d", houseid);
- printf("- Buy Cost: %d", Costa);
- printf("- Sell Cost: %d", Sella);
- printf("- Interior: %d", Interiora);
- printf("- VirtualWorld: %d", virtualworld);
- print("-----------------------------------------");
- print("-");
- }
- else
- {
- format(hInfo[houseid][Name], 24, dini_Get(house, "Name"));
- format(hInfo[houseid][Renter], 24, dini_Get(house, "Renter"));
- hInfo[houseid][Rentable] = dini_Int(house, "Rentable");
- hInfo[houseid][Rentcost] = dini_Int(house, "Rentcost");
- hInfo[houseid][Cost] = dini_Int(house, "Cost");
- hInfo[houseid][Sell] = dini_Int(house, "Sell");
- hInfo[houseid][Interior] = dini_Int(house, "Interior");
- hInfo[houseid][Locked] = dini_Int(house, "Locked");
- hInfo[houseid][InteriorX] = dini_Float(house, "X");
- hInfo[houseid][InteriorY] = dini_Float(house, "Y");
- hInfo[houseid][InteriorZ] = dini_Float(house, "Z");
- hInfo[houseid][Virtualworld] = dini_Int(house, "Virtualworld");
- }
- hInfo[houseid][iconx]=iconX;
- hInfo[houseid][icony]=iconY;
- hInfo[houseid][iconz]=iconZ;
- format(house, sizeof(house), "Houses/houseid%d",houseid);
- if(strcmp(hInfo[playericonhouse[houseid]][Name],"ForSale",true)==0)
- {
- HousePickup[houseid] = CreatePickup(1273, 23, iconX, iconY, iconZ);//not bought
- }
- else
- {
- HousePickup[houseid] = CreatePickup(1272,23, iconX, iconY, iconZ);//bought
- }
- }
- AddHouseCar(houseid, modelid, Float:Carx, Float:Cary, Float:Carz, color1, color2, respawn_delay)
- {
- new house[256];
- format(house, sizeof(house), "Houses/houseid%d",houseid);
- if(dini_Exists(house))
- {
- cInfo[houseid][GotCar] = 1;
- if(dini_Int(house, "CarModel")==0)
- {
- dini_IntSet(house, "CarModel", modelid);
- cInfo[houseid][CarModel] = modelid;
- cInfo[houseid][CarX] = Carx;
- cInfo[houseid][CarY] = Cary;
- cInfo[houseid][CarZ] = Carz;
- dini_FloatSet(house, "CarX", Carx);
- dini_FloatSet(house, "CarY", Cary);
- dini_FloatSet(house, "CarZ", Carz);
- cInfo[houseid][CarColor1] = color1;
- cInfo[houseid][CarColor2] = color2;
- dini_IntSet(house, "CarColor1", color1);
- dini_IntSet(house, "CarColor2", color2);
- dini_IntSet(house, "Respawn_Delay", respawn_delay);
- cInfo[houseid][Respawn_Delay] = respawn_delay;
- cInfo[houseid][HouseCar] = CreateVehicle(cInfo[houseid][CarModel], Carx, Cary, Carz, 0.0, color1, color2, respawn_delay);
- print("-");
- print("--------------Car Created--------------");
- printf("- Car Houseid: %d", houseid);
- printf("- Modelid: %d", modelid);
- printf("- Color 1: %d", color1);
- printf("- Color 2: %d", color2);
- printf("- Respawn Delay: %d", respawn_delay);
- print("---------------------------------------");
- print("-");
- }
- else
- {
- cInfo[houseid][CarModel] = dini_Int(house, "CarModel");
- }
- cInfo[houseid][CarX] = dini_Int(house, "CarX");
- cInfo[houseid][CarY] = dini_Int(house, "CarY");
- cInfo[houseid][CarZ] = dini_Int(house, "CarZ");
- cInfo[houseid][CarColor1] = dini_Int(house, "CarColor1");
- cInfo[houseid][CarColor2] = dini_Int(house, "CarColor2");
- cInfo[houseid][Respawn_Delay] = dini_Int(house, "Respawn_Delay");
- cInfo[houseid][HouseCar] = CreateVehicle(cInfo[houseid][CarModel], Carx, Cary, Carz, 0.0, color1, color2, respawn_delay);
- }
- }
- stock SpawnPlayerAtHouse(playerid)
- {
- new str1[256],pname[24],str[256];
- GetPlayerName(playerid, pname, sizeof(pname));
- format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
- if (dini_Exists(str1))
- {
- if(dini_Int(str1,"Houseid")!=-255)
- {
- new Float:x,Float:y,Float:z;
- str = dini_Get(str1,"SpawnInt");
- SetPlayerInterior(playerid, strval(str));
- playerinterior[playerid] = strval(str);
- x = dini_Float(str1,"SpawnX");
- y = dini_Float(str1,"SpawnY");
- z = dini_Float(str1,"SpawnZ");
- SetPlayerPos(playerid, x, y, z);
- }
- }
- return 1;
- }
- public OnPlayerSpawn(playerid) { SpawnPlayerAtHouse(playerid); }GetHouseStats(playerid, pickupid)
- {
- for(new i=0;i<MAX_HOUSES;i++)
- {
- if(pickupid==HousePickup[i])
- {
- if(HOUSE_STATS==0)
- {
- new str3[256];
- format(str3, sizeof(str3), "Owned by: %s", hInfo[i][Name]);
- SendClientMessage(playerid, c_y, str3);
- if(strcmp(hInfo[i][Renter],"ForRent",true))
- {
- format(str3, sizeof(str3), "Rented by: %s", hInfo[i][Renter]);
- SendClientMessage(playerid, c_y, str3);
- }
- format(str3,sizeof(str3),"Cost: %d",hInfo[i][Cost]);
- SendClientMessage(playerid, c_y, str3);
- }
- inhousepickup[playerid] = GetTickCount();
- playericonhouse[playerid] = i;
- }
- }
- }
- dcmd_sell(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000)
- {
- SendClientMessage(playerid, c_r, "You are not in a house icon!");
- return 1;
- }
- new str[255],str1[256],pname[24];
- GetPlayerName(playerid, pname, 24);
- format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
- if (strcmp(hInfo[playericonhouse[playerid]][Name],pname,false)) return SendClientMessage(playerid, c_r, "This house isn't yours!");
- SendClientMessage(playerid, c_y, "You have sold your house!");
- format(str, sizeof(str), "%s has sold houseid 0",pname);
- print(str);
- GivePlayerMoney(playerid, hInfo[playericonhouse[playerid]][Sell]);
- dini_Set(str1, "Name", "ForSale");
- hInfo[playericonhouse[playerid]][Locked] = dini_IntSet(str1,"Locked",1);
- format(hInfo[playericonhouse[playerid]][Name],255,"ForSale");
- format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
- if (!dini_Exists(str1)) dini_Create(str1);
- dini_IntSet(str1, "Houseid", -255);
- DestroyPickup(HousePickup[playericonhouse[playerid]]);
- HousePickup[playericonhouse[playerid]] = CreatePickup(1273, 23, hInfo[playericonhouse[playerid]][iconx], hInfo[playericonhouse[playerid]][icony], hInfo[playericonhouse[playerid]][iconz]);
- RemovePlayerMapIcon(playerid, housemapicon[playerid]);
- return 1;
- }
- dcmd_buy(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000)
- {
- SendClientMessage(playerid, c_r, "You are not in a house icon!");
- return 1;
- }
- new str[255],str1[255],pname[24];
- GetPlayerName(playerid, pname, 24);
- format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
- if(dini_Exists(str1))
- {
- if (dini_Int(str1, "Houseid")!=-255) return SendClientMessage(playerid, c_r, "You can only buy one house!");
- }
- format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
- if (strcmp(hInfo[playericonhouse[playerid]][Name],"ForSale",true)) return SendClientMessage(playerid, c_r, "This house isn't for sale!");
- if(GetPlayerMoney(playerid)<hInfo[playericonhouse[playerid]][Cost]) return SendClientMessage(playerid, c_r, "Not enough money!");
- SendClientMessage(playerid, c_y, "You have bought the house!");
- format(str, sizeof(str), "%s has bought houseid 0",pname);
- print(str);
- GivePlayerMoney(playerid, -hInfo[playericonhouse[playerid]][Cost]);
- dini_Set(str1, "Name", pname);
- hInfo[playericonhouse[playerid]][Name]=pname;
- hInfo[playericonhouse[playerid]][Locked] = dini_IntSet(str1,"Locked",0);
- format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
- if (!dini_Exists(str1)) dini_Create(str1);
- new Float:sy, Float:sx, Float:sz;
- dini_IntSet(str1, "Houseid", playericonhouse[playerid]);
- if(!dini_Isset(str1,"Rentid"))
- {
- dini_IntSet(str1, "Rentid", -255);
- }
- GetPlayerPos(playerid, sx,sy,sz);
- dini_FloatSet(str1, "SpawnX", sx);
- dini_FloatSet(str1, "SpawnY", sy);
- dini_FloatSet(str1, "SpawnZ", sz);
- dini_IntSet(str1, "SpawnInt", GetPlayerInterior(playerid));
- DestroyPickup(HousePickup[playericonhouse[playerid]]);
- HousePickup[playericonhouse[playerid]] = CreatePickup(1272, 23, hInfo[playericonhouse[playerid]][iconx], hInfo[playericonhouse[playerid]][icony], hInfo[playericonhouse[playerid]][iconz]);
- return 1;
- }
- dcmd_lock(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000)
- {
- SendClientMessage(playerid, c_r, "You are not in a house icon!");
- return 1;
- }
- new str1[256],pname[24];
- GetPlayerName(playerid, pname, 24);
- format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
- if(strcmp(hInfo[playericonhouse[playerid]][Name],pname,true)==0)
- {
- SendClientMessage(playerid, c_y, "You have locked your house!");
- dini_IntSet(str1,"Locked",1);
- hInfo[playericonhouse[playerid]][Locked] = 1;
- }
- else if(strcmp(hInfo[playericonhouse[playerid]][Renter],pname,true)==0)
- {
- SendClientMessage(playerid, c_y, "You have locked your house!");
- dini_IntSet(str1,"Locked",1);
- hInfo[playericonhouse[playerid]][Locked] = 1;
- }
- else
- {
- SendClientMessage(playerid, c_r, "This house isn't yours!");
- }
- return 1;
- }
- dcmd_unlock(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000) { SendClientMessage(playerid, c_r, "You are not in a house icon!");return 1;}
- new str1[256],pname[24];
- GetPlayerName(playerid, pname, 24);
- format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
- if(strcmp(hInfo[playericonhouse[playerid]][Name],pname,true)==0){SendClientMessage(playerid, c_y, "You have unlocked your house!");dini_IntSet(str1,"Locked",0);hInfo[playericonhouse[playerid]][Locked] = 0;}
- else if(strcmp(hInfo[playericonhouse[playerid]][Renter],pname,true)==0){SendClientMessage(playerid, c_y, "You have unlocked your house!");dini_IntSet(str1,"Locked",0);hInfo[playericonhouse[playerid]][Locked] = 0;}
- else{SendClientMessage(playerid, c_r, "This house isn't yours!");}
- return 1;
- }
- dcmd_enter(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000) {SendClientMessage(playerid, c_r, "You are not in a house icon!");return 1;}
- new str1[255],pname[24];
- GetPlayerPos(playerid, housex, housey, housez);
- format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
- GetPlayerName(playerid, pname, 24);
- if(hInfo[playericonhouse[playerid]][Locked]==1) return SendClientMessage(playerid, c_r, "This house is locked!");
- playerworld[playerid] = GetPlayerVirtualWorld(playerid);
- SendClientMessage(playerid, c_y, "You entered the house!");
- SetPlayerVirtualWorld(playerid, hInfo[playericonhouse[playerid]][Virtualworld]);
- SetPlayerInterior(playerid, hInfo[playericonhouse[playerid]][Interior]);
- SetPlayerPos(playerid, hInfo[playericonhouse[playerid]][InteriorX], hInfo[playericonhouse[playerid]][InteriorY], hInfo[playericonhouse[playerid]][InteriorZ]);
- playerinterior[playerid] = hInfo[playericonhouse[playerid]][Interior];
- return 1;
- }
- dcmd_exit(playerid,params[])
- {
- #pragma unused params
- if(GetPlayerInterior(playerid)==playerinterior[playerid]){SetPlayerPos(playerid, housex, housey, housez);SetPlayerVirtualWorld(playerid, 0);SetPlayerInterior(playerid, playerworld[playerid]);SetPlayerVirtualWorld(playerid, 0);}
- else{SendClientMessage(playerid, c_r, "You have not entered a house!");}
- return 1;
- }
- dcmd_home(playerid,params[])
- {
- #pragma unused params
- new str1[256],pname[24];
- GetPlayerName(playerid, pname, 24);
- format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
- if(!dini_Exists(str1)) return SendClientMessage(playerid, c_r, "You don't own a house!");
- if(dini_Int(str1, "Houseid")!=-255)
- {
- housemapicon[playerid] = SetPlayerMapIcon(playerid,31,hInfo[dini_Int(str1, "Houseid")][iconx], hInfo[dini_Int(str1, "Houseid")][icony], hInfo[dini_Int(str1, "Houseid")][iconz],31,c_y);
- }
- else if (dini_Int(str1, "Rentid")!=-255)
- {
- housemapicon[playerid] = SetPlayerMapIcon(playerid,31,hInfo[dini_Int(str1, "Rentid")][iconx], hInfo[dini_Int(str1, "Rentid")][icony], hInfo[dini_Int(str1, "Rentid")][iconz],31,c_y);
- }
- else
- {
- SendClientMessage(playerid, c_r, "You don't own a house!");
- }
- return 1;
- }
- dcmd_setrent(playerid,params[])
- {
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000){SendClientMessage(playerid, c_r, "You are not in a house icon!");return 1;}
- new str[256],str1[256],pname[24];
- GetPlayerName(playerid, pname, 24);
- format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
- str = dini_Get(str1,"Name");
- if (strcmp(str,pname,true)) return SendClientMessage(playerid, c_r, "This house isn't yours!");
- new rentcost, rentable;
- if (sscanf(params, "dd", rentable, rentcost)) return SendClientMessage(playerid, c_r, "USAGE: /setrent [0/1] [Rentcost]");
- else if (rentcost<MIN_RENTCOST){format(str, sizeof(str), "The minimum rentcost is $%d.", MIN_RENTCOST);SendClientMessage(playerid, c_r, str);return 1;}
- else if (rentcost>MAX_RENTCOST){format(str, sizeof(str), "The maximum rentcost is $%d.", MAX_RENTCOST);SendClientMessage(playerid, c_r, str);return 1;}
- else if(rentable==1){SendClientMessage(playerid, c_y, "Your house is now rentable!");hInfo[playericonhouse[playerid]][Rentable] = 1;dini_IntSet(str1, "Rentable", 1);hInfo[playericonhouse[playerid]][Rentcost] = rentcost;dini_IntSet(str1, "Rentcost", rentcost);return 1;}
- else if(rentable==0){SendClientMessage(playerid, c_y, "Your house is now not rentable!");hInfo[playericonhouse[playerid]][Rentable] = 0;dini_IntSet(str1, "Rentable", 0);hInfo[playericonhouse[playerid]][Rentcost] = rentcost;dini_IntSet(str1, "Rentcost", rentcost);return 1;}
- return 1;
- }
- dcmd_rent(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000){SendClientMessage(playerid, c_r, "You are not in a house icon!");return 1;}
- new str[255],str1[256],str5[255],pname[24];
- GetPlayerName(playerid, pname, 24);
- format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
- format(str5, sizeof(str5), "Houses/Users/%s", udb_encode(pname));
- if(dini_Isset(str5, "Rentid")){if (dini_Int(str5, "Rentid")!=-255) return SendClientMessage(playerid, c_r, "You can only rent one house at a time!");}
- format(str, sizeof(str), dini_Get(str1,"Name"));
- if (strcmp(str,"ForSale",true)==0) return SendClientMessage(playerid, c_r, "This house has no owner!");
- if(hInfo[playericonhouse[playerid]][Rentable]==0 || strcmp(hInfo[playericonhouse[playerid]][Renter], "ForRent", true)==0) return SendClientMessage(playerid, c_r, "This house is not rentable!");
- if(GetPlayerMoney(playerid)<hInfo[playericonhouse[playerid]][Rentcost]) return SendClientMessage(playerid, c_r, "Not enough money!");
- dini_Set(str1, "Renter", udb_encode(pname));
- format(hInfo[playericonhouse[playerid]][Renter], 24, udb_encode(pname));
- dini_IntSet(str5, "Rentid", playericonhouse[playerid]);
- format(str1, sizeof(str1), "You have rented this house, it will cost you $%d an hour!", hInfo[playericonhouse[playerid]][Rentcost]);
- SendClientMessage(playerid, c_y, str1);
- return 1;
- }
- dcmd_unrent(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000){SendClientMessage(playerid, c_r, "You are not in a house icon!");return 1;}
- new str1[256],pname[24];
- GetPlayerName(playerid, pname, 24);
- format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
- if(strcmp(hInfo[playericonhouse[playerid]][Renter], pname, true)) return SendClientMessage(playerid, c_r, "You aren't renting this house!");
- dini_Set(str1, "Renter", "ForRent");
- format(hInfo[playericonhouse[playerid]][Renter], 24, "ForRent");
- format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
- dini_IntSet(str1, "Rentid", -255);
- SendClientMessage(playerid, c_y, "You have unrented this house!");
- return 1;
- }
- dcmd_house(playerid,params[])
- {
- #pragma unused params
- SendClientMessage(playerid, c_y, "-------------");
- SendClientMessage(playerid, c_y, "House options");
- SendClientMessage(playerid, c_y, "-------------");
- SendClientMessage(playerid, c_y, "/setrent [0/1] [Cost] - House owner");
- SendClientMessage(playerid, c_y, "/ordercar [CarName] - House owner");
- SendClientMessage(playerid, c_y, "/getrent - House owner");
- SendClientMessage(playerid, c_y, "/lock - Renter/Owner");
- SendClientMessage(playerid, c_y, "/unlock - Renter/Owner");
- SendClientMessage(playerid, c_y, "/payrent - Renter");
- SendClientMessage(playerid, c_y, "/unrent - Renter");
- SendClientMessage(playerid, c_y, "/rent - Guest");
- SendClientMessage(playerid, c_y, "-------------");
- return 1;
- }
- dcmd_housestats(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000){SendClientMessage(playerid, c_r, "You are not in a house icon!");return 1;}
- new str[256];
- format(str, sizeof(str), "Owner: %s", hInfo[playericonhouse[playerid]][Name]);
- SendClientMessage(playerid, c_y, str);
- format(str, sizeof(str), "Cost: $%d", hInfo[playericonhouse[playerid]][Cost]);
- SendClientMessage(playerid, c_y, str);
- format(str, sizeof(str), "Renter: %s", hInfo[playericonhouse[playerid]][Renter]);
- SendClientMessage(playerid, c_y, str);
- format(str, sizeof(str), "Rentcost: $%d / hour", hInfo[playericonhouse[playerid]][Rentcost]);
- SendClientMessage(playerid, c_y, str);
- return 1;
- }
- dcmd_getrent(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000){SendClientMessage(playerid, c_r, "You are not in a house icon!");return 1;}
- new pname[24];
- GetPlayerName(playerid, pname, 24);
- if(strcmp(hInfo[playericonhouse[playerid]][Name],pname,true)==0){new str[255];SendClientMessage(playerid, c_y, "You collected the money of the renter!");format(str, sizeof(str), "Houses/houseid%d", playericonhouse[playerid]);GivePlayerMoney(playerid, dini_Int(str, "RentGet"));dini_IntSet(str, "RentGet", 0);}
- else{SendClientMessage(playerid, c_r, "This house isn't yours!");}
- return 1;
- }
- dcmd_payrent(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000){SendClientMessage(playerid, c_r, "You are not in a house icon!");return 1;}
- new pname[24];
- GetPlayerName(playerid, pname, 24);
- if(strcmp(hInfo[playericonhouse[playerid]][Renter],pname,true)==0)
- {
- new str[255];
- format(str, sizeof(str), "Houses/houseid%d", playericonhouse[playerid]);
- if(GetPlayerMoney(playerid)<dini_Int(str, "RentPay")) return SendClientMessage(playerid, c_r, "You don't have enough money to pay the house owner!");
- SendClientMessage(playerid, c_y, "You have payed the money to the owner!");
- GivePlayerMoney(playerid, -dini_Int(str, "RentPay"));
- dini_IntSet(str, "RentPay", 0);
- }
- else{SendClientMessage(playerid, c_r, "You aren't renting this house!");}
- return 1;
- }
- dcmd_ordercar(playerid,params[])
- {
- #pragma unused params
- new timestamp = GetTickCount();
- if(timestamp - inhousepickup[playerid] > 5000)
- {
- SendClientMessage(playerid, c_r, "You are not in a house icon!");
- return 1;
- }
- new pname[24];
- GetPlayerName(playerid, pname, 24);
- if(cInfo[playericonhouse[playerid]][GotCar]==0) return SendClientMessage(playerid, c_r, "This house can't order a car!");
- if(strcmp(hInfo[playericonhouse[playerid]][Name],pname,true)==0)
- {
- new carname[40];
- if (sscanf(params, "s", carname))
- {
- SendClientMessage(playerid, c_r, "USAGE: /ordercar [CarName]");
- }
- else
- {
- new str[256], abc;
- for(new i=0;i<MAX_BUY_CARS;i++)
- {
- if(strcmp(carname,Buyable_Cars[i][CarName],true)==0)
- {
- if(GetPlayerMoney(playerid)<Buyable_Cars[i][CarCost]) return SendClientMessage(playerid, c_r, "Not enough money!");
- GivePlayerMoney(playerid, -Buyable_Cars[i][CarCost]);
- cInfo[playericonhouse[playerid]][CarModel] = Buyable_Cars[i][CarModel];
- format(str, sizeof(str), "Houses/houseid%d", playericonhouse[playerid]);
- dini_IntSet(str, "CarModel", Buyable_Cars[i][CarModel]);
- format(str, sizeof(str), "You have ordered the %s for $%d!", carname, Buyable_Cars[i][CarCost]);
- SendClientMessage(playerid, c_y, str);
- SendClientMessage(playerid, c_y, "It will take some time when your car will be delivered.");
- cInfo[playericonhouse[playerid]][NewCar] = 1;
- abc = 1;
- }
- }
- if(abc==0)
- {
- SendClientMessage(playerid, c_r, "Wrong vehicle name!");
- abc=0;
- }
- }
- }
- else
- {
- SendClientMessage(playerid, c_r, "This house isn't yours!");
- }
- return 1;
- }
- public newcar()
- {
- for(new carid=0;carid<MAX_HOUSES;carid++)
- {
- if(cInfo[carid][NewCar]==1)
- {
- cInfo[carid][NewCar]=0;
- KillVehicle(cInfo[carid][HouseCar]);
- cInfo[carid][HouseCar] = CreateVehicle(cInfo[carid][CarModel], cInfo[carid][CarX], cInfo[carid][CarY], cInfo[carid][CarZ], 0.0, cInfo[carid][CarColor1], cInfo[carid][CarColor2], cInfo[carid][Respawn_Delay]);
- }
- }
- }
- public KillVehicle(carid)
- {
- for (new i=0;i<MAX_PLAYERS;i++)
- {
- if(IsPlayerInVehicle(i, carid))
- {
- RemovePlayerFromVehicle(i);
- KillVeh[carid] = true;
- SetVehicleToRespawn(carid);
- SendClientMessage(i, c_r, "System: Your car has been destroyed.");
- SendClientMessage(i, c_r, "Reason: House system.");
- }
- else
- {
- KillVeh[carid] = true;
- SetVehicleToRespawn(carid);
- }
- }
- }
- public OnVehicleSpawn(vehicleid)
- {
- for(new i=0;i<MAX_HOUSES;i++)
- {
- if(KillVeh[cInfo[i][HouseCar]]==true)
- {
- KillVeh[cInfo[i][HouseCar]] = false;
- DestroyVehicle(cInfo[i][HouseCar]);
- }
- }
- }
- public rentfee()
- {
- new str[255],str2[255],pname[24];
- for(new houseid=0;houseid<MAX_HOUSES;houseid++)
- {
- print("f");
- format(str, sizeof(str), "Houses/houseid%d", houseid);
- if(strcmp(hInfo[houseid][Renter], "ForRent", true))
- {
- for(new ii=0;ii<MAX_PLAYERS;ii++)
- {
- if(IsPlayerConnected(ii))
- {
- GetPlayerName(ii, pname, 24);
- if(strcmp(hInfo[houseid][Renter], pname, true)==0)
- {
- format(str2, sizeof(str2), "You have to pay $%d for the hour you have rented the hous!", hInfo[houseid][Rentcost]);
- SendClientMessage(ii, c_y, str2);
- dini_IntSet(str, "RentGet", dini_Int(str, "RentGet")+hInfo[houseid][Rentcost]);
- dini_IntSet(str, "RentPay", dini_Int(str, "RentPay")+hInfo[houseid][Rentcost]);
- hInfo[houseid][Rentfee]=1;
- }
- }
- }
- if(hInfo[houseid][Rentfee]==0)
- {
- if(strcmp(hInfo[houseid][Renter],"ForRent"))
- {
- dini_IntSet(str, "RentGet", dini_Int(str, "RentGet")+hInfo[houseid][Rentcost]);
- dini_IntSet(str, "RentPay", dini_Int(str, "RentPay")+hInfo[houseid][Rentcost]);
- }
- }
- hInfo[houseid][Rentfee]=0;
- }
- }
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- GetHouseStats(playerid, pickupid);
- return 0;
- }
- stock sscanf(string[], format[], {Float,_}:...)
- {
- new
- formatPos = 0,
- stringPos = 0,
- paramPos = 2,
- paramCount = numargs();
- while (paramPos < paramCount && string[stringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = string[stringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = string[++stringPos];
- }
- do
- {
- stringPos++;
- if (ch >= '0' && ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return 1;
- }
- }
- while ((ch = string[stringPos]) && ch != ' ');
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- ch,
- num = 0;
- while ((ch = string[stringPos++]))
- {
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- case ' ':
- {
- break;
- }
- default:
- {
- return 1;
- }
- }
- }
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, string[stringPos++]);
- }
- case 'f':
- {
- new tmp[25];
- strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
- setarg(paramPos, 0, _:floatstr(tmp));
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = string[stringPos++]) && ch != ' ')
- {
- setarg(paramPos, i++, ch);
- }
- if (!i) return 1;
- }
- else
- {
- while ((ch = string[stringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- stringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (string[stringPos] && string[stringPos] != ' ')
- {
- stringPos++;
- }
- while (string[stringPos] == ' ')
- {
- stringPos++;
- }
- paramPos++;
- }
- while (format[formatPos] == 'z') formatPos++;
- return format[formatPos];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement