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