· 6 years ago · May 04, 2019, 08:40 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 new slot = Iter_Free(Vehicles); // Get a free slot from the vehicles array
535
536 vInfo[slot][vID] = Car_Create(slot, model, LosowyParking[losuj][0], LosowyParking[losuj][1], LosowyParking[losuj][2], LosowyParking[losuj][3], kolor1, kolor2); // added "slot" to the function to get the right index number for the array
537
538 //SaveVehicle(playerid); //dodane
539
540 /*new query[65];
541 mysql_format(g_SQL, query, sizeof(query), "SELECT * FROM `privcars` WHERE `vehOwner` = '%e'", GetName(playerid));
542 mysql_tquery(g_SQL, query, "LoadPlayerVehicles", "i", playerid); //BUYV*/
543
544 format(komunikat, sizeof(komunikat), "Kupiłeś %s za %d$. Komendy auta znajdziesz w /pp. Gratulujemy zakupu!", GetVehicleName(model), cena);
545 SendClientMessage(playerid, -1, komunikat);
546
547 GivePlayerMoney(playerid, -cena);
548
549 format(komunikat, sizeof(komunikat), "%s kupil pojazd %s za %d$. UID %d", GetName(playerid), GetVehicleName(model), cena, vInfo[slot][vID]);
550 SendClientMessageToAll(-1, komunikat);
551
552 PlayerInfo[playerid][MaPojazd] = 1;
553
554 PutPlayerInVehicle(playerid, vInfo[slot][vID], 0);
555 }
556 else
557 {
558 SendClientMessage(playerid, -1, "BÃ…ÂÄ„D - zÅ‚y model! ZgÅ‚oÅ› okolicznoÅ›ci na forum.");
559 }
560 }
561 else
562 {
563 format(komunikat, sizeof(komunikat), "Nie stać Cię na zakup tego pojazdu. Kosztuje on %d$ a Ty posiadasz tylko %d$.", cena, GetPlayerMoney(playerid));
564 SendClientMessage(playerid, -1, komunikat);
565 }
566
567 return 1;
568}
569
570
571// You don't need to load player vehicles specifically, it's all defined in LoadVehicles (owner etc)
572
573/*forward LoadPlayerVehicles(playerid);
574public LoadPlayerVehicles(playerid)
575{
576 new results = cache_num_rows();
577 new string[100];
578 new id;
579
580 if(results)
581 {
582 for(new i; i < results; i++)
583 {
584 cache_get_value_name(i, "vehOwner", vInfo[id][vehOwner], .max_len = MAX_PLAYER_NAME);
585 cache_get_value_name_int(i, "vehModel", vInfo[id][vehModel]);
586 cache_get_value_name(i, "vehName", vInfo[id][vehName], 25);
587 cache_get_value_name_int(i, "vehColorOne", vInfo[id][vehColorOne]);
588 cache_get_value_name_int(i, "vehColorTwo", vInfo[id][vehColorTwo]);
589 cache_get_value_name_float(i, "vehX", vInfo[id][vehX]);
590 cache_get_value_name_float(i, "vehY", vInfo[id][vehY]);
591 cache_get_value_name_float(i, "vehZ", vInfo[id][vehZ]);
592 cache_get_value_name_float(i, "vehA", vInfo[id][vehA]);
593
594 cache_get_value_name_int(i, "DB_ID", vInfo[id][DB_ID]);
595
596 format(vInfo[id][vehName], 25, GetVehicleName(vInfo[id][vehModel]));
597 format(vInfo[id][vehOwner], MAX_PLAYER_NAME, GetName(playerid));
598
599 format(string, sizeof(string), "Pojazd UID: %d\nWłaściciel: %s\nNazwa: %s", vInfo[id][DB_ID], vInfo[id][vehOwner], vInfo[id][vehName]);
600 vInfo[id][vehLabel] = CreateDynamic3DTextLabel(string, -1, vInfo[id][vehX], vInfo[id][vehY], vInfo[id][vehZ], 10.0, INVALID_PLAYER_ID, vInfo[id][vID]);
601 }
602 printf("\nZaładowano prywatny pojazd: %d dla gracza: %s\n", results, GetName(playerid));
603 }
604 return 1;
605}*/
606
607stock Car_Create(slot, model, Float:x, Float:y, Float:z, Float:angle, color1, color2)
608{
609 new query[220];
610
611 vInfo[slot][vehModel] = model;
612 vInfo[slot][vehColorOne] = color1;
613 vInfo[slot][vehColorTwo] = color2;
614 vInfo[slot][vehX] = x;
615 vInfo[slot][vehY] = y;
616 vInfo[slot][vehZ] = z;
617 vInfo[slot][vehA] = angle;
618
619 vInfo[slot][vID] = CreateVehicle(model, x, y, z, angle, color1, color2, -1);
620
621 format(vInfo[slot][vehName], 25, GetVehicleName(model));
622 format(vInfo[slot][vehOwner], MAX_PLAYER_NAME, GetName(index));
623
624 //VehicleUID[vInfo[slot][vID]] = index;
625
626 mysql_format(g_SQL, query, sizeof(query),
627 "INSERT INTO `privcars` (vehModel, vehName, vehOwner, vehColorOne, vehColorTwo, vehX, vehY, vehZ, vehA) VALUES (%d, '%e', '%e', %d, %d, %f, %f, %f, %f)",
628 vInfo[slot][vehModel], vInfo[slot][vehName], vInfo[slot][vehOwner], vInfo[slot][vehColorOne], vInfo[slot][vehColorTwo], vInfo[slot][vehX],
629 vInfo[slot][vehY], vInfo[slot][vehZ], vInfo[slot][vehA]);
630 mysql_query(g_SQL, query, "GetVehicleDatabaseID", "i", slot);
631
632 return 1;
633}
634
635forward 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
742CMD: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
758/*stock 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}