· 8 years ago · Jan 28, 2018, 01:32 PM
1/*==============================================================================
2
3
4 Login And Register System Script:
5
6 Copyright (C) 2018 Juan Ugalde
7
8 This program is free software: you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation, either version 3 of the License, or (at your
11 option) any later version.
12
13 This program is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16 See the GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License along
19 with this program. If not, see <http://www.gnu.org/licenses/>.
20
21
22==============================================================================*/
23
24
25#include <a_samp> //SA-MP Team
26
27#include <a_mysql> //BlueG Version R41: https://github.com/pBlueG/SA-MP-MySQL/releases/tag/R41
28
29#include <sscanf2> //Y_Less Version 2.8.2: https://github.com/maddinat0r/sscanf/releases/tag/v2.8.2
30
31#include <zcmd> //ZeeX Version 0.3.1 https://github.com/YashasSamaga/I-ZCMD - (Note: Rename izcmd to zcmd and done).
32
33
34/*==============================================================================
35
36 Global Settings
37
38==============================================================================*/
39
40
41#if !defined MAX_LOGGIN_ATTEMPTS
42 #define MAX_LOGGIN_ATTEMPTS (5)
43#endif
44
45
46#if !defined MIN_PASSWORD_LENGTH
47 #define MIN_PASSWORD_LENGTH 5
48#endif
49
50
51#if !defined MAX_PASSWORD_LENGTH
52 #define MAX_PASSWORD_LENGTH 20
53#endif
54
55
56#if !defined MIN_DATE_YEAR
57 #define MIN_DATE_YEAR (1850)
58#endif
59
60
61#if !defined MAX_DATE_YEAR
62 #define MAX_DATE_YEAR (2018)
63#endif
64
65
66#if !defined MAX_REGISTER_TEXTDRAWS
67 #define MAX_REGISTER_TEXTDRAWS (22)
68#endif
69
70
71#if !defined MAX_LOGGIN_TEXTDRAWS
72 #define MAX_LOGGIN_TEXTDRAWS (4)
73#endif
74
75
76#if !defined COLOR_LOGGIN_TD_HOVERING
77 #define COLOR_LOGGIN_TD_HOVERING (0x00C100FF)
78#endif
79
80
81#if !defined COLOR_REGISTER_TD_HOVERING
82 #define COLOR_REGISTER_TD_HOVERING (0xFF000085)
83#endif
84
85
86new MySQL:handle;
87
88
89enum // PLAYER DIALOGS
90{
91 DIALOG_PLAYER_REGISTER = 1,
92 DIALOG_PLAYER_LOGIN,
93 DIALOG_SELECT_GENDER,
94 DIALOG_SELECT_DATE_YEAR,
95 DIALOG_SELECT_DATE_MONTH,
96 DIALOG_SELECT_DATE_DAY,
97 UNUSED_PLAYER_DIALOG
98};
99
100
101new
102 PlayerText:LogginTextDraw[MAX_PLAYERS][MAX_LOGGIN_TEXTDRAWS],
103 PlayerText:RegisterTextDraw[MAX_PLAYERS][MAX_REGISTER_TEXTDRAWS];
104
105
106/*==============================================================================
107
108 Internal functions
109
110==============================================================================*/
111
112
113static ReturnPlayerName(playerid)
114{
115 new string[MAX_PLAYER_NAME];
116 GetPlayerName(playerid, string, MAX_PLAYER_NAME);
117 return string;
118}
119
120
121/*==============================================================================
122
123 Public functions
124
125==============================================================================*/
126
127
128public OnFilterScriptInit()
129{
130 handle = mysql_connect_file("mysql.ini");
131
132 if (mysql_errno(handle) != 0)
133 {
134 print("[mysql]: Failed to connect mysql database.");
135 }
136 else
137 {
138 mysql_query(handle, "CREATE TABLE IF NOT EXISTS `users` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` text NOT NULL, `password` text NOT NULL, `gender` int(1) NOT NULL DEFAULT '1', `birthdate` text NOT NULL, `skin` int(3) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;", false);
139
140 print("[mysql]: Success connect to mysql database.");
141 }
142 return 1;
143}
144
145public OnFilterScriptExit()
146{
147 if (mysql_errno(handle) == 0) mysql_close(handle);
148
149 for (new i, len = GetPlayerPoolSize(); i <= len; i++)
150 {
151 if (!IsPlayerConnected(i)) continue;
152
153 OnPlayerDisconnect(i, 1);
154 }
155 return 1;
156}
157
158public OnPlayerConnect(playerid)
159{
160 new
161 Cache:cache, rows, query[81 +MAX_PLAYER_NAME];
162
163 format(query, sizeof(query), "SELECT * FROM `users` WHERE `username` COLLATE latin1_general_cs = '%q' LIMIT 1", ReturnPlayerName(playerid));
164 cache = mysql_query(handle, query, true);
165
166 cache_get_row_count(rows);
167
168 if (! rows)
169 {
170 if (SetPVarInt(playerid, "RegisterTextDraws", 1))
171 {
172 RegisterTextDraw[playerid][0] = CreatePlayerTextDraw(playerid, 277.400085, 101.399917, "box");
173 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][0], 0.000000, 25.012474);
174 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][0], 512.106445, 0.000000);
175 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][0], 1);
176 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][0], -1);
177 PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][0], 1);
178 PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][0], 133);
179 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][0], 0);
180 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][0], 0);
181 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][0], 255);
182 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][0], 1);
183 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][0], 1);
184 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][0], 0);
185
186 RegisterTextDraw[playerid][1] = CreatePlayerTextDraw(playerid, 144.900054, 98.800018, "");
187 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][1], 0.000000, 0.000000);
188 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][1], 124.000000, 207.772872);
189 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][1], 1);
190 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][1], -1);
191 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][1], 0);
192 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][1], 0);
193 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][1], 153);
194 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][1], 5);
195 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][1], 0);
196 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][1], 0);
197 PlayerTextDrawSetPreviewModel(playerid, RegisterTextDraw[playerid][1], 0);
198 PlayerTextDrawSetPreviewRot(playerid, RegisterTextDraw[playerid][1], 0.000000, 0.000000, 0.000000, 1.000000);
199
200 RegisterTextDraw[playerid][2] = CreatePlayerTextDraw(playerid, 207.199340, 313.302551, "PlayerName");
201 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][2], 0.298000, 1.483332);
202 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][2], -0.649999, 120.680145);
203 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][2], 2);
204 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][2], -1);
205 PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][2], 1);
206 PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][2], 133);
207 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][2], 0);
208 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][2], 1);
209 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][2], 255);
210 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][2], 2);
211 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][2], 1);
212 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][2], 0);
213
214 RegisterTextDraw[playerid][3] = CreatePlayerTextDraw(playerid, 366.000000, 116.000000, "box");
215 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][3], 0.000000, 2.149996);
216 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][3], 504.000000, 20.000000);
217 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][3], 1);
218 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][3], -1);
219 PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][3], 1);
220 PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][3], 252645375);
221 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][3], 0);
222 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][3], 0);
223 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][3], 255);
224 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][3], 1);
225 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][3], 1);
226 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][3], 0);
227 PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][3], true);
228
229 RegisterTextDraw[playerid][4] = CreatePlayerTextDraw(playerid, 320.000000, 118.000000, "Password:");
230 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][4], 0.279000, 1.401664);
231 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][4], 2);
232 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][4], -1);
233 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][4], 0);
234 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][4], 1);
235 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][4], 255);
236 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][4], 2);
237 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][4], 1);
238 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][4], 0);
239
240 RegisterTextDraw[playerid][5] = CreatePlayerTextDraw(playerid, 320.500000, 157.301635, "Gender:");
241 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][5], 0.279000, 1.401664);
242 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][5], 2);
243 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][5], -1);
244 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][5], 0);
245 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][5], 1);
246 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][5], 255);
247 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][5], 2);
248 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][5], 1);
249 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][5], 0);
250
251 RegisterTextDraw[playerid][6] = CreatePlayerTextDraw(playerid, 366.000000, 154.000305, "box");
252 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][6], 0.000000, 2.149996);
253 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][6], 504.000000, 20.000000);
254 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][6], 1);
255 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][6], -1);
256 PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][6], 1);
257 PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][6], 252645375);
258 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][6], 0);
259 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][6], 0);
260 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][6], 255);
261 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][6], 1);
262 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][6], 1);
263 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][6], 0);
264 PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][6], true);
265
266 RegisterTextDraw[playerid][7] = CreatePlayerTextDraw(playerid, 320.000000, 194.503906, "Birth Date:");
267 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][7], 0.279000, 1.401664);
268 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][7], 2);
269 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][7], -1);
270 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][7], 0);
271 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][7], 1);
272 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][7], 255);
273 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][7], 2);
274 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][7], 1);
275 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][7], 0);
276
277 RegisterTextDraw[playerid][8] = CreatePlayerTextDraw(playerid, 366.000000, 192.902679, "box");
278 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][8], 0.000000, 2.149996);
279 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][8], 504.000000, 20.000000);
280 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][8], 1);
281 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][8], -1);
282 PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][8], 1);
283 PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][8], 252645375);
284 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][8], 0);
285 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][8], 0);
286 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][8], 255);
287 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][8], 1);
288 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][8], 1);
289 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][8], 0);
290 PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][8], true);
291
292 RegisterTextDraw[playerid][9] = CreatePlayerTextDraw(playerid, 374.499420, 156.800048, "N/A");
293 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][9], 0.279000, 1.401664);
294 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][9], 1);
295 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][9], -1);
296 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][9], 0);
297 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][9], 1);
298 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][9], 255);
299 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][9], 2);
300 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][9], 1);
301 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][9], 0);
302
303 RegisterTextDraw[playerid][10] = CreatePlayerTextDraw(playerid, 374.000000, 196.283126, "Year");
304 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][10], 0.279000, 1.401664);
305 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][10], 1);
306 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][10], -1);
307 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][10], 0);
308 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][10], 1);
309 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][10], 255);
310 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][10], 2);
311 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][10], 1);
312 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][10], 0);
313
314 RegisterTextDraw[playerid][11] = CreatePlayerTextDraw(playerid, 366.000000, 224.004577, "box");
315 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][11], 0.000000, 2.149996);
316 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][11], 504.000000, 20.000000);
317 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][11], 1);
318 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][11], -1);
319 PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][11], 1);
320 PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][11], 252645375);
321 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][11], 0);
322 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][11], 0);
323 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][11], 255);
324 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][11], 1);
325 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][11], 1);
326 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][11], 0);
327 PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][11], true);
328
329 RegisterTextDraw[playerid][12] = CreatePlayerTextDraw(playerid, 373.799957, 226.783096, "Month");
330 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][12], 0.279000, 1.401664);
331 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][12], 1);
332 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][12], -1);
333 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][12], 0);
334 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][12], 1);
335 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][12], 255);
336 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][12], 2);
337 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][12], 1);
338 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][12], 0);
339
340 RegisterTextDraw[playerid][13] = CreatePlayerTextDraw(playerid, 366.000000, 254.506439, "box");
341 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][13], 0.000000, 2.149996);
342 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][13], 504.000000, 20.000000);
343 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][13], 1);
344 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][13], -1);
345 PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][13], 1);
346 PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][13], 252645375);
347 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][13], 0);
348 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][13], 0);
349 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][13], 255);
350 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][13], 1);
351 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][13], 1);
352 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][13], 0);
353 PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][13], true);
354
355 RegisterTextDraw[playerid][14] = CreatePlayerTextDraw(playerid, 374.200012, 257.683105, "Day");
356 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][14], 0.279000, 1.401664);
357 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][14], 1);
358 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][14], -1);
359 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][14], 0);
360 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][14], 1);
361 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][14], 255);
362 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][14], 2);
363 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][14], 1);
364 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][14], 0);
365
366 RegisterTextDraw[playerid][15] = CreatePlayerTextDraw(playerid, 481.000000, 311.743896, "Sign Up");
367 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][15], 0.229497, 1.214998);
368 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][15], 12.000000, 46.000000);
369 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][15], 2);
370 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][15], -1);
371 PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][15], 1);
372 PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][15], 6815816);
373 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][15], 0);
374 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][15], 1);
375 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][15], 255);
376 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][15], 2);
377 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][15], 1);
378 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][15], 0);
379 PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][15], true);
380
381 RegisterTextDraw[playerid][16] = CreatePlayerTextDraw(playerid, 336.797363, 286.388488, "SKIN:");
382 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][16], 0.279000, 1.401664);
383 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][16], 2);
384 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][16], -1);
385 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][16], 0);
386 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][16], 1);
387 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][16], 255);
388 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][16], 2);
389 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][16], 1);
390 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][16], 0);
391
392 RegisterTextDraw[playerid][17] = CreatePlayerTextDraw(playerid, 378.400756, 286.685028, "ld_beat:left");
393 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][17], 0.000000, 0.000000);
394 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][17], 12.000000, 16.000000);
395 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][17], 1);
396 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][17], -1);
397 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][17], 0);
398 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][17], 0);
399 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][17], 255);
400 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][17], 4);
401 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][17], 0);
402 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][17], 0);
403 PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][17], true);
404
405 RegisterTextDraw[playerid][18] = CreatePlayerTextDraw(playerid, 473.406555, 286.685028, "ld_beat:right");
406 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][18], 0.000000, 0.000000);
407 PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][18], 12.000000, 16.000000);
408 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][18], 1);
409 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][18], -1);
410 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][18], 0);
411 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][18], 0);
412 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][18], 255);
413 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][18], 4);
414 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][18], 0);
415 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][18], 0);
416 PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][18], true);
417
418 RegisterTextDraw[playerid][19] = CreatePlayerTextDraw(playerid, 431.900238, 287.416778, "0");
419 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][19], 0.400000, 1.600000);
420 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][19], 2);
421 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][19], -1);
422 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][19], 0);
423 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][19], 1);
424 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][19], 255);
425 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][19], 2);
426 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][19], 1);
427 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][19], 0);
428
429 RegisterTextDraw[playerid][20] = CreatePlayerTextDraw(playerid, 368.800292, 122.633346, "[]");
430 PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][20], 0.191495, 1.057499);
431 PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][20], 1);
432 PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][20], -1);
433 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][20], 0);
434 PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][20], 1);
435 PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][20], 255);
436 PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][20], 2);
437 PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][20], 1);
438 PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][20], 0);
439 }
440 if (SetPVarInt(playerid, "CurrentPreviewModel", 0))
441 {
442 SetPVarInt(playerid, "Gender", -1);
443
444 SetPVarInt(playerid, "BirthDateDay", -1);
445 SetPVarInt(playerid, "BirthDateYear", -1);
446 SetPVarInt(playerid, "BirthDateMonth", -1);
447 }
448
449 if (GetPVarInt(playerid, "RegisterTextDraws"))
450 {
451 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][2], ReturnPlayerName(playerid));
452
453 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][0]);
454 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][1]);
455 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][2]);
456 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][3]);
457 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][4]);
458 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][5]);
459 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][6]);
460 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][7]);
461 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][8]);
462 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][9]);
463 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][10]);
464 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][11]);
465 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][12]);
466 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][13]);
467 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][14]);
468 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][15]);
469 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][16]);
470 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][17]);
471 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][18]);
472 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][19]);
473
474 SelectTextDraw(playerid, COLOR_REGISTER_TD_HOVERING);
475 }
476 }
477 else
478 {
479 if (SetPVarInt(playerid, "LogginTextDraws", 1))
480 {
481 LogginTextDraw[playerid][0] = CreatePlayerTextDraw(playerid, 254.499908, 103.666770, "");
482 PlayerTextDrawLetterSize(playerid, LogginTextDraw[playerid][0], 0.000000, 0.000000);
483 PlayerTextDrawTextSize(playerid, LogginTextDraw[playerid][0], 131.000000, 190.000000);
484 PlayerTextDrawAlignment(playerid, LogginTextDraw[playerid][0], 1);
485 PlayerTextDrawColor(playerid, LogginTextDraw[playerid][0], -1);
486 PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][0], 0);
487 PlayerTextDrawSetOutline(playerid, LogginTextDraw[playerid][0], 0);
488 PlayerTextDrawBackgroundColor(playerid, LogginTextDraw[playerid][0], 153);
489 PlayerTextDrawFont(playerid, LogginTextDraw[playerid][0], 5);
490 PlayerTextDrawSetProportional(playerid, LogginTextDraw[playerid][0], 0);
491 PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][0], 0);
492 PlayerTextDrawSetPreviewModel(playerid, LogginTextDraw[playerid][0], 1);
493 PlayerTextDrawSetPreviewRot(playerid, LogginTextDraw[playerid][0], 0.000000, 0.000000, 0.000000, 1.000000);
494
495 LogginTextDraw[playerid][1] = CreatePlayerTextDraw(playerid, 320.300109, 303.167022, "PlayerName");
496 PlayerTextDrawLetterSize(playerid, LogginTextDraw[playerid][1], 0.400000, 1.600000);
497 PlayerTextDrawTextSize(playerid, LogginTextDraw[playerid][1], 0.000000, 127.419876);
498 PlayerTextDrawAlignment(playerid, LogginTextDraw[playerid][1], 2);
499 PlayerTextDrawColor(playerid, LogginTextDraw[playerid][1], -1);
500 PlayerTextDrawUseBox(playerid, LogginTextDraw[playerid][1], 1);
501 PlayerTextDrawBoxColor(playerid, LogginTextDraw[playerid][1], 153);
502 PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][1], 0);
503 PlayerTextDrawSetOutline(playerid, LogginTextDraw[playerid][1], 1);
504 PlayerTextDrawBackgroundColor(playerid, LogginTextDraw[playerid][1], 255);
505 PlayerTextDrawFont(playerid, LogginTextDraw[playerid][1], 2);
506 PlayerTextDrawSetProportional(playerid, LogginTextDraw[playerid][1], 1);
507 PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][1], 0);
508
509 LogginTextDraw[playerid][2] = CreatePlayerTextDraw(playerid, 256.899993, 322.599914, "box");
510 PlayerTextDrawLetterSize(playerid, LogginTextDraw[playerid][2], 0.000000, 2.222089);
511 PlayerTextDrawTextSize(playerid, LogginTextDraw[playerid][2], 383.920013, 0.000000);
512 PlayerTextDrawAlignment(playerid, LogginTextDraw[playerid][2], 1);
513 PlayerTextDrawColor(playerid, LogginTextDraw[playerid][2], -1);
514 PlayerTextDrawUseBox(playerid, LogginTextDraw[playerid][2], 1);
515 PlayerTextDrawBoxColor(playerid, LogginTextDraw[playerid][2], 133);
516 PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][2], 0);
517 PlayerTextDrawSetOutline(playerid, LogginTextDraw[playerid][2], 0);
518 PlayerTextDrawBackgroundColor(playerid, LogginTextDraw[playerid][2], 255);
519 PlayerTextDrawFont(playerid, LogginTextDraw[playerid][2], 1);
520 PlayerTextDrawSetProportional(playerid, LogginTextDraw[playerid][2], 1);
521 PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][2], 0);
522
523 LogginTextDraw[playerid][3] = CreatePlayerTextDraw(playerid, 320.799957, 324.949707, "SIGN IN");
524 PlayerTextDrawLetterSize(playerid, LogginTextDraw[playerid][3], 0.305999, 1.290832);
525 PlayerTextDrawTextSize(playerid, LogginTextDraw[playerid][3], 10.000000, 113.000000);
526 PlayerTextDrawAlignment(playerid, LogginTextDraw[playerid][3], 2);
527 PlayerTextDrawColor(playerid, LogginTextDraw[playerid][3], -1);
528 PlayerTextDrawUseBox(playerid, LogginTextDraw[playerid][3], 1);
529 PlayerTextDrawBoxColor(playerid, LogginTextDraw[playerid][3], -2139062017);
530 PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][3], 0);
531 PlayerTextDrawSetOutline(playerid, LogginTextDraw[playerid][3], 1);
532 PlayerTextDrawBackgroundColor(playerid, LogginTextDraw[playerid][3], 255);
533 PlayerTextDrawFont(playerid, LogginTextDraw[playerid][3], 2);
534 PlayerTextDrawSetProportional(playerid, LogginTextDraw[playerid][3], 1);
535 PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][3], 0);
536 PlayerTextDrawSetSelectable(playerid, LogginTextDraw[playerid][3], true);
537 }
538
539 new password[MAX_PASSWORD_LENGTH +1], birthdate[11 +1], gender, previewmodel;
540
541 cache_get_value_name(0, "password", password);
542 cache_get_value_name(0, "birthdate", birthdate);
543
544 cache_get_value_name_int(0, "gender", gender);
545 cache_get_value_name_int(0, "skin", previewmodel);
546
547 new day, month, year;
548 sscanf(birthdate, "p</>iii", day, month, year);
549
550 SetPVarInt(playerid, "Gender", gender);
551
552 SetPVarInt(playerid, "BirthDateDay", day);
553 SetPVarInt(playerid, "BirthDateMonth", month);
554 SetPVarInt(playerid, "BirthDateYear", year);
555
556 SetPVarString(playerid, "Password", password);
557
558 SetPVarInt(playerid, "LoggedInPlayer", -1);
559 SetPVarInt(playerid, "LogginAttempts", 0);
560
561 PlayerTextDrawSetPreviewModel(playerid, LogginTextDraw[playerid][0], previewmodel);
562 PlayerTextDrawSetString(playerid, LogginTextDraw[playerid][1], ReturnPlayerName(playerid));
563
564 for (new i; i < MAX_LOGGIN_TEXTDRAWS; i++)
565 {
566 PlayerTextDrawShow(playerid, LogginTextDraw[playerid][i]);
567 }
568
569 SelectTextDraw(playerid, COLOR_LOGGIN_TD_HOVERING);
570 }
571
572 cache_delete(cache);
573
574 return 1;
575}
576
577public OnPlayerDisconnect(playerid, reason)
578{
579 if (GetPVarInt(playerid, "RegisterTextDraws"))
580 {
581 for(new i; i < MAX_REGISTER_TEXTDRAWS; i++)
582 {
583 PlayerTextDrawHide(playerid, RegisterTextDraw[playerid][i]);
584 PlayerTextDrawDestroy(playerid, RegisterTextDraw[playerid][i]);
585 }
586 }
587 if (GetPVarInt(playerid, "LogginTextDraws"))
588 {
589 for(new i; i < MAX_LOGGIN_TEXTDRAWS; i++)
590 {
591 PlayerTextDrawHide(playerid, LogginTextDraw[playerid][i]);
592 PlayerTextDrawDestroy(playerid, LogginTextDraw[playerid][i]);
593 }
594 }
595 SetPVarString(playerid, "Password", EOS);
596
597 SetPVarInt(playerid, "Gender", -1);
598
599 SetPVarInt(playerid, "BirthDateDay", -1);
600 SetPVarInt(playerid, "BirthDateMonth", -1);
601 SetPVarInt(playerid, "BirthDateYear", -1);
602
603 SetPVarInt(playerid, "LogginAttempts", -1);
604 SetPVarInt(playerid, "CurrentPreviewModel", -1);
605
606 SetPVarInt(playerid, "RegisterTextDraws", -1);
607 SetPVarInt(playerid, "LogginTextDraws", -1);
608
609 SetPVarInt(playerid, "LoggedInPlayer", -1);
610 SetPVarInt(playerid, "LogginAttempts", 0);
611
612 return 1;
613}
614
615public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
616{
617 switch(dialogid)
618 {
619 case DIALOG_PLAYER_REGISTER:
620 {
621 if (response == 1)
622 {
623 if (!(MIN_PASSWORD_LENGTH <= strlen(inputtext) <= MAX_PASSWORD_LENGTH))
624 {
625 new string[118];
626
627 format(string, sizeof(string), "{FFFFFF}Enter your password then hit \"Submit\".\n\n \
628 {DC143C}ERROR: Invalid password length, must be (b/w: %d/%d)", MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH);
629
630 ShowPlayerDialog(playerid, DIALOG_PLAYER_REGISTER, DIALOG_STYLE_INPUT, "{FFFF66}Register: {FFFFFF}Password", string, "Submit", "Close");
631 }
632 else
633 {
634 new string[20 +1];
635 for (new i, len = strlen(inputtext); i < len; i++)
636 {
637 if (i < 10) strcat(string, "[]");
638 }
639
640 if (SetPVarString(playerid, "Password", inputtext))
641 {
642 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][20], string);
643 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][20]);
644 }
645 }
646 }
647 }
648 case DIALOG_PLAYER_LOGIN:
649 {
650 if (response == 1)
651 {
652 SetPVarInt(playerid, "LogginAttempts", (GetPVarInt(playerid, "LogginAttempts") +1));
653
654 if (!(MIN_PASSWORD_LENGTH <= strlen(inputtext) <= MAX_PASSWORD_LENGTH))
655 {
656 if (GetPVarInt(playerid, "LogginAttempts") == MAX_LOGGIN_ATTEMPTS) return Kick(playerid);
657
658 new string[144];
659
660 format(string, sizeof(string), "ERROR: Invalid password length, must be (correct length: %d/%d)", MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH);
661 SendClientMessage(playerid, 0xDC143CFF, string);
662
663 format(string, sizeof(string), "{FFFFFF}Enter your password then hit \"Submit\"\n\n \
664 Error: Insert your correct password{DC143C}(attempts: %d/%d)", GetPVarInt(playerid, "LogginAttempts"), MAX_LOGGIN_ATTEMPTS);
665
666 ShowPlayerDialog(playerid, DIALOG_PLAYER_LOGIN, DIALOG_STYLE_INPUT, "{FFFF66}Login In: {FFFFFF}Insert your password", string, "Submit", "Close");
667
668 PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
669 }
670 else
671 {
672 new password[MAX_PASSWORD_LENGTH +1];
673 GetPVarString(playerid, "Password", password, MAX_PASSWORD_LENGTH);
674
675 if (!strcmp(inputtext, password, false))
676 {
677 if (GetPVarInt(playerid, "LogginTextDraws"))
678 {
679 CancelSelectTextDraw(playerid);
680
681 for (new i; i < MAX_LOGGIN_TEXTDRAWS; i++)
682 {
683 PlayerTextDrawHide(playerid, LogginTextDraw[playerid][i]);
684 PlayerTextDrawDestroy(playerid, LogginTextDraw[playerid][i]);
685 }
686 SetPVarInt(playerid, "LogginTextDraws", -1);
687
688 if (SetPVarInt(playerid, "LoggedInPlayer", 1))
689 {
690 SendClientMessage(playerid, 0x00FF00FF, "Welcome Back!");
691 }
692 }
693 }
694 else
695 {
696 if (GetPVarInt(playerid, "LogginAttempts") == MAX_LOGGIN_ATTEMPTS) return Kick(playerid);
697
698 new string[133];
699
700 format(string, sizeof(string), "{FFFFFF}Enter your password then hit \"Submit\"\n\n \
701 Error: Insert your correct password{DC143C}(attempts: %d/%d)", GetPVarInt(playerid, "LogginAttempts"), MAX_LOGGIN_ATTEMPTS);
702
703 ShowPlayerDialog(playerid, DIALOG_PLAYER_LOGIN, DIALOG_STYLE_INPUT, "{FFFF66}Login In: {FFFFFF}Insert your password", string, "Submit", "Close");
704
705 PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
706 }
707 }
708 }
709 }
710 case DIALOG_SELECT_GENDER:
711 {
712 if (response == 1)
713 {
714 if (SetPVarInt(playerid, "Gender", (listitem +1)))
715 {
716 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][9], (listitem > 0) ? ("Female"):("Male"));
717 }
718 }
719 }
720 case DIALOG_SELECT_DATE_DAY:
721 {
722 if (response == 1)
723 {
724 if (GetPVarInt(playerid, "BirthDateMonth") == -1)
725 {
726 ShowPlayerDialog(playerid, UNUSED_PLAYER_DIALOG, DIALOG_STYLE_MSGBOX, "{FFFF66}Register: {DC143C}Error:", "{FFFFFF}- Please; first select a month for your birth date", "Close", "");
727
728 PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
729 }
730 else
731 {
732 if (SetPVarInt(playerid, "BirthDateDay", (listitem +1)))
733 {
734 new string[2 +1];
735
736 format(string, sizeof(string), "%i", (listitem +1));
737 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][14], string);
738 }
739 }
740 }
741 }
742 case DIALOG_SELECT_DATE_MONTH:
743 {
744 if (response == 1)
745 {
746 new month[15];
747
748 switch (listitem)
749 {
750 case 0: month = "January";
751 case 1: month = "February";
752 case 2: month = "March";
753 case 3: month = "April";
754 case 4: month = "May";
755 case 5: month = "June";
756 case 6: month = "July";
757 case 7: month = "August";
758 case 8: month = "September";
759 case 9: month = "October";
760 case 10: month = "November";
761 case 11: month = "December";
762
763 default: month = "Unknown: ERROR";
764 }
765
766 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][12], month);
767
768 SetPVarInt(playerid, "BirthDateMonth", (listitem +1));
769 }
770 }
771 case DIALOG_SELECT_DATE_YEAR:
772 {
773 if (response == 1)
774 {
775 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][14], "Day");
776 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][12], "Month");
777
778 SetPVarInt(playerid, "BirthDateDay", -1);
779 SetPVarInt(playerid, "BirthDateMonth", -1);
780
781 new string[5];
782
783 format(string, sizeof(string), "%i", (MAX_DATE_YEAR -listitem));
784 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][10], string);
785
786 SetPVarInt(playerid, "BirthDateYear", (MAX_DATE_YEAR -listitem));
787 }
788 }
789 }
790 return 1;
791}
792
793public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
794{
795 if (playertextid == RegisterTextDraw[playerid][3])
796 {
797 ShowPlayerDialog(playerid, DIALOG_PLAYER_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFF66}Register: {FFFFFF}Password", "{FFFFFF}Enter your password then hit \"Submit\"", "Submit", "Close");
798 }
799
800 else if (playertextid == RegisterTextDraw[playerid][6])
801 {
802 ShowPlayerDialog(playerid, DIALOG_SELECT_GENDER, DIALOG_STYLE_LIST, "{FFFF66}Register: {FFFFFF}Gender", "{FFFFFF}Male\nFemale\n", "Select", "Close");
803 }
804
805 else if (playertextid == RegisterTextDraw[playerid][8])
806 {
807 new string[7 *(MAX_DATE_YEAR -MIN_DATE_YEAR)], year[7];
808
809 for (new i = MAX_DATE_YEAR; i >= MIN_DATE_YEAR; i--)
810 {
811 format(year, sizeof(year), "%i\n", i);
812 strcat(string, year, sizeof(string));
813 }
814 ShowPlayerDialog(playerid, DIALOG_SELECT_DATE_YEAR, DIALOG_STYLE_LIST, "{FFFF66}Register: {FFFFFF}Birth Date: Year", string, "Select", "Close");
815 }
816
817 else if (playertextid == RegisterTextDraw[playerid][11])
818 {
819 ShowPlayerDialog(playerid, DIALOG_SELECT_DATE_MONTH, DIALOG_STYLE_LIST, "{FFFF66}Register: {FFFFFF}Birth Date: Month", "{FFFFFF}January\nFebruary\nMarch\nApril\nMay\nJune\nJuly\nAugust\nSeptember\nOctober\nNovember\nDecember", "Select", "Close");
820 }
821
822 else if (playertextid == RegisterTextDraw[playerid][13])
823 {
824 new max_days_for_month;
825
826 switch (GetPVarInt(playerid, "BirthDateMonth"))
827 {
828 case 1: max_days_for_month = 31;
829 case 3: max_days_for_month = 31;
830 case 4: max_days_for_month = 30;
831 case 5: max_days_for_month = 31;
832 case 6: max_days_for_month = 30;
833 case 7: max_days_for_month = 31;
834 case 8: max_days_for_month = 31;
835 case 9: max_days_for_month = 30;
836 case 10: max_days_for_month = 31;
837 case 11: max_days_for_month = 31;
838 case 12: max_days_for_month = 31;
839
840 case 2: //February
841 {
842 if ((GetPVarInt(playerid, "BirthDateYear") %4) == 0) max_days_for_month = 29;
843 else max_days_for_month = 28;
844 }
845
846 default: max_days_for_month = 30;
847 }
848
849 new string[5 *31], days[5];
850
851 for (new i = 1; i <= max_days_for_month; i++)
852 {
853 format(days, sizeof(days), "%i\n", i);
854 strcat(string, days, sizeof(string));
855 }
856 ShowPlayerDialog(playerid, DIALOG_SELECT_DATE_DAY, DIALOG_STYLE_LIST, "{FFFF66}Register: {FFFFFF}Birth Date: Day", string, "Select", "Close");
857 }
858
859 else if (playertextid == RegisterTextDraw[playerid][15])
860 {
861 new Gender = GetPVarInt(playerid, "Gender");
862 new BirthDay = GetPVarInt(playerid, "BirthDateDay");
863 new BirthMonth = GetPVarInt(playerid, "BirthDateMonth");
864 new BirthYear = GetPVarInt(playerid, "BirthDateYear");
865
866 new password[MAX_PASSWORD_LENGTH +1];
867 GetPVarString(playerid, "Password", password, MAX_PASSWORD_LENGTH);
868
869 if (!(MIN_PASSWORD_LENGTH <= strlen(password) <= MAX_PASSWORD_LENGTH) || Gender < 0 || BirthDay < 0 || BirthMonth < 0 || BirthYear < 0)
870 {
871 new string[234 +1];
872
873 if (!(MIN_PASSWORD_LENGTH <= strlen(password) <= MAX_PASSWORD_LENGTH))
874 {
875 strcat(string, "{FFFFFF}- Please enter a password\n");
876 }
877 if (Gender < 0) strcat(string, "{FFFFFF}- Please select a gender\n");
878 if (BirthYear < 0) strcat(string, "{FFFFFF}- Please select a year four your birth date\n");
879 if (BirthMonth < 0) strcat(string, "{FFFFFF}- Please select a month four your birth date\n");
880 if (BirthDay < 0) strcat(string, "{FFFFFF}- Please select a day four your birth date\n");
881
882 ShowPlayerDialog(playerid, UNUSED_PLAYER_DIALOG, DIALOG_STYLE_MSGBOX, "{FFFF66}Register: {DC143C}Error:", string, "Close", "");
883
884 PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
885 }
886 else
887 {
888 if (SetPVarInt(playerid, "RegisterTextDraws", -1))
889 {
890 CancelSelectTextDraw(playerid);
891
892 for (new i; i < MAX_REGISTER_TEXTDRAWS; i++)
893 {
894 PlayerTextDrawHide(playerid, RegisterTextDraw[playerid][i]);
895 PlayerTextDrawDestroy(playerid, RegisterTextDraw[playerid][i]);
896 }
897
898 new query[256 +1];
899 format(query, sizeof(query), "INSERT INTO `users`(`username`, `password`, `gender`, `birthdate`, `skin`) VALUES ('%q', '%q', %i, '%i/%i/%i', %i)", ReturnPlayerName(playerid), password, Gender, BirthDay, BirthMonth, BirthYear, GetPVarInt(playerid, "CurrentPreviewModel"));
900 mysql_query(handle, query, false);
901 }
902 }
903 }
904
905 else if (playertextid == RegisterTextDraw[playerid][17])
906 {
907 new
908 current = GetPVarInt(playerid, "CurrentPreviewModel");
909
910 if (current <= 0)
911 {
912 PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
913 }
914 else
915 {
916 SetPVarInt(playerid, "CurrentPreviewModel", (current -1));
917
918 PlayerTextDrawHide(playerid, RegisterTextDraw[playerid][1]);
919 PlayerTextDrawSetPreviewModel(playerid, RegisterTextDraw[playerid][1], (current -1));
920
921 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][1]);
922
923 new string[3 +1];
924 format(string, sizeof(string), "%i", (current -1));
925 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][19], string);
926 }
927 }
928
929 else if (playertextid == RegisterTextDraw[playerid][18])
930 {
931 new
932 current = GetPVarInt(playerid, "CurrentPreviewModel");
933
934 if (current > 310)
935 {
936 PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
937 }
938 else
939 {
940 SetPVarInt(playerid, "CurrentPreviewModel", (current +1));
941
942 PlayerTextDrawHide(playerid, RegisterTextDraw[playerid][1]);
943 PlayerTextDrawSetPreviewModel(playerid, RegisterTextDraw[playerid][1], (current +1));
944
945 PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][1]);
946
947 new string[3 +1];
948 format(string, sizeof(string), "%i", (current +1));
949 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][19], string);
950 }
951 }
952 else if (playertextid == LogginTextDraw[playerid][3])
953 {
954 ShowPlayerDialog(playerid, DIALOG_PLAYER_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFF66}Login In: {FFFFFF}Insert your password", "{FFFFFF}Enter your password then hit \"Submit\"", "Submit", "Close");
955 }
956 return 1;
957}
958
959/*==============================================================================
960
961 Util Commands:
962
963==============================================================================*/
964
965
966CMD:changepassword(playerid, params[])
967{
968 if (GetPVarInt(playerid, "LoggedInPlayer") < 0) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: You are not registered or logged in.");
969
970 new password[MAX_PASSWORD_LENGTH +1];
971
972 if (sscanf(params, "s["#MAX_PASSWORD_LENGTH"]", password)) return SendClientMessage(playerid, -1, "* USAGE: /changepassword <new password>");
973
974 if (!(MIN_PASSWORD_LENGTH <= strlen(password) <= MAX_PASSWORD_LENGTH)) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: Invalid password length, must be (correct length: "#MIN_PASSWORD_LENGTH"/"#MAX_PASSWORD_LENGTH")");
975
976 new current_password[MAX_PASSWORD_LENGTH +1];
977 GetPVarString(playerid, "Password", current_password, MAX_PASSWORD_LENGTH);
978
979 if (!strcmp(current_password, password)) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: Your current password and the new password are the same.");
980
981 new query[109 +MAX_PASSWORD_LENGTH];
982
983 format(query, sizeof(query), "UPDATE `users` SET `password` = '%q' WHERE `username` COLLATE latin1_general_cs = '%q'", password, ReturnPlayerName(playerid));
984 mysql_query(handle, query, false);
985
986 new message[58 +MAX_PASSWORD_LENGTH];
987
988 format(message, sizeof(message), "ACCOUNT: You have changed your password to {FFFFFF}\"%s\"", password);
989 SendClientMessage(playerid, 0x00FF00FF, message);
990
991 SetPVarString(playerid, "Password", password);
992
993 return 1;
994}
995
996CMD:changegender(playerid, params[])
997{
998 if (GetPVarInt(playerid, "LoggedInPlayer") < 0) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: You are not registered or logged in.");
999
1000 new gender[6 +1];
1001 if (sscanf(params, "s[7]", gender)) return SendClientMessage(playerid, -1, "USAGE: /changegender <male/female>");
1002
1003 new genderid;
1004
1005 if (!strcmp(gender, "Male", true)) genderid = 1;
1006 else if (!strcmp(gender, "Female", true)) genderid = 2;
1007 else genderid = -1;
1008
1009 if (genderid < 0) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: Insert a correct gender (correct gender: Male/Female)");
1010
1011 if (GetPVarInt(playerid, "Gender") == genderid) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: Current gender is already select gender.");
1012
1013 new query[114 +MAX_PLAYER_NAME];
1014
1015 format(query, sizeof(query), "UPDATE `users` SET `gender` = %i WHERE `username` COLLATE latin1_general_cs = '%q'", genderid, ReturnPlayerName(playerid));
1016 mysql_query(handle, query, false);
1017
1018 new message[62];
1019
1020 format(message, sizeof(query), "ACCOUNT: You have changed your gender to {FFFFFF}\"%s\"", (genderid > 1) ? ("Female"):("Male"));
1021 SendClientMessage(playerid, 0x00FF00FF, message);
1022
1023 SetPVarInt(playerid, "Gender", genderid);
1024
1025 return 1;
1026}