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