Advertisement
Guest User

h-House: Create a house anywhere, dynamic house creating!

a guest
Feb 19th, 2015
1,780
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.04 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #include <sscanf2>
  4. #include <Dini>
  5.  
  6. //------------------------------------------------------------------------------
  7.  
  8. #define MAX_HOUSES 1000
  9.  
  10. //------------------------------------------------------------------------------
  11.  
  12. #define DIALOG_PRICE 570
  13. #define DIALOG_LEVEL 571
  14. #define DIALOG_HCMDS 572
  15. #define DIALOG_UPGRADE 573
  16. #define DIALOG_REMOVE 574
  17.  
  18. //------------------------------------------------------------------------------
  19.  
  20. enum hInfo
  21. {
  22. hPrice,
  23. hInterior,
  24. hLevel,
  25. hOwned,
  26. hPick,
  27. hLocked,
  28. hStored,
  29. Text3D:hLabel,
  30. hOwner[MAX_PLAYER_NAME],
  31. Float:hX,
  32. Float:hY,
  33. Float:hZ,
  34. Float:hEnterX,
  35. Float:hEnterY,
  36. Float:hEnterZ
  37. }
  38.  
  39. //------------------------------------------------------------------------------
  40.  
  41. new HouseInfo[MAX_HOUSES][hInfo];
  42. new houseid, removeid, Price, Level, Started[MAX_PLAYERS], CreateHouse[MAX_PLAYERS], InHouse[MAX_PLAYERS][MAX_HOUSES];
  43. new Text:Textdraw[10];
  44.  
  45. //------------------------------------------------------------------------------
  46.  
  47. CMD:house(playerid, params[])
  48. {
  49. TextDrawShowForPlayer(playerid, Textdraw[0]);
  50. TextDrawShowForPlayer(playerid, Textdraw[1]);
  51. TextDrawShowForPlayer(playerid, Textdraw[2]);
  52. TextDrawShowForPlayer(playerid, Textdraw[3]);
  53. TextDrawShowForPlayer(playerid, Textdraw[4]);
  54. TextDrawShowForPlayer(playerid, Textdraw[5]);
  55. TextDrawShowForPlayer(playerid, Textdraw[6]);
  56. TextDrawShowForPlayer(playerid, Textdraw[7]);
  57. TextDrawShowForPlayer(playerid, Textdraw[8]);
  58. TextDrawShowForPlayer(playerid, Textdraw[9]);
  59. Started[playerid] = 1;
  60. SelectTextDraw(playerid, 0xFFFFFFFF);
  61. for(new i = 0; i < 10; i++) SendClientMessage(playerid, -1, " ");
  62. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}Please, edit {FF0000}price {FFFFFF}& {FF0000}level {FFFFFF}and start creating house.");
  63. return 1;
  64. }
  65.  
  66. //------------------------------------------------------------------------------
  67.  
  68. CMD:hcmds(playerid, params[])
  69. {
  70. new Dialog[518];
  71. strcat(Dialog, "{FF0000}h-House Commands:\n\n", sizeof(Dialog));
  72. strcat(Dialog, "{FF9900}/hcmds {FFFFFF}- See this list with all commands of {FF0000}h-House System.\n", sizeof(Dialog));
  73. strcat(Dialog, "{FF9900}/buyhouse {FFFFFF}- Buy an house.\n", sizeof(Dialog));
  74. strcat(Dialog, "{FF9900}/sellhouse {FFFFFF}- Sell an house.\n", sizeof(Dialog));
  75. strcat(Dialog, "{FF9900}/enter {FFFFFF}- Enter in a house.\n", sizeof(Dialog));
  76. strcat(Dialog, "{FF9900}/exit {FFFFFF}- Exit from a house.\n", sizeof(Dialog));
  77. strcat(Dialog, "{FF9900}/lock {FFFFFF}- Lock your house.\n", sizeof(Dialog));
  78. strcat(Dialog, "{FF9900}/unlock {FFFFFF}- Unlock your house.\n", sizeof(Dialog));
  79. strcat(Dialog, "{FF9900}/store {FFFFFF}- Store cash safely in your house.\n", sizeof(Dialog));
  80. strcat(Dialog, "{FF9900}/withdraw {FFFFFF}- Withdraw money.\n", sizeof(Dialog));
  81. strcat(Dialog, "{FF9900}/upgrade {FFFFFF}- Upgrade your house's interior & level.\n", sizeof(Dialog));
  82. ShowPlayerDialog(playerid, DIALOG_HCMDS, DIALOG_STYLE_MSGBOX, "h-House Commands:", Dialog, "Exit", "");
  83. return 1;
  84. }
  85.  
  86. //------------------------------------------------------------------------------
  87.  
  88. CMD:buyhouse(playerid, params[])
  89. {
  90. new string[144], labelstring[144], name[MAX_PLAYER_NAME], file[50];
  91. GetPlayerName(playerid, name, sizeof(name));
  92. for(new i = 0; i < MAX_HOUSES; i++)
  93. {
  94. if(IsPlayerInRangeOfPoint(playerid, 5.0, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ]))
  95. {
  96. if(HouseInfo[i][hOwned] == 1) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}This house already have an Owner.");
  97. if(GetPlayerMoney(playerid) < HouseInfo[i][hPrice]) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You don't have enough money to buy this house.");
  98. format(string, sizeof(string), "{FF0000}[h-House]: {FFFFFF}You bought house ID: {FF0000}%d {FFFFFF}for {FF0000}$ %d.", i, HouseInfo[i][hPrice]);
  99. SendClientMessage(playerid, -1, string);
  100. DestroyPickup(HouseInfo[i][hPick]);
  101. format(labelstring, sizeof(labelstring), "{15FF00}House ID: {FFFFFF}%d\n{15FF00}Owner: {FFFFFF}%s\n{15FF00}Price: {FFFFFF}%d\n{15FF00}Level: {FFFFFF}%d", i, name, HouseInfo[i][hPrice], HouseInfo[i][hLevel]);
  102. HouseInfo[i][hPick] = CreatePickup(1272, 1, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ], 0);
  103. Update3DTextLabelText(HouseInfo[i][hLabel], 0xFFFFFFFF, labelstring);
  104. GivePlayerMoney(playerid, -HouseInfo[i][hPrice]);
  105. HouseInfo[i][hOwned] = 1;
  106. HouseInfo[i][hOwner] = name;
  107. format(file, sizeof(file), "Houses/%d.ini", i);
  108. if(fexist(file))
  109. {
  110. dini_IntSet(file, "Owned", 1);
  111. dini_Set(file, "Owner", name);
  112. }
  113. printf("Player %s bought house ID: %d for $ %d.", name, i, HouseInfo[i][hPrice]);
  114. }
  115. }
  116. return 1;
  117. }
  118.  
  119. //------------------------------------------------------------------------------
  120.  
  121. CMD:sellhouse(playerid, params[])
  122. {
  123. new pname[MAX_PLAYER_NAME], labelstring[144], string[144], file[50];
  124. GetPlayerName(playerid, pname, sizeof(pname));
  125. for(new i = 0; i < MAX_HOUSES; i++)
  126. {
  127. if(IsPlayerInRangeOfPoint(playerid, 5.0, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ]))
  128. {
  129. if(HouseInfo[i][hOwned] == 0) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You can't sell this house.");
  130. if(strcmp(pname, HouseInfo[i][hOwner], true)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You aren't Owner of this house.");
  131. DestroyPickup(HouseInfo[i][hPick]);
  132. format(labelstring, sizeof(labelstring), "{15FF00}House ID: {FFFFFF}%d\n{15FF00}Status: {FFFFFF}For Sale\n{15FF00}Price: {FFFFFF}%d\n{15FF00}Level: {FFFFFF}%d", i, HouseInfo[i][hPrice], HouseInfo[i][hLevel]);
  133. HouseInfo[i][hPick] = CreatePickup(1273, 1, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ], 0);
  134. Update3DTextLabelText(HouseInfo[i][hLabel], 0xFFFFFFFF, labelstring);
  135. HouseInfo[i][hOwned] = 0;
  136. HouseInfo[i][hOwner] = -1;
  137. format(string, sizeof(string), "{FF0000}[h-House]: {FFFFFF}You sold your house ID: {FF0000}%d {FFFFFF}.", i);
  138. SendClientMessage(playerid, -1, string);
  139. format(file, sizeof(file), "Houses/%d.ini", i);
  140. if(fexist(file))
  141. {
  142. dini_IntSet(file, "Owned", 0);
  143. dini_Set(file, "Owner", " ");
  144. }
  145. printf("Player %s sold house ID: %d.", pname, i);
  146. }
  147. }
  148. return 1;
  149. }
  150.  
  151. //------------------------------------------------------------------------------
  152.  
  153. CMD:enter(playerid, params[])
  154. {
  155. for(new i = 0; i < MAX_HOUSES; i++)
  156. {
  157. if(IsPlayerInRangeOfPoint(playerid, 5.0, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ]))
  158. {
  159. if(HouseInfo[i][hOwned] == 0) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You can't sell this house.");
  160. if(HouseInfo[i][hLocked] == 1) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}This house it's locked.");
  161. InHouse[playerid][i] = 1;
  162. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}You entered in this house.");
  163. SetPlayerPos(playerid, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]);
  164. SetPlayerInterior(playerid, HouseInfo[i][hInterior]);
  165. SetPlayerVirtualWorld(playerid, playerid+1);
  166. }
  167. }
  168. return 1;
  169. }
  170.  
  171. //------------------------------------------------------------------------------
  172.  
  173. CMD:exit(playerid, params[])
  174. {
  175. for(new i = 0; i < MAX_HOUSES; i++)
  176. {
  177. if(InHouse[playerid][i] == 1)
  178. {
  179. InHouse[playerid][i] = 0;
  180. SetPlayerPos(playerid, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ]);
  181. SetPlayerInterior(playerid, 0);
  182. SetPlayerVirtualWorld(playerid, 0);
  183. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}You've exited from this house.");
  184. }
  185. }
  186. return 1;
  187. }
  188.  
  189. //------------------------------------------------------------------------------
  190.  
  191. CMD:lock(playerid, params[])
  192. {
  193. new pname[MAX_PLAYER_NAME];
  194. GetPlayerName(playerid, pname, sizeof(pname));
  195. for(new i = 0; i < MAX_HOUSES; i++)
  196. {
  197. if(IsPlayerInRangeOfPoint(playerid, 5.0, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ]))
  198. {
  199. if(HouseInfo[i][hOwned] == 0) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You can't lock this house.");
  200. if(strcmp(pname, HouseInfo[i][hOwner], true)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You aren't Owner of this house.");
  201. if(HouseInfo[i][hLocked] == 1) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}This house it's already locked.");
  202. HouseInfo[i][hLocked] = 1;
  203. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}You've locked your house.");
  204. GameTextForPlayer(playerid, "~y~House ~g~Locked", 5000, 5);
  205. }
  206. }
  207. return 1;
  208. }
  209.  
  210. //------------------------------------------------------------------------------
  211.  
  212. CMD:unlock(playerid, params[])
  213. {
  214. new pname[MAX_PLAYER_NAME];
  215. GetPlayerName(playerid, pname, sizeof(pname));
  216. for(new i = 0; i < MAX_HOUSES; i++)
  217. {
  218. if(IsPlayerInRangeOfPoint(playerid, 5.0, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ]))
  219. {
  220. if(HouseInfo[i][hOwned] == 0) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You can't lock this house.");
  221. if(strcmp(pname, HouseInfo[i][hOwner], true)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You aren't Owner of this house.");
  222. if(HouseInfo[i][hLocked] == 0) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}This house it's already unlocked.");
  223. HouseInfo[i][hLocked] = 0;
  224. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}You've unlocked your house.");
  225. GameTextForPlayer(playerid, "~y~House ~r~Unlocked", 5000, 5);
  226. }
  227. }
  228. return 1;
  229. }
  230.  
  231. //------------------------------------------------------------------------------
  232.  
  233. CMD:store(playerid, params[])
  234. {
  235. new pname[MAX_PLAYER_NAME], cash, string[144], file[50];
  236. GetPlayerName(playerid, pname, sizeof(pname));
  237. for(new i = 0; i < MAX_HOUSES; i++)
  238. {
  239. if(InHouse[playerid][i] == 1)
  240. {
  241. if(strcmp(pname, HouseInfo[i][hOwner], true)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You aren't Owner of this house.");
  242. if(sscanf(params, "i", cash)) return SendClientMessage(playerid, -1, "{FF0000}USAGE: {FFFFFF}/Store [Cash]");
  243. if(cash > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You don't have this cash amount.");
  244. HouseInfo[i][hStored] = HouseInfo[i][hStored] + cash;
  245. format(string, sizeof(string), "{FF0000}[h-House]: {FFFFFF}You've stored in your house: {FF0000}%d {FFFFFF}and now you have: {FF0000}%d.", cash, HouseInfo[i][hStored]);
  246. SendClientMessage(playerid, -1, string);
  247. GivePlayerMoney(playerid, -cash);
  248. format(file, sizeof(file), "Houses/%d.ini", i);
  249. if(fexist(file))
  250. {
  251. dini_IntSet(file, "Stored Cash", HouseInfo[i][hStored]);
  252. }
  253. }
  254. }
  255. return 1;
  256. }
  257.  
  258. //------------------------------------------------------------------------------
  259.  
  260. CMD:withdraw(playerid, params[])
  261. {
  262. new pname[MAX_PLAYER_NAME], cash, string[144], file[50];
  263. GetPlayerName(playerid, pname, sizeof(pname));
  264. for(new i = 0; i < MAX_HOUSES; i++)
  265. {
  266. if(InHouse[playerid][i] == 1)
  267. {
  268. if(strcmp(pname, HouseInfo[i][hOwner], true)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You aren't Owner of this house.");
  269. if(sscanf(params, "i", cash)) return SendClientMessage(playerid, -1, "{FF0000}USAGE: {FFFFFF}/Withdraw [Cash]");
  270. if(cash > HouseInfo[i][hStored]) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You don't have this amount stored.");
  271. HouseInfo[i][hStored] = HouseInfo[i][hStored] - cash;
  272. format(string, sizeof(string), "{FF0000}[h-House]: {FFFFFF}You've withdrawed: {FF0000}%d {FFFFFF}and now you have: {FF0000}%d.", cash, HouseInfo[i][hStored]);
  273. SendClientMessage(playerid, -1, string);
  274. GivePlayerMoney(playerid, cash);
  275. format(file, sizeof(file), "Houses/%d.ini", i);
  276. if(fexist(file))
  277. {
  278. dini_IntSet(file, "Stored Cash", HouseInfo[i][hStored]);
  279. }
  280. }
  281. }
  282. return 1;
  283. }
  284.  
  285. //------------------------------------------------------------------------------
  286.  
  287. CMD:upgrade(playerid, params[])
  288. {
  289. new pname[MAX_PLAYER_NAME];
  290. GetPlayerName(playerid, pname, sizeof(pname));
  291. for(new i = 0; i < MAX_HOUSES; i++)
  292. {
  293. if(InHouse[playerid][i] == 1)
  294. {
  295. if(strcmp(pname, HouseInfo[i][hOwner], true)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You aren't Owner of this house.");
  296. ShowPlayerDialog(playerid, DIALOG_UPGRADE, DIALOG_STYLE_LIST, "Upgrade", "Level #1\nLevel #2\nLevel #3\nLevel #4\nLevel #5", "Select", "Exit");
  297. }
  298. }
  299. return 1;
  300. }
  301.  
  302. //------------------------------------------------------------------------------
  303.  
  304. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  305. {
  306. if(clickedid == Textdraw[4])
  307. {
  308. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}Please, price doesn't need to be higher than: {FF0000}999,999 ${FFFFFF}.");
  309. ShowPlayerDialog(playerid, DIALOG_PRICE, DIALOG_STYLE_INPUT, "Price", "{FFFFFF}Please, input below future house's price:\n\n{FF0000}WARNING: {FFFFFF}Please, be sure price is not higher than: {FF0000}999,999 $.", "Continue", "Exit");
  310. }
  311. else if(clickedid == Textdraw[6])
  312. {
  313. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}Please, level doesn't need to be higher than: {FF0000}5{FFFFFF}.");
  314. ShowPlayerDialog(playerid, DIALOG_LEVEL, DIALOG_STYLE_INPUT, "Level", "{FFFFFF}Please, input below future houses's level:\n\n{FF0000}WARNING: {FFFFFF}Please, be sure level is not higher than: {FF0000}5.", "Continue", "Exit");
  315. }
  316. else if(clickedid == Textdraw[8])
  317. {
  318. ShowPlayerDialog(playerid, DIALOG_REMOVE, DIALOG_STYLE_INPUT, "Remove ID", "{FFFFFF}Please, input below house's ID wich you want to remove:\n\n{FF0000}* NOTE: {FFFFFF}House's ID must be valid.", "Remove", "Exit");
  319. }
  320. else if(clickedid == Textdraw[9])
  321. {
  322. TextDrawShowForPlayer(playerid, Textdraw[0]);
  323. TextDrawShowForPlayer(playerid, Textdraw[1]);
  324. TextDrawShowForPlayer(playerid, Textdraw[2]);
  325. TextDrawShowForPlayer(playerid, Textdraw[3]);
  326. TextDrawShowForPlayer(playerid, Textdraw[4]);
  327. TextDrawShowForPlayer(playerid, Textdraw[5]);
  328. TextDrawShowForPlayer(playerid, Textdraw[6]);
  329. TextDrawShowForPlayer(playerid, Textdraw[7]);
  330. TextDrawShowForPlayer(playerid, Textdraw[8]);
  331. TextDrawShowForPlayer(playerid, Textdraw[9]);
  332. CancelSelectTextDraw(playerid);
  333. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}Thanks for using this {FF0000}House Creator{FFFFFF}.");
  334. }
  335. return 1;
  336. }
  337.  
  338. //------------------------------------------------------------------------------
  339.  
  340. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  341. {
  342. if(newkeys & KEY_CROUCH)
  343. {
  344. if(Started[playerid] == 1)
  345. {
  346. new string[15];
  347. Started[playerid] = 2;
  348. CreateHouse[playerid] = 1;
  349. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}You've entered in {15FF00}enabled {FFFFFF}mode.");
  350. format(string, sizeof(string), "Enabled");
  351. TextDrawSetString(Textdraw[3], string);
  352. TextDrawColor(Textdraw[3], 16711935);
  353. TextDrawShowForPlayer(playerid, Textdraw[3]);
  354. }
  355. else if(Started[playerid] == 2)
  356. {
  357. new string[15];
  358. Started[playerid] = 1;
  359. CreateHouse[playerid] = 0;
  360. SendClientMessage(playerid, -1, "{FF0000}[h-House]: {FFFFFF}You've entered in {FF0000}pauzed {FFFFFF}mode.");
  361. format(string, sizeof(string), "Pauzed");
  362. TextDrawSetString(Textdraw[3], string);
  363. TextDrawColor(Textdraw[3], -16776961);
  364. TextDrawShowForPlayer(playerid, Textdraw[0]);
  365. TextDrawShowForPlayer(playerid, Textdraw[1]);
  366. TextDrawShowForPlayer(playerid, Textdraw[2]);
  367. TextDrawShowForPlayer(playerid, Textdraw[3]);
  368. TextDrawShowForPlayer(playerid, Textdraw[4]);
  369. TextDrawShowForPlayer(playerid, Textdraw[5]);
  370. TextDrawShowForPlayer(playerid, Textdraw[6]);
  371. TextDrawShowForPlayer(playerid, Textdraw[7]);
  372. TextDrawShowForPlayer(playerid, Textdraw[8]);
  373. TextDrawShowForPlayer(playerid, Textdraw[9]);
  374. SelectTextDraw(playerid, 0xFFFFFFFF);
  375. }
  376. }
  377. if(newkeys & KEY_FIRE)
  378. {
  379. if(CreateHouse[playerid] == 1)
  380. {
  381. new Float:X, Float:Y, Float:Z, string[100], labelstring[144], file[50];
  382. GetPlayerPos(playerid, X, Y, Z);
  383. HouseInfo[houseid][hPrice] = Price;
  384. HouseInfo[houseid][hLevel] = Level;
  385. HouseInfo[houseid][hOwned] = 0;
  386. HouseInfo[houseid][hX] = X;
  387. HouseInfo[houseid][hY] = Y;
  388. HouseInfo[houseid][hZ] = Z;
  389. HouseInfo[houseid][hPick] = CreatePickup(1273, 1, X, Y, Z, 0);
  390. format(labelstring, sizeof(labelstring), "{15FF00}House ID: {FFFFFF}%d\n{15FF00}Status: {FFFFFF}For Sale\n{15FF00}Price: {FFFFFF}%d\n{15FF00}Level: {FFFFFF}%d", houseid, HouseInfo[houseid][hPrice], HouseInfo[houseid][hLevel]);
  391. HouseInfo[houseid][hLabel] = Create3DTextLabel(labelstring, 0xFFFFFFFF, X, Y, Z, 25.0, 0, 0);
  392. format(string, sizeof(string), "{FF0000}[h-House]: {FFFFFF}You created house ID: {FF0000}%d{FFFFFF}.", houseid);
  393. SendClientMessage(playerid, -1, string);
  394. if(HouseInfo[houseid][hLevel] == 1)
  395. {
  396. HouseInfo[houseid][hEnterX] = 2237.590087;
  397. HouseInfo[houseid][hEnterY] = -1078.869995;
  398. HouseInfo[houseid][hEnterZ] = 1049.023437;
  399. HouseInfo[houseid][hInterior] = 2;
  400. }
  401. else if(HouseInfo[houseid][hLevel] == 2)
  402. {
  403. HouseInfo[houseid][hEnterX] = 2216.540039;
  404. HouseInfo[houseid][hEnterY] = -1076.290039;
  405. HouseInfo[houseid][hEnterZ] = 1050.484375;
  406. HouseInfo[houseid][hInterior] = 1;
  407. }
  408. else if(HouseInfo[houseid][hLevel] == 3)
  409. {
  410. HouseInfo[houseid][hEnterX] = 2282.909912;
  411. HouseInfo[houseid][hEnterY] = -1137.971191;
  412. HouseInfo[houseid][hEnterZ] = 1050.898437;
  413. HouseInfo[houseid][hInterior] = 11;
  414. }
  415. else if(HouseInfo[houseid][hLevel] == 4)
  416. {
  417. HouseInfo[houseid][hEnterX] = 2365.300048;
  418. HouseInfo[houseid][hEnterY] = -1132.920043;
  419. HouseInfo[houseid][hEnterZ] = 1050.875000;
  420. HouseInfo[houseid][hInterior] = 8;
  421. }
  422. else if(HouseInfo[houseid][hLevel] == 5)
  423. {
  424. HouseInfo[houseid][hEnterX] = 1299.079956;
  425. HouseInfo[houseid][hEnterY] = -795.226989;
  426. HouseInfo[houseid][hEnterZ] = 1084.007812;
  427. HouseInfo[houseid][hInterior] = 5;
  428. }
  429. format(file, sizeof(file), "Houses/%d.ini", houseid);
  430. if(!fexist(file))
  431. {
  432. dini_Create(file);
  433. dini_IntSet(file, "Price", HouseInfo[houseid][hPrice]);
  434. dini_IntSet(file, "Interior", HouseInfo[houseid][hInterior]);
  435. dini_IntSet(file, "Level", HouseInfo[houseid][hLevel]);
  436. dini_IntSet(file, "Owned", HouseInfo[houseid][hOwned]);
  437. dini_FloatSet(file, "Position X", HouseInfo[houseid][hX]);
  438. dini_FloatSet(file, "Position Y", HouseInfo[houseid][hY]);
  439. dini_FloatSet(file, "Position Z", HouseInfo[houseid][hZ]);
  440. dini_FloatSet(file, "Enter X", HouseInfo[houseid][hEnterX]);
  441. dini_FloatSet(file, "Enter Y", HouseInfo[houseid][hEnterY]);
  442. dini_FloatSet(file, "Enter Z", HouseInfo[houseid][hEnterZ]);
  443. }
  444. printf("House ID: %d || Price: %d || Interior: %d || Level: %d || was created.", houseid, Price, HouseInfo[houseid][hInterior], Level);
  445. houseid++;
  446. }
  447. }
  448. return 1;
  449. }
  450.  
  451. //------------------------------------------------------------------------------
  452.  
  453. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  454. {
  455. new file[50];
  456. if(dialogid == DIALOG_PRICE)
  457. {
  458. if(response)
  459. {
  460. new string[10], message[100];
  461. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_PRICE, DIALOG_STYLE_INPUT, "Price", "{FFFFFF}Please, input below future house's price:\n\n{FF0000}WARNING: {FFFFFF}Please, be sure price is not higher than: {FF0000}999,999 $.", "Continue", "Exit");
  462. Price = strval(inputtext);
  463. format(string, sizeof(string), "%d", Price);
  464. TextDrawSetString(Textdraw[5], string);
  465. format(message, sizeof(message), "{FF0000}[h-House]: {FFFFFF}Future house's price has been setted to: {FF0000}%d{FFFFFF}.", Price);
  466. SendClientMessage(playerid, -1, message);
  467. }
  468. }
  469. if(dialogid == DIALOG_LEVEL)
  470. {
  471. if(response)
  472. {
  473. new string[10], message[100];
  474. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LEVEL, DIALOG_STYLE_INPUT, "Level", "{FFFFFF}Please, input below future houses's level:\n\n{FF0000}WARNING: {FFFFFF}Please, be sure level is not higher than: {FF0000}5.", "Continue", "Exit");
  475. Level = strval(inputtext);
  476. format(string, sizeof(string), "%d", Level);
  477. TextDrawSetString(Textdraw[7], string);
  478. format(message, sizeof(message), "{FF0000}[h-House]: {FFFFFF}Future house's level has been setted to: {FF0000}%d{FFFFFF}.", Level);
  479. SendClientMessage(playerid, -1, message);
  480. }
  481. }
  482. if(dialogid == DIALOG_UPGRADE)
  483. {
  484. if(response)
  485. {
  486. if(listitem == 0)
  487. {
  488. if(GetPlayerMoney(playerid) < 50000) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You don't have enough money.");
  489. for(new i = 0; i < MAX_HOUSES; i++)
  490. {
  491. if(InHouse[playerid][i] == 1)
  492. {
  493. HouseInfo[houseid][hEnterX] = 2237.590087;
  494. HouseInfo[houseid][hEnterY] = -1078.869995;
  495. HouseInfo[houseid][hEnterZ] = 1049.023437;
  496. HouseInfo[houseid][hInterior] = 2;
  497. SendClientMessage(playerid, -1, "{FF0000}[INFO]: {FFFFFF}Interior bought. {15FF00}[#1]");
  498. format(file, sizeof(file), "Houses/%d.ini", i);
  499. if(fexist(file))
  500. {
  501. dini_IntSet(file, "Interior", HouseInfo[i][hInterior]);
  502. dini_FloatSet(file, "Enter X", HouseInfo[i][hEnterX]);
  503. dini_FloatSet(file, "Enter Y", HouseInfo[i][hEnterY]);
  504. dini_FloatSet(file, "Enter Z", HouseInfo[i][hEnterZ]);
  505. }
  506. }
  507. }
  508. }
  509. if(listitem == 1)
  510. {
  511. if(GetPlayerMoney(playerid) < 100000) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You don't have enough money.");
  512. for(new i = 0; i < MAX_HOUSES; i++)
  513. {
  514. if(InHouse[playerid][i] == 1)
  515. {
  516. HouseInfo[houseid][hEnterX] = 2216.540039;
  517. HouseInfo[houseid][hEnterY] = -1076.290039;
  518. HouseInfo[houseid][hEnterZ] = 1050.484375;
  519. HouseInfo[houseid][hInterior] = 1;
  520. SendClientMessage(playerid, -1, "{FF0000}[INFO]: {FFFFFF}Interior bought. {15FF00}[#2]");
  521. format(file, sizeof(file), "Houses/%d.ini", i);
  522. if(fexist(file))
  523. {
  524. dini_IntSet(file, "Interior", HouseInfo[i][hInterior]);
  525. dini_FloatSet(file, "Enter X", HouseInfo[i][hEnterX]);
  526. dini_FloatSet(file, "Enter Y", HouseInfo[i][hEnterY]);
  527. dini_FloatSet(file, "Enter Z", HouseInfo[i][hEnterZ]);
  528. }
  529. }
  530. }
  531. }
  532. if(listitem == 2)
  533. {
  534. if(GetPlayerMoney(playerid) < 300000) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You don't have enough money.");
  535. for(new i = 0; i < MAX_HOUSES; i++)
  536. {
  537. if(InHouse[playerid][i] == 1)
  538. {
  539. HouseInfo[houseid][hEnterX] = 2282.909912;
  540. HouseInfo[houseid][hEnterY] = -1137.971191;
  541. HouseInfo[houseid][hEnterZ] = 1050.898437;
  542. HouseInfo[houseid][hInterior] = 11;
  543. SendClientMessage(playerid, -1, "{FF0000}[INFO]: {FFFFFF}Interior bought. {15FF00}[#3]");
  544. format(file, sizeof(file), "Houses/%d.ini", i);
  545. if(fexist(file))
  546. {
  547. dini_IntSet(file, "Interior", HouseInfo[i][hInterior]);
  548. dini_FloatSet(file, "Enter X", HouseInfo[i][hEnterX]);
  549. dini_FloatSet(file, "Enter Y", HouseInfo[i][hEnterY]);
  550. dini_FloatSet(file, "Enter Z", HouseInfo[i][hEnterZ]);
  551. }
  552. }
  553. }
  554. }
  555. if(listitem == 3)
  556. {
  557. if(GetPlayerMoney(playerid) < 500000) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You don't have enough money.");
  558. for(new i = 0; i < MAX_HOUSES; i++)
  559. {
  560. if(InHouse[playerid][i] == 1)
  561. {
  562. HouseInfo[houseid][hEnterX] = 2365.300048;
  563. HouseInfo[houseid][hEnterY] = -1132.920043;
  564. HouseInfo[houseid][hEnterZ] = 1050.875000;
  565. HouseInfo[houseid][hInterior] = 8;
  566. SendClientMessage(playerid, -1, "{FF0000}[INFO]: {FFFFFF}Interior bought. {15FF00}[#4]");
  567. format(file, sizeof(file), "Houses/%d.ini", i);
  568. if(fexist(file))
  569. {
  570. dini_IntSet(file, "Interior", HouseInfo[i][hInterior]);
  571. dini_FloatSet(file, "Enter X", HouseInfo[i][hEnterX]);
  572. dini_FloatSet(file, "Enter Y", HouseInfo[i][hEnterY]);
  573. dini_FloatSet(file, "Enter Z", HouseInfo[i][hEnterZ]);
  574. }
  575. }
  576. }
  577. }
  578. if(listitem == 4)
  579. {
  580. if(GetPlayerMoney(playerid) < 1000000) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You don't have enough money.");
  581. for(new i = 0; i < MAX_HOUSES; i++)
  582. {
  583. if(InHouse[playerid][i] == 1)
  584. {
  585. HouseInfo[houseid][hEnterX] = 1299.079956;
  586. HouseInfo[houseid][hEnterY] = -795.226989;
  587. HouseInfo[houseid][hEnterZ] = 1084.007812;
  588. HouseInfo[houseid][hInterior] = 5;
  589. SendClientMessage(playerid, -1, "{FF0000}[INFO]: {FFFFFF}Interior bought. {15FF00}[#5]");
  590. format(file, sizeof(file), "Houses/%d.ini", i);
  591. if(fexist(file))
  592. {
  593. dini_IntSet(file, "Interior", HouseInfo[i][hInterior]);
  594. dini_FloatSet(file, "Enter X", HouseInfo[i][hEnterX]);
  595. dini_FloatSet(file, "Enter Y", HouseInfo[i][hEnterY]);
  596. dini_FloatSet(file, "Enter Z", HouseInfo[i][hEnterZ]);
  597. }
  598. }
  599. }
  600. }
  601. }
  602. }
  603. if(dialogid == DIALOG_REMOVE)
  604. {
  605. if(response)
  606. {
  607. new filel[50], string[100];
  608. removeid = strval(inputtext);
  609. format(filel, sizeof(filel), "Houses/%d.ini", removeid);
  610. if(!fexist(filel))
  611. {
  612. SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}This house ID doesn't exists in data-base.");
  613. }
  614. else
  615. {
  616. DestroyPickup(HouseInfo[removeid][hPick]);
  617. Update3DTextLabelText(HouseInfo[removeid][hLabel], 0xFFFFFFFF, " ");
  618. HouseInfo[removeid][hX] = -1;
  619. HouseInfo[removeid][hY] = -1;
  620. HouseInfo[removeid][hZ] = -1;
  621. dini_Remove(filel);
  622. format(string, sizeof(string), "{FF0000}[h-House]: {FFFFFF}House ID: {FF0000}%d {FFFFFF}has been succesfully removed.", removeid);
  623. SendClientMessage(playerid, -1, string);
  624. }
  625. }
  626. }
  627. return 1;
  628. }
  629.  
  630. //------------------------------------------------------------------------------
  631.  
  632. public OnFilterScriptInit()
  633. {
  634. Textdraw[0] = TextDrawCreate(638.000000, 436.059997, "usebox");
  635. TextDrawLetterSize(Textdraw[0], 0.000000, 1.176666);
  636. TextDrawTextSize(Textdraw[0], -5.199999, 0.000000);
  637. TextDrawAlignment(Textdraw[0], 1);
  638. TextDrawColor(Textdraw[0], 0);
  639. TextDrawUseBox(Textdraw[0], true);
  640. TextDrawBoxColor(Textdraw[0], 255);
  641. TextDrawSetShadow(Textdraw[0], 0);
  642. TextDrawSetOutline(Textdraw[0], 0);
  643. TextDrawFont(Textdraw[0], 0);
  644.  
  645. //--------------------------------------------------------------------------
  646.  
  647. Textdraw[1] = TextDrawCreate(644.399902, 436.059997, "usebox");
  648. TextDrawLetterSize(Textdraw[1], 0.000000, 1.093703);
  649. TextDrawTextSize(Textdraw[1], 621.199951, 0.000000);
  650. TextDrawAlignment(Textdraw[1], 1);
  651. TextDrawColor(Textdraw[1], 0);
  652. TextDrawUseBox(Textdraw[1], true);
  653. TextDrawBoxColor(Textdraw[1], 255);
  654. TextDrawSetShadow(Textdraw[1], 0);
  655. TextDrawSetOutline(Textdraw[1], 0);
  656. TextDrawFont(Textdraw[1], 0);
  657.  
  658. //--------------------------------------------------------------------------
  659.  
  660. Textdraw[2] = TextDrawCreate(4.799993, 433.066650, "Mode:");
  661. TextDrawLetterSize(Textdraw[2], 0.449999, 1.600000);
  662. TextDrawAlignment(Textdraw[2], 1);
  663. TextDrawColor(Textdraw[2], -1);
  664. TextDrawSetShadow(Textdraw[2], 0);
  665. TextDrawSetOutline(Textdraw[2], 1);
  666. TextDrawBackgroundColor(Textdraw[2], 51);
  667. TextDrawFont(Textdraw[2], 2);
  668. TextDrawSetProportional(Textdraw[2], 1);
  669.  
  670. //--------------------------------------------------------------------------
  671.  
  672. Textdraw[3] = TextDrawCreate(66.400016, 433.813446, "Pauzed");
  673. TextDrawLetterSize(Textdraw[3], 0.449999, 1.600000);
  674. TextDrawAlignment(Textdraw[3], 1);
  675. TextDrawColor(Textdraw[3], -16776961);
  676. TextDrawSetShadow(Textdraw[3], 0);
  677. TextDrawSetOutline(Textdraw[3], 1);
  678. TextDrawBackgroundColor(Textdraw[3], 51);
  679. TextDrawFont(Textdraw[3], 2);
  680. TextDrawSetProportional(Textdraw[3], 1);
  681.  
  682. //--------------------------------------------------------------------------
  683.  
  684. Textdraw[4] = TextDrawCreate(176.799987, 433.066650, "Price:");
  685. TextDrawLetterSize(Textdraw[4], 0.449999, 1.600000);
  686. TextDrawAlignment(Textdraw[4], 1);
  687. TextDrawColor(Textdraw[4], -1);
  688. TextDrawSetShadow(Textdraw[4], 0);
  689. TextDrawSetOutline(Textdraw[4], 1);
  690. TextDrawBackgroundColor(Textdraw[4], 51);
  691. TextDrawFont(Textdraw[4], 2);
  692. TextDrawSetProportional(Textdraw[4], 1);
  693. TextDrawSetSelectable(Textdraw[4], true);
  694.  
  695. //--------------------------------------------------------------------------
  696.  
  697. Textdraw[5] = TextDrawCreate(240.799957, 433.066619, "999999");
  698. TextDrawLetterSize(Textdraw[5], 0.449999, 1.600000);
  699. TextDrawAlignment(Textdraw[5], 1);
  700. TextDrawColor(Textdraw[5], -5963521);
  701. TextDrawSetShadow(Textdraw[5], 0);
  702. TextDrawSetOutline(Textdraw[5], 1);
  703. TextDrawBackgroundColor(Textdraw[5], 51);
  704. TextDrawFont(Textdraw[5], 2);
  705. TextDrawSetProportional(Textdraw[5], 1);
  706.  
  707. //--------------------------------------------------------------------------
  708.  
  709. Textdraw[6] = TextDrawCreate(347.199798, 432.320037, "Level:");
  710. TextDrawLetterSize(Textdraw[6], 0.449999, 1.600000);
  711. TextDrawAlignment(Textdraw[6], 1);
  712. TextDrawColor(Textdraw[6], -1);
  713. TextDrawSetShadow(Textdraw[6], 0);
  714. TextDrawSetOutline(Textdraw[6], 1);
  715. TextDrawBackgroundColor(Textdraw[6], 51);
  716. TextDrawFont(Textdraw[6], 2);
  717. TextDrawSetProportional(Textdraw[6], 1);
  718. TextDrawSetSelectable(Textdraw[6], true);
  719.  
  720. //--------------------------------------------------------------------------
  721.  
  722. Textdraw[7] = TextDrawCreate(415.199859, 432.320037, "3");
  723. TextDrawLetterSize(Textdraw[7], 0.449999, 1.600000);
  724. TextDrawAlignment(Textdraw[7], 1);
  725. TextDrawColor(Textdraw[7], -5963521);
  726. TextDrawSetShadow(Textdraw[7], 0);
  727. TextDrawSetOutline(Textdraw[7], 1);
  728. TextDrawBackgroundColor(Textdraw[7], 51);
  729. TextDrawFont(Textdraw[7], 2);
  730. TextDrawSetProportional(Textdraw[7], 1);
  731.  
  732. //--------------------------------------------------------------------------
  733.  
  734. Textdraw[8] = TextDrawCreate(456.000030, 432.320068, "Delete");
  735. TextDrawLetterSize(Textdraw[8], 0.449999, 1.600000);
  736. TextDrawAlignment(Textdraw[8], 1);
  737. TextDrawColor(Textdraw[8], -16776961);
  738. TextDrawSetShadow(Textdraw[8], 0);
  739. TextDrawSetOutline(Textdraw[8], 1);
  740. TextDrawBackgroundColor(Textdraw[8], 51);
  741. TextDrawFont(Textdraw[8], 2);
  742. TextDrawSetProportional(Textdraw[8], 1);
  743. TextDrawSetSelectable(Textdraw[8], true);
  744.  
  745. //--------------------------------------------------------------------------
  746.  
  747. Textdraw[9] = TextDrawCreate(595.199829, 433.066650, "Exit");
  748. TextDrawLetterSize(Textdraw[9], 0.449999, 1.600000);
  749. TextDrawAlignment(Textdraw[9], 1);
  750. TextDrawColor(Textdraw[9], 16777215);
  751. TextDrawSetShadow(Textdraw[9], 0);
  752. TextDrawSetOutline(Textdraw[9], 1);
  753. TextDrawBackgroundColor(Textdraw[9], 51);
  754. TextDrawFont(Textdraw[9], 2);
  755. TextDrawSetProportional(Textdraw[9], 1);
  756. TextDrawSetSelectable(Textdraw[9], true);
  757.  
  758. //--------------------------------------------------------------------------
  759.  
  760. Price = 999999;
  761. Level = 3;
  762. LoadHouses();
  763. return 1;
  764. }
  765.  
  766. //------------------------------------------------------------------------------
  767.  
  768. stock LoadHouses()
  769. {
  770. new file[50], labelstring[144], stringlabel[144];
  771. for(new i = 0; i < MAX_HOUSES; i++)
  772. {
  773. format(file, sizeof(file), "Houses/%d.ini", i);
  774. if(fexist(file))
  775. {
  776. HouseInfo[i][hPrice] = dini_Int(file, "Price");
  777. HouseInfo[i][hInterior] = dini_Int(file, "Interior");
  778. HouseInfo[i][hLevel] = dini_Int(file, "Level");
  779. HouseInfo[i][hOwned] = dini_Int(file, "Owned");
  780. HouseInfo[i][hStored] = dini_Int(file, "Stored Cash");
  781. HouseInfo[i][hX] = dini_Float(file, "Position X");
  782. HouseInfo[i][hY] = dini_Float(file, "Position Y");
  783. HouseInfo[i][hZ] = dini_Float(file, "Position Z");
  784. HouseInfo[i][hEnterX] = dini_Float(file, "Enter X");
  785. HouseInfo[i][hEnterY] = dini_Float(file, "Enter Y");
  786. HouseInfo[i][hEnterZ] = dini_Float(file, "Enter Z");
  787. strmid(HouseInfo[i][hOwner], dini_Get(file, "Owner"), false, strlen(dini_Get(file, "Owner")), MAX_PLAYER_NAME);
  788. format(labelstring, sizeof(labelstring), "{15FF00}House ID: {FFFFFF}%d\n{15FF00}Status: {FFFFFF}For Sale\n{15FF00}Price: {FFFFFF}%d\n{15FF00}Level: {FFFFFF}%d", i, HouseInfo[i][hPrice], HouseInfo[i][hLevel]);
  789. format(stringlabel, sizeof(stringlabel), "{15FF00}House ID: {FFFFFF}%d\n{15FF00}Owner: {FFFFFF}%s\n{15FF00}Price: {FFFFFF}%d\n{15FF00}Level: {FFFFFF}%d", i, HouseInfo[i][hOwner], HouseInfo[i][hPrice], HouseInfo[i][hLevel]);
  790. if(HouseInfo[i][hOwned] == 0)
  791. {
  792. HouseInfo[i][hPick] = CreatePickup(1273, 1, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ], 0);
  793. HouseInfo[i][hLabel] = Create3DTextLabel(labelstring, 0xFFFFFFFF, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ], 25.0, 0, 0);
  794. }
  795. else if(HouseInfo[i][hOwned] == 1)
  796. {
  797. HouseInfo[i][hPick] = CreatePickup(1272, 1, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ], 0);
  798. HouseInfo[i][hLabel] = Create3DTextLabel(stringlabel, 0xFFFFFFFF, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ], 25.0, 0, 0);
  799. }
  800. houseid++;
  801. }
  802. }
  803. print(" ");
  804. print(" ");
  805. printf(" LOADED HOUSE: %d/%d", houseid, MAX_HOUSES);
  806. print(" ");
  807. print(" ");
  808. return 1;
  809. }
  810.  
  811. //------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement