· 6 years ago · May 29, 2019, 02:46 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 VehicleArrayID[vInfo[slot][vID]] = slot;
198
199 format(string, sizeof(string), "Pojazd UID: %d\nWlasciciel: %s\nNazwa: %s", vInfo[slot][vID], vInfo[slot][vOwner], vInfo[slot][vName]);
200 vInfo[id][vehLabel] = CreateDynamic3DTextLabel(string, -1, vInfo[slot][vX], vInfo[slot][vY], vInfo[slot][vZ], 10.0, INVALID_PLAYER_ID, vInfo[slot][vID]);
201 }
202 printf("\nZaladowano prywatne pojazdy: %d [veh2]\n", results);
203 printf("\n[id] : %d [veh2]\n", slot);
204 }
205 return 1;
206}
207
208public OnGameModeExit()
209{
210 for(new i = 0; i < MAX_VEHICLES; i++)
211 {
212 if(!strcmp(vInfo[i][vOwner], "-") || strcmp(vInfo[i][vOwner], "-"))
213 {
214 SaveVehicle(i);
215 DestroyVehicle(vInfo[i][vID]);
216 DestroyDynamic3DTextLabel(vInfo[i][vehLabel]);
217 }
218 }
219
220 mysql_close(g_SQL);
221 return 1;
222}
223
224public OnPlayerConnect(playerid)
225{
226 TogglePlayerSpectating(playerid, 1);
227
228 MySQLRaceCheck[playerid]++;
229
230 static const empty_player[pInfo];
231 PlayerInfo[playerid] = empty_player;
232
233 ZerujZmienne(playerid);
234
235 GetPlayerName(playerid, PlayerInfo[playerid][Nick], MAX_PLAYER_NAME);
236
237 new query[103];
238 mysql_format(g_SQL, query, sizeof(query), "SELECT * FROM `accounts` WHERE `Nick` = '%s' LIMIT 1", PlayerInfo[playerid][Nick]);
239 mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "dd", playerid, MySQLRaceCheck[playerid]);
240
241 return 1;
242}
243
244public OnPlayerDisconnect(playerid, reason)
245{
246 OnPlayerUpdateEx(playerid);
247
248 for(new i = 0; i < MAX_VEHICLES; i++)
249 {
250 if(!strcmp(vInfo[i][vOwner], GetName(playerid)))
251 {
252 SaveVehicle(i);
253 //DestroyVehicle(vInfo[i][vehSessionID]); //delete
254 print("Zapisano veh!");
255 }
256 }
257
258 return 1;
259}
260
261GetFreeSlot()
262{
263 new id = -1;
264
265 for(new i = 0; i < MAX_VEHICLES; i++)
266 {
267 if(vInfo[i][vUID] == 0)
268 {
269 id = i; // we found a free array slot
270 break;
271 }
272 }
273
274 return id;
275}
276
277CreateScriptedVehicle(modelid, Float:vpX, Float:vpY, Float:vpZ, Float:vpA, Color1, Color2, Respawn = -1, Siren = 0, Type = TYPE_NORMAL_VEHICLE)
278{
279 new slot = GetFreeSlot();
280 new query[500];
281
282 if(slot == -1) // no free slot found, don't create the vehicle and send a message
283 {
284 printf("Can't create vehicle, no free slot found!");
285 }
286
287 vInfo[slot][vID] = CreateVehicle(modelid, vpX, vpY, vpZ, vpA, Color1, Color2, Respawn, Siren);
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_DYNAMIC_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, .Type = 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", id);
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][vID], 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 `vehModel` int(11) NOT NULL,\
733 `vehName` varchar(25) NOT NULL,\
734 `vehOwner` varchar(24) NOT NULL default '-',\
735 `vehColorOne` int(11) NOT NULL,\
736 `vehColorTwo` int(11) NOT NULL,\
737 `vehX` float NOT NULL,\
738 `vehY` float NOT NULL,\
739 `vehZ` float NOT NULL,\
740 `vehA` float NOT NULL,\
741 PRIMARY KEY (`vehID`))");
742 return 1;
743}
744
745ZerujZmienne(playerid)
746{
747 Zalogowany[playerid] = 0;
748
749 PlayerInfo[playerid][Money] = 0;
750 PlayerInfo[playerid][MaPojazd] = 0;
751 return 1;
752}
753
754stock GetName(playerid)
755{
756 new pName[MAX_PLAYER_NAME];
757 GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
758 return pName;
759}
760
761stock GetNick(playerid)
762{
763 new nick_[MAX_PLAYER_NAME];
764 GetPlayerName(playerid, nick_, sizeof(nick_));
765 return nick_;
766}
767
768GetVehicleName(modelid)
769{
770 new string[25];
771 format(string, sizeof(string), "%s", VehicleNames[modelid - 400]);
772 return string;
773}
774
775CMD:kuppojazd(playerid)
776{
777 if(IsPlayerInRangeOfPoint(playerid, 10.0, 2132.0371, -1149.7332, 24.2372))
778 {
779 if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Wyjdz z pojazdu.");
780 ShowPlayerDialog(playerid, 440, DIALOG_STYLE_LIST, "Wybierz kategorie kupowanego pojazdu", "Na kazda kieszen", "Wybierz", "Wyjdz");
781 }
782 else
783 {
784 SendClientMessage(playerid, -1, "Nie jestes przy salonie aut.");
785 }
786 return 1;
787}
788
789CMD:pp(playerid, params[])
790{
791 if(IsPlayerConnected(playerid))
792 {
793 if(CountPlayerCars(playerid) > 0)
794 {
795 ShowCarsForPlayer(playerid, playerid);
796 }
797 else
798 {
799 SendClientMessage(playerid, -1, "Nie posiadasz wlasnego pojazdu");
800 }
801 }
802 return 1;
803}
804
805stock CountPlayerCars(playerid)
806{
807 new lCount;
808
809 for(new i = 0; i < MAX_CAR_SLOT; i++)
810 {
811 if(PlayerInfo[playerid][MaPojazd] == 0)
812 {
813 continue;
814 }
815 else
816 {
817 lCount++;
818 }
819 }
820 return lCount;
821}
822
823stock ShowCarsForPlayer(playerid, forplayerid)
824{
825 new bool:found = false, list[512];
826
827 for(new i = 0; i < MAX_CAR_SLOT; i++)
828 {
829 //if(vInfo[i][vUID] != PlayerInfo[playerid][ID]) continue;
830 /*if(vInfo[i][vID] == 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][vID], 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
852StworzonePojazdy()
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 Ciezaró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}