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