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