· 8 years ago · Dec 10, 2017, 07:16 AM
1#define FILTERSCRIPT
2#include <a_samp>
3#include <a_mysql>
4#include <sscanf2>
5//========================= [MySQL Database Settings] ==========================
6
7#define mysql_host ""//the IP of the host, should be displayed when created a database
8#define mysql_user ""//database username
9#define mysql_password ""//database password
10#define mysql_database ""//database name
11//========================= [MySQL Database Settings] ==========================
12
13//============================ [Colors] ========================================
14#define white 0xFFFFFFFF
15#define blue 0x0073FFFF
16#define liblue 0x00FFFFFF
17#define green 0x00E228FF
18#define ligreen 0x00FF28FF
19#define green2 0x9BFF00FF
20#define limegreen 0x00FF96FF
21#define pink 0xFFAFD7FF
22#define purple 0xDB00AFFF
23#define yellow 0xF5FF00FF
24#define orange 0xFFA000FF
25#define red 0xFF0000FF
26//============================ [Colors] ========================================
27
28
29//============================ [Hex] ===========================================
30#define cwhite "{FFFFFF}"
31#define cblue "{00B9FF}"
32#define cliblue "{00FFFA}"
33#define cgreen "{05E200}"
34#define cligreen "{05FF00}"
35#define cgreen2 "{A5FF00}"
36#define cpink "{FFA4C3}"
37#define cpurple "{E500C3}"
38#define cyellow "{FFFA00}"
39#define cyellow2 "{FFFF11}"
40#define corange "{FF9600}"
41#define cred "{FF0000}"
42//============================ [Hex] ===========================================
43
44#define Logindialog 1
45#define Regdialog 2
46#define Reginfo 3
47enum pInfo
48{
49 AccID,
50 Username[24],
51 Password[129],
52 Ip[16],
53 Money,
54 Score,
55 Kills,
56 Deaths,
57 Logged,
58 FailedLogins,
59 FirstSpawn,
60 Donator,
61 Admin,
62 Plantedbombs,
63 Defusedbombs,
64 Banned,
65 Pending
66};
67native WP_Hash(buffer[], len, const str[]);
68new PlayerInfo[MAX_PLAYERS][pInfo];
69new Query[450];
70public OnFilterScriptInit()
71{
72 mysql_debug(1);
73 mysql_connect(mysql_host,mysql_user,mysql_database,mysql_password);
74 mysql_query(
75 "CREATE TABLE IF NOT EXISTS `Accounts` ("\
76 "`AccID` int(10) NOT NULL AUTO_INCREMENT,"\
77 "`Username` varchar(24) NOT NULL,"\
78 "`Password` varchar(64) NOT NULL,"\
79 "`IP` varchar(16) NULL,"\
80 "`Money` int(15) NULL,"\
81 "`Score` int(15) NULL,"\
82 "`Kills` int(15) NULL,"\
83 "`Deaths` int(15) NULL,"\
84 "`Donator` int(15) NULL,"\
85 "`Admin` int(15) NULL,"\
86 "`Plantedbombs` int(15) NULL,"\
87 "`Defusedbombs` int(15) NULL,"\
88 "`Banned` int(15) NULL,"\
89 "`Pending` int(15) NULL,"\
90 "PRIMARY KEY (`AccID`)"\
91 ") ENGINE=InnoDB DEFAULT CHARSET=latin1;");
92 if(mysql_ping() > -1) return print("MySQL connection to database succeeded!");
93
94 else print("MySQL connection to database failed. Please check your database settings!");
95 return 1;
96}
97
98public OnFilterScriptExit()
99{
100 print("Mysql Script Unloaded");
101 return 1;
102}
103
104public OnPlayerConnect(playerid)
105{
106 new string[256];
107 format(Query,sizeof(Query),"SELECT Username FROM `Accounts` WHERE `Username` = '%s'",GetPName(playerid));
108 mysql_query(Query);
109 mysql_store_result();
110 if(mysql_num_rows() != 0)
111 {
112 format(Query,sizeof Query,"SELECT IP FROM `Accounts` WHERE `Username` = '%s' AND `IP` = '%s'",GetPName(playerid),GetIP(playerid));
113 mysql_query(Query);
114 mysql_store_result();
115 if(mysql_num_rows() != 0)
116 {
117 LoadStats(playerid);
118 PlayerInfo[playerid][Logged] = 1;
119 PlaySound(playerid,1057);
120 SendClientMessage(playerid,green,"» You have been automatically logged in! Welcome back!");
121 }
122 else
123 {
124 format(string,sizeof(string),""cblue"Hey, "cred"%s"cblue"! \nYour account is "cgreen"registered"cblue".\nPlease enter the "cred"password"cblue" to log in!",GetPName(playerid));
125 ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login","");
126 }
127 }
128 else
129 {
130 format(string,sizeof(string),""cblue"Hey, "cred"%s"cblue"! \nYour account is "cred"not registered"cblue". \nPlease "cgreen"register"cblue" to continue!",GetPName(playerid));
131 ShowPlayerDialog(playerid,Regdialog,DIALOG_STYLE_INPUT,""cpurple"Register",string,"Register","");
132 }
133 mysql_free_result();
134 PlayerInfo[playerid][FirstSpawn] = 1;
135 return 1;
136}
137
138public OnPlayerDisconnect(playerid, reason)
139{
140 PlayerInfo[playerid][Donator] = 20;
141 if(PlayerInfo[playerid][Logged] == 1) return SaveStats(playerid);
142 PlayerInfo[playerid][FailedLogins] = 0;
143 return 1;
144}
145
146public OnPlayerSpawn(playerid)
147{
148 if(PlayerInfo[playerid][FirstSpawn] == 1 && PlayerInfo[playerid][Logged] == 1)
149 {
150 GivePlayerMoney(playerid,PlayerInfo[playerid][Money]);
151 SetPlayerScore(playerid,PlayerInfo[playerid][Score]);
152 format(PlayerInfo[playerid][Ip],16,"%s",GetIP(playerid));
153 PlayerInfo[playerid][FirstSpawn] = 0;
154 }
155 return 1;
156}
157
158public OnPlayerDeath(playerid, killerid, reason)
159{
160 PlayerInfo[killerid][Kills]++;
161 PlayerInfo[playerid][Deaths]++;
162 return 1;
163}
164
165public OnVehicleSpawn(vehicleid)
166{
167 return 1;
168}
169
170public OnVehicleDeath(vehicleid, killerid)
171{
172 return 1;
173}
174
175public OnPlayerText(playerid, text[])
176{
177 return 1;
178}
179
180public OnPlayerCommandText(playerid, cmdtext[])
181{
182 return 0;
183}
184
185public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
186{
187 return 1;
188}
189
190public OnPlayerExitVehicle(playerid, vehicleid)
191{
192 return 1;
193}
194
195public OnPlayerStateChange(playerid, newstate, oldstate)
196{
197 return 1;
198}
199
200public OnPlayerEnterCheckpoint(playerid)
201{
202 return 1;
203}
204
205public OnPlayerLeaveCheckpoint(playerid)
206{
207 return 1;
208}
209
210public OnPlayerEnterRaceCheckpoint(playerid)
211{
212 return 1;
213}
214
215public OnPlayerLeaveRaceCheckpoint(playerid)
216{
217 return 1;
218}
219
220public OnRconCommand(cmd[])
221{
222 return 1;
223}
224
225public OnPlayerRequestSpawn(playerid)
226{
227 return 1;
228}
229
230public OnObjectMoved(objectid)
231{
232 return 1;
233}
234
235public OnPlayerObjectMoved(playerid, objectid)
236{
237 return 1;
238}
239
240public OnPlayerPickUpPickup(playerid, pickupid)
241{
242 return 1;
243}
244
245public OnVehicleMod(playerid, vehicleid, componentid)
246{
247 return 1;
248}
249
250public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
251{
252 return 1;
253}
254
255public OnVehicleRespray(playerid, vehicleid, color1, color2)
256{
257 return 1;
258}
259
260public OnPlayerSelectedMenuRow(playerid, row)
261{
262 return 1;
263}
264
265public OnPlayerExitedMenu(playerid)
266{
267 return 1;
268}
269
270public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
271{
272 return 1;
273}
274
275public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
276{
277 return 1;
278}
279
280public OnRconLoginAttempt(ip[], password[], success)
281{
282 return 1;
283}
284
285public OnPlayerUpdate(playerid)
286{
287 return 1;
288}
289
290public OnPlayerStreamIn(playerid, forplayerid)
291{
292 return 1;
293}
294
295public OnPlayerStreamOut(playerid, forplayerid)
296{
297 return 1;
298}
299
300public OnVehicleStreamIn(vehicleid, forplayerid)
301{
302 return 1;
303}
304
305public OnVehicleStreamOut(vehicleid, forplayerid)
306{
307 return 1;
308}
309
310public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
311{
312 switch(dialogid)
313 {
314 case Regdialog:
315 {
316 new string[220];
317 if(strlen(inputtext) == 0)
318 {
319 ShowPlayerDialog(playerid,Regdialog,DIALOG_STYLE_INPUT,""cblue"Register - "cyellow"Enter your password",""cblue"You are about to register a "cyellow"new account"cblue"! \nPlease choose the "corange"password"cblue" for it! \n","Register!","");
320 SendClientMessage(playerid,red,"Please input a password!");
321 }
322 else
323 {
324 new EscapedText[64],buffer[129];
325 mysql_real_escape_string(inputtext, EscapedText);
326 WP_Hash(buffer,sizeof(buffer),EscapedText);
327 format(Query,sizeof(Query),"INSERT INTO `Accounts` (Username,Password,IP,Money,Score,Kills,Deaths,Donator,Admin,Plantedbombs,Defusedbombs,Banned,Pending) VALUES('%s','%s','%s','0','0','0','0','0','0','0','0','0','0')",GetPName(playerid),buffer,GetIP(playerid));
328 mysql_query(Query);
329 mysql_store_result();
330 SendClientMessage(playerid,green2,"You have been successfully registered!");
331 format(string,sizeof(string),""cgreen"You have been successfully registered! \n"cwhite"» Your username: "cblue"%s \n"cwhite"» Your password: "cblue"%s \n"cwhite"» Your account ID: "cblue"%i ",GetPName(playerid),inputtext,mysql_insert_id());
332 ShowPlayerDialog(playerid,Reginfo,0,"Registered!",string,"Ok","");
333 mysql_free_result();
334 LoadStats(playerid);
335 PlayerInfo[playerid][Logged] = 1;
336 GivePlayerMoney(playerid,5000);
337 SetPlayerScore(playerid,1);
338 PlaySound(playerid,1083);
339 }
340 }
341 case Logindialog:
342 {
343 if(!response) return Kick(playerid);
344 if(strlen(inputtext) == 0)
345 {
346 new string[220];
347 format(string,sizeof(string),""cblue"Hey, "cred"%s"cblue"! \nYour account is "cgreen"registered"cblue".\nPlease enter the "cred"password"cblue" to log in!",GetPName(playerid));
348 ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login","");
349 SendClientMessage(playerid,red,"Please input a password!");
350 }
351 else
352 {
353 LoginPlayer(playerid,inputtext);
354 }
355 }
356 }
357 return 1;
358}
359
360public OnPlayerClickPlayer(playerid, clickedplayerid, source)
361{
362 return 1;
363}
364GetPName(playerid)
365{
366 new pname[24];
367 GetPlayerName(playerid,pname,24);
368 return pname;
369}
370GetIP(playerid)
371{
372 new ip[16];
373 GetPlayerIp(playerid,ip,16);
374 return ip;
375}
376stock PlaySound(playerid,soundid)
377{
378 new Float:p[3];
379 GetPlayerPos(playerid, p[0], p[1], p[2]);
380 PlayerPlaySound(playerid, soundid, p[0], p[1], p[2]);
381 return 1;
382}
383stock LoadStats(playerid)
384{
385 format(Query, sizeof(Query), "SELECT * FROM `Accounts` WHERE `Username` = '%s'", GetPName(playerid));
386 mysql_query(Query);
387 mysql_store_result();
388 mysql_fetch_row_format(Query, "|");
389 sscanf(Query, "e<p<|>is[24]s[129]s[16]iiiiiiiiii>", PlayerInfo[playerid]);//Remember to update this if you are going to add more info!
390 mysql_free_result();
391 return 1;
392}
393stock SaveStats(playerid)
394{
395 format(Query,sizeof(Query),"UPDATE `Accounts` SET `IP` = '%s', `Money` = '%i', `Score` = '%i', `Kills` = '%i', `Deaths` = '%i', `Donator` = '%i', `Admin` = '%i', `Plantedbombs` = '%i', `Defusedbombs` = '%i', `Banned` = '%i', `Pending` = '%i' WHERE `Username` = '%s'",
396 PlayerInfo[playerid][Ip],
397 GetPlayerMoney(playerid),
398 GetPlayerScore(playerid),
399 PlayerInfo[playerid][Kills],
400 PlayerInfo[playerid][Deaths],
401 GetPName(playerid));
402
403 mysql_query(Query);
404 mysql_free_result();
405 return 1;
406}
407stock LoginPlayer(playerid,const password[])
408{
409 new string[165], buffer[129];
410 WP_Hash(buffer,sizeof(buffer),password);
411 format(Query,sizeof(Query),"SELECT Password FROM `Accounts` WHERE `Username` = '%s' AND `Password` = '%s'",GetPName(playerid),buffer);
412 mysql_query(Query);
413 mysql_store_result();
414 if(mysql_num_rows() != 0)
415 {
416 format(string,sizeof(string),"You have been logged in! Welcome back, "cred"%s"cgreen"!",GetPName(playerid));
417 SendClientMessage(playerid,green,string);
418 LoadStats(playerid);
419 PlayerInfo[playerid][Logged] = 1;
420 PlaySound(playerid,1057);
421 }
422 else
423 {
424 PlayerInfo[playerid][FailedLogins]++;
425 format(string,sizeof(string),""cred"Attempts left: "corange"%i \n"cblue"Hey, "cred"%s"cblue"! \nYour account is "cgreen"registered"cblue".\nPlease enter the "cred"password"cblue" to log in!",3-PlayerInfo[playerid][FailedLogins],GetPName(playerid));
426 ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login","");
427 PlaySound(playerid,1055);
428 if(PlayerInfo[playerid][FailedLogins] == 3)
429 {
430 format(string,sizeof(string),"%s has been automatically kicked as he entered the wrong login password 3 times in a row",GetPName(playerid));
431 SendClientMessageToAll(red,string);
432 SendClientMessage(playerid,red,"*** You have been kicked as you have entered the wrong login password 3 times!");
433 PlaySound(playerid,1141);
434 Kick(playerid);
435 }
436 }
437 mysql_free_result();
438 return 1;
439}