Advertisement
Guest User

Jason's Dynamic House System

a guest
Dec 22nd, 2014
1,131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.00 KB | None | 0 0
  1.  
  2.  
  3. /* ---------------- Jason's Dynamic Housing System ----------------- */
  4.  
  5.  
  6.  
  7.  
  8. /* I'm not even going to attempt to put credits here, I know people are just
  9. going to rip code off me anyway. Might as well give you some decent code to
  10. rip off of. Enjoy! ;) */
  11.  
  12.  
  13.  
  14. #include <a_samp>
  15. #include <streamer>
  16. #include <sscanf2>
  17. #include <dini>
  18. #include <ZCMD>
  19.  
  20. #define FILTERSCRIPT
  21.  
  22.  
  23.  
  24.  
  25. #define MAX_HOUSES 2000
  26.  
  27. #define COLOUR_WHITE 0xFFFFFFAA
  28. #define COLOUR_GREY 0xAFAFAFAA
  29. #define COLOUR_LIGHTBLUE 0x33CCFFAA
  30. #define COLOUR_GREEN 0x33AA33AA
  31.  
  32.  
  33.  
  34. new ActiveHouses;
  35.  
  36.  
  37.  
  38. enum HouseData
  39. {
  40. hOwned,
  41. hOwner[255],
  42. hPrice,
  43. Float: hExteriorX,
  44. Float: hExteriorY,
  45. Float: hExteriorZ,
  46. Float: hExteriorA,
  47. hExteriorVW,
  48. hExteriorInt,
  49. Float: hInteriorX,
  50. Float: hInteriorY,
  51. Float: hInteriorZ,
  52. Float: hInteriorA,
  53. hInteriorVW,
  54. hInteriorInt,
  55. hLock,
  56. Text3D: hTextLabelID,
  57. hPickupID
  58. }
  59.  
  60.  
  61.  
  62. new House[MAX_HOUSES][HouseData];
  63.  
  64.  
  65. public OnFilterScriptInit()
  66. {
  67. print(" [server] Initiated Jason's Dynamic Housing System");
  68. LoadHouses();
  69. return 1;
  70. }
  71.  
  72. public OnFilterScriptExit()
  73. {
  74. print(" [server] Unloaded Jason's Dynamic Housing System");
  75. SaveHouses();
  76. return 1;
  77. }
  78.  
  79. command(hcreate, playerid, params[])
  80. {
  81. new Usage[255], string[255];
  82.  
  83. if(IsPlayerAdmin(playerid))
  84. {
  85. if(sscanf(params, "s[255]", Usage))
  86. {
  87. SendClientMessage(playerid, COLOUR_WHITE, "USAGE: /hcreate [usage]");
  88. SendClientMessage(playerid, COLOUR_GREY, "Usages: Exterior, Interior, Complete.");
  89. }
  90. else
  91. {
  92. new hID = ActiveHouses+1;
  93.  
  94. if(strcmp(Usage, "exterior", true) == 0)
  95. {
  96.  
  97. GetPlayerPos(playerid, House[hID][hExteriorX], House[hID][hExteriorY], House[hID][hExteriorZ]);
  98. GetPlayerFacingAngle(playerid, House[hID][hExteriorA]);
  99. House[hID][hExteriorVW] = GetPlayerVirtualWorld(playerid);
  100. House[hID][hExteriorInt] = GetPlayerInterior(playerid);
  101. format(string, sizeof(string), "You have successfully set the exterior of House %d.", hID);
  102. SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  103. format(string, sizeof(string), "X: %f, Y: %f, Z: %f, A: %f, VW: %d, Int: %d", House[hID][hExteriorX], House[hID][hExteriorY], House[hID][hExteriorZ], House[hID][hExteriorA], House[hID][hExteriorVW], House[hID][hExteriorInt]);
  104. SendClientMessage(playerid, COLOUR_GREY, string);
  105. return 1;
  106. }
  107. if(strcmp(Usage, "interior", true) == 0)
  108. {
  109. GetPlayerPos(playerid, House[hID][hInteriorX], House[hID][hInteriorY], House[hID][hInteriorZ]);
  110. GetPlayerFacingAngle(playerid, House[hID][hInteriorA]);
  111. House[hID][hInteriorVW] = GetPlayerVirtualWorld(playerid);
  112. House[hID][hInteriorInt] = GetPlayerInterior(playerid);
  113. format(string, sizeof(string), "You have successfully set the interior of House %d.", hID);
  114. SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  115. format(string, sizeof(string), "X: %f, Y: %f, Z: %f, A: %f, VW: %d, Int: %d", House[hID][hInteriorX], House[hID][hInteriorY], House[hID][hInteriorZ], House[hID][hInteriorA], House[hID][hInteriorVW], House[hID][hInteriorInt]);
  116. SendClientMessage(playerid, COLOUR_GREY, string);
  117. return 1;
  118. }
  119. if(strcmp(Usage, "complete", true) == 0)
  120. {
  121. if(House[hID][hExteriorX] > 0 && House[hID][hInteriorX] > 0)
  122. {
  123. if(hID >= MAX_HOUSES)
  124. {
  125. SendClientMessage(playerid, COLOUR_GREY, " Error: Too many houses are currently spawend.");
  126. }
  127. else
  128. {
  129. format(string, sizeof(string), "Houses/%d.ini", hID);
  130.  
  131. if(!fexist(string))
  132. {
  133. dini_Create(string);
  134. dini_IntSet(string, "hOwned", 0);
  135. dini_Set(string, "hOwner", "Nobody");
  136. dini_IntSet(string, "hPrice", 0);
  137. dini_IntSet(string, "hLock", 0);
  138.  
  139. dini_FloatSet(string, "hExteriorX", House[hID][hExteriorX]);
  140. dini_FloatSet(string, "hExteriorY", House[hID][hExteriorY]);
  141. dini_FloatSet(string, "hExteriorZ", House[hID][hExteriorZ]);
  142. dini_FloatSet(string, "hExteriorA", House[hID][hExteriorA]);
  143. dini_IntSet(string, "hExteriorVW", House[hID][hExteriorVW]);
  144. dini_IntSet(string, "hExteriorInt", House[hID][hExteriorInt]);
  145.  
  146. dini_FloatSet(string, "hInteriorX", House[hID][hInteriorX]);
  147. dini_FloatSet(string, "hInteriorY", House[hID][hInteriorY]);
  148. dini_FloatSet(string, "hInteriorZ", House[hID][hInteriorZ]);
  149. dini_FloatSet(string, "hInteriorA", House[hID][hInteriorA]);
  150. dini_IntSet(string, "hInteriorVW", House[hID][hInteriorVW]);
  151. dini_IntSet(string, "hInteriorInt", House[hID][hInteriorInt]);
  152.  
  153. ActiveHouses++;
  154.  
  155. format(string, sizeof(string), "You have successfully created House %d.", hID);
  156. SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  157.  
  158. SetPlayerPos(playerid, House[hID][hExteriorX], House[hID][hExteriorY], House[hID][hExteriorZ]);
  159. SetPlayerVirtualWorld(playerid, House[hID][hExteriorVW]);
  160. SetPlayerInterior(playerid, House[hID][hExteriorInt]);
  161. SetPlayerFacingAngle(playerid, House[hID][hExteriorA]);
  162. SetCameraBehindPlayer(playerid);
  163.  
  164. RespawnHousePickup(hID);
  165. return 1;
  166. }
  167. else
  168. {
  169. SendClientMessage(playerid, COLOUR_GREY, " Error: File already exists, script error.");
  170. }
  171. }
  172. }
  173. else
  174. {
  175. SendClientMessage(playerid, COLOUR_GREY, " You need to set the house's (ex/in)terior before completing!");
  176. return 1;
  177. }
  178. }
  179. }
  180. }
  181. else
  182. {
  183. SendClientMessage(playerid, COLOUR_GREY, " You are not an administrator!");
  184. }
  185. return 1;
  186. }
  187.  
  188. command(hedit, playerid, params[])
  189. {
  190. new id, Usage[255], Price, string[255];
  191.  
  192. if(IsPlayerAdmin(playerid))
  193. {
  194. if(sscanf(params, "ds[255]D", id, Usage, Price))
  195. {
  196. SendClientMessage(playerid, COLOUR_WHITE, "USAGE: /hedit [id] [usage] [* value]");
  197. SendClientMessage(playerid, COLOUR_GREY, "Usages: Exterior, Interior, Sell, * Price");
  198. }
  199. else
  200. {
  201. if(strcmp(Usage, "exterior", true) == 0)
  202. {
  203.  
  204. GetPlayerPos(playerid, House[id][hExteriorX], House[id][hExteriorY], House[id][hExteriorZ]);
  205. GetPlayerFacingAngle(playerid, House[id][hExteriorA]);
  206. House[id][hExteriorVW] = GetPlayerVirtualWorld(playerid);
  207. House[id][hExteriorInt] = GetPlayerInterior(playerid);
  208. format(string, sizeof(string), "You have successfully re-set the exterior of House %d.", id);
  209. SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  210. format(string, sizeof(string), "X: %f, Y: %f, Z: %f, A: %f, VW: %d, Int: %d", House[id][hExteriorX], House[id][hExteriorY], House[id][hExteriorZ], House[id][hExteriorA], House[id][hExteriorVW], House[id][hExteriorInt]);
  211. SendClientMessage(playerid, COLOUR_GREY, string);
  212. SaveHouse(id);
  213. return 1;
  214. }
  215. if(strcmp(Usage, "interior", true) == 0)
  216. {
  217. GetPlayerPos(playerid, House[id][hInteriorX], House[id][hInteriorY], House[id][hInteriorZ]);
  218. GetPlayerFacingAngle(playerid, House[id][hInteriorA]);
  219. House[id][hInteriorVW] = GetPlayerVirtualWorld(playerid);
  220. House[id][hInteriorInt] = GetPlayerInterior(playerid);
  221. format(string, sizeof(string), "You have successfully re-set the interior of House %d.", id);
  222. SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  223. format(string, sizeof(string), "X: %f, Y: %f, Z: %f, A: %f, VW: %d, Int: %d", House[id][hInteriorX], House[id][hInteriorY], House[id][hInteriorZ], House[id][hInteriorA], House[id][hInteriorVW], House[id][hInteriorInt]);
  224. SendClientMessage(playerid, COLOUR_GREY, string);
  225. SaveHouse(id);
  226. return 1;
  227. }
  228. if(strcmp(Usage, "sell", true) == 0)
  229. {
  230. House[id][hOwned] = 0;
  231. format(string, sizeof(string), "You have successfully sold House %d.", id);
  232. SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  233. SaveHouse(id);
  234. return 1;
  235. }
  236. if(strcmp(Usage, "price", true) == 0)
  237. {
  238. House[id][hPrice] = Price;
  239. format(string, sizeof(string), "You have successfully set the price of House %d.", id);
  240. SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  241. format(string, sizeof(string), "P: %d", House[id][hPrice]);
  242. SendClientMessage(playerid, COLOUR_GREY, string);
  243. SaveHouse(id);
  244. return 1;
  245. }
  246. }
  247. }
  248. else
  249. {
  250. SendClientMessage(playerid, COLOUR_GREY, " You are not an administrator!");
  251. }
  252. return 1;
  253. }
  254.  
  255. command(gotohouse, playerid, params[])
  256. {
  257. new id;
  258.  
  259. if(IsPlayerAdmin(playerid))
  260. {
  261. if(sscanf(params, "d", id))
  262. {
  263. SendClientMessage(playerid, COLOUR_WHITE, "USAGE: /gotohouse [id]");
  264. }
  265. else
  266. {
  267. if(House[id][hExteriorX] > 0 && House[id][hInteriorX] > 0)
  268. {
  269. SetPlayerPos(playerid, House[id][hExteriorX], House[id][hExteriorY], House[id][hExteriorZ]);
  270. SetPlayerVirtualWorld(playerid, House[id][hExteriorVW]);
  271. SetPlayerInterior(playerid, House[id][hExteriorInt]);
  272. SetPlayerFacingAngle(playerid, House[id][hExteriorA]);
  273. SetCameraBehindPlayer(playerid);
  274. }
  275. else
  276. {
  277. SendClientMessage(playerid, COLOUR_GREY, " Error: Invalid house number");
  278. }
  279. }
  280. }
  281. else
  282. {
  283. SendClientMessage(playerid, COLOUR_GREY, " You are not an administrator!");
  284. }
  285. return 1;
  286. }
  287.  
  288. command(goinhouse, playerid, params[])
  289. {
  290. new id;
  291.  
  292. if(IsPlayerAdmin(playerid))
  293. {
  294. if(sscanf(params, "d", id))
  295. {
  296. SendClientMessage(playerid, COLOUR_WHITE, "USAGE: /goinhouse [id]");
  297. }
  298. else
  299. {
  300. if(House[id][hExteriorX] > 0 && House[id][hInteriorX] > 0)
  301. {
  302. SetPlayerPos(playerid, House[id][hInteriorX], House[id][hInteriorY], House[id][hInteriorZ]);
  303. SetPlayerVirtualWorld(playerid, House[id][hInteriorVW]);
  304. SetPlayerInterior(playerid, House[id][hInteriorInt]);
  305. SetPlayerFacingAngle(playerid, House[id][hInteriorA]);
  306. SetCameraBehindPlayer(playerid);
  307. }
  308. else
  309. {
  310. SendClientMessage(playerid, COLOUR_GREY, " Error: Invalid house number");
  311. }
  312. }
  313. }
  314. else
  315. {
  316. SendClientMessage(playerid, COLOUR_GREY, " You are not an administrator!");
  317. }
  318. return 1;
  319. }
  320.  
  321. command(gotoco, playerid, params[])
  322. {
  323. new Interior, Float: x, Float: y, Float: z;
  324. if(IsPlayerAdmin(playerid))
  325. {
  326. if(sscanf(params, "fffd", x, y, z, Interior))
  327. {
  328. SendClientMessage(playerid, COLOUR_WHITE, "USAGE: /gotoco [x point] [y point] [z point] [Interior ID]");
  329. }
  330. else
  331. {
  332. SetPlayerPos(playerid, x, y, z);
  333. SetPlayerInterior(playerid, Interior);
  334. SendClientMessage(playerid, COLOUR_GREY, " You have been teleported!");
  335. }
  336. }
  337. else
  338. {
  339. SendClientMessage(playerid, COLOUR_GREY, " You are not an administrator!");
  340. }
  341. return 1;
  342. }
  343.  
  344. command(buyhouse, playerid, params[])
  345. {
  346. #pragma unused params
  347. new string[255];
  348.  
  349. for(new h = 0; h < sizeof(House); h++)
  350. {
  351. print("test");
  352. if(IsPlayerInRangeOfPoint(playerid, 5, House[h][hExteriorX], House[h][hExteriorY], House[h][hExteriorZ]))
  353. {
  354. if(House[h][hOwned] == 0)
  355. {
  356. if(GetPlayerMoney(playerid) >= House[h][hPrice])
  357. {
  358. new name[MAX_PLAYER_NAME];
  359. GetPlayerName(playerid, name, sizeof(name));
  360.  
  361. GivePlayerMoney(playerid, -House[h][hPrice]);
  362. House[h][hOwned] = 1;
  363. format(House[h][hOwner], 255, "%s", name);
  364.  
  365. format(string, sizeof(string), " You have successfully purchase House %d", h);
  366. SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  367. SaveHouse(h);
  368. return 1;
  369. }
  370. else
  371. {
  372. SendClientMessage(playerid, COLOUR_GREY, " You do not have enough money!");
  373. return 1;
  374. }
  375. }
  376. else
  377. {
  378. SendClientMessage(playerid, COLOUR_GREY, " This house is already owned!");
  379. return 1;
  380. }
  381. }
  382. }
  383. return 1;
  384. }
  385.  
  386. command(lockhouse, playerid, params[])
  387. {
  388. #pragma unused params
  389.  
  390. for(new h = 0; h < sizeof(House); h++)
  391. {
  392. if(IsPlayerInRangeOfPoint(playerid, 5, House[h][hExteriorX], House[h][hExteriorY], House[h][hExteriorZ]) || IsPlayerInRangeOfPoint(playerid, 5, House[h][hInteriorX], House[h][hInteriorY], House[h][hInteriorZ]))
  393. {
  394. new name[MAX_PLAYER_NAME];
  395. GetPlayerName(playerid, name, sizeof(name));
  396.  
  397. if(strcmp(House[h][hOwner], name, true) == 0)
  398. {
  399. if(House[h][hLock] == 0)
  400. {
  401. House[h][hLock] = 1;
  402. SendClientMessage(playerid, COLOUR_WHITE, "You have locked your house.");
  403. return 1;
  404. }
  405. else
  406. {
  407. House[h][hLock] = 0;
  408. SendClientMessage(playerid, COLOUR_WHITE, "You have un-locked your house.");
  409. return 1;
  410. }
  411. }
  412. else
  413. {
  414. SendClientMessage(playerid, COLOUR_GREY, " You do not own this house!");
  415. return 1;
  416. }
  417. }
  418. }
  419. return 1;
  420. }
  421.  
  422. command(enterhouse, playerid, params[])
  423. {
  424. #pragma unused params
  425.  
  426. for(new h = 0; h < sizeof(House); h++)
  427. {
  428. if(IsPlayerInRangeOfPoint(playerid, 5, House[h][hExteriorX], House[h][hExteriorY], House[h][hExteriorZ]))
  429. {
  430. if(House[h][hLock] == 0)
  431. {
  432. SetPlayerPos(playerid, House[h][hInteriorX], House[h][hInteriorY], House[h][hInteriorZ]);
  433. SetPlayerVirtualWorld(playerid, House[h][hInteriorVW]);
  434. SetPlayerInterior(playerid, House[h][hInteriorInt]);
  435. SetPlayerFacingAngle(playerid, House[h][hInteriorA]);
  436. SetCameraBehindPlayer(playerid);
  437. return 1;
  438. }
  439. else
  440. {
  441. GameTextForPlayer(playerid,"~r~Locked!", 3000, 1);
  442. return 1;
  443. }
  444. }
  445. }
  446. return 1;
  447. }
  448.  
  449. command(exithouse, playerid, params[])
  450. {
  451. #pragma unused params
  452.  
  453. for(new h = 0; h < sizeof(House); h++)
  454. {
  455. if(IsPlayerInRangeOfPoint(playerid, 5, House[h][hInteriorX], House[h][hInteriorY], House[h][hInteriorZ]))
  456. {
  457. SetPlayerPos(playerid, House[h][hExteriorX], House[h][hExteriorY], House[h][hExteriorZ]);
  458. SetPlayerVirtualWorld(playerid, House[h][hExteriorVW]);
  459. SetPlayerInterior(playerid, House[h][hExteriorInt]);
  460. SetPlayerFacingAngle(playerid, House[h][hExteriorA]);
  461. SetCameraBehindPlayer(playerid);
  462. return 1;
  463. }
  464. }
  465. return 1;
  466. }
  467.  
  468.  
  469.  
  470. stock RespawnHousePickup(houseid)
  471. {
  472. new string[255];
  473.  
  474. DestroyDynamicPickup(House[houseid][hPickupID]);
  475. DestroyDynamic3DTextLabel(House[houseid][hTextLabelID]);
  476. if(House[houseid][hOwned] >= 1)
  477. {
  478. format(string, sizeof(string), "This house is owned by\n%s\nID: %d", House[houseid][hOwner], houseid);
  479. House[houseid][hTextLabelID] = CreateDynamic3DTextLabel(string, COLOUR_GREEN, House[houseid][hExteriorX], House[houseid][hExteriorY], House[houseid][hExteriorZ]+0.5,10.0, .testlos = 1, .worldid = House[houseid][hExteriorVW], .interiorid = House[houseid][hExteriorVW], .streamdistance = 10.0);
  480. House[houseid][hPickupID] = CreateDynamicPickup(1272, 23, House[houseid][hExteriorX], House[houseid][hExteriorY], House[houseid][hExteriorZ], .worldid = House[houseid][hExteriorVW], .interiorid = House[houseid][hExteriorVW]);
  481. }
  482. else
  483. {
  484. format(string, sizeof(string), "For Sale!\nPrice: %d\nID: %d", House[houseid][hPrice], houseid);
  485. House[houseid][hTextLabelID] = CreateDynamic3DTextLabel(string, COLOUR_GREEN, House[houseid][hExteriorX], House[houseid][hExteriorY], House[houseid][hExteriorZ]+0.5,10.0, .testlos = 1, .worldid = House[houseid][hExteriorVW], .interiorid = House[houseid][hExteriorVW], .streamdistance = 10.0);
  486. House[houseid][hPickupID] = CreateDynamicPickup(1273, 23, House[houseid][hExteriorX], House[houseid][hExteriorY], House[houseid][hExteriorZ], .worldid = House[houseid][hExteriorVW], .interiorid = House[houseid][hExteriorVW]);
  487. }
  488. return 1;
  489. }
  490.  
  491. stock RespawnHouseTextLabel(houseid)
  492. {
  493. new string[128];
  494. if(House[houseid][hOwned] >= 1)
  495. {
  496. format(string, sizeof(string), "This house is owned by\n%s\nID: %d", House[houseid][hOwner], houseid);
  497. }
  498. else format(string, sizeof(string), "For Sale!\nPrice: %d\nID: %d", House[houseid][hPrice], houseid);
  499. UpdateDynamic3DTextLabelText(House[houseid][hTextLabelID], COLOR_GREEN, string);
  500. }
  501.  
  502. stock SaveHouses()
  503. {
  504. for(new i = 0; i < MAX_HOUSES; i++)
  505. {
  506. SaveHouse(i);
  507. }
  508. return 1;
  509. }
  510.  
  511. stock SaveHouse(houseid)
  512. {
  513. new File[23];
  514. format(File, sizeof(File), "Houses/%d.ini", houseid);
  515. if(fexist(File))
  516. {
  517. dini_IntSet(File, "hOwned", House[houseid][hOwned]);
  518. dini_Set(File, "hOwner", House[houseid][hOwner]);
  519. dini_IntSet(File, "hPrice", House[houseid][hPrice]);
  520. dini_IntSet(File, "hLock", House[houseid][hLock]);
  521.  
  522. dini_FloatSet(File, "hExteriorX", House[houseid][hExteriorX]);
  523. dini_FloatSet(File, "hExteriorY", House[houseid][hExteriorY]);
  524. dini_FloatSet(File, "hExteriorZ", House[houseid][hExteriorZ]);
  525. dini_FloatSet(File, "hExteriorA", House[houseid][hExteriorA]);
  526. dini_IntSet(File, "hExteriorVW", House[houseid][hExteriorVW]);
  527. dini_IntSet(File, "hExteriorInt", House[houseid][hExteriorInt]);
  528.  
  529. dini_FloatSet(File, "hInteriorX", House[houseid][hInteriorX]);
  530. dini_FloatSet(File, "hInteriorY", House[houseid][hInteriorY]);
  531. dini_FloatSet(File, "hInteriorZ", House[houseid][hInteriorZ]);
  532. dini_FloatSet(File, "hInteriorA", House[houseid][hInteriorA]);
  533. dini_IntSet(File, "hInteriorVW", House[houseid][hInteriorVW]);
  534. dini_IntSet(File, "hInteriorInt", House[houseid][hInteriorInt]);
  535.  
  536. RespawnHousePickup(houseid);
  537. }
  538. return 1;
  539. }
  540.  
  541. stock LoadHouses()
  542. {
  543. new File[23];
  544. for(new i = 0; i < MAX_HOUSES; i++)
  545. {
  546. format(File, sizeof(File), "Houses/%d.ini", i);
  547. if(fexist(File))
  548. {
  549. House[i][hOwned] = dini_Int(File, "hOwned");
  550. House[i][hOwner] = dini_Get(File, "hOwner");
  551. House[i][hPrice] = dini_Int(File, "hPrice");
  552. House[i][hLock] = dini_Int(File, "hLock");
  553.  
  554. House[i][hExteriorX] = dini_Float(File, "hExteriorX");
  555. House[i][hExteriorY] = dini_Float(File, "hExteriorY");
  556. House[i][hExteriorZ] = dini_Float(File, "hExteriorZ");
  557. House[i][hExteriorA] = dini_Float(File, "hExteriorA");
  558. House[i][hExteriorVW] = dini_Int(File, "hExteriorVW");
  559. House[i][hExteriorInt] = dini_Int(File, "hExteriorInt");
  560.  
  561. House[i][hInteriorX] = dini_Float(File, "hInteriorX");
  562. House[i][hInteriorY] = dini_Float(File, "hInteriorY");
  563. House[i][hInteriorZ] = dini_Float(File, "hInteriorZ");
  564. House[i][hInteriorA] = dini_Float(File, "hInteriorA");
  565. House[i][hInteriorVW] = dini_Int(File, "hInteriorVW");
  566. House[i][hInteriorInt] = dini_Int(File, "hInteriorInt");
  567.  
  568. ActiveHouses++;
  569. RespawnHousePickup(i);
  570. }
  571. }
  572. return 1;
  573. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement