Advertisement
Guest User

Antironix

a guest
Oct 12th, 2008
17,418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.87 KB | None | 0 0
  1. #include <a_samp>
  2. #include <dudb>
  3. #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
  4. //----------------------------
  5. //----------------------------
  6. // Full house script by Antironix!
  7. // Just don't remove the credits!
  8. //----------------------------
  9. //----------------------------
  10. #define MAX_DISTANCE_TO_PROP 1.5
  11. #define MAX_HOUSES 100
  12. #define MAX_RENTCOST 1000
  13. #define MIN_RENTCOST 500
  14. #define MAX_BUY_CARS 8
  15. #define CAR_DELIVER_TIME 1 //The time that it takes that your car will be delivered. In hours.
  16.  
  17. //buyable cars
  18. enum CarInfo {CarModel,CarName[24],CarCost};
  19. new Buyable_Cars[MAX_BUY_CARS][CarInfo] =
  20. { //Modelid, Buy Name, Price
  21. {411,"Infernus",0},
  22. {522,"NRG-500",50000},
  23. {451,"Turismo",50000},
  24. {541,"Bullet",50000},
  25. {415,"Cheetah",50000},
  26. {429,"Banshee",50000},
  27. {494,"Hotring",50000},
  28. {556,"Monster",50000}
  29. };
  30. //----------------------------
  31. //----------------------------
  32. #define c_y 0xFFFF00AA
  33. #define c_r 0xAA3333AA
  34. new HousePickup[MAX_HOUSES];
  35. new playerinterior[MAX_PLAYERS]=-1;
  36. new Float:housex, Float:housey, Float:housez;
  37. new housemapicon[MAX_PLAYERS];
  38. new playerworld[MAX_PLAYERS];
  39. new bool:KillVeh[MAX_VEHICLES] = false;
  40. forward rentfee();
  41. forward newcar();
  42. forward KillVehicle(carid);
  43.  
  44. enum HouseInfo
  45. {
  46. Name[24],
  47. Renter[24],
  48. Rentable,
  49. Rentcost,
  50. Cost,
  51. Sell,
  52. Interior,
  53. Virtualworld,
  54. Locked,
  55. Float:InteriorX,
  56. Float:InteriorY,
  57. Float:InteriorZ,
  58. Float:iconx,
  59. Float:icony,
  60. Float:iconz,
  61. Rentfee
  62. }
  63. new hInfo[MAX_HOUSES][HouseInfo];
  64.  
  65. enum HouseCarInfo
  66. {
  67. HouseCar,
  68. GotCar,
  69. Houseid,
  70. CarModel,
  71. Float:CarX,
  72. Float:CarY,
  73. Float:CarZ,
  74. CarColor1,
  75. CarColor2,
  76. Respawn_Delay,
  77. NewCar
  78. }
  79. new cInfo[MAX_HOUSES][HouseCarInfo];
  80.  
  81. #define FILTERSCRIPT
  82. #if defined FILTERSCRIPT
  83.  
  84. public OnFilterScriptInit()
  85. {
  86. print("\n--------------------------------------");
  87. print(" Simple House System by Antironix");
  88. print("--------------------------------------\n");
  89. AddHouse(0, 1442.9769,-629.5287,95.7186, 2317.8201,-1024.7500,1050.2109, 0, 0, 9, 0);
  90. AddHouse(1, 1980.9896,-1719.0171,17.0304, 328.1465, 1478.4457,1084.4375, 0, 0, 15, 0);
  91. AddHouseCar(1, 429, 1975.3328,-1709.8126,15.9688, 0, 0, 5*60*1000);//5 min respawn delay
  92. SetTimer("rentfee", 1*60*60*1000, 1);//1 hour
  93. SetTimer("newcar", CAR_DELIVER_TIME*60*10*1000,1);//1 hour
  94. return 0;
  95. }
  96.  
  97. public OnFilterScriptExit()
  98. {
  99. for(new i=0;i<MAX_HOUSES;i++)
  100. {
  101. DestroyPickup(HousePickup[i]);
  102. DestroyVehicle(cInfo[i][HouseCar]);
  103. }
  104. return 0;
  105. }
  106.  
  107. #else
  108. #endif
  109.  
  110. public OnPlayerCommandText(playerid, cmdtext[])
  111. {
  112. dcmd(buy,3,cmdtext);
  113. dcmd(sell,4,cmdtext);
  114. dcmd(enter,5,cmdtext);
  115. dcmd(exit,4,cmdtext);
  116. dcmd(lock,4,cmdtext);
  117. dcmd(unlock,6,cmdtext);
  118. dcmd(home,4,cmdtext);
  119. dcmd(setrent,7,cmdtext);
  120. dcmd(rent,4,cmdtext);
  121. dcmd(unrent,6,cmdtext);
  122. dcmd(house,5,cmdtext);
  123. dcmd(housestats,10,cmdtext);
  124. dcmd(getrent,7,cmdtext);
  125. dcmd(payrent,7,cmdtext);
  126. dcmd(ordercar,8,cmdtext);
  127. return 0;
  128. }
  129.  
  130. AddHouse(houseid, Float:iconX, Float:iconY, Float:iconZ, Float:interiorX, Float:interiorY, Float:interiorZ, Costa, Sella, Interiora, virtualworld)
  131. {
  132. new house[256];
  133. format(house, sizeof(house), "Houses/houseid%d",houseid);
  134. if(!dini_Exists(house))
  135. {
  136. dini_Create(house);
  137. format(hInfo[houseid][Name], 24, "ForSale");
  138. dini_Set(house, "Name", "ForSale");
  139. format(hInfo[houseid][Renter], 24, "ForRent");
  140. dini_Set(house, "Renter", "ForRent");
  141. hInfo[houseid][Rentable] = 0;
  142. dini_IntSet(house, "Rentable", 0);
  143. hInfo[houseid][Rentcost] = 0;
  144. dini_IntSet(house, "Rentcost", 0);
  145. hInfo[houseid][Cost] = Costa;
  146. dini_IntSet(house, "Cost", Costa);
  147. hInfo[houseid][Sell] = Sella;
  148. dini_IntSet(house, "Sell", Sella);
  149. hInfo[houseid][Interior] = Interiora;
  150. dini_IntSet(house, "Interior", Interiora);
  151. dini_IntSet(house, "Virtualworld", virtualworld);
  152. hInfo[houseid][Virtualworld] = virtualworld;
  153. hInfo[houseid][Locked] = 1;
  154. dini_IntSet(house, "Locked", 1);
  155. hInfo[houseid][InteriorX] = interiorX;
  156. hInfo[houseid][InteriorY] = interiorY;
  157. hInfo[houseid][InteriorZ] = interiorZ;
  158. dini_FloatSet(house, "X", interiorX);
  159. dini_FloatSet(house, "Y", interiorY);
  160. dini_FloatSet(house, "Z", interiorZ);
  161. dini_IntSet(house, "RentPay", 0);
  162. dini_IntSet(house, "RentGet", 0);
  163. cInfo[houseid][HouseCar] = 429;
  164. dini_IntSet(house, "HouseCar", 0);
  165. cInfo[houseid][CarModel] = 429;
  166. dini_IntSet(house, "CarModel", 0);
  167. cInfo[houseid][CarX] = 0;
  168. cInfo[houseid][CarY] = 0;
  169. cInfo[houseid][CarZ] = 0;
  170. dini_FloatSet(house, "CarX", 0);
  171. dini_FloatSet(house, "CarY", 0);
  172. dini_FloatSet(house, "CarZ", 0);
  173. cInfo[houseid][CarColor1] = 0;
  174. cInfo[houseid][CarColor2] = 0;
  175. dini_IntSet(house, "CarColor1", 0);
  176. dini_IntSet(house, "CarColor2", 0);
  177. cInfo[houseid][GotCar] = 0;
  178. print("-");
  179. print("--------------House Created--------------");
  180. printf("- Houseid: %d", houseid);
  181. printf("- Buy Cost: %d", Costa);
  182. printf("- Sell Cost: %d", Sella);
  183. printf("- Interior: %d", Interiora);
  184. printf("- VirtualWorld: %d", virtualworld);
  185. print("-----------------------------------------");
  186. print("-");
  187. }
  188. else
  189. {
  190. format(hInfo[houseid][Name], 24, dini_Get(house, "Name"));
  191. format(hInfo[houseid][Renter], 24, dini_Get(house, "Renter"));
  192. hInfo[houseid][Rentable] = dini_Int(house, "Rentable");
  193. hInfo[houseid][Rentcost] = dini_Int(house, "Rentcost");
  194. hInfo[houseid][Cost] = dini_Int(house, "Cost");
  195. hInfo[houseid][Sell] = dini_Int(house, "Sell");
  196. hInfo[houseid][Interior] = dini_Int(house, "Interior");
  197. hInfo[houseid][Locked] = dini_Int(house, "Locked");
  198. hInfo[houseid][InteriorX] = dini_Float(house, "X");
  199. hInfo[houseid][InteriorY] = dini_Float(house, "Y");
  200. hInfo[houseid][InteriorZ] = dini_Float(house, "Z");
  201. hInfo[houseid][Virtualworld] = dini_Int(house, "Virtualworld");
  202. }
  203. hInfo[houseid][iconx]=iconX;
  204. hInfo[houseid][icony]=iconY;
  205. hInfo[houseid][iconz]=iconZ;
  206. format(house, sizeof(house), "Houses/houseid%d",houseid);
  207. if(strcmp(hInfo[houseid][Name],"ForSale",true)==0)
  208. {
  209. HousePickup[houseid] = CreatePickup(1273, 23, iconX, iconY, iconZ);//not bought
  210. }
  211. else
  212. {
  213. HousePickup[houseid] = CreatePickup(1272,23, iconX, iconY, iconZ);//bought
  214. }
  215. }
  216.  
  217. AddHouseCar(houseid, modelid, Float:Carx, Float:Cary, Float:Carz, color1, color2, respawn_delay)
  218. {
  219. new house[256];
  220. format(house, sizeof(house), "Houses/houseid%d",houseid);
  221. if(dini_Exists(house))
  222. {
  223. cInfo[houseid][GotCar] = 1;
  224. if(dini_Int(house, "CarModel")==0)
  225. {
  226. dini_IntSet(house, "CarModel", modelid);
  227. cInfo[houseid][CarModel] = modelid;
  228. cInfo[houseid][CarX] = Carx;
  229. cInfo[houseid][CarY] = Cary;
  230. cInfo[houseid][CarZ] = Carz;
  231. dini_FloatSet(house, "CarX", Carx);
  232. dini_FloatSet(house, "CarY", Cary);
  233. dini_FloatSet(house, "CarZ", Carz);
  234. cInfo[houseid][CarColor1] = color1;
  235. cInfo[houseid][CarColor2] = color2;
  236. dini_IntSet(house, "CarColor1", color1);
  237. dini_IntSet(house, "CarColor2", color2);
  238. dini_IntSet(house, "Respawn_Delay", respawn_delay);
  239. cInfo[houseid][Respawn_Delay] = respawn_delay;
  240. cInfo[houseid][HouseCar] = CreateVehicle(cInfo[houseid][CarModel], Carx, Cary, Carz, 0.0, color1, color2, respawn_delay);
  241. print("-");
  242. print("--------------Car Created--------------");
  243. printf("- Car Houseid: %d", houseid);
  244. printf("- Modelid: %d", modelid);
  245. printf("- Color 1: %d", color1);
  246. printf("- Color 2: %d", color2);
  247. printf("- Respawn Delay: %d", respawn_delay);
  248. print("---------------------------------------");
  249. print("-");
  250. }
  251. else
  252. {
  253. cInfo[houseid][CarModel] = dini_Int(house, "CarModel");
  254. }
  255. cInfo[houseid][CarX] = dini_Int(house, "CarX");
  256. cInfo[houseid][CarY] = dini_Int(house, "CarY");
  257. cInfo[houseid][CarZ] = dini_Int(house, "CarZ");
  258. cInfo[houseid][CarColor1] = dini_Int(house, "CarColor1");
  259. cInfo[houseid][CarColor2] = dini_Int(house, "CarColor2");
  260. cInfo[houseid][Respawn_Delay] = dini_Int(house, "Respawn_Delay");
  261. cInfo[houseid][HouseCar] = CreateVehicle(cInfo[houseid][CarModel], Carx, Cary, Carz, 0.0, color1, color2, respawn_delay);
  262. }
  263. }
  264.  
  265. stock SpawnPlayerAtHouse(playerid)
  266. {
  267. new str1[256],pname[24],str[256];
  268. GetPlayerName(playerid, pname, sizeof(pname));
  269. format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
  270. if (dini_Exists(str1))
  271. {
  272. if(dini_Int(str1,"Houseid")!=-255)
  273. {
  274. new Float:x,Float:y,Float:z;
  275. str = dini_Get(str1,"SpawnInt");
  276. SetPlayerInterior(playerid, strval(str));
  277. playerinterior[playerid] = strval(str);
  278. x = dini_Float(str1,"SpawnX");
  279. y = dini_Float(str1,"SpawnY");
  280. z = dini_Float(str1,"SpawnZ");
  281. SetPlayerPos(playerid, x, y, z);
  282. }
  283. }
  284. return 1;
  285. }
  286.  
  287. public OnPlayerSpawn(playerid)
  288. {
  289. SpawnPlayerAtHouse(playerid);
  290. }
  291.  
  292. stock GetHouseStats(playerid, hid)
  293. {
  294. new str2[256];
  295. format(str2, sizeof(str2), "Owned by: %s", hInfo[hid][Name]);
  296. SendClientMessage(playerid, c_y, str2);
  297. if(strcmp(hInfo[hid][Renter],"ForRent",true))
  298. {
  299. format(str2, sizeof(str2), "Rented by: %s", hInfo[hid][Renter]);
  300. SendClientMessage(playerid, c_y, str2);
  301. }
  302. format(str2,sizeof(str2),"Cost: %i",hInfo[hid][Cost]);
  303. SendClientMessage(playerid, c_y, str2);
  304. }
  305.  
  306. dcmd_sell(playerid,params[])
  307. {
  308. #pragma unused params
  309. new str[255],str1[256],pname[24],housenumber;
  310. housenumber = GetHouseID(playerid);
  311. GetPlayerName(playerid, pname, 24);
  312. format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
  313. if (strcmp(hInfo[housenumber][Name],pname,false)) return SendClientMessage(playerid, c_r, "This house isn't yours!");
  314. SendClientMessage(playerid, c_y, "You have sold your house!");
  315. format(str, sizeof(str), "%s has sold houseid 0",pname);
  316. print(str);
  317. GivePlayerMoney(playerid, hInfo[housenumber][Sell]);
  318. dini_Set(str1, "Name", "ForSale");
  319. hInfo[housenumber][Locked] = dini_IntSet(str1,"Locked",1);
  320. format(hInfo[housenumber][Name],255,"ForSale");
  321. format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
  322. if (!dini_Exists(str1)) dini_Create(str1);
  323. dini_IntSet(str1, "Houseid", -255);
  324. DestroyPickup(HousePickup[housenumber]);
  325. HousePickup[housenumber] = CreatePickup(1273, 23, hInfo[housenumber][iconx], hInfo[housenumber][icony], hInfo[housenumber][iconz]);
  326. RemovePlayerMapIcon(playerid, housemapicon[playerid]);
  327. return 1;
  328. }
  329.  
  330. dcmd_buy(playerid,params[])
  331. {
  332. #pragma unused params
  333. new str[255],str1[255],pname[24], housenumber;
  334. housenumber = GetHouseID(playerid);
  335. if(housenumber == -1) return SendClientMessage(playerid, c_r, "You are not in a house icon!");
  336.  
  337. GetPlayerName(playerid, pname, 24);
  338. format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
  339. if(dini_Exists(str1))
  340. {
  341. if (dini_Int(str1, "Houseid")!=-255) return SendClientMessage(playerid, c_r, "You can only buy one house!");
  342. }
  343. format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
  344. if (strcmp(hInfo[housenumber][Name],"ForSale",true)) return SendClientMessage(playerid, c_r, "This house isn't for sale!");
  345. if(GetPlayerMoney(playerid)<hInfo[housenumber][Cost]) return SendClientMessage(playerid, c_r, "Not enough money!");
  346. SendClientMessage(playerid, c_y, "You have bought the house!");
  347. format(str, sizeof(str), "%s has bought houseid 0",pname);
  348. print(str);
  349. GivePlayerMoney(playerid, -hInfo[housenumber][Cost]);
  350. dini_Set(str1, "Name", pname);
  351. hInfo[housenumber][Name]=pname;
  352. hInfo[housenumber][Locked] = dini_IntSet(str1,"Locked",0);
  353.  
  354. format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
  355. if (!dini_Exists(str1)) dini_Create(str1);
  356. new Float:sy, Float:sx, Float:sz;
  357. dini_IntSet(str1, "Houseid", housenumber);
  358. if(!dini_Isset(str1,"Rentid"))
  359. {
  360. dini_IntSet(str1, "Rentid", -255);
  361. }
  362. GetPlayerPos(playerid, sx,sy,sz);
  363. dini_FloatSet(str1, "SpawnX", sx);
  364. dini_FloatSet(str1, "SpawnY", sy);
  365. dini_FloatSet(str1, "SpawnZ", sz);
  366. dini_IntSet(str1, "SpawnInt", GetPlayerInterior(playerid));
  367. DestroyPickup(HousePickup[housenumber]);
  368. HousePickup[housenumber] = CreatePickup(1272, 23, hInfo[housenumber][iconx], hInfo[housenumber][icony], hInfo[housenumber][iconz]);
  369. return 1;
  370. }
  371.  
  372. dcmd_lock(playerid,params[])
  373. {
  374. #pragma unused params
  375. new str1[256],pname[24],housenumber;
  376. housenumber = GetHouseID(playerid);
  377. GetPlayerName(playerid, pname, 24);
  378. format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
  379. if(strcmp(hInfo[housenumber][Name],pname,true)==0)
  380. {
  381. SendClientMessage(playerid, c_y, "You have locked your house!");
  382. dini_IntSet(str1,"Locked",1);
  383. hInfo[housenumber][Locked] = 1;
  384. }
  385. else if(strcmp(hInfo[housenumber][Renter],pname,true)==0)
  386. {
  387. SendClientMessage(playerid, c_y, "You have locked your house!");
  388. dini_IntSet(str1,"Locked",1);
  389. hInfo[housenumber][Locked] = 1;
  390. }
  391. else
  392. {
  393. SendClientMessage(playerid, c_r, "This house isn't yours!");
  394. }
  395. return 1;
  396. }
  397.  
  398. dcmd_unlock(playerid,params[])
  399. {
  400. #pragma unused params
  401. new str1[256],pname[24],housenumber;
  402. housenumber = GetHouseID(playerid);
  403. GetPlayerName(playerid, pname, 24);
  404. format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
  405. if(strcmp(hInfo[housenumber][Name],pname,true)==0)
  406. {
  407. SendClientMessage(playerid, c_y, "You have unlocked your house!");
  408. dini_IntSet(str1,"Locked",0);
  409. hInfo[housenumber][Locked] = 0;
  410. }
  411. else if(strcmp(hInfo[housenumber][Renter],pname,true)==0)
  412. {
  413. SendClientMessage(playerid, c_y, "You have unlocked your house!");
  414. dini_IntSet(str1,"Locked",0);
  415. hInfo[housenumber][Locked] = 0;
  416. }
  417. else
  418. {
  419. SendClientMessage(playerid, c_r, "This house isn't yours!");
  420. }
  421. return 1;
  422. }
  423.  
  424. dcmd_enter(playerid,params[])
  425. {
  426. #pragma unused params
  427. new str1[255],pname[24],housenumber;
  428. housenumber = GetHouseID(playerid);
  429. GetPlayerPos(playerid, housex, housey, housez);
  430. format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
  431. GetPlayerName(playerid, pname, 24);
  432. if(hInfo[housenumber][Locked]==1) return SendClientMessage(playerid, c_r, "This house is locked!");
  433. playerworld[playerid] = GetPlayerVirtualWorld(playerid);
  434. SendClientMessage(playerid, c_y, "You entered the house!");
  435. SetPlayerVirtualWorld(playerid, hInfo[housenumber][Virtualworld]);
  436. SetPlayerInterior(playerid, hInfo[housenumber][Interior]);
  437. SetPlayerPos(playerid, hInfo[housenumber][InteriorX], hInfo[housenumber][InteriorY], hInfo[housenumber][InteriorZ]);
  438. playerinterior[playerid] = hInfo[housenumber][Interior];
  439. return 1;
  440. }
  441.  
  442. dcmd_exit(playerid,params[])
  443. {
  444. #pragma unused params
  445.  
  446. if(GetPlayerInterior(playerid)==playerinterior[playerid])
  447. {
  448. SetPlayerPos(playerid, housex, housey, housez);
  449. SetPlayerInterior(playerid, playerworld[playerid]);
  450. }
  451. else
  452. {
  453. SendClientMessage(playerid, c_r, "You have not entered a house!");
  454. }
  455. return 1;
  456. }
  457.  
  458. dcmd_home(playerid,params[])
  459. {
  460. #pragma unused params
  461. new str1[256],pname[24];
  462. GetPlayerName(playerid, pname, 24);
  463. format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
  464. if(!dini_Exists(str1)) return SendClientMessage(playerid, c_r, "You don't own a house!");
  465. if(dini_Int(str1, "Houseid")!=-255)
  466. {
  467. 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);
  468. }
  469. else if (dini_Int(str1, "Rentid")!=-255)
  470. {
  471. 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);
  472. }
  473. else
  474. {
  475. SendClientMessage(playerid, c_r, "You don't own a house!");
  476. }
  477. return 1;
  478. }
  479.  
  480. dcmd_setrent(playerid,params[])
  481. {
  482. new str[256],str1[256],pname[24],housenumber;
  483. housenumber = GetHouseID(playerid);
  484. GetPlayerName(playerid, pname, 24);
  485. format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
  486. str = dini_Get(str1,"Name");
  487. if (strcmp(str,pname,true)) return SendClientMessage(playerid, c_r, "This house isn't yours!");
  488. new rentcost, rentable;
  489. if (sscanf(params, "dd", rentable, rentcost)) return SendClientMessage(playerid, c_r, "USAGE: /setrent [0/1] [Rentcost]");
  490. else if (rentcost<MIN_RENTCOST)
  491. {
  492. format(str, sizeof(str), "The minimum rentcost is $%i.", MIN_RENTCOST);
  493. SendClientMessage(playerid, c_r, str);
  494. return 1;
  495. }
  496. else if (rentcost>MAX_RENTCOST)
  497. {
  498. format(str, sizeof(str), "The maximum rentcost is $%i.", MAX_RENTCOST);
  499. SendClientMessage(playerid, c_r, str);
  500. return 1;
  501. }
  502. else if(rentable==1)
  503. {
  504. SendClientMessage(playerid, c_y, "Your house is now rentable!");
  505. hInfo[housenumber][Rentable] = 1;
  506. dini_IntSet(str1, "Rentable", 1);
  507. hInfo[housenumber][Rentcost] = rentcost;
  508. dini_IntSet(str1, "Rentcost", rentcost);
  509. return 1;
  510. }
  511. else if(rentable==0)
  512. {
  513. SendClientMessage(playerid, c_y, "Your house is now not rentable!");
  514. hInfo[housenumber][Rentable] = 0;
  515. dini_IntSet(str1, "Rentable", 0);
  516. hInfo[housenumber][Rentcost] = rentcost;
  517. dini_IntSet(str1, "Rentcost", rentcost);
  518. return 1;
  519. }
  520. return 1;
  521. }
  522.  
  523. dcmd_rent(playerid,params[])
  524. {
  525. #pragma unused params
  526. new str[255],str1[256],str5[255],pname[24],housenumber;
  527. housenumber = GetHouseID(playerid);
  528. GetPlayerName(playerid, pname, 24);
  529. format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
  530. format(str5, sizeof(str5), "Houses/Users/%s", udb_encode(pname));
  531. if(dini_Isset(str5, "Rentid"))
  532. {
  533. if (dini_Int(str5, "Rentid")!=-255) return SendClientMessage(playerid, c_r, "You can only rent one house at a time!");
  534. }
  535. format(str, sizeof(str), dini_Get(str1,"Name"));
  536. if (strcmp(str,"ForSale",true)==0) return SendClientMessage(playerid, c_r, "This house has no owner!");
  537. if(hInfo[housenumber][Rentable]==0 || strcmp(hInfo[housenumber][Renter], "ForRent", true)) return SendClientMessage(playerid, c_r, "This house is not rentable!");
  538. if(GetPlayerMoney(playerid)<hInfo[housenumber][Rentcost]) return SendClientMessage(playerid, c_r, "Not enough money!");
  539. dini_Set(str1, "Renter", udb_encode(pname));
  540. format(hInfo[housenumber][Renter], 24, udb_encode(pname));
  541. dini_IntSet(str5, "Rentid", housenumber);
  542. format(str1, sizeof(str1), "You have rented this house, it will cost you $%i an hour!", hInfo[housenumber][Rentcost]);
  543. SendClientMessage(playerid, c_y, str1);
  544. return 1;
  545. }
  546.  
  547. dcmd_unrent(playerid,params[])
  548. {
  549. #pragma unused params
  550. new str1[256],pname[24],housenumber;
  551. housenumber = GetHouseID(playerid);
  552. GetPlayerName(playerid, pname, 24);
  553. format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
  554. if(strcmp(hInfo[housenumber][Renter], pname, true)) return SendClientMessage(playerid, c_r, "You aren't renting this house!");
  555.  
  556. dini_Set(str1, "Renter", "ForRent");
  557. format(hInfo[housenumber][Renter], 24, "ForRent");
  558. format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
  559. dini_IntSet(str1, "Rentid", -255);
  560. SendClientMessage(playerid, c_y, "You have unrented this house!");
  561. return 1;
  562. }
  563.  
  564. dcmd_house(playerid,params[])
  565. {
  566. #pragma unused params
  567. SendClientMessage(playerid, c_y, "-------------");
  568. SendClientMessage(playerid, c_y, "House options");
  569. SendClientMessage(playerid, c_y, "-------------");
  570. SendClientMessage(playerid, c_y, "/setrent [0/1] [Cost] - House owner");
  571. SendClientMessage(playerid, c_y, "/ordercar [CarName] - House owner");
  572. SendClientMessage(playerid, c_y, "/getrent - House owner");
  573. SendClientMessage(playerid, c_y, "/lock - Renter/Owner");
  574. SendClientMessage(playerid, c_y, "/unlock - Renter/Owner");
  575. SendClientMessage(playerid, c_y, "/payrent - Renter");
  576. SendClientMessage(playerid, c_y, "/unrent - Renter");
  577. SendClientMessage(playerid, c_y, "/rent - Guest");
  578. SendClientMessage(playerid, c_y, "-------------");
  579. return 1;
  580. }
  581.  
  582. dcmd_housestats(playerid,params[])
  583. {
  584. #pragma unused params
  585. new str[256],housenumber;
  586. housenumber = GetHouseID(playerid);
  587. format(str, sizeof(str), "Owner: %s", hInfo[housenumber][Name]);
  588. SendClientMessage(playerid, c_y, str);
  589. format(str, sizeof(str), "Cost: $%d", hInfo[housenumber][Cost]);
  590. SendClientMessage(playerid, c_y, str);
  591. format(str, sizeof(str), "Renter: %s", hInfo[housenumber][Renter]);
  592. SendClientMessage(playerid, c_y, str);
  593. format(str, sizeof(str), "Rentcost: $%d / hour", hInfo[housenumber][Rentcost]);
  594. SendClientMessage(playerid, c_y, str);
  595. return 1;
  596. }
  597.  
  598. dcmd_getrent(playerid,params[])
  599. {
  600. #pragma unused params
  601. new pname[24],housenumber;
  602. housenumber = GetHouseID(playerid);
  603. GetPlayerName(playerid, pname, 24);
  604. if(strcmp(hInfo[housenumber][Name],pname,true)==0)
  605. {
  606. new str[255];
  607. SendClientMessage(playerid, c_y, "You collected the money of the renter!");
  608. format(str, sizeof(str), "Houses/houseid%d", housenumber);
  609. GivePlayerMoney(playerid, dini_Int(str, "RentGet"));
  610. dini_IntSet(str, "RentGet", 0);
  611. }
  612. else
  613. {
  614. SendClientMessage(playerid, c_r, "This house isn't yours!");
  615. }
  616. return 1;
  617. }
  618.  
  619. dcmd_payrent(playerid,params[])
  620. {
  621. #pragma unused params
  622. new pname[24],housenumber;
  623. housenumber = GetHouseID(playerid);
  624. GetPlayerName(playerid, pname, 24);
  625. if(strcmp(hInfo[housenumber][Renter],pname,true)==0)
  626. {
  627. new str[255];
  628. format(str, sizeof(str), "Houses/houseid%d", housenumber);
  629. if(GetPlayerMoney(playerid)<dini_Int(str, "RentPay")) return SendClientMessage(playerid, c_r, "You don't have enough money to pay the house owner!");
  630. SendClientMessage(playerid, c_y, "You have payed the money to the owner!");
  631. GivePlayerMoney(playerid, -dini_Int(str, "RentPay"));
  632. dini_IntSet(str, "RentPay", 0);
  633. }
  634. else
  635. {
  636. SendClientMessage(playerid, c_r, "You aren't renting this house!");
  637. }
  638. return 1;
  639. }
  640.  
  641. dcmd_ordercar(playerid,params[])
  642. {
  643. #pragma unused params
  644. new pname[24],housenumber;
  645. housenumber = GetHouseID(playerid);
  646. GetPlayerName(playerid, pname, 24);
  647. if(cInfo[housenumber][GotCar]==0) return SendClientMessage(playerid, c_r, "This house can't order a car!");
  648. if(strcmp(hInfo[housenumber][Name],pname,true)==0)
  649. {
  650. new carname[40];
  651. if (sscanf(params, "s", carname))
  652. {
  653. SendClientMessage(playerid, c_r, "USAGE: /ordercar [CarName]");
  654. }
  655. else
  656. {
  657. new str[256], abc;
  658. for(new i=0;i<MAX_BUY_CARS;i++)
  659. {
  660. if(strcmp(carname,Buyable_Cars[i][CarName],true)==0)
  661. {
  662. if(GetPlayerMoney(playerid)<Buyable_Cars[i][CarCost]) return SendClientMessage(playerid, c_r, "Not enough money!");
  663. GivePlayerMoney(playerid, -Buyable_Cars[i][CarCost]);
  664. cInfo[housenumber][CarModel] = Buyable_Cars[i][CarModel];
  665. format(str, sizeof(str), "Houses/houseid%d", housenumber);
  666. dini_IntSet(str, "CarModel", Buyable_Cars[i][CarModel]);
  667. format(str, sizeof(str), "You have ordered the %s for $%d!", carname, Buyable_Cars[i][CarCost]);
  668. SendClientMessage(playerid, c_y, str);
  669. SendClientMessage(playerid, c_y, "It will take some time when your car will be delivered.");
  670. cInfo[housenumber][NewCar] = 1;
  671. abc = 1;
  672. }
  673. }
  674. if(abc==0)
  675. {
  676. SendClientMessage(playerid, c_r, "Wrong vehicle name!");
  677. abc=0;
  678. }
  679.  
  680. }
  681. }
  682. else
  683. {
  684. SendClientMessage(playerid, c_r, "This house isn't yours!");
  685. }
  686. return 1;
  687. }
  688.  
  689. public newcar()
  690. {
  691. for(new carid=0;carid<MAX_HOUSES;carid++)
  692. {
  693. if(cInfo[carid][NewCar]==1)
  694. {
  695. cInfo[carid][NewCar]=0;
  696. KillVehicle(cInfo[carid][HouseCar]);
  697. 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]);
  698. }
  699. }
  700. }
  701.  
  702. public KillVehicle(carid)
  703. {
  704. for (new i=0;i<MAX_PLAYERS;i++)
  705. {
  706. if(IsPlayerInVehicle(i, carid))
  707. {
  708. RemovePlayerFromVehicle(i);
  709. KillVeh[carid] = true;
  710. SetVehicleToRespawn(carid);
  711. SendClientMessage(i, c_r, "System: Your car has been destroyed.");
  712. SendClientMessage(i, c_r, "Reason: House system.");
  713. }
  714. else
  715. {
  716. KillVeh[carid] = true;
  717. SetVehicleToRespawn(carid);
  718. }
  719. }
  720. }
  721.  
  722. public OnVehicleSpawn(vehicleid)
  723. {
  724. for(new i=0;i<MAX_HOUSES;i++)
  725. {
  726. if(KillVeh[cInfo[i][HouseCar]]==true)
  727. {
  728. KillVeh[cInfo[i][HouseCar]] = false;
  729. DestroyVehicle(cInfo[i][HouseCar]);
  730. }
  731. }
  732. }
  733.  
  734. public rentfee()
  735. {
  736. new str[255],str2[255],pname[24];
  737. for(new houseid=0;houseid<MAX_HOUSES;houseid++)
  738. {
  739. format(str, sizeof(str), "Houses/houseid%d", houseid);
  740. if(strcmp(hInfo[houseid][Renter], "ForRent", true))
  741. {
  742. for(new ii=0;ii<MAX_PLAYERS;ii++)
  743. {
  744. if(IsPlayerConnected(ii))
  745. {
  746. GetPlayerName(ii, pname, 24);
  747. if(strcmp(hInfo[houseid][Renter], pname, true)==0)
  748. {
  749. format(str2, sizeof(str2), "You have to pay $%d for the hour you have rented the hous!", hInfo[houseid][Rentcost]);
  750. SendClientMessage(ii, c_y, str2);
  751. dini_IntSet(str, "RentGet", dini_Int(str, "RentGet")+hInfo[houseid][Rentcost]);
  752. dini_IntSet(str, "RentPay", dini_Int(str, "RentPay")+hInfo[houseid][Rentcost]);
  753. hInfo[houseid][Rentfee]=1;
  754. }
  755. }
  756. }
  757. if(hInfo[houseid][Rentfee]==0)
  758. {
  759. if(strcmp(hInfo[houseid][Renter],"ForRent"))
  760. {
  761. dini_IntSet(str, "RentGet", dini_Int(str, "RentGet")+hInfo[houseid][Rentcost]);
  762. dini_IntSet(str, "RentPay", dini_Int(str, "RentPay")+hInfo[houseid][Rentcost]);
  763. }
  764. }
  765. hInfo[houseid][Rentfee]=0;
  766. }
  767. }
  768. }
  769.  
  770. public OnPlayerPickUpPickup(playerid, pickupid)
  771. {
  772. if(GetHouseID(playerid) != -255) GetHouseStats(playerid, GetHouseID(playerid));
  773. return 0;
  774. }
  775.  
  776. stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
  777. {
  778. if(IsPlayerConnected(playerid))
  779. {
  780. new Float:oldposx, Float:oldposy, Float:oldposz;
  781. new Float:tempposx, Float:tempposy, Float:tempposz;
  782. GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  783. tempposx = (oldposx -x);
  784. tempposy = (oldposy -y);
  785. tempposz = (oldposz -z);
  786. if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  787. {
  788. return 1;
  789. }
  790. }
  791. return 0;
  792. }
  793.  
  794. stock GetHouseID(playerid)
  795. {
  796. for(new i=0; i<MAX_HOUSES; i++)
  797. {
  798. if(PlayerToPoint(MAX_DISTANCE_TO_PROP, playerid, hInfo[i][iconx], hInfo[i][icony], hInfo[i][iconz]))
  799. {
  800. return i;
  801. }
  802. }
  803. return -255;
  804. }
  805.  
  806. stock sscanf(string[], format[], {Float,_}:...)
  807. {
  808. new
  809. formatPos = 0,
  810. stringPos = 0,
  811. paramPos = 2,
  812. paramCount = numargs();
  813. while (paramPos < paramCount && string[stringPos])
  814. {
  815. switch (format[formatPos++])
  816. {
  817. case '\0':
  818. {
  819. return 0;
  820. }
  821. case 'i', 'd':
  822. {
  823. new
  824. neg = 1,
  825. num = 0,
  826. ch = string[stringPos];
  827. if (ch == '-')
  828. {
  829. neg = -1;
  830. ch = string[++stringPos];
  831. }
  832. do
  833. {
  834. stringPos++;
  835. if (ch >= '0' && ch <= '9')
  836. {
  837. num = (num * 10) + (ch - '0');
  838. }
  839. else
  840. {
  841. return 1;
  842. }
  843. }
  844. while ((ch = string[stringPos]) && ch != ' ');
  845. setarg(paramPos, 0, num * neg);
  846. }
  847. case 'h', 'x':
  848. {
  849. new
  850. ch,
  851. num = 0;
  852. while ((ch = string[stringPos++]))
  853. {
  854. switch (ch)
  855. {
  856. case 'x', 'X':
  857. {
  858. num = 0;
  859. continue;
  860. }
  861. case '0' .. '9':
  862. {
  863. num = (num << 4) | (ch - '0');
  864. }
  865. case 'a' .. 'f':
  866. {
  867. num = (num << 4) | (ch - ('a' - 10));
  868. }
  869. case 'A' .. 'F':
  870. {
  871. num = (num << 4) | (ch - ('A' - 10));
  872. }
  873. case ' ':
  874. {
  875. break;
  876. }
  877. default:
  878. {
  879. return 1;
  880. }
  881. }
  882. }
  883. setarg(paramPos, 0, num);
  884. }
  885. case 'c':
  886. {
  887. setarg(paramPos, 0, string[stringPos++]);
  888. }
  889. case 'f':
  890. {
  891. new tmp[25];
  892. strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
  893. setarg(paramPos, 0, _:floatstr(tmp));
  894. }
  895. case 's', 'z':
  896. {
  897. new
  898. i = 0,
  899. ch;
  900. if (format[formatPos])
  901. {
  902. while ((ch = string[stringPos++]) && ch != ' ')
  903. {
  904. setarg(paramPos, i++, ch);
  905. }
  906. if (!i) return 1;
  907. }
  908. else
  909. {
  910. while ((ch = string[stringPos++]))
  911. {
  912. setarg(paramPos, i++, ch);
  913. }
  914. }
  915. stringPos--;
  916. setarg(paramPos, i, '\0');
  917. }
  918. default:
  919. {
  920. continue;
  921. }
  922. }
  923. while (string[stringPos] && string[stringPos] != ' ')
  924. {
  925. stringPos++;
  926. }
  927. while (string[stringPos] == ' ')
  928. {
  929. stringPos++;
  930. }
  931. paramPos++;
  932. }
  933. while (format[formatPos] == 'z') formatPos++;
  934. return format[formatPos];
  935. }
  936.  
  937. /*public OnVehicleMod(vehicleid, componentid)
  938. {
  939. new house[256];
  940. for(new i=0; i<MAX_HOUSES; i++)
  941. {
  942. format(house, sizeof(house), "Houses/houseid%d",i);
  943. if(!dini_Isset(house, "CarModel")) continue;
  944. if(
  945. }
  946. return 1;
  947. }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement