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