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