· 5 years ago · Mar 25, 2020, 06:52 PM
1//INCLUDY
2#include <a_samp>
3#include <a_mysql>
4
5main() {}
6//NATIVEY
7native WP_Hash(buffer[], len, const str[]);
8
9//FORWARDY
10forward bool:IsStrValid(string[]);
11
12//USTAWIENIA
13#define START_MONEY 1500
14
15//DIALOGI
16#define DIALOG_REGISTER1 0
17#define DIALOG_LOGIN 1
18#define DIALOG_REGISTER2 2
19#define DIALOG_REGISTER3 3
20
21//DEFINICJE
22#define SCRIPT_NAME "Super Serwer"
23#define SCRIPT_VERSION "V1.0"
24#define INFO_STRING "{00FF00}[INFO]{FFFFFF}: "
25#define ERROR_STRING "{FF0000}[BŁĄD]{FFFFFF}: "
26
27#define GENDER_MALE 1
28#define GENDER_FEMALE 0
29
30//TEXTDRAWY
31new Text:SkinSelector_Title;
32new Text:SkinSelector_Right;
33new Text:SkinSelector_Left;
34new Text:SkinSelector_Accept;
35
36//ENUMERATORY
37enum PlayerData
38{
39 bool:LoggedIn,
40 bool:ShowMouse,
41 Cache:Cache_ID,
42 UID,
43 Password[129],
44 Age,
45 Level,
46 Gender,
47 SkinID,
48 Money,
49 AdminLVL,
50
51 //Wybor postaci
52 SelectedSkinID
53};
54new Player[MAX_PLAYERS][PlayerData];
55
56//ZMIENNE GLOBALNE
57new MySQL:SQL_ID;
58new Skins_Male[][] = {6, 7, 20, 21, 22, 23, 24, 26}; //Mezczyzni
59new Skins_Female[][] = {31, 40, 41, 54, 55, 56, 65, 148}; //Kobiety
60
61public OnGameModeInit()
62{
63 printf("Włączam skrypt %s %s...\n", SCRIPT_NAME, SCRIPT_VERSION);
64 if(MySQL_Init())
65 {
66 //WCZYTYWANIE
67 MySQL_SetUpTables(); //Tworzy tabele w bazie MySQL jesli nie istnieje
68 CreateGlobalTD(); //Tworzy globalne TextDrawy
69
70 //TIMERY
71 SetTimer("SecondUpdate", 1000, true);
72
73 //USTAWIENIA
74 DisableInteriorEnterExits();
75 EnableStuntBonusForAll(false);
76 UsePlayerPedAnims();
77
78 printf("Skrypt %s %s został pomyślnie włączony!\n", SCRIPT_NAME, SCRIPT_VERSION);
79 }
80 return 1;
81}
82
83public OnGameModeExit()
84{
85 mysql_close(SQL_ID); //Rozlacza z bazy
86 return 1;
87}
88
89public OnPlayerRequestSpawn(playerid)
90{
91
92 return 1;
93}
94
95public OnPlayerRequestClass(playerid, classid)
96{
97 SpawnPlayer(playerid);
98 return 1;
99}
100
101public OnPlayerConnect(playerid)
102{
103 if(IsRPName(PlayerName(playerid)))
104 {
105 ClearPlayerChat(playerid);
106 SetSpawnInfo(playerid, NO_TEAM, 0, 0.0,0.0,0.0,0.0, 0, 0, 0, 0, 0, 0); //To tylko sprawia by gracz ominal standardowy wybor postaci.
107 }
108 else
109 {
110 SendClientMessage(playerid, -1, ERROR_STRING"Twoja nazwa jest niezgodna zasadami Role-Play, uzyj formatu Nazwa_Nazwisko!");
111 KickEx(playerid);
112 }
113 return 1;
114}
115
116public OnPlayerDisconnect(playerid, reason)
117{
118 new query[258];
119 if(Player[playerid][LoggedIn])
120 {
121 SaveAccount(playerid); //Zapisuje dane gracza
122 mysql_format(SQL_ID, query, sizeof query, "UPDATE accounts SET lastonline = NOW() WHERE uid = %i", Player[playerid][UID]);
123 mysql_tquery(SQL_ID, query);
124 }
125 ResetPlayerData(playerid); //Resetuje dane gracza
126 return 1;
127}
128
129public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
130{
131 switch(dialogid)
132 {
133 case DIALOG_LOGIN: //Login gracza
134 {
135 if(response)
136 {
137 if(strlen(inputtext) && IsStrValid(inputtext))
138 {
139 new buff[129], query[258], ip[18];
140 WP_Hash(buff, 129, inputtext); //Szyfruje haslo ktory podal gracza by sprawdzic haslo z bazy.
141 if(strcmp(Player[playerid][Password], buff, true) == 0)
142 {
143 //Haslo sie zgadza
144 AssignPlayerData(playerid); //Ustawia graczowi dane do pamieci.
145
146 Player[playerid][LoggedIn] = true;
147 ResetPlayerMoney(playerid);
148 GivePlayerMoney(playerid, Player[playerid][Money]);
149 SetPlayerScore(playerid, Player[playerid][Level]);
150 SpawnPlayer(playerid);
151 ClearPlayerChat(playerid);
152 SendClientMessage(playerid, -1, INFO_STRING"Zostałeś pomyślnie zalogowany! Miłej gry!");
153 GetPlayerIp(playerid, ip, 18);
154 mysql_format(SQL_ID, query, sizeof query, "UPDATE accounts SET lastip = '%s', lastonline = NOW() WHERE uid = %i", ip, Player[playerid][UID]);
155 mysql_tquery(SQL_ID, query);
156 }
157 else
158 {
159 //Haslo sie nie zgadza
160 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Twoje konto zostało odnalezione!\nPodaj poniżej swoje hasło aby się zalogować!", "Zaloguj", "Wyjdz");
161 SendClientMessage(playerid, -1, ERROR_STRING"Podano błędne hasło! Spróbuj ponownie!");
162 }
163 }
164 else
165 {
166 //Haslo sie nie zgadza
167 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Twoje konto zostało odnalezione!\nPodaj poniżej swoje hasło aby się zalogować!", "Zaloguj", "Wyjdz");
168 SendClientMessage(playerid, -1, ERROR_STRING"Podano błędne hasło! Spróbuj ponownie!");
169 }
170 }
171 else KickEx(playerid);
172 }
173 case DIALOG_REGISTER3: //Rejestracja Wiek postaci
174 {
175 if(response)
176 {
177 if(IsNumeric(inputtext) && strlen(inputtext) == 2 && strval(inputtext) >= 18 && strval(inputtext) <= 55)
178 {
179 Player[playerid][Age] = strval(inputtext);
180 SetPlayerCameraPos(playerid, -2168.2939,642.1371,1057.5938);
181 SetPlayerCameraLookAt(playerid, -2165.8633,644.5464,1057.5000, CAMERA_MOVE);
182 Player[playerid][SelectedSkinID] = 0;
183 new sskin = Player[playerid][SelectedSkinID];
184 if(Player[playerid][Gender] == GENDER_MALE)
185 {
186 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
187 Player[playerid][SkinID] = Skins_Male[sskin][0];
188 }
189 else
190 {
191 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
192 Player[playerid][SkinID] = Skins_Female[sskin][0];
193 }
194 TextDrawShowForPlayer(playerid, SkinSelector_Title);
195 TextDrawShowForPlayer(playerid, SkinSelector_Right);
196 TextDrawShowForPlayer(playerid, SkinSelector_Left);
197 TextDrawShowForPlayer(playerid, SkinSelector_Accept);
198 }
199 else
200 {
201 ShowPlayerDialog(playerid, DIALOG_REGISTER3, DIALOG_STYLE_INPUT, "Rejestracja", "Wybierz wiek Twojej postaci.", "Potwierdz", "Wyjdz");
202 SendClientMessage(playerid, -1, ERROR_STRING"Wiek postaci musi byc od 18-55 lat!");
203 }
204 }
205 else KickEx(playerid);
206 }
207 case DIALOG_REGISTER2: //Rejestracja Plec postaci
208 {
209 Player[playerid][Gender] = response;
210 ShowPlayerDialog(playerid, DIALOG_REGISTER3, DIALOG_STYLE_INPUT, "Rejestracja", "Wybierz wiek Twojej postaci.", "Potwierdz", "Wyjdz");
211 }
212 case DIALOG_REGISTER1: //Rejestracja konta haslo
213 {
214 if(response)
215 {
216 if(strlen(inputtext) >= 6 && IsStrValid(inputtext))
217 {
218 WP_Hash(Player[playerid][Password], 129, inputtext); //Szyfruje haslo ktory potem wpiszemy do bazy.
219 ShowPlayerDialog(playerid, DIALOG_REGISTER2, DIALOG_STYLE_MSGBOX, "Rejestracja", "Wybierz płeć swojej postaci.", "Mężczyzna", "Kobieta");
220 }
221 else
222 {
223 ShowPlayerDialog(playerid, DIALOG_REGISTER1, DIALOG_STYLE_PASSWORD, "Rejestracja", "Aby zagrać na serwerze, musisz stworzyć konto.\nPodaj poniżej swoje hasło.", "Potwierdz", "Wyjdz");
224 SendClientMessage(playerid, -1, ERROR_STRING"Hasło musi zawierać przynajmniej 6 znaków i nie może posiadać przerw i znaków specjalnych!");
225 }
226 }
227 else KickEx(playerid);
228 }
229 }
230 return 0;
231}
232
233public OnPlayerClickTextDraw(playerid, Text:clickedid)
234{
235 if(clickedid == SkinSelector_Right) //Wybor postaci nastepna postac
236 {
237 if(Player[playerid][Gender] == GENDER_MALE) //Mezczyzni
238 {
239 if(Player[playerid][SelectedSkinID] == (sizeof Skins_Male - 1))
240 Player[playerid][SelectedSkinID] = 0;
241 else
242 Player[playerid][SelectedSkinID]++;
243 new sskin = Player[playerid][SelectedSkinID];
244 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
245 Player[playerid][SkinID] = Skins_Male[sskin][0];
246 }
247 else //Kobiety
248 {
249 if(Player[playerid][SelectedSkinID] == (sizeof Skins_Female - 1))
250 Player[playerid][SelectedSkinID] = 0;
251 else
252 Player[playerid][SelectedSkinID]++;
253 new sskin = Player[playerid][SelectedSkinID];
254 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
255 Player[playerid][SkinID] = Skins_Female[sskin][0];
256 }
257 }
258 if(clickedid == SkinSelector_Left) //Wybor postaci poprzednia postac
259 {
260 if(Player[playerid][Gender] == GENDER_MALE) //Mezczyzni
261 {
262 if(Player[playerid][SelectedSkinID] == 0)
263 Player[playerid][SelectedSkinID] = (sizeof Skins_Male - 1);
264 else
265 Player[playerid][SelectedSkinID]--;
266 new sskin = Player[playerid][SelectedSkinID];
267 SetPlayerSkin(playerid, Skins_Male[sskin][0]);
268 Player[playerid][SkinID] = Skins_Male[sskin][0];
269 }
270 else //Kobiety
271 {
272 if(Player[playerid][SelectedSkinID] == 0)
273 Player[playerid][SelectedSkinID] = (sizeof Skins_Female - 1);
274 else
275 Player[playerid][SelectedSkinID]--;
276 new sskin = Player[playerid][SelectedSkinID];
277 SetPlayerSkin(playerid, Skins_Female[sskin][0]);
278 Player[playerid][SkinID] = Skins_Female[sskin][0];
279 }
280 }
281 if(clickedid == SkinSelector_Accept) //Wybor postaci akzeptacja.
282 {
283 TextDrawHideForPlayer(playerid, SkinSelector_Title);
284 TextDrawHideForPlayer(playerid, SkinSelector_Right);
285 TextDrawHideForPlayer(playerid, SkinSelector_Left);
286 TextDrawHideForPlayer(playerid, SkinSelector_Accept);
287 CreateAccount(playerid); //Tworzy konto dla gracza
288 }
289 return 1;
290}
291
292public OnPlayerSpawn(playerid)
293{
294 new query[258];
295 if(Player[playerid][LoggedIn] == false)
296 {
297 new ip[18];
298 //NIE ZALOGOWANY
299 SetPlayerSkin(playerid, GetRandomSkin()); //Skin gracza podczas okna logowania i rejestracji, jest wybrany losowo.
300 SetPlayerPos(playerid, -2165.8633,644.5464,1057.5938); //Pozycja postaci podczas okna logowania i rejestracji
301 SetPlayerFacingAngle(playerid, 90.0000); //Rotacja gracza okna logowania i rejestracji
302 SetPlayerInterior(playerid, 1); //Ustawia Interior
303 //
304 SetPlayerVirtualWorld(playerid, 50 + playerid); //UStawia kazdego gracza w swoim Wirtualnym swiecie.
305 SetPlayerCameraPos(playerid, -2160.5630,642.1472,1058.5938); //Pozycja kamera.
306 SetPlayerCameraLookAt(playerid, -2167.0398,644.4033,1059.1016); //Gdzie kamera sie ma patrzec.
307 TogglePlayerControllable(playerid, false); //Zamraza gracza
308 ShowPlayerMouse(playerid, true); //Pokazuje myszke
309 GetPlayerIp(playerid, ip, 18); //Pobiera IP gracza
310 mysql_format(SQL_ID, query, sizeof query, "SELECT * FROM accounts WHERE name = '%s' LIMIT 1", PlayerName(playerid));
311 mysql_tquery(SQL_ID, query, "OnAccountCheck", "iss", playerid, ip, PlayerName(playerid));
312 }
313 else
314 {
315 //ZALOGOWANY
316 SetPlayerSkin(playerid, Player[playerid][SkinID]); //Skin gracza
317 SetPlayerPos(playerid, -2424.9399,337.3700,37.0021); //Pozycja Spawnu gracza
318 SetPlayerFacingAngle(playerid, 242.0000); //Rotacja Spawnu gracza
319 SetPlayerInterior(playerid, 0); //Ustawia interior.
320 //
321 SetPlayerVirtualWorld(playerid, 0); //UStawia wirtualny swiat na 0 by zobaczyc innych graczy.
322 TogglePlayerControllable(playerid, true); //Odmraza gracza.
323 SetCameraBehindPlayer(playerid); //Ustawia kamere za gracza.
324 ShowPlayerMouse(playerid, false); //Chowa myszke gracza.
325 }
326 return 1;
327}
328
329//CALLBACKI MYSQL
330forward OnAccountCreate(playerid);
331public OnAccountCreate(playerid)
332{
333 SendClientMessage(playerid, -1, INFO_STRING"Konto zostało pomyślnie stworzony!");
334 SpawnPlayer(playerid);
335 return 1;
336}
337
338forward OnAccountCheck(playerid, ip[], name[]);
339public OnAccountCheck(playerid, ip[], name[])
340{
341 //Sprawdza czy dane ktory pobral z bazy, nalezy nadal dla tego gracza.
342 if(!IsPlayerConnected(playerid)) //Czy jest nadal polaczony?
343 return 1;
344 new tmpip[18];
345 GetPlayerIp(playerid, tmpip, 18);
346 if(strcmp(ip, tmpip, true) != 0 && strcmp(name, PlayerName(playerid), true) != 0) //Czy IP i Nazwa gracza sie zgadza?
347 return KickEx(playerid);
348 //Sprawdzamy czy konto istnieje.
349 if(cache_num_rows() > 0)
350 {
351 //ZNALAZL KONTO
352 cache_get_value(0, "password", Player[playerid][Password], 129); //Pobieramy haslo gracza z bazy
353 Player[playerid][Cache_ID] = cache_save(); //Zapiszemy cache i ID wpiszemy do enumeratora by pozniej moc pobrac dane.
354 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Twoje konto zostało odnalezione!\nPodaj poniżej swoje hasło aby się zalogować!", "Zaloguj", "Wyjdz");
355 }
356 else
357 {
358 //NIE ZNALAZL KONTO
359 ShowPlayerDialog(playerid, DIALOG_REGISTER1, DIALOG_STYLE_PASSWORD, "Rejestracja", "Aby zagrać na serwerze, musisz stworzyć konto.\nPodaj poniżej swoje hasło.", "Potwierdz", "Wyjdz");
360 }
361 return 1;
362}
363
364//TIMERY
365
366forward DelayKick(playerid);
367public DelayKick(playerid)
368 return Kick(playerid);
369
370forward SecondUpdate();
371public SecondUpdate()
372{
373 for(new playerid, j = GetPlayerPoolSize(); playerid <= j; playerid++)
374 {
375 if(IsPlayerConnected(playerid))
376 {
377 if(Player[playerid][ShowMouse])
378 {
379 ShowPlayerMouse(playerid, true);
380 }
381 }
382 }
383 return 1;
384}
385
386//STOCKI
387
388stock GetRandomSkin()
389{
390 new rgender = random(2);
391 if(rgender == 1)
392 {
393 new rand = random(sizeof Skins_Male);
394 return Skins_Male[rand][0];
395 }
396 else if(rgender == 0)
397 {
398 new rand = random(sizeof Skins_Female);
399 return Skins_Female[rand][0];
400 }
401 return 0;
402}
403
404stock KickEx(playerid, delay = 1000)
405 return SetTimerEx("DelayKick", delay, false, "i", playerid);
406
407stock ResetPlayerData(playerid)
408{
409 if(cache_is_valid(Player[playerid][Cache_ID]))
410 {
411 cache_delete(Player[playerid][Cache_ID]);
412 Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
413 }
414 static const null_players[PlayerData];
415 Player[playerid] = null_players;
416 return 1;
417}
418
419stock IsRPName(name[], minname = 3, bool:firstupperthenlower = true) //By Nickk888
420{
421 new count, checknumcount, where, tmpname[24], tmpsname[24];
422 new len = strlen(name);
423 for(new i; i < len; i++) {
424 if(name[i] == '_')
425 count++,
426 where = i;
427 switch(name[i]) {
428 case 'A'..'Z', 'a'..'z', '_':
429 checknumcount++;
430 }
431 }
432 if(count != 1 || (where < minname || len < ((where + 1) + minname)) || checknumcount != len)
433 return 0;
434 strmid(tmpname, name, 0, where);
435 strmid(tmpsname, name, where+1, len);
436 checknumcount = 0;
437 if(firstupperthenlower) {
438 switch(tmpname[0]) {
439 case 'A'..'Z':
440 checknumcount++;
441 }
442 for(new i = 1, j = strlen(tmpname); i < j; i++){
443 switch(tmpname[i]) {
444 case 'a'..'z':
445 checknumcount++;
446 }
447 }
448 switch(tmpsname[0]) {
449 case 'A'..'Z':
450 checknumcount++;
451 }
452 for(new i = 1, j = strlen(tmpsname); i < j; i++){
453 switch(tmpsname[i]) {
454 case 'a'..'z':
455 checknumcount++;
456 }
457 }
458 if((checknumcount + 1) != len)
459 return 0;
460 }
461 return 1;
462}
463
464stock IsNumeric(const string[])
465{
466 for (new i = 0, j = strlen(string); i < j; i++)
467 {
468 if (string[i] > '9' || string[i] < '0') return 0;
469 }
470 return 1;
471}
472
473stock bool:IsStrValid(string[])
474{
475 new num;
476 new len = strlen(string);
477 for(new i; i < len; i++)
478 switch(string[i])
479 {
480 case 'A'..'Z':num++;
481 case 'a'..'z':num++;
482 case '0'..'9':num++;
483 }
484 if(num == len) return true;
485 else return false;
486}
487
488stock PlayerName(playerid)
489{
490 new name[MAX_PLAYER_NAME];
491 GetPlayerName(playerid, name, sizeof name);
492 return name;
493}
494
495stock ClearPlayerChat(playerid)
496{
497 for(new i; i < 15; i++)
498 SendClientMessage(playerid, -1, "");
499 return 1;
500}
501
502stock ShowPlayerMouse(playerid, bool:show)
503{
504 if(show)
505 {
506 SelectTextDraw(playerid, 0xFF0000FF);
507 Player[playerid][ShowMouse] = true;
508 }
509 else
510 {
511 CancelSelectTextDraw(playerid);
512 Player[playerid][ShowMouse] = false;
513 }
514 return 1;
515}
516
517stock AssignPlayerData(playerid)
518{
519 cache_set_active(Player[playerid][Cache_ID]); //Ponownie aktywujemy Cache gracza.
520
521 //Pobieramy dane z cache
522 cache_get_value_int(0, "uid", Player[playerid][UID]);
523 cache_get_value_int(0, "skinid", Player[playerid][SkinID]);
524 cache_get_value_int(0, "money", Player[playerid][Money]);
525 cache_get_value_int(0, "gender", Player[playerid][Gender]);
526 cache_get_value_int(0, "age", Player[playerid][Age]);
527 cache_get_value_int(0, "level", Player[playerid][Level]);
528 cache_get_value_int(0, "adminlvl", Player[playerid][AdminLVL]);
529
530 cache_delete(Player[playerid][Cache_ID]); //Usuwa caly Cache
531 Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE; //Resetujemy Cache ID
532 return 1;
533}
534
535stock SaveAccount(playerid)
536{
537 new query[258];
538 mysql_format(SQL_ID, query, sizeof query, "UPDATE accounts SET money = %i, skinid = %i, level = %i WHERE uid = %i",
539 GetPlayerMoney(playerid),
540 GetPlayerSkin(playerid),
541 GetPlayerScore(playerid),
542 Player[playerid][UID]);
543 mysql_tquery(SQL_ID, query);
544 return 1;
545}
546
547stock CreateAccount(playerid)
548{
549 new query[258], string[258];
550 strcat(query, "INSERT INTO accounts(");
551 //
552 strcat(query, "name,");
553 strcat(query, "password,");
554 strcat(query, "skinid,");
555 strcat(query, "age,");
556 strcat(query, "gender,");
557 strcat(query, "money");
558 //
559 strcat(query, ") VALUES (");
560 //
561 format(string, 258, "'%s',", PlayerName(playerid));
562 strcat(query, string);
563 format(string, 258, "'%s',", Player[playerid][Password]);
564 strcat(query, string);
565 format(string, 258, "'%i',", Player[playerid][SkinID]);
566 strcat(query, string);
567 format(string, 258, "'%i',", Player[playerid][Age]);
568 strcat(query, string);
569 format(string, 258, "'%i',", Player[playerid][Gender]);
570 strcat(query, string);
571 format(string, 258, "'%i'", START_MONEY);
572 strcat(query, string);
573 //
574 strcat(query, ")");
575 mysql_tquery(SQL_ID, query, "OnAccountCreate", "i", playerid);
576 return 1;
577}
578
579stock MySQL_SetUpTables()
580{
581 mysql_tquery(SQL_ID, "CREATE TABLE IF NOT EXISTS `accounts` ( \
582 `uid` INT(11) NOT NULL AUTO_INCREMENT, \
583 `name` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
584 `password` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
585 `skinid` INT(11) NOT NULL, \
586 `money` INT(11) NOT NULL DEFAULT '0', \
587 `gender` INT(11) NOT NULL, \
588 `age` INT(11) NOT NULL, \
589 `level` INT(11) NOT NULL DEFAULT '1', \
590 `adminlvl` INT(11) NOT NULL DEFAULT '0', \
591 `lastip` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
592 `lastonline` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, \
593 `createdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, \
594 PRIMARY KEY (`uid`))");
595 return 1;
596}
597
598stock MySQL_Init()
599{
600 mysql_log();
601 SQL_ID = mysql_connect_file("mysql.ini"); //Probujemy sie polaczyc z baza MySQL
602 if(SQL_ID == MYSQL_INVALID_HANDLE || mysql_errno(SQL_ID) != 0)
603 {
604 //Jesli polaczenie sie nie powiodlo
605 print("[MYSQL - BŁĄD] Nie można było połączyć się z baza danych! Wyłączam serwer...");
606 SendRconCommand("exit");
607 return 0;
608 }
609 //Jesli sie powiodlo
610 print("[MYSQL] Połączenie z bazą danych została nawiązana!");
611 return 1;
612}
613
614stock CreateGlobalTD()
615{
616 SkinSelector_Title = TextDrawCreate(316.000000, 370.000000, "WYBIERZ POSTAC");
617 TextDrawFont(SkinSelector_Title, 2);
618 TextDrawLetterSize(SkinSelector_Title, 0.291666, 2.049999);
619 TextDrawTextSize(SkinSelector_Title, 400.000000, 405.000000);
620 TextDrawSetOutline(SkinSelector_Title, 1);
621 TextDrawSetShadow(SkinSelector_Title, 0);
622 TextDrawAlignment(SkinSelector_Title, 2);
623 TextDrawColor(SkinSelector_Title, -1378294017);
624 TextDrawBackgroundColor(SkinSelector_Title, 255);
625 TextDrawBoxColor(SkinSelector_Title, 50);
626 TextDrawUseBox(SkinSelector_Title, 0);
627 TextDrawSetProportional(SkinSelector_Title, 1);
628 TextDrawSetSelectable(SkinSelector_Title, 0);
629
630 SkinSelector_Right = TextDrawCreate(351.000000, 392.000000, ">>>");
631 TextDrawFont(SkinSelector_Right, 2);
632 TextDrawLetterSize(SkinSelector_Right, 0.258332, 1.750000);
633 TextDrawTextSize(SkinSelector_Right, 16.500000, 33.500000);
634 TextDrawSetOutline(SkinSelector_Right, 1);
635 TextDrawSetShadow(SkinSelector_Right, 0);
636 TextDrawAlignment(SkinSelector_Right, 2);
637 TextDrawColor(SkinSelector_Right, -1);
638 TextDrawBackgroundColor(SkinSelector_Right, 255);
639 TextDrawBoxColor(SkinSelector_Right, 76);
640 TextDrawUseBox(SkinSelector_Right, 1);
641 TextDrawSetProportional(SkinSelector_Right, 1);
642 TextDrawSetSelectable(SkinSelector_Right, 1);
643
644 SkinSelector_Left = TextDrawCreate(281.000000, 392.000000, "<<<");
645 TextDrawFont(SkinSelector_Left, 2);
646 TextDrawLetterSize(SkinSelector_Left, 0.258332, 1.750000);
647 TextDrawTextSize(SkinSelector_Left, 16.500000, 33.500000);
648 TextDrawSetOutline(SkinSelector_Left, 1);
649 TextDrawSetShadow(SkinSelector_Left, 0);
650 TextDrawAlignment(SkinSelector_Left, 2);
651 TextDrawColor(SkinSelector_Left, -1);
652 TextDrawBackgroundColor(SkinSelector_Left, 255);
653 TextDrawBoxColor(SkinSelector_Left, 76);
654 TextDrawUseBox(SkinSelector_Left, 1);
655 TextDrawSetProportional(SkinSelector_Left, 1);
656 TextDrawSetSelectable(SkinSelector_Left, 1);
657
658 SkinSelector_Accept = TextDrawCreate(316.000000, 392.000000, "OK");
659 TextDrawFont(SkinSelector_Accept, 2);
660 TextDrawLetterSize(SkinSelector_Accept, 0.258332, 1.750000);
661 TextDrawTextSize(SkinSelector_Accept, 16.500000, 23.500000);
662 TextDrawSetOutline(SkinSelector_Accept, 1);
663 TextDrawSetShadow(SkinSelector_Accept, 0);
664 TextDrawAlignment(SkinSelector_Accept, 2);
665 TextDrawColor(SkinSelector_Accept, -1);
666 TextDrawBackgroundColor(SkinSelector_Accept, 255);
667 TextDrawBoxColor(SkinSelector_Accept, 76);
668 TextDrawUseBox(SkinSelector_Accept, 1);
669 TextDrawSetProportional(SkinSelector_Accept, 1);
670 TextDrawSetSelectable(SkinSelector_Accept, 1);
671 return 1;
672}