· 6 years ago · Mar 14, 2019, 06:08 PM
1#define FILTERSCRIPT
2#include <a_samp>
3#include <a_mysql>
4#include <streamer>
5#include <sscanf2>
6#include <YSI\y_iterate>
7#include <zcmd>
8
9#define MAX_APARTMANS (100)
10#define MAX_APR_NAME (48)
11#define MAX_APR_PASSWORD (16)
12#define MAX_APR_ADDRESS (48)
13#define MAX_INT_NAME (32)
14#define INVALID_APR_ID (-1)
15#define APR_COOLDOWN (6)
16#define LIMIT_PER_PLAYER (3)
17
18#define SQL_HOST "127.0.0.1"
19#define SQL_USER "root"
20#define SQL_PASSWORD ""
21#define SQL_DBNAME "housedb"
22
23enum _:e_lockmodes
24{
25 LOCK_MODE_NOLOCK,
26 LOCK_MODE_PASSWORD,
27 LOCK_MODE_KEYS,
28 LOCK_MODE_OWNER
29}
30
31enum _:e_selectmodes
32{
33 SELECT_MODE_NONE,
34 SELECT_MODE_EDIT,
35 SELECT_MODE_SELL
36}
37
38enum _:e_dialogids
39{
40 DIALOG_BUY_APR = 7500,
41 DIALOG_APR_PASSWORD,
42 DIALOG_APR_MENU,
43 DIALOG_COMMAND,
44 DIALOG_APR_NAME,
45 DIALOG_APR_NEW_PASSWORD,
46 DIALOG_APR_LOCK,
47 DIALOG_SAFE_MENU,
48 DIALOG_SAFE_TAKE,
49 DIALOG_SAFE_PUT,
50 DIALOG_GUNS_MENU,
51 DIALOG_GUNS_TAKE,
52 DIALOG_FURNITURE_MENU,
53 DIALOG_FURNITURE_BUY,
54 DIALOG_FURNITURE_SELL,
55 DIALOG_VISITORS_MENU,
56 DIALOG_VISITORS,
57 DIALOG_KEYS_MENU,
58 DIALOG_KEYS,
59 DIALOG_SAFE_HISTORY,
60 DIALOG_MY_KEYS,
61 DIALOG_BUY_APR_FROM_OWNER,
62 DIALOG_SELL_APR,
63 DIALOG_SELLING_PRICE
64}
65
66enum e_apr
67{
68 Name[MAX_APR_NAME],
69 Owner[MAX_PLAYER_NAME],
70 Password[MAX_APR_PASSWORD],
71 Address[MAX_APR_ADDRESS],
72 Float: aprX,
73 Float: aprY,
74 Float: aprZ,
75 Price,
76 SalePrice,
77 Interior,
78 LockMode,
79 SafeMoney,
80 LastEntered,
81 Text3D: AprLabel,
82 AprPickup,
83 AprIcon,
84 bool: Save
85};
86
87enum e_interior
88{
89 IntName[MAX_INT_NAME],
90 Float: intX,
91 Float: intY,
92 Float: intZ,
93 intID,
94 Text3D: intLabel,
95 intPickup
96};
97
98enum e_furnituredata
99{
100 ModelID,
101 Name[32],
102 Price
103};
104
105enum e_furniture
106{
107 SQLID,
108 AprID,
109 ArrayID,
110 Float: furnitureX,
111 Float: furnitureY,
112 Float: furnitureZ,
113 Float: furnitureRX,
114 Float: furnitureRY,
115 Float: furnitureRZ
116};
117
118enum e_sazone
119{
120 SAZONE_NAME[28],
121 Float: SAZONE_AREA[6]
122};
123
124new
125 MySQL: SQLHandle,
126 AprTimer = -1,
127 AprData[MAX_APARTMANS][e_apr],
128 Iterator: Aprs<MAX_APARTMANS>,
129 Iterator: AprKeys[MAX_PLAYERS]<MAX_APARTMANS>,
130 InApr[MAX_PLAYERS] = {INVALID_APR_ID, ...},
131 SelectMode[MAX_PLAYERS] = {SELECT_MODE_NONE, ...},
132 LastVisitedApr[MAX_PLAYERS] = {INVALID_APR_ID, ...},
133 ListPage[MAX_PLAYERS] = {0, ...},
134 bool: EditingFurniture[MAX_PLAYERS] = {false, ...};
135
136new
137 AprInteriors[][e_interior] = {
138 // int name, x, y, z, intid
139 {"Default", 1697.4835, -1417.5464, 37.3089, 0}
140 };
141
142new
143 AprFurnitures[][e_furnituredata] = {
144 // modelid, furniture name, price
145 {3111, "Building Plan", 500},
146 {2894, "Book", 20},
147 {2277, "Cat Picture", 100},
148 {1753, "Leather Couch", 150},
149 {1703, "Black Couch", 200},
150 {1255, "Lounger", 75},
151 {19581, "Frying Pan", 10},
152 {19584, "Sauce Pan", 12},
153 {19590, "Woozie's Sword", 1000},
154 {19525, "Wedding Cake", 50},
155 {1742, "Bookshelf", 80},
156 {1518, "TV 1", 130},
157 {19609, "Drum Kit", 500},
158 {19787, "Small LCD TV", 2000},
159 {19786, "Big LCD TV", 4000},
160 {2627, "Treadmill", 130}
161 };
162
163new
164 SAZones[][e_sazone] = {
165 {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
166 {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
167 {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
168 {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
169 {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
170 {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
171 {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
172 {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
173 {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
174 {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
175 {"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
176 {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
177 {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
178 {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
179 {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
180 {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
181 {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
182 {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
183 {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
184 {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
185 {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
186 {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
187 {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
188 {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
189 {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
190 {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
191 {"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
192 {"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
193 {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
194 {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
195 {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
196 {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
197 {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
198 {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
199 {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
200 {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
201 {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
202 {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
203 {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
204 {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
205 {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
206 {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
207 {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
208 {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
209 {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
210 {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
211 {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
212 {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
213 {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
214 {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
215 {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
216 {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
217 {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
218 {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
219 {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
220 {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
221 {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
222 {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
223 {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
224 {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
225 {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
226 {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
227 {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
228 {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
229 {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
230 {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
231 {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
232 {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
233 {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
234 {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
235 {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
236 {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
237 {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
238 {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
239 {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
240 {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
241 {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
242 {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
243 {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
244 {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
245 {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
246 {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
247 {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
248 {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
249 {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
250 {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
251 {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
252 {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
253 {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
254 {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
255 {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
256 {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
257 {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
258 {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
259 {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
260 {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
261 {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
262 {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
263 {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
264 {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
265 {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
266 {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
267 {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
268 {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
269 {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
270 {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
271 {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
272 {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
273 {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
274 {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
275 {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
276 {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
277 {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
278 {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
279 {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
280 {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
281 {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
282 {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
283 {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
284 {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
285 {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
286 {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
287 {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
288 {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
289 {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
290 {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
291 {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
292 {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
293 {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
294 {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
295 {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
296 {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
297 {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
298 {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
299 {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
300 {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
301 {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
302 {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
303 {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
304 {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
305 {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
306 {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
307 {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
308 {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
309 {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
310 {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
311 {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
312 {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
313 {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
314 {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
315 {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
316 {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
317 {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
318 {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
319 {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
320 {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
321 {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
322 {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
323 {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
324 {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
325 {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
326 {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
327 {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
328 {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
329 {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
330 {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
331 {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
332 {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
333 {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
334 {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
335 {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
336 {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
337 {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
338 {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
339 {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
340 {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
341 {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
342 {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
343 {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
344 {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
345 {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
346 {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
347 {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
348 {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
349 {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
350 {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
351 {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
352 {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
353 {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
354 {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
355 {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
356 {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
357 {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
358 {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
359 {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
360 {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
361 {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
362 {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
363 {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
364 {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
365 {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
366 {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
367 {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
368 {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
369 {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
370 {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
371 {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
372 {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
373 {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
374 {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
375 {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
376 {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
377 {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
378 {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
379 {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
380 {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
381 {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
382 {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
383 {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
384 {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
385 {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
386 {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
387 {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
388 {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
389 {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
390 {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
391 {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
392 {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
393 {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
394 {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
395 {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
396 {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
397 {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
398 {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
399 {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
400 {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
401 {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
402 {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
403 {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
404 {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
405 {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
406 {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
407 {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
408 {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
409 {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
410 {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
411 {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
412 {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
413 {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
414 {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
415 {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
416 {"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
417 {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
418 {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
419 {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
420 {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
421 {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
422 {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
423 {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
424 {"Randolph Industrial Estate", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
425 {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
426 {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
427 {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
428 {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
429 {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
430 {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
431 {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
432 {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
433 {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
434 {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
435 {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
436 {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
437 {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
438 {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
439 {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
440 {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
441 {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
442 {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
443 {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
444 {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
445 {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
446 {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
447 {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
448 {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
449 {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
450 {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
451 {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
452 {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
453 {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
454 {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
455 {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
456 {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
457 {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
458 {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
459 {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
460 {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
461 {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
462 {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
463 {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
464 {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
465 {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
466 {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
467 {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
468 {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
469 {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
470 {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
471 {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
472 {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
473 {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
474 {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
475 {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
476 {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
477 {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
478 {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
479 {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
480 {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
481 {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
482 {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
483 {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
484 {"The Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
485 {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
486 {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
487 {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
488 {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
489 {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
490 {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
491 {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
492 {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
493 {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
494 {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
495 {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
496 {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
497 {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
498 {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
499 {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
500 {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
501 {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
502 {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
503 {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
504 {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
505 {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
506 {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
507 {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
508 {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
509 {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
510 {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
511 {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
512 {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
513 {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
514 {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
515 {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
516 {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
517 {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
518 {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
519 {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
520 {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
521 {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
522 {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
523 {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
524 {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
525 {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
526 {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
527 {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
528 {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
529 {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
530 };
531
532new
533 LockNames[4][32] = {"{FFFFFF}Nije zakljucano", "{FFFFFF}Zakljucano (sifrom)", "{FFFFFF}Potreban kljuc", "{FFFFFF}Samo Vlasnik Apartmana"},
534 TransactionNames[2][16] = {"{FFFFFF}Taken", "{FFFFFF}Dodaj"};
535stock LoadAprKeys(playerid)
536{
537 Iter_Clear(AprKeys[playerid]);
538
539 new query[72];
540 mysql_format(SQLHandle, query, sizeof(query), "SELECT * FROM aprkeys WHERE Player='%e'", Player_GetName(playerid));
541 mysql_tquery(SQLHandle, query, "GiveAprKeys", "i", playerid);
542 return 1;
543}
544
545stock GetZoneName(Float: x, Float: y, Float: z)
546{
547 new zone[28];
548 for(new i = 0; i < sizeof(SAZones); i++)
549 {
550 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])
551 {
552 strcat(zone, SAZones[i][SAZONE_NAME]);
553 return zone;
554 }
555 }
556
557 strcat(zone, "Unknown");
558 return zone;
559}
560
561stock GetCityName(Float: x, Float: y, Float: z)
562{
563 new city[28];
564 for(new i = 356; i < sizeof(SAZones); i++)
565 {
566 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])
567 {
568 strcat(city, SAZones[i][SAZONE_NAME]);
569 return city;
570 }
571 }
572
573 strcat(city, "San Andreas");
574 return city;
575}
576
577stock convertNumber(value)
578{
579 // http://forum.sa-mp.com/showthread.php?p=843781#post843781
580 new string[24];
581 format(string, sizeof(string), "%d", value);
582
583 for(new i = (strlen(string) - 3); i > (value < 0 ? 1 : 0) ; i -= 3)
584 {
585 strins(string[i], ",", 0);
586 }
587
588 return string;
589}
590
591stock RemovePlayerWeapon(playerid, weapon)
592{
593 new weapons[13], ammo[13];
594 for(new i; i < 13; i++) GetPlayerWeaponData(playerid, i, weapons[i], ammo[i]);
595 ResetPlayerWeapons(playerid);
596 for(new i; i < 13; i++)
597 {
598 if(weapons[i] == weapon) continue;
599 GivePlayerWeapon(playerid, weapons[i], ammo[i]);
600 }
601
602 return 1;
603}
604
605stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
606{
607 new Float: a;
608 GetPlayerPos(playerid, x, y, a);
609 GetPlayerFacingAngle(playerid, a);
610 if (GetPlayerVehicleID(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
611 x += (distance * floatsin(-a, degrees));
612 y += (distance * floatcos(-a, degrees));
613}
614
615stock Player_GetName(playerid)
616{
617 new name[MAX_PLAYER_NAME];
618 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
619 return name;
620}
621
622stock SendToApr(playerid, id)
623{
624 if(!Iter_Contains(Aprs, id)) return 0;
625 SetPVarInt(playerid, "AprPickupCooldown", gettime() + APR_COOLDOWN);
626 InApr[playerid] = id;
627 SetPlayerVirtualWorld(playerid, id);
628 SetPlayerInterior(playerid, AprInteriors[ AprData[id][Interior] ][intID]);
629 SetPlayerPos(playerid, AprInteriors[ AprData[id][Interior] ][intX], AprInteriors[ AprData[id][Interior] ][intY], AprInteriors[ AprData[id][Interior] ][intZ]);
630
631 new string[128];
632 format(string, sizeof(string), "Dobrodosao %s u svoj apartman IME: [ %s ]", AprData[id][Owner], AprData[id][Name]);
633 SendClientMessage(playerid, 0xFFFFFFFF, string);
634
635 if(!strcmp(AprData[id][Owner], Player_GetName(playerid)))
636 {
637 AprData[id][LastEntered] = gettime();
638 AprData[id][Save] = true;
639 SendClientMessage(playerid, 0xFFFFFFFF, "[KORISTI] /apartman da vidis postavke");
640 }
641
642 if(AprData[id][LockMode] == LOCK_MODE_NOLOCK && LastVisitedApr[playerid] != id)
643 {
644 new query[128];
645 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO aprvisitors SET AprID=%d, Visitor='%e', Date=UNIX_TIMESTAMP()", id, Player_GetName(playerid));
646 mysql_tquery(SQLHandle, query, "", "");
647 LastVisitedApr[playerid] = id;
648 }
649
650 return 1;
651}
652
653stock ShowAprMenu(playerid)
654{
655 if(strcmp(AprData[ InApr[playerid] ][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
656 new string[256], id = InApr[playerid];
657 format(string, sizeof(string), "Apartman Ime:\t%s\nSifra:\t\t%s\nZakljucan:\t%s\nApartman Sef\t{FFFFFF}($%s)\nNamestaj\nOruzije\nGosti\nKeys\nSve izbaci\nProdaj apartman\nRentaj vozilo", AprData[id][Name], AprData[id][Password], LockNames[ AprData[id][LockMode] ], convertNumber(AprData[id][SafeMoney]));
658 ShowPlayerDialog(playerid, DIALOG_APR_MENU, DIALOG_STYLE_LIST, AprData[id][Name], string, "Odaberi", "Izadji");
659 return 1;
660}
661
662stock ShowApartmanCmd(playerid)
663{
664 ShowPlayerDialog(playerid, DIALOG_COMMAND, DIALOG_STYLE_MSGBOX, "Apartman Command", "{FFFFFF}/createapr /gotoapr /hsetinterior\n/hsetprice /resetapr /deleteapr", "Close", "");
665 return 1;
666}
667
668stock ResetApr(id)
669{
670 if(!Iter_Contains(Aprs, id)) return 0;
671 format(AprData[id][Name], MAX_APR_NAME, "Apartman na prodaju");
672 format(AprData[id][Owner], MAX_PLAYER_NAME, "-");
673 format(AprData[id][Password], MAX_APR_PASSWORD, "-");
674 AprData[id][LockMode] = LOCK_MODE_NOLOCK;
675 AprData[id][SalePrice] = AprData[id][SafeMoney] = AprData[id][LastEntered] = 0;
676 AprData[id][Save] = true;
677
678 new label[200];
679 format(label, sizeof(label), "{FFFFFF}Apartman na prodaju (ID: %d)\n{FFFFFF}%s\n{FFFFFF}Cena: {FFFFFF}$%s\nDa kupite koristite /kupiapartman", id, AprInteriors[ AprData[id][Interior] ][IntName], convertNumber(AprData[id][Price]));
680 UpdateDynamic3DTextLabelText(AprData[id][AprLabel], 0xFFFFFFFF, label);
681 Streamer_SetIntData(STREAMER_TYPE_PICKUP, AprData[id][AprPickup], E_STREAMER_MODEL_ID, 1273);
682
683 foreach(new i : Player)
684 {
685 if(InApr[i] == id)
686 {
687 SetPVarInt(i, "AprPickupCooldown", gettime() + APR_COOLDOWN);
688 SetPlayerVirtualWorld(i, 0);
689 SetPlayerInterior(i, 0);
690 SetPlayerPos(i, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]);
691 InApr[i] = INVALID_APR_ID;
692 }
693
694 if(Iter_Contains(AprKeys[i], id)) Iter_Remove(AprKeys[i], id);
695 }
696
697 new query[64], data[e_furniture];
698 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprguns WHERE AprID=%d", id);
699 mysql_tquery(SQLHandle, query, "", "");
700
701 for(new i, maxval = Streamer_GetUpperBound(STREAMER_TYPE_OBJECT); i <= maxval; ++i)
702 {
703 if(!IsValidDynamicObject(i)) continue;
704 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, i, E_STREAMER_EXTRA_ID, data);
705 if(data[SQLID] > 0 && data[AprID] == id) DestroyDynamicObject(i);
706 }
707
708 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprfurnitures WHERE AprID=%d", id);
709 mysql_tquery(SQLHandle, query, "", "");
710
711 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprvisitors WHERE AprID=%d", id);
712 mysql_tquery(SQLHandle, query, "", "");
713
714 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprkeys WHERE AprID=%d", id);
715 mysql_tquery(SQLHandle, query, "", "");
716
717 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprsafelogs WHERE AprID=%d", id);
718 mysql_tquery(SQLHandle, query, "", "");
719 return 1;
720}
721
722stock SaveApr(id)
723{
724 if(!Iter_Contains(Aprs, id)) return 0;
725 new query[256];
726 mysql_format(SQLHandle, query, sizeof(query), "UPDATE aprs SET AprName='%e', AprOwner='%e', AprPassword='%e', AprSalePrice=%d, AprLock=%d, AprMoney=%d, LastEntered=%d WHERE ID=%d",
727 AprData[id][Name], AprData[id][Owner], AprData[id][Password], AprData[id][SalePrice], AprData[id][LockMode], AprData[id][SafeMoney], AprData[id][LastEntered], id);
728 mysql_tquery(SQLHandle, query, "", "");
729 AprData[id][Save] = false;
730 return 1;
731}
732
733stock UpdateAprLabel(id)
734{
735 if(!Iter_Contains(Aprs, id)) return 0;
736 new label[256];
737 if(!strcmp(AprData[id][Owner], "-")) {
738 format(label, sizeof(label), "{FFFFFF}Apartman na prodaju (ID: %d)\n{FFFFFF}%s\n{FFFFFF}Cena: {FFFFFF}$%s\nDa kupite koristite /kupiapartman", id, AprInteriors[ AprData[id][Interior] ][IntName], convertNumber(AprData[id][Price]));
739 }else{
740 if(AprData[id][SalePrice] > 0) {
741 format(label, sizeof(label), "{FFFFFF}%s Apartman na prodaju (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n{FFFFFF}Cena: {FFFFFF}$%s\nDa kupite koristite /kupiapartman", AprData[id][Owner], id, AprData[id][Name], AprInteriors[ AprData[id][Interior] ][IntName], convertNumber(AprData[id][SalePrice]));
742 }else{
743 format(label, sizeof(label), "{FFFFFF}%s Apartman (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n%s\n{FFFFFF}%s", AprData[id][Owner], id, AprData[id][Name], AprInteriors[ AprData[id][Interior] ][IntName], LockNames[ AprData[id][LockMode] ], AprData[id][Address]);
744 }
745 }
746
747 UpdateDynamic3DTextLabelText(AprData[id][AprLabel], 0xFFFFFFFF, label);
748 return 1;
749}
750
751stock Apr_PlayerInit(playerid)
752{
753 InApr[playerid] = LastVisitedApr[playerid] = INVALID_APR_ID;
754 ListPage[playerid] = SelectMode[playerid] = SELECT_MODE_NONE;
755 EditingFurniture[playerid] = false;
756 LoadAprKeys(playerid);
757 return 1;
758}
759
760stock OwnedAprs(playerid)
761{
762 #if LIMIT_PER_PLAYER != 0
763 new count;
764
765 foreach(new i : Aprs) if(!strcmp(AprData[i][Owner], Player_GetName(playerid), true)) count++;
766 return count;
767 #else
768 return 0;
769 #endif
770}
771
772forward ResetAndSaveAprs();
773forward LoadAprs();
774forward LoadFurnitures();
775forward GiveAprKeys(playerid);
776forward AprSaleMoney(playerid);
777
778public OnGameModeInit()
779{
780 new home;
781 home = CreateObject(19376,1698.765,-1424.589,36.223,0.000,90.000,0.000,300.000);
782 SetObjectMaterial(home, 0, 2755, "ab_dojowall", "mp_apt1_roomfloor", 0);
783 home = CreateObject(3034,1703.915,-1425.682,38.071,0.000,0.000,270.000,300.000);
784 SetObjectMaterial(home, 0, 4830, "airport2", "sanairtex3", 0);
785 home = CreateObject(19449,1703.902,-1423.889,35.460,0.000,0.000,0.000,300.000);
786 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
787 home = CreateObject(3034,1703.915,-1420.487,38.071,0.000,0.000,269.994,300.000);
788 SetObjectMaterial(home, 0, 4830, "airport2", "sanairtex3", 0);
789 home = CreateObject(19430,1703.903,-1423.084,38.959,0.000,0.000,0.000,300.000);
790 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
791 home = CreateObject(19449,1703.902,-1423.189,40.659,0.000,0.000,0.000,300.000);
792 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
793 home = CreateObject(19449,1699.220,-1428.260,38.060,0.000,0.000,90.000,300.000);
794 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
795 home = CreateObject(19443,1703.817,-1427.709,36.860,0.000,0.000,90.000,300.000);
796 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
797 home = CreateObject(19443,1703.113,-1428.474,36.860,0.000,0.000,0.000,300.000);
798 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
799 home = CreateObject(19443,1702.192,-1427.709,39.409,90.000,0.000,90.000,300.000);
800 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
801 home = CreateObject(19443,1700.531,-1428.424,40.360,0.000,0.000,0.000,300.000);
802 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
803 home = CreateObject(19443,1702.192,-1428.424,38.693,0.000,90.000,0.000,300.000);
804 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
805 home = CreateObject(19443,1698.760,-1428.424,40.360,0.000,0.000,0.000,300.000);
806 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
807 home = CreateObject(19443,1697.097,-1428.424,38.698,0.000,90.000,0.000,300.000);
808 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
809 home = CreateObject(19443,1696.360,-1428.424,36.860,0.000,0.000,0.000,300.000);
810 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
811 home = CreateObject(19443,1695.645,-1427.709,36.860,0.000,0.000,90.000,300.000);
812 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
813 home = CreateObject(19443,1697.099,-1427.709,39.409,90.000,0.000,90.000,300.000);
814 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
815 home = CreateObject(18084,1702.963,-1427.813,37.791,0.000,0.000,90.000,300.000);
816 SetObjectMaterial(home, 0, 8639, "chinatownmall", "ctmall10_64", 0);
817 home = CreateObject(18084,1702.963,-1418.331,37.791,0.000,0.000,90.000,300.000);
818 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
819 home = CreateObject(19376,1698.765,-1414.959,36.223,0.000,90.000,0.000,300.000);
820 SetObjectMaterial(home, 0, 2755, "ab_dojowall", "mp_apt1_roomfloor", 0);
821 home = CreateObject(19449,1703.902,-1414.286,35.460,0.000,0.000,0.000,300.000);
822 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
823 home = CreateObject(19449,1703.903,-1413.857,38.959,0.000,0.000,0.000,300.000);
824 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
825 home = CreateObject(2836,1699.354,-1421.389,36.310,0.000,0.000,0.000,300.000);
826 SetObjectMaterial(home, 0, 9494, "chinatownsfe", "chtown6_sf", 0);
827 SetObjectMaterial(home, 1, 9494, "chinatownsfe", "chtown6_sf", 0);
828 home = CreateObject(1744,1700.109,-1428.175,39.082,0.000,0.000,180.000,300.000);
829 SetObjectMaterial(home, 0, 9583, "bigshap_sfw", "bridge_walls2_sfw", 0);
830 SetObjectMaterial(home, 2, 9583, "bigshap_sfw", "bridge_walls2_sfw", 0);
831 home = CreateObject(1744,1700.109,-1428.175,38.613,0.000,0.000,180.000,300.000);
832 SetObjectMaterial(home, 0, 9583, "bigshap_sfw", "bridge_walls2_sfw", 0);
833 home = CreateObject(1819,1699.340,-1421.968,36.310,0.000,0.000,0.000,300.000);
834 SetObjectMaterial(home, 0, 3776, "ci_studio", "studioroof", 0);
835 home = CreateObject(19172,1700.026,-1412.530,37.060,0.000,0.000,180.000,300.000);
836 SetObjectMaterial(home, 0, 1677, "wshxrefhse2", "yellowbeige_128", 0);
837 home = CreateObject(1727,1701.858,-1421.901,36.310,0.000,0.000,270.000,300.000);
838 SetObjectMaterial(home, 1, 14407, "carter_block", "mp_carter_tramp", 0);
839 home = CreateObject(1726,1698.772,-1419.366,36.310,0.000,0.000,0.000,300.000);
840 SetObjectMaterial(home, 1, 14407, "carter_block", "mp_carter_tramp", 0);
841 home = CreateObject(2230,1701.666,-1428.126,36.310,0.000,0.000,180.000,300.000);
842 SetObjectMaterial(home, 2, 9583, "bigshap_sfw", "bridge_walls2_sfw", 0);
843 SetObjectMaterial(home, 3, 9583, "bigshap_sfw", "bridge_walls2_sfw", 0);
844 home = CreateObject(2230,1697.025,-1428.082,36.310,0.000,0.000,180.000,300.000);
845 SetObjectMaterial(home, 2, 9583, "bigshap_sfw", "bridge_walls2_sfw", 0);
846 home = CreateObject(1727,1701.834,-1420.316,36.310,0.000,0.000,269.994,300.000);
847 SetObjectMaterial(home, 1, 14407, "carter_block", "mp_carter_tramp", 0);
848 home = CreateObject(2836,1699.357,-1422.484,36.310,0.000,0.000,0.000,300.000);
849 SetObjectMaterial(home, 1, 9494, "chinatownsfe", "chtown6_sf", 0);
850 home = CreateObject(2281,1703.326,-1423.067,37.810,0.000,0.000,270.000,300.000);
851 SetObjectMaterial(home, 0, 18029, "genintintsmallrest", "GB_restaursmll04", 0);
852 SetObjectMaterial(home, 1, 14581, "ab_mafiasuitea", "walp45S", 0);
853 home = CreateObject(2319,1703.383,-1426.427,36.310,0.000,0.000,90.000,300.000);
854 SetObjectMaterial(home, 0, 18029, "genintintsmallrest", "GB_restaursmll04", 0);
855 home = CreateObject(2267,1699.648,-1428.145,37.798,0.000,0.000,180.000,300.000);
856 SetObjectMaterial(home, 1, 10370, "alleys_sfs", "ws_asphalt", 0);
857 home = CreateObject(19375,1692.152,-1421.379,39.839,0.000,90.000,0.000,300.000);
858 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
859 home = CreateObject(19375,1699.893,-1428.174,39.837,0.000,90.000,0.000,300.000);
860 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
861 home = CreateObject(19356,1703.187,-1422.285,39.839,0.000,90.000,89.999,300.000);
862 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
863 home = CreateObject(19375,1699.243,-1414.079,39.837,0.000,90.000,0.000,300.000);
864 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
865 home = CreateObject(19378,1698.404,-1421.291,40.261,0.000,90.000,0.000,300.000);
866 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
867 home = CreateObject(19449,1699.175,-1416.943,38.060,0.000,0.000,90.000,300.000);
868 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
869 home = CreateObject(19449,1695.262,-1414.822,38.060,0.000,0.000,0.000,300.000);
870 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
871 home = CreateObject(19174,1695.344,-1424.875,38.247,0.000,0.000,90.000,300.000);
872 SetObjectMaterial(home, 0, 14420, "dr_gsbits", "mp_apt1_pic7", 0);
873 home = CreateObject(19172,1695.348,-1418.626,38.205,0.000,0.000,90.000,300.000);
874 SetObjectMaterial(home, 0, 14420, "dr_gsbits", "mp_apt1_pic6", 0);
875 home = CreateObject(19356,1703.187,-1418.787,39.839,0.000,90.000,90.000,300.000);
876 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
877 home = CreateObject(18075,1696.683,-1416.975,40.012,0.000,0.000,0.000,300.000);
878 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
879 home = CreateObject(19357,1695.262,-1427.624,38.060,0.000,0.000,0.000,300.000);
880 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
881 home = CreateObject(19357,1695.262,-1424.441,38.060,0.000,0.000,0.000,300.000);
882 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
883 home = CreateObject(19387,1695.262,-1421.230,38.060,0.000,0.000,0.000,300.000);
884 SetObjectMaterial(home, 0, 14534, "ab_wooziea", "walp72S", 0);
885 home = CreateObject(19376,1688.279,-1421.379,36.223,0.000,90.000,0.000,300.000);
886 SetObjectMaterial(home, 0, 2755, "ab_dojowall", "mp_apt1_roomfloor", 0);
887 home = CreateObject(19390,1695.230,-1421.234,38.061,0.000,0.000,0.000,300.000);
888 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
889 home = CreateObject(19453,1695.230,-1427.604,38.060,0.000,0.000,0.000,300.000);
890 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
891 home = CreateObject(19453,1690.383,-1426.125,38.060,0.000,0.000,90.000,300.000);
892 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
893 home = CreateObject(19356,1693.584,-1422.907,35.560,0.000,0.000,90.000,300.000);
894 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
895 home = CreateObject(19356,1690.376,-1422.907,35.560,0.000,0.000,90.000,300.000);
896 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
897 home = CreateObject(19356,1691.520,-1424.430,35.560,0.000,0.000,0.000,300.000);
898 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
899 home = CreateObject(19356,1693.584,-1423.073,35.560,0.000,0.000,90.000,300.000);
900 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
901 home = CreateObject(19356,1690.376,-1423.073,35.560,0.000,0.000,90.000,300.000);
902 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
903 home = CreateObject(19356,1691.694,-1424.430,35.560,0.000,0.000,0.000,300.000);
904 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
905 home = CreateObject(19356,1695.055,-1424.769,35.560,0.000,0.000,0.000,300.000);
906 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
907 home = CreateObject(19356,1694.881,-1424.769,35.560,0.000,0.000,0.000,300.000);
908 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
909 home = CreateObject(19356,1693.387,-1425.968,35.560,0.000,0.000,90.000,300.000);
910 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
911 home = CreateObject(19356,1693.389,-1425.790,35.560,0.000,0.000,90.000,300.000);
912 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
913 home = CreateObject(19453,1691.343,-1421.300,38.060,0.000,0.000,0.000,300.000);
914 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
915 home = CreateObject(19453,1695.230,-1414.850,38.060,0.000,0.000,0.000,300.000);
916 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
917 home = CreateObject(19453,1690.428,-1416.980,38.060,0.000,0.000,90.000,300.000);
918 SetObjectMaterial(home, 0, 5766, "capitol_lawn", "capitol3_LAwN", 0);
919 SetObjectMaterial(home, 1, 15041, "bigsfsave", "AH_flroortile5", 0);
920 home = CreateObject(1499,1695.286,-1421.973,36.310,0.000,0.000,90.000,300.000);
921 SetObjectMaterial(home, 0, 14842, "genintintpolicea", "poldesk", 0);
922 SetObjectMaterial(home, 1, 1730, "cj_furniture", "CJ_WOOD5", 0);
923 home = CreateObject(19426,1694.796,-1423.965,35.558,0.000,0.000,0.000,300.000);
924 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
925 home = CreateObject(19426,1694.796,-1424.909,35.558,0.000,0.000,0.000,300.000);
926 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
927 home = CreateObject(19426,1693.911,-1425.708,35.558,0.000,0.000,90.000,300.000);
928 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
929 home = CreateObject(19426,1692.583,-1425.708,35.558,0.000,0.000,90.000,300.000);
930 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
931 home = CreateObject(19426,1691.781,-1424.821,35.558,0.000,0.000,0.000,300.000);
932 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
933 home = CreateObject(19426,1691.781,-1423.972,35.558,0.000,0.000,0.000,300.000);
934 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
935 home = CreateObject(19426,1692.671,-1423.160,35.558,0.000,0.000,90.000,300.000);
936 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
937 home = CreateObject(19426,1693.904,-1423.160,35.558,0.000,0.000,90.000,300.000);
938 SetObjectMaterial(home, 0, 9525, "boigas_sfw", "GEwhite1_64", 0);
939 home = CreateObject(19357,1693.193,-1424.700,36.253,0.000,90.000,0.000,300.000);
940 SetObjectMaterial(home, 0, 15041, "bigsfsave", "AH_flroortile5", 0);
941 home = CreateObject(2136,1691.915,-1420.859,36.310,0.000,0.000,90.000,300.000);
942 SetObjectMaterial(home, 1, 6094, "canalsg_law", "ws_sheetwood_clean", 0);
943 SetObjectMaterial(home, 2, 14476, "carlslounge", "AH_plnskirting", 0);
944 SetObjectMaterial(home, 3, 9525, "boigas_sfw", "GEwhite1_64", 0);
945 SetObjectMaterial(home, 4, 9525, "boigas_sfw", "GEwhite1_64", 0);
946 SetObjectMaterial(home, 5, 9525, "boigas_sfw", "GEwhite1_64", 0);
947 SetObjectMaterial(home, 6, 9525, "boigas_sfw", "GEwhite1_64", 0);
948 SetObjectMaterial(home, 7, 9525, "boigas_sfw", "GEwhite1_64", 0);
949 home = CreateObject(1495,1696.563,-1417.045,36.310,0.000,0.000,0.000,300.000);
950 SetObjectMaterial(home, 1, 14581, "ab_mafiasuitea", "walp45S", 0);
951 SetObjectMaterial(home, 2, 14842, "genintintpolicea", "poldesk", 0);
952 home = CreateObject(3034,1691.428,-1420.380,38.457,0.000,0.000,90.000,300.000);
953 SetObjectMaterial(home, 0, 14581, "ab_mafiasuitea", "barbersmir1", 0);
954 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
955 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
956 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
957 home = CreateObject(19430,1703.903,-1428.302,38.959,0.000,0.000,0.000,300.000);
958 home = CreateObject(18084,1702.963,-1425.204,37.791,0.000,0.000,90.000,300.000);
959 home = CreateObject(18084,1702.963,-1420.933,37.791,0.000,0.000,90.000,300.000);
960 home = CreateObject(1960,1703.797,-1423.101,38.168,0.000,0.000,90.000,300.000);
961 home = CreateObject(2315,1698.923,-1428.175,36.316,0.000,0.000,0.000,300.000);
962 home = CreateObject(1788,1700.296,-1427.913,36.880,0.000,0.000,180.000,300.000);
963 home = CreateObject(1785,1699.305,-1427.922,36.412,0.000,0.000,0.000,300.000);
964 home = CreateObject(19143,1697.099,-1422.000,39.880,289.000,0.000,0.000,300.000);
965 home = CreateObject(2252,1703.285,-1425.135,37.130,0.000,0.000,0.000,300.000);
966 home = CreateObject(2245,1703.285,-1426.107,37.116,0.000,0.000,0.000,300.000);
967 home = CreateObject(19380,1697.308,-1420.886,45.172,0.000,0.000,0.000,300.000);
968 home = CreateObject(19380,1698.572,-1418.810,45.172,0.000,0.000,90.000,300.000);
969 home = CreateObject(19380,1701.663,-1420.468,45.172,0.000,0.000,0.000,300.000);
970 home = CreateObject(19380,1698.083,-1423.443,45.172,0.000,0.000,90.000,300.000);
971 home = CreateObject(19143,1697.099,-1420.119,39.880,288.995,0.000,0.000,300.000);
972 home = CreateObject(19143,1698.297,-1418.500,39.880,288.995,0.000,0.000,300.000);
973 home = CreateObject(19143,1700.535,-1418.500,39.880,288.995,0.000,0.000,300.000);
974 home = CreateObject(19143,1701.742,-1420.119,39.880,288.995,0.000,0.000,300.000);
975 home = CreateObject(19143,1701.742,-1422.000,39.880,289.000,0.000,0.000,300.000);
976 home = CreateObject(19143,1698.297,-1423.459,39.880,288.995,0.000,0.000,300.000);
977 home = CreateObject(19143,1700.535,-1423.459,39.880,288.995,0.000,0.000,300.000);
978 home = CreateObject(2001,1695.874,-1427.125,36.310,0.000,0.000,0.000,300.000);
979 home = CreateObject(10444,1687.951,-1438.290,36.909,0.000,0.000,0.000,300.000);
980 home = CreateObject(2528,1693.305,-1417.572,36.310,0.000,0.000,0.000,300.000);
981 home = CreateObject(18075,1690.482,-1418.999,39.740,0.000,0.000,0.000,300.000);
982 return 1;
983}
984
985public ResetAndSaveAprs()
986{
987 foreach(new i : Aprs)
988 {
989 if(AprData[i][LastEntered] > 0 && gettime()-AprData[i][LastEntered] > 604800) ResetApr(i);
990 if(AprData[i][Save]) SaveApr(i);
991 }
992
993 return 1;
994}
995
996public LoadAprs()
997{
998 new rows = cache_num_rows();
999 if(rows)
1000 {
1001 new id, loaded, for_sale, label[256];
1002 while(loaded < rows)
1003 {
1004 cache_get_value_name_int(loaded, "ID", id);
1005 cache_get_value_name(loaded, "AprName", AprData[id][Name], MAX_APR_NAME);
1006 cache_get_value_name(loaded, "AprOwner", AprData[id][Owner], MAX_PLAYER_NAME);
1007 cache_get_value_name(loaded, "AprPassword", AprData[id][Password], MAX_APR_PASSWORD);
1008 cache_get_value_name_float(loaded, "aprX", AprData[id][aprX]);
1009 cache_get_value_name_float(loaded, "aprY", AprData[id][aprY]);
1010 cache_get_value_name_float(loaded, "aprZ", AprData[id][aprZ]);
1011 cache_get_value_name_int(loaded, "AprPrice", AprData[id][Price]);
1012 cache_get_value_name_int(loaded, "AprSalePrice", AprData[id][SalePrice]);
1013 cache_get_value_name_int(loaded, "AprInterior", AprData[id][Interior]);
1014 cache_get_value_name_int(loaded, "AprLock", AprData[id][LockMode]);
1015 cache_get_value_name_int(loaded, "AprMoney", AprData[id][SafeMoney]);
1016 cache_get_value_name_int(loaded, "LastEntered", AprData[id][LastEntered]);
1017 format(AprData[id][Address], MAX_APR_ADDRESS, "%d, %s, %s", id, GetZoneName(AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]), GetCityName(AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]));
1018
1019 if(strcmp(AprData[id][Owner], "-")) {
1020 if(AprData[id][SalePrice] > 0) {
1021 for_sale = 1;
1022 format(label, sizeof(label), "{FFFFFF}%s Apartman na prodaju (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n{FFFFFF}Cena: {FFFFFF}$%s\nDa kupite koristite /kupiapartman", AprData[id][Owner], id, AprData[id][Name], AprInteriors[ AprData[id][Interior] ][IntName], convertNumber(AprData[id][SalePrice]));
1023 }else{
1024 for_sale = 0;
1025 format(label, sizeof(label), "{FFFFFF}%s Apartman (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n%s\n{FFFFFF}%s", AprData[id][Owner], id, AprData[id][Name], AprInteriors[ AprData[id][Interior] ][IntName], LockNames[ AprData[id][LockMode] ], AprData[id][Address]);
1026 }
1027 }else{
1028 for_sale = 1;
1029 format(label, sizeof(label), "{FFFFFF}Apartman na prodaju (ID: %d)\n{FFFFFF}%s\n{FFFFFF}Cena: {FFFFFF}$%s\nDa kupite koristite /kupiapartman", id, AprInteriors[ AprData[id][Interior] ][IntName], convertNumber(AprData[id][Price]));
1030 }
1031
1032 AprData[id][AprPickup] = CreateDynamicPickup((!for_sale) ? 19522 : 1273, 1, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]);
1033 AprData[id][AprLabel] = CreateDynamic3DTextLabel(label, 0xFFFFFFFF, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]+0.35, 15.0, .testlos = 1);
1034 Iter_Add(Aprs, id);
1035 loaded++;
1036 }
1037
1038 printf("[Apartmen] >> Loading apartmans [%d].", loaded);
1039 }
1040
1041 return 1;
1042}
1043
1044public LoadFurnitures()
1045{
1046 new rows = cache_num_rows();
1047 if(rows)
1048 {
1049 new id, loaded, vw, interior, data[e_furniture];
1050 while(loaded < rows)
1051 {
1052 cache_get_value_name_int(loaded, "ID", data[SQLID]);
1053 cache_get_value_name_int(loaded, "AprID", data[AprID]);
1054 cache_get_value_name_int(loaded, "FurnitureID", data[ArrayID]);
1055 cache_get_value_name_float(loaded, "FurnitureX", data[furnitureX]);
1056 cache_get_value_name_float(loaded, "FurnitureY", data[furnitureY]);
1057 cache_get_value_name_float(loaded, "FurnitureZ", data[furnitureZ]);
1058 cache_get_value_name_float(loaded, "FurnitureRX", data[furnitureRX]);
1059 cache_get_value_name_float(loaded, "FurnitureRY", data[furnitureRY]);
1060 cache_get_value_name_float(loaded, "FurnitureRZ", data[furnitureRZ]);
1061 cache_get_value_name_int(loaded, "FurnitureVW", vw);
1062 cache_get_value_name_int(loaded, "FurnitureInt", interior);
1063
1064 id = CreateDynamicObject(
1065 AprFurnitures[ data[ArrayID] ][ModelID],
1066 data[furnitureX], data[furnitureY], data[furnitureZ],
1067 data[furnitureRX], data[furnitureRY], data[furnitureRZ],
1068 vw, interior
1069 );
1070
1071 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, id, E_STREAMER_EXTRA_ID, data);
1072 loaded++;
1073 }
1074
1075 printf("[Apartmen] >> Loading furnitures [%d].", loaded);
1076 }
1077
1078 return 1;
1079}
1080
1081public GiveAprKeys(playerid)
1082{
1083 if(!IsPlayerConnected(playerid)) return 1;
1084 new rows = cache_num_rows();
1085 if(rows)
1086 {
1087 new loaded, Apr_id;
1088 while(loaded < rows)
1089 {
1090 cache_get_value_name_int(loaded, "AprID", Apr_id);
1091 Iter_Add(AprKeys[playerid], Apr_id);
1092 loaded++;
1093 }
1094 }
1095
1096 return 1;
1097}
1098
1099public AprSaleMoney(playerid)
1100{
1101 new rows = cache_num_rows();
1102 if(rows)
1103 {
1104 new new_owner[MAX_PLAYER_NAME], price, tnid, string[128];
1105 for(new i; i < rows; i++)
1106 {
1107 cache_get_value_name(i, "NewOwner", new_owner);
1108 cache_get_value_name_int(i, "Price", price);
1109 cache_get_value_name_int(i, "ID", tnid);
1110
1111 format(string, sizeof(string), "Prodaj si apartman %s za $%s. [( TRANSAKCIJA ID: #%d )]", new_owner, convertNumber(price), tnid);
1112 SendClientMessage(playerid, -1, string);
1113 GivePlayerMoney(playerid, price);
1114 }
1115
1116 new query[128];
1117 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprsales WHERE OldOwner='%e'", Player_GetName(playerid));
1118 mysql_tquery(SQLHandle, query, "", "");
1119 }
1120
1121 return 1;
1122}
1123
1124public OnFilterScriptInit()
1125{
1126 for(new i; i < MAX_APARTMANS; ++i)
1127 {
1128 AprData[i][AprLabel] = Text3D: INVALID_3DTEXT_ID;
1129 AprData[i][AprPickup] = -1;
1130 AprData[i][AprIcon] = -1;
1131 AprData[i][Save] = false;
1132 }
1133
1134 for(new i; i < sizeof(AprInteriors); ++i)
1135 {
1136 AprInteriors[i][intLabel] = CreateDynamic3DTextLabel("Izadji napolje", 0xE67E22FF, AprInteriors[i][intX], AprInteriors[i][intY], AprInteriors[i][intZ]+0.35, 10.0, .testlos = 1, .interiorid = AprInteriors[i][intID]);
1137 AprInteriors[i][intPickup] = CreateDynamicPickup(1318, 1, AprInteriors[i][intX], AprInteriors[i][intY], AprInteriors[i][intZ], .interiorid = AprInteriors[i][intID]);
1138 }
1139
1140 Iter_Init(AprKeys);
1141 DisableInteriorEnterExits();
1142 SQLHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DBNAME);
1143 mysql_log(ERROR | WARNING);
1144 if(mysql_errno() != 0) return print("[Apartman] MySql >> Neuspesno konektovanje na bazu podataka");
1145
1146 /* Create Tables */
1147 new query[1024];
1148 strcat(query, "CREATE TABLE IF NOT EXISTS `Aprs` (\
1149 `ID` int(11) NOT NULL,\
1150 `AprName` varchar(48) NOT NULL default 'Apr For Sale',\
1151 `AprOwner` varchar(24) NOT NULL default '-',\
1152 `AprPassword` varchar(16) NOT NULL default '-',\
1153 `aprX` float NOT NULL,\
1154 `aprY` float NOT NULL,\
1155 `aprZ` float NOT NULL,\
1156 `AprPrice` int(11) NOT NULL,\
1157 `AprInterior` tinyint(4) NOT NULL default '0',\
1158 `AprLock` tinyint(4) NOT NULL default '0',\
1159 `AprMoney` int(11) NOT NULL default '0',"
1160 );
1161
1162 strcat(query, "`LastEntered` int(11) NOT NULL,\
1163 PRIMARY KEY (`ID`),\
1164 UNIQUE KEY `ID_2` (`ID`),\
1165 KEY `ID` (`ID`)\
1166 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
1167 );
1168
1169 mysql_tquery(SQLHandle, query, "", "");
1170
1171 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `Aprfurnitures` (\
1172 `ID` int(11) NOT NULL auto_increment,\
1173 `AprID` int(11) NOT NULL,\
1174 `FurnitureID` tinyint(11) NOT NULL,\
1175 `FurnitureX` float NOT NULL,\
1176 `FurnitureY` float NOT NULL,\
1177 `FurnitureZ` float NOT NULL,\
1178 `FurnitureRX` float NOT NULL,\
1179 `FurnitureRY` float NOT NULL,\
1180 `FurnitureRZ` float NOT NULL,\
1181 `FurnitureVW` int(11) NOT NULL,\
1182 `FurnitureInt` int(11) NOT NULL,\
1183 PRIMARY KEY (`ID`)\
1184 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1185
1186 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `Aprguns` (\
1187 `AprID` int(11) NOT NULL,\
1188 `WeaponID` tinyint(4) NOT NULL,\
1189 `Ammo` int(11) NOT NULL,\
1190 UNIQUE KEY `AprID_2` (`AprID`,`WeaponID`),\
1191 KEY `AprID` (`AprID`),\
1192 CONSTRAINT `Aprguns_ibfk_1` FOREIGN KEY (`AprID`) REFERENCES `Aprs` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE\
1193 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;", "", "");
1194
1195 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `Aprvisitors` (\
1196 `AprID` int(11) NOT NULL,\
1197 `Visitor` varchar(24) NOT NULL,\
1198 `Date` int(11) NOT NULL\
1199 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1200
1201 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `Aprkeys` (\
1202 `AprID` int(11) NOT NULL,\
1203 `Player` varchar(24) NOT NULL,\
1204 `Date` int(11) NOT NULL\
1205 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1206
1207 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `Aprsafelogs` (\
1208 `AprID` int(11) NOT NULL,\
1209 `Type` int(11) NOT NULL,\
1210 `Amount` int(11) NOT NULL,\
1211 `Date` int(11) NOT NULL\
1212 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1213
1214 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `Aprsales` (\
1215 `ID` int(11) NOT NULL AUTO_INCREMENT,\
1216 `OldOwner` varchar(24) NOT NULL,\
1217 `NewOwner` varchar(24) NOT NULL,\
1218 `Price` int(11) NOT NULL,\
1219 PRIMARY KEY (`ID`)\
1220 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
1221
1222 // 1.3 update, add AprSalePrice to the Aprs table
1223 if(!fexist("Apr_updated.txt"))
1224 {
1225 mysql_tquery(SQLHandle, "ALTER TABLE Aprs ADD AprSalePrice INT(11) NOT NULL AFTER AprPrice");
1226
1227 new File: updateFile = fopen("Apr_updated.txt", io_append);
1228 if(updateFile)
1229 {
1230 fwrite(updateFile, "Nemoj brisati ovaj fajl.");
1231 fclose(updateFile);
1232 }
1233 }
1234
1235 /* Loading & Stuff */
1236 mysql_tquery(SQLHandle, "SELECT * FROM Aprs", "LoadAprs", "");
1237 mysql_tquery(SQLHandle, "SELECT * FROM Aprfurnitures", "LoadFurnitures", "");
1238 foreach(new i : Player) Apr_PlayerInit(i);
1239
1240 AprTimer = SetTimer("ResetAndSaveAprs", 10 * 60000, true);
1241 return 1;
1242}
1243
1244public OnFilterScriptExit()
1245{
1246 foreach(new i : Aprs) if(AprData[i][Save]) SaveApr(i);
1247 KillTimer(AprTimer);
1248 return 1;
1249}
1250
1251public OnPlayerConnect(playerid)
1252{
1253 Apr_PlayerInit(playerid);
1254 return 1;
1255}
1256
1257public OnPlayerSpawn(playerid)
1258{
1259 InApr[playerid] = INVALID_APR_ID;
1260
1261 new query[128];
1262 mysql_format(SQLHandle, query, sizeof(query), "SELECT * FROM Aprsales WHERE OldOwner='%e'", Player_GetName(playerid));
1263 mysql_tquery(SQLHandle, query, "AprSaleMoney", "i", playerid);
1264 return 1;
1265}
1266public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
1267{
1268 if(GetPVarInt(playerid, "AprPickupCooldown") < gettime())
1269 {
1270 if(InApr[playerid] == INVALID_APR_ID) {
1271 foreach(new i : Aprs)
1272 {
1273 if(newkeys & KEY_SECONDARY_ATTACK)
1274 {
1275 SetPVarInt(playerid, "AprPickupCooldown", gettime() + APR_COOLDOWN);
1276 SetPVarInt(playerid, "PickupAprID", i);
1277
1278 if(!strcmp(AprData[i][Owner], "-"))
1279 {
1280 if(AprData[i][SalePrice] > 0 && strcmp(AprData[i][Owner], Player_GetName(playerid)))
1281 {
1282 new string[64];
1283 format(string, sizeof(string), "Ovaj Apartman je na prodaju!\n\nCena: {FFFFFF}$%s", convertNumber(AprData[i][SalePrice]));
1284 ShowPlayerDialog(playerid, DIALOG_BUY_APR_FROM_OWNER, DIALOG_STYLE_MSGBOX, "Apartman na prodaju", string, "Kupi", "Odbi");
1285 return 1;
1286 }
1287
1288 switch(AprData[i][LockMode])
1289 {
1290 case LOCK_MODE_NOLOCK: SendToApr(playerid, i);
1291 case LOCK_MODE_PASSWORD: ShowPlayerDialog(playerid, DIALOG_APR_PASSWORD, DIALOG_STYLE_INPUT, "Apartmen Zastita", "Ovaj Apartman je zasticen lozinkom.\n\nUkucaj lozinku:", "Done", "Close");
1292 case LOCK_MODE_KEYS:
1293 {
1294 new gotkeys = Iter_Contains(AprKeys[playerid], i);
1295 if(!gotkeys) if(!strcmp(AprData[i][Owner], Player_GetName(playerid))) gotkeys = 1;
1296
1297 if(gotkeys) {
1298 SendToApr(playerid, i);
1299 }else{
1300 SendClientMessage(playerid, -1, "Nemate sifru za ovaj apartman ne mozete uci");
1301 }
1302 }
1303
1304 case LOCK_MODE_OWNER:
1305 {
1306 if(!strcmp(AprData[i][Owner], Player_GetName(playerid))) {
1307 SetPVarInt(playerid, "AprPickupCooldown", gettime() + APR_COOLDOWN);
1308 SendToApr(playerid, i);
1309 }else{
1310 SendClientMessage(playerid, -1, "Žao nam je, samo vlasnik može uci u ovaj apartman.");
1311 }
1312 }
1313 }
1314 }
1315
1316 return 1;
1317 }
1318 }
1319 }else{
1320 for(new i; i < sizeof(AprInteriors); ++i)
1321 {
1322 if(newkeys & KEY_SECONDARY_ATTACK)
1323 {
1324 SetPVarInt(playerid, "AprPickupCooldown", gettime() + APR_COOLDOWN);
1325 SetPlayerVirtualWorld(playerid, 0);
1326 SetPlayerInterior(playerid, 0);
1327 SetPlayerPos(playerid, AprData[ InApr[playerid] ][aprX], AprData[ InApr[playerid] ][aprY], AprData[ InApr[playerid] ][aprZ]);
1328 InApr[playerid] = INVALID_APR_ID;
1329 return 1;
1330 }
1331 }
1332 }
1333 }
1334
1335 return 1;
1336}
1337
1338public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
1339{
1340 if(dialogid == DIALOG_BUY_APR)
1341 {
1342 if(!response) return 1;
1343 new id = GetPVarInt(playerid, "PickupAprID");
1344 if(!IsPlayerInRangeOfPoint(playerid, 2.0, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ])) return SendClientMessage(playerid, -1, "Nisi blizu ni jednog apartmana.");
1345 #if LIMIT_PER_PLAYER > 0
1346 if(OwnedAprs(playerid) + 1 > LIMIT_PER_PLAYER) return SendClientMessage(playerid, -1, "Ne mozes kupiti vise apartmana.");
1347 #endif
1348 if(AprData[id][Price] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "Ne možete si to priuštiti apartman.");
1349 if(strcmp(AprData[id][Owner], "-")) return SendClientMessage(playerid, -1, "Vec imas neki apartman.");
1350 GivePlayerMoney(playerid, -AprData[id][Price]);
1351 GetPlayerName(playerid, AprData[id][Owner], MAX_PLAYER_NAME);
1352 AprData[id][LastEntered] = gettime();
1353 AprData[id][Save] = true;
1354
1355 UpdateAprLabel(id);
1356 Streamer_SetIntData(STREAMER_TYPE_PICKUP, AprData[id][AprPickup], E_STREAMER_MODEL_ID, 19522);
1357 SendToApr(playerid, id);
1358 return 1;
1359 }
1360
1361 if(dialogid == DIALOG_APR_PASSWORD)
1362 {
1363 if(!response) return 1;
1364 new id = GetPVarInt(playerid, "PickupAprID");
1365 if(!IsPlayerInRangeOfPoint(playerid, 2.0, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ])) return SendClientMessage(playerid, -1, "Nisu blizu apartmana.");
1366 if(!(1 <= strlen(inputtext) <= MAX_APR_PASSWORD)) return ShowPlayerDialog(playerid, DIALOG_APR_PASSWORD, DIALOG_STYLE_INPUT, "Apartman Zastita", "Ovaj apartmen je zasticen lozinkom.\n\nUkucaj lozinku:\n\n{FFFFFF}Lozinka koju ste unijeli je ili prekratka ili predugaÄka.", "Pokusaj opet", "Zatvori");
1367 if(strcmp(AprData[id][Password], inputtext)) return ShowPlayerDialog(playerid, DIALOG_APR_PASSWORD, DIALOG_STYLE_INPUT, "Apartman Zastita", "Ovaj apartmen je zasticen lozinkom.\n\nUkucaj lozinku:\n\n{FFFFFF}Pogresna sifra.", "Pokusaj opet", "Zatvori");
1368 SendToApr(playerid, id);
1369 return 1;
1370 }
1371
1372 if(dialogid == DIALOG_APR_MENU)
1373 {
1374 if(!response) return 1;
1375 new id = InApr[playerid];
1376 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1377 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Nisi vlasnik apartmana.");
1378
1379 if(listitem == 0) ShowPlayerDialog(playerid, DIALOG_APR_NAME, DIALOG_STYLE_INPUT, "Apartman Ime", "Ukucajte novo ime apartmana:", "Promeni", "Nazad");
1380 if(listitem == 1) ShowPlayerDialog(playerid, DIALOG_APR_NEW_PASSWORD, DIALOG_STYLE_INPUT, "Apartman Zastita", "Ukucaj novu sifru apartmana:", "Promeni", "Nazad");
1381 if(listitem == 2) ShowPlayerDialog(playerid, DIALOG_APR_LOCK, DIALOG_STYLE_LIST, "Apartman Zakljucavanje", "Nije zakljucan\nSifrom zakljucan\nKljuc\nSamo Vlasnik Apartmana", "Promeni", "Nazad");
1382 if(listitem == 3)
1383 {
1384 if(AprData[id][SalePrice] > 0)
1385 {
1386 SendClientMessage(playerid, -1, "Ne možete koristiti ovu funkciju dok je apartmen na prodaju.");
1387 return ShowAprMenu(playerid);
1388 }
1389
1390 new string[144];
1391 format(string, sizeof(string), "Uzmi novac iz sefa {FFFFFF}($%s)\nStavite novac na sigurno {FFFFFF}($%s)\nPrikaži istoriju sefa\nOcisti sef istoriju", convertNumber(AprData[id][SafeMoney]), convertNumber(GetPlayerMoney(playerid)));
1392 ShowPlayerDialog(playerid, DIALOG_SAFE_MENU, DIALOG_STYLE_LIST, "Apartman Sef", string, "Odaberi", "Nazad");
1393 }
1394
1395 if(listitem == 4)
1396 {
1397 if(AprData[id][SalePrice] > 0)
1398 {
1399 SendClientMessage(playerid, -1, "Ne možete koristiti ovu funkciju dok je apartmen na prodaju.");
1400 return ShowAprMenu(playerid);
1401 }
1402
1403 ShowPlayerDialog(playerid, DIALOG_FURNITURE_MENU, DIALOG_STYLE_LIST, "Namestaj", "Kupi namestaj\nIzmeni namestaj\nProdaj namestaj\nProdaj ceo namestaj", "Izaberi", "Nazad");
1404 }
1405
1406 if(listitem == 5) ShowPlayerDialog(playerid, DIALOG_GUNS_MENU, DIALOG_STYLE_LIST, "Oruzije", "Stavi oruzije\nUzmi oruzije", "Izaberi", "Nazad");
1407 if(listitem == 6)
1408 {
1409 ListPage[playerid] = 0;
1410 ShowPlayerDialog(playerid, DIALOG_VISITORS_MENU, DIALOG_STYLE_LIST, "Gost", "Pogledaj istoriju gostija\nObrisi istoriju gostija", "Izaberi", "Nazad");
1411 }
1412
1413 if(listitem == 7)
1414 {
1415 ListPage[playerid] = 0;
1416 ShowPlayerDialog(playerid, DIALOG_KEYS_MENU, DIALOG_STYLE_LIST, "Sifra", "Pregled kljuÄnih vlasnika\nPromeni bravu", "Izaberi", "Nazad");
1417 }
1418
1419 if(listitem == 8)
1420 {
1421 new string[128];
1422 format(string, sizeof(string), "Apartmen vlasnik %s je izbacio sve iz apartmana.", AprData[id][Owner]);
1423
1424 foreach(new i : Player)
1425 {
1426 if(i == playerid) continue;
1427 if(InApr[i] == id)
1428 {
1429 SetPVarInt(i, "AprPickupCooldown", gettime() + APR_COOLDOWN);
1430 SetPlayerVirtualWorld(i, 0);
1431 SetPlayerInterior(i, 0);
1432 SetPlayerPos(i, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]);
1433 InApr[i] = INVALID_APR_ID;
1434 SendClientMessage(i, -1, string);
1435 }
1436 }
1437
1438 SendClientMessage(playerid, -1, "Sve ste izbacili sa vašeg Apartmana.");
1439 }
1440
1441 if(listitem == 9)
1442 {
1443 new string[128];
1444 format(string, sizeof(string), "Prodaj odmah\t{FFFFFF}$%s\n%s", convertNumber(floatround(AprData[id][Price]*0.85)), (AprData[id][SalePrice] > 0) ? ("Remove From Sale") : ("Put For Sale"));
1445 ShowPlayerDialog(playerid, DIALOG_SELL_APR, DIALOG_STYLE_TABLIST, "Prodaj apartman", string, "Izaberi", "Nazad");
1446 }
1447 if(listitem == 10)
1448 {
1449 SendClientMessage(playerid, -1, "Treba dodati jos ako ne uradim ja ubaci ti");
1450 }
1451 return 1;
1452 }
1453
1454 if(dialogid == DIALOG_APR_NAME)
1455 {
1456 if(!response) return ShowAprMenu(playerid);
1457 new id = InApr[playerid];
1458 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1459 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1460 if(!(1 <= strlen(inputtext) <= MAX_APR_NAME)) return ShowPlayerDialog(playerid, DIALOG_APR_NAME, DIALOG_STYLE_INPUT, "Apartname ime", "Unesi ime apartmana:\n\n{FFFFFF}Sifra je preduga ili prekratka", "Promeni", "Nazad");
1461 format(AprData[id][Name], MAX_APR_NAME, "%s", inputtext);
1462 AprData[id][Save] = true;
1463
1464 UpdateAprLabel(id);
1465 ShowAprMenu(playerid);
1466 return 1;
1467 }
1468
1469 if(dialogid == DIALOG_APR_NEW_PASSWORD)
1470 {
1471 if(!response) return ShowAprMenu(playerid);
1472 new id = InApr[playerid];
1473 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1474 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1475 if(!(1 <= strlen(inputtext) <= MAX_APR_PASSWORD)) return ShowPlayerDialog(playerid, DIALOG_APR_NEW_PASSWORD, DIALOG_STYLE_INPUT, "Apartman Zastita", "Write a new password for this Apr:\n\n{E74C3C}The pasword you entered is either too short or too long.", "Change", "Back");
1476 format(AprData[id][Password], MAX_APR_PASSWORD, "%s", inputtext);
1477 AprData[id][Save] = true;
1478 ShowAprMenu(playerid);
1479 return 1;
1480 }
1481
1482 if(dialogid == DIALOG_APR_LOCK)
1483 {
1484 if(!response) return ShowAprMenu(playerid);
1485 new id = InApr[playerid];
1486 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1487 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1488 AprData[id][LockMode] = listitem;
1489 AprData[id][Save] = true;
1490
1491 UpdateAprLabel(id);
1492 ShowAprMenu(playerid);
1493 return 1;
1494 }
1495
1496 if(dialogid == DIALOG_SAFE_MENU)
1497 {
1498 if(!response) return ShowAprMenu(playerid);
1499 new id = InApr[playerid];
1500 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1501 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1502 if(AprData[id][SalePrice] > 0) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu funkciju dok je apartman na prodaju.");
1503 if(listitem == 0) ShowPlayerDialog(playerid, DIALOG_SAFE_TAKE, DIALOG_STYLE_INPUT, "Sef: Uzeti novac", "Upisite iznos koji zelite uzeti iz sefa:", "Uzmi", "Nazad");
1504 if(listitem == 1) ShowPlayerDialog(playerid, DIALOG_SAFE_PUT, DIALOG_STYLE_INPUT, "Safe: Staviti novac", "Write the amount you want to put to safe:", "Ostavi", "Nazad");
1505 if(listitem == 2)
1506 {
1507 ListPage[playerid] = 0;
1508
1509 new query[200], Cache: safelog;
1510 mysql_format(SQLHandle, query, sizeof(query), "SELECT Type, Amount, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as TransactionDate FROM Aprsafelogs WHERE AprID=%d ORDER BY Date DESC LIMIT 0, 15", id);
1511 safelog = mysql_query(SQLHandle, query);
1512 new rows = cache_num_rows();
1513 if(rows) {
1514 new list[1024], type, amount, date[20];
1515 format(list, sizeof(list), "Akcija\tDatum\n");
1516 for(new i; i < rows; ++i)
1517 {
1518 cache_get_value_name_int(i, "Tip", type);
1519 cache_get_value_name_int(i, "Iznos", amount);
1520 cache_get_value_name(i, "Datum transakcije", date);
1521
1522 format(list, sizeof(list), "%s%s $%s\t{FFFFFF}%s\n", list, TransactionNames[type], convertNumber(amount), date);
1523 }
1524
1525 ShowPlayerDialog(playerid, DIALOG_SAFE_HISTORY, DIALOG_STYLE_TABLIST_HEADERS, "Sef Istorija (STRANA 1)", list, "Dalje", "Proslo");
1526 }else{
1527 SendClientMessage(playerid, -1, "Ne mogu da nađem nikakvu istoriju.");
1528 }
1529
1530 cache_delete(safelog);
1531 }
1532
1533 if(listitem == 3)
1534 {
1535 new query[64];
1536 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprsafelogs WHERE AprID=%d", id);
1537 mysql_tquery(SQLHandle, query, "", "");
1538 ShowAprMenu(playerid);
1539 }
1540
1541 return 1;
1542 }
1543
1544 if(dialogid == DIALOG_SAFE_TAKE)
1545 {
1546 if(!response) return ShowAprMenu(playerid);
1547 new id = InApr[playerid];
1548 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1549 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1550 if(AprData[id][SalePrice] > 0) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu funkciju dok je apartmana na prodaju.");
1551 new amount = strval(inputtext);
1552 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, DIALOG_SAFE_TAKE, DIALOG_STYLE_INPUT, "Sef: Uzeti novac", "Upišite iznos koji želite da uzmete iz sefa: n {E74C3C} Neispravan iznos. Možete uzeti između $ 1 - $ 10,000,000 odjednom.", "Uzmi", "Nazad");
1553 if(amount > AprData[id][SafeMoney]) return ShowPlayerDialog(playerid, DIALOG_SAFE_TAKE, DIALOG_STYLE_INPUT, "Sef: Stavit novac", "Napiši iznos koji želite da uzmete iz sefa: n {E74C3C} Nemate toliko novca u sefu.", "Uzmi", "Nazad");
1554 new query[128];
1555 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO Aprsafelogs SET AprID=%d, Type=0, Amount=%d, Date=UNIX_TIMESTAMP()", id, amount);
1556 mysql_tquery(SQLHandle, query, "", "");
1557
1558 GivePlayerMoney(playerid, amount);
1559 AprData[id][SafeMoney] -= amount;
1560 AprData[id][Save] = true;
1561 ShowAprMenu(playerid);
1562 return 1;
1563 }
1564
1565 if(dialogid == DIALOG_SAFE_PUT)
1566 {
1567 if(!response) return ShowAprMenu(playerid);
1568 new id = InApr[playerid];
1569 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1570 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1571 new amount = strval(inputtext);
1572 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, DIALOG_SAFE_PUT, DIALOG_STYLE_INPUT, "Safe: Put Money", "Write the amount you want to put to safe:\n\n{E74C3C}Invalid amount. You can put between $1 - $10,000,000 at a time.", "Put", "Back");
1573 if(amount > GetPlayerMoney(playerid)) return ShowPlayerDialog(playerid, DIALOG_SAFE_PUT, DIALOG_STYLE_INPUT, "Safe: Put Money", "Write the amount you want to put to safe:\n\n{E74C3C}You don't have that much money on you.", "Put", "Back");
1574 new query[128];
1575 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO Aprsafelogs SET AprID=%d, Type=1, Amount=%d, Date=UNIX_TIMESTAMP()", id, amount);
1576 mysql_tquery(SQLHandle, query, "", "");
1577
1578 GivePlayerMoney(playerid, -amount);
1579 AprData[id][SafeMoney] += amount;
1580 AprData[id][Save] = true;
1581 ShowAprMenu(playerid);
1582 return 1;
1583 }
1584
1585 if(dialogid == DIALOG_GUNS_MENU)
1586 {
1587 if(!response) return ShowAprMenu(playerid);
1588 new id = InApr[playerid];
1589 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1590 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1591 if(listitem == 0)
1592 {
1593 if(GetPlayerWeapon(playerid) == 0) return SendClientMessage(playerid, -1, "Ne možete staviti svoje pesnice u svoj apartman.");
1594 new query[128], weapon = GetPlayerWeapon(playerid), ammo = GetPlayerAmmo(playerid);
1595 RemovePlayerWeapon(playerid, weapon);
1596 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO Aprguns VALUES (%d, %d, %d) ON DUPLICATE KEY UPDATE Ammo=Ammo+%d", id, weapon, ammo, ammo);
1597 mysql_tquery(SQLHandle, query, "", "");
1598 ShowAprMenu(playerid);
1599 }
1600
1601 if(listitem == 1)
1602 {
1603 new query[80], Cache: weapons;
1604 mysql_format(SQLHandle, query, sizeof(query), "SELECT WeaponID, Ammo FROM Aprguns WHERE AprID=%d ORDER BY WeaponID ASC", id);
1605 weapons = mysql_query(SQLHandle, query);
1606 new rows = cache_num_rows();
1607 if(rows) {
1608 new list[512], weapname[32], weapon_id, weapon_ammo;
1609 format(list, sizeof(list), "#\tOruzije Ime\tMetkovi\n");
1610 for(new i; i < rows; ++i)
1611 {
1612 cache_get_value_name_int(i, "Oruzije", weapon_id);
1613 cache_get_value_name_int(i, "Metkovi", weapon_ammo);
1614
1615 GetWeaponName(weapon_id, weapname, sizeof(weapname));
1616 format(list, sizeof(list), "%s%d\t%s\t%s\n", list, i+1, weapname, convertNumber(weapon_ammo));
1617 }
1618
1619 ShowPlayerDialog(playerid, DIALOG_GUNS_TAKE, DIALOG_STYLE_TABLIST_HEADERS, "Apartman oruzije", list, "Uzmi", "Nazad");
1620 }else{
1621 SendClientMessage(playerid, -1, "Nemate oružje u vašem apartmanu.");
1622 }
1623
1624 cache_delete(weapons);
1625 }
1626
1627 return 1;
1628 }
1629
1630 if(dialogid == DIALOG_GUNS_TAKE)
1631 {
1632 if(!response) return ShowAprMenu(playerid);
1633 new id = InApr[playerid];
1634 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1635 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1636 new query[96], Cache: weapon;
1637 mysql_format(SQLHandle, query, sizeof(query), "SELECT WeaponID, Ammo FROM Aprguns WHERE AprID=%d ORDER BY WeaponID ASC LIMIT %d, 1", id, listitem);
1638 weapon = mysql_query(SQLHandle, query);
1639 new rows = cache_num_rows();
1640 if(rows) {
1641 new string[64], weapname[32], weaponid, ammo;
1642 cache_get_value_name_int(0, "Oruzije", weaponid);
1643 cache_get_value_name_int(0, "Metkovi", ammo);
1644
1645 GetWeaponName(weaponid, weapname, sizeof(weapname));
1646 GivePlayerWeapon(playerid, weaponid, ammo);
1647 format(string, sizeof(string), "Uzeli ste %s sa vašeg apartmana", weapname);
1648 SendClientMessage(playerid, 0xFFFFFFFF, string);
1649 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprguns WHERE AprID=%d AND WeaponID=%d", id, weaponid);
1650 mysql_tquery(SQLHandle, query, "", "");
1651 }else{
1652 SendClientMessage(playerid, -1, "Ne mogu naci to oružje.");
1653 }
1654
1655 cache_delete(weapon);
1656 return 1;
1657 }
1658
1659 if(dialogid == DIALOG_FURNITURE_MENU)
1660 {
1661 if(!response) return ShowAprMenu(playerid);
1662 new id = InApr[playerid];
1663 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1664 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1665 if(AprData[id][SalePrice] > 0) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu funkciju dok je apartman na prodaju.");
1666
1667 if(listitem == 0)
1668 {
1669 new list[512];
1670 format(list, sizeof(list), "#\tNamestaj Ime\tCena\n");
1671 for(new i; i < sizeof(AprFurnitures); ++i)
1672 {
1673 format(list, sizeof(list), "%s%d\t%s\t$%s\n", list, i+1, AprFurnitures[i][Name], convertNumber(AprFurnitures[i][Price]));
1674 }
1675
1676 ShowPlayerDialog(playerid, DIALOG_FURNITURE_BUY, DIALOG_STYLE_TABLIST_HEADERS, "Kupi Namestaj", list, "Kupi", "Nazad");
1677 }
1678
1679 if(listitem == 1)
1680 {
1681 SelectMode[playerid] = SELECT_MODE_EDIT;
1682 SelectObject(playerid);
1683 SendClientMessage(playerid, 0xFFFFFFFF, "Kliknite na namještaj koji želite urediti.");
1684 }
1685
1686 if(listitem == 2)
1687 {
1688 SelectMode[playerid] = SELECT_MODE_SELL;
1689 SelectObject(playerid);
1690 SendClientMessage(playerid, 0xFFFFFFFF, "Kliknite na namještaj koji želite prodati.");
1691 }
1692
1693 if(listitem == 3)
1694 {
1695 new money, sold, data[e_furniture], query[64];
1696 for(new i; i < Streamer_GetUpperBound(STREAMER_TYPE_OBJECT); ++i)
1697 {
1698 if(!IsValidDynamicObject(i)) continue;
1699 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, i, E_STREAMER_EXTRA_ID, data);
1700 if(data[SQLID] > 0 && data[AprID] == id)
1701 {
1702 sold++;
1703 money += AprFurnitures[ data[ArrayID] ][Price];
1704 DestroyDynamicObject(i);
1705 }
1706 }
1707
1708 new string[64];
1709 format(string, sizeof(string), "Prodao si %d namestaj za $%s.", sold, convertNumber(money));
1710 SendClientMessage(playerid, -1, string);
1711 GivePlayerMoney(playerid, money);
1712
1713 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprfurnitures WHERE AprID=%d", id);
1714 mysql_tquery(SQLHandle, query, "", "");
1715 }
1716
1717 return 1;
1718 }
1719
1720 if(dialogid == DIALOG_FURNITURE_BUY)
1721 {
1722 if(!response) return ShowAprMenu(playerid);
1723 new id = InApr[playerid];
1724 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1725 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1726 if(AprData[id][SalePrice] > 0) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu funkciju dok je apartman na prodaju.");
1727 if(AprFurnitures[listitem][Price] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "Ne možete si priuštiti ovaj namještaj.");
1728 GivePlayerMoney(playerid, -AprFurnitures[listitem][Price]);
1729 new Float: x, Float: y, Float: z;
1730 GetPlayerPos(playerid, x, y, z);
1731 GetXYInFrontOfPlayer(playerid, x, y, 3.0);
1732 new objectid = CreateDynamicObject(AprFurnitures[listitem][ModelID], x, y, z, 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)), query[256];
1733 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO Aprfurnitures SET AprID=%d, FurnitureID=%d, FurnitureX=%f, FurnitureY=%f, FurnitureZ=%f, FurnitureVW=%d, FurnitureInt=%d", id, listitem, x, y, z, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
1734 new Cache: add = mysql_query(SQLHandle, query), data[e_furniture];
1735 data[SQLID] = cache_insert_id();
1736 data[AprID] = id;
1737 data[ArrayID] = listitem;
1738 data[furnitureX] = x;
1739 data[furnitureY] = y;
1740 data[furnitureZ] = z;
1741 data[furnitureRX] = 0.0;
1742 data[furnitureRY] = 0.0;
1743 data[furnitureRZ] = 0.0;
1744 cache_delete(add);
1745 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1746
1747 EditingFurniture[playerid] = true;
1748 EditDynamicObject(playerid, objectid);
1749 return 1;
1750 }
1751
1752 if(dialogid == DIALOG_FURNITURE_SELL)
1753 {
1754 if(!response) return 1;
1755 new id = InApr[playerid];
1756 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1757 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1758 if(AprData[id][SalePrice] > 0) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu funkciju dok je apartman na prodaju na prodaju.");
1759 new objectid = GetPVarInt(playerid, "SelectedFurniture"), query[64], data[e_furniture];
1760 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1761 GivePlayerMoney(playerid, AprFurnitures[ data[ArrayID] ][Price]);
1762 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprfurnitures WHERE ID=%d", data[SQLID]);
1763 mysql_tquery(SQLHandle, query, "", "");
1764 DestroyDynamicObject(objectid);
1765 DeletePVar(playerid, "SelectedFurniture");
1766 return 1;
1767 }
1768
1769 if(dialogid == DIALOG_VISITORS_MENU)
1770 {
1771 if(!response) return ShowAprMenu(playerid);
1772 new id = InApr[playerid];
1773 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1774 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1775 if(listitem == 0)
1776 {
1777 new query[200], Cache: visitors;
1778 mysql_format(SQLHandle, query, sizeof(query), "SELECT Visitor, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as VisitDate FROM Aprvisitors WHERE AprID=%d ORDER BY Date DESC LIMIT 0, 15", id);
1779 visitors = mysql_query(SQLHandle, query);
1780 new rows = cache_num_rows();
1781 if(rows) {
1782 new list[1024], visitor_name[MAX_PLAYER_NAME], visit_date[20];
1783 format(list, sizeof(list), "Gost Ime\tVreme\n");
1784 for(new i; i < rows; ++i)
1785 {
1786 cache_get_value_name(i, "Gost", visitor_name);
1787 cache_get_value_name(i, "Gost Vreme", visit_date);
1788 format(list, sizeof(list), "%s%s\t%s\n", list, visitor_name, visit_date);
1789 }
1790
1791 ShowPlayerDialog(playerid, DIALOG_VISITORS, DIALOG_STYLE_TABLIST_HEADERS, "Gost (STRANA 1)", list, "Dalje", "Nazad");
1792 }else{
1793 SendClientMessage(playerid, -1, "Nisi imao gostiju.");
1794 }
1795
1796 cache_delete(visitors);
1797 }
1798
1799 if(listitem == 1)
1800 {
1801 new query[64];
1802 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprvisitors WHERE AprID=%d", id);
1803 mysql_tquery(SQLHandle, query, "", "");
1804 ShowAprMenu(playerid);
1805 }
1806
1807 return 1;
1808 }
1809
1810 if(dialogid == DIALOG_VISITORS)
1811 {
1812 if(!response) {
1813 ListPage[playerid]--;
1814 if(ListPage[playerid] < 0)
1815 {
1816 ListPage[playerid] = 0;
1817 ShowAprMenu(playerid);
1818 return 1;
1819 }
1820 }else{
1821 ListPage[playerid]++;
1822 }
1823
1824 new id = InApr[playerid];
1825 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1826 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1827 new query[200], Cache: visitors;
1828 mysql_format(SQLHandle, query, sizeof(query), "SELECT Visitor, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as VisitDate FROM Aprvisitors WHERE AprID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1829 visitors = mysql_query(SQLHandle, query);
1830 new rows = cache_num_rows();
1831 if(rows) {
1832 new list[1024], visitor_name[MAX_PLAYER_NAME], visit_date[20];
1833 format(list, sizeof(list), "Gost Ime\tDatum\n");
1834 for(new i; i < rows; ++i)
1835 {
1836 cache_get_value_name(i, "Gost", visitor_name);
1837 cache_get_value_name(i, "Gost vreme", visit_date);
1838 format(list, sizeof(list), "%s%s\t%s\n", list, visitor_name, visit_date);
1839 }
1840
1841 new title[32];
1842 format(title, sizeof(title), "Apartman Gosti (STANA %d)", ListPage[playerid]+1);
1843 ShowPlayerDialog(playerid, DIALOG_VISITORS, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Dalje", "Nazad");
1844 }else{
1845 SendClientMessage(playerid, -1, "Ne mogu da pronađem više gostiju.");
1846 ListPage[playerid] = 0;
1847 ShowAprMenu(playerid);
1848 }
1849
1850 cache_delete(visitors);
1851 return 1;
1852 }
1853
1854 if(dialogid == DIALOG_KEYS_MENU)
1855 {
1856 if(!response) return ShowAprMenu(playerid);
1857 new id = InApr[playerid];
1858 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1859 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1860 if(listitem == 0)
1861 {
1862 new query[200], Cache: keyowners;
1863 mysql_format(SQLHandle, query, sizeof(query), "SELECT Player, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM Aprkeys WHERE AprID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1864 keyowners = mysql_query(SQLHandle, query);
1865 new rows = cache_num_rows();
1866 if(rows) {
1867 new list[1024], key_name[MAX_PLAYER_NAME], key_date[20];
1868 format(list, sizeof(list), "Kljuc Vlasnik\tKljuc daj na\n");
1869 for(new i; i < rows; ++i)
1870 {
1871 cache_get_value_name(i, "Igrac", key_name);
1872 cache_get_value_name(i, "KljucDatum", key_date);
1873 format(list, sizeof(list), "%s%s\t%s\n", list, key_name, key_date);
1874 }
1875
1876 ShowPlayerDialog(playerid, DIALOG_KEYS, DIALOG_STYLE_TABLIST_HEADERS, "Vlasnik kljuc (STRANA 1)", list, "Dalje", "Nazad");
1877 }else{
1878 SendClientMessage(playerid, -1, "Ne mogu da naÄ‘em nijednog kljuÄnog vlasnika.");
1879 }
1880
1881 cache_delete(keyowners);
1882 }
1883
1884 if(listitem == 1)
1885 {
1886 foreach(new i : Player)
1887 {
1888 if(Iter_Contains(AprKeys[i], id)) Iter_Remove(AprKeys[i], id);
1889 }
1890
1891 new query[64];
1892 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprkeys WHERE AprID=%d", id);
1893 mysql_tquery(SQLHandle, query, "", "");
1894 ShowAprMenu(playerid);
1895 }
1896
1897 return 1;
1898 }
1899
1900 if(dialogid == DIALOG_KEYS)
1901 {
1902 if(!response) {
1903 ListPage[playerid]--;
1904 if(ListPage[playerid] < 0)
1905 {
1906 ListPage[playerid] = 0;
1907 ShowAprMenu(playerid);
1908 return 1;
1909 }
1910 }else{
1911 ListPage[playerid]++;
1912 }
1913
1914 new id = InApr[playerid];
1915 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1916 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1917 new query[200], Cache: keyowners;
1918 mysql_format(SQLHandle, query, sizeof(query), "SELECT Player, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM Aprkeys WHERE AprID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1919 keyowners = mysql_query(SQLHandle, query);
1920 new rows = cache_num_rows();
1921 if(rows) {
1922 new list[1024], key_name[MAX_PLAYER_NAME], key_date[20];
1923 format(list, sizeof(list), "Vlasnik Kljuc\tDaj kljuc\n");
1924 for(new i; i < rows; ++i)
1925 {
1926 cache_get_value_name(i, "Igrac", key_name);
1927 cache_get_value_name(i, "KljucDatum", key_date);
1928 format(list, sizeof(list), "%s%s\t%s\n", list, key_name, key_date);
1929 }
1930
1931 new title[32];
1932 format(title, sizeof(title), "Vlasnik kljuca (STRANA %d)", ListPage[playerid]+1);
1933 ShowPlayerDialog(playerid, DIALOG_KEYS, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Napred", "Nazad");
1934 }else{
1935 ListPage[playerid] = 0;
1936 ShowAprMenu(playerid);
1937 SendClientMessage(playerid, -1, "Ne mogu naci viÅ¡e kljuÄnih vlasnika.");
1938 }
1939
1940 cache_delete(keyowners);
1941 return 1;
1942 }
1943
1944 if(dialogid == DIALOG_SAFE_HISTORY)
1945 {
1946 if(!response) {
1947 ListPage[playerid]--;
1948 if(ListPage[playerid] < 0)
1949 {
1950 ListPage[playerid] = 0;
1951 ShowAprMenu(playerid);
1952 return 1;
1953 }
1954 }else{
1955 ListPage[playerid]++;
1956 }
1957
1958 new id = InApr[playerid];
1959 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
1960 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
1961 new query[200], Cache: safelog;
1962 mysql_format(SQLHandle, query, sizeof(query), "SELECT Type, Amount, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as TransactionDate FROM Aprsafelogs WHERE AprID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1963 safelog = mysql_query(SQLHandle, query);
1964 new rows = cache_num_rows();
1965 if(rows) {
1966 new list[1024], type, amount, date[20];
1967 format(list, sizeof(list), "Action\tDate\n");
1968 for(new i; i < rows; ++i)
1969 {
1970 cache_get_value_name_int(i, "Tip", type);
1971 cache_get_value_name_int(i, "Iznos", amount);
1972 cache_get_value_name(i, "DatumTransakcije", date);
1973
1974 format(list, sizeof(list), "%s%s $%s\t{FFFFFF}%s\n", list, TransactionNames[type], convertNumber(amount), date);
1975 }
1976
1977 new title[32];
1978 format(title, sizeof(title), "Sef istorija (Page %d)", ListPage[playerid]+1);
1979 ShowPlayerDialog(playerid, DIALOG_SAFE_HISTORY, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Next", "Previous");
1980 }else{
1981 SendClientMessage(playerid, -1, "Ne mogu da nađem nikakvu istoriju.");
1982 }
1983
1984 cache_delete(safelog);
1985 return 1;
1986 }
1987
1988 if(dialogid == DIALOG_MY_KEYS)
1989 {
1990 if(!response) {
1991 ListPage[playerid]--;
1992 if(ListPage[playerid] < 0)
1993 {
1994 ListPage[playerid] = 0;
1995 return 1;
1996 }
1997 }else{
1998 ListPage[playerid]++;
1999 }
2000
2001 new query[200], Cache: mykeys;
2002 mysql_format(SQLHandle, query, sizeof(query), "SELECT AprID, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM Aprkeys WHERE Player='%e' ORDER BY Date DESC LIMIT %d, 15", Player_GetName(playerid), ListPage[playerid]*15);
2003 mykeys = mysql_query(SQLHandle, query);
2004
2005 new rows = cache_num_rows();
2006 if(rows) {
2007 new list[1024], id, key_date[20];
2008 format(list, sizeof(list), "Apartman Info\tDaj kljuc\n");
2009 for(new i; i < rows; ++i)
2010 {
2011 cache_get_value_name_int(i, "ApartmanID", id);
2012 cache_get_value_name(i, "KljucDatum", key_date);
2013 format(list, sizeof(list), "%s%s's %s\t%s\n", list, AprData[id][Owner], AprData[id][Name], key_date);
2014 }
2015
2016 new title[32];
2017 format(title, sizeof(title), "Moji kljucevi (STANA %d)", ListPage[playerid]+1);
2018 ShowPlayerDialog(playerid, DIALOG_MY_KEYS, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Napred", "Nazad");
2019 }else{
2020 ListPage[playerid] = 0;
2021 SendClientMessage(playerid, -1, "Ne mogu naci viÅ¡e kljuÄeva.");
2022 }
2023
2024 cache_delete(mykeys);
2025 return 1;
2026 }
2027
2028 if(dialogid == DIALOG_BUY_APR_FROM_OWNER)
2029 {
2030 if(!response) return 1;
2031 new id = GetPVarInt(playerid, "PickupAprID");
2032 if(!IsPlayerInRangeOfPoint(playerid, 2.0, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ])) return SendClientMessage(playerid, -1, "Nisi blizu ni jednog apartmana.");
2033 #if LIMIT_PER_PLAYER > 0
2034 if(OwnedAprs(playerid) + 1 > LIMIT_PER_PLAYER) return SendClientMessage(playerid, -1, "Ne možete više kupiti apartman.");
2035 #endif
2036 if(AprData[id][SalePrice] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "Ne možete si priuštiti ovaj apartman.");
2037 if(AprData[id][SalePrice] < 1) return SendClientMessage(playerid, -1, "Neko vec´ poseduje ovaj apartman.");
2038 new old_owner[MAX_PLAYER_NAME], price = AprData[id][SalePrice], owner_id = INVALID_PLAYER_ID;
2039 format(old_owner, MAX_PLAYER_NAME, "%s", AprData[id][Owner]);
2040
2041 foreach(new i : Player)
2042 {
2043 if(!strcmp(AprData[id][Owner], Player_GetName(i)))
2044 {
2045 owner_id = i;
2046 break;
2047 }
2048 }
2049
2050 GivePlayerMoney(playerid, -AprData[id][SalePrice]);
2051 GetPlayerName(playerid, AprData[id][Owner], MAX_PLAYER_NAME);
2052 AprData[id][LastEntered] = gettime();
2053 AprData[id][SalePrice] = 0;
2054 AprData[id][Save] = true;
2055
2056 UpdateAprLabel(id);
2057 Streamer_SetIntData(STREAMER_TYPE_PICKUP, AprData[id][AprPickup], E_STREAMER_MODEL_ID, 19522);
2058 SendToApr(playerid, id);
2059
2060 foreach(new i : Player)
2061 {
2062 if(i == playerid) continue;
2063 if(InApr[i] == id)
2064 {
2065 SetPVarInt(i, "AprPickupCooldown", gettime() + APR_COOLDOWN);
2066 SetPlayerVirtualWorld(i, 0);
2067 SetPlayerInterior(i, 0);
2068 SetPlayerPos(i, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]);
2069 InApr[i] = INVALID_APR_ID;
2070 }
2071
2072 if(Iter_Contains(AprKeys[i], id)) Iter_Remove(AprKeys[i], id);
2073 }
2074
2075 new query[128];
2076 if(IsPlayerConnected(owner_id)) {
2077 GivePlayerMoney(owner_id, price);
2078
2079 new string[128];
2080 format(string, sizeof(string), "%s(%d) je kupio vas apartman za $%s.", AprData[id][Owner], playerid, convertNumber(price));
2081 SendClientMessage(owner_id, -1, string);
2082 }else{
2083 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO Aprsales SET OldOwner='%e', NewOwner='%e', Price=%d", old_owner, AprData[id][Owner], price);
2084 mysql_tquery(SQLHandle, query, "", "");
2085 }
2086
2087 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprvisitors WHERE AprID=%d", id);
2088 mysql_tquery(SQLHandle, query, "", "");
2089
2090 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprkeys WHERE AprID=%d", id);
2091 mysql_tquery(SQLHandle, query, "", "");
2092
2093 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprsafelogs WHERE AprID=%d", id);
2094 mysql_tquery(SQLHandle, query, "", "");
2095 return 1;
2096 }
2097
2098 if(dialogid == DIALOG_SELL_APR)
2099 {
2100 if(!response) return ShowAprMenu(playerid);
2101 new id = InApr[playerid];
2102 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
2103 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
2104 if(listitem == 0)
2105 {
2106 new money = floatround(AprData[id][Price] * 0.85) + AprData[id][SafeMoney];
2107 GivePlayerMoney(playerid, money);
2108 ResetApr(id);
2109 }
2110
2111 if(listitem == 1)
2112 {
2113 if(AprData[id][SalePrice] > 0) {
2114 AprData[id][SalePrice] = 0;
2115 AprData[id][Save] = true;
2116
2117 UpdateAprLabel(id);
2118 Streamer_SetIntData(STREAMER_TYPE_PICKUP, AprData[id][AprPickup], E_STREAMER_MODEL_ID, 19522);
2119 SendClientMessage(playerid, -1, "Tvoj apartman više nije na prodaju.");
2120 }else{
2121 if(AprData[id][SafeMoney] > 0) return SendClientMessage(playerid, -1, "Ne možete staviti svoj apartman za prodaju ako ima novca u sefu.");
2122 ShowPlayerDialog(playerid, DIALOG_SELLING_PRICE, DIALOG_STYLE_INPUT, "Prodaj apartman", "Koliko želite za vaš apartman?", "Staviti na prodaju", "Odustani");
2123 }
2124 }
2125
2126 return 1;
2127 }
2128
2129 if(dialogid == DIALOG_SELLING_PRICE)
2130 {
2131 if(!response) return ShowAprMenu(playerid);
2132 new id = InApr[playerid];
2133 if(id == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
2134 if(strcmp(AprData[id][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
2135 new amount = strval(inputtext);
2136 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, DIALOG_SELLING_PRICE, DIALOG_STYLE_INPUT, "Prodaj apartman", "E74C3C} Ne možete staviti svoj apartman za prodaju za manje od $ 1 ili više od $ 100,000,000. {FFFFFF} Koliko želite za vaš Apr?", "Put za prodaju", "Otkaži");
2137 AprData[id][SalePrice] = amount;
2138 AprData[id][Save] = true;
2139
2140 UpdateAprLabel(id);
2141 Streamer_SetIntData(STREAMER_TYPE_PICKUP, AprData[id][AprPickup], E_STREAMER_MODEL_ID, 1273);
2142
2143 new string[128];
2144 format(string, sizeof(string), "Prodato za $%s.", convertNumber(amount));
2145 SendClientMessage(playerid, -1, string);
2146 return 1;
2147 }
2148
2149 return 0;
2150}
2151
2152public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float: x, Float: y, Float: z)
2153{
2154 switch(SelectMode[playerid])
2155 {
2156 case SELECT_MODE_EDIT:
2157 {
2158 EditingFurniture[playerid] = true;
2159 EditDynamicObject(playerid, objectid);
2160 }
2161
2162 case SELECT_MODE_SELL:
2163 {
2164 CancelEdit(playerid);
2165
2166 new data[e_furniture], string[128];
2167 SetPVarInt(playerid, "SelectedFurniture", objectid);
2168 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
2169 format(string, sizeof(string), "Da li želite da prodate svoj %s ?", AprFurnitures[ data[ArrayID] ][Name], convertNumber(AprFurnitures[ data[ArrayID] ][Price]));
2170 ShowPlayerDialog(playerid, DIALOG_FURNITURE_SELL, DIALOG_STYLE_MSGBOX, "Prihvati prodaju", string, "Prodaj", "Izadji");
2171 }
2172 }
2173
2174 SelectMode[playerid] = SELECT_MODE_NONE;
2175 return 1;
2176}
2177
2178public OnPlayerEditDynamicObject(playerid, objectid, response, Float: x, Float: y, Float: z, Float: rx, Float: ry, Float: rz)
2179{
2180 if(EditingFurniture[playerid])
2181 {
2182 switch(response)
2183 {
2184 case EDIT_RESPONSE_CANCEL:
2185 {
2186 new data[e_furniture];
2187 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
2188 SetDynamicObjectPos(objectid, data[furnitureX], data[furnitureY], data[furnitureZ]);
2189 SetDynamicObjectRot(objectid, data[furnitureRX], data[furnitureRY], data[furnitureRZ]);
2190
2191 EditingFurniture[playerid] = false;
2192 }
2193
2194 case EDIT_RESPONSE_FINAL:
2195 {
2196 new data[e_furniture], query[256];
2197 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
2198 data[furnitureX] = x;
2199 data[furnitureY] = y;
2200 data[furnitureZ] = z;
2201 data[furnitureRX] = rx;
2202 data[furnitureRY] = ry;
2203 data[furnitureRZ] = rz;
2204 SetDynamicObjectPos(objectid, data[furnitureX], data[furnitureY], data[furnitureZ]);
2205 SetDynamicObjectRot(objectid, data[furnitureRX], data[furnitureRY], data[furnitureRZ]);
2206 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
2207
2208 mysql_format(SQLHandle, query, sizeof(query), "UPDATE Aprfurnitures 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]);
2209 mysql_tquery(SQLHandle, query, "", "");
2210
2211 EditingFurniture[playerid] = false;
2212 }
2213 }
2214 }
2215
2216 return 1;
2217}
2218
2219/* ============ Player Commands ============ */
2220CMD:kupiapartman(playerid, params[])
2221{
2222 new id = GetPVarInt(playerid, "PickupAprID");
2223 if(!IsPlayerInRangeOfPoint(playerid, 2.0, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ])) return SendClientMessage(playerid, -1, "Nisi blizu ni jednog apartmana.");
2224 new string[64];
2225 format(string, sizeof(string), "Ovaj Apartman je na prodaju!\n\nCena: {FFFFFF}$%s", convertNumber(AprData[playerid][Price]));
2226 ShowPlayerDialog(playerid, DIALOG_BUY_APR, DIALOG_STYLE_MSGBOX, "Apartman na prodaju", string, "Kupi", "Odbi");
2227 return 1;
2228}
2229CMD:apartman(playerid, params[])
2230{
2231 if(InApr[playerid] == INVALID_APR_ID) return SendClientMessage(playerid, 0xFFFFFFFF, "Niste u kuci.");
2232 ShowAprMenu(playerid);
2233 return 1;
2234}
2235
2236CMD:mojapartmankljuc(playerid, params[])
2237{
2238 new query[200], Cache: mykeys;
2239 mysql_format(SQLHandle, query, sizeof(query), "SELECT AprID, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM Aprkeys WHERE Player='%e' ORDER BY Date DESC LIMIT 0, 15", Player_GetName(playerid));
2240 mykeys = mysql_query(SQLHandle, query);
2241 ListPage[playerid] = 0;
2242
2243 new rows = cache_num_rows();
2244 if(rows) {
2245 new list[1024], id, key_date[20];
2246 format(list, sizeof(list), "Apartman Info\tDaj kjuc\n");
2247 for(new i; i < rows; ++i)
2248 {
2249 cache_get_value_name_int(i, "ApartmanID", id);
2250 cache_get_value_name(i, "KljucVreme", key_date);
2251 format(list, sizeof(list), "%s%s's %s\t%s\n", list, AprData[id][Owner], AprData[id][Name], key_date);
2252 }
2253
2254 ShowPlayerDialog(playerid, DIALOG_MY_KEYS, DIALOG_STYLE_TABLIST_HEADERS, "Moji kljucevi (STRANA 1)", list, "Dalje", "Izadji");
2255 }else{
2256 SendClientMessage(playerid, -1, "Nemate kljuÄeva za bilo koji apartman.");
2257 }
2258
2259 cache_delete(mykeys);
2260 return 1;
2261}
2262
2263CMD:dajapartmankljuc(playerid, params[])
2264{
2265 if(InApr[playerid] == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
2266 new id, Aprid = InApr[playerid];
2267 if(strcmp(AprData[Aprid][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
2268 if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "/dajapartmankljuc [player/nick]");
2269 if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Nepostojeci id.");
2270 if(id == playerid) return SendClientMessage(playerid, -1, "Ti si vlasnik, ne trebaju ti kljuÄevi.");
2271 if(Iter_Contains(AprKeys[id], Aprid)) return SendClientMessage(playerid, -1, "Taj igraÄ ima kljuÄeve za ovaj apartman.");
2272 Iter_Add(AprKeys[id], Aprid);
2273
2274 new query[128];
2275 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO Aprkeys SET AprID=%d, Player='%e', Date=UNIX_TIMESTAMP()", Aprid, Player_GetName(id));
2276 mysql_tquery(SQLHandle, query, "", "");
2277
2278 format(query, sizeof(query), "Dao si kljuc %s za apartan.", Player_GetName(id));
2279 SendClientMessage(playerid, -1, query);
2280 format(query, sizeof(query), "Sada imate kljuÄeve %s's apartmana, %s.", AprData[Aprid][Owner], AprData[Aprid][Name]);
2281 SendClientMessage(id, -1, query);
2282 return 1;
2283}
2284
2285CMD:uzmikljuc(playerid, params[])
2286{
2287 if(InApr[playerid] == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
2288 new id, Aprid = InApr[playerid];
2289 if(strcmp(AprData[Aprid][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
2290 if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "/uzmikljuc [player/wnick]");
2291 if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Pogresan ID");
2292 if(id == playerid) return SendClientMessage(playerid, -1, "Ti si vlasnik, ne možeÅ¡ uzeti kljuÄeve.");
2293 if(!Iter_Contains(AprKeys[id], Aprid)) return SendClientMessage(playerid, -1, "Taj igraÄ nema kljuÄeve za ovaj apartman");
2294 Iter_Remove(AprKeys[id], Aprid);
2295
2296 new query[128];
2297 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprkeys WHERE AprID=%d AND Player='%e'", Aprid, Player_GetName(id));
2298 mysql_tquery(SQLHandle, query, "", "");
2299
2300 format(query, sizeof(query), "Uzeli ste kljuÄeve od %s za ovaj apartman.", Player_GetName(id));
2301 SendClientMessage(playerid, -1, query);
2302 format(query, sizeof(query), "Apartmen vlasnik %s je uzeo vaÅ¡e kljuÄeve za njihov apartman %s.", AprData[Aprid][Owner], AprData[Aprid][Name]);
2303 SendClientMessage(id, -1, query);
2304 return 1;
2305}
2306
2307CMD:izbaciizapartmana(playerid, params[])
2308{
2309 if(InApr[playerid] == INVALID_APR_ID) return SendClientMessage(playerid, -1, "Niste u apartmanu");
2310 new id, Aprid = InApr[playerid];
2311 if(strcmp(AprData[Aprid][Owner], Player_GetName(playerid))) return SendClientMessage(playerid, -1, "Niste vlasnik apartmana.");
2312 if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "/izbaciizapartmana [player/nick]");
2313 if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Pogresan ID");
2314 if(id == playerid) return SendClientMessage(playerid, -1, "Ne možeš se udariti sa svog apartmana");
2315 if(InApr[id] != Aprid) return SendClientMessage(playerid, -1, "Taj igraÄ nije u vaÅ¡em aprilu.");
2316 SendClientMessage(playerid, -1, "Igrac izbacen.");
2317 SendClientMessage(id, -1, "Izbacili su vas vlasnici apartmana");
2318 SetPVarInt(id, "AprPickupCooldown", gettime() + APR_COOLDOWN);
2319 SetPlayerVirtualWorld(id, 0);
2320 SetPlayerInterior(id, 0);
2321 SetPlayerPos(id, AprData[Aprid][aprX], AprData[Aprid][aprY], AprData[Aprid][aprZ]);
2322 InApr[id] = INVALID_APR_ID;
2323 return 1;
2324}
2325
2326/* ============ Admin Commands ============ */
2327CMD:cmdapartmans(playerid, params[])
2328{
2329 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu komandu.");
2330 ShowApartmanCmd(playerid);
2331 return 1;
2332}
2333CMD:createapr(playerid, params[])
2334{
2335 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu komandu.");
2336 new interior, price;
2337 if(sscanf(params, "ii", price, interior)) return SendClientMessage(playerid, -1, "/createapr [CENA] [INT ID]");
2338 if(!(0 <= interior <= sizeof(AprInteriors)-1)) return SendClientMessage(playerid, -1, "Unutrašnji ID koji ste uneli ne postoji.");
2339 new id = Iter_Free(Aprs);
2340 if(id == -1) return SendClientMessage(playerid, -1, "Ne možete stvoriti više apartmana.");
2341 SetPVarInt(playerid, "AprPickupCooldown", gettime() + APR_COOLDOWN);
2342 format(AprData[id][Name], MAX_APR_NAME, "Apartman na prodaju");
2343 format(AprData[id][Owner], MAX_PLAYER_NAME, "-");
2344 format(AprData[id][Password], MAX_APR_PASSWORD, "-");
2345 GetPlayerPos(playerid, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]);
2346 AprData[id][Price] = price;
2347 AprData[id][Interior] = interior;
2348 AprData[id][LockMode] = LOCK_MODE_NOLOCK;
2349 AprData[id][SalePrice] = AprData[id][SafeMoney] = AprData[id][LastEntered] = 0;
2350 format(AprData[id][Address], MAX_APR_ADDRESS, "%d, %s, %s", id, GetZoneName(AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]), GetCityName(AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]));
2351 AprData[id][Save] = true;
2352
2353 new label[200];
2354 format(label, sizeof(label), "{FFFFFF}Apartman na prodaju (ID: %d)\n{FFFFFF}%s\n{FFFFFF}Cena: {FFFFFF}$%s\nDa kupite koristite /kupiapartman", id, AprInteriors[interior][IntName], convertNumber(price));
2355 AprData[id][AprLabel] = CreateDynamic3DTextLabel(label, 0xFFFFFFFF, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]+0.35, 15.0, .testlos = 1);
2356 AprData[id][AprPickup] = CreateDynamicPickup(1273, 1, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]);
2357
2358 new query[256];
2359 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO Aprs SET ID=%d, aprX=%f, aprY=%f, aprZ=%f, AprPrice=%d, AprInterior=%d", id, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ], price, interior);
2360 mysql_tquery(SQLHandle, query, "", "");
2361 Iter_Add(Aprs, id);
2362 return 1;
2363}
2364CMD:testcmd(playerid, params[])
2365{
2366 new Float:Pos_X, Float:Pos_Y, Float:Pos_Z, int;
2367 if(sscanf(params, "fffi", Pos_X, Pos_Y, Pos_Z, int)) return SendClientMessage(playerid, -1, "/gotopos - /xgoto (X) (Y) (Z) (Interior)");
2368 SetPlayerPos(playerid, Pos_X, Pos_Y, Pos_Z);
2369 SetPlayerInterior(playerid, 0);
2370 SendClientMessage(playerid, -1, "Teleportovani ste.");
2371 return 1;
2372}
2373CMD:gotoapr(playerid, params[])
2374{
2375 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu komandu.");
2376 new id;
2377 if(sscanf(params, "i", id)) return SendClientMessage(playerid, -1, "/gotoapr [Apr id]");
2378 if(!Iter_Contains(Aprs, id)) return SendClientMessage(playerid, -1, "Apartman ID koji ste uneli ne postoji.");
2379 SetPVarInt(playerid, "AprPickupCooldown", gettime() + APR_COOLDOWN);
2380 SetPlayerPos(playerid, AprData[id][aprX], AprData[id][aprY], AprData[id][aprZ]);
2381 SetPlayerInterior(playerid, 0);
2382 SetPlayerVirtualWorld(playerid, 0);
2383 return 1;
2384}
2385
2386CMD:hsetinterior(playerid, params[])
2387{
2388 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu komandu.");
2389 new id, interior;
2390 if(sscanf(params, "ii", id, interior)) return SendClientMessage(playerid, -1, "/hsetinterior [Apr id] [interior id]");
2391 if(!Iter_Contains(Aprs, id)) return SendClientMessage(playerid, -1, "Apartman ID koji ste uneli ne postoji.");
2392 if(!(0 <= interior <= sizeof(AprInteriors)-1)) return SendClientMessage(playerid, -1, "Unutrašnji ID koji ste uneli ne postoji.");
2393 AprData[id][Interior] = interior;
2394
2395 new query[64];
2396 mysql_format(SQLHandle, query, sizeof(query), "UPDATE Aprs SET AprInterior=%d WHERE ID=%d", interior, id);
2397 mysql_tquery(SQLHandle, query, "", "");
2398
2399 UpdateAprLabel(id);
2400 SendClientMessage(playerid, -1, "Interior ubacen.");
2401 return 1;
2402}
2403
2404CMD:hsetprice(playerid, params[])
2405{
2406 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu komandu.");
2407 new id, price;
2408 if(sscanf(params, "ii", id, price)) return SendClientMessage(playerid, -1, "/hsetprice [Apr id] [price]");
2409 if(!Iter_Contains(Aprs, id)) return SendClientMessage(playerid, -1, "Apartman ID koji ste uneli ne postoji.");
2410 AprData[id][Price] = price;
2411
2412 new query[64];
2413 mysql_format(SQLHandle, query, sizeof(query), "UPDATE Aprs SET AprPrice=%d WHERE ID=%d", price, id);
2414 mysql_tquery(SQLHandle, query, "", "");
2415
2416 UpdateAprLabel(id);
2417 SendClientMessage(playerid, -1, "Cena promenjena.");
2418 return 1;
2419}
2420
2421CMD:resetapr(playerid, params[])
2422{
2423 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu komandu.");
2424 new id;
2425 if(sscanf(params, "i", id)) return SendClientMessage(playerid, -1, "/resetapr [Apr id]");
2426 if(!Iter_Contains(Aprs, id)) return SendClientMessage(playerid, -1, "Apr ID koji ste uneli ne postoji.");
2427 ResetApr(id);
2428 SendClientMessage(playerid, -1, "Apartman resetovan.");
2429 return 1;
2430}
2431
2432CMD:deleteapr(playerid, params[])
2433{
2434 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Ne možete koristiti ovu komandu.");
2435 new id;
2436 if(sscanf(params, "i", id)) return SendClientMessage(playerid, -1, "/deleteapr [Apr id]");
2437 if(!Iter_Contains(Aprs, id)) return SendClientMessage(playerid, -1, "Apartman ID koji ste uneli ne postoji.");
2438 ResetApr(id);
2439 DestroyDynamic3DTextLabel(AprData[id][AprLabel]);
2440 DestroyDynamicPickup(AprData[id][AprPickup]);
2441 Iter_Remove(Aprs, id);
2442 AprData[id][AprLabel] = Text3D: INVALID_3DTEXT_ID;
2443 AprData[id][AprPickup] = AprData[id][AprIcon] = -1;
2444 AprData[id][Save] = false;
2445
2446 new query[64];
2447 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM Aprs WHERE ID=%d", id);
2448 mysql_tquery(SQLHandle, query, "", "");
2449 SendClientMessage(playerid, -1, "Apartman obrisan.");
2450 return 1;
2451}