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