· 6 years ago · Apr 18, 2019, 06:46 PM
1#include <a_samp>
2#include <a_mysql>
3#include <streamer>
4
5main(){}
6
7native WP_Hash(buffer[], len, const str[]);
8//Forwardy
9forward bool:IsStrValid(const string[]);
10
11//Ustawienia
12#define MONEY_MONEY_START 6500
13#define PRESSED(%O) \
14//Dialogi
15#define REGISTER1_DIALOG 0
16#define LOGIN_DIALOG 1
17#define REGISTER2_DIALOG 2
18#define REGISTER3_DIALOG 3
19
20//Definicje
21#define SKRYPT_NAME "Najlepszy Polski Serwer"
22#define SKRYPT_VER "V1.0.0"
23#define INFO_STRING "{008080}[INFO]{C0C0C0}: "
24#define ERROR_STRING "{FF0000}[BÅÄ„D]{800000}: "
25
26#define MAX_ENTRACES 100
27
28#define GENDER_MALE 0
29#define GENDER_FEMALE 1
30
31 //textdrawy
32new Text:SkinSelector_Title;
33new Text:SkinSelector_Right;
34new Text:SkinSelector_Left;
35new Text:SkinSelector_Accept;
36
37//eNUMY
38enum DataPlayer
39{
40 bool:LoggedIn,
41 bool:ShowMouse,
42 bool:IsFreezed,
43 bool:FirstSpawn,
44 Cache:Cache_ID,
45 UID,
46 Password[129],
47 Age,
48 Lvl,
49 Gender,
50 IDSkin,
51 Money,
52 AdminLV,
53 Float:LastPos[4],
54 Linterior,
55 LVW,
56 Float:HP,
57 Float:Armour,
58
59 //Wybierałka
60 SelectedIDSkin
61};
62
63new entranceindex;
64enum EntranceData
65{
66 bool:e_freeze,
67 Float:e_posx,
68 Float:e_posy,
69 Float:e_posz,
70 Float:e_rotation,
71 e_interior,
72 e_vw,
73 e_conid
74};
75new Entrance[MAX_ENTRACES][EntranceData];
76
77
78new Player[MAX_PLAYERS][DataPlayer];
79new MySQL:SQL_ID;
80 //Zmienne Globalne
81new Skins_Male[][] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 57, 58, 59, 60, 61, 62, 66, 67, 68, 70, 71, 72, 73, 74, 78, 79, 80, 81, 82, 83, 84, 86, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 132, 133, 134, 135, 136, 137, 142, 143, 144, 146, 147, 149, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 200, 202, 203, 204, 206, 208, 209, 210, 212, 213, 220, 221, 222, 223, 227, 228, 229, 230, 234, 235, 236, 239, 240, 241, 242, 247, 248, 249, 250, 252, 253, 254, 255, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 299, 300, 301, 302, 303, 304, 305, 310, 311}; //Facety
82new Skins_Female[][] = {9, 10, 11, 12, 13, 31, 38, 39, 40, 41, 53, 54, 55, 56, 63, 64, 65,69,75, 76, 77, 85, 87, 88, 89, 90, 91, 92, 93, 129, 130, 131,138, 139, 140, 141, 145, 148, 150, 151, 152, 157, 169, 172, 178, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 201, 205, 207, 211, 214, 215, 216, 217, 218, 219, 224, 225, 226, 231, 232, 233, 237, 238, 243, 244, 245, 246, 251, 256, 257, 263, 298, 306, 307, 308, 309}; //Babsztyle
83
84public OnGameModeInit()
85{
86 UsePlayerPedAnims();
87
88 printf("Gamemode %s %s ® by Kreto Wystartował", SKRYPT_NAME, SKRYPT_VER);
89 if(MySQL_Init())
90 {
91 AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
92 //Wczytywanie
93 MySQL_SetUpTables();
94 CreateGlobalTD();
95
96 //Timer
97 SetTimer("SecondUpdate", 1000, true);
98
99 //Ustawienia
100 DisableInteriorEnterExits();
101 EnableStuntBonusForAll(false);
102 SetGameModeText("Najlepszy Polski Serwer. Zapraszamy");
103
104 //mapicon
105
106 CreateDynamicMapIcon(2324.3040, -1135.8479, 1051.3047, 37, 0, 0, 0, -1, 500, MAPICON_GLOBAL, -1, 0);
107
108 //Wejścia/Wyjścia
109 ConnectEntrances(
110 CreateEntrance("UrzÄ…d Miasta w Los Santos", 1219.2979, -1812.3729, 16.5938, 177.8039, 0, 0, -1, 62, false),
111 CreateEntrance("Urząd Miasta w Los Santos - Wyjście", 384.80864,173.804992,1008.382812, 90.0, 3, 1, -1, -1, false));
112
113 ConnectEntrances(
114 CreateEntrance("UrzÄ…d Miasta w San Fierro", -2765.3870, 375.6902, 6.3359, 269.3221, 0, 0, -1, 61, false),
115 CreateEntrance("Urząd Miasta w San Fierro - Wyjście", 384.80864,173.804992,1008.382812, 90.0, 3, 2, -1, -1, false));
116
117 ConnectEntrances(
118 CreateEntrance("UrzÄ…d Miasta w Las Venturas", 2633.6101, 1823.1554, 11.0161, 80.6707, 0, 0,-1, 58, false),
119 CreateEntrance("Urząd Miasta w Las Venturas - Wyjście", 384.80864,173.804992,1008.382812, 90.0, 3, 3, -1, -1, false));
120
121 printf("Gamemode %s %s ® by Kreto działa\n", SKRYPT_NAME, SKRYPT_VER);
122 }
123 return 1;
124}
125
126public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
127{
128 if(newkeys & KEY_SECONDARY_ATTACK)
129 {
130 if(!IsPlayerInAnyVehicle(playerid))
131 {
132 if(Player[playerid][IsFreezed] == false)
133 {
134 new p_vw = GetPlayerVirtualWorld(playerid);
135 new p_int = GetPlayerInterior(playerid);
136 for(new i; i < entranceindex; i++)
137 {
138 if(IsPlayerInRangeOfPoint(playerid, 1.0, Entrance[i][e_posx],Entrance[i][e_posy],Entrance[i][e_posz]) && Entrance[i][e_interior] == p_int && Entrance[i][e_vw] == p_vw)
139 {
140 new conid = Entrance[i][e_conid];
141 SetPlayerPos(playerid, Entrance[conid][e_posx],Entrance[conid][e_posy], Entrance[conid][e_posz]);
142 SetPlayerFacingAngle(playerid, Entrance[conid][e_rotation]);
143 SetPlayerInterior(playerid, Entrance[conid][e_interior]);
144 SetPlayerVirtualWorld(playerid, Entrance[conid][e_vw]);
145 SetCameraBehindPlayer(playerid);
146 if(Entrance[conid][e_freeze])
147 FreezePlayer(playerid, 3000, "Wczytywanie");
148 break;
149 }
150 }
151 }
152 }
153
154 }
155 return 1;
156}
157
158
159
160
161public OnGameModeExit()
162{
163 mysql_close(SQL_ID);
164 return 1;
165}
166
167public OnPlayerRequestSpawn(playerid)
168{
169
170 return 1;
171}
172
173public OnPlayerRequestClass(playerid, classid)
174{
175 SpawnPlayer(playerid);
176 return 1;
177}
178
179public OnPlayerConnect(playerid)
180{
181 ClearPlayerChat(playerid);
182 SetSpawnInfo(playerid, NO_TEAM, 0, 1248.2993,-1563.6338,12.6017, 186.4331, 0, 0, 0, 0, 0, 0);
183 return 1;
184}
185
186public OnPlayerDisconnect(playerid, reason)
187{
188 new query[258];
189 if(Player[playerid][LoggedIn])
190 {
191 SaveAccount(playerid);
192 mysql_format(SQL_ID, query, sizeof query, "UPDATE players_accounts SET lastonline = NOW() WHERE uid = %i", Player[playerid][UID]);
193 mysql_tquery(SQL_ID, query);
194 }
195 ResetPlayerData(playerid);
196 return 1;
197}
198
199public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
200{
201 switch(dialogid)
202 {
203 case LOGIN_DIALOG: //Login playersa
204 {
205 if(response)
206 {
207 if(strlen(inputtext) && IsStrValid(inputtext))
208 {
209 new buff[129], query[258];
210 WP_Hash(buff, 129, inputtext);
211 if(strcmp(Player[playerid][Password], buff, true) == 0)
212 {
213 // Hasło poprawne
214 AssignPlayerData(playerid); // odczyt z bazy danych
215
216 Player[playerid][LoggedIn] = true;
217 Player[playerid][FirstSpawn] = true;
218 ResetPlayerMoney(playerid);
219 GivePlayerMoney(playerid, Player[playerid][Money]);
220 SetPlayerScore(playerid, Player[playerid][Lvl]);
221 SetSpawnInfo(playerid, NO_TEAM, Player[playerid][IDSkin], 1248.2993,-1563.6338,12.6017, 186.4331, 0, 0, 0, 0, 0, 0);
222 SetPlayerInterior(playerid, 12);
223 TogglePlayerControllable(playerid, 1);
224 SpawnPlayer(playerid);
225 ClearPlayerChat(playerid);
226 SendClientMessage(playerid, -1, INFO_STRING"Logowanie udane. Życzymy pomyślnej gry !");
227 new ip[18];
228 GetPlayerIp(playerid, ip, 18);
229 mysql_format(SQL_ID, query, sizeof query, "UPDATE players_accounts SET lastip = '%s', lastonline = NOW() WHERE uid = %i", ip, Player[playerid][UID]);
230 mysql_tquery(SQL_ID, query);
231 }
232 else
233 {
234 // hasło błędne
235 ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Logowanie", "Znaleźliśmy rejestrację Twojego konta. \n\tPodaj {7EFD00}hasło aby zagrać.", "Logowanie", "Opuść Serwer");
236 SendClientMessage(playerid, -1, ERROR_STRING"Hasło nieprawidłowe. Spróbuj ponownie!");
237 }
238 //nic nie wpisane
239 }
240 else
241 {
242 ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Logowanie", "Znaleźliśmy rejestrację Twojego konta. \n\tPodaj {7EFD00}hasło aby zagrać.", "Logowanie", "Opuść Serwer");
243 SendClientMessage(playerid, -1, ERROR_STRING"Nie wprowadzono hasła! Spróbuj ponownie!");
244 }
245 }
246 else KickEX(playerid);
247 }
248 case REGISTER3_DIALOG: // Rejestracja wiek
249 {
250 if(response)
251 {
252 if(IsNumeric(inputtext) && strlen(inputtext) == 2 && strval(inputtext) >= 13 && strval(inputtext) <= 30 )
253 {
254 Player[playerid][Age] = strval(inputtext);
255 Player[playerid][Age] = strval(inputtext);
256 SetPlayerPos(playerid, 2324.3662, -1148.7382, 1050.7101);
257 SetPlayerInterior(playerid, 12);
258 SetPlayerFacingAngle(playerid, 359.6589);
259 InterpolateCameraPos(playerid, 2324.4150, -1138.6611, 1051.4922, 2324.3513, -1144.7060, 1050.7031, 5000, CAMERA_CUT);
260 InterpolateCameraLookAt(playerid, 2324.3662, -1148.7382, 1050.7101, 2324.3513, -1144.7360, 1050.7031, 5000, CAMERA_CUT);
261 Player[playerid][SelectedIDSkin] = 0;
262 new sskin = Player[playerid][SelectedIDSkin];
263 if(Player[playerid][Gender] == GENDER_MALE)
264 {
265 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
266 Player[playerid][IDSkin] = Skins_Male[sskin][0];
267 }
268 else
269 {
270 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
271 Player[playerid][IDSkin] = Skins_Female[sskin][0];
272 }
273 TextDrawShowForPlayer(playerid, SkinSelector_Title);
274 TextDrawShowForPlayer(playerid, SkinSelector_Accept);
275 TextDrawShowForPlayer(playerid, SkinSelector_Right);
276 TextDrawShowForPlayer(playerid, SkinSelector_Left);
277 }
278 else
279 {
280 ShowPlayerDialog(playerid, REGISTER3_DIALOG, DIALOG_STYLE_INPUT, "Rejestracja", "Podaj swój wiek", "Akceptuj", "Opuść Serwer");
281 SendClientMessage(playerid, -1, ERROR_STRING"Żeby zagrać musisz mieć 13-30 lat!");
282 }
283 }
284 else KickEX(playerid);
285 }
286 case REGISTER2_DIALOG: // Rejestracja wybór Gender
287 {
288 Player[playerid][Gender] = response;
289 ShowPlayerDialog(playerid, REGISTER3_DIALOG, DIALOG_STYLE_INPUT, "Rejestracja", "Podaj swój wiek", "Akceptuj", "Opuść Serwer");
290 }
291 case REGISTER1_DIALOG: //zAKÅADNIE KONTA
292 {
293 if(response)
294 {
295 if(strlen(inputtext) >= 8 && IsStrValid(inputtext))
296 {
297 WP_Hash(Player[playerid][Password], 129, inputtext);
298 ShowPlayerDialog(playerid, REGISTER2_DIALOG, DIALOG_STYLE_MSGBOX, "Rejestracja", "Wybierz swoją przynależność sexualną.", "Kobieta", "Mężczyzna");
299 }
300 else
301 {
302 ShowPlayerDialog(playerid, REGISTER1_DIALOG, DIALOG_STYLE_PASSWORD, "REJESTRACJA", "Aby zagrać na serwerze, prosimy stwórz konto. \n\tHasło proszę wpisać poniżej", "Akceptuj", "Anuluj");
303 SendClientMessage(playerid, -1, ERROR_STRING"Hasło powinno zawierać min. 8 zanków, nie może zawierać przerw ani znaków specjalnych!!");
304 }
305 }
306 else KickEX(playerid);
307 }
308 }
309 return 0;
310}
311
312public OnPlayerClickTextDraw(playerid, Text:clickedid)
313{
314 if(clickedid == SkinSelector_Right) //Wybor postaci nastepna postac
315 {
316 if(Player[playerid][Gender] == GENDER_MALE) //Mezczyzni
317 {
318 if(Player[playerid][SelectedIDSkin] == (sizeof Skins_Male - 1))
319 Player[playerid][SelectedIDSkin] = 0;
320 else
321 Player[playerid][SelectedIDSkin]++;
322 new sskin = Player[playerid][SelectedIDSkin];
323 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
324 Player[playerid][IDSkin] = Skins_Male[sskin][0];
325 }
326 else //Kobiety
327 {
328 if(Player[playerid][SelectedIDSkin] == (sizeof Skins_Female - 1))
329 Player[playerid][SelectedIDSkin] = 0;
330 else
331 Player[playerid][SelectedIDSkin]++;
332 new sskin = Player[playerid][SelectedIDSkin];
333 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
334 Player[playerid][IDSkin] = Skins_Female[sskin][0];
335 }
336 }
337 if(clickedid == SkinSelector_Left) //Wybor postaci poprzednia postac
338 {
339 if(Player[playerid][Gender] == GENDER_MALE) //Mezczyzni
340 {
341 if(Player[playerid][SelectedIDSkin] == 0)
342 Player[playerid][SelectedIDSkin] = (sizeof Skins_Male - 1);
343 else
344 Player[playerid][SelectedIDSkin]--;
345 new sskin = Player[playerid][SelectedIDSkin];
346 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
347 Player[playerid][IDSkin] = Skins_Male[sskin][0];
348 }
349 else //Kobiety
350 {
351 if(Player[playerid][SelectedIDSkin] == 0)
352 Player[playerid][SelectedIDSkin] = (sizeof Skins_Female - 1);
353 else
354 Player[playerid][SelectedIDSkin]--;
355 new sskin = Player[playerid][SelectedIDSkin];
356 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
357 Player[playerid][IDSkin] = Skins_Female[sskin][0];
358 }
359 }
360 if(clickedid == SkinSelector_Accept)
361 {
362 TextDrawHideForPlayer(playerid, SkinSelector_Title);
363 TextDrawHideForPlayer(playerid, SkinSelector_Accept);
364 TextDrawHideForPlayer(playerid, SkinSelector_Right);
365 TextDrawHideForPlayer(playerid, SkinSelector_Left);
366 CreateAccount(playerid);
367 }
368 return 1;
369}
370
371public OnPlayerSpawn(playerid)
372{
373 new query[258];
374 if(Player[playerid][LoggedIn] == false)
375 {
376 // nie zalogowany
377 SetPlayerSkin(playerid, GetRandomSkin());
378 SetPlayerInterior(playerid, 12);
379 SetPlayerPos(playerid, 2324.3040, -1135.8479, 1051.3047);
380 SetPlayerFacingAngle(playerid, 180.2658);
381 SetPlayerVirtualWorld(playerid, 50 + playerid);
382 SetPlayerCameraPos(playerid, 2324.5247, -1138.4045, 1050.4990);
383 SetPlayerCameraLookAt(playerid, 2324.3040, -1135.8479, 1051.3047);
384 TogglePlayerControllable(playerid, false);
385 ShowPlayerMouse(playerid, true);
386 new ip[18];
387 GetPlayerIp(playerid, ip, 18);
388 mysql_format(SQL_ID, query, sizeof query, "SELECT * FROM players_accounts WHERE Login = '%s' LIMIT 1", PlayerName(playerid));
389 mysql_tquery(SQL_ID, query, "OnAccountCheck", "iss", playerid, ip, PlayerName(playerid));
390 }
391 else
392 {
393 //zalogowany
394 if(Player[playerid][FirstSpawn] && Player[playerid][LastPos] != 0)
395 {
396 SetPlayerPos(playerid, Player[playerid][LastPos][0], Player[playerid][LastPos][1], Player[playerid][LastPos][2]);
397 SetPlayerFacingAngle(playerid, Player[playerid][LastPos][3]);
398 SetPlayerInterior(playerid,Player[playerid][Linterior]);
399 SetPlayerVirtualWorld(playerid, Player[playerid][LVW]);
400 SetPlayerHealth(playerid, Player[playerid][HP]);
401 SetPlayerArmour(playerid, Player[playerid][Armour]);
402 }
403 else
404 {
405 SetPlayerInterior(playerid, 0);
406 SetPlayerVirtualWorld(playerid, 0);
407 TogglePlayerControllable(playerid, true);
408 SetCameraBehindPlayer(playerid);
409 ShowPlayerMouse(playerid, false);
410 Player[playerid][FirstSpawn] = false;
411 }
412 }
413 return 1;
414}
415
416//CALLBACK MYSQL
417
418forward OnAccountCreate(playerid);
419public OnAccountCreate(playerid)
420{
421 SendClientMessage(playerid, -1, INFO_STRING"Gratuluję! Twoje Konto zostało pomyślnie stworzone.Życzymy udanej gry, Administracja serwera.");
422 SpawnPlayer(playerid);
423 return 1;
424}
425
426forward OnAccountCheck(playerid, ip[], name[]);
427public OnAccountCheck (playerid, ip[], name[])
428{
429 if(!IsPlayerConnected(playerid))
430 return 1;
431 new tmpip[18];
432 GetPlayerIp(playerid, tmpip, 18);
433 if(strcmp(ip, tmpip, true) != 0 && strcmp(name, PlayerName(playerid)) != 0)
434 return KickEX(playerid);
435 if(cache_num_rows() > 0)
436 {
437 //konto odnalezione
438 cache_get_value(0, "password", Player[playerid][Password], 129);
439 Player[playerid][Cache_ID] = cache_save();
440 ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Logowanie", "Znaleźliśmy rejestrację Twojego konta. \n\tPodaj hasło aby zagrać.", "Logowanie", "Opuść Serwer");
441 }
442 else
443 {
444 //Konton nie odnalezione
445 ShowPlayerDialog(playerid, REGISTER1_DIALOG, DIALOG_STYLE_PASSWORD, "REJESTRACJA", "Aby zagrać na serwerze, prosimy stwórz konto. \n\tHasło proszę wpisać poniżej", "Akceptuj", "Anuluj");
446 }
447 return 1;
448}
449
450stock IsNumeric(const string[])
451{
452 for (new i = 0, j = strlen(string); i < j; i++)
453 {
454 if (string[i] > '9' || string[i] < '0') return 0;
455 }
456 return 1;
457}
458
459stock bool:IsStrValid(const string[])
460{
461 new num;
462 new len = strlen(string);
463 for(new i; i < len; i++)
464 switch(string[i])
465 {
466 case 'A'..'Z':num++;
467 case 'a'..'z':num++;
468 case '0'..'9':num++;
469 }
470 if(num == len) return true;
471 else return false;
472}
473
474//Timery
475
476
477forward UnFreezePlayer(playerid);
478public UnFreezePlayer(playerid)
479{
480 Player[playerid][IsFreezed] = false;
481 TogglePlayerControllable(playerid, true);
482 return 1;
483}
484
485forward DelayKick(playerid);
486public DelayKick(playerid)
487 return Kick(playerid);
488
489forward SecondUpdate();
490public SecondUpdate()
491{
492 for(new playerid, j = GetPlayerPoolSize(); playerid <= j; playerid++)
493 {
494 if(IsPlayerConnected(playerid))
495 {
496 if(Player[playerid][ShowMouse])
497 {
498 ShowPlayerMouse(playerid, true);
499 }
500 }
501 }
502 return 1;
503}
504
505//STOCKI
506
507stock ConnectEntrances(id1, id2)
508{
509 Entrance[id1][e_conid] = id2;
510 Entrance[id2][e_conid] = id1;
511 return 1;
512}
513
514stock FreezePlayer(playerid, interval, text[])
515{
516 new string[128];
517 format(string, sizeof string, "~p~%s", text);
518 TogglePlayerControllable(playerid, false);
519 SetTimerEx("UnFreeze", interval, false, "i", playerid);
520 GameTextForPlayer(playerid, string, interval, 6);
521 Player[playerid][IsFreezed] = true;
522 return 1;
523}
524
525
526stock CreateEntrance(const name[], Float:x, Float:y, Float:z, Float:rotacja, interior, virtualworld, pickupid = -1, mapiconid = -1, bool:freezeplayer = false)
527{
528 new string[128];
529 new entid =entranceindex;
530 Entrance[entid][e_posx] = x;
531 Entrance[entid][e_posy] = y;
532 Entrance[entid][e_posz] = z;
533 Entrance[entid][e_rotation] = rotacja;
534 Entrance[entid][e_interior] = interior;
535 Entrance[entid][e_vw] = virtualworld;
536 Entrance[entid][e_freeze] = freezeplayer;
537 if(pickupid == -1)
538 {
539 pickupid = 1318;
540 if(mapiconid != -1)
541 CreateDynamicMapIcon(x, y, z, mapiconid, 0, virtualworld, interior, -1, 800, MAPICON_GLOBAL, -1, 0);
542 CreateDynamicPickup(pickupid, 1, x, y, z, virtualworld, interior);
543 format(string,sizeof string, "{F3DC3A}%s\n{FFFFFF}Aby wejść wciśnij : {D34BF5}ENTER", name);
544 CreateDynamic3DTextLabel(string, -1, x, y, z, 15, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, virtualworld, interior, -1, 15);
545 entranceindex++;
546 }
547 return entid;
548}
549
550stock GetRandomSkin()
551{
552 new rgender = random(2);
553 if(rgender == 1)
554 {
555 new rand = random(sizeof Skins_Male);
556 return Skins_Male[rand][0];
557 }
558 else if(rgender == 0)
559 {
560 new rand = random(sizeof Skins_Female);
561 return Skins_Female[rand][0];
562 }
563 return 0;
564}
565
566
567stock KickEX(playerid, delay = 1000)
568 return SetTimerEx("DelayKick", delay, false, "i", playerid);
569
570stock AssignPlayerData(playerid)
571{
572 cache_set_active(Player[playerid][Cache_ID]);
573
574 cache_get_value_int(0, "uid", Player[playerid][UID]);
575 cache_get_value_int(0, "IDSkina", Player[playerid][IDSkin]);
576 cache_get_value_int(0, "money", Player[playerid][Money]);
577 cache_get_value_int(0, "gender", Player[playerid][Gender]);
578 cache_get_value_int(0, "age", Player[playerid][Age]);
579 cache_get_value_int(0, "lvl", Player[playerid][Lvl]);
580 cache_get_value_int(0, "admin_lv", Player[playerid][AdminLV]);
581
582 cache_get_value_float(0, "lastposx",Player[playerid][LastPos][0]);
583 cache_get_value_float(0, "lastposy",Player[playerid][LastPos][1]);
584 cache_get_value_float(0, "lastposz",Player[playerid][LastPos][2]);
585 cache_get_value_float(0, "lastposrot",Player[playerid][LastPos][3]);
586 cache_get_value_int(0, "linterior",Player[playerid][Linterior]);
587 cache_get_value_int(0, "lvw",Player[playerid][LVW]);
588 cache_get_value_float(0, "hp",Player[playerid][HP]);
589 cache_get_value_float(0, "armour",Player[playerid][Armour]);
590
591 cache_delete(Player[playerid][Cache_ID]);
592 Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
593 return 1;
594}
595
596stock ResetPlayerData(playerid)
597{
598 if(cache_is_valid(Player[playerid][Cache_ID]))
599 {
600 cache_delete(Player[playerid][Cache_ID]);
601 Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
602 }
603 static const null_players[DataPlayer];
604 Player[playerid] = null_players;
605 return 1;
606}
607
608stock PlayerName(playerid)
609{
610 new name[MAX_PLAYER_NAME];
611 GetPlayerName(playerid, name, sizeof name);
612 return name;
613}
614
615forward ShowPlayerMouse(playerid, bool:show);
616public ShowPlayerMouse(playerid, bool:show)
617{
618 if(show)
619 {
620 SelectTextDraw(playerid, 0xFF0000FF);
621 Player[playerid][ShowMouse] = true;
622 }
623 else
624 {
625 CancelSelectTextDraw(playerid);
626 Player[playerid][ShowMouse] = false;
627 }
628 return 1;
629}
630
631stock ClearPlayerChat(playerid)
632{
633 for(new i; i < 15; i++)
634 SendClientMessage(playerid, -1, " ");
635 return 1;
636}
637
638 stock SaveAccount(playerid)
639 {
640 new query[258];
641 new Float:tempPos[4], Float:hp, Float:armour;
642 GetPlayerHealth(playerid, hp);
643 GetPlayerArmour(playerid, armour);
644 GetPlayerPos(playerid, tempPos[0], tempPos[1], tempPos[2]);
645 GetPlayerFacingAngle(playerid, tempPos[3]);
646 if(hp > 100 && !IsPlayerAdmin(playerid)) hp = 100;
647 if(armour > 100) armour = 100;
648 mysql_format(SQL_ID, query, sizeof query, "UPDATE players_accounts SET money =%i, IDSkina = %i, lvl = %i, lastposx = %f, lastposy = %f, lastposz = %f, \
649 lastposrot = %f, linterior = %i, lvw = %i, hp = %f, armour = %f WHERE uid = %i",
650 GetPlayerMoney(playerid),
651 Player[playerid][IDSkin],
652 GetPlayerScore(playerid),
653 tempPos[0], tempPos[1], tempPos[2], tempPos[3],
654 GetPlayerInterior(playerid),
655 GetPlayerVirtualWorld(playerid),
656 hp,armour,
657 Player[playerid][UID]);
658 mysql_tquery(SQL_ID, query);
659 return 1;
660 }
661
662 stock CreateAccount(playerid)
663{
664 new query[258], string[258];
665 strcat(query, "INSERT INTO players_accounts(");
666 //
667 strcat(query, "Login, ");
668 strcat(query, "password, ");
669 strcat(query, "IDSkina, ");
670 strcat(query, "age, ");
671 strcat(query, "gender, ");
672 strcat(query, "money");
673 //
674 strcat(query, ")VALUES(");
675 //
676 format(string, 258, "'%s',",PlayerName(playerid));
677 strcat(query,string);
678 format(string, 258, "'%s',",Player[playerid][Password]);
679 strcat(query,string);
680 format(string, 258, "'%i',",Player[playerid][IDSkin]);
681 strcat(query,string);
682 format(string, 258, "'%i',",Player[playerid][Age]);
683 strcat(query,string);
684 format(string, 258, "'%i',",Player[playerid][Gender]);
685 strcat(query,string);
686 format(string, 258, "'%i'",MONEY_MONEY_START);
687 strcat(query,string);
688 //
689 strcat(query,")");
690 mysql_tquery(SQL_ID, query, "OnAccountCreate", "i", playerid);
691 return 1;
692}
693
694stock MySQL_SetUpTables ()
695{
696 mysql_tquery(SQL_ID, " CREATE TABLE IF NOT EXISTS `Players Accounts` ( \
697 `uid` INT(11) NOT NULL AUTO_INCREMENT, \
698 `Login` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
699 `password` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
700 `ID Skina` INT(11) NOT NULL, \
701 `money` INT(11) NOT NULL DEFAULT '0', \
702 `gender` INT(11) NOT NULL, \
703 `age` INT(11) NOT NULL, \
704 `lvl` INT(11) NOT NULL DEFAULT '1', \
705 `admin lv` INT(11) NOT NULL DEFAULT '0', \
706 `lastip` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
707 `lastonline` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, \
708 `createdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, \
709 PRIMARY KEY (`uid`))");
710 return 1;
711}
712
713stock MySQL_Init()
714{
715 mysql_log();
716 SQL_ID = mysql_connect_file("mysql.ini");
717 if(SQL_ID == MYSQL_INVALID_HANDLE ||mysql_errno(SQL_ID) != 0)
718 {
719 print("[MYSQL - BLAD] Nie można było połączyć się z bazą danych! Serwer wyłączony ..!");
720 SendRconCommand("exit");
721 return 0;
722 }
723 print("[MYSQL] Połączenie z bazą danych zostało nawiązane!");
724 return 1;
725}
726
727// Stock TD
728
729stock CreateGlobalTD()
730{
731 SkinSelector_Title = TextDrawCreate(316.000000, 370.000000, "WYBIERZ POSTAC");
732 TextDrawFont(SkinSelector_Title, 2);
733 TextDrawLetterSize(SkinSelector_Title, 0.291666, 2.049999);
734 TextDrawTextSize(SkinSelector_Title, 400.000000, 405.000000);
735 TextDrawSetOutline(SkinSelector_Title, 1);
736 TextDrawSetShadow(SkinSelector_Title, 0);
737 TextDrawAlignment(SkinSelector_Title, 2);
738 TextDrawColor(SkinSelector_Title, -1378294017);
739 TextDrawBackgroundColor(SkinSelector_Title, 255);
740 TextDrawBoxColor(SkinSelector_Title, 50);
741 TextDrawUseBox(SkinSelector_Title, 0);
742 TextDrawSetProportional(SkinSelector_Title, 1);
743 TextDrawSetSelectable(SkinSelector_Title, 0);
744
745 SkinSelector_Right = TextDrawCreate(351.000000, 392.000000, ">>>");
746 TextDrawFont(SkinSelector_Right, 2);
747 TextDrawLetterSize(SkinSelector_Right, 0.258332, 1.750000);
748 TextDrawTextSize(SkinSelector_Right, 16.500000, 33.500000);
749 TextDrawSetOutline(SkinSelector_Right, 1);
750 TextDrawSetShadow(SkinSelector_Right, 0);
751 TextDrawAlignment(SkinSelector_Right, 2);
752 TextDrawColor(SkinSelector_Right, -1);
753 TextDrawBackgroundColor(SkinSelector_Right, 255);
754 TextDrawBoxColor(SkinSelector_Right, 76);
755 TextDrawUseBox(SkinSelector_Right, 1);
756 TextDrawSetProportional(SkinSelector_Right, 1);
757 TextDrawSetSelectable(SkinSelector_Right, 1);
758
759 SkinSelector_Left = TextDrawCreate(281.000000, 392.000000, "<<<");
760 TextDrawFont(SkinSelector_Left, 2);
761 TextDrawLetterSize(SkinSelector_Left, 0.258332, 1.750000);
762 TextDrawTextSize(SkinSelector_Left, 16.500000, 33.500000);
763 TextDrawSetOutline(SkinSelector_Left, 1);
764 TextDrawSetShadow(SkinSelector_Left, 0);
765 TextDrawAlignment(SkinSelector_Left, 2);
766 TextDrawColor(SkinSelector_Left, -1);
767 TextDrawBackgroundColor(SkinSelector_Left, 255);
768 TextDrawBoxColor(SkinSelector_Left, 76);
769 TextDrawUseBox(SkinSelector_Left, 1);
770 TextDrawSetProportional(SkinSelector_Left, 1);
771 TextDrawSetSelectable(SkinSelector_Left, 1);
772
773 SkinSelector_Accept = TextDrawCreate(316.000000, 392.000000, "OK");
774 TextDrawFont(SkinSelector_Accept, 2);
775 TextDrawLetterSize(SkinSelector_Accept, 0.258332, 1.750000);
776 TextDrawTextSize(SkinSelector_Accept, 16.500000, 23.500000);
777 TextDrawSetOutline(SkinSelector_Accept, 1);
778 TextDrawSetShadow(SkinSelector_Accept, 0);
779 TextDrawAlignment(SkinSelector_Accept, 2);
780 TextDrawColor(SkinSelector_Accept, -1);
781 TextDrawBackgroundColor(SkinSelector_Accept, 255);
782 TextDrawBoxColor(SkinSelector_Accept, 76);
783 TextDrawUseBox(SkinSelector_Accept, 1);
784 TextDrawSetProportional(SkinSelector_Accept, 1);
785 TextDrawSetSelectable(SkinSelector_Accept, 1);
786 return 1;
787}