· 9 years ago · Nov 06, 2016, 05:10 PM
1/*
2 Moda Eklerken DeÄŸiÅŸecekler
3 Player_GetName(playerid) > PlayerInfo[playerid][pName]
4 Mysql BaÄŸlanma Fonk... silinecek
5 InHouse[playerid] > Mysql tablosu + pInfo veritablesi
6 Para fonksiyonları güncellenecek...
7
8
9*/
10
11#define FILTERSCRIPT
12#include <a_samp>
13#include <a_mysql>
14#include <streamer>
15#include <sscanf2>
16#include <YSI\y_iterate>
17#include <Pawn.CMD>
18
19#define MAX_HOUSES (100)
20#define HOUSE_COOLDOWN (6)
21#define LIMIT_PER_PLAYER (3)
22
23#define SQL_HOST "localhost"
24#define SQL_USER "unvita_modv0"
25#define SQL_PASSWORD "ediH245~"
26#define SQL_DBNAME "unvita_modv0"
27
28enum _:e_lockmodes
29{
30 LOCK_MODE_NOLOCK,
31 LOCK_MODE_KEYS,
32 LOCK_MODE_OWNER
33}
34
35enum _:e_selectmodes
36{
37 SELECT_MODE_NONE,
38 SELECT_MODE_EDIT,
39 SELECT_MODE_SELL
40}
41
42enum e_house
43{
44 Name[48],
45 Owner[MAX_PLAYER_NAME],
46 Float: houseX,
47 Float: houseY,
48 Float: houseZ,
49 Price,
50 SalePrice,
51 Interior,
52 LockMode,
53 SafeMoney,
54 LastEntered,
55 Text3D: HouseLabel,
56 HousePickup,
57 HouseIcon,
58 bool: Save
59};
60
61enum e_interior
62{
63 IntName[32],
64 Float: intX,
65 Float: intY,
66 Float: intZ,
67 intID,
68 Text3D: intLabel,
69 intPickup
70};
71
72enum e_furnituredata
73{
74 ModelID,
75 Name[32],
76 Price
77};
78
79enum e_furniture
80{
81 SQLID,
82 HouseID,
83 ArrayID,
84 Float: furnitureX,
85 Float: furnitureY,
86 Float: furnitureZ,
87 Float: furnitureRX,
88 Float: furnitureRY,
89 Float: furnitureRZ
90};
91
92
93new
94 MySQL: SQLHandle,
95 HouseTimer = -1,
96 HouseData[MAX_HOUSES][e_house],
97 Iterator: Houses<MAX_HOUSES>,
98 Iterator: HouseKeys[MAX_PLAYERS]<MAX_HOUSES>,
99 InHouse[MAX_PLAYERS] = {-1, ...},
100 SelectMode[MAX_PLAYERS] = {SELECT_MODE_NONE, ...},
101 LastVisitedHouse[MAX_PLAYERS] = {-1, ...},
102 ListPage[MAX_PLAYERS] = {0, ...},
103 bool: EditingFurniture[MAX_PLAYERS] = {false, ...};
104
105new
106 HouseInteriors[][e_interior] = {
107 // int name, x, y, z, intid
108 {"Interior 1", 2233.4900, -1114.4435, 1050.8828, 5},
109 {"Interior 2", 2196.3943, -1204.1359, 1049.0234, 6},
110 {"Interior 3", 2318.1616, -1026.3762, 1050.2109, 9},
111 {"Interior 4", 421.8333, 2536.9814, 10.0000, 10},
112 {"Interior 5", 225.5707, 1240.0643, 1082.1406, 2},
113 {"Interior 6", 2496.2087, -1692.3149, 1014.7422, 3},
114 {"Interior 7", 226.7545, 1114.4180, 1080.9952, 5},
115 {"Interior 8", 2269.9636, -1210.3275, 1047.5625, 10}
116 };
117
118new
119 HouseFurnitures[][e_furnituredata] = {
120 // modelid, furniture name, price
121 {3111, "Building Plan", 500},
122 {2894, "Kitap", 20},
123 {2277, "Kedi Fotoğrafı", 100},
124 {1753, "Leather Couch", 150},
125 {1703, "Black Couch", 200},
126 {1255, "Lounger", 75},
127 {19581, "Frying Pan", 10},
128 {19584, "Sauce Pan", 12},
129 {19590, "Woozie's Sword", 1000},
130 {19525, "Wedding Cake", 50},
131 {1742, "Bookshelf", 80},
132 {1518, "TV 1", 130},
133 {19609, "Drum Kit", 500},
134 {19787, "Small LCD TV", 2000},
135 {19786, "Big LCD TV", 4000},
136 {2627, "Treadmill", 130}
137 };
138
139
140new
141 LockNames[3][32] = {"{2ECC71}Açık", "{E74C3C}Kilitli", "{E74C3C}Yalnız ev sahibi"},
142 TransactionNames[2][16] = {"{E74C3C}Alındı", "{2ECC71}Eklendi"};
143
144stock LoadHouseKeys(playerid)
145{
146 Iter_Clear(HouseKeys[playerid]);
147
148 new query[72];
149 mysql_format(SQLHandle, query, sizeof(query), "SELECT * FROM housekeys WHERE Player='%e'", Player_GetName(playerid));
150 mysql_tquery(SQLHandle, query, "GiveHouseKeys", "i", playerid);
151 return 1;
152}
153
154
155stock convertNumber(value)
156{
157 // http://forum.sa-mp.com/showthread.php?p=843781#post843781
158 new string[24];
159 format(string, sizeof(string), "%d", value);
160
161 for(new i = (strlen(string) - 3); i > (value < 0 ? 1 : 0) ; i -= 3)
162 {
163 strins(string[i], ",", 0);
164 }
165
166 return string;
167}
168
169stock RemovePlayerWeapon(playerid, weapon)
170{
171 new weapons[13], ammo[13];
172 for(new i; i < 13; i++) GetPlayerWeaponData(playerid, i, weapons[i], ammo[i]);
173 ResetPlayerWeapons(playerid);
174 for(new i; i < 13; i++)
175 {
176 if(weapons[i] == weapon) continue;
177 GivePlayerWeapon(playerid, weapons[i], ammo[i]);
178 }
179
180 return 1;
181}
182
183stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
184{
185 new Float: a;
186 GetPlayerPos(playerid, x, y, a);
187 GetPlayerFacingAngle(playerid, a);
188 if (GetPlayerVehicleID(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
189 x += (distance * floatsin(-a, degrees));
190 y += (distance * floatcos(-a, degrees));
191}
192
193stock Player_GetName(playerid)
194{
195 new name[MAX_PLAYER_NAME];
196 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
197 return name;
198}
199
200stock SendToHouse(playerid, id)
201{
202 if(!Iter_Contains(Houses, id)) return 0;
203 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
204 InHouse[playerid] = id;
205 SetPlayerVirtualWorld(playerid, id);
206 SetPlayerInterior(playerid, HouseInteriors[ HouseData[id][Interior] ][intID]);
207 SetPlayerPos(playerid, HouseInteriors[ HouseData[id][Interior] ][intX], HouseInteriors[ HouseData[id][Interior] ][intY], HouseInteriors[ HouseData[id][Interior] ][intZ]);
208
209 new string[128];
210 format(string, sizeof(string), "%s'in/un evine hoÅŸgeldiniz., %s{FFFFFF}!", HouseData[id][Owner], HouseData[id][Name]);
211 SendClientMessage(playerid, 0xFFFFFFFF, string);
212
213 if(!strcmp(HouseData[id][Owner], Player_GetName(playerid)))
214 {
215 HouseData[id][LastEntered] = gettime();
216 HouseData[id][Save] = true;
217 SendClientMessage(playerid, 0xFFFFFFFF, "Ev özelliklere ulaşabilmek için{3498DB}/ev {FFFFFF}komutunu kullanabilirsiniz.");
218 }
219
220 if(HouseData[id][LockMode] == LOCK_MODE_NOLOCK && LastVisitedHouse[playerid] != id)
221 {
222 new query[128];
223 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housevisitors SET HouseID=%d, Visitor='%e', Date=UNIX_TIMESTAMP()", id, Player_GetName(playerid));
224 mysql_tquery(SQLHandle, query, "", "");
225 LastVisitedHouse[playerid] = id;
226 }
227
228 return 1;
229}
230
231stock ShowHouseMenu(playerid)
232{
233 if(strcmp(HouseData[ InHouse[playerid] ][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi siz deÄŸilsiniz.");
234
235 new string[256], id = InHouse[playerid];
236 format(string, sizeof(string), "Ev Adı: %s\nKilit: %s\nGüvenli Kasa {2ECC71}($%s)\nMobilyalar\nSilahlar\nZiyaretçiler\nAnahtarlar\nHerkesi evden at!\nEvi sat", HouseData[id][Name], LockNames[ HouseData[id][LockMode] ], convertNumber(HouseData[id][SafeMoney]));
237 ShowPlayerDialog(playerid, 21, DIALOG_STYLE_LIST, HouseData[id][Name], string, "Seç", "Kapat");
238 return 1;
239}
240
241stock ResetHouse(id)
242{
243 if(!Iter_Contains(Houses, id)) return 0;
244 format(HouseData[id][Name], 48, "Satılık Ev!");
245 format(HouseData[id][Owner], MAX_PLAYER_NAME, "-");
246 HouseData[id][LockMode] = LOCK_MODE_NOLOCK;
247 HouseData[id][SalePrice] = HouseData[id][SafeMoney] = HouseData[id][LastEntered] = 0;
248 HouseData[id][Save] = true;
249
250 new label[200];
251 format(label, sizeof(label), "{2ECC71}Satılık Ev (ID: %d)\n{FFFFFF}%s\n{F1C40F}Ücret: {2ECC71}$%s", id, HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][Price]));
252 UpdateDynamic3DTextLabelText(HouseData[id][HouseLabel], 0xFFFFFFFF, label);
253 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 1273);
254 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 31);
255
256 foreach(new i : Player)
257 {
258 if(InHouse[i] == id)
259 {
260 SetPVarInt(i, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
261 SetPlayerVirtualWorld(i, 0);
262 SetPlayerInterior(i, 0);
263 SetPlayerPos(i, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
264 InHouse[i] = -1;
265 }
266
267 if(Iter_Contains(HouseKeys[i], id)) Iter_Remove(HouseKeys[i], id);
268 }
269
270 new query[64], data[e_furniture];
271 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM houseguns WHERE HouseID=%d", id);
272 mysql_tquery(SQLHandle, query, "", "");
273
274 for(new i, maxval = Streamer_GetUpperBound(STREAMER_TYPE_OBJECT); i <= maxval; ++i)
275 {
276 if(!IsValidDynamicObject(i)) continue;
277 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, i, E_STREAMER_EXTRA_ID, data);
278 if(data[SQLID] > 0 && data[HouseID] == id) DestroyDynamicObject(i);
279 }
280
281 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housefurnitures WHERE HouseID=%d", id);
282 mysql_tquery(SQLHandle, query, "", "");
283
284 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housevisitors WHERE HouseID=%d", id);
285 mysql_tquery(SQLHandle, query, "", "");
286
287 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housekeys WHERE HouseID=%d", id);
288 mysql_tquery(SQLHandle, query, "", "");
289
290 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housesafelogs WHERE HouseID=%d", id);
291 mysql_tquery(SQLHandle, query, "", "");
292 return 1;
293}
294
295stock SaveHouse(id)
296{
297 if(!Iter_Contains(Houses, id)) return 0;
298 new query[256];
299 mysql_format(SQLHandle, query, sizeof(query), "UPDATE houses SET HouseName='%e', HouseOwner='%e', HouseSalePrice=%d, HouseLock=%d, HouseMoney=%d, LastEntered=%d WHERE ID=%d",
300 HouseData[id][Name], HouseData[id][Owner], HouseData[id][SalePrice], HouseData[id][LockMode], HouseData[id][SafeMoney], HouseData[id][LastEntered], id);
301 mysql_tquery(SQLHandle, query, "", "");
302 HouseData[id][Save] = false;
303 return 1;
304}
305
306stock UpdateHouseLabel(id)
307{
308 if(!Iter_Contains(Houses, id)) return 0;
309 new label[256];
310 if(!strcmp(HouseData[id][Owner], "-")) {
311 format(label, sizeof(label), "{2ECC71}Satılık Ev (ID: %d)\n{FFFFFF}%s\n{F1C40F}Ücret: {2ECC71}$%s", id, HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][Price]));
312 }else{
313 if(HouseData[id][SalePrice] > 0) {
314 format(label, sizeof(label), "{E67E22}%s'in/un Satılık Evi (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n{F1C40F}Ücret: {2ECC71}$%s", HouseData[id][Owner], id, HouseData[id][Name], HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][SalePrice]));
315 }else{
316 format(label, sizeof(label), "{E67E22}%s'in/un Evi (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n%s\n{FFFFFF}%s", HouseData[id][Owner], id, HouseData[id][Name], HouseInteriors[ HouseData[id][Interior] ][IntName], LockNames[ HouseData[id][LockMode] ]);
317 }
318 }
319
320 UpdateDynamic3DTextLabelText(HouseData[id][HouseLabel], 0xFFFFFFFF, label);
321 return 1;
322}
323
324stock House_PlayerInit(playerid)
325{
326 InHouse[playerid] = LastVisitedHouse[playerid] = -1;
327 ListPage[playerid] = SelectMode[playerid] = SELECT_MODE_NONE;
328 EditingFurniture[playerid] = false;
329 LoadHouseKeys(playerid);
330 return 1;
331}
332
333stock OwnedHouses(playerid)
334{
335 #if LIMIT_PER_PLAYER != 0
336 new count;
337
338 foreach(new i : Houses) if(!strcmp(HouseData[i][Owner], Player_GetName(playerid), true)) count++;
339 return count;
340 #else
341 return 0;
342 #endif
343}
344
345forward ResetAndSaveHouses();
346forward LoadHouses();
347forward LoadFurnitures();
348forward GiveHouseKeys(playerid);
349forward HouseSaleMoney(playerid);
350
351public ResetAndSaveHouses()
352{
353 foreach(new i : Houses)
354 {
355 if(HouseData[i][LastEntered] > 0 && gettime()-HouseData[i][LastEntered] > 604800) ResetHouse(i);
356 if(HouseData[i][Save]) SaveHouse(i);
357 }
358
359 return 1;
360}
361
362public LoadHouses()
363{
364 new rows = cache_num_rows();
365 if(rows)
366 {
367 new id, loaded, for_sale, label[256];
368 while(loaded < rows)
369 {
370 cache_get_value_name_int(loaded, "ID", id);
371 cache_get_value_name(loaded, "HouseName", HouseData[id][Name], 48);
372 cache_get_value_name(loaded, "HouseOwner", HouseData[id][Owner], MAX_PLAYER_NAME);
373 cache_get_value_name_float(loaded, "HouseX", HouseData[id][houseX]);
374 cache_get_value_name_float(loaded, "HouseY", HouseData[id][houseY]);
375 cache_get_value_name_float(loaded, "HouseZ", HouseData[id][houseZ]);
376 cache_get_value_name_int(loaded, "HousePrice", HouseData[id][Price]);
377 cache_get_value_name_int(loaded, "HouseSalePrice", HouseData[id][SalePrice]);
378 cache_get_value_name_int(loaded, "HouseInterior", HouseData[id][Interior]);
379 cache_get_value_name_int(loaded, "HouseLock", HouseData[id][LockMode]);
380 cache_get_value_name_int(loaded, "HouseMoney", HouseData[id][SafeMoney]);
381 cache_get_value_name_int(loaded, "LastEntered", HouseData[id][LastEntered]);
382
383 if(strcmp(HouseData[id][Owner], "-")) {
384 if(HouseData[id][SalePrice] > 0) {
385 for_sale = 1;
386 format(label, sizeof(label), "{E67E22}%s'in/un Satılık Evi (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n{F1C40F}Ücret: {2ECC71}$%s", HouseData[id][Owner], id, HouseData[id][Name], HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][SalePrice]));
387 }else{
388 for_sale = 0;
389 format(label, sizeof(label), "{E67E22}%s'in/un Evi (ID: %d)\n{FFFFFF}%s\n{FFFFFF}%s\n%s", HouseData[id][Owner], id, HouseData[id][Name], HouseInteriors[ HouseData[id][Interior] ][IntName], LockNames[ HouseData[id][LockMode] ]);
390 }
391 }else{
392 for_sale = 1;
393 format(label, sizeof(label), "{2ECC71}Satılık Ev (ID: %d)\n{FFFFFF}%s\n{F1C40F}Ücret: {2ECC71}$%s", id, HouseInteriors[ HouseData[id][Interior] ][IntName], convertNumber(HouseData[id][Price]));
394 }
395
396 HouseData[id][HousePickup] = CreateDynamicPickup((!for_sale) ? 19522 : 1273, 1, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
397 HouseData[id][HouseIcon] = CreateDynamicMapIcon(HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ], (!for_sale) ? 32 : 31, 0);
398 HouseData[id][HouseLabel] = CreateDynamic3DTextLabel(label, 0xFFFFFFFF, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]+0.35, 15.0, .testlos = 1);
399 Iter_Add(Houses, id);
400 loaded++;
401 }
402
403 printf(" [House System] Loaded %d houses.", loaded);
404 }
405
406 return 1;
407}
408
409public LoadFurnitures()
410{
411 new rows = cache_num_rows();
412 if(rows)
413 {
414 new id, loaded, vw, interior, data[e_furniture];
415 while(loaded < rows)
416 {
417 cache_get_value_name_int(loaded, "ID", data[SQLID]);
418 cache_get_value_name_int(loaded, "HouseID", data[HouseID]);
419 cache_get_value_name_int(loaded, "FurnitureID", data[ArrayID]);
420 cache_get_value_name_float(loaded, "FurnitureX", data[furnitureX]);
421 cache_get_value_name_float(loaded, "FurnitureY", data[furnitureY]);
422 cache_get_value_name_float(loaded, "FurnitureZ", data[furnitureZ]);
423 cache_get_value_name_float(loaded, "FurnitureRX", data[furnitureRX]);
424 cache_get_value_name_float(loaded, "FurnitureRY", data[furnitureRY]);
425 cache_get_value_name_float(loaded, "FurnitureRZ", data[furnitureRZ]);
426 cache_get_value_name_int(loaded, "FurnitureVW", vw);
427 cache_get_value_name_int(loaded, "FurnitureInt", interior);
428
429 id = CreateDynamicObject(
430 HouseFurnitures[ data[ArrayID] ][ModelID],
431 data[furnitureX], data[furnitureY], data[furnitureZ],
432 data[furnitureRX], data[furnitureRY], data[furnitureRZ],
433 vw, interior
434 );
435
436 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, id, E_STREAMER_EXTRA_ID, data);
437 loaded++;
438 }
439
440 printf(" [House System] Loaded %d furnitures.", loaded);
441 }
442
443 return 1;
444}
445
446public GiveHouseKeys(playerid)
447{
448 if(!IsPlayerConnected(playerid)) return 1;
449 new rows = cache_num_rows();
450 if(rows)
451 {
452 new loaded, house_id;
453 while(loaded < rows)
454 {
455 cache_get_value_name_int(loaded, "HouseID", house_id);
456 Iter_Add(HouseKeys[playerid], house_id);
457 loaded++;
458 }
459 }
460
461 return 1;
462}
463
464public HouseSaleMoney(playerid)
465{
466 new rows = cache_num_rows();
467 if(rows)
468 {
469 new new_owner[MAX_PLAYER_NAME], price, tnid, string[128];
470 for(new i; i < rows; i++)
471 {
472 cache_get_value_name(i, "NewOwner", new_owner);
473 cache_get_value_name_int(i, "Price", price);
474 cache_get_value_name_int(i, "ID", tnid);
475
476 format(string, sizeof(string), "%s isimli kişiye evinizi $%s karşılığında sattınız. (Transaction ID: #%d)", new_owner, convertNumber(price), tnid);
477 MesajGonder(playerid,string);
478 GivePlayerMoney(playerid, price);
479 }
480
481 new query[128];
482 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housesales WHERE OldOwner='%e'", Player_GetName(playerid));
483 mysql_tquery(SQLHandle, query, "", "");
484 }
485
486 return 1;
487}
488
489public OnFilterScriptInit()
490{
491 for(new i; i < MAX_HOUSES; ++i)
492 {
493 HouseData[i][HouseLabel] = Text3D: INVALID_3DTEXT_ID;
494 HouseData[i][HousePickup] = -1;
495 HouseData[i][HouseIcon] = -1;
496 HouseData[i][Save] = false;
497 }
498
499 for(new i; i < sizeof(HouseInteriors); ++i)
500 {
501 HouseInteriors[i][intLabel] = CreateDynamic3DTextLabel("Leave House", 0xE67E22FF, HouseInteriors[i][intX], HouseInteriors[i][intY], HouseInteriors[i][intZ]+0.35, 10.0, .testlos = 1, .interiorid = HouseInteriors[i][intID]);
502 HouseInteriors[i][intPickup] = CreateDynamicPickup(1318, 1, HouseInteriors[i][intX], HouseInteriors[i][intY], HouseInteriors[i][intZ], .interiorid = HouseInteriors[i][intID]);
503 }
504
505 Iter_Init(HouseKeys);
506 DisableInteriorEnterExits();
507 SQLHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DBNAME);
508 mysql_log(ERROR | WARNING);
509 if(mysql_errno() != 0) return print(" [Ev sistemi] MYSQL bağlantısı sağlanamadı.");
510
511 /* Create Tables */
512 new query[1024];
513 strcat(query, "CREATE TABLE IF NOT EXISTS `houses` (\
514 `ID` int(11) NOT NULL,\
515 `HouseName` varchar(48) NOT NULL default 'House For Sale',\
516 `HouseOwner` varchar(24) NOT NULL default '-',\
517 `HouseX` float NOT NULL,\
518 `HouseY` float NOT NULL,\
519 `HouseZ` float NOT NULL,\
520 `HousePrice` int(11) NOT NULL,\
521 `HouseInterior` tinyint(4) NOT NULL default '0',\
522 `HouseLock` tinyint(4) NOT NULL default '0',\
523 `HouseMoney` int(11) NOT NULL default '0',"
524 );
525
526 strcat(query, "`LastEntered` int(11) NOT NULL,\
527 PRIMARY KEY (`ID`),\
528 UNIQUE KEY `ID_2` (`ID`),\
529 KEY `ID` (`ID`)\
530 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
531 );
532
533 mysql_tquery(SQLHandle, query, "", "");
534
535 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housefurnitures` (\
536 `ID` int(11) NOT NULL auto_increment,\
537 `HouseID` int(11) NOT NULL,\
538 `FurnitureID` tinyint(11) NOT NULL,\
539 `FurnitureX` float NOT NULL,\
540 `FurnitureY` float NOT NULL,\
541 `FurnitureZ` float NOT NULL,\
542 `FurnitureRX` float NOT NULL,\
543 `FurnitureRY` float NOT NULL,\
544 `FurnitureRZ` float NOT NULL,\
545 `FurnitureVW` int(11) NOT NULL,\
546 `FurnitureInt` int(11) NOT NULL,\
547 PRIMARY KEY (`ID`)\
548 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
549
550 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `houseguns` (\
551 `HouseID` int(11) NOT NULL,\
552 `WeaponID` tinyint(4) NOT NULL,\
553 `Ammo` int(11) NOT NULL,\
554 UNIQUE KEY `HouseID_2` (`HouseID`,`WeaponID`),\
555 KEY `HouseID` (`HouseID`),\
556 CONSTRAINT `houseguns_ibfk_1` FOREIGN KEY (`HouseID`) REFERENCES `houses` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE\
557 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;", "", "");
558
559 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housevisitors` (\
560 `HouseID` int(11) NOT NULL,\
561 `Visitor` varchar(24) NOT NULL,\
562 `Date` int(11) NOT NULL\
563 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
564
565 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housekeys` (\
566 `HouseID` int(11) NOT NULL,\
567 `Player` varchar(24) NOT NULL,\
568 `Date` int(11) NOT NULL\
569 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
570
571 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housesafelogs` (\
572 `HouseID` int(11) NOT NULL,\
573 `Type` int(11) NOT NULL,\
574 `Amount` int(11) NOT NULL,\
575 `Date` int(11) NOT NULL\
576 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
577
578 mysql_tquery(SQLHandle, "CREATE TABLE IF NOT EXISTS `housesales` (\
579 `ID` int(11) NOT NULL AUTO_INCREMENT,\
580 `OldOwner` varchar(24) NOT NULL,\
581 `NewOwner` varchar(24) NOT NULL,\
582 `Price` int(11) NOT NULL,\
583 PRIMARY KEY (`ID`)\
584 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", "", "");
585
586 // 1.3 update, add HouseSalePrice to the houses table
587 if(!fexist("house_updated.txt"))
588 {
589 mysql_tquery(SQLHandle, "ALTER TABLE houses ADD HouseSalePrice INT(11) NOT NULL AFTER HousePrice");
590
591 new File: updateFile = fopen("house_updated.txt", io_append);
592 if(updateFile)
593 {
594 fwrite(updateFile, "Don't remove this file.");
595 fclose(updateFile);
596 }
597 }
598
599 /* Loading & Stuff */
600 mysql_tquery(SQLHandle, "SELECT * FROM houses", "LoadHouses", "");
601 mysql_tquery(SQLHandle, "SELECT * FROM housefurnitures", "LoadFurnitures", "");
602 foreach(new i : Player) House_PlayerInit(i);
603
604 HouseTimer = SetTimer("ResetAndSaveHouses", 10 * 60000, true);
605 return 1;
606}
607
608public OnFilterScriptExit()
609{
610 foreach(new i : Houses) if(HouseData[i][Save]) SaveHouse(i);
611 KillTimer(HouseTimer);
612 return 1;
613}
614
615public OnPlayerConnect(playerid)
616{
617 House_PlayerInit(playerid);
618 return 1;
619}
620
621public OnPlayerSpawn(playerid)
622{
623 InHouse[playerid] = -1;
624
625 new query[128];
626 mysql_format(SQLHandle, query, sizeof(query), "SELECT * FROM housesales WHERE OldOwner='%e'", Player_GetName(playerid));
627 mysql_tquery(SQLHandle, query, "HouseSaleMoney", "i", playerid);
628 return 1;
629}
630
631public OnPlayerPickUpDynamicPickup(playerid, pickupid)
632{
633 if(GetPVarInt(playerid, "HousePickupCooldown") < gettime())
634 {
635 if(InHouse[playerid] == -1) {
636 foreach(new i : Houses)
637 {
638 if(pickupid == HouseData[i][HousePickup])
639 {
640 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
641 SetPVarInt(playerid, "PickupHouseID", i);
642
643 if(!strcmp(HouseData[i][Owner], "-")) {
644 new string[64];
645 format(string, sizeof(string), "This house is for sale!\n\nPrice: {2ECC71}$%s", convertNumber(HouseData[i][Price]));
646 ShowPlayerDialog(playerid, 20, DIALOG_STYLE_MSGBOX, "Satılık Ev", string, "Satın Al", "Kapat");
647 }else{
648 if(HouseData[i][SalePrice] > 0 && strcmp(HouseData[i][Owner], Player_GetName(playerid)))
649 {
650 new string[64];
651 format(string, sizeof(string), "This house is for sale!\n\nPrice: {2ECC71}$%s", convertNumber(HouseData[i][SalePrice]));
652 ShowPlayerDialog(playerid, 38, DIALOG_STYLE_MSGBOX, "Satılık Ev", string, "Satın Al", "Kapat");
653 return 1;
654 }
655
656 switch(HouseData[i][LockMode])
657 {
658 case LOCK_MODE_NOLOCK: SendToHouse(playerid, i);
659 case LOCK_MODE_KEYS:
660 {
661 new gotkeys = Iter_Contains(HouseKeys[playerid], i);
662 if(!gotkeys) if(!strcmp(HouseData[i][Owner], Player_GetName(playerid))) gotkeys = 1;
663
664 if(gotkeys) {
665 SendToHouse(playerid, i);
666 }else{
667 MesajGonder(playerid, "You don't have keys for this house, you can't enter.");
668 }
669 }
670
671 case LOCK_MODE_OWNER:
672 {
673 if(!strcmp(HouseData[i][Owner], Player_GetName(playerid))) {
674 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
675 SendToHouse(playerid, i);
676 }else{
677 MesajGonder(playerid, "Sorry, only the owner can enter this house.");
678 }
679 }
680 }
681 }
682
683 return 1;
684 }
685 }
686 }else{
687 for(new i; i < sizeof(HouseInteriors); ++i)
688 {
689 if(pickupid == HouseInteriors[i][intPickup])
690 {
691 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
692 SetPlayerVirtualWorld(playerid, 0);
693 SetPlayerInterior(playerid, 0);
694 SetPlayerPos(playerid, HouseData[ InHouse[playerid] ][houseX], HouseData[ InHouse[playerid] ][houseY], HouseData[ InHouse[playerid] ][houseZ]);
695 InHouse[playerid] = -1;
696 return 1;
697 }
698 }
699 }
700 }
701
702 return 1;
703}
704
705public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
706{
707 if(dialogid == 20)
708 {
709 if(!response) return 1;
710 new id = GetPVarInt(playerid, "PickupHouseID");
711 if(!IsPlayerInRangeOfPoint(playerid, 2.0, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ])) return MesajGonder(playerid, "Herhangi bir evin yakınında değilsiniz.");
712 #if LIMIT_PER_PLAYER > 0
713 if(OwnedHouses(playerid) + 1 > LIMIT_PER_PLAYER) return MesajGonder(playerid, "Daha fazla ev satın alamazsınız.");
714 #endif
715 if(HouseData[id][Price] > GetPlayerMoney(playerid)) return MesajGonder(playerid, "Evin ücretini karşılayamıyorsunuz.");
716 if(strcmp(HouseData[id][Owner], "-")) return MesajGonder(playerid, "Evin zaten bir sahibi var.");
717 GivePlayerMoney(playerid, -HouseData[id][Price]);
718 GetPlayerName(playerid, HouseData[id][Owner], MAX_PLAYER_NAME);
719 HouseData[id][LastEntered] = gettime();
720 HouseData[id][Save] = true;
721
722 UpdateHouseLabel(id);
723 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 19522);
724 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 32);
725 SendToHouse(playerid, id);
726 return 1;
727 }
728 if(dialogid == 21)
729 {
730 if(!response) return 1;
731 new id = InHouse[playerid];
732 if(id == -1) return MesajGonder(playerid, "Evin içerisinde değilsiniz.");
733 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
734
735 if(listitem == 0) ShowPlayerDialog(playerid, 22, DIALOG_STYLE_INPUT, "Ev Adı", "Evinizin yeni ismini belirleyin:", "Onayla", "Geri");
736 if(listitem == 1) ShowPlayerDialog(playerid, 23, DIALOG_STYLE_LIST, "Ev Kilit Durumu", "Açık\nAnahtarlar\nSadece ev sahibi", "Değiştir", "Geri");
737 if(listitem == 2)
738 {
739 if(HouseData[id][SalePrice] > 0)
740 {
741 MesajGonder(playerid, "Eviniz satılık durumdayken bu fonksiyonu kullanamazsınız.");
742 return ShowHouseMenu(playerid);
743 }
744
745 new string[144];
746 format(string, sizeof(string), "Kasadan para al{2ECC71}($%s)\nKasaya para koy {2ECC71}($%s)\nKasa geçmişini görüntüle\nKasa geçmişini temizle", convertNumber(HouseData[id][SafeMoney]), convertNumber(GetPlayerMoney(playerid)));
747 ShowPlayerDialog(playerid, 24, DIALOG_STYLE_LIST, "Kasa", string, "Seç", "Geri");
748 }
749
750 if(listitem == 3)
751 {
752 if(HouseData[id][SalePrice] > 0)
753 {
754 MesajGonder(playerid, "Eviniz satılık durumdayken bu fonksiyonu kullanamazsınız.");
755 return ShowHouseMenu(playerid);
756 }
757
758 ShowPlayerDialog(playerid, 29, DIALOG_STYLE_LIST, "Mobilyalar", "Satın Al\nDüzenle\nSat\nHepsini Sat", "Seç", "Geri");
759 }
760
761 if(listitem == 4) ShowPlayerDialog(playerid, 27, DIALOG_STYLE_LIST, "Silahlar", "Silah Koy\nSilah Al", "Seç", "Geri");
762 if(listitem == 5)
763 {
764 ListPage[playerid] = 0;
765 ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Ziyaretçiler", "Ziyaretçi Geçmişini Gör\nGeçmişi Temizle", "Seç", "Geri");
766 }
767
768 if(listitem == 6)
769 {
770 ListPage[playerid] = 0;
771 ShowPlayerDialog(playerid, 34, DIALOG_STYLE_LIST, "Anahtarlar", "Anahtar Sahiplerini Gör\nEvin Kilidini Değiştir", "Seç", "Geri");
772 }
773
774 if(listitem == 7)
775 {
776 new string[128];
777 format(string, sizeof(string), "Ev sahibi (%s) herkesi evinden kovdu!", HouseData[id][Owner]);
778
779 foreach(new i : Player)
780 {
781 if(i == playerid) continue;
782 if(InHouse[i] == id)
783 {
784 SetPVarInt(i, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
785 SetPlayerVirtualWorld(i, 0);
786 SetPlayerInterior(i, 0);
787 SetPlayerPos(i, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
788 InHouse[i] = -1;
789 SendClientMessage(i, -1, string);
790 }
791 }
792
793 MesajGonder(playerid,"Herkesi evinizden kovdunuz!");
794 }
795
796 if(listitem == 8)
797 {
798 new string[128];
799 format(string, sizeof(string), "Hızlı Satış\t{2ECC71}$%s\n%s", convertNumber(floatround(HouseData[id][Price]*0.85)), (HouseData[id][SalePrice] > 0) ? ("Satıştan Kaldır") : ("Satışa Çıkar"));
800 ShowPlayerDialog(playerid, 39, DIALOG_STYLE_TABLIST, "Ev Satış", string, "Seç", "Geri");
801 }
802
803 return 1;
804 }
805
806 if(dialogid == 22)
807 {
808 if(!response) return ShowHouseMenu(playerid);
809 new id = InHouse[playerid];
810 if(id == -1) return MesajGonder(playerid, "Evin içerisinde değilsiniz.");
811 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi siz deÄŸilsiniz.");
812 if(!(1 <= strlen(inputtext) <= 48)) return ShowPlayerDialog(playerid, 22, DIALOG_STYLE_INPUT, "House Name", "Ev için yeni bir isim belirle:\n\n{E74C3C}Yazdığınız isim çok kısa veya uzun.", "Seç", "Geri");
813 format(HouseData[id][Name], 48, "%s", inputtext);
814 HouseData[id][Save] = true;
815
816 UpdateHouseLabel(id);
817 ShowHouseMenu(playerid);
818 return 1;
819 }
820
821
822 if(dialogid == 23)
823 {
824 if(!response) return ShowHouseMenu(playerid);
825 new id = InHouse[playerid];
826 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
827 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
828 HouseData[id][LockMode] = listitem;
829 HouseData[id][Save] = true;
830
831 UpdateHouseLabel(id);
832 ShowHouseMenu(playerid);
833 return 1;
834 }
835
836 if(dialogid == 24)
837 {
838 if(!response) return ShowHouseMenu(playerid);
839 new id = InHouse[playerid];
840 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
841 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
842 if(HouseData[id][SalePrice] > 0) return MesajGonder(playerid, "Ev satılık durumdayken bu fonksiyonu kullanamazsınız.");
843 if(listitem == 0) ShowPlayerDialog(playerid, 25, DIALOG_STYLE_INPUT, "Kasa: Para Al", "Almak istediğiniz miktarı yazın:", "Al", "Geri");
844 if(listitem == 1) ShowPlayerDialog(playerid, 26, DIALOG_STYLE_INPUT, "Kasa: Para Ekle", "Kasaya eklemek istediğiniz miktarı yazın", "Ekle", "Geri");
845 if(listitem == 2)
846 {
847 ListPage[playerid] = 0;
848
849 new query[200], Cache: safelog;
850 mysql_format(SQLHandle, query, sizeof(query), "SELECT Type, Amount, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as TransactionDate FROM housesafelogs WHERE HouseID=%d ORDER BY Date DESC LIMIT 0, 15", id);
851 safelog = mysql_query(SQLHandle, query);
852 new rows = cache_num_rows();
853 if(rows) {
854 new list[1024], type, amount, date[20];
855 format(list, sizeof(list), "Action\tDate\n");
856 for(new i; i < rows; ++i)
857 {
858 cache_get_value_name_int(i, "Type", type);
859 cache_get_value_name_int(i, "Amount", amount);
860 cache_get_value_name(i, "TransactionDate", date);
861
862 format(list, sizeof(list), "%s%s $%s\t{FFFFFF}%s\n", list, TransactionNames[type], convertNumber(amount), date);
863 }
864
865 ShowPlayerDialog(playerid, 36, DIALOG_STYLE_TABLIST_HEADERS, "Safe History (Page 1)", list, "Next", "Previous");
866 }else{
867 MesajGonder(playerid, "Herhangi bir kayıt bulunamadı.");
868 }
869
870 cache_delete(safelog);
871 }
872
873 if(listitem == 3)
874 {
875 new query[64];
876 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housesafelogs WHERE HouseID=%d", id);
877 mysql_tquery(SQLHandle, query, "", "");
878 ShowHouseMenu(playerid);
879 }
880
881 return 1;
882 }
883
884 if(dialogid == 25)
885 {
886 if(!response) return ShowHouseMenu(playerid);
887 new id = InHouse[playerid];
888 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
889 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
890 if(HouseData[id][SalePrice] > 0) return MesajGonder(playerid, "Ev satılık durumdayken bu fonksiyonu kullanamazsınız.");
891 new amount = strval(inputtext);
892 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, 25, DIALOG_STYLE_INPUT, "Kasa: Para Al", "Almak istediğiniz miktarı yazın:\n\n{E74C3C}Yanlış değer. Tek seferde alınabilir miktar: $1 - $10,000,000", "Al", "Geri");
893 if(amount > HouseData[id][SafeMoney]) return ShowPlayerDialog(playerid, 25, DIALOG_STYLE_INPUT, "Kasa: Para Al", "Almak istediğiniz miktarı yazın:\n\n{E74C3C}Kasanızda o kadar yok..", "Al", "Geri");
894 new query[128];
895 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housesafelogs SET HouseID=%d, Type=0, Amount=%d, Date=UNIX_TIMESTAMP()", id, amount);
896 mysql_tquery(SQLHandle, query, "", "");
897
898 GivePlayerMoney(playerid, amount);
899 HouseData[id][SafeMoney] -= amount;
900 HouseData[id][Save] = true;
901 ShowHouseMenu(playerid);
902 return 1;
903 }
904
905 if(dialogid == 26)
906 {
907 if(!response) return ShowHouseMenu(playerid);
908 new id = InHouse[playerid];
909 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
910 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
911 new amount = strval(inputtext);
912 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, 26, DIALOG_STYLE_INPUT, "Kasa: Para Ekle", "Kasaya eklemek istediğiniz miktarı yazın:\n\n{E74C3C}Yanlış değer. Tek seferde eklenilebilir miktar: $1 - $10,000,000", "Ekle", "Geri");
913 if(amount > GetPlayerMoney(playerid)) return ShowPlayerDialog(playerid, 26, DIALOG_STYLE_INPUT, "Kasa: Para Ekle", "Kasaya eklemek istediğiniz miktarı yazın:\n\n{E74C3C}Yanınızda o kadar para yok.", "Ekle", "Geri");
914 new query[128];
915 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housesafelogs SET HouseID=%d, Type=1, Amount=%d, Date=UNIX_TIMESTAMP()", id, amount);
916 mysql_tquery(SQLHandle, query, "", "");
917
918 GivePlayerMoney(playerid, -amount);
919 HouseData[id][SafeMoney] += amount;
920 HouseData[id][Save] = true;
921 ShowHouseMenu(playerid);
922 return 1;
923 }
924
925 if(dialogid == 27)
926 {
927 if(!response) return ShowHouseMenu(playerid);
928 new id = InHouse[playerid];
929 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
930 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
931 if(listitem == 0)
932 {
933 if(GetPlayerWeapon(playerid) == 0) return MesajGonder(playerid, "Elinizde silah yok.");
934 new query[128], weapon = GetPlayerWeapon(playerid), ammo = GetPlayerAmmo(playerid);
935 RemovePlayerWeapon(playerid, weapon);
936 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO houseguns VALUES (%d, %d, %d) ON DUPLICATE KEY UPDATE Ammo=Ammo+%d", id, weapon, ammo, ammo);
937 mysql_tquery(SQLHandle, query, "", "");
938 ShowHouseMenu(playerid);
939 }
940
941 if(listitem == 1)
942 {
943 new query[80], Cache: weapons;
944 mysql_format(SQLHandle, query, sizeof(query), "SELECT WeaponID, Ammo FROM houseguns WHERE HouseID=%d ORDER BY WeaponID ASC", id);
945 weapons = mysql_query(SQLHandle, query);
946 new rows = cache_num_rows();
947 if(rows) {
948 new list[512], weapname[32], weapon_id, weapon_ammo;
949 format(list, sizeof(list), "#\tWeapon Name\tAmmo\n");
950 for(new i; i < rows; ++i)
951 {
952 cache_get_value_name_int(i, "WeaponID", weapon_id);
953 cache_get_value_name_int(i, "Ammo", weapon_ammo);
954
955 GetWeaponName(weapon_id, weapname, sizeof(weapname));
956 format(list, sizeof(list), "%s%d\t%s\t%s\n", list, i+1, weapname, convertNumber(weapon_ammo));
957 }
958
959 ShowPlayerDialog(playerid, 28, DIALOG_STYLE_TABLIST_HEADERS, "Silahlar", list, "Al", "Geri");
960 }else{
961 MesajGonder(playerid, "Evinizde hiç silah yok.");
962 }
963
964 cache_delete(weapons);
965 }
966
967 return 1;
968 }
969
970 if(dialogid == 28)
971 {
972 if(!response) return ShowHouseMenu(playerid);
973 new id = InHouse[playerid];
974 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
975 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
976 new query[96], Cache: weapon;
977 mysql_format(SQLHandle, query, sizeof(query), "SELECT WeaponID, Ammo FROM houseguns WHERE HouseID=%d ORDER BY WeaponID ASC LIMIT %d, 1", id, listitem);
978 weapon = mysql_query(SQLHandle, query);
979 new rows = cache_num_rows();
980 if(rows) {
981 new string[64], weapname[32], weaponid, ammo;
982 cache_get_value_name_int(0, "WeaponID", weaponid);
983 cache_get_value_name_int(0, "Ammo", ammo);
984
985 GetWeaponName(weaponid, weapname, sizeof(weapname));
986 GivePlayerWeapon(playerid, weaponid, ammo);
987 format(string, sizeof(string), "Evinizde yer alan %s isimli silahı aldınız.", weapname);
988 SendClientMessage(playerid, 0xFFFFFFFF, string);
989 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM houseguns WHERE HouseID=%d AND WeaponID=%d", id, weaponid);
990 mysql_tquery(SQLHandle, query, "", "");
991 }else{
992 MesajGonder(playerid, "Silah bulunamadı.");
993 }
994
995 cache_delete(weapon);
996 return 1;
997 }
998
999 if(dialogid == 29)
1000 {
1001 if(!response) return ShowHouseMenu(playerid);
1002 new id = InHouse[playerid];
1003 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1004 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
1005 if(HouseData[id][SalePrice] > 0) return MesajGonder(playerid, "Ev satılık durumdayken bu fonksiyonu kullanamazsınız.");
1006
1007 if(listitem == 0)
1008 {
1009 new list[512];
1010 format(list, sizeof(list), "#\tAd\tÜcret\n");
1011 for(new i; i < sizeof(HouseFurnitures); ++i)
1012 {
1013 format(list, sizeof(list), "%s%d\t%s\t$%s\n", list, i+1, HouseFurnitures[i][Name], convertNumber(HouseFurnitures[i][Price]));
1014 }
1015
1016 ShowPlayerDialog(playerid, 30, DIALOG_STYLE_TABLIST_HEADERS, "Mobilya Satış", list, "Satın Al", "Geri");
1017 }
1018
1019 if(listitem == 1)
1020 {
1021 SelectMode[playerid] = SELECT_MODE_EDIT;
1022 SelectObject(playerid);
1023 SendClientMessage(playerid, 0xFFFFFFFF, "Düzenlemek istediğiniz mobilyaya tıklayın.");
1024 }
1025
1026 if(listitem == 2)
1027 {
1028 SelectMode[playerid] = SELECT_MODE_SELL;
1029 SelectObject(playerid);
1030 SendClientMessage(playerid, 0xFFFFFFFF, "Satmak istediğiniz mobilyaya tıklayın.");
1031 }
1032
1033 if(listitem == 3)
1034 {
1035 new money, sold, data[e_furniture], query[64];
1036 for(new i; i < Streamer_GetUpperBound(STREAMER_TYPE_OBJECT); ++i)
1037 {
1038 if(!IsValidDynamicObject(i)) continue;
1039 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, i, E_STREAMER_EXTRA_ID, data);
1040 if(data[SQLID] > 0 && data[HouseID] == id)
1041 {
1042 sold++;
1043 money += HouseFurnitures[ data[ArrayID] ][Price];
1044 DestroyDynamicObject(i);
1045 }
1046 }
1047
1048 new string[64];
1049 format(string, sizeof(string), "Sold %d furnitures for $%s.", sold, convertNumber(money));
1050 MesajGonder(playerid,string);
1051 GivePlayerMoney(playerid, money);
1052
1053 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housefurnitures WHERE HouseID=%d", id);
1054 mysql_tquery(SQLHandle, query, "", "");
1055 }
1056
1057 return 1;
1058 }
1059
1060 if(dialogid == 30)
1061 {
1062 if(!response) return ShowHouseMenu(playerid);
1063 new id = InHouse[playerid];
1064 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1065 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
1066 if(HouseData[id][SalePrice] > 0) return MesajGonder(playerid, "Ev satılık durumdayken bu fonksiyonu kullanamazsınız.");
1067 if(HouseFurnitures[listitem][Price] > GetPlayerMoney(playerid)) return MesajGonder(playerid, "Mobilya'nın ücretini karşılayamıyorsunuz.");
1068 GivePlayerMoney(playerid, -HouseFurnitures[listitem][Price]);
1069 new Float: x, Float: y, Float: z;
1070 GetPlayerPos(playerid, x, y, z);
1071 GetXYInFrontOfPlayer(playerid, x, y, 3.0);
1072 new objectid = CreateDynamicObject(HouseFurnitures[listitem][ModelID], x, y, z, 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)), query[256];
1073 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housefurnitures SET HouseID=%d, FurnitureID=%d, FurnitureX=%f, FurnitureY=%f, FurnitureZ=%f, FurnitureVW=%d, FurnitureInt=%d", id, listitem, x, y, z, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
1074 new Cache: add = mysql_query(SQLHandle, query), data[e_furniture];
1075 data[SQLID] = cache_insert_id();
1076 data[HouseID] = id;
1077 data[ArrayID] = listitem;
1078 data[furnitureX] = x;
1079 data[furnitureY] = y;
1080 data[furnitureZ] = z;
1081 data[furnitureRX] = 0.0;
1082 data[furnitureRY] = 0.0;
1083 data[furnitureRZ] = 0.0;
1084 cache_delete(add);
1085 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1086
1087 EditingFurniture[playerid] = true;
1088 EditDynamicObject(playerid, objectid);
1089 return 1;
1090 }
1091
1092 if(dialogid == 31)
1093 {
1094 if(!response) return 1;
1095 new id = InHouse[playerid];
1096 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1097 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
1098 if(HouseData[id][SalePrice] > 0) return MesajGonder(playerid, "Ev satılık durumdayken bu fonksiyonu kullanamazsınız.");
1099 new objectid = GetPVarInt(playerid, "SelectedFurniture"), query[64], data[e_furniture];
1100 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1101 GivePlayerMoney(playerid, HouseFurnitures[ data[ArrayID] ][Price]);
1102 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housefurnitures WHERE ID=%d", data[SQLID]);
1103 mysql_tquery(SQLHandle, query, "", "");
1104 DestroyDynamicObject(objectid);
1105 DeletePVar(playerid, "SelectedFurniture");
1106 return 1;
1107 }
1108
1109 if(dialogid == 32)
1110 {
1111 if(!response) return ShowHouseMenu(playerid);
1112 new id = InHouse[playerid];
1113 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1114 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
1115 if(listitem == 0)
1116 {
1117 new query[200], Cache: visitors;
1118 mysql_format(SQLHandle, query, sizeof(query), "SELECT Visitor, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as VisitDate FROM housevisitors WHERE HouseID=%d ORDER BY Date DESC LIMIT 0, 15", id);
1119 visitors = mysql_query(SQLHandle, query);
1120 new rows = cache_num_rows();
1121 if(rows) {
1122 new list[1024], visitor_name[MAX_PLAYER_NAME], visit_date[20];
1123 format(list, sizeof(list), "Ziyaretçi Adı\tTarih\n");
1124 for(new i; i < rows; ++i)
1125 {
1126 cache_get_value_name(i, "Ziyaretçi", visitor_name);
1127 cache_get_value_name(i, "Ziyaret Tarihi", visit_date);
1128 format(list, sizeof(list), "%s%s\t%s\n", list, visitor_name, visit_date);
1129 }
1130
1131 ShowPlayerDialog(playerid, 33, DIALOG_STYLE_TABLIST_HEADERS, "Ziyaretçiler (Sayfa 1)", list, "Sonraki", "Önceki");
1132 }else{
1133 MesajGonder(playerid, "Ziyaretçiniz olmamış.");
1134 }
1135
1136 cache_delete(visitors);
1137 }
1138
1139 if(listitem == 1)
1140 {
1141 new query[64];
1142 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housevisitors WHERE HouseID=%d", id);
1143 mysql_tquery(SQLHandle, query, "", "");
1144 ShowHouseMenu(playerid);
1145 }
1146
1147 return 1;
1148 }
1149
1150 if(dialogid == 33)
1151 {
1152 if(!response) {
1153 ListPage[playerid]--;
1154 if(ListPage[playerid] < 0)
1155 {
1156 ListPage[playerid] = 0;
1157 ShowHouseMenu(playerid);
1158 return 1;
1159 }
1160 }else{
1161 ListPage[playerid]++;
1162 }
1163
1164 new id = InHouse[playerid];
1165 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1166 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Evin sahibi siz deÄŸilsiniz.");
1167 new query[200], Cache: visitors;
1168 mysql_format(SQLHandle, query, sizeof(query), "SELECT Visitor, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as VisitDate FROM housevisitors WHERE HouseID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1169 visitors = mysql_query(SQLHandle, query);
1170 new rows = cache_num_rows();
1171 if(rows) {
1172 new list[1024], visitor_name[MAX_PLAYER_NAME], visit_date[20];
1173 format(list, sizeof(list), "Visitor Name\tDate\n");
1174 for(new i; i < rows; ++i)
1175 {
1176 cache_get_value_name(i, "Visitor", visitor_name);
1177 cache_get_value_name(i, "VisitDate", visit_date);
1178 format(list, sizeof(list), "%s%s\t%s\n", list, visitor_name, visit_date);
1179 }
1180
1181 new title[32];
1182 format(title, sizeof(title), "Ziyaretçiler (Sayfa %d)", ListPage[playerid]+1);
1183 ShowPlayerDialog(playerid, 33, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Sonraki", "Önceki");
1184 }else{
1185 MesajGonder(playerid, "Herhangi bir ziyaretçi bulunamadı.");
1186 ListPage[playerid] = 0;
1187 ShowHouseMenu(playerid);
1188 }
1189
1190 cache_delete(visitors);
1191 return 1;
1192 }
1193
1194 if(dialogid == 34)
1195 {
1196 if(!response) return ShowHouseMenu(playerid);
1197 new id = InHouse[playerid];
1198 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1199 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi siz deÄŸilsiniz.");
1200 if(listitem == 0)
1201 {
1202 new query[200], Cache: keyowners;
1203 mysql_format(SQLHandle, query, sizeof(query), "SELECT Player, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM housekeys WHERE HouseID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1204 keyowners = mysql_query(SQLHandle, query);
1205 new rows = cache_num_rows();
1206 if(rows) {
1207 new list[1024], key_name[MAX_PLAYER_NAME], key_date[20];
1208 format(list, sizeof(list), "Anahtar Sahibi\tKey Given On\n");
1209 for(new i; i < rows; ++i)
1210 {
1211 cache_get_value_name(i, "Oyuncu", key_name);
1212 cache_get_value_name(i, "Tarih", key_date);
1213 format(list, sizeof(list), "%s%s\t%s\n", list, key_name, key_date);
1214 }
1215
1216 ShowPlayerDialog(playerid, 35, DIALOG_STYLE_TABLIST_HEADERS, "Anahtar Sahipleri (Sayfa 1)", list, "Sonraki", "Önceki");
1217 }else{
1218 MesajGonder(playerid, "Herhangi birine anahtar verilmemiÅŸ.");
1219 }
1220
1221 cache_delete(keyowners);
1222 }
1223
1224 if(listitem == 1)
1225 {
1226 foreach(new i : Player)
1227 {
1228 if(Iter_Contains(HouseKeys[i], id)) Iter_Remove(HouseKeys[i], id);
1229 }
1230
1231 new query[64];
1232 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housekeys WHERE HouseID=%d", id);
1233 mysql_tquery(SQLHandle, query, "", "");
1234 ShowHouseMenu(playerid);
1235 }
1236
1237 return 1;
1238 }
1239
1240 if(dialogid == 35)
1241 {
1242 if(!response) {
1243 ListPage[playerid]--;
1244 if(ListPage[playerid] < 0)
1245 {
1246 ListPage[playerid] = 0;
1247 ShowHouseMenu(playerid);
1248 return 1;
1249 }
1250 }else{
1251 ListPage[playerid]++;
1252 }
1253
1254 new id = InHouse[playerid];
1255 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1256 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi siz deÄŸilsiniz.");
1257 new query[200], Cache: keyowners;
1258 mysql_format(SQLHandle, query, sizeof(query), "SELECT Player, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM housekeys WHERE HouseID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1259 keyowners = mysql_query(SQLHandle, query);
1260 new rows = cache_num_rows();
1261 if(rows) {
1262 new list[1024], key_name[MAX_PLAYER_NAME], key_date[20];
1263 format(list, sizeof(list), "Key Owner\tKey Given On\n");
1264 for(new i; i < rows; ++i)
1265 {
1266 cache_get_value_name(i, "Oyuncu", key_name);
1267 cache_get_value_name(i, "Tarih", key_date);
1268 format(list, sizeof(list), "%s%s\t%s\n", list, key_name, key_date);
1269 }
1270
1271 new title[32];
1272 format(title, sizeof(title), "Anahtar Sahipleri (Sayfa %d)", ListPage[playerid]+1);
1273 ShowPlayerDialog(playerid, 35, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Sonraki", "Önceki");
1274 }else{
1275 ListPage[playerid] = 0;
1276 ShowHouseMenu(playerid);
1277 MesajGonder(playerid, "Daha fazlası bulunamadı.");
1278 }
1279
1280 cache_delete(keyowners);
1281 return 1;
1282 }
1283
1284 if(dialogid == 36)
1285 {
1286 if(!response) {
1287 ListPage[playerid]--;
1288 if(ListPage[playerid] < 0)
1289 {
1290 ListPage[playerid] = 0;
1291 ShowHouseMenu(playerid);
1292 return 1;
1293 }
1294 }else{
1295 ListPage[playerid]++;
1296 }
1297
1298 new id = InHouse[playerid];
1299 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1300 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Evin sahibi siz deÄŸilsiniz.");
1301 new query[200], Cache: safelog;
1302 mysql_format(SQLHandle, query, sizeof(query), "SELECT Type, Amount, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as TransactionDate FROM housesafelogs WHERE HouseID=%d ORDER BY Date DESC LIMIT %d, 15", id, ListPage[playerid]*15);
1303 safelog = mysql_query(SQLHandle, query);
1304 new rows = cache_num_rows();
1305 if(rows) {
1306 new list[1024], type, amount, date[20];
1307 format(list, sizeof(list), "Hareket\tTarih\n");
1308 for(new i; i < rows; ++i)
1309 {
1310 cache_get_value_name_int(i, "Tür", type);
1311 cache_get_value_name_int(i, "Miktar", amount);
1312 cache_get_value_name(i, "TransactionDate", date);
1313
1314 format(list, sizeof(list), "%s%s $%s\t{FFFFFF}%s\n", list, TransactionNames[type], convertNumber(amount), date);
1315 }
1316
1317 new title[32];
1318 format(title, sizeof(title), "Kasa Geçmiş Kaydı (Sayfa %d)", ListPage[playerid]+1);
1319 ShowPlayerDialog(playerid, 36, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Sonraki", "Önceki");
1320 }else{
1321 MesajGonder(playerid, "Daha fazlası bulunuamadı.");
1322 }
1323
1324 cache_delete(safelog);
1325 return 1;
1326 }
1327
1328 if(dialogid == 37)
1329 {
1330 if(!response) {
1331 ListPage[playerid]--;
1332 if(ListPage[playerid] < 0)
1333 {
1334 ListPage[playerid] = 0;
1335 return 1;
1336 }
1337 }else{
1338 ListPage[playerid]++;
1339 }
1340
1341 new query[200], Cache: mykeys;
1342 mysql_format(SQLHandle, query, sizeof(query), "SELECT HouseID, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM housekeys WHERE Player='%e' ORDER BY Date DESC LIMIT %d, 15", Player_GetName(playerid), ListPage[playerid]*15);
1343 mykeys = mysql_query(SQLHandle, query);
1344
1345 new rows = cache_num_rows();
1346 if(rows) {
1347 new list[1024], id, key_date[20];
1348 format(list, sizeof(list), "Ev Bilgilendirme\tKey Given On\n");
1349 for(new i; i < rows; ++i)
1350 {
1351 cache_get_value_name_int(i, "HouseID", id);
1352 cache_get_value_name(i, "KeyDate", key_date);
1353 format(list, sizeof(list), "%s%s's %s\t%s\n", list, HouseData[id][Owner], HouseData[id][Name], key_date);
1354 }
1355
1356 new title[32];
1357 format(title, sizeof(title), "My Keys (Page %d)", ListPage[playerid]+1);
1358 ShowPlayerDialog(playerid, 37, DIALOG_STYLE_TABLIST_HEADERS, title, list, "Sonraki", "Önceki");
1359 }else{
1360 ListPage[playerid] = 0;
1361 MesajGonder(playerid, "Daha fazlası bulunamadı.");
1362 }
1363
1364 cache_delete(mykeys);
1365 return 1;
1366 }
1367
1368 if(dialogid == 38)
1369 {
1370 if(!response) return 1;
1371 new id = GetPVarInt(playerid, "PickupHouseID");
1372 if(!IsPlayerInRangeOfPoint(playerid, 2.0, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ])) return MesajGonder(playerid, "Herhangi bir evin yakınında değilsiniz.");
1373 #if LIMIT_PER_PLAYER > 0
1374 if(OwnedHouses(playerid) + 1 > LIMIT_PER_PLAYER) return MesajGonder(playerid, "Daha fazla ev satın alamazsınız.");
1375 #endif
1376 if(HouseData[id][SalePrice] > GetPlayerMoney(playerid)) return MesajGonder(playerid, "Yeterli paranız yok.");
1377 if(HouseData[id][SalePrice] < 1) return MesajGonder(playerid, "Ev bir başkasına ait.");
1378 new old_owner[MAX_PLAYER_NAME], price = HouseData[id][SalePrice], owner_id = INVALID_PLAYER_ID;
1379 format(old_owner, MAX_PLAYER_NAME, "%s", HouseData[id][Owner]);
1380
1381 foreach(new i : Player)
1382 {
1383 if(!strcmp(HouseData[id][Owner], Player_GetName(i)))
1384 {
1385 owner_id = i;
1386 break;
1387 }
1388 }
1389
1390 GivePlayerMoney(playerid, -HouseData[id][SalePrice]);
1391 GetPlayerName(playerid, HouseData[id][Owner], MAX_PLAYER_NAME);
1392 HouseData[id][LastEntered] = gettime();
1393 HouseData[id][SalePrice] = 0;
1394 HouseData[id][Save] = true;
1395
1396 UpdateHouseLabel(id);
1397 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 19522);
1398 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 32);
1399 SendToHouse(playerid, id);
1400
1401 foreach(new i : Player)
1402 {
1403 if(i == playerid) continue;
1404 if(InHouse[i] == id)
1405 {
1406 SetPVarInt(i, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1407 SetPlayerVirtualWorld(i, 0);
1408 SetPlayerInterior(i, 0);
1409 SetPlayerPos(i, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
1410 InHouse[i] = -1;
1411 }
1412
1413 if(Iter_Contains(HouseKeys[i], id)) Iter_Remove(HouseKeys[i], id);
1414 }
1415
1416 new query[128];
1417 if(IsPlayerConnected(owner_id)) {
1418 GivePlayerMoney(owner_id, price);
1419
1420 new string[128];
1421 format(string, sizeof(string), "%s(%d) evinizi $%s'a satın aldı.", HouseData[id][Owner], playerid, convertNumber(price));
1422 SendClientMessage(owner_id, -1, string);
1423 }else{
1424 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housesales SET OldOwner='%e', NewOwner='%e', Price=%d", old_owner, HouseData[id][Owner], price);
1425 mysql_tquery(SQLHandle, query, "", "");
1426 }
1427
1428 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housevisitors WHERE HouseID=%d", id);
1429 mysql_tquery(SQLHandle, query, "", "");
1430
1431 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housekeys WHERE HouseID=%d", id);
1432 mysql_tquery(SQLHandle, query, "", "");
1433
1434 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housesafelogs WHERE HouseID=%d", id);
1435 mysql_tquery(SQLHandle, query, "", "");
1436 return 1;
1437 }
1438
1439 if(dialogid == 39)
1440 {
1441 if(!response) return ShowHouseMenu(playerid);
1442 new id = InHouse[playerid];
1443 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1444 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi siz deÄŸilsiniz.");
1445 if(listitem == 0)
1446 {
1447 new money = floatround(HouseData[id][Price] * 0.85) + HouseData[id][SafeMoney];
1448 GivePlayerMoney(playerid, money);
1449 ResetHouse(id);
1450 }
1451
1452 if(listitem == 1)
1453 {
1454 if(HouseData[id][SalePrice] > 0) {
1455 HouseData[id][SalePrice] = 0;
1456 HouseData[id][Save] = true;
1457
1458 UpdateHouseLabel(id);
1459 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 19522);
1460 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 32);
1461 MesajGonder(playerid,"Your house is no longer for sale.");
1462 }else{
1463 if(HouseData[id][SafeMoney] > 0) return MesajGonder(playerid, "Kasanızda para varken evinizi satılığa çıkaramazsınız.");
1464 ShowPlayerDialog(playerid, 40, DIALOG_STYLE_INPUT, "Ev Satış", "Eviniz için kaç para düşünüyorsunuz?", "Satılığa Çıkar", "Çıkış");
1465 }
1466 }
1467
1468 return 1;
1469 }
1470
1471 if(dialogid == 40)
1472 {
1473 if(!response) return ShowHouseMenu(playerid);
1474 new id = InHouse[playerid];
1475 if(id == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1476 if(strcmp(HouseData[id][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
1477 new amount = strval(inputtext);
1478 if(!(1 <= amount <= 10000000)) return ShowPlayerDialog(playerid, 40, DIALOG_STYLE_INPUT, "Ev Satış", "{E74C3C}$1 veya $100,000,000 aralığında fiyat girebilirsiniz..\n\n{FFFFFF}Ne kadara satmayı düşünüyorsunuz?", "Satışa Koy", "İptal");
1479 HouseData[id][SalePrice] = amount;
1480 HouseData[id][Save] = true;
1481
1482 UpdateHouseLabel(id);
1483 Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseData[id][HousePickup], E_STREAMER_MODEL_ID, 1273);
1484 Streamer_SetIntData(STREAMER_TYPE_MAP_ICON, HouseData[id][HouseIcon], E_STREAMER_TYPE, 31);
1485
1486 new string[128];
1487 format(string, sizeof(string), "You put your house for sale for $%s.", convertNumber(amount));
1488 MesajGonder(playerid,string);
1489 return 1;
1490 }
1491
1492 return 0;
1493}
1494
1495public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float: x, Float: y, Float: z)
1496{
1497 switch(SelectMode[playerid])
1498 {
1499 case SELECT_MODE_EDIT:
1500 {
1501 EditingFurniture[playerid] = true;
1502 EditDynamicObject(playerid, objectid);
1503 }
1504
1505 case SELECT_MODE_SELL:
1506 {
1507 CancelEdit(playerid);
1508
1509 new data[e_furniture], string[128];
1510 SetPVarInt(playerid, "SelectedFurniture", objectid);
1511 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1512 format(string, sizeof(string), "Satmak istiyor musunuz? (%s)\nGeri alınacak ücret:{2ECC71}$%s.", HouseFurnitures[ data[ArrayID] ][Name], convertNumber(HouseFurnitures[ data[ArrayID] ][Price]));
1513 ShowPlayerDialog(playerid, 31, DIALOG_STYLE_MSGBOX, "Confirm Sale", string, "Sat", "Kapat");
1514 }
1515 }
1516
1517 SelectMode[playerid] = SELECT_MODE_NONE;
1518 return 1;
1519}
1520
1521public OnPlayerEditDynamicObject(playerid, objectid, response, Float: x, Float: y, Float: z, Float: rx, Float: ry, Float: rz)
1522{
1523 if(EditingFurniture[playerid])
1524 {
1525 switch(response)
1526 {
1527 case EDIT_RESPONSE_CANCEL:
1528 {
1529 new data[e_furniture];
1530 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1531 SetDynamicObjectPos(objectid, data[furnitureX], data[furnitureY], data[furnitureZ]);
1532 SetDynamicObjectRot(objectid, data[furnitureRX], data[furnitureRY], data[furnitureRZ]);
1533
1534 EditingFurniture[playerid] = false;
1535 }
1536
1537 case EDIT_RESPONSE_FINAL:
1538 {
1539 new data[e_furniture], query[256];
1540 Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1541 data[furnitureX] = x;
1542 data[furnitureY] = y;
1543 data[furnitureZ] = z;
1544 data[furnitureRX] = rx;
1545 data[furnitureRY] = ry;
1546 data[furnitureRZ] = rz;
1547 SetDynamicObjectPos(objectid, data[furnitureX], data[furnitureY], data[furnitureZ]);
1548 SetDynamicObjectRot(objectid, data[furnitureRX], data[furnitureRY], data[furnitureRZ]);
1549 Streamer_SetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, data);
1550
1551 mysql_format(SQLHandle, query, sizeof(query), "UPDATE housefurnitures SET FurnitureX=%f, FurnitureY=%f, FurnitureZ=%f, FurnitureRX=%f, FurnitureRY=%f, FurnitureRZ=%f WHERE ID=%d", data[furnitureX], data[furnitureY], data[furnitureZ], data[furnitureRX], data[furnitureRY], data[furnitureRZ], data[SQLID]);
1552 mysql_tquery(SQLHandle, query, "", "");
1553
1554 EditingFurniture[playerid] = false;
1555 }
1556 }
1557 }
1558
1559 return 1;
1560}
1561
1562/* ============ Player Commands ============ */
1563CMD:ev(playerid, params[])
1564{
1565 if(InHouse[playerid] == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1566 ShowHouseMenu(playerid);
1567 return 1;
1568}
1569
1570CMD:evanahtarlarim(playerid, params[])
1571{
1572 new query[200], Cache: mykeys;
1573 mysql_format(SQLHandle, query, sizeof(query), "SELECT HouseID, FROM_UNIXTIME(Date, '%%d/%%m/%%Y %%H:%%i') as KeyDate FROM housekeys WHERE Player='%e' ORDER BY Date DESC LIMIT 0, 15", Player_GetName(playerid));
1574 mykeys = mysql_query(SQLHandle, query);
1575 ListPage[playerid] = 0;
1576
1577 new rows = cache_num_rows();
1578 if(rows) {
1579 new list[1024], id, key_date[20];
1580 format(list, sizeof(list), "Ev Bilgi\tKey Given On\n");
1581 for(new i; i < rows; ++i)
1582 {
1583 cache_get_value_name_int(i, "HouseID", id);
1584 cache_get_value_name(i, "KeyDate", key_date);
1585 format(list, sizeof(list), "%s%s's %s\t%s\n", list, HouseData[id][Owner], HouseData[id][Name], key_date);
1586 }
1587
1588 ShowPlayerDialog(playerid, 37, DIALOG_STYLE_TABLIST_HEADERS, "My Keys (Page 1)", list, "Sonraki", "Kapat");
1589 }else{
1590 MesajGonder(playerid, "Herhangi bir evin anahtarına sahip değilsiniz.");
1591 }
1592
1593 cache_delete(mykeys);
1594 return 1;
1595}
1596
1597CMD:evanahtarver(playerid, params[])
1598{
1599 if(InHouse[playerid] == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1600 new id, houseid = InHouse[playerid];
1601 if(strcmp(HouseData[houseid][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi deÄŸilsiniz.");
1602 if(sscanf(params, "u", id)) return MesajGonder(playerid, "Kullanım: /evanahtarver [playerid]");
1603 if(id == INVALID_PLAYER_ID) return MesajGonder(playerid, "Geçersiz ID.");
1604 if(id == playerid) return MesajGonder(playerid, "Kendinize yedek anahtar veremezsiniz.");
1605 if(Iter_Contains(HouseKeys[id], houseid)) return MesajGonder(playerid, "Daha öncesinde verilmiş.");
1606 Iter_Add(HouseKeys[id], houseid);
1607
1608 new query[128];
1609 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO housekeys SET HouseID=%d, Player='%e', Date=UNIX_TIMESTAMP()", houseid, Player_GetName(id));
1610 mysql_tquery(SQLHandle, query, "", "");
1611
1612 format(query, sizeof(query), "Yedek anahtar verildi. Alan kiÅŸi:%s", Player_GetName(id));
1613 MesajGonder(playerid,query);
1614 format(query, sizeof(query), "%s size evinin yedek anahtarını verdi. %s.", HouseData[houseid][Owner], HouseData[houseid][Name]);
1615 SendClientMessage(id, -1, query);
1616 return 1;
1617}
1618
1619CMD:evanahtaral(playerid, params[])
1620{
1621 if(InHouse[playerid] == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1622 new id, houseid = InHouse[playerid];
1623 if(strcmp(HouseData[houseid][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi siz deÄŸilsiniz.");
1624 if(sscanf(params, "u", id)) return MesajGonder(playerid, "Kullanım: /evanahtaral [playerid]");
1625 if(id == INVALID_PLAYER_ID) return MesajGonder(playerid, "Geçersiz ID.");
1626 if(id == playerid) return MesajGonder(playerid, "Bu komutu kendi üzerinizde kullanamazsınız.");
1627 if(!Iter_Contains(HouseKeys[id], houseid)) return MesajGonder(playerid, "Daha öncesinde anahtar verilmemiş.");
1628 Iter_Remove(HouseKeys[id], houseid);
1629
1630 new query[128];
1631 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM housekeys WHERE HouseID=%d AND Player='%e'", houseid, Player_GetName(id));
1632 mysql_tquery(SQLHandle, query, "", "");
1633
1634 format(query, sizeof(query), "%s isimli oyuncudan anahtar silindi.", Player_GetName(id));
1635 MesajGonder(playerid,query);
1636 format(query, sizeof(query), "Ev sahibi %s anahtar yetkinizi geri aldı. %s.", HouseData[houseid][Owner], HouseData[houseid][Name]);
1637 SendClientMessage(id, -1, query);
1638 return 1;
1639}
1640
1641CMD:evdenat(playerid, params[])
1642{
1643 if(InHouse[playerid] == -1) return MesajGonder(playerid, "Ev içerisinde değilsiniz.");
1644 new id, houseid = InHouse[playerid];
1645 if(strcmp(HouseData[houseid][Owner], Player_GetName(playerid))) return MesajGonder(playerid, "Bu evin sahibi siz deÄŸilsiniz.");
1646 if(sscanf(params, "u", id)) return MesajGonder(playerid, "Kullanım: /evdenat [playerid]");
1647 if(id == INVALID_PLAYER_ID) return MesajGonder(playerid, "Geçersiz ID.");
1648 if(id == playerid) return MesajGonder(playerid, "Bu komutu kendi üzerinizde kullanamazsınız.");
1649 if(InHouse[id] != houseid) return MesajGonder(playerid, "Kişi evinizin içerisinde değil.");
1650 MesajGonder(playerid,"Oyuncu evden kovuldu.");
1651 SendClientMessage(id, -1, "Ev sahibi tarafından evden kovuldunuz.");
1652 SetPVarInt(id, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1653 SetPlayerVirtualWorld(id, 0);
1654 SetPlayerInterior(id, 0);
1655 SetPlayerPos(id, HouseData[houseid][houseX], HouseData[houseid][houseY], HouseData[houseid][houseZ]);
1656 InHouse[id] = -1;
1657 return 1;
1658}
1659
1660/* ============ Admin Commands ============ */
1661CMD:evekle(playerid, params[])
1662{
1663 if(!IsPlayerAdmin(playerid)) return MesajGonder(playerid, "Bu komutu kullanamazsınız.");
1664 new interior, price;
1665 if(sscanf(params, "ii", price, interior)) return MesajGonder(playerid, "Kullanım: /evekle [ücret] [interiorid]");
1666 if(!(0 <= interior <= sizeof(HouseInteriors)-1)) return MesajGonder(playerid, "Geçersiz Interior ID.");
1667 new id = Iter_Free(Houses);
1668 if(id == -1) return MesajGonder(playerid, "Daha fazla ev yaratamazsınız.");
1669 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1670 format(HouseData[id][Name], 48, "Satılık Ev");
1671 format(HouseData[id][Owner], MAX_PLAYER_NAME, "-");
1672 GetPlayerPos(playerid, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
1673 HouseData[id][Price] = price;
1674 HouseData[id][Interior] = interior;
1675 HouseData[id][LockMode] = LOCK_MODE_NOLOCK;
1676 HouseData[id][SalePrice] = HouseData[id][SafeMoney] = HouseData[id][LastEntered] = 0;
1677 HouseData[id][Save] = true;
1678
1679 new label[200];
1680 format(label, sizeof(label), "{2ECC71}Satılık Ev (ID: %d)\n{FFFFFF}%s\n{F1C40F}Ücret: {2ECC71}$%s", id, HouseInteriors[interior][IntName], convertNumber(price));
1681 HouseData[id][HouseLabel] = CreateDynamic3DTextLabel(label, 0xFFFFFFFF, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]+0.35, 15.0, .testlos = 1);
1682 HouseData[id][HousePickup] = CreateDynamicPickup(1273, 1, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
1683 HouseData[id][HouseIcon] = CreateDynamicMapIcon(HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ], 31, 0);
1684
1685 new query[256];
1686 mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO houses SET ID=%d, HouseX=%f, HouseY=%f, HouseZ=%f, HousePrice=%d, HouseInterior=%d", id, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ], price, interior);
1687 mysql_tquery(SQLHandle, query, "", "");
1688 Iter_Add(Houses, id);
1689 return 1;
1690}
1691
1692CMD:evegit(playerid, params[])
1693{
1694 if(!IsPlayerAdmin(playerid)) return MesajGonder(playerid, "Bu komutu kullanamazsınız.");
1695 new id;
1696 if(sscanf(params, "i", id)) return MesajGonder(playerid, "Kullanım: /evegit [evid]");
1697 if(!Iter_Contains(Houses, id)) return MesajGonder(playerid, "Kullandığınız ev ID'si geçersiz.");
1698 SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
1699 SetPlayerPos(playerid, HouseData[id][houseX], HouseData[id][houseY], HouseData[id][houseZ]);
1700 SetPlayerInterior(playerid, 0);
1701 SetPlayerVirtualWorld(playerid, 0);
1702 return 1;
1703}
1704
1705CMD:evint(playerid, params[])
1706{
1707 if(!IsPlayerAdmin(playerid)) return MesajGonder(playerid, "Bu komutu kullanamazsınız.");
1708 new id, interior;
1709 if(sscanf(params, "ii", id, interior)) return MesajGonder(playerid, "Kullanım: /evint [evid] [interiorid]");
1710 if(!Iter_Contains(Houses, id)) return MesajGonder(playerid, "Kullandığınız ev ID'si geçersiz.");
1711 if(!(0 <= interior <= sizeof(HouseInteriors)-1)) return MesajGonder(playerid, "Kullandığınız interior ID'si geçersiz.");
1712 HouseData[id][Interior] = interior;
1713
1714 new query[64];
1715 mysql_format(SQLHandle, query, sizeof(query), "UPDATE houses SET HouseInterior=%d WHERE ID=%d", interior, id);
1716 mysql_tquery(SQLHandle, query, "", "");
1717
1718 UpdateHouseLabel(id);
1719 MesajGonder(playerid,"Interior updated.");
1720 return 1;
1721}
1722
1723CMD:evucret(playerid, params[])
1724{
1725 if(!IsPlayerAdmin(playerid)) return MesajGonder(playerid, "Bu komutu kullanamazsınız.");
1726 new id, price;
1727 if(sscanf(params, "ii", id, price)) return MesajGonder(playerid, "Kullanım: /evucret [evid] [ücret]");
1728 if(!Iter_Contains(Houses, id)) return MesajGonder(playerid, "Kullandığınız ev ID'si geçersiz.");
1729 HouseData[id][Price] = price;
1730
1731 new query[64];
1732 mysql_format(SQLHandle, query, sizeof(query), "UPDATE houses SET HousePrice=%d WHERE ID=%d", price, id);
1733 mysql_tquery(SQLHandle, query, "", "");
1734
1735 UpdateHouseLabel(id);
1736 MesajGonder(playerid,"Ücret güncellendii.");
1737 return 1;
1738}
1739
1740CMD:evreset(playerid, params[])
1741{
1742 if(!IsPlayerAdmin(playerid)) return MesajGonder(playerid, "Bu komutu kullanamazsınız.");
1743 new id;
1744 if(sscanf(params, "i", id)) return MesajGonder(playerid, "Kullanım: /evreset [evid]");
1745 if(!Iter_Contains(Houses, id)) return MesajGonder(playerid, "Kullandığınız ev ID'si geçersiz.");
1746 ResetHouse(id);
1747 MesajGonder(playerid,"Ev '0'landı.");
1748 return 1;
1749}
1750
1751CMD:evsil(playerid, params[])
1752{
1753 if(!IsPlayerAdmin(playerid)) return MesajGonder(playerid, "Bu komutu kullanamazsınız.");
1754 new id;
1755 if(sscanf(params, "i", id)) return MesajGonder(playerid, "Kullanım: /evsil [evid]");
1756 if(!Iter_Contains(Houses, id)) return MesajGonder(playerid, "Kullandığınız ev ID'si geçersiz.");
1757 ResetHouse(id);
1758 DestroyDynamic3DTextLabel(HouseData[id][HouseLabel]);
1759 DestroyDynamicPickup(HouseData[id][HousePickup]);
1760 DestroyDynamicMapIcon(HouseData[id][HouseIcon]);
1761 Iter_Remove(Houses, id);
1762 HouseData[id][HouseLabel] = Text3D: INVALID_3DTEXT_ID;
1763 HouseData[id][HousePickup] = HouseData[id][HouseIcon] = -1;
1764 HouseData[id][Save] = false;
1765
1766 new query[64];
1767 mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM houses WHERE ID=%d", id);
1768 mysql_tquery(SQLHandle, query, "", "");
1769 MesajGonder(playerid,"House deleted.");
1770 return 1;
1771}
1772forward MesajGonder(playerid, mesaj[]);
1773public MesajGonder(playerid, mesaj[])
1774{
1775 new Yazi[512];
1776 format(Yazi, sizeof(Yazi),"{555555}(( {FFFFFF}%s {555555}))", mesaj);
1777 SendClientMessage(playerid, 0xFFFFFFAA, Yazi);
1778 return 1;
1779}