· 10 years ago · Sep 03, 2016, 09:56 AM
1/*
2 Yet Another House System by rootcause
3
4 Current Version: 1.3
5 Topic: http://forum.sa-mp.com/showthread.php?p=3409290
6
7 Changelog (v1.3):
8 - Added house selling, you can put your houses for sale. When your house is bought by an another player, you'll receive your money.
9 - Added a house buying limiter, a player can't buy more than LIMIT_PER_PLAYER houses. Set LIMIT_PER_PLAYER to 0 if you want no limits.
10 - Internal changes like replacing GetPlayerName with Player_GetName or replacing the DIALOG_HOUSE+x format with e_dialogids enum.
11
12 FordÃtotta zsoolt997 a Magyar Sampfórum közösségének - 2016. 09. 03.
13
14 Ha warningot kapsz a következő sorokra - 702, 770, 850, 949, 2146, 2223 - akkor ezeket cseréld ki erzekre
15
16 HouseLabel -> Text3D:HouseLabel
17 intLabel -> Text3D:intLabel
18 INVALID_3DTEXT_ID -> Text3D:INVALID_3DTEXT_ID
19*/
20
21#define FILTERSCRIPT
22#include <a_samp>
23#include <a_mysql>
24#include <streamer>
25#include <sscanf2>
26#include <YSI\y_iterate>
27#include <zcmd>
28
29#define MAX_HOUSES (100)
30#define MAX_HOUSE_NAME (48)
31#define MAX_HOUSE_PASSWORD (16)
32#define MAX_HOUSE_ADDRESS (48)
33#define MAX_INT_NAME (32)
34#define INVALID_HOUSE_ID (-1)
35#define HOUSE_COOLDOWN (6)
36#define LIMIT_PER_PLAYER (3)
37
38#define SQL_HOST "127.0.0.1"
39#define SQL_USER "root"
40#define SQL_PASSWORD ""
41#define SQL_DBNAME "housedb"
42
43enum _:e_lockmodes
44{
45 LOCK_MODE_NOLOCK,
46 LOCK_MODE_PASSWORD,
47 LOCK_MODE_KEYS,
48 LOCK_MODE_OWNER
49}
50
51enum _:e_selectmodes
52{
53 SELECT_MODE_NONE,
54 SELECT_MODE_EDIT,
55 SELECT_MODE_SELL
56}
57
58enum _:e_dialogids
59{
60 DIALOG_BUY_HOUSE = 7500,
61 DIALOG_HOUSE_PASSWORD,
62 DIALOG_HOUSE_MENU,
63 DIALOG_HOUSE_NAME,
64 DIALOG_HOUSE_NEW_PASSWORD,
65 DIALOG_HOUSE_LOCK,
66 DIALOG_SAFE_MENU,
67 DIALOG_SAFE_TAKE,
68 DIALOG_SAFE_PUT,
69 DIALOG_GUNS_MENU,
70 DIALOG_GUNS_TAKE,
71 DIALOG_FURNITURE_MENU,
72 DIALOG_FURNITURE_BUY,
73 DIALOG_FURNITURE_SELL,
74 DIALOG_VISITORS_MENU,
75 DIALOG_VISITORS,
76 DIALOG_KEYS_MENU,
77 DIALOG_KEYS,
78 DIALOG_SAFE_HISTORY,
79 DIALOG_MY_KEYS,
80 DIALOG_BUY_HOUSE_FROM_OWNER,
81 DIALOG_SELL_HOUSE,
82 DIALOG_SELLING_PRICE
83}
84
85enum e_house
86{
87 Name[MAX_HOUSE_NAME],
88 Owner[MAX_PLAYER_NAME],
89 Password[MAX_HOUSE_PASSWORD],
90 Address[MAX_HOUSE_ADDRESS],
91 Float: houseX,
92 Float: houseY,
93 Float: houseZ,
94 Price,
95 SalePrice,
96 Interior,
97 LockMode,
98 SafeMoney,
99 LastEntered,
100 HouseLabel,
101 HousePickup,
102 HouseIcon,
103 bool: Save
104};
105
106enum e_interior
107{
108 IntName[MAX_INT_NAME],
109 Float: intX,
110 Float: intY,
111 Float: intZ,
112 intID,
113 intLabel,
114 intPickup
115};
116
117enum e_furnituredata
118{
119 ModelID,
120 Name[32],
121 Price
122};
123
124enum e_furniture
125{
126 SQLID,
127 HouseID,
128 ArrayID,
129 Float: furnitureX,
130 Float: furnitureY,
131 Float: furnitureZ,
132 Float: furnitureRX,
133 Float: furnitureRY,
134 Float: furnitureRZ
135};
136
137enum e_sazone
138{
139 SAZONE_NAME[28],
140 Float: SAZONE_AREA[6]
141};
142
143new
144 SQLHandle,
145 HouseTimer = -1,
146 HouseData[MAX_HOUSES][e_house],
147 Iterator: Houses<MAX_HOUSES>,
148 Iterator: HouseKeys[MAX_PLAYERS]<MAX_HOUSES>,
149 InHouse[MAX_PLAYERS] = {INVALID_HOUSE_ID, ...},
150 SelectMode[MAX_PLAYERS] = {SELECT_MODE_NONE, ...},
151 LastVisitedHouse[MAX_PLAYERS] = {INVALID_HOUSE_ID, ...},
152 ListPage[MAX_PLAYERS] = {0, ...},
153 bool: EditingFurniture[MAX_PLAYERS] = {false, ...};
154
155new
156 HouseInteriors[][e_interior] = {
157 // int name, x, y, z, intid
158 {"Interior 1", 2233.4900, -1114.4435, 1050.8828, 5},
159 {"Interior 2", 2196.3943, -1204.1359, 1049.0234, 6},
160 {"Interior 3", 2318.1616, -1026.3762, 1050.2109, 9},
161 {"Interior 4", 421.8333, 2536.9814, 10.0000, 10},
162 {"Interior 5", 225.5707, 1240.0643, 1082.1406, 2},
163 {"Interior 6", 2496.2087, -1692.3149, 1014.7422, 3},
164 {"Interior 7", 226.7545, 1114.4180, 1080.9952, 5},
165 {"Interior 8", 2269.9636, -1210.3275, 1047.5625, 10}
166 };
167
168new
169 HouseFurnitures[][e_furnituredata] = {
170 // modelid, furniture name, price
171 {3111, "Tervrajz", 500},
172 {2894, "Könyv", 20},
173 {2277, "Cicás kép", 100},
174 {1753, "Bőr kanapé", 150},
175 {1703, "Fekete kanapé", 200},
176 {1255, "Napozóágy", 75},
177 {19581, "Serpenyő", 10},
178 {19584, "Lábas", 12},
179 {19590, "Woozie kardja", 1000},
180 {19525, "Esküvői torta", 50},
181 {1742, "Könyvespolc", 80},
182 {1518, "TV 1", 130},
183 {19609, "Dobfelszerelés", 500},
184 {19787, "Kicsi LCD TV", 2000},
185 {19786, "Nagy LCD TV", 4000},
186 {2627, "Futópad", 130}
187 };
188
189new
190 SAZones[][e_sazone] = {
191 {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
192 {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
193 {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
194 {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
195 {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
196 {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
197 {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
198 {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
199 {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
200 {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
201 {"Vissza o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
202 {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
203 {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
204 {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
205 {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
206 {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
207 {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
208 {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
209 {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
210 {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
211 {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
212 {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
213 {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
214 {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
215 {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
216 {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
217 {"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
218 {"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
219 {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
220 {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
221 {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
222 {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
223 {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
224 {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
225 {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
226 {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
227 {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
228 {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
229 {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
230 {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
231 {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
232 {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
233 {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
234 {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
235 {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
236 {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
237 {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
238 {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
239 {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
240 {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
241 {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
242 {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
243 {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
244 {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
245 {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
246 {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
247 {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
248 {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
249 {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
250 {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
251 {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
252 {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
253 {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
254 {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
255 {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
256 {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
257 {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
258 {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
259 {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
260 {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
261 {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
262 {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
263 {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
264 {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
265 {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
266 {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
267 {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
268 {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
269 {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
270 {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
271 {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
272 {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
273 {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
274 {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
275 {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
276 {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
277 {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
278 {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
279 {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
280 {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
281 {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
282 {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
283 {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
284 {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
285 {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
286 {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
287 {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
288 {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
289 {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
290 {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
291 {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
292 {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
293 {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
294 {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
295 {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
296 {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
297 {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
298 {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
299 {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
300 {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
301 {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
302 {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
303 {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
304 {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
305 {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
306 {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
307 {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
308 {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
309 {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
310 {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
311 {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
312 {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
313 {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
314 {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
315 {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
316 {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
317 {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
318 {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
319 {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
320 {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
321 {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
322 {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
323 {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
324 {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
325 {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
326 {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
327 {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
328 {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
329 {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
330 {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
331 {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
332 {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
333 {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
334 {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
335 {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
336 {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
337 {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
338 {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
339 {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
340 {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
341 {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
342 {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
343 {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
344 {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
345 {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
346 {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
347 {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
348 {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
349 {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
350 {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
351 {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
352 {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
353 {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
354 {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
355 {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
356 {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
357 {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
358 {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
359 {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
360 {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
361 {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
362 {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
363 {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
364 {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
365 {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
366 {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
367 {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
368 {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
369 {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
370 {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
371 {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
372 {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
373 {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
374 {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
375 {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
376 {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
377 {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
378 {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
379 {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
380 {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
381 {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
382 {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
383 {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
384 {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
385 {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
386 {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
387 {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
388 {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
389 {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
390 {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
391 {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
392 {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
393 {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
394 {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
395 {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
396 {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
397 {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
398 {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
399 {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
400 {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
401 {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
402 {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
403 {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
404 {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
405 {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
406 {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
407 {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
408 {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
409 {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
410 {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
411 {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
412 {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
413 {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
414 {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
415 {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
416 {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
417 {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
418 {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
419 {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
420 {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
421 {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
422 {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
423 {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
424 {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
425 {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
426 {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
427 {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
428 {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
429 {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
430 {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
431 {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
432 {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
433 {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
434 {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
435 {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
436 {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
437 {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
438 {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
439 {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
440 {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
441 {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
442 {"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
443 {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
444 {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
445 {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
446 {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
447 {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
448 {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
449 {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
450 {"Randolph Industrial Estate", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
451 {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
452 {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
453 {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
454 {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
455 {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
456 {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
457 {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
458 {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
459 {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
460 {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
461 {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
462 {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
463 {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
464 {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
465 {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
466 {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
467 {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
468 {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
469 {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
470 {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
471 {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
472 {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
473 {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
474 {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
475 {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
476 {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
477 {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
478 {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
479 {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
480 {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
481 {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
482 {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
483 {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
484 {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
485 {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
486 {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
487 {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
488 {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
489 {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
490 {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
491 {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
492 {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
493 {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
494 {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
495 {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
496 {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
497 {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
498 {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
499 {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
500 {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
501 {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
502 {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
503 {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
504 {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
505 {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
506 {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
507 {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
508 {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
509 {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
510 {"The Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
511 {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
512 {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
513 {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
514 {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
515 {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
516 {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
517 {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
518 {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
519 {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
520 {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
521 {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
522 {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
523 {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
524 {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
525 {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
526 {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
527 {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
528 {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
529 {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
530 {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
531 {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
532 {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
533 {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
534 {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
535 {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
536 {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
537 {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
538 {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
539 {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
540 {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
541 {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
542 {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
543 {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
544 {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
545 {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
546 {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
547 {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
548 {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
549 {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
550 {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
551 {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
552 {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
553 {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
554 {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
555 {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
556 };
557
558new
559 LockNames[4][32] = {"{2ECC71}Nyitva", "{E74C3C}Jelszó szükséges", "{E74C3C}Kulcs szükséges", "{E74C3C}Csak Tulaj"},
560 TransactionNames[2][12] = {"{E74C3C}Ki", "{2ECC71}Be"};
561
562stock LoadHouseKeys(playerid)
563{
564 Iter_Clear(HouseKeys[playerid]);
565
566 new query[72];
567 mysql_format(SQLHandle, query, sizeof(query), "SELECT * FROM housekeys WHERE Player='%e'", Player_GetName(playerid));
568 mysql_tquery(SQLHandle, query, "GiveHouseKeys", "i", playerid);
569 return 1;
570}
571
572stock GetZoneName(Float: x, Float: y, Float: z)
573{
574 new zone[28];
575 for(new i = 0; i < sizeof(SAZones); i++)
576 {
577 if(x >= SAZones[i][SAZONE_AREA][0] && x <= SAZones[i][SAZONE_AREA][3] && y >= SAZones[i][SAZONE_AREA][1] && y <= SAZones[i][SAZONE_AREA][4] && z >= SAZones[i][SAZONE_AREA][2] && z <= SAZones[i][SAZONE_AREA][5])
578 {
579 strcat(zone, SAZones[i][SAZONE_NAME]);
580 return zone;
581 }
582 }
583
584 strcat(zone, "Ismeretlen");
585 return zone;
586}
587
588stock GetCityName(Float: x, Float: y, Float: z)
589{
590 new city[28];
591 for(new i = 356; i < sizeof(SAZones); i++)
592 {
593 if(x >= SAZones[i][SAZONE_AREA][0] && x <= SAZones[i][SAZONE_AREA][3] && y >= SAZones[i][SAZONE_AREA][1] && y <= SAZones[i][SAZONE_AREA][4] && z >= SAZones[i][SAZONE_AREA][2] && z <= SAZones[i][SAZONE_AREA][5])
594 {
595 strcat(city, SAZones[i][SAZONE_NAME]);
596 return city;
597 }
598 }
599
600 strcat(city, "San Andreas");
601 return city;
602}
603
604stock convertNumber(value)
605{
606 // http://forum.sa-mp.com/showthread.php?p=843781#post843781
607 new string[24];
608 format(string, sizeof(string), "%d", value);
609
610 for(new i = (strlen(string) - 3); i > (value < 0 ? 1 : 0) ; i -= 3)
611 {
612 strins(string[i], ",", 0);
613 }
614
615 return string;
616}
617
618stock RemovePlayerWeapon(playerid, weapon)
619{
620 new weapons[13], ammo[13];
621 for(new i; i < 13; i++) GetPlayerWeaponData(playerid, i, weapons[i], ammo[i]);
622 ResetPlayerWeapons(playerid);
623 for(new i; i < 13; i++)
624 {
625 if(weapons[i] == weapon) continue;
626 GivePlayerWeapon(playerid, weapons[i], ammo[i]);
627 }
628
629 return 1;
630}
631
632stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
633{
634 new Float: a;
635 GetPlayerPos(playerid, x, y, a);
636 GetPlayerFacingAngle(playerid, a);
637 if (GetPlayerVehicleID(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
638 x += (distance * floatsin(-a, degrees));
639 y += (distance * floatcos(-a, degrees));
640}
641
642stock Player_GetName(playerid)
643{
644 new name[MAX_PLAYER_NAME];
645 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
646 return name;
647}
648
649stock SendToHouse(playerid, id)
650{
651 if(!Iter_Contains(Houses, id)) return 0;
652 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
653 InHouse[playerid] = id;
654 SetPlayerVirtualWorld(playerid, id);
655 SetPlayerInterior(playerid, HouseInteriors[ HouseData[id][Interior] ][intID]);
656 SetPlayerPos(playerid, HouseInteriors[ HouseData[id][Interior] ][intX], HouseInteriors[ HouseData[id][Interior] ][intY], HouseInteriors[ HouseData[id][Interior] ][intZ]);
657
658 new string[128];
659 format(string, sizeof(string), "Üdvözlünk %s házában, a %s{FFFFFF}-ban/ben!", HouseData[id][Owner], HouseData[id][Name]);
660 SendClientMessage(playerid, 0xFFFFFFFF, string);
661
662 if(!strcmp(HouseData[id][Owner], Player_GetName(playerid)))
663 {
664 HouseData[id][LastEntered] = gettime();
665 HouseData[id][Save] = true;
666 SendClientMessage(playerid, 0xFFFFFFFF, "Használd a {3498DB}/house {FFFFFF}parancsot a menü megtekintéséhez.");
667 }
668
669 if(HouseData[id][LockMode] == LOCK_MODE_NOLOCK && LastVisitedHouse[playerid] != id)
670 {
671 new query[128];
672 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housevisitors SET HouseID=%d, Visitor='%e', Date=UNIX_TIMESTAMP()", id, Player_GetName(playerid));
673 mysql_tquery(SQLHandle, query, "", "");
674 LastVisitedHouse[playerid] = id;
675 }
676
677 return 1;
678}
679
680stock ShowHouseMenu(playerid)
681{
682 if(strcmp(HouseData[ InHouse[playerid] ][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
683
684 new string[256], id = InHouse[playerid];
685 format(string, sizeof(string), "Ház név: %s\nJelszó: %s\nZárva: %s\nHáz széf {2ECC71}($%s)\nBútorok\nFegyverek\nLátogatók\nKulcsok\nMindenki kirúgása\nHáz eladása", HouseData[id][Name], HouseData[id][Password], LockNames[ HouseData[id][LockMode] ], convertNumber(HouseData[id][SafeMoney]));
686 ShowPlayerDialog(playerid, DIALOG_HOUSE_MENU, DIALOG_STYLE_LIST, HouseData[id][Name], string, "Select", "Close");
687 return 1;
688}
689
690stock ResetHouse(id)
691{
692 if(!Iter_Contains(Houses, id)) return 0;
693 format(HouseData[id][Name], MAX_HOUSE_NAME, "Eladó ház");
694 format(HouseData[id][Owner], MAX_PLAYER_NAME, "-");
695 format(HouseData[id][Password], MAX_HOUSE_PASSWORD, "-");
696 HouseData[id][LockMode] = LOCK_MODE_NOLOCK;
697 HouseData[id][SalePrice] = HouseData[id][SafeMoney] = HouseData[id][LastEntered] = 0;
698 HouseData[id][Save] = true;
699
700 new label[200];
701 format(label, sizeof(label), "{2ECC71}Eladó ház (ID: %d)\n{FFFFFF}%s\n{F1C40F}Ãr: {2ECC71}$%s", id, HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][Price]));
702 UpdateDynamic3DTextLabelText(HouseData[id][HouseLabel], 0xFFFFFFFF, label);
703 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 1273);
704 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 31);
705
706 foreach(new i : Player)
707 {
708 if(InHouse[i] == id)
709 {
710 SetPVarInt(i, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
711 SetPlayerVirtualWorld(i, 0);
712 SetPlayerInterior(i, 0);
713 SetPlayerPos(i, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
714 InHouse[i] = INVALID_HOUSE_ID;
715 }
716
717 if(Iter_Contains(HouseKeys[i], id)) Iter_Remove(HouseKeys[i], id);
718 }
719
720 new query[64], data[e_furniture];
721 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM houseguns WHERE HouseID=%d", id);
722 mysql_tquery(SQLHandle, query, "", "");
723
724 for(new i, maxval = Streamer_GetUpperBound(STREAMER_TYPE_OBJECT); i <= maxval; ++i)
725 {
726 if(!IsValidDynamicObject(i)) continue;
727 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, i, E_STREAMER_EXTRA_ID, data);
728 if(data[SQLID] > 0 && data[HouseID] == id) DestroyDynamicObject(i);
729 }
730
731 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housefurnitures WHERE HouseID=%d", id);
732 mysql_tquery(SQLHandle, query, "", "");
733
734 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housevisitors WHERE HouseID=%d", id);
735 mysql_tquery(SQLHandle, query, "", "");
736
737 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housekeys WHERE HouseID=%d", id);
738 mysql_tquery(SQLHandle, query, "", "");
739
740 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housesafelogs WHERE HouseID=%d", id);
741 mysql_tquery(SQLHandle, query, "", "");
742 return 1;
743}
744
745stock SaveHouse(id)
746{
747 if(!Iter_Contains(Houses, id)) return 0;
748 new query[256];
749 mysql_format(SQLHandle, query, sizeof(query), "UPDATE houses SET HouseName='%e', HouseOwner='%e', HousePassword='%e', HouseSalePrice=%d, HouseLock=%d, HouseMoney=%d, LastEntered=%d WHERE ID=%d",
750 HouseData[id][Name], HouseData[id][Owner], HouseData[id][Password], HouseData[id][SalePrice], HouseData[id][LockMode], HouseData[id][SafeMoney], HouseData[id][LastEntered], id);
751 mysql_tquery(SQLHandle, query, "", "");
752 HouseData[id][Save] = false;
753 return 1;
754}
755
756stock UpdateHouseLabel(id)
757{
758 if(!Iter_Contains(Houses, id)) return 0;
759 new label[256];
760 if(!strcmp(HouseData[id][Owner], "-")) {
761 format(label, sizeof(label), "{2ECC71}Eladó ház (ID: %d)\n{FFFFFF}%s\n{F1C40F}Ãr: {2ECC71}$%s", id, HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][Price]));
762 }else{
763 if(HouseData[id][SalePrice] > 0) {
764 format(label, sizeof(label), "{E67E22}%s háza eladó (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n{F1C40F}Ãr: {2ECC71}$%s", HouseData[id][Owner], id, HouseData[id][Name], HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][SalePrice]));
765 }else{
766 format(label, sizeof(label), "{E67E22}%s háza (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n%s\n{FFFFFF}%s", HouseData[id][Owner], id, HouseData[id][Name], HouseInteriors[ HouseData[id][Interior] ][IntName], LockNames[ HouseData[id][LockMode] ], HouseData[id][Address]);
767 }
768 }
769
770 UpdateDynamic3DTextLabelText(HouseData[id][HouseLabel], 0xFFFFFFFF, label);
771 return 1;
772}
773
774stock House_PlayerInit(playerid)
775{
776 InHouse[playerid] = LastVisitedHouse[playerid] = INVALID_HOUSE_ID;
777 ListPage[playerid] = SelectMode[playerid] = SELECT_MODE_NONE;
778 EditingFurniture[playerid] = false;
779 LoadHouseKeys(playerid);
780 return 1;
781}
782
783stock OwnedHouses(playerid)
784{
785 #if LIMIT_PER_PLAYER != 0
786 new count;
787
788 foreach(new i : Houses) if(!strcmp(HouseData[i][Owner], Player_GetName(playerid), true)) count++;
789 return count;
790 #else
791 return 0;
792 #endif
793}
794
795forward ResetAndSaveHouses();
796forward LoadHouses();
797forward LoadFurnitures();
798forward GiveHouseKeys(playerid);
799forward HouseSaleMoney(playerid);
800
801public ResetAndSaveHouses()
802{
803 foreach(new i : Houses)
804 {
805 if(HouseData[i][LastEntered] > 0 && gettime()-HouseData[i][LastEntered] > 604800) ResetHouse(i);
806 if(HouseData[i][Save]) SaveHouse(i);
807 }
808
809 return 1;
810}
811
812public LoadHouses()
813{
814 new rows = cache_num_rows();
815 if(rows)
816 {
817 new id, loaded, for_sale, label[256];
818 while(loaded < rows)
819 {
820 id = cache_get_field_content_int(loaded, "ID");
821 cache_get_field_content(loaded, "HouseName", HouseData[id][Name], .max_len = MAX_HOUSE_NAME);
822 cache_get_field_content(loaded, "HouseOwner", HouseData[id][Owner], .max_len = MAX_PLAYER_NAME);
823 cache_get_field_content(loaded, "HousePassword", HouseData[id][Password], .max_len = MAX_HOUSE_PASSWORD);
824 HouseData[id][houseX] = cache_get_field_content_float(loaded, "HouseX");
825 HouseData[id][houseY] = cache_get_field_content_float(loaded, "HouseY");
826 HouseData[id][houseZ] = cache_get_field_content_float(loaded, "HouseZ");
827 HouseData[id][Price] = cache_get_field_content_int(loaded, "HousePrice");
828 HouseData[id][SalePrice] = cache_get_field_content_int(loaded, "HouseSalePrice");
829 HouseData[id][Interior] = cache_get_field_content_int(loaded, "HouseInterior");
830 HouseData[id][LockMode] = cache_get_field_content_int(loaded, "HouseLock");
831 HouseData[id][SafeMoney] = cache_get_field_content_int(loaded, "HouseMoney");
832 HouseData[id][LastEntered] = cache_get_field_content_int(loaded, "LastEntered");
833 format(HouseData[id][Address], MAX_HOUSE_ADDRESS, "%d, %s, %s", id, GetZoneName(HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]), GetCityName(HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]));
834
835 if(strcmp(HouseData[id][Owner], "-")) {
836 if(HouseData[id][SalePrice] > 0) {
837 for_sale = 1;
838 format(label, sizeof(label), "{E67E22}%s háza eladó (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n{F1C40F}Ãr: {2ECC71}$%s", HouseData[id][Owner], id, HouseData[id][Name], HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][SalePrice]));
839 }else{
840 for_sale = 0;
841 format(label, sizeof(label), "{E67E22}%s háza (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n%s\n{FFFFFF}%s", HouseData[id][Owner], id, HouseData[id][Name], HouseInteriors[ HouseData[id][Interior] ][IntName], LockNames[ HouseData[id][LockMode] ], HouseData[id][Address]);
842 }
843 }else{
844 for_sale = 1;
845 format(label, sizeof(label), "{2ECC71}Eladó ház (ID: %d)\n{FFFFFF}%s\n{F1C40F}Ãr: {2ECC71}$%s", id, HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][Price]));
846 }
847
848 HouseData[id][HousePickup] = CreateDynamicPickup((!for_sale) ? 19522 : 1273, 1, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
849 HouseData[id][HouseIcon] = CreateDynamicMapIcon(HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ], (!for_sale) ? 32 : 31, 0);
850 HouseData[id][HouseLabel] = CreateDynamic3DTextLabel(label, 0xFFFFFFFF, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]+0.35, 15.0, .testlos = 1);
851 Iter_Add(Houses, id);
852 loaded++;
853 }
854
855 printf(" [House System] %d ház betöltve.", loaded);
856 }
857
858 return 1;
859}
860
861public LoadFurnitures()
862{
863 new rows = cache_num_rows();
864 if(rows)
865 {
866 new id, loaded, data[e_furniture];
867 while(loaded < rows)
868 {
869 data[SQLID] = cache_get_field_content_int(loaded, "ID");
870 data[HouseID] = cache_get_field_content_int(loaded, "HouseID");
871 data[ArrayID] = cache_get_field_content_int(loaded, "FurnitureID");
872 data[furnitureX] = cache_get_field_content_float(loaded, "FurnitureX");
873 data[furnitureY] = cache_get_field_content_float(loaded, "FurnitureY");
874 data[furnitureZ] = cache_get_field_content_float(loaded, "FurnitureZ");
875 data[furnitureRX] = cache_get_field_content_float(loaded, "FurnitureRX");
876 data[furnitureRY] = cache_get_field_content_float(loaded, "FurnitureRY");
877 data[furnitureRZ] = cache_get_field_content_float(loaded, "FurnitureRZ");
878
879 id = CreateDynamicObject(
880 HouseFurnitures[ data[ArrayID] ][ModelID],
881 data[furnitureX], data[furnitureY], data[furnitureZ],
882 data[furnitureRX], data[furnitureRY], data[furnitureRZ],
883 cache_get_field_content_int(loaded, "FurnitureVW"), cache_get_field_content_int(loaded, "FurnitureInt")
884 );
885
886 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, id, E_STREAMER_EXTRA_ID, data);
887 loaded++;
888 }
889
890 printf(" [House System] %d bútor betöltve.", loaded);
891 }
892
893 return 1;
894}
895
896public GiveHouseKeys(playerid)
897{
898 if(!IsPlayerConnected(playerid)) return 1;
899 new rows = cache_num_rows();
900 if(rows)
901 {
902 new loaded;
903 while(loaded < rows)
904 {
905 Iter_Add(HouseKeys[playerid], cache_get_field_content_int(loaded, "HouseID"));
906 loaded++;
907 }
908 }
909
910 return 1;
911}
912
913public HouseSaleMoney(playerid)
914{
915 new rows = cache_num_rows();
916 if(rows)
917 {
918 new new_owner[MAX_PLAYER_NAME], price, string[128];
919 for(new i; i < rows; i++)
920 {
921 cache_get_field_content(i, "NewOwner", new_owner);
922 price = cache_get_field_content_int(i, "Price");
923
924 format(string, sizeof(string), "Eladtad a házad %s-nek/nak $%s-ért. (Tranzakció ID: #%d)", new_owner, convertNumber(price), cache_get_field_content_int(i, "ID"));
925 SendClientMessage(playerid, -1, string);
926 GivePlayerMoney(playerid, price);
927 }
928
929 new query[128];
930 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housesales WHERE OldOwner='%e'", Player_GetName(playerid));
931 mysql_tquery(SQLHandle, query, "", "");
932 }
933
934 return 1;
935}
936
937public OnFilterScriptInit()
938{
939 for(new i; i < MAX_HOUSES; ++i)
940 {
941 HouseData[i][HouseLabel] = INVALID_3DTEXT_ID;
942 HouseData[i][HousePickup] = -1;
943 HouseData[i][HouseIcon] = -1;
944 HouseData[i][Save] = false;
945 }
946
947 for(new i; i < sizeof(HouseInteriors); ++i)
948 {
949 HouseInteriors[i][intLabel] = CreateDynamic3DTextLabel("Kijárat", 0xE67E22FF, HouseInteriors[i][intX], HouseInteriors[i][intY], HouseInteriors[i][intZ]+0.35, 10.0, .testlos = 1, .interiorid = HouseInteriors[i][intID]);
950 HouseInteriors[i][intPickup] = CreateDynamicPickup(1318, 1, HouseInteriors[i][intX], HouseInteriors[i][intY], HouseInteriors[i][intZ], .interiorid = HouseInteriors[i][intID]);
951 }
952
953 Iter_Init(HouseKeys);
954 DisableInteriorEnterExits();
955 SQLHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_DBNAME, SQL_PASSWORD);
956 mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML);
957 if(mysql_errno() != 0) return print(" [House System] Nem lehetett csatlakozni a MySQL adatbázishoz.");
958
959 /* Create Tables */
960 new query[1024];
961 strcat(query, "CREATE TABLE IF NOT EXISTS `houses` (\
962 `ID` int(11) NOT NULL,\
963 `HouseName` varchar(48) NOT NULL default 'Eladó ház',\
964 `HouseOwner` varchar(24) NOT NULL default '-',\
965 `HousePassword` varchar(16) NOT NULL default '-',\
966 `HouseX` float NOT NULL,\
967 `HouseY` float NOT NULL,\
968 `HouseZ` float NOT NULL,\
969 `HousePrice` int(11) NOT NULL,\
970 `HouseInterior` tinyint(4) NOT NULL default '0',\
971 `HouseLock` tinyint(4) NOT NULL default '0',\
972 `HouseMoney` int(11) NOT NULL default '0',"
973 );
974
975 strcat(query, "`LastEntered` int(11) NOT NULL,\
976 PRIMARY KEY (`ID`),\
977 UNIQUE KEY `ID_2` (`ID`),\
978 KEY `ID` (`ID`)\
979 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
980 );
981
982 mysql_tquery(SQLHandle, query, "", "");
983
984 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housefurnitures` (\
985 `ID` int(11) NOT NULL auto_increment,\
986 `HouseID` int(11) NOT NULL,\
987 `FurnitureID` tinyint(11) NOT NULL,\
988 `FurnitureX` float NOT NULL,\
989 `FurnitureY` float NOT NULL,\
990 `FurnitureZ` float NOT NULL,\
991 `FurnitureRX` float NOT NULL,\
992 `FurnitureRY` float NOT NULL,\
993 `FurnitureRZ` float NOT NULL,\
994 `FurnitureVW` int(11) NOT NULL,\
995 `FurnitureInt` int(11) NOT NULL,\
996 PRIMARY KEY (`ID`)\
997 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
998
999 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `houseguns` (\
1000 `HouseID` int(11) NOT NULL,\
1001 `WeaponID` tinyint(4) NOT NULL,\
1002 `Ammo` int(11) NOT NULL,\
1003 UNIQUE KEY `HouseID_2` (`HouseID`,`WeaponID`),\
1004 KEY `HouseID` (`HouseID`),\
1005 CONSTRAINT `houseguns_ibfk_1` FOREIGN KEY (`HouseID`) REFERENCES `houses` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE\
1006 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;", "", "");
1007
1008 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housevisitors` (\
1009 `HouseID` int(11) NOT NULL,\
1010 `Visitor` varchar(24) NOT NULL,\
1011 `Date` int(11) NOT NULL\
1012 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1013
1014 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housekeys` (\
1015 `HouseID` int(11) NOT NULL,\
1016 `Player` varchar(24) NOT NULL,\
1017 `Date` int(11) NOT NULL\
1018 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1019
1020 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housesafelogs` (\
1021 `HouseID` int(11) NOT NULL,\
1022 `Type` int(11) NOT NULL,\
1023 `Amount` int(11) NOT NULL,\
1024 `Date` int(11) NOT NULL\
1025 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1026
1027 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housesales` (\
1028 `ID` int(11) NOT NULL AUTO_INCREMENT,\
1029 `OldOwner` varchar(24) NOT NULL,\
1030 `NewOwner` varchar(24) NOT NULL,\
1031 `Price` int(11) NOT NULL,\
1032 PRIMARY KEY (`ID`)\
1033 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1034
1035 // 1.3 update, add HouseSalePrice to the houses table
1036 if(!fexist("house_updated.txt"))
1037 {
1038 mysql_tquery(SQLHandle, "ALTER TABLE houses ADD HouseSalePrice INT(11) NOT NULL AFTER HousePrice");
1039
1040 new File: updateFile = fopen("house_updated.txt", io_append);
1041 if(updateFile)
1042 {
1043 fwrite(updateFile, "Ne töröld ezt a fájlt.");
1044 fclose(updateFile);
1045 }
1046 }
1047
1048 /* Loading & Stuff */
1049 mysql_tquery(SQLHandle, "SELECT * FROM houses", "LoadHouses", "");
1050 mysql_tquery(SQLHandle, "SELECT * FROM housefurnitures", "LoadFurnitures", "");
1051 foreach(new i : Player) House_PlayerInit(i);
1052
1053 HouseTimer = SetTimer("ResetAndSaveHouses", 10 * 60000, true);
1054 return 1;
1055}
1056
1057public OnFilterScriptExit()
1058{
1059 foreach(new i : Houses) if(HouseData[i][Save]) SaveHouse(i);
1060 KillTimer(HouseTimer);
1061 return 1;
1062}
1063
1064public OnPlayerConnect(playerid)
1065{
1066 House_PlayerInit(playerid);
1067 return 1;
1068}
1069
1070public OnPlayerSpawn(playerid)
1071{
1072 InHouse[playerid] = INVALID_HOUSE_ID;
1073
1074 new query[128];
1075 mysql_format(SQLHandle, query, sizeof(query), "SELECT * FROM housesales WHERE OldOwner='%e'", Player_GetName(playerid));
1076 mysql_tquery(SQLHandle, query, "HouseSaleMoney", "i", playerid);
1077 return 1;
1078}
1079
1080public OnPlayerPickUpDynamicPickup(playerid, pickupid)
1081{
1082 if(GetPVarInt(playerid, "HousePickupCooldown") < gettime())
1083 {
1084 if(InHouse[playerid] == INVALID_HOUSE_ID) {
1085 foreach(new i : Houses)
1086 {
1087 if(pickupid == HouseData[i][HousePickup])
1088 {
1089 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1090 SetPVarInt(playerid, "PickupHouseID", i);
1091
1092 if(!strcmp(HouseData[i][Owner], "-")) {
1093 new string[64];
1094 format(string, sizeof(string), "Eladó ház!\n\nÃr: {2ECC71}$%s", convertNumber(HouseData[i][Price]));
1095 ShowPlayerDialog(playerid, DIALOG_BUY_HOUSE, DIALOG_STYLE_MSGBOX, "Eladó ház", string, "Megveszem", "Bezárás");
1096 }else{
1097 if(HouseData[i][SalePrice] > 0 && strcmp(HouseData[i][Owner], Player_GetName(playerid)))
1098 {
1099 new string[64];
1100 format(string, sizeof(string), "Eladó ház!\n\nÃr: {2ECC71}$%s", convertNumber(HouseData[i][SalePrice]));
1101 ShowPlayerDialog(playerid, DIALOG_BUY_HOUSE_FROM_OWNER, DIALOG_STYLE_MSGBOX, "Eladó ház", string, "Megveszem", "Bezárás");
1102 return 1;
1103 }
1104
1105 switch(HouseData[i][LockMode])
1106 {
1107 case LOCK_MODE_NOLOCK: SendToHouse(playerid, i);
1108 case LOCK_MODE_PASSWORD: ShowPlayerDialog(playerid, DIALOG_HOUSE_PASSWORD, DIALOG_STYLE_INPUT, "Ház jelszó", "Ez a ház jelszóval van védve.\n\nÃrd be a ház jelszavát:", "Kész", "Bezárás");
1109 case LOCK_MODE_KEYS:
1110 {
1111 new gotkeys = Iter_Contains(HouseKeys[playerid], i);
1112 if(!gotkeys) if(!strcmp(HouseData[i][Owner], Player_GetName(playerid))) gotkeys = 1;
1113
1114 if(gotkeys) {
1115 SendToHouse(playerid, i);
1116 }else{
1117 SendClientMessage(playerid, 0xE74C3CFF, "Nincs kulcsod a házhoz, nem tudsz bemenni.");
1118 }
1119 }
1120
1121 case LOCK_MODE_OWNER:
1122 {
1123 if(!strcmp(HouseData[i][Owner], Player_GetName(playerid))) {
1124 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1125 SendToHouse(playerid, i);
1126 }else{
1127 SendClientMessage(playerid, 0xE74C3CFF, "Sajnálom, csak a tulaj mehet be a házba.");
1128 }
1129 }
1130 }
1131 }
1132
1133 return 1;
1134 }
1135 }
1136 }else{
1137 for(new i; i < sizeof(HouseInteriors); ++i)
1138 {
1139 if(pickupid == HouseInteriors[i][intPickup])
1140 {
1141 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1142 SetPlayerVirtualWorld(playerid, 0);
1143 SetPlayerInterior(playerid, 0);
1144 SetPlayerPos(playerid, HouseData[ InHouse[playerid] ][houseX], HouseData[ InHouse[playerid] ][houseY], HouseData[ InHouse[playerid] ][houseZ]);
1145 InHouse[playerid] = INVALID_HOUSE_ID;
1146 return 1;
1147 }
1148 }
1149 }
1150 }
1151
1152 return 1;
1153}
1154
1155public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
1156{
1157 if(dialogid == DIALOG_BUY_HOUSE)
1158 {
1159 if(!response) return 1;
1160 new id = GetPVarInt(playerid, "PickupHouseID");
1161 if(!IsPlayerInRangeOfPoint(playerid, 2.0, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ])) return SendClientMessage(playerid, 0xE74C3CFF, "You're not near any house.");
1162 #if LIMIT_PER_PLAYER > 0
1163 if(OwnedHouses(playerid) + 1 > LIMIT_PER_PLAYER) return SendClientMessage(playerid, 0xE74C3CFF, "Nem tudsz több házat vásárolni.");
1164 #endif
1165 if(HouseData[id][Price] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a házat nem engedheted meg magadnak.");
1166 if(strcmp(HouseData[id][Owner], "-")) return SendClientMessage(playerid, 0xE74C3CFF, "Már valaki birtokolja ezt a házat.");
1167 GivePlayerMoney(playerid, -HouseData[id][Price]);
1168 GetPlayerName(playerid, HouseData[id][Owner], MAX_PLAYER_NAME);
1169 HouseData[id][LastEntered] = gettime();
1170 HouseData[id][Save] = true;
1171
1172 UpdateHouseLabel(id);
1173 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 19522);
1174 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 32);
1175 SendToHouse(playerid, id);
1176 return 1;
1177 }
1178
1179 if(dialogid == DIALOG_HOUSE_PASSWORD)
1180 {
1181 if(!response) return 1;
1182 new id = GetPVarInt(playerid, "PickupHouseID");
1183 if(!IsPlayerInRangeOfPoint(playerid, 2.0, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ])) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy ház közelében.");
1184 if(!(1 <= strlen(inputtext) <= MAX_HOUSE_PASSWORD)) return ShowPlayerDialog(playerid, DIALOG_HOUSE_PASSWORD, DIALOG_STYLE_INPUT, "Ház jelszó", "Ez a ház jelszóval van védve.\n\nÃrd be a ház jelszavát:\n\n{E74C3C}A jelszó vagy túl rövid vagy túl hosszú.", "Próbáld úrja", "Bezárás");
1185 if(strcmp(HouseData[id][Password], inputtext)) return ShowPlayerDialog(playerid, DIALOG_HOUSE_PASSWORD, DIALOG_STYLE_INPUT, "Ház jelszó", "Ez a ház jelszóval van védve.\n\nÃrd be a ház jelszavát:\n\n{E74C3C}Rossz jelszó.", "Próbáld úrja", "Bezárás");
1186 SendToHouse(playerid, id);
1187 return 1;
1188 }
1189
1190 if(dialogid == DIALOG_HOUSE_MENU)
1191 {
1192 if(!response) return 1;
1193 new id = InHouse[playerid];
1194 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1195 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd ez a ház.");
1196
1197 if(listitem == 0) ShowPlayerDialog(playerid, DIALOG_HOUSE_NAME, DIALOG_STYLE_INPUT, "Ház név", "Ãrd be a ház új nevét:", "Változtat", "Vissza");
1198 if(listitem == 1) ShowPlayerDialog(playerid, DIALOG_HOUSE_NEW_PASSWORD, DIALOG_STYLE_INPUT, "Ház jelszó", "Ãrd be a ház új jelszavát:", "Változtat", "Vissza");
1199 if(listitem == 2) ShowPlayerDialog(playerid, DIALOG_HOUSE_LOCK, DIALOG_STYLE_LIST, "Ház zárás", "Nyitva\nJelszóval védve\nCsak kulcs\nCsak tulaj", "Változtat", "Vissza");
1200 if(listitem == 3)
1201 {
1202 if(HouseData[id][SalePrice] > 0)
1203 {
1204 SendClientMessage(playerid, 0xE74C3CFF, "Ezt a lehetÅ‘séget nem használhatod, amÃg a ház eladó.");
1205 return ShowHouseMenu(playerid);
1206 }
1207
1208 new string[144];
1209 format(string, sizeof(string), "Pénz kivétel {2ECC71}($%s)\nPénz berakás {2ECC71}($%s)\nSzéf történet\nSzéf történet törlése", convertNumber(HouseData[id][SafeMoney]), convertNumber(GetPlayerMoney(playerid)));
1210 ShowPlayerDialog(playerid, DIALOG_SAFE_MENU, DIALOG_STYLE_LIST, "Ház széf", string, "Választ", "Vissza");
1211 }
1212
1213 if(listitem == 4)
1214 {
1215 if(HouseData[id][SalePrice] > 0)
1216 {
1217 SendClientMessage(playerid, 0xE74C3CFF, "Ezt a lehetÅ‘séget nem használhatod, amÃg a ház eladó.");
1218 return ShowHouseMenu(playerid);
1219 }
1220
1221 ShowPlayerDialog(playerid, DIALOG_FURNITURE_MENU, DIALOG_STYLE_LIST, "Bútorok", "Bútor vétel\nBútor szerkesztés\nBútor eladása\nÖsszes bútor eladása", "Választ", "Vissza");
1222 }
1223
1224 if(listitem == 5) ShowPlayerDialog(playerid, DIALOG_GUNS_MENU, DIALOG_STYLE_LIST, "Fegyverek", "Fegyver berakás\nFegyver kivétel", "Választ", "Vissza");
1225 if(listitem == 6)
1226 {
1227 ListPage[playerid] = 0;
1228 ShowPlayerDialog(playerid, DIALOG_VISITORS_MENU, DIALOG_STYLE_LIST, "Látogatók", "Látogató történet\nLátogató történet törlése", "Választ", "Vissza");
1229 }
1230
1231 if(listitem == 7)
1232 {
1233 ListPage[playerid] = 0;
1234 ShowPlayerDialog(playerid, DIALOG_KEYS_MENU, DIALOG_STYLE_LIST, "Kulcsok", "Kulcs tulajdonosok\nKulcsok törlése", "Választ", "Vissza");
1235 }
1236
1237 if(listitem == 8)
1238 {
1239 new string[128];
1240 format(string, sizeof(string), "Ház tulajdonos %s mindenkit kirúgott a házból.", HouseData[id][Owner]);
1241
1242 foreach(new i : Player)
1243 {
1244 if(i == playerid) continue;
1245 if(InHouse[i] == id)
1246 {
1247 SetPVarInt(i, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1248 SetPlayerVirtualWorld(i, 0);
1249 SetPlayerInterior(i, 0);
1250 SetPlayerPos(i, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
1251 InHouse[i] = INVALID_HOUSE_ID;
1252 SendClientMessage(i, -1, string);
1253 }
1254 }
1255
1256 SendClientMessage(playerid, -1, "Mindenkit kirúgtál a házból.");
1257 }
1258
1259 if(listitem == 9)
1260 {
1261 new string[128];
1262 format(string, sizeof(string), "Azonnali eladás\t{2ECC71}$%s\n%s", convertNumber(floatround(HouseData[id][Price]*0.85)), (HouseData[id][SalePrice] > 0) ? ("Ház eladásának visszavonása") : ("Ház eladása"));
1263 ShowPlayerDialog(playerid, DIALOG_SELL_HOUSE, DIALOG_STYLE_TABLIST, "Ház eladás", string, "Választ", "Vissza");
1264 }
1265
1266 return 1;
1267 }
1268
1269 if(dialogid == DIALOG_HOUSE_NAME)
1270 {
1271 if(!response) return ShowHouseMenu(playerid);
1272 new id = InHouse[playerid];
1273 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1274 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1275 if(!(1 <= strlen(inputtext) <= MAX_HOUSE_NAME)) return ShowPlayerDialog(playerid, DIALOG_HOUSE_NAME, DIALOG_STYLE_INPUT, "Ház név", "Ãrd be a ház új nevét:\n\n{E74C3C}A név vagy túl hosszú vagy túl rövid.", "Változtat", "Vissza");
1276 format(HouseData[id][Name], MAX_HOUSE_NAME, "%s", inputtext);
1277 HouseData[id][Save] = true;
1278
1279 UpdateHouseLabel(id);
1280 ShowHouseMenu(playerid);
1281 return 1;
1282 }
1283
1284 if(dialogid == DIALOG_HOUSE_NEW_PASSWORD)
1285 {
1286 if(!response) return ShowHouseMenu(playerid);
1287 new id = InHouse[playerid];
1288 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1289 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1290 if(!(1 <= strlen(inputtext) <= MAX_HOUSE_PASSWORD)) return ShowPlayerDialog(playerid, DIALOG_HOUSE_NEW_PASSWORD, DIALOG_STYLE_INPUT, "Ház Jelszó", "Ãrd be a ház új jelszavát:\n\n{E74C3C}A jelszó vagy túl hosszú vagy túl rövid.", "Változtat", "Vissza");
1291 format(HouseData[id][Password], MAX_HOUSE_PASSWORD, "%s", inputtext);
1292 HouseData[id][Save] = true;
1293 ShowHouseMenu(playerid);
1294 return 1;
1295 }
1296
1297 if(dialogid == DIALOG_HOUSE_LOCK)
1298 {
1299 if(!response) return ShowHouseMenu(playerid);
1300 new id = InHouse[playerid];
1301 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1302 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1303 HouseData[id][LockMode] = listitem;
1304 HouseData[id][Save] = true;
1305
1306 UpdateHouseLabel(id);
1307 ShowHouseMenu(playerid);
1308 return 1;
1309 }
1310
1311 if(dialogid == DIALOG_SAFE_MENU)
1312 {
1313 if(!response) return ShowHouseMenu(playerid);
1314 new id = InHouse[playerid];
1315 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1316 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1317 if(HouseData[id][SalePrice] > 0) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a lehetÅ‘séget nem használhatod, amÃg a ház eladó.");
1318 if(listitem == 0) ShowPlayerDialog(playerid, DIALOG_SAFE_TAKE, DIALOG_STYLE_INPUT, "Széf: Pénz kivétel", "Ãrd be az összeget, amit ki szeretnél venni a széfbÅ‘l:", "Kivesz", "Vissza");
1319 if(listitem == 1) ShowPlayerDialog(playerid, DIALOG_SAFE_PUT, DIALOG_STYLE_INPUT, "Széf: Pénz berakás", "Ãrd be az összeget, amit be szeretnél rakni a széfbe:", "Berak", "Vissza");
1320 if(listitem == 2)
1321 {
1322 ListPage[playerid] = 0;
1323
1324 new query[200], Cache: safelog;
1325 mysql_format(SQLHandle, query, sizeof(query), "SELECT Type, Amount, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as TransactionDate FROM housesafelogs WHERE HouseID=%d ORDER BY Date DESC LIMIT 0, 15", id);
1326 safelog = mysql_query(SQLHandle, query);
1327 new rows = cache_num_rows();
1328 if(rows) {
1329 new list[1024], date[20];
1330 format(list, sizeof(list), "Action\tDate\n");
1331 for(new i; i < rows; ++i)
1332 {
1333 cache_get_field_content(i, "TransactionDate", date);
1334 format(list, sizeof(list), "%s%s $%s\t{FFFFFF}%s\n", list, TransactionNames[ cache_get_field_content_int(i, "Type") ], convertNumber(cache_get_field_content_int(i, "Amount")), date);
1335 }
1336
1337 ShowPlayerDialog(playerid, DIALOG_SAFE_HISTORY, DIALOG_STYLE_TABLIST_HEADERS, "Széf történet (1. oldal)", list, "Következő", "Előző");
1338 }else{
1339 SendClientMessage(playerid, 0xE74C3CFF, "Nincsen széf történet.");
1340 }
1341
1342 cache_delete(safelog);
1343 }
1344
1345 if(listitem == 3)
1346 {
1347 new query[64];
1348 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housesafelogs WHERE HouseID=%d", id);
1349 mysql_tquery(SQLHandle, query, "", "");
1350 ShowHouseMenu(playerid);
1351 }
1352
1353 return 1;
1354 }
1355
1356 if(dialogid == DIALOG_SAFE_TAKE)
1357 {
1358 if(!response) return ShowHouseMenu(playerid);
1359 new id = InHouse[playerid];
1360 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1361 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1362 if(HouseData[id][SalePrice] > 0) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a lehetÅ‘séget nem használhatod, amÃg a ház eladó.");
1363 new amount = strval(inputtext);
1364 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, DIALOG_SAFE_TAKE, DIALOG_STYLE_INPUT, "Széf: Pénz kivétel", "Ãrd be az összeget, amit ki szeretnél venni a széfbÅ‘l:\n\n{E74C3C}Hibás összeg. Egyszerre $1 - $10,000,000 között vehetsz ki a széfbÅ‘l.", "Kivesz", "Vissza");
1365 if(amount > HouseData[id][SafeMoney]) return ShowPlayerDialog(playerid, DIALOG_SAFE_TAKE, DIALOG_STYLE_INPUT, "Széf: Pénz kivétel", "Ãrd be az összeget, amit ki szeretnél venni a széfbÅ‘l:\n\n{E74C3C}Nincs ennyi pénz a széfedben.", "Kivesz", "Vissza");
1366 new query[128];
1367 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housesafelogs SET HouseID=%d, Type=0, Amount=%d, Date=UNIX_TIMESTAMP()", id, amount);
1368 mysql_tquery(SQLHandle, query, "", "");
1369
1370 GivePlayerMoney(playerid, amount);
1371 HouseData[id][SafeMoney] -= amount;
1372 HouseData[id][Save] = true;
1373 ShowHouseMenu(playerid);
1374 return 1;
1375 }
1376
1377 if(dialogid == DIALOG_SAFE_PUT)
1378 {
1379 if(!response) return ShowHouseMenu(playerid);
1380 new id = InHouse[playerid];
1381 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1382 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1383 new amount = strval(inputtext);
1384 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, DIALOG_SAFE_PUT, DIALOG_STYLE_INPUT, "Széf: Pénz berakás", "Ãrd be az összeget, amit be szeretnél rakni a széfbe:\n\n{E74C3C}Hibás összeg. Egyszerre $1 - $10,000,000 között rakhatsz be a széfbe.", "Berak", "Vissza");
1385 if(amount > GetPlayerMoney(playerid)) return ShowPlayerDialog(playerid, DIALOG_SAFE_PUT, DIALOG_STYLE_INPUT, "Széf: Pénz berakás", "Ãrd be az összeget, amit be szeretnél rakni a széfbe:\n\n{E74C3C}Nincs nálad ennyi készpénz.", "Berak", "Vissza");
1386 new query[128];
1387 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housesafelogs SET HouseID=%d, Type=1, Amount=%d, Date=UNIX_TIMESTAMP()", id, amount);
1388 mysql_tquery(SQLHandle, query, "", "");
1389
1390 GivePlayerMoney(playerid, -amount);
1391 HouseData[id][SafeMoney] += amount;
1392 HouseData[id][Save] = true;
1393 ShowHouseMenu(playerid);
1394 return 1;
1395 }
1396
1397 if(dialogid == DIALOG_GUNS_MENU)
1398 {
1399 if(!response) return ShowHouseMenu(playerid);
1400 new id = InHouse[playerid];
1401 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1402 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1403 if(listitem == 0)
1404 {
1405 if(GetPlayerWeapon(playerid) == 0) return SendClientMessage(playerid, 0xE74C3CFF, "Nem rakhatod be az öklödet a széfbe.");
1406 new query[128], weapon = GetPlayerWeapon(playerid), ammo = GetPlayerAmmo(playerid);
1407 RemovePlayerWeapon(playerid, weapon);
1408 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO houseguns VALUES (%d, %d, %d) ON DUPLICATE KEY UPDATE Ammo=Ammo+%d", id, weapon, ammo, ammo);
1409 mysql_tquery(SQLHandle, query, "", "");
1410 ShowHouseMenu(playerid);
1411 }
1412
1413 if(listitem == 1)
1414 {
1415 new query[80], Cache: weapons;
1416 mysql_format(SQLHandle, query, sizeof(query), "SELECT WeaponID, Ammo FROM houseguns WHERE HouseID=%d ORDER BY WeaponID ASC", id);
1417 weapons = mysql_query(SQLHandle, query);
1418 new rows = cache_num_rows();
1419 if(rows) {
1420 new list[512], weapname[32];
1421 format(list, sizeof(list), "#\tFegyver név\tLőszer\n");
1422 for(new i; i < rows; ++i)
1423 {
1424 GetWeaponName(cache_get_field_content_int(i, "WeaponID"), weapname, sizeof(weapname));
1425 format(list, sizeof(list), "%s%d\t%s\t%s\n", list, i+1, weapname, convertNumber(cache_get_field_content_int(i, "Ammo")));
1426 }
1427
1428 ShowPlayerDialog(playerid, DIALOG_GUNS_TAKE, DIALOG_STYLE_TABLIST_HEADERS, "Ház fegyverek", list, "Take", "Vissza");
1429 }else{
1430 SendClientMessage(playerid, 0xE74C3CFF, "Nincs fegyver a házban.");
1431 }
1432
1433 cache_delete(weapons);
1434 }
1435
1436 return 1;
1437 }
1438
1439 if(dialogid == DIALOG_GUNS_TAKE)
1440 {
1441 if(!response) return ShowHouseMenu(playerid);
1442 new id = InHouse[playerid];
1443 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1444 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1445 new query[96], Cache: weapon;
1446 mysql_format(SQLHandle, query, sizeof(query), "SELECT WeaponID, Ammo FROM houseguns WHERE HouseID=%d ORDER BY WeaponID ASC LIMIT %d, 1", id, listitem);
1447 weapon = mysql_query(SQLHandle, query);
1448 new rows = cache_num_rows();
1449 if(rows) {
1450 new string[64], weapname[32], weaponid = cache_get_field_content_int(0, "WeaponID");
1451 GetWeaponName(weaponid, weapname, sizeof(weapname));
1452 GivePlayerWeapon(playerid, weaponid, cache_get_field_content_int(0, "Ammo"));
1453 format(string, sizeof(string), "Kivettél a házből egy %s-t.", weapname);
1454 SendClientMessage(playerid, 0xFFFFFFFF, string);
1455 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM houseguns WHERE HouseID=%d AND WeaponID=%d", id, weaponid);
1456 mysql_tquery(SQLHandle, query, "", "");
1457 }else{
1458 SendClientMessage(playerid, 0xE74C3CFF, "Nincs fegyver a házban.");
1459 }
1460
1461 cache_delete(weapon);
1462 return 1;
1463 }
1464
1465 if(dialogid == DIALOG_FURNITURE_MENU)
1466 {
1467 if(!response) return ShowHouseMenu(playerid);
1468 new id = InHouse[playerid];
1469 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1470 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1471 if(HouseData[id][SalePrice] > 0) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a lehetÅ‘séget nem használhatod, amÃg a ház eladó.");
1472
1473 if(listitem == 0)
1474 {
1475 new list[512];
1476 format(list, sizeof(list), "#\tBútor név\tÃr\n");
1477 for(new i; i < sizeof(HouseFurnitures); ++i)
1478 {
1479 format(list, sizeof(list), "%s%d\t%s\t$%s\n", list, i+1, HouseFurnitures[i][Name], convertNumber(HouseFurnitures[i][Price]));
1480 }
1481
1482 ShowPlayerDialog(playerid, DIALOG_FURNITURE_BUY, DIALOG_STYLE_TABLIST_HEADERS, "Bútor vétel", list, "Megvesz", "Vissza");
1483 }
1484
1485 if(listitem == 1)
1486 {
1487 SelectMode[playerid] = SELECT_MODE_EDIT;
1488 SelectObject(playerid);
1489 SendClientMessage(playerid, 0xFFFFFFFF, "Kattints arra a bútorra, amit szerkeszteni szeretnél.");
1490 }
1491
1492 if(listitem == 2)
1493 {
1494 SelectMode[playerid] = SELECT_MODE_SELL;
1495 SelectObject(playerid);
1496 SendClientMessage(playerid, 0xFFFFFFFF, "Kattints arra a bútorra, amit elszeretnél adni.");
1497 }
1498
1499 if(listitem == 3)
1500 {
1501 new money, sold, data[e_furniture], query[64];
1502 for(new i; i < Streamer_GetUpperBound(STREAMER_TYPE_OBJECT); ++i)
1503 {
1504 if(!IsValidDynamicObject(i)) continue;
1505 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, i, E_STREAMER_EXTRA_ID, data);
1506 if(data[SQLID] > 0 && data[HouseID] == id)
1507 {
1508 sold++;
1509 money += HouseFurnitures[ data[ArrayID] ][Price];
1510 DestroyDynamicObject(i);
1511 }
1512 }
1513
1514 new string[64];
1515 format(string, sizeof(string), "Eladva %d bútor összesen $%s-ért.", sold, convertNumber(money));
1516 SendClientMessage(playerid, -1, string);
1517 GivePlayerMoney(playerid, money);
1518
1519 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housefurnitures WHERE HouseID=%d", id);
1520 mysql_tquery(SQLHandle, query, "", "");
1521 }
1522
1523 return 1;
1524 }
1525
1526 if(dialogid == DIALOG_FURNITURE_BUY)
1527 {
1528 if(!response) return ShowHouseMenu(playerid);
1529 new id = InHouse[playerid];
1530 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1531 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1532 if(HouseData[id][SalePrice] > 0) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a lehetÅ‘séget nem használhatod, amÃg a ház eladó.");
1533 if(HouseFurnitures[listitem][Price] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a bútort nem engedheted meg magadnak.");
1534 GivePlayerMoney(playerid, -HouseFurnitures[listitem][Price]);
1535 new Float: x, Float: y, Float: z;
1536 GetPlayerPos(playerid, x, y, z);
1537 GetXYInFrontOfPlayer(playerid, x, y, 3.0);
1538 new objectid = CreateDynamicObject(HouseFurnitures[listitem][ModelID], x, y, z, 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)), query[256];
1539 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housefurnitures SET HouseID=%d, FurnitureID=%d, FurnitureX=%f, FurnitureY=%f, FurnitureZ=%f, FurnitureVW=%d, FurnitureInt=%d", id, listitem, x, y, z, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
1540 new Cache: add = mysql_query(SQLHandle, query), data[e_furniture];
1541 data[SQLID] = cache_insert_id();
1542 data[HouseID] = id;
1543 data[ArrayID] = listitem;
1544 data[furnitureX] = x;
1545 data[furnitureY] = y;
1546 data[furnitureZ] = z;
1547 data[furnitureRX] = 0.0;
1548 data[furnitureRY] = 0.0;
1549 data[furnitureRZ] = 0.0;
1550 cache_delete(add);
1551 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1552
1553 EditingFurniture[playerid] = true;
1554 EditDynamicObject(playerid, objectid);
1555 return 1;
1556 }
1557
1558 if(dialogid == DIALOG_FURNITURE_SELL)
1559 {
1560 if(!response) return 1;
1561 new id = InHouse[playerid];
1562 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1563 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1564 if(HouseData[id][SalePrice] > 0) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a lehetÅ‘séget nem használhatod, amÃg a ház eladó.");
1565 new objectid = GetPVarInt(playerid, "SelectedFurniture"), query[64], data[e_furniture];
1566 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1567 GivePlayerMoney(playerid, HouseFurnitures[ data[ArrayID] ][Price]);
1568 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housefurnitures WHERE ID=%d", data[SQLID]);
1569 mysql_tquery(SQLHandle, query, "", "");
1570 DestroyDynamicObject(objectid);
1571 DeletePVar(playerid, "SelectedFurniture");
1572 return 1;
1573 }
1574
1575 if(dialogid == DIALOG_VISITORS_MENU)
1576 {
1577 if(!response) return ShowHouseMenu(playerid);
1578 new id = InHouse[playerid];
1579 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1580 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1581 if(listitem == 0)
1582 {
1583 new query[200], Cache: visitors;
1584 mysql_format(SQLHandle, query, sizeof(query), "SELECT Visitor, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as VisitDate FROM housevisitors WHERE HouseID=%d ORDER BY Date DESC LIMIT 0, 15", id);
1585 visitors = mysql_query(SQLHandle, query);
1586 new rows = cache_num_rows();
1587 if(rows) {
1588 new list[1024], visitor_name[MAX_PLAYER_NAME], visit_date[20];
1589 format(list, sizeof(list), "Látogató neve\tMikor\n");
1590 for(new i; i < rows; ++i)
1591 {
1592 cache_get_field_content(i, "Visitor", visitor_name);
1593 cache_get_field_content(i, "VisitDate", visit_date);
1594 format(list, sizeof(list), "%s%s\t%s\n", list, visitor_name, visit_date);
1595 }
1596
1597 ShowPlayerDialog(playerid, DIALOG_VISITORS, DIALOG_STYLE_TABLIST_HEADERS, "Ház látogatói (1. oldal)", list, "Következő", "Előző");
1598 }else{
1599 SendClientMessage(playerid, 0xE74C3CFF, "Még nem volt látogatód.");
1600 }
1601
1602 cache_delete(visitors);
1603 }
1604
1605 if(listitem == 1)
1606 {
1607 new query[64];
1608 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housevisitors WHERE HouseID=%d", id);
1609 mysql_tquery(SQLHandle, query, "", "");
1610 ShowHouseMenu(playerid);
1611 }
1612
1613 return 1;
1614 }
1615
1616 if(dialogid == DIALOG_VISITORS)
1617 {
1618 if(!response) {
1619 ListPage[playerid]--;
1620 if(ListPage[playerid] < 0)
1621 {
1622 ListPage[playerid] = 0;
1623 ShowHouseMenu(playerid);
1624 return 1;
1625 }
1626 }else{
1627 ListPage[playerid]++;
1628 }
1629
1630 new id = InHouse[playerid];
1631 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1632 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1633 new query[200], Cache: visitors;
1634 mysql_format(SQLHandle, query, sizeof(query), "SELECT Visitor, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as VisitDate FROM housevisitors WHERE HouseID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1635 visitors = mysql_query(SQLHandle, query);
1636 new rows = cache_num_rows();
1637 if(rows) {
1638 new list[1024], visitor_name[MAX_PLAYER_NAME], visit_date[20];
1639 format(list, sizeof(list), "Látogató neve\tMikor\n");
1640 for(new i; i < rows; ++i)
1641 {
1642 cache_get_field_content(i, "Visitor", visitor_name);
1643 cache_get_field_content(i, "VisitDate", visit_date);
1644 format(list, sizeof(list), "%s%s\t%s\n", list, visitor_name, visit_date);
1645 }
1646
1647 new title[32];
1648 format(title, sizeof(title), "Ház látogatói (%d. oldal)", ListPage[playerid]+1);
1649 ShowPlayerDialog(playerid, DIALOG_VISITORS, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Következő", "Előző");
1650 }else{
1651 SendClientMessage(playerid, 0xE74C3CFF, "Még nem volt látogatód.");
1652 ListPage[playerid] = 0;
1653 ShowHouseMenu(playerid);
1654 }
1655
1656 cache_delete(visitors);
1657 return 1;
1658 }
1659
1660 if(dialogid == DIALOG_KEYS_MENU)
1661 {
1662 if(!response) return ShowHouseMenu(playerid);
1663 new id = InHouse[playerid];
1664 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1665 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1666 if(listitem == 0)
1667 {
1668 new query[200], Cache: keyowners;
1669 mysql_format(SQLHandle, query, sizeof(query), "SELECT Player, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM housekeys WHERE HouseID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1670 keyowners = mysql_query(SQLHandle, query);
1671 new rows = cache_num_rows();
1672 if(rows) {
1673 new list[1024], key_name[MAX_PLAYER_NAME], key_date[20];
1674 format(list, sizeof(list), "Kulcs tulaj\tKulcs odaadva\n");
1675 for(new i; i < rows; ++i)
1676 {
1677 cache_get_field_content(i, "Player", key_name);
1678 cache_get_field_content(i, "KeyDate", key_date);
1679 format(list, sizeof(list), "%s%s\t%s\n", list, key_name, key_date);
1680 }
1681
1682 ShowPlayerDialog(playerid, DIALOG_KEYS, DIALOG_STYLE_TABLIST_HEADERS, "Kulcs tulajok (1. oldal)", list, "Következő", "Előző");
1683 }else{
1684 SendClientMessage(playerid, 0xE74C3CFF, "Nincsen kulcs tulaj.");
1685 }
1686
1687 cache_delete(keyowners);
1688 }
1689
1690 if(listitem == 1)
1691 {
1692 foreach(new i : Player)
1693 {
1694 if(Iter_Contains(HouseKeys[i], id)) Iter_Remove(HouseKeys[i], id);
1695 }
1696
1697 new query[64];
1698 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housekeys WHERE HouseID=%d", id);
1699 mysql_tquery(SQLHandle, query, "", "");
1700 ShowHouseMenu(playerid);
1701 }
1702
1703 return 1;
1704 }
1705
1706 if(dialogid == DIALOG_KEYS)
1707 {
1708 if(!response) {
1709 ListPage[playerid]--;
1710 if(ListPage[playerid] < 0)
1711 {
1712 ListPage[playerid] = 0;
1713 ShowHouseMenu(playerid);
1714 return 1;
1715 }
1716 }else{
1717 ListPage[playerid]++;
1718 }
1719
1720 new id = InHouse[playerid];
1721 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1722 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1723 new query[200], Cache: keyowners;
1724 mysql_format(SQLHandle, query, sizeof(query), "SELECT Player, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM housekeys WHERE HouseID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1725 keyowners = mysql_query(SQLHandle, query);
1726 new rows = cache_num_rows();
1727 if(rows) {
1728 new list[1024], key_name[MAX_PLAYER_NAME], key_date[20];
1729 format(list, sizeof(list), "Kulcs tulaj\tKulcs odaadva\n");
1730 for(new i; i < rows; ++i)
1731 {
1732 cache_get_field_content(i, "Player", key_name);
1733 cache_get_field_content(i, "KeyDate", key_date);
1734 format(list, sizeof(list), "%s%s\t%s\n", list, key_name, key_date);
1735 }
1736
1737 new title[32];
1738 format(title, sizeof(title), "Kulcs tulajok (%d. oldal)", ListPage[playerid]+1);
1739 ShowPlayerDialog(playerid, DIALOG_KEYS, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Következő", "Előző");
1740 }else{
1741 ListPage[playerid] = 0;
1742 ShowHouseMenu(playerid);
1743 SendClientMessage(playerid, 0xE74C3CFF, "Nincsen kulcs tulaj.");
1744 }
1745
1746 cache_delete(keyowners);
1747 return 1;
1748 }
1749
1750 if(dialogid == DIALOG_SAFE_HISTORY)
1751 {
1752 if(!response) {
1753 ListPage[playerid]--;
1754 if(ListPage[playerid] < 0)
1755 {
1756 ListPage[playerid] = 0;
1757 ShowHouseMenu(playerid);
1758 return 1;
1759 }
1760 }else{
1761 ListPage[playerid]++;
1762 }
1763
1764 new id = InHouse[playerid];
1765 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1766 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1767 new query[200], Cache: safelog;
1768 mysql_format(SQLHandle, query, sizeof(query), "SELECT Type, Amount, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as TransactionDate FROM housesafelogs WHERE HouseID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1769 safelog = mysql_query(SQLHandle, query);
1770 new rows = cache_num_rows();
1771 if(rows) {
1772 new list[1024], date[20];
1773 format(list, sizeof(list), "Tevékenység\tMikor\n");
1774 for(new i; i < rows; ++i)
1775 {
1776 cache_get_field_content(i, "TransactionDate", date);
1777 format(list, sizeof(list), "%s%s $%s\t{FFFFFF}%s\n", list, TransactionNames[ cache_get_field_content_int(i, "Type") ], convertNumber(cache_get_field_content_int(i, "Amount")), date);
1778 }
1779
1780 new title[32];
1781 format(title, sizeof(title), "Széf történet (%d. oldal)", ListPage[playerid]+1);
1782 ShowPlayerDialog(playerid, DIALOG_SAFE_HISTORY, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Következő", "Előző");
1783 }else{
1784 SendClientMessage(playerid, 0xE74C3CFF, "Nincs széf történet.");
1785 }
1786
1787 cache_delete(safelog);
1788 return 1;
1789 }
1790
1791 if(dialogid == DIALOG_MY_KEYS)
1792 {
1793 if(!response) {
1794 ListPage[playerid]--;
1795 if(ListPage[playerid] < 0)
1796 {
1797 ListPage[playerid] = 0;
1798 return 1;
1799 }
1800 }else{
1801 ListPage[playerid]++;
1802 }
1803
1804 new query[200], Cache: mykeys;
1805 mysql_format(SQLHandle, query, sizeof(query), "SELECT HouseID, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM housekeys WHERE Player='%e' ORDER BY Date DESC LIMIT %d, 15", Player_GetName(playerid), ListPage[playerid]*15);
1806 mykeys = mysql_query(SQLHandle, query);
1807
1808 new rows = cache_num_rows();
1809 if(rows) {
1810 new list[1024], id, key_date[20];
1811 format(list, sizeof(list), "Ház információ\tKulcs odaadva\n");
1812 for(new i; i < rows; ++i)
1813 {
1814 id = cache_get_field_content_int(i, "HouseID");
1815 cache_get_field_content(i, "KeyDate", key_date);
1816 format(list, sizeof(list), "%s%s háza %s\t%s\n", list, HouseData[id][Owner], HouseData[id][Name], key_date);
1817 }
1818
1819 new title[32];
1820 format(title, sizeof(title), "Kulcsaim (%d. oldal)", ListPage[playerid]+1);
1821 ShowPlayerDialog(playerid, DIALOG_MY_KEYS, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Következő", "Előző");
1822 }else{
1823 ListPage[playerid] = 0;
1824 SendClientMessage(playerid, 0xE74C3CFF, "Nincs kulcsod.");
1825 }
1826
1827 cache_delete(mykeys);
1828 return 1;
1829 }
1830
1831 if(dialogid == DIALOG_BUY_HOUSE_FROM_OWNER)
1832 {
1833 if(!response) return 1;
1834 new id = GetPVarInt(playerid, "PickupHouseID");
1835 if(!IsPlayerInRangeOfPoint(playerid, 2.0, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ])) return SendClientMessage(playerid, 0xE74C3CFF, "You're not near any house.");
1836 #if LIMIT_PER_PLAYER > 0
1837 if(OwnedHouses(playerid) + 1 > LIMIT_PER_PLAYER) return SendClientMessage(playerid, 0xE74C3CFF, "Nem tudsz több házat vásárolni.");
1838 #endif
1839 if(HouseData[id][SalePrice] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a házat nem engedheted meg magadnak.");
1840 if(HouseData[id][SalePrice] < 1) return SendClientMessage(playerid, 0xE74C3CFF, "Már valaki birtokolja ezt a házat.");
1841 new old_owner[MAX_PLAYER_NAME], price = HouseData[id][SalePrice], owner_id = INVALID_PLAYER_ID;
1842 format(old_owner, MAX_PLAYER_NAME, "%s", HouseData[id][Owner]);
1843
1844 foreach(new i : Player)
1845 {
1846 if(!strcmp(HouseData[id][Owner], Player_GetName(i)))
1847 {
1848 owner_id = i;
1849 break;
1850 }
1851 }
1852
1853 GivePlayerMoney(playerid, -HouseData[id][SalePrice]);
1854 GetPlayerName(playerid, HouseData[id][Owner], MAX_PLAYER_NAME);
1855 HouseData[id][LastEntered] = gettime();
1856 HouseData[id][SalePrice] = 0;
1857 HouseData[id][Save] = true;
1858
1859 UpdateHouseLabel(id);
1860 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 19522);
1861 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 32);
1862 SendToHouse(playerid, id);
1863
1864 foreach(new i : Player)
1865 {
1866 if(i == playerid) continue;
1867 if(InHouse[i] == id)
1868 {
1869 SetPVarInt(i, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1870 SetPlayerVirtualWorld(i, 0);
1871 SetPlayerInterior(i, 0);
1872 SetPlayerPos(i, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
1873 InHouse[i] = INVALID_HOUSE_ID;
1874 }
1875
1876 if(Iter_Contains(HouseKeys[i], id)) Iter_Remove(HouseKeys[i], id);
1877 }
1878
1879 new query[128];
1880 if(IsPlayerConnected(owner_id)) {
1881 GivePlayerMoney(owner_id, price);
1882
1883 new string[128];
1884 format(string, sizeof(string), "%s(%d) megvásárolta a házad $%s-ért.", HouseData[id][Owner], playerid, convertNumber(price));
1885 SendClientMessage(owner_id, -1, string);
1886 }else{
1887 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housesales SET OldOwner='%e', NewOwner='%e', Price=%d", old_owner, HouseData[id][Owner], price);
1888 mysql_tquery(SQLHandle, query, "", "");
1889 }
1890
1891 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housevisitors WHERE HouseID=%d", id);
1892 mysql_tquery(SQLHandle, query, "", "");
1893
1894 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housekeys WHERE HouseID=%d", id);
1895 mysql_tquery(SQLHandle, query, "", "");
1896
1897 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housesafelogs WHERE HouseID=%d", id);
1898 mysql_tquery(SQLHandle, query, "", "");
1899 return 1;
1900 }
1901
1902 if(dialogid == DIALOG_SELL_HOUSE)
1903 {
1904 if(!response) return ShowHouseMenu(playerid);
1905 new id = InHouse[playerid];
1906 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1907 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1908 if(listitem == 0)
1909 {
1910 new money = floatround(HouseData[id][Price] * 0.85) + HouseData[id][SafeMoney];
1911 GivePlayerMoney(playerid, money);
1912 ResetHouse(id);
1913 }
1914
1915 if(listitem == 1)
1916 {
1917 if(HouseData[id][SalePrice] > 0) {
1918 HouseData[id][SalePrice] = 0;
1919 HouseData[id][Save] = true;
1920
1921 UpdateHouseLabel(id);
1922 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 19522);
1923 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 32);
1924 SendClientMessage(playerid, -1, "A házad többé nem eladó.");
1925 }else{
1926 if(HouseData[id][SafeMoney] > 0) return SendClientMessage(playerid, 0xE74C3CFF, "Nem tudod eladni a házad amÃg a széf nem üres.");
1927 ShowPlayerDialog(playerid, DIALOG_SELLING_PRICE, DIALOG_STYLE_INPUT, "Ház eladás", "Mennyit kérsz a házadért?", "Eladás", "Mégse");
1928 }
1929 }
1930
1931 return 1;
1932 }
1933
1934 if(dialogid == DIALOG_SELLING_PRICE)
1935 {
1936 if(!response) return ShowHouseMenu(playerid);
1937 new id = InHouse[playerid];
1938 if(id == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
1939 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
1940 new amount = strval(inputtext);
1941 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, DIALOG_SELLING_PRICE, DIALOG_STYLE_INPUT, "Ház eladás", "{E74C3C}Minimum $1, maximum $100,000,000.\n\n{FFFFFF}Mennyit kérsz a házadért?", "Eladás", "Mégse");
1942 HouseData[id][SalePrice] = amount;
1943 HouseData[id][Save] = true;
1944
1945 UpdateHouseLabel(id);
1946 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 1273);
1947 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 31);
1948
1949 new string[128];
1950 format(string, sizeof(string), "Eladóvá tetted a házad $%s-ért.", convertNumber(amount));
1951 SendClientMessage(playerid, -1, string);
1952 return 1;
1953 }
1954
1955 return 0;
1956}
1957
1958public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float: x, Float: y, Float: z)
1959{
1960 switch(SelectMode[playerid])
1961 {
1962 case SELECT_MODE_EDIT:
1963 {
1964 EditingFurniture[playerid] = true;
1965 EditDynamicObject(playerid, objectid);
1966 }
1967
1968 case SELECT_MODE_SELL:
1969 {
1970 CancelEdit(playerid);
1971
1972 new data[e_furniture], string[128];
1973 SetPVarInt(playerid, "SelectedFurniture", objectid);
1974 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1975 format(string, sizeof(string), "Elszeretnéd adni a bútorod?\nKapni fogsz érte{2ECC71}$%s-t.", convertNumber(HouseFurnitures[ data[ArrayID] ][Price]));
1976 ShowPlayerDialog(playerid, DIALOG_FURNITURE_SELL, DIALOG_STYLE_MSGBOX, "Eladás megerÅ‘sÃtése", string, "Eladás", "Bezárás");
1977 }
1978 }
1979
1980 SelectMode[playerid] = SELECT_MODE_NONE;
1981 return 1;
1982}
1983
1984public OnPlayerEditDynamicObject(playerid, objectid, response, Float: x, Float: y, Float: z, Float: rx, Float: ry, Float: rz)
1985{
1986 if(EditingFurniture[playerid])
1987 {
1988 switch(response)
1989 {
1990 case EDIT_RESPONSE_CANCEL:
1991 {
1992 new data[e_furniture];
1993 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1994 SetDynamicObjectPos(objectid, data[furnitureX], data[furnitureY], data[furnitureZ]);
1995 SetDynamicObjectRot(objectid, data[furnitureRX], data[furnitureRY], data[furnitureRZ]);
1996
1997 EditingFurniture[playerid] = false;
1998 }
1999
2000 case EDIT_RESPONSE_FINAL:
2001 {
2002 new data[e_furniture], query[256];
2003 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
2004 data[furnitureX] = x;
2005 data[furnitureY] = y;
2006 data[furnitureZ] = z;
2007 data[furnitureRX] = rx;
2008 data[furnitureRY] = ry;
2009 data[furnitureRZ] = rz;
2010 SetDynamicObjectPos(objectid, data[furnitureX], data[furnitureY], data[furnitureZ]);
2011 SetDynamicObjectRot(objectid, data[furnitureRX], data[furnitureRY], data[furnitureRZ]);
2012 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
2013
2014 mysql_format(SQLHandle, query, sizeof(query), "UPDATE housefurnitures SET FurnitureX=%f, FurnitureY=%f, FurnitureZ=%f, FurnitureRX=%f, FurnitureRY=%f, FurnitureRZ=%f WHERE ID=%d", data[furnitureX], data[furnitureY], data[furnitureZ], data[furnitureRX], data[furnitureRY], data[furnitureRZ], data[SQLID]);
2015 mysql_tquery(SQLHandle, query, "", "");
2016
2017 EditingFurniture[playerid] = false;
2018 }
2019 }
2020 }
2021
2022 return 1;
2023}
2024
2025/* ============ Player Commands ============ */
2026CMD:house(playerid, params[])
2027{
2028 if(InHouse[playerid] == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
2029 ShowHouseMenu(playerid);
2030 return 1;
2031}
2032
2033CMD:myhousekeys(playerid, params[])
2034{
2035 new query[200], Cache: mykeys;
2036 mysql_format(SQLHandle, query, sizeof(query), "SELECT HouseID, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM housekeys WHERE Player='%e' ORDER BY Date DESC LIMIT 0, 15", Player_GetName(playerid));
2037 mykeys = mysql_query(SQLHandle, query);
2038 ListPage[playerid] = 0;
2039
2040 new rows = cache_num_rows();
2041 if(rows) {
2042 new list[1024], id, key_date[20];
2043 format(list, sizeof(list), "Ház információ\tKulcs odaadva\n");
2044 for(new i; i < rows; ++i)
2045 {
2046 id = cache_get_field_content_int(i, "HouseID");
2047 cache_get_field_content(i, "KeyDate", key_date);
2048 format(list, sizeof(list), "%s%s háza %s\t%s\n", list, HouseData[id][Owner], HouseData[id][Name], key_date);
2049 }
2050
2051 ShowPlayerDialog(playerid, DIALOG_MY_KEYS, DIALOG_STYLE_TABLIST_HEADERS, "Kulcsaim (1. oldal)", list, "Következő", "Close");
2052 }else{
2053 SendClientMessage(playerid, 0xE74C3CFF, "Nincs kulcsod egy házhoz se.");
2054 }
2055
2056 cache_delete(mykeys);
2057 return 1;
2058}
2059
2060CMD:givehousekeys(playerid, params[])
2061{
2062 if(InHouse[playerid] == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
2063 new id, houseid = InHouse[playerid];
2064 if(strcmp(HouseData[houseid][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
2065 if(sscanf(params, "u", id)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /givehousekeys [ Játékos ]");
2066 if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Hibás játékos.");
2067 if(id == playerid) return SendClientMessage(playerid, 0xE74C3CFF, "Te vagy a Tulaj, nincs szükséged kulcsra.");
2068 if(Iter_Contains(HouseKeys[id], houseid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ennek a játékosnak már van kulcsa a házadhoz.");
2069 Iter_Add(HouseKeys[id], houseid);
2070
2071 new query[128];
2072 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housekeys SET HouseID=%d, Player='%e', Date=UNIX_TIMESTAMP()", houseid, Player_GetName(id));
2073 mysql_tquery(SQLHandle, query, "", "");
2074
2075 format(query, sizeof(query), "Kulcsot adtál %s-nek/nak a házadhoz.", Player_GetName(id));
2076 SendClientMessage(playerid, -1, query);
2077 format(query, sizeof(query), "Most már van kulcsod %s házához, %s.", HouseData[houseid][Owner], HouseData[houseid][Name]);
2078 SendClientMessage(id, -1, query);
2079 return 1;
2080}
2081
2082CMD:takehousekeys(playerid, params[])
2083{
2084 if(InHouse[playerid] == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
2085 new id, houseid = InHouse[playerid];
2086 if(strcmp(HouseData[houseid][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
2087 if(sscanf(params, "u", id)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /takehousekeys [ Játékos ]");
2088 if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Hibás játékos.");
2089 if(id == playerid) return SendClientMessage(playerid, 0xE74C3CFF, "Te vagy a Tulaj, nincs szükséged kulcsra..");
2090 if(!Iter_Contains(HouseKeys[id], houseid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ennek a játékosnak nincs kulcs a házadhoz.");
2091 Iter_Remove(HouseKeys[id], houseid);
2092
2093 new query[128];
2094 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housekeys WHERE HouseID=%d AND Player='%e'", houseid, Player_GetName(id));
2095 mysql_tquery(SQLHandle, query, "", "");
2096
2097 format(query, sizeof(query), "Elvetted %s-től/tól a házadhoz tartozó kulcsokat.", Player_GetName(id));
2098 SendClientMessage(playerid, -1, query);
2099 format(query, sizeof(query), "Tulajdonos %s elvette a kulcsaidat a házához, %s.", HouseData[houseid][Owner], HouseData[houseid][Name]);
2100 SendClientMessage(id, -1, query);
2101 return 1;
2102}
2103
2104CMD:kickfromhouse(playerid, params[])
2105{
2106 if(InHouse[playerid] == INVALID_HOUSE_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Nem vagy házban.");
2107 new id, houseid = InHouse[playerid];
2108 if(strcmp(HouseData[houseid][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "Nem a tiéd a ház.");
2109 if(sscanf(params, "u", id)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /kickfromhouse [ Játékos ]");
2110 if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xE74C3CFF, "Hibás játékos.");
2111 if(id == playerid) return SendClientMessage(playerid, 0xE74C3CFF, "Magadat nem tudod kirúgni a házból.");
2112 if(InHouse[id] != houseid) return SendClientMessage(playerid, 0xE74C3CFF, "Ez a játékos nincs a házban.");
2113 SendClientMessage(playerid, -1, "Játékos kirúgva a házból.");
2114 SendClientMessage(id, -1, "Kirúgott a ház tulajdonosa a házból.");
2115 SetPVarInt(id, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
2116 SetPlayerVirtualWorld(id, 0);
2117 SetPlayerInterior(id, 0);
2118 SetPlayerPos(id, HouseData[houseid][houseX], HouseData[houseid][houseY], HouseData[houseid][houseZ]);
2119 InHouse[id] = INVALID_HOUSE_ID;
2120 return 1;
2121}
2122
2123/* ============ Admin Commands ============ */
2124CMD:createhouse(playerid, params[])
2125{
2126 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a parancsot nem használhatod.");
2127 new interior, price;
2128 if(sscanf(params, "ii", price, interior)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /createhouse [ Ãr ] [ Interior ID ]");
2129 if(!(0 <= interior <= sizeof(HouseInteriors)-1)) return SendClientMessage(playerid, 0xE74C3CFF, "Ez az interior nem létezik.");
2130 new id = Iter_Free(Houses);
2131 if(id == -1) return SendClientMessage(playerid, 0xE74C3CFF, "Nem tudsz több házat létrehozni.");
2132 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
2133 format(HouseData[id][Name], MAX_HOUSE_NAME, "Eladó ház");
2134 format(HouseData[id][Owner], MAX_PLAYER_NAME, "-");
2135 format(HouseData[id][Password], MAX_HOUSE_PASSWORD, "-");
2136 GetPlayerPos(playerid, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
2137 HouseData[id][Price] = price;
2138 HouseData[id][Interior] = interior;
2139 HouseData[id][LockMode] = LOCK_MODE_NOLOCK;
2140 HouseData[id][SalePrice] = HouseData[id][SafeMoney] = HouseData[id][LastEntered] = 0;
2141 format(HouseData[id][Address], MAX_HOUSE_ADDRESS, "%d, %s, %s", id, GetZoneName(HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]), GetCityName(HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]));
2142 HouseData[id][Save] = true;
2143
2144 new label[200];
2145 format(label, sizeof(label), "{2ECC71}Eladó ház (ID: %d)\n{FFFFFF}%s\n{F1C40F}Ãr: {2ECC71}$%s", id, HouseInteriors[interior][IntName], convertNumber(price));
2146 HouseData[id][HouseLabel] = CreateDynamic3DTextLabel(label, 0xFFFFFFFF, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]+0.35, 15.0, .testlos = 1);
2147 HouseData[id][HousePickup] = CreateDynamicPickup(1273, 1, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
2148 HouseData[id][HouseIcon] = CreateDynamicMapIcon(HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ], 31, 0);
2149
2150 new query[256];
2151 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO houses SET ID=%d, HouseX=%f, HouseY=%f, HouseZ=%f, HousePrice=%d, HouseInterior=%d", id, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ], price, interior);
2152 mysql_tquery(SQLHandle, query, "", "");
2153 Iter_Add(Houses, id);
2154 return 1;
2155}
2156
2157CMD:gotohouse(playerid, params[])
2158{
2159 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a parancsot nem használhatod.");
2160 new id;
2161 if(sscanf(params, "i", id)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /gotohouse [ Ház ID ]");
2162 if(!Iter_Contains(Houses, id)) return SendClientMessage(playerid, 0xE74C3CFF, "Ez a ház nem létezik.");
2163 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
2164 SetPlayerPos(playerid, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
2165 SetPlayerInterior(playerid, 0);
2166 SetPlayerVirtualWorld(playerid, 0);
2167 return 1;
2168}
2169
2170CMD:hsetinterior(playerid, params[])
2171{
2172 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a parancsot nem használhatod.");
2173 new id, interior;
2174 if(sscanf(params, "ii", id, interior)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /hsetinterior [ Ház ID ] [ Interior ID ]");
2175 if(!Iter_Contains(Houses, id)) return SendClientMessage(playerid, 0xE74C3CFF, "Ez a ház nem létezik.");
2176 if(!(0 <= interior <= sizeof(HouseInteriors)-1)) return SendClientMessage(playerid, 0xE74C3CFF, "Ez az interior nem létezik.");
2177 HouseData[id][Interior] = interior;
2178
2179 new query[64];
2180 mysql_format(SQLHandle, query, sizeof(query), "UPDATE houses SET HouseInterior=%d WHERE ID=%d", interior, id);
2181 mysql_tquery(SQLHandle, query, "", "");
2182
2183 UpdateHouseLabel(id);
2184 SendClientMessage(playerid, -1, "Interior frissÃtve.");
2185 return 1;
2186}
2187
2188CMD:hsetprice(playerid, params[])
2189{
2190 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a parancsot nem használhatod.");
2191 new id, price;
2192 if(sscanf(params, "ii", id, price)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /hsetprice [ Ház ID ] [ Ãr ]");
2193 if(!Iter_Contains(Houses, id)) return SendClientMessage(playerid, 0xE74C3CFF, "Ez a ház nem létezik.");
2194 HouseData[id][Price] = price;
2195
2196 new query[64];
2197 mysql_format(SQLHandle, query, sizeof(query), "UPDATE houses SET HousePrice=%d WHERE ID=%d", price, id);
2198 mysql_tquery(SQLHandle, query, "", "");
2199
2200 UpdateHouseLabel(id);
2201 SendClientMessage(playerid, -1, "Ãr frissÃtve.");
2202 return 1;
2203}
2204
2205CMD:resethouse(playerid, params[])
2206{
2207 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a parancsot nem használhatod.");
2208 new id;
2209 if(sscanf(params, "i", id)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /resethouse [ Ház ID ]");
2210 if(!Iter_Contains(Houses, id)) return SendClientMessage(playerid, 0xE74C3CFF, "Ez a ház nem létezik.");
2211 ResetHouse(id);
2212 SendClientMessage(playerid, -1, "Ház visszaállÃtva.");
2213 return 1;
2214}
2215
2216CMD:deletehouse(playerid, params[])
2217{
2218 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "Ezt a parancsot nem használhatod.");
2219 new id;
2220 if(sscanf(params, "i", id)) return SendClientMessage(playerid, 0xE74C3CFF, "Használat: /deletehouse [ Ház ID ]");
2221 if(!Iter_Contains(Houses, id)) return SendClientMessage(playerid, 0xE74C3CFF, "Ez a ház nem létezik.");
2222 ResetHouse(id);
2223 DestroyDynamic3DTextLabel(HouseData[id][HouseLabel]);
2224 DestroyDynamicPickup(HouseData[id][HousePickup]);
2225 DestroyDynamicMapIcon(HouseData[id][HouseIcon]);
2226 Iter_Remove(Houses, id);
2227 HouseData[id][HouseLabel] = INVALID_3DTEXT_ID;
2228 HouseData[id][HousePickup] = HouseData[id][HouseIcon] = -1;
2229 HouseData[id][Save] = false;
2230
2231 new query[64];
2232 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM houses WHERE ID=%d", id);
2233 mysql_tquery(SQLHandle, query, "", "");
2234 SendClientMessage(playerid, -1, "Ház törölve.");
2235 return 1;
2236}