· 6 years ago · Apr 15, 2019, 07:52 PM
1#include <a_samp>
2#include <a_mysql>
3
4main(){}
5
6native WP_Hash(buffer[], len, const str[]);
7//Forwardy
8forward bool:IsStrValid(const string[]);
9
10//Ustawienia
11#define MONEY_MONEY_START 2500
12
13//Dialogi
14#define REGISTER1_DIALOG 0
15#define LOGIN_DIALOG 1
16#define REGISTER2_DIALOG 2
17#define REGISTER3_DIALOG 3
18//Definicje
19#define SKRYPT_NAME "Najlepszy Polski Serwer"
20#define SKRYPT_VER "V1.0.0"
21#define INFO_STRING "{008080}[INFO]{C0C0C0}: "
22#define ERROR_STRING "{FF0000}[BÅÄ„D]{800000}: "
23
24#define GENDER_MALE 0
25#define GENDER_FEMALE 1
26
27//eNUMY
28enum DataPlayer
29{
30 bool:LoggedIn,
31 bool:ShowMouse,
32 Cache:Cache_ID,
33 UID,
34 Password[129],
35 Age,
36 Lvl,
37 Gender,
38 IDSkin,
39 Money,
40 AdminLV
41};
42new Player[MAX_PLAYERS][DataPlayer];
43new MySQL:SQL_ID;
44
45public OnGameModeInit()
46{
47 UsePlayerPedAnims();
48
49 for(new idskinow=0; idskinow < 311; idskinow++)
50 {
51 AddPlayerClass(idskinow, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
52 }
53 printf("Gamemode %s %s ® by Kreto Wystartował", SKRYPT_NAME, SKRYPT_VER);
54 if(MySQL_Init())
55 {
56 //Wczytywanie
57 MySQL_SetUpTables();
58
59 //Timer
60 SetTimer("SecondUpdate", 1000, true);
61
62
63 printf("Gamemode %s %s ® by Kreto działa\n", SKRYPT_NAME, SKRYPT_VER);
64 }
65 return 1;
66}
67
68public OnGameModeExit()
69{
70 mysql_close(SQL_ID);
71 return 1;
72}
73
74public OnPlayerRequestSpawn(playerid)
75{
76
77 return 1;
78}
79
80public OnPlayerRequestClass(playerid, classid)
81{
82 SpawnPlayer(playerid);
83 return 1;
84}
85
86public OnPlayerConnect(playerid)
87{
88 ClearPlayerChat(playerid);
89 SetSpawnInfo(playerid, NO_TEAM, 181, 1248.2993,-1563.6338,12.6017, 186.4331, 0, 0, 0, 0, 0, 0);
90 return 1;
91}
92
93
94public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
95{
96 switch(dialogid)
97 {
98 case REGISTER3_DIALOG: // Rejestracja wiek
99 {
100 if(IsNumeric(inputtext) && strlen(inputtext) == 2 && strval(inputtext) >= 13 && strval(inputtext) <= 30 );
101 {
102 Player[playerid][Age] = strval(inputtext);
103 }
104 else
105 {
106 ShowPlayerDialog(playerid, REGISTER3_DIALOG, DIALOG_STYLE_INPUT, "Rejestracja", "Podaj swój wiek", "Akceptuj", "Opuść Serwer");
107 SendClientMessage(playerid, -1, ERROR_STRING"Żeby zagrać musisz mieć 13-30 lat!");
108 }
109 }
110 case REGISTER2_DIALOG: // Rejestracja wybór Gender
111 {
112 Player[playerid][Gender] = response;
113 ShowPlayerDialog(playerid, REGISTER3_DIALOG, DIALOG_STYLE_INPUT, "Rejestracja", "Podaj swój wiek", "Akceptuj", "Opuść Serwer");
114 }
115 case REGISTER1_DIALOG: //zAKÅADNIE KONTA
116 {
117 if(strlen(inputtext) >= 6 && IsStrValid(inputtext))
118 {
119 WP_Hash(Player[playerid][Password], 129, inputtext);
120 ShowPlayerDialog(playerid, REGISTER2_DIALOG, DIALOG_STYLE_MSGBOX, "Rejestracja", "Wybierz swoją przynależność sexualną.", "Mężczyzna", "Kobieta");
121 }
122 else
123 {
124 ShowPlayerDialog(playerid, REGISTER1_DIALOG, DIALOG_STYLE_PASSWORD, "REJESTRACJA", "Aby zagrać na serwerze, prosimy stwórz konto. \nHasło proszę wpisać poniżej", "Akceptuj", "Anuluj");
125 SendClientMessage(playerid, -1, ERROR_STRING"Hasło powinno zawierać min. 8 zanków, nie może zawierać przerw ani znaków specjalnych!!");
126 }
127 }
128 }
129 return 0;
130}
131
132public OnPlayerSpawn(playerid)
133{
134 new query[258];
135 if(Player[playerid][LoggedIn] == false)
136 {
137 // nie zalogowany
138 SetPlayerInterior(playerid, 12);
139 SetPlayerPos(playerid, 2324.3040, -1135.8479, 1051.3047);
140 SetPlayerFacingAngle(playerid, 180.2658);
141 SetPlayerVirtualWorld(playerid, 50 + playerid);
142 SetPlayerCameraPos(playerid, 2324.5247, -1138.4045, 1050.4990);
143 SetPlayerCameraLookAt(playerid, 2324.3040, -1135.8479, 1051.3047);
144 TogglePlayerControllable(playerid, false);
145 ShowPlayerMouse(playerid, true);
146 mysql_format(SQL_ID, query, sizeof query, "SELECT * FROM players_accounts WHERE Login = '%s' LIMIT 1", PlayerName(playerid));
147 mysql_tquery(SQL_ID, query, "OnAccountCheck", "i", playerid);
148 }
149 else
150 {
151 //zalogowany
152
153 }
154 return 1;
155}
156
157//CALLBACK MYSQL
158forward OnAccountCheck(playerid);
159public OnAccountCheck (playerid)
160{
161 if(cache_num_rows() > 0)
162 {
163 //konto odnalezione
164 cache_get_value(0, "password", Player[playerid][Password], 129);
165 Player[playerid][Cache_ID] = cache_save();
166 ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Logowanie", "Znaleźliśmy rejestrację Twojego konta. /nPodaj hasło aby zagrać.", "Logowanie", "Opuść Serwer");
167 }
168 else
169 {
170 //Konton nie odnalezione
171 ShowPlayerDialog(playerid, REGISTER1_DIALOG, DIALOG_STYLE_PASSWORD, "REJESTRACJA", "Aby zagrać na serwerze, prosimy stwórz konto. \nHasło proszę wpisać poniżej", "Akceptuj", "Anuluj");
172 }
173 return 1;
174}
175
176 stock IsNumeric(const string[])
177{
178 for (new i = 0, j = strlen(string); i < j; i++)
179 {
180 if (string[i] > '9' || string[i] < '0') return 0;
181 }
182 return 1;
183}
184
185
186
187stock bool:IsStrValid(const string[])
188{
189 new num;
190 new len = strlen(string);
191 for(new i; i < len; i++)
192 switch(string[i])
193 {
194 case 'A'..'Z':num++;
195 case 'a'..'z':num++;
196 case '0'..'9':num++;
197 }
198 if(num == len) return true;
199 else return false;
200}
201
202//Timery
203forward SecondUpdate();
204public SecondUpdate()
205{
206 for(new playerid, j = GetPlayerPoolSize(); playerid <= j; playerid++)
207 {
208 if(IsPlayerConnected(playerid))
209 {
210 if(Player[playerid][ShowMouse])
211 {
212 ShowPlayerMouse(playerid, true);
213 }
214 }
215 }
216 return 1;
217}
218
219//STOCKI
220stock PlayerName(playerid)
221{
222 new name[MAX_PLAYER_NAME];
223 GetPlayerName(playerid, name, sizeof name);
224 return name;
225}
226
227forward ShowPlayerMouse(playerid, bool:show);
228public ShowPlayerMouse(playerid, bool:show)
229{
230 if(show)
231 {
232 SelectTextDraw(playerid, -1);
233 Player[playerid][ShowMouse] = true;
234 }
235 else
236 {
237 CancelSelectTextDraw(playerid);
238 Player[playerid][ShowMouse] = false;
239 }
240 return 1;
241}
242
243stock ClearPlayerChat(playerid)
244{
245 for(new i; i < 15; i++)
246 SendClientMessage(playerid, -1, " ");
247 return 1;
248}
249
250stock MySQL_SetUpTables ()
251{
252 mysql_tquery(SQL_ID, " CREATE TABLE IF NOT EXISTS `Players Accounts` ( \
253 `uid` INT(11) NOT NULL AUTO_INCREMENT, \
254 `Login` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
255 `password` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
256 `ID Skina` INT(11) NOT NULL, \
257 `money` INT(11) NOT NULL DEFAULT '0', \
258 `gender` INT(11) NOT NULL, \
259 `age` INT(11) NOT NULL, \
260 `lvl` INT(11) NOT NULL DEFAULT '1', \
261 `admin lv` INT(11) NOT NULL DEFAULT '0', \
262 `lastip` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
263 `lastonline` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, \
264 `createdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, \
265 PRIMARY KEY (`uid`))");
266 return 1;
267}
268
269stock MySQL_Init()
270{
271 mysql_log();
272 SQL_ID = mysql_connect_file("mysql.ini");
273 if(SQL_ID == MYSQL_INVALID_HANDLE ||mysql_errno(SQL_ID) != 0)
274 {
275 print("[MYSQL - BLAD] Nie można było połączyć się z bazą danych! Serwer wyłączony ..!");
276 SendRconCommand("exit");
277 return 0;
278 }
279 print("[MYSQL] Połączenie z bazą danych zostało nawiązane!");
280 return 1;
281}