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