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