· 6 years ago · Apr 20, 2019, 09:44 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, text);
173 return 0;
174}
175
176
177
178
179public OnGameModeExit()
180{
181 mysql_close(SQL_ID);
182 return 1;
183}
184
185public OnPlayerRequestSpawn(playerid)
186{
187
188 return 1;
189}
190
191public OnPlayerRequestClass(playerid, classid)
192{
193 SpawnPlayer(playerid);
194 return 1;
195}
196
197public OnPlayerConnect(playerid)
198{
199 ClearPlayerChat(playerid);
200 SetSpawnInfo(playerid, NO_TEAM, 0, 1248.2993,-1563.6338,12.6017, 186.4331, 0, 0, 0, 0, 0, 0);
201 return 1;
202}
203
204public OnPlayerDisconnect(playerid, reason)
205{
206 new query[258];
207 if(Player[playerid][LoggedIn])
208 {
209 SaveAccount(playerid);
210 mysql_format(SQL_ID, query, sizeof query, "UPDATE players_accounts SET lastonline = NOW() WHERE uid = %i", Player[playerid][UID]);
211 mysql_tquery(SQL_ID, query);
212 }
213 ResetPlayerData(playerid);
214 return 1;
215}
216
217public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
218{
219 switch(dialogid)
220 {
221 case LOGIN_DIALOG: //Login playersa
222 {
223 if(response)
224 {
225 if(strlen(inputtext) && IsStrValid(inputtext))
226 {
227 new buff[129], query[258];
228 WP_Hash(buff, 129, inputtext);
229 if(strcmp(Player[playerid][Password], buff, true) == 0)
230 {
231 // Hasło poprawne
232 AssignPlayerData(playerid); // odczyt z bazy danych
233
234 Player[playerid][LoggedIn] = true;
235 Player[playerid][FirstSpawn] = true;
236 ResetPlayerMoney(playerid);
237 GivePlayerMoney(playerid, Player[playerid][Money]);
238 SetPlayerScore(playerid, Player[playerid][Lvl]);
239 SetSpawnInfo(playerid, NO_TEAM, Player[playerid][IDSkin], 1248.2993,-1563.6338,12.6017, 186.4331, 0, 0, 0, 0, 0, 0);
240 SetPlayerInterior(playerid, 12);
241 TogglePlayerControllable(playerid, 1);
242 SpawnPlayer(playerid);
243 ClearPlayerChat(playerid);
244 SendClientMessage(playerid, -1, INFO_STRING"Logowanie udane. Życzymy pomyślnej gry !");
245 new ip[18];
246 GetPlayerIp(playerid, ip, 18);
247 mysql_format(SQL_ID, query, sizeof query, "UPDATE players_accounts SET lastip = '%s', lastonline = NOW() WHERE uid = %i", ip, Player[playerid][UID]);
248 mysql_tquery(SQL_ID, query);
249 }
250 else
251 {
252 // hasło błędne
253 ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Logowanie", "Znaleźliśmy rejestrację Twojego konta. \n\tPodaj {7EFD00}hasło aby zagrać.", "Logowanie", "Opuść Serwer");
254 SendClientMessage(playerid, -1, ERROR_STRING"Hasło nieprawidłowe. Spróbuj ponownie!");
255 }
256 //nic nie wpisane
257 }
258 else
259 {
260 ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Logowanie", "Znaleźliśmy rejestrację Twojego konta. \n\tPodaj hasło aby zagrać.", "Logowanie", "Opuść Serwer");
261 SendClientMessage(playerid, -1, ERROR_STRING"Nie wprowadzono hasła! Spróbuj ponownie!");
262 }
263 }
264 else KickEX(playerid);
265 }
266 case REGISTER3_DIALOG: // Rejestracja wiek
267 {
268 if(response)
269 {
270 if(IsNumeric(inputtext) && strlen(inputtext) == 2 && strval(inputtext) >= 13 && strval(inputtext) <= 30 )
271 {
272 Player[playerid][Age] = strval(inputtext);
273 Player[playerid][Age] = strval(inputtext);
274 SetPlayerPos(playerid, 2324.3662, -1148.7382, 1050.7101);
275 SetPlayerInterior(playerid, 12);
276 SetPlayerFacingAngle(playerid, 359.6589);
277 InterpolateCameraPos(playerid, 2324.4150, -1138.6611, 1051.4922, 2324.3513, -1144.7060, 1050.7031, 5000, CAMERA_CUT);
278 InterpolateCameraLookAt(playerid, 2324.3662, -1148.7382, 1050.7101, 2324.3513, -1144.7360, 1050.7031, 5000, CAMERA_CUT);
279 Player[playerid][SelectedIDSkin] = 0;
280 new sskin = Player[playerid][SelectedIDSkin];
281 if(Player[playerid][Gender] == GENDER_MALE)
282 {
283 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
284 Player[playerid][IDSkin] = Skins_Male[sskin][0];
285 }
286 else
287 {
288 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
289 Player[playerid][IDSkin] = Skins_Female[sskin][0];
290 }
291 TextDrawShowForPlayer(playerid, SkinSelector_Title);
292 TextDrawShowForPlayer(playerid, SkinSelector_Accept);
293 TextDrawShowForPlayer(playerid, SkinSelector_Right);
294 TextDrawShowForPlayer(playerid, SkinSelector_Left);
295 }
296 else
297 {
298 ShowPlayerDialog(playerid, REGISTER3_DIALOG, DIALOG_STYLE_INPUT, "Rejestracja", "Podaj swój wiek", "Akceptuj", "Opuść Serwer");
299 SendClientMessage(playerid, -1, ERROR_STRING"Żeby zagrać musisz mieć 13-30 lat!");
300 }
301 }
302 else KickEX(playerid);
303 }
304 case REGISTER2_DIALOG: // Rejestracja wybór Gender
305 {
306 Player[playerid][Gender] = response;
307 ShowPlayerDialog(playerid, REGISTER3_DIALOG, DIALOG_STYLE_INPUT, "Rejestracja", "Podaj swój wiek", "Akceptuj", "Opuść Serwer");
308 }
309 case REGISTER1_DIALOG: //zAKÅADNIE KONTA
310 {
311 if(response)
312 {
313 if(strlen(inputtext) >= 8 && IsStrValid(inputtext))
314 {
315 WP_Hash(Player[playerid][Password], 129, inputtext);
316 ShowPlayerDialog(playerid, REGISTER2_DIALOG, DIALOG_STYLE_MSGBOX, "Rejestracja", "Wybierz swoją przynależność sexualną.", "Kobieta", "Mężczyzna");
317 }
318 else
319 {
320 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");
321 SendClientMessage(playerid, -1, ERROR_STRING"Hasło powinno zawierać min. 8 zanków, nie może zawierać przerw ani znaków specjalnych!!");
322 }
323 }
324 else KickEX(playerid);
325 }
326 }
327 return 0;
328}
329
330public OnPlayerClickTextDraw(playerid, Text:clickedid)
331{
332 if(clickedid == SkinSelector_Right) //Wybor postaci nastepna postac
333 {
334 if(Player[playerid][Gender] == GENDER_MALE) //Mezczyzni
335 {
336 if(Player[playerid][SelectedIDSkin] == (sizeof Skins_Male - 1))
337 Player[playerid][SelectedIDSkin] = 0;
338 else
339 Player[playerid][SelectedIDSkin]++;
340 new sskin = Player[playerid][SelectedIDSkin];
341 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
342 Player[playerid][IDSkin] = Skins_Male[sskin][0];
343 }
344 else //Kobiety
345 {
346 if(Player[playerid][SelectedIDSkin] == (sizeof Skins_Female - 1))
347 Player[playerid][SelectedIDSkin] = 0;
348 else
349 Player[playerid][SelectedIDSkin]++;
350 new sskin = Player[playerid][SelectedIDSkin];
351 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
352 Player[playerid][IDSkin] = Skins_Female[sskin][0];
353 }
354 }
355 if(clickedid == SkinSelector_Left) //Wybor postaci poprzednia postac
356 {
357 if(Player[playerid][Gender] == GENDER_MALE) //Mezczyzni
358 {
359 if(Player[playerid][SelectedIDSkin] == 0)
360 Player[playerid][SelectedIDSkin] = (sizeof Skins_Male - 1);
361 else
362 Player[playerid][SelectedIDSkin]--;
363 new sskin = Player[playerid][SelectedIDSkin];
364 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
365 Player[playerid][IDSkin] = Skins_Male[sskin][0];
366 }
367 else //Kobiety
368 {
369 if(Player[playerid][SelectedIDSkin] == 0)
370 Player[playerid][SelectedIDSkin] = (sizeof Skins_Female - 1);
371 else
372 Player[playerid][SelectedIDSkin]--;
373 new sskin = Player[playerid][SelectedIDSkin];
374 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
375 Player[playerid][IDSkin] = Skins_Female[sskin][0];
376 }
377 }
378 if(clickedid == SkinSelector_Accept)
379 {
380 TextDrawHideForPlayer(playerid, SkinSelector_Title);
381 TextDrawHideForPlayer(playerid, SkinSelector_Accept);
382 TextDrawHideForPlayer(playerid, SkinSelector_Right);
383 TextDrawHideForPlayer(playerid, SkinSelector_Left);
384 CreateAccount(playerid);
385 }
386 return 1;
387}
388
389public OnPlayerSpawn(playerid)
390{
391 new query[258];
392 if(Player[playerid][LoggedIn] == false)
393 {
394 // nie zalogowany
395 SetPlayerSkin(playerid, GetRandomSkin());
396 SetPlayerInterior(playerid, 12);
397 SetPlayerPos(playerid, 2324.3040, -1135.8479, 1051.3047);
398 SetPlayerFacingAngle(playerid, 180.2658);
399 SetPlayerVirtualWorld(playerid, 50 + playerid);
400 SetPlayerCameraPos(playerid, 2324.5247, -1138.4045, 1050.4990);
401 SetPlayerCameraLookAt(playerid, 2324.3040, -1135.8479, 1051.3047);
402 TogglePlayerControllable(playerid, false);
403 ShowPlayerMouse(playerid, true);
404 new ip[18];
405 GetPlayerIp(playerid, ip, 18);
406 mysql_format(SQL_ID, query, sizeof query, "SELECT * FROM players_accounts WHERE Login = '%s' LIMIT 1", PlayerName(playerid));
407 mysql_tquery(SQL_ID, query, "OnAccountCheck", "iss", playerid, ip, PlayerName(playerid));
408 }
409 else
410 {
411 //zalogowany
412 if(Player[playerid][FirstSpawn] && Player[playerid][LastPos] != 0)
413 {
414 SetPlayerPos(playerid, Player[playerid][LastPos][0], Player[playerid][LastPos][1], Player[playerid][LastPos][2]);
415 SetPlayerFacingAngle(playerid, Player[playerid][LastPos][3]);
416 SetPlayerInterior(playerid, Player[playerid][Linterior]);
417 SetPlayerVirtualWorld(playerid, Player[playerid][LVW]);
418 SetPlayerHealth(playerid, Player[playerid][HP]);
419 SetPlayerArmour(playerid, Player[playerid][Armour]);
420 }
421 else
422 {
423 SetPlayerInterior(playerid, 0);
424 SetPlayerVirtualWorld(playerid, 0);
425 }
426 SetPlayerSkin(playerid, Player[playerid][IDSkin]);
427 TogglePlayerControllable(playerid, true);
428 SetCameraBehindPlayer(playerid);
429 ShowPlayerMouse(playerid, false);
430 Player[playerid][FirstSpawn] = false;
431 }
432 return 1;
433}
434
435//CALLBACK MYSQL
436
437forward OnAccountCreate(playerid);
438public OnAccountCreate(playerid)
439{
440 SendClientMessage(playerid, -1, INFO_STRING"Gratuluję! Twoje Konto zostało pomyślnie stworzone.Życzymy udanej gry, Administracja serwera.");
441 SpawnPlayer(playerid);
442 return 1;
443}
444
445forward OnAccountCheck(playerid, ip[], name[]);
446public OnAccountCheck (playerid, ip[], name[])
447{
448 if(!IsPlayerConnected(playerid))
449 return 1;
450 new tmpip[18];
451 GetPlayerIp(playerid, tmpip, 18);
452 if(strcmp(ip, tmpip, true) != 0 && strcmp(name, PlayerName(playerid)) != 0)
453 return KickEX(playerid);
454 if(cache_num_rows() > 0)
455 {
456 //konto odnalezione
457 cache_get_value(0, "password", Player[playerid][Password], 129);
458 Player[playerid][Cache_ID] = cache_save();
459 ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Logowanie", "Znaleźliśmy rejestrację Twojego konta. \n\tPodaj hasło aby zagrać.", "Logowanie", "Opuść Serwer");
460 }
461 else
462 {
463 //Konton nie odnalezione
464 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");
465 }
466 return 1;
467}
468
469stock IsNumeric(const string[])
470{
471 for (new i = 0, j = strlen(string); i < j; i++)
472 {
473 if (string[i] > '9' || string[i] < '0') return 0;
474 }
475 return 1;
476}
477
478stock bool:IsStrValid(const string[])
479{
480 new num;
481 new len = strlen(string);
482 for(new i; i < len; i++)
483 switch(string[i])
484 {
485 case 'A'..'Z':num++;
486 case 'a'..'z':num++;
487 case '0'..'9':num++;
488 }
489 if(num == len) return true;
490 else return false;
491}
492
493//Timery
494
495
496forward UnFreezePlayer(playerid);
497public UnFreezePlayer(playerid)
498{
499 Player[playerid][IsFreezed] = false;
500 TogglePlayerControllable(playerid, true);
501 return 1;
502}
503
504forward DelayKick(playerid);
505public DelayKick(playerid)
506 return Kick(playerid);
507
508forward SecondUpdate();
509public SecondUpdate()
510{
511 for(new playerid, j = GetPlayerPoolSize(); playerid <= j; playerid++)
512 {
513 if(IsPlayerConnected(playerid))
514 {
515 if(Player[playerid][ShowMouse])
516 {
517 ShowPlayerMouse(playerid, true);
518 }
519 }
520 }
521 return 1;
522}
523
524//STOCKI
525
526
527stock SendClientMessageInRange(playerid, color, Float:range, const text[])
528{
529 new Float:x, Float:y, Float:z;
530 GetPlayerPos(playerid, x, y, z);
531 for(new i, j = GetPlayerPoolSize(); i <= j; i++)
532 {
533 if(IsPlayerConnected(i))
534 {
535 if(IsPlayerInRangeOfPoint(i, range, x, y, z))
536 {
537 SendClientMessage(i, color, text);
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}