· 6 years ago · May 05, 2019, 12:12 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
71//new 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[i][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 new vtemp;
535 vtemp = Car_Create(model, playerid, LosowyParking[losuj][0], LosowyParking[losuj][1], LosowyParking[losuj][2], LosowyParking[losuj][3], kolor1, kolor2);
536
537 //SaveVehicle(playerid); //dodane
538
539 /*new query[65];
540 mysql_format(g_SQL, query, sizeof(query), "SELECT * FROM `privcars` WHERE `vehOwner` = '%e'", GetName(playerid));
541 mysql_tquery(g_SQL, query, "LoadPlayerVehicles", "i", playerid); //BUYV*/
542
543 format(komunikat, sizeof(komunikat), "Kupiłeś %s za %d$. Komendy auta znajdziesz w /pp. Gratulujemy zakupu!", GetVehicleName(model), cena);
544 SendClientMessage(playerid, -1, komunikat);
545
546 GivePlayerMoney(playerid, -cena);
547
548 format(komunikat, sizeof(komunikat), "%s kupil pojazd %s za %d$. UID %d", GetName(playerid), GetVehicleName(model), cena, vtemp);
549 SendClientMessageToAll(-1, komunikat);
550
551 PlayerInfo[playerid][MaPojazd] = 1;
552
553 PutPlayerInVehicle(playerid, vtemp, 0);
554 }
555 else
556 {
557 SendClientMessage(playerid, -1, "BÃ…ÂÄ„D - zÅ‚y model! ZgÅ‚oÅ› okolicznoÅ›ci na forum.");
558 }
559 }
560 else
561 {
562 format(komunikat, sizeof(komunikat), "Nie stać Cię na zakup tego pojazdu. Kosztuje on %d$ a Ty posiadasz tylko %d$.", cena, GetPlayerMoney(playerid));
563 SendClientMessage(playerid, -1, komunikat);
564 }
565
566 return 1;
567}
568
569
570// You don't need to load player vehicles specifically, it's all defined in LoadVehicles (owner etc)
571
572/*forward LoadPlayerVehicles(playerid);
573public LoadPlayerVehicles(playerid)
574{
575 new results = cache_num_rows();
576 new string[100];
577 new id;
578
579 if(results)
580 {
581 for(new i; i < results; i++)
582 {
583 cache_get_value_name(i, "vehOwner", vInfo[id][vehOwner], .max_len = MAX_PLAYER_NAME);
584 cache_get_value_name_int(i, "vehModel", vInfo[id][vehModel]);
585 cache_get_value_name(i, "vehName", vInfo[id][vehName], 25);
586 cache_get_value_name_int(i, "vehColorOne", vInfo[id][vehColorOne]);
587 cache_get_value_name_int(i, "vehColorTwo", vInfo[id][vehColorTwo]);
588 cache_get_value_name_float(i, "vehX", vInfo[id][vehX]);
589 cache_get_value_name_float(i, "vehY", vInfo[id][vehY]);
590 cache_get_value_name_float(i, "vehZ", vInfo[id][vehZ]);
591 cache_get_value_name_float(i, "vehA", vInfo[id][vehA]);
592
593 cache_get_value_name_int(i, "DB_ID", vInfo[id][DB_ID]);
594
595 format(vInfo[id][vehName], 25, GetVehicleName(vInfo[id][vehModel]));
596 format(vInfo[id][vehOwner], MAX_PLAYER_NAME, GetName(playerid));
597
598 format(string, sizeof(string), "Pojazd UID: %d\nWłaściciel: %s\nNazwa: %s", vInfo[id][DB_ID], vInfo[id][vehOwner], vInfo[id][vehName]);
599 vInfo[id][vehLabel] = CreateDynamic3DTextLabel(string, -1, vInfo[id][vehX], vInfo[id][vehY], vInfo[id][vehZ], 10.0, INVALID_PLAYER_ID, vInfo[id][vID]);
600 }
601 printf("\nZaładowano prywatny pojazd: %d dla gracza: %s\n", results, GetName(playerid));
602 }
603 return 1;
604}*/
605
606stock Car_Create(model, playerid, Float:x, Float:y, Float:z, Float:angle, color1, color2)
607{
608 new query[220], slot = Iter_Free(Vehicles); // Get a free slot from the vehicles array;
609
610 vInfo[slot][vehModel] = model;
611 vInfo[slot][vehColorOne] = color1;
612 vInfo[slot][vehColorTwo] = color2;
613 vInfo[slot][vehX] = x;
614 vInfo[slot][vehY] = y;
615 vInfo[slot][vehZ] = z;
616 vInfo[slot][vehA] = angle;
617
618 vInfo[slot][vID] = CreateVehicle(model, x, y, z, angle, color1, color2, -1);
619
620 format(vInfo[slot][vehName], 25, GetVehicleName(model));
621 format(vInfo[slot][vehOwner], MAX_PLAYER_NAME, GetName(playerid));
622
623 //VehicleUID[vInfo[slot][vID]] = index;
624
625 mysql_format(g_SQL, query, sizeof(query),
626 "INSERT INTO `privcars` (vehModel, vehName, vehOwner, vehColorOne, vehColorTwo, vehX, vehY, vehZ, vehA) VALUES (%d, '%e', '%e', %d, %d, %f, %f, %f, %f)",
627 vInfo[slot][vehModel], vInfo[slot][vehName], vInfo[slot][vehOwner], vInfo[slot][vehColorOne], vInfo[slot][vehColorTwo], vInfo[slot][vehX],
628 vInfo[slot][vehY], vInfo[slot][vehZ], vInfo[slot][vehA]);
629 mysql_tquery(g_SQL, query, "GetVehicleDatabaseID", "i", slot);
630
631 return vInfo[slot][vID];
632}
633
634forward GetVehicleDatabaseID(slot);
635public GetVehicleDatabaseID(slot) // Here we get the database id to store for later use (saving vehicles)
636{
637 SaveVehicle(slot);
638 return vInfo[slot][DB_ID] = cache_insert_id();
639}
640
641SaveVehicle(slot)
642{
643 format(vInfo[slot][vehName], 25, GetVehicleName(vInfo[slot][vehModel]));
644 format(vInfo[slot][vehOwner], MAX_PLAYER_NAME, GetName(slot));
645
646 GetVehiclePos(vInfo[slot][vID], vInfo[slot][vehX], vInfo[slot][vehY], vInfo[slot][vehZ]);
647 GetVehicleZAngle(vInfo[slot][vID], vInfo[slot][vehA]);
648
649 new query[500];
650 mysql_format(g_SQL, query, sizeof(query), "UPDATE `privcars` SET `vehName` = '%e', `vehOwner` = '%e', `vehModel` = %i, `vehColorOne` = %i, `vehColorTwo` = %i,\
651 `vehX` = %f, `vehY` = %f, `vehZ` = %f, `vehA` = %f WHERE `vehID` = %d", vInfo[slot][vehName], vInfo[slot][vehOwner], vInfo[slot][vehModel],
652 vInfo[slot][vehColorOne], vInfo[slot][vehColorTwo], vInfo[slot][vehX], vInfo[slot][vehY], vInfo[slot][vehZ], vInfo[slot][vehA], vInfo[slot][DB_ID]);
653 mysql_tquery(g_SQL, query);
654
655 SendClientMessageToAll(-1, "Zapisano!");
656 return 1;
657}
658
659AssignPlayerData(playerid)
660{
661 cache_get_value_int(0, "ID", PlayerInfo[playerid][ID]);
662 cache_get_value_int(0, "Money", PlayerInfo[playerid][Money]);
663 cache_get_value_int(0, "MaPojazd", PlayerInfo[playerid][MaPojazd]);
664 return 1;
665}
666
667SetupPlayerTable()
668{
669 new query[1000];
670 strcat(query, "CREATE TABLE IF NOT EXISTS `accounts` (");
671 strcat(query, "`ID` INT(11) NOT NULL AUTO_INCREMENT,");
672 strcat(query, "`Nick` VARCHAR(24) NOT NULL,");
673 strcat(query, "`Password` CHAR(129) NOT NULL,");
674 strcat(query, "`Money` INT NOT NULL DEFAULT '0',");
675 strcat(query, "`MaPojazd` INT NOT NULL DEFAULT '0',");
676 strcat(query, "PRIMARY KEY (`ID`), UNIQUE KEY `Nick` (`Nick`))");
677 mysql_tquery(g_SQL, query);
678 return 1;
679}
680
681SetupPrivCarTable()
682{
683 mysql_tquery(g_SQL, "CREATE TABLE IF NOT EXISTS `privcars` (\
684 `vehID` int(11) NOT NULL AUTO_INCREMENT,\
685 `vehModel` int(11) NOT NULL,\
686 `vehName` varchar(25) NOT NULL,\
687 `vehOwner` varchar(24) NOT NULL default '-',\
688 `vehColorOne` int(11) NOT NULL,\
689 `vehColorTwo` int(11) NOT NULL,\
690 `vehX` float NOT NULL,\
691 `vehY` float NOT NULL,\
692 `vehZ` float NOT NULL,\
693 `vehA` float NOT NULL,\
694 PRIMARY KEY (`DB_ID`))");
695 return 1;
696}
697
698ZerujZmienne(playerid)
699{
700 Zalogowany[playerid] = 0;
701
702 PlayerInfo[playerid][Money] = 0;
703 PlayerInfo[playerid][MaPojazd] = 0;
704 return 1;
705}
706
707stock GetName(playerid)
708{
709 new pName[MAX_PLAYER_NAME];
710 GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
711 return pName;
712}
713
714stock GetNick(playerid)
715{
716 new nick_[MAX_PLAYER_NAME];
717 GetPlayerName(playerid, nick_, sizeof(nick_));
718 return nick_;
719}
720
721GetVehicleName(modelid)
722{
723 new string[25];
724 format(string, sizeof(string), "%s", VehicleNames[modelid - 400]);
725 return string;
726}
727
728CMD:kuppojazd(playerid)
729{
730 if(IsPlayerInRangeOfPoint(playerid, 10.0, 2132.0371, -1149.7332, 24.2372))
731 {
732 if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Wyjdź z pojazdu.");
733 ShowPlayerDialog(playerid, 440, DIALOG_STYLE_LIST, "Wybierz kategorię kupowanego pojazdu", "Na każdą kieszeń", "Wybierz", "Wyjdź");
734 }
735 else
736 {
737 SendClientMessage(playerid, -1, "Nie jesteÅ› przy salonie aut.");
738 }
739 return 1;
740}
741
742/*CMD:pp(playerid, params[])
743{
744 if(IsPlayerConnected(playerid))
745 {
746 if(CountPlayerCars(playerid) > 0)
747 {
748 ShowCarsForPlayer(playerid, playerid);
749 }
750 else
751 {
752 SendClientMessage(playerid, -1, "Nie posiadasz własnego pojazdu");
753 }
754 }
755 return 1;
756}
757
758stock CountPlayerCars(playerid)
759{
760 new lCount;
761
762 for(new i = 0; i < MAX_CAR_SLOT; i++)
763 {
764 if(PlayerInfo[playerid][MaPojazd] == 0)
765 {
766 continue;
767 }
768 else
769 {
770 lCount++;
771 }
772 }
773 return lCount;
774}
775
776stock ShowCarsForPlayer(playerid, forplayerid)
777{
778 new bool:found = false, list[512];
779
780 for(new i = 0; i < MAX_CAR_SLOT; i++)
781 {
782 if(vInfo[i][DB_ID] == 0)
783 {
784 continue;
785 }
786 if(!strcmp(vInfo[i][vehOwner], GetNick(playerid)))
787 {
788 found = true;
789 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]);
790 }
791 }
792 if(found == true)
793 {
794 ShowPlayerDialog(forplayerid, DIALOG_VEHICLES, DIALOG_STYLE_LIST, list, "Lista 1\nLista 2", "Wybierz", "Zamknij");
795 }
796 else
797 {
798 SendClientMessage(forplayerid, -1, "Nie posiadasz prywatnego pojazdu!");
799 }
800}*/
801
802//TEST system car
803
804/*StworzonePojazdy()
805{
806 CreateVehicle(514, 2749.8076, 2628.5588, 11.4041, 206.2215, 1, 1, -1); // TIR LV
807 CreateVehicle(514, 2756.3267, 2628.5952, 11.4061, 206.6927, 1, 1, -1); // TIR LV
808
809 print("\nCiĂŞÂżarĂłwki zostaÂły stworzone!\n");
810}*/
811
812CMD:bazalv(playerid, params[])
813{
814 SetPlayerInterior(playerid, 0);
815 SetPlayerPos(playerid, 2769.7803, 2605.3782, 10.8203);
816 return 1;
817}