Guest User

Houses

a guest
May 31st, 2014
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.03 KB | None | 0 0
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <streamer>
  4. #include <YSI\y_ini>
  5. #include <zcmd>
  6. //----------------------------
  7. //----------------------------
  8. // Full house script by Antironix edited by VenomMancer!
  9. // Just don't remove the credits!
  10. //----------------------------
  11. //----------------------------
  12. #define MAX_DISTANCE_TO_PROP 1.5
  13. #define MAX_HOUSES 5000
  14. #define GR "{00FF00}"
  15. #define WI "{FFFFFF}"
  16. #define YE "{FFFF00}"
  17.  
  18. #define COL_EASY "{FFF1AF}"
  19. #define COL_WHITE "{FFFFFF}"
  20. #define COL_BLACK "{0E0101}"
  21. #define COL_GREY "{C3C3C3}"
  22. #define COL_GREEN "{6EF83C}"
  23. #define COL_RED "{F81414}"
  24. #define COL_YELLOW "{F3FF02}"
  25. #define COL_ORANGE "{FFAF00}"
  26. #define COL_LIME "{B7FF00}"
  27. #define COL_CYAN "{00FFEE}"
  28. #define COL_LIGHTBLUE "{00C0FF}"
  29. #define COL_BLUE "{0049FF}"
  30. #define COL_MAGENTA "{F300FF}"
  31. #define COL_VIOLET "{B700FF}"
  32. #define COL_PINK "{FF00EA}"
  33. #define COL_MARONE "{A90202}"
  34. #define COL_CMD "{B8FF02}"
  35. #define COL_PARAM "{3FCD02}"
  36. #define COL_SERVER "{AFE7FF}"
  37. #define COL_VALUE "{A3E4FF}"
  38. #define COL_RULE "{F9E8B7}"
  39. #define COL_RULE2 "{FBDF89}"
  40. #define COL_RWHITE "{FFFFFF}"
  41. #define COL_LGREEN "{C9FFAB}"
  42. #define COL_LRED "{FFA1A1}"
  43. #define COL_LRED2 "{C77D87}"
  44. #define COL_PURPLE "{AA00E3}"
  45.  
  46. //----------------------------
  47. //----------------------------
  48. #define c_y 0xFFFF00AA
  49. #define c_r 0xAA3333AA
  50. new HousePickup[MAX_HOUSES];
  51. new playerinterior[MAX_PLAYERS]=-1;
  52. new Float:housex, Float:housey, Float:housez;
  53. new HouseMapicon[MAX_PLAYERS];
  54. new playerworld[MAX_PLAYERS];
  55. new HouseCount;
  56.  
  57. enum HouseInfo
  58. {
  59. Owned,
  60. Name[256],
  61. Cost,
  62. Sell,
  63. Interior,
  64. Virtualworld,
  65. Locked,
  66. Text3D:hLabel,
  67. Float:InteriorX,
  68. Float:InteriorY,
  69. Float:InteriorZ,
  70. Float:iconx,
  71. Float:icony,
  72. Float:iconz,
  73. Float:sX,
  74. Float:sY,
  75. Float:sZ,
  76. sInt,
  77. hID
  78. }
  79. new hInfo[MAX_HOUSES][HouseInfo];
  80.  
  81.  
  82. #define FILTERSCRIPT
  83. #if defined FILTERSCRIPT
  84.  
  85. public OnFilterScriptInit()
  86. {
  87. print("\n--------------------------------------");
  88. print(" Simple House System by VenomMancer");
  89. print("--------------------------------------\n");
  90. LoadHouses();
  91. return 0;
  92. }
  93.  
  94. public OnFilterScriptExit()
  95. {
  96. for(new i=0;i<MAX_HOUSES;i++)
  97. {
  98. DestroyPickup(HousePickup[i]);
  99. }
  100. return 0;
  101. }
  102.  
  103. #else
  104. #endif
  105.  
  106.  
  107. public OnPlayerConnect(playerid)
  108. {
  109. hInfo[playerid][hID] = -255;
  110.  
  111. hInfo[playerid][sX] = 0;
  112. hInfo[playerid][sY] = 0;
  113. hInfo[playerid][sZ] = 0;
  114.  
  115. new str1[256],pname[24];
  116. GetPlayerName(playerid, pname, sizeof(pname));
  117. format(str1, sizeof(str1), "JLadmin/Users/%s.ini", pname);
  118. INI_ParseFile(str1, "loadplayer_%s", .bExtra = true, .extra = playerid );
  119. return 1;
  120. }
  121.  
  122.  
  123. stock LoadHouses()
  124. {
  125. new file[556];
  126. for(new i = 0; i < MAX_HOUSES; i++)
  127. {
  128. format(file,sizeof(file),"Houses/%i.ini",i);
  129. if(!fexist(file)) continue;
  130. if(fexist(file))
  131. {
  132. INI_ParseFile(file, "loadhouse_%s", .bExtra = true, .extra = i );
  133.  
  134. switch(hInfo[i][Owned])
  135. {
  136. case 0:
  137. {
  138. new labelstring[500];
  139. format(labelstring,sizeof(labelstring),""COL_GREEN"[ Owned ]: "#COL_WHITE#"Available\n"COL_GREEN"[ Price ]: "WI"%i\n"#COL_LIME#"Use /house to buy this lovely house",hInfo[i][Cost]);
  140. HouseMapicon[i] = CreateDynamicMapIcon(hInfo[i][iconx],hInfo[i][icony],hInfo[i][iconz], 31, 0, -1, -1, -1, 100.0);
  141. HousePickup[i] = CreatePickup(1273,1,hInfo[i][iconx],hInfo[i][icony],hInfo[i][iconz],0);
  142. hInfo[i][hLabel] = Create3DTextLabel(labelstring,0xFF0000FF,hInfo[i][iconx],hInfo[i][icony],hInfo[i][iconz],25.0,0);
  143. }
  144. case 1:
  145. {
  146. new labelstring[1000];
  147. format(labelstring,sizeof(labelstring),""YE"[ Owned ]: "COL_RED"Yes\n"YE"[ Price ]: "WI"%i\n"YE"[ Owner ]: "WI"%s",hInfo[i][Cost],hInfo[i][Name]);
  148. HouseMapicon[i] = CreateDynamicMapIcon(hInfo[i][iconx],hInfo[i][icony],hInfo[i][iconz], 32, 0, -1, -1, -1, 100.0);
  149. HousePickup[i] = CreatePickup(1272, 23, hInfo[i][iconx], hInfo[i][icony], hInfo[i][iconz]);
  150. hInfo[i][hLabel] = Create3DTextLabel(labelstring,0xFF0000FF,hInfo[i][iconx],hInfo[i][icony],hInfo[i][iconz],25.0,0);
  151. }
  152. }
  153. HouseCount++;
  154. }
  155. }
  156. return 1;
  157. }
  158.  
  159. COMMAND:chouse(playerid,params[])
  160. {
  161. new Float:x,Float:y,Float:z,price,Sella,file2[100],labelstring[500],houseid = HouseCount;
  162. if(!IsPlayerAdmin(playerid)) return 0;
  163. if(sscanf(params,"ii",price,Sella)) return SendClientMessage(playerid,-1,""WI"USE: /chouse [price] [sellprice]");
  164. GetPlayerPos(playerid,x,y,z);
  165.  
  166. format(hInfo[houseid][Name], 24, "None");
  167. hInfo[houseid][Cost] = price;
  168. hInfo[houseid][Sell] = Sella;
  169. hInfo[houseid][Interior] = 5;
  170. hInfo[houseid][Virtualworld] = 0;
  171. hInfo[houseid][Locked] = 1;
  172. hInfo[houseid][InteriorX] = 1299.14;
  173. hInfo[houseid][InteriorY] = -794.77;
  174. hInfo[houseid][InteriorZ] = 1084.00;
  175.  
  176. hInfo[houseid][Owned] =0;
  177.  
  178. hInfo[houseid][iconx]= x;
  179. hInfo[houseid][icony]= y;
  180. hInfo[houseid][iconz]= z;
  181.  
  182. HousePickup[houseid] = CreatePickup(1273,1,x,y,z,GetPlayerVirtualWorld(playerid));
  183.  
  184. format(file2,sizeof(file2),"Houses/%i.ini",houseid);
  185. if(!fexist(file2))
  186. {
  187. new INI:house = INI_Open(file2);
  188. INI_WriteString(house, "Name", "None");
  189. INI_WriteInt(house, "Owned", hInfo[houseid][Owned]);
  190. INI_WriteInt(house, "Cost", hInfo[houseid][Cost]);
  191. INI_WriteInt(house, "Sell", hInfo[houseid][Sell]);
  192. INI_WriteInt(house, "Interior", hInfo[houseid][Interior]);
  193. INI_WriteInt(house, "Virtualworld", hInfo[houseid][Virtualworld]);
  194. INI_WriteInt(house, "Locked", 1);
  195.  
  196. INI_WriteFloat(house, "X", hInfo[houseid][InteriorX]);
  197. INI_WriteFloat(house, "Y", hInfo[houseid][InteriorY]);
  198. INI_WriteFloat(house, "Z", hInfo[houseid][InteriorZ]);
  199.  
  200. INI_WriteFloat(house, "iconX", hInfo[houseid][iconx]);
  201. INI_WriteFloat(house, "iconY", hInfo[houseid][icony]);
  202. INI_WriteFloat(house, "iconZ", hInfo[houseid][iconz]);
  203.  
  204. INI_Close(house);
  205. }
  206.  
  207. format(labelstring,sizeof(labelstring),""COL_GREEN"[ Owned ]: "#COL_WHITE#"Available\n"COL_GREEN"[ Price ]: "#COL_LIME#"%i\nUse /house to buy this lovely house",price);
  208. hInfo[houseid][hLabel] = Create3DTextLabel(labelstring,0xFF0000FF,x,y,z,25.0,GetPlayerVirtualWorld(playerid));
  209. HouseMapicon[houseid] = CreateDynamicMapIcon(x,y,z, 31, 0, -1, -1, -1, 100.0);
  210.  
  211. HouseCount++;
  212. return 1;
  213. }
  214.  
  215. stock SpawnPlayerAtHouse(playerid)
  216. {
  217. new str1[256],pname[24];
  218. GetPlayerName(playerid, pname, sizeof(pname));
  219. format(str1, sizeof(str1), "JLadmin/Users/%s.ini", pname);
  220.  
  221. INI_ParseFile(str1, "loadplayer_%s", .bExtra = true, .extra = playerid );
  222.  
  223. if(hInfo[playerid][hID]!= -255)
  224. {
  225. SetPlayerInterior(playerid, hInfo[playerid][sInt]);
  226. playerinterior[playerid] = hInfo[playerid][sInt];
  227. SetPlayerPos(playerid, hInfo[playerid][sX], hInfo[playerid][sY], hInfo[playerid][sZ]);
  228. }
  229.  
  230. return 1;
  231. }
  232.  
  233. public OnPlayerSpawn(playerid)
  234. {
  235. if(hInfo[playerid][hID] != -255)
  236. {
  237. SpawnPlayerAtHouse(playerid);
  238. }
  239. return 1;
  240. }
  241.  
  242. CMD:sell(playerid,params[])
  243. {
  244. #pragma unused params
  245. new str[234], str2[255],str1[256],pname[24],housenumber;
  246. housenumber = GetHouseID(playerid);
  247. GetPlayerName(playerid, pname, 24);
  248. if (strcmp(hInfo[housenumber][Name],pname,false)) return SendClientMessage(playerid, c_r, "This house isn't yours!");
  249. SendClientMessage(playerid, c_y, "You have sold your house!");
  250. format(str, sizeof(str), "%s has sold houseid 0",pname);
  251. print(str);
  252. GivePlayerMoney(playerid, hInfo[housenumber][Sell]);
  253.  
  254. format(str2, sizeof(str2), "Houses/%d.ini", housenumber);
  255. new INI:filex = INI_Open(str2);
  256. INI_WriteString(filex, "Name", "None");
  257. INI_WriteInt(filex,"Locked",1);
  258. INI_WriteInt(filex,"Owned",0);
  259. INI_Close(filex);
  260.  
  261. hInfo[housenumber][Owned] = 0;
  262. hInfo[housenumber][Locked] = 1;
  263. format(hInfo[housenumber][Name],255,"None");
  264.  
  265. format(str1, sizeof(str1), "JLadmin/Users/%s.ini", pname);
  266. new INI:file = INI_Open(str1);
  267. INI_WriteInt(file, "Houseid", -255);
  268. INI_Close(file);
  269.  
  270. hInfo[playerid][hID] = -255;
  271.  
  272. DestroyPickup(HousePickup[housenumber]);
  273. HousePickup[housenumber] = CreatePickup(1273, 23, hInfo[housenumber][iconx], hInfo[housenumber][icony], hInfo[housenumber][iconz]);
  274. DestroyDynamicMapIcon(HouseMapicon[housenumber]);
  275. HouseMapicon[housenumber] = CreateDynamicMapIcon(hInfo[housenumber][iconx],hInfo[housenumber][icony],hInfo[housenumber][iconz], 31, 0, -1, -1, -1, 100.0);
  276. new labelstring[256];
  277. format(labelstring,sizeof(labelstring),""COL_GREEN"[ Owned ]: "#COL_WHITE#"Available\n"COL_GREEN"[ Price ]: "WI"%i\n"#COL_LIME#"Use /house to buy this lovely house",hInfo[housenumber][Cost]);
  278. Update3DTextLabelText(hInfo[housenumber][hLabel],-1,labelstring);
  279. return 1;
  280. }
  281.  
  282. CMD:buy(playerid,params[])
  283. {
  284. #pragma unused params
  285. new str[255],str1[255],str5[256],pname[256], housenumber;
  286. housenumber = GetHouseID(playerid);
  287. if(housenumber == -1) return SendClientMessage(playerid, c_r, "You are not in a house icon!");
  288.  
  289. GetPlayerName(playerid, pname, 256);
  290.  
  291. format(str1, sizeof(str1), "JLadmin/Users/%s.ini", pname);
  292.  
  293. INI_ParseFile(str1, "loadplayer_%s", .bExtra = true, .extra = playerid );
  294.  
  295. if (hInfo[playerid][hID]!=-255) return SendClientMessage(playerid, c_r, "You can only buy one house!");
  296.  
  297. if (strcmp(hInfo[housenumber][Name],"None",true)) return SendClientMessage(playerid, c_r, "This house isn't for sale!");
  298. if(GetPlayerMoney(playerid)<hInfo[housenumber][Cost]) return SendClientMessage(playerid, c_r, "Not enough money!");
  299. SendClientMessage(playerid, c_y, "You have bought the house!");
  300. GivePlayerMoney(playerid, -hInfo[housenumber][Cost]);
  301.  
  302. format(str, sizeof(str), "Houses/%d.ini", housenumber);
  303. new INI:file = INI_Open(str);
  304. INI_WriteString(file, "Name", pname);
  305. INI_WriteInt(file,"Owned",1);
  306. INI_Close(file);
  307.  
  308. hInfo[housenumber][Owned] = 1;
  309. hInfo[housenumber][Name] = pname;
  310. hInfo[housenumber][Locked] = 1;
  311. hInfo[playerid][hID] = housenumber;
  312.  
  313. new Float:sy, Float:sx, Float:sz;
  314. GetPlayerPos(playerid, sx,sy,sz);
  315.  
  316. format(str5, sizeof(str5), "JLadmin/Users/%s.ini", pname);
  317.  
  318. new INI:file1 = INI_Open(str5);
  319. INI_WriteInt(file1, "Houseid", hInfo[playerid][hID]);
  320. INI_WriteFloat(file1, "sX", sx);
  321. INI_WriteFloat(file1, "sY", sy);
  322. INI_WriteFloat(file1, "sZ", sz);
  323. INI_WriteInt(file1, "sInt", GetPlayerInterior(playerid));
  324. INI_Close(file1);
  325.  
  326. DestroyPickup(HousePickup[housenumber]);
  327. HousePickup[housenumber] = CreatePickup(1272, 23, hInfo[housenumber][iconx], hInfo[housenumber][icony], hInfo[housenumber][iconz]);
  328. DestroyDynamicMapIcon(HouseMapicon[housenumber]);
  329. HouseMapicon[housenumber] = CreateDynamicMapIcon(hInfo[housenumber][iconx],hInfo[housenumber][icony],hInfo[housenumber][iconz], 32, 0, -1, -1, -1, 100.0);
  330. new labelstring[256];
  331. format(labelstring,sizeof(labelstring),""YE"[ Owned ]: "COL_RED"Yes\n"YE"[ Price ]: "WI"%i\n"YE"[ Owner ]: "WI"%s",hInfo[housenumber][Cost],hInfo[housenumber][Name]);
  332. Update3DTextLabelText(hInfo[housenumber][hLabel],-1,labelstring);
  333. return 1;
  334. }
  335.  
  336. CMD:lock(playerid,params[])
  337. {
  338. #pragma unused params
  339. new str1[256],pname[24],housenumber;
  340. housenumber = GetHouseID(playerid);
  341. GetPlayerName(playerid, pname, 24);
  342. format(str1, sizeof(str1), "Houses/%d.ini", housenumber);
  343. if(strcmp(hInfo[housenumber][Name],pname,true)==0)
  344. {
  345. SendClientMessage(playerid, c_y, "You have locked your house!");
  346. new INI:file = INI_Open(str1);
  347. INI_WriteInt(file,"Locked",1);
  348. INI_Close(file);
  349. hInfo[housenumber][Locked] = 1;
  350. }
  351. else
  352. {
  353. SendClientMessage(playerid, c_r, "This house isn't yours!");
  354. }
  355. return 1;
  356. }
  357.  
  358. CMD:unlock(playerid,params[])
  359. {
  360. #pragma unused params
  361. new str1[256],pname[24],housenumber;
  362. housenumber = GetHouseID(playerid);
  363. GetPlayerName(playerid, pname, 24);
  364. format(str1, sizeof(str1), "Houses/%d.ini", housenumber);
  365. if(strcmp(hInfo[housenumber][Name],pname,true)==0)
  366. {
  367. SendClientMessage(playerid, c_y, "You have unlocked your house!");
  368. new INI:file = INI_Open(str1);
  369.  
  370. INI_WriteInt(file,"Locked",0);
  371. INI_Close(file);
  372. hInfo[housenumber][Locked] = 0;
  373. }
  374. else
  375. {
  376. SendClientMessage(playerid, c_r, "This house isn't yours!");
  377. }
  378. return 1;
  379. }
  380.  
  381. CMD:enter(playerid,params[])
  382. {
  383. #pragma unused params
  384. new str1[255],pname[24],housenumber;
  385. housenumber = GetHouseID(playerid);
  386. GetPlayerPos(playerid, housex, housey, housez);
  387. format(str1, sizeof(str1), "Houses/%d.ini", housenumber);
  388. GetPlayerName(playerid, pname, 24);
  389. if(hInfo[housenumber][Locked]==1) return SendClientMessage(playerid, c_r, "This house is locked!");
  390. playerworld[playerid] = GetPlayerVirtualWorld(playerid);
  391. SendClientMessage(playerid, c_y, "You entered the house!");
  392. SetPlayerVirtualWorld(playerid, hInfo[housenumber][Virtualworld]);
  393. SetPlayerInterior(playerid, hInfo[housenumber][Interior]);
  394. SetPlayerPos(playerid, hInfo[housenumber][InteriorX], hInfo[housenumber][InteriorY], hInfo[housenumber][InteriorZ]);
  395. playerinterior[playerid] = hInfo[housenumber][Interior];
  396. return 1;
  397. }
  398.  
  399. CMD:exit(playerid,params[])
  400. {
  401. #pragma unused params
  402.  
  403. if(GetPlayerInterior(playerid)==playerinterior[playerid])
  404. {
  405. SetPlayerPos(playerid, housex, housey, housez);
  406. SetPlayerInterior(playerid, playerworld[playerid]);
  407. }
  408. else
  409. {
  410. SendClientMessage(playerid, c_r, "You have not entered a house!");
  411. }
  412. return 1;
  413. }
  414.  
  415. CMD:home(playerid,params[])
  416. {
  417. #pragma unused params
  418. new str1[256],pname[24];
  419. GetPlayerName(playerid, pname, 24);
  420. format(str1, sizeof(str1), "JLadmin/Users/%s.ini", pname);
  421. if(!fexist(str1)) return SendClientMessage(playerid, c_r, "You don't own a house!");
  422. INI_ParseFile(str1, "loadplayer_%s", .bExtra = true, .extra = playerid );
  423.  
  424. if(hInfo[playerid][hID]!=-255)
  425. {
  426. SpawnPlayerAtHouse(playerid);
  427. }
  428. else
  429. {
  430. SendClientMessage(playerid, c_r, "You don't own a house!");
  431. }
  432. return 1;
  433. }
  434.  
  435. CMD:housestats(playerid,params[])
  436. {
  437. return 1;
  438. }
  439.  
  440. public OnPlayerPickUpPickup(playerid, pickupid)
  441. {
  442. return 0;
  443. }
  444.  
  445. stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
  446. {
  447. if(IsPlayerConnected(playerid))
  448. {
  449. new Float:oldposx, Float:oldposy, Float:oldposz;
  450. new Float:tempposx, Float:tempposy, Float:tempposz;
  451. GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  452. tempposx = (oldposx -x);
  453. tempposy = (oldposy -y);
  454. tempposz = (oldposz -z);
  455. if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  456. {
  457. return 1;
  458. }
  459. }
  460. return 0;
  461. }
  462.  
  463. stock GetHouseID(playerid)
  464. {
  465. for(new i=0; i<MAX_HOUSES; i++)
  466. {
  467. if(PlayerToPoint(MAX_DISTANCE_TO_PROP, playerid, hInfo[i][iconx], hInfo[i][icony], hInfo[i][iconz]))
  468. {
  469. return i;
  470. }
  471. }
  472. return -255;
  473. }
  474.  
  475. forward loadhouse_data(i, name[], value[]);
  476. public loadhouse_data(i, name[], value[])
  477. {
  478. INI_Int("Owned",hInfo[i][Owned]);
  479.  
  480. INI_Int("Sell",hInfo[i][Sell]);
  481. INI_Int("Interior",hInfo[i][Interior]);
  482. INI_Int("Cost",hInfo[i][Cost]);
  483. INI_Int("Locked",hInfo[i][Locked]);
  484.  
  485. INI_Float("X", hInfo[i][InteriorX]);
  486. INI_Float("Y", hInfo[i][InteriorY]);
  487. INI_Float("Z", hInfo[i][InteriorZ]);
  488.  
  489. INI_Float("iconX", hInfo[i][iconx]);
  490. INI_Float("iconY", hInfo[i][icony]);
  491. INI_Float("iconZ", hInfo[i][iconz]);
  492.  
  493. INI_Int("VirtualWorld", hInfo[i][Virtualworld]);
  494. INI_String("Name", hInfo[i][Name], 256);
  495. return 1;
  496. }
  497.  
  498. forward loadplayer_data(i, name[], value[]);
  499. public loadplayer_data(i, name[], value[])
  500. {
  501. INI_Float("sX", hInfo[i][sX]);
  502. INI_Float("sY", hInfo[i][sY]);
  503. INI_Float("sZ", hInfo[i][sZ]);
  504. INI_Int("sInt", hInfo[i][sInt]);
  505. INI_Int("Houseid", hInfo[i][hID]);
  506. return 1;
  507. }
  508.  
  509. /*public OnVehicleMod(vehicleid, componentid)
  510. {
  511. new house[256];
  512. for(new i=0; i<MAX_HOUSES; i++)
  513. {
  514. format(house, sizeof(house), "Houses/%d.ini",i);
  515. if(!dini_Isset(house, "CarModel")) continue;
  516. if(
  517. }
  518. return 1;
  519. }*/
Advertisement
Add Comment
Please, Sign In to add comment