· 6 years ago · Jul 08, 2019, 10:52 AM
1#include <a_samp>
2#include <inc/a_mysql>
3#include <inc/whirlpool>
4#include <inc/Pawn.CMD>
5#include <inc/streamer>
6#include <inc/sscanf2>
7#include <inc/foreach>
8
9main(){}
10
11#define MYSQL_HOST "127.0.0.1"
12#define MYSQL_USER "root"
13#define MYSQL_PASSWORD ""
14#define MYSQL_DATABASE "mojabaza"
15
16//Kolory
17#define BIALY "{FFFFFF}"
18#define ZIELONY "{99CC00}"
19
20#define DIALOG_REGISTER 0
21#define DIALOG_LOGIN 1
22
23#define DIALOG_VEHICLES 1000
24
25#define DIALOG_BUY_VEHICLE 2000
26#define DIALOG_WYBOR_POJAZD 2001
27#define DIALOG_BUY_CLOVER 3000
28#define DIALOG_BUY_TAMPA 3001
29#define DIALOG_WYBOR_COL1 4000
30#define DIALOG_WYBOR_COL2 4001
31
32#define pos_salon 2129.2078, -1129.9963, 25.5823
33
34new MySQL:g_SQL;
35new MySQLRaceCheck[MAX_PLAYERS];
36
37new Zalogowany[MAX_PLAYERS];
38
39#define MAX_CAR_SLOT 1
40
41new message[500];
42
43enum pInfo
44{
45 ID,
46 Nick[MAX_PLAYER_NAME],
47 Password[129],
48 Cache:Cache_ID,
49 Money,
50 MaPojazd[MAX_CAR_SLOT]
51};
52new PlayerInfo[MAX_PLAYERS][pInfo];
53
54enum VehiclesData
55{
56 DB_ID,
57 vID,
58 vehModel,
59 vehName[25],
60 vehOwner[MAX_PLAYER_NAME],
61 vehColorOne,
62 vehColorTwo,
63 Text3D:vehLabel,
64 Float:vehX,
65 Float:vehY,
66 Float:vehZ,
67 Float:vehA
68};
69new vInfo[MAX_VEHICLES][VehiclesData];
70
71new Iterator:Vehicles<MAX_VEHICLES>; // New vehicles iterator
72
73//new VehicleUID[MAX_VEHICLES];
74
75new pojazdid[MAX_PLAYERS];
76new CenaPojazdu[MAX_PLAYERS];
77new KolorPierwszy[MAX_PLAYERS];
78
79new Float:LosowyParking[27][4] = {
80{2161.2605,-1197.3385,23.5517,89.7108},//1
81{2161.0071,-1192.6439,23.4812,90.5042},//2
82{2160.9656,-1187.9816,23.4800,90.5042},//3
83{2160.9233,-1183.1466,23.4788,90.5042},//4
84{2160.8806,-1178.2858,23.4776,90.5042},//5
85{2160.8352,-1173.1339,23.4763,90.5042},//6
86{2160.7915,-1168.2013,23.4751,90.5042},//7
87{2160.7498,-1163.4933,23.4739,90.5042},//8
88{2160.7043,-1158.3149,23.4726,90.5042},//9
89{2160.6587,-1153.1633,23.4713,90.5042},//10
90{2160.6128,-1148.3796,23.9337,90.5042},//11
91{2160.5649,-1143.8113,24.8596,90.5042},//12
92{2148.7363,-1203.4053,23.5150,270.6497},//13
93{2148.6887,-1199.0850,23.6128,270.6497},//14
94{2148.6409,-1194.7642,23.7106,270.6497},//15
95{2148.5842,-1189.6375,23.8267,270.6497},//16
96{2148.5342,-1185.1234,23.9289,270.6497},//17
97{2148.4814,-1180.3663,24.0366,270.6497},//18
98{2148.3794,-1171.1194,24.2460,270.6497},//19
99{2148.3274,-1166.4340,24.3521,270.6497},//20
100{2148.2791,-1162.0425,24.4516,270.6497},//21
101{2148.2290,-1157.5012,24.5544,270.6497},//22
102{2148.1829,-1153.3276,24.6489,270.6497},//23
103{2148.1255,-1148.1309,24.7666,270.6497},//24
104{2148.0740,-1143.4689,24.8721,270.6497},//25
105{2148.0215,-1138.7086,24.9799,270.6497},//26
106{2148.6426,-1133.7229,25.2246,268.2947}//27
107};
108
109new VehicleNames[212][] =
110{
111 "Landstalker", "Bravura", "Buffalo", "Linerunner", "Pereniel", "Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus","Voodoo", "Pony",
112 "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat", "Mr Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer",
113 "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero",
114 "Packer", "Monster", "Admiral", "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer 2", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy",
115 "Solair", "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic", "Sanchez", "Sparrow", "Patriot", "Quad",
116 "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR3 50", "Walton", "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick",
117 "News Chopper", "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa",
118 "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropdust",
119 "Stunt", "Tanker", "RoadTrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
120 "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent", "Bullet",
121 "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster A",
122 "Monster B", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight", "Trailer", "Kart", "Mower",
123 "Duneride", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "Newsvan", "Tug", "Trailer A", "Emperor", "Wayfarer", "Euros",
124 "Hotdog", "Club", "Trailer B", "Trailer C", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)", "Police Car (SFPD)", "Police Car (LVPD)", "Police Ranger",
125 "Picador", "S.W.A.T. Van", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage Trailer A", "Luggage Trailer B", "Stair Trailer", "Boxville", "Farm Plow", "Utility Trailer"
126};
127
128public OnGameModeInit()
129{
130 new MySQLOpt:option_id = mysql_init_options();
131
132 mysql_set_option(option_id, AUTO_RECONNECT, true);
133
134 g_SQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
135
136 if(g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) != 0)
137 {
138 print("[MYSQL - BŁĄD] Nie można było połączyć się z bazą danych! Wyłączam serwer...");
139 SendRconCommand("exit");
140 return 1;
141 }
142 else
143 {
144 print("[MYSQL] Połączenie z bazą danych została nawiązana!");
145 }
146
147 SetupPlayerTable();
148 SetupPrivCarTable();
149
150 //StworzonePojazdy();
151
152 mysql_tquery(g_SQL, "SELECT * FROM `privcars`", "LoadVehicles");
153
154 DisableInteriorEnterExits();
155 EnableStuntBonusForAll(0);
156
157 AddPlayerClass(29, pos_salon, 0.0, -1, -1, -1, -1, -1, -1);
158 return 1;
159}
160
161forward LoadVehicles();
162public LoadVehicles()
163{
164 new rows = cache_num_rows(), string[75];
165
166 if(rows > 0)
167 {
168 for (new i = 0; i < rows; i++)
169 {
170 cache_get_value_name(i, "vehOwner", vInfo[i][vehOwner], .max_len = MAX_PLAYER_NAME);
171 cache_get_value_name_int(i, "vehModel", vInfo[i][vehModel]);
172 cache_get_value_name(i, "vehName", vInfo[i][vehName], 25);
173 cache_get_value_name_int(i, "vehColorOne", vInfo[i][vehColorOne]);
174 cache_get_value_name_int(i, "vehColorTwo", vInfo[i][vehColorTwo]);
175 cache_get_value_name_float(i, "vehX", vInfo[i][vehX]);
176 cache_get_value_name_float(i, "vehY", vInfo[i][vehY]);
177 cache_get_value_name_float(i, "vehZ", vInfo[i][vehZ]);
178 cache_get_value_name_float(i, "vehA", vInfo[i][vehA]);
179
180 vInfo[i][vID] = CreateVehicle(vInfo[i][vehModel], vInfo[i][vehX], vInfo[i][vehY], vInfo[i][vehZ], vInfo[i][vehA], vInfo[i][vehColorOne], vInfo[i][vehColorTwo], -1);
181
182 cache_get_value_name_int(i, "vehID", vInfo[i][DB_ID]);
183
184 SetVehicleToRespawn(vInfo[i][vID]);
185
186 format(string, sizeof(string), "Pojazd UID: %d\nWłaściciel: %s\nNazwa: %s", vInfo[i][DB_ID], vInfo[i][vehOwner], vInfo[i][vehName]);
187 vInfo[i][vehLabel] = CreateDynamic3DTextLabel(string, -1, vInfo[i][vehX], vInfo[i][vehY], vInfo[i][vehZ], 10.0, INVALID_PLAYER_ID, vInfo[i][vID]);
188
189 Iter_Add(Vehicles, i);
190 }
191 }
192
193 return 1;
194}
195
196GetDynamicVehicleID(vehicleid)
197{
198 foreach(new i : Vehicles)
199 {
200 if(vehicleid == vInfo[i][vID]) return i;
201 }
202 return -1;
203}
204
205public OnGameModeExit()
206{
207 foreach(new i : Vehicles)
208 {
209 if(!strcmp(vInfo[i][vehOwner], "-") || strcmp(vInfo[i][vehOwner], "-"))
210 {
211 SaveVehicle(i);
212 DestroyVehicle(vInfo[i][vID]);
213 DestroyDynamic3DTextLabel(vInfo[i][vehLabel]);
214 }
215 }
216
217 mysql_close(g_SQL);
218 return 1;
219}
220
221public OnPlayerConnect(playerid)
222{
223 TogglePlayerSpectating(playerid, 1);
224
225 MySQLRaceCheck[playerid]++;
226
227 static const empty_player[pInfo];
228 PlayerInfo[playerid] = empty_player;
229
230 ZerujZmienne(playerid);
231
232 GetPlayerName(playerid, PlayerInfo[playerid][Nick], MAX_PLAYER_NAME);
233
234 new query[103];
235 mysql_format(g_SQL, query, sizeof(query), "SELECT * FROM `accounts` WHERE `Nick` = '%s' LIMIT 1", PlayerInfo[playerid][Nick]);
236 mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "dd", playerid, MySQLRaceCheck[playerid]);
237
238 return 1;
239}
240
241public OnPlayerDisconnect(playerid, reason)
242{
243 OnPlayerUpdateEx(playerid);
244
245 for(new i = 0; i < MAX_PLAYERS; i++)
246 {
247 if(!strcmp(vInfo[i][vehOwner], GetName(playerid)))
248 {
249 SaveVehicle(i);
250 //DestroyVehicle(vInfo[i][vID]); //delete
251 print("Zapisano veh!");
252 }
253 }
254
255 return 1;
256}
257
258public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
259{
260 new vid;
261 if((vid = GetDynamicVehicleID(vehicleid)) != -1)
262 {
263 if(!strcmp(vInfo[vid][vehOwner], GetName(playerid)))
264 {
265 SendClientMessage(playerid, -1, "This vehicle belongs to you!");
266 }
267 else
268 {
269 SendClientMessage(playerid, -1, "This is not one of your vehicles!");
270 ClearAnimations(playerid);
271 return 1;
272 }
273 }
274 else
275 {
276 SendClientMessage(playerid, -1, "Not a scripted vehicle!");
277 }
278
279 return 1;
280}
281
282forward OnPlayerDataLoaded(playerid, race_check);
283public OnPlayerDataLoaded(playerid, race_check)
284{
285 if(race_check != MySQLRaceCheck[playerid]) return Kick(playerid);
286
287 new string[115];
288 if(cache_num_rows() > 0)
289 {
290 cache_get_value(0, "Password", PlayerInfo[playerid][Password], 129);
291
292 PlayerInfo[playerid][Cache_ID] = cache_save();
293
294 format(string, sizeof(string), "To konto (%s) jest zarejestrowane. Zaloguj się, podając swoje hasło w poniższym polu:", PlayerInfo[playerid][Nick]);
295 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logowanie", string, "Zaloguj", "Wyjdź");
296 }
297 else
298 {
299 format(string, sizeof(string), "Witamy %s, możesz zarejestrować się, wpisując swoje hasło w polu poniżej:", PlayerInfo[playerid][Nick]);
300 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Rejestracja", string, "Zarejestruj", "Wyjdź");
301 }
302 return 1;
303}
304
305forward OnPlayerRegister(playerid);
306public OnPlayerRegister(playerid)
307{
308 PlayerInfo[playerid][ID] = cache_insert_id();
309
310 GivePlayerMoney(playerid, 500000);
311
312 Zalogowany[playerid] = 1;
313 return 1;
314}
315
316forward OnPlayerUpdateEx(playerid);
317public OnPlayerUpdateEx(playerid)
318{
319 if(IsPlayerConnected(playerid))
320 {
321 if(Zalogowany[playerid])
322 {
323 new query[650];
324
325 PlayerInfo[playerid][Money] = GetPlayerMoney(playerid);
326
327 mysql_format(g_SQL, query, sizeof(query), "UPDATE `accounts` SET `Money` = %d, `MaPojazd` = %d WHERE `ID` = %d LIMIT 1", PlayerInfo[playerid][Money], PlayerInfo[playerid][MaPojazd],
328 PlayerInfo[playerid][ID]);
329 mysql_tquery(g_SQL, query);
330 }
331 }
332 return 1;
333}
334
335public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
336{
337 switch(dialogid)
338 {
339 case DIALOG_LOGIN:
340 {
341 if(response)
342 {
343 new HashPass[129];
344 WP_Hash(HashPass, sizeof(HashPass), inputtext);
345
346 if(strcmp(HashPass, PlayerInfo[playerid][Password]) == 0)
347 {
348 cache_set_active(PlayerInfo[playerid][Cache_ID]);
349
350 AssignPlayerData(playerid);
351
352 cache_delete(PlayerInfo[playerid][Cache_ID]);
353 PlayerInfo[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
354
355 TogglePlayerSpectating(playerid, 0);
356
357 Zalogowany[playerid] = 1;
358
359 /*new query[65];
360 mysql_format(g_SQL, query, sizeof(query), "SELECT * FROM `privcars` WHERE `vehOwner` = '%e'", GetName(playerid));
361 mysql_tquery(g_SQL, query, "LoadPlayerVehicles", "i", playerid); //LOGINV*/
362
363 GivePlayerMoney(playerid, 500000);
364
365 SetSpawnInfo(playerid, 0, 29, pos_salon, 0.0, -1, -1, -1, -1, -1, -1);
366 SpawnPlayer(playerid);
367 }
368 else
369 {
370 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logowanie", "Złe hasło!\nW polu poniżej wpisz swoje hasło:", "Zaloguj", "Wyjdź");
371 }
372 }
373 if(!response)
374 {
375 Kick(playerid);
376 }
377 }
378 case DIALOG_REGISTER:
379 {
380 if(response)
381 {
382 if(strlen(inputtext) >= 6 && strlen(inputtext) <= 64)
383 {
384 new HashPass[129];
385 WP_Hash(HashPass, sizeof(HashPass), inputtext);
386
387 new query[300];
388 mysql_format(g_SQL, query, sizeof(query), "INSERT INTO `accounts` (`Nick`, `Password`) VALUES ('%s', '%s')", PlayerInfo[playerid][Nick], HashPass);
389 mysql_tquery(g_SQL, query, "OnPlayerRegister", "d", playerid);
390
391 TogglePlayerSpectating(playerid, 0);
392 }
393 else
394 {
395 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Rejestracja", "Twoje hasło musi mieć od 6 do 64 znaków!\nW polu poniżej wpisz swoje hasło:", "Zarejestruj", "Wyjdź");
396 }
397 }
398 if(!response)
399 {
400 Kick(playerid);
401 }
402 }
403
404 case 440:
405 {
406 if(response)
407 {
408 switch(listitem)
409 {
410 case 0:
411 {
412 ShowPlayerDialog(playerid, 457, DIALOG_STYLE_LIST, "Na każdą kieszeń", "Clover 45tys\nTampa 40tys", "Wybierz", "Wróc");
413 }
414 }
415 }
416 }
417 case 457:
418 {
419 if(response)
420 {
421 switch(listitem)
422 {
423 case 0:
424 {
425 ShowPlayerDialog(playerid, 4700, DIALOG_STYLE_MSGBOX, "Kupowanie Clovera", "Clover\n\nCena: 45.000$", "Kup!", "Wróc");
426 pojazdid[playerid] = 542;
427 CenaPojazdu[playerid] = 45000;
428 }
429 case 1:
430 {
431 ShowPlayerDialog(playerid, 4701, DIALOG_STYLE_MSGBOX, "Kupowanie Tampy", "Tampa\n\nCena: 40.000$", "Kup!", "Wróc");
432 pojazdid[playerid] = 549;
433 CenaPojazdu[playerid] = 40000;
434 }
435 }
436 }
437 if(!response)
438 {
439 ShowPlayerDialog(playerid, 440, DIALOG_STYLE_LIST, "Wybierz kategorię kupowanego pojazdu", "Na każdą kieszeń", "Wybierz", "Wyjdź");
440 }
441 }
442 case 4700:
443 {
444 if(response)
445 {
446 SendClientMessage(playerid, -1, "Wybierz kolor wybranego wozu");
447 ShowPlayerDialog(playerid, 31, DIALOG_STYLE_LIST, "Wybierz Kolor 1", "Czarny\nBialy", "Wybierz", "Wyjdź");
448 }
449 if(!response)
450 {
451 ShowPlayerDialog(playerid, 457, DIALOG_STYLE_LIST, "Na każdą kieszeń", "Clover 45tys\nTampa 40tys", "Wybierz", "Wróc");
452 pojazdid[playerid] = 0;
453 CenaPojazdu[playerid] = 0;
454 }
455 }
456 case 4701:
457 {
458 if(response)
459 {
460 SendClientMessage(playerid, -1, "Wybierz kolor wybranego wozu");
461 ShowPlayerDialog(playerid, 31, DIALOG_STYLE_LIST, "Wybierz Kolor 1", "Czarny\nBialy", "Wybierz", "Wyjdź");
462 }
463 if(!response)
464 {
465 ShowPlayerDialog(playerid, 457, DIALOG_STYLE_LIST, "Na każdą kieszeń", "Clover 45tys\nTampa 40tys", "Wybierz", "Wróc");
466 pojazdid[playerid] = 0;
467 CenaPojazdu[playerid] = 0;
468 }
469 }
470 case 31:
471 {
472 if(response)
473 {
474 switch(listitem)
475 {
476 case 0:
477 {
478 KolorPierwszy[playerid] = 0;
479 ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Wybierz Kolor 2", "Czarny\nBialy", "Wybierz", "Wyjdź");
480 }
481 case 1:
482 {
483 KolorPierwszy[playerid] = 1;
484 ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Wybierz Kolor 2", "Czarny\nBialy", "Wybierz", "Wyjdź");
485 }
486 }
487 }
488 if(!response)
489 {
490 pojazdid[playerid] = 0;
491 CenaPojazdu[playerid] = 0;
492 }
493 }
494 case 32:
495 {
496 if(response)
497 {
498 switch(listitem)
499 {
500 case 0:
501 {
502 KupowaniePojazdu(playerid, pojazdid[playerid], KolorPierwszy[playerid], 0, CenaPojazdu[playerid]);
503 }
504 case 1:
505 {
506 KupowaniePojazdu(playerid, pojazdid[playerid], KolorPierwszy[playerid], 1, CenaPojazdu[playerid]);
507 }
508 }
509 }
510 if(!response)
511 {
512 pojazdid[playerid] = 0;
513 CenaPojazdu[playerid] = 0;
514 KolorPierwszy[playerid] = 0;
515 }
516 }
517
518 //
519 case 9848:
520 {
521 if(response)
522 {
523 new count = 0;
524 for(new i = 0; i < MAX_CAR_SLOT; i++)
525 {
526 if(!vInfo[i][DB_ID]) continue;
527
528 if(!strcmp(vInfo[i][vehOwner], GetName(playerid)))
529 {
530 if(count == listitem)
531 {
532 PlayerInfo[playerid][MaPojazd] = i;
533 format(message, sizeof(message), "%s - %d", VehicleNames[vInfo[i][vehModel] - 400], vInfo[i][vID]);
534 break;
535 }
536 else
537 {
538 count++;
539 }
540 }
541 }
542 }
543 }
544
545 default: return 0;
546 }
547
548 return 1;
549}
550
551stock KupowaniePojazdu(playerid, model, kolor1, kolor2, cena)
552{
553 if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Wyjdź z pojazdu.");
554
555 new losuj = random(sizeof(LosowyParking));
556 new komunikat[256];
557
558 if(GetPlayerMoney(playerid) >= cena)
559 {
560 if(model >= 400 && model <= 611)
561 {
562 if(PlayerInfo[playerid][MaPojazd] == 1) return SendClientMessage(playerid, -1, "Nie możesz kupić pojazdu ani mieć 2 pojazdy!");
563
564 new vtemp;
565 vtemp = Car_Create(model, playerid, LosowyParking[losuj][0], LosowyParking[losuj][1], LosowyParking[losuj][2], LosowyParking[losuj][3], kolor1, kolor2);
566
567 format(komunikat, sizeof(komunikat), "Kupiłeś %s za %d$. Komendy auta znajdziesz w /pp. Gratulujemy zakupu!", GetVehicleName(model), cena);
568 SendClientMessage(playerid, -1, komunikat);
569
570 GivePlayerMoney(playerid, -cena);
571
572 format(komunikat, sizeof(komunikat), "%s kupil pojazd %s za %d$. UID %d", GetName(playerid), GetVehicleName(model), cena, vtemp);
573 SendClientMessageToAll(-1, komunikat);
574
575 PlayerInfo[playerid][MaPojazd] = 1;
576
577 PutPlayerInVehicle(playerid, vtemp, 0);
578 }
579 else
580 {
581 SendClientMessage(playerid, -1, "BŁĄD - zły model! Zgłoś okoliczności na forum.");
582 }
583 }
584 else
585 {
586 format(komunikat, sizeof(komunikat), "Nie stać Cię na zakup tego pojazdu. Kosztuje on %d$ a Ty posiadasz tylko %d$.", cena, GetPlayerMoney(playerid));
587 SendClientMessage(playerid, -1, komunikat);
588 }
589
590 return 1;
591}
592
593stock Car_Create(model, playerid, Float:x, Float:y, Float:z, Float:angle, color1, color2)
594{
595 new query[220], slot = Iter_Free(Vehicles); // Get a free slot from the vehicles array;
596
597 vInfo[slot][vehModel] = model;
598 vInfo[slot][vehColorOne] = color1;
599 vInfo[slot][vehColorTwo] = color2;
600 vInfo[slot][vehX] = x;
601 vInfo[slot][vehY] = y;
602 vInfo[slot][vehZ] = z;
603 vInfo[slot][vehA] = angle;
604
605 vInfo[slot][vID] = CreateVehicle(model, x, y, z, angle, color1, color2, -1);
606
607 format(vInfo[slot][vehName], 25, GetVehicleName(model));
608 format(vInfo[slot][vehOwner], MAX_PLAYER_NAME, GetName(playerid));
609
610 //VehicleUID[vInfo[slot][vID]] = index;
611
612 mysql_format(g_SQL, query, sizeof(query),
613 "INSERT INTO `privcars` (vehModel, vehName, vehOwner, vehColorOne, vehColorTwo, vehX, vehY, vehZ, vehA) VALUES (%d, '%e', '%e', %d, %d, %f, %f, %f, %f)",
614 vInfo[slot][vehModel], vInfo[slot][vehName], vInfo[slot][vehOwner], vInfo[slot][vehColorOne], vInfo[slot][vehColorTwo], vInfo[slot][vehX],
615 vInfo[slot][vehY], vInfo[slot][vehZ], vInfo[slot][vehA]);
616 mysql_tquery(g_SQL, query, "GetVehicleDatabaseID", "i", slot);
617
618 return vInfo[slot][vID];
619}
620
621forward GetVehicleDatabaseID(slot);
622public GetVehicleDatabaseID(slot) // Here we get the database id to store for later use (saving vehicles)
623{
624 SaveVehicle(slot);
625 return vInfo[slot][DB_ID] = cache_insert_id();
626}
627
628SaveVehicle(slot)
629{
630 format(vInfo[slot][vehName], 25, GetVehicleName(vInfo[slot][vehModel]));
631 format(vInfo[slot][vehOwner], MAX_PLAYER_NAME, GetName(slot));
632
633 GetVehiclePos(vInfo[slot][vID], vInfo[slot][vehX], vInfo[slot][vehY], vInfo[slot][vehZ]);
634 GetVehicleZAngle(vInfo[slot][vID], vInfo[slot][vehA]);
635
636 new query[500];
637 mysql_format(g_SQL, query, sizeof(query), "UPDATE `privcars` SET `vehName` = '%e', `vehOwner` = '%e', `vehModel` = %i, `vehColorOne` = %i, `vehColorTwo` = %i,\
638 `vehX` = %f, `vehY` = %f, `vehZ` = %f, `vehA` = %f WHERE `vehID` = %d", vInfo[slot][vehName], vInfo[slot][vehOwner], vInfo[slot][vehModel],
639 vInfo[slot][vehColorOne], vInfo[slot][vehColorTwo], vInfo[slot][vehX], vInfo[slot][vehY], vInfo[slot][vehZ], vInfo[slot][vehA], vInfo[slot][DB_ID]);
640 mysql_tquery(g_SQL, query);
641
642 SendClientMessageToAll(-1, "Zapisano!");
643 return 1;
644}
645
646AssignPlayerData(playerid)
647{
648 cache_get_value_int(0, "ID", PlayerInfo[playerid][ID]);
649 cache_get_value_int(0, "Money", PlayerInfo[playerid][Money]);
650 cache_get_value_int(0, "MaPojazd", PlayerInfo[playerid][MaPojazd]);
651 return 1;
652}
653
654SetupPlayerTable()
655{
656 new query[1000];
657 strcat(query, "CREATE TABLE IF NOT EXISTS `accounts` (");
658 strcat(query, "`ID` INT(11) NOT NULL AUTO_INCREMENT,");
659 strcat(query, "`Nick` VARCHAR(24) NOT NULL,");
660 strcat(query, "`Password` CHAR(129) NOT NULL,");
661 strcat(query, "`Money` INT NOT NULL DEFAULT '0',");
662 strcat(query, "`MaPojazd` INT NOT NULL DEFAULT '0',");
663 strcat(query, "PRIMARY KEY (`ID`), UNIQUE KEY `Nick` (`Nick`))");
664 mysql_tquery(g_SQL, query);
665 return 1;
666}
667
668SetupPrivCarTable()
669{
670 mysql_tquery(g_SQL, "CREATE TABLE IF NOT EXISTS `privcars` (\
671 `vehID` int(11) NOT NULL AUTO_INCREMENT,\
672 `vehModel` int(11) NOT NULL,\
673 `vehName` varchar(25) NOT NULL,\
674 `vehOwner` varchar(24) NOT NULL default '-',\
675 `vehColorOne` int(11) NOT NULL,\
676 `vehColorTwo` int(11) NOT NULL,\
677 `vehX` float NOT NULL,\
678 `vehY` float NOT NULL,\
679 `vehZ` float NOT NULL,\
680 `vehA` float NOT NULL,\
681 PRIMARY KEY (`vehID`))");
682 return 1;
683}
684
685ZerujZmienne(playerid)
686{
687 Zalogowany[playerid] = 0;
688
689 PlayerInfo[playerid][Money] = 0;
690 PlayerInfo[playerid][MaPojazd] = 0;
691 return 1;
692}
693
694stock GetName(playerid)
695{
696 new pName[MAX_PLAYER_NAME];
697 GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
698 return pName;
699}
700
701stock GetNick(playerid)
702{
703 new nick_[MAX_PLAYER_NAME];
704 GetPlayerName(playerid, nick_, sizeof(nick_));
705 return nick_;
706}
707
708GetVehicleName(modelid)
709{
710 new string[25];
711 format(string, sizeof(string), "%s", VehicleNames[modelid - 400]);
712 return string;
713}
714
715CMD:kuppojazd(playerid)
716{
717 if(IsPlayerInRangeOfPoint(playerid, 10.0, 2132.0371, -1149.7332, 24.2372))
718 {
719 if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Wyjdź z pojazdu.");
720 ShowPlayerDialog(playerid, 440, DIALOG_STYLE_LIST, "Wybierz kategorię kupowanego pojazdu", "Na każdą kieszeń", "Wybierz", "Wyjdź");
721 }
722 else
723 {
724 SendClientMessage(playerid, -1, "Nie jesteś przy salonie aut.");
725 }
726 return 1;
727}
728
729CMD:myvehicles(playerid, params[])
730{
731 new bool:found = false, msg[256];
732 for(new i = 0; i < MAX_CAR_SLOT; i++)
733 {
734 if(!vInfo[i][DB_ID]) continue;
735
736 if(!strcmp(vInfo[i][vehOwner], GetName(playerid)))
737 {
738 found = true;
739 format(msg, sizeof(msg), "%s%s ID : %d\n", msg, VehicleNames[vInfo[i][vehModel] - 400], vInfo[i][vID]);
740 }
741 }
742 if(found)
743 {
744 ShowPlayerDialog(playerid, 9848, DIALOG_STYLE_LIST, "My Vehicles", msg, "Choose", "Cancel");
745 }
746 else
747 {
748 SendClientMessage(playerid, -1, "You didn't have any vehicles.");
749 }
750 return 1;
751}