View difference between Paste ID: K1VZMEnD and Cz6gtQ8X
SHOW: | | - or go back to the newest paste.
1
// Register & Login system based on MySQL By maor (make_belive) from fxp.co.il
2
//#define FILTERSCRIPT
3
4
#include <a_samp>
5
#include <a_mysql>
6
#include <colors>
7
#include <foreach>
8
9
// פה תכניסו את פרטי ההתחברות של הMySQL שלכם
10
#define mysql_host "localhost" 
11
#define mysql_user "root"
12
#define mysql_password ""
13
#define mysql_database "sa:mp"
14
15
#define DIALOG_LOGIN 1
16
#define DIALOG_REGISTER 2
17
#define TRYS_BEFORE_KICK 5 // כמה פעמים השחקן יוכל להכניס ססמא שגויה לפני שהוא יקבל קיק, תשנו את זה למה שאתם רוצים
18
new cHandle;
19
new xstring[128];
20
enum pData
21
{
22
	pName,
23
	pRegisterDate,
24
	pIP,
25
	pPass
26
};
27
new Data[MAX_PLAYERS][pData];
28
new WrongPass[MAX_PLAYERS];
29
public OnFilterScriptInit()
30
{
31
	print("\n--------------------------------------");
32
	print(" MySQL Register & Login System, By Maor (make_belive)");
33
	print(" From FxP.co.il");
34
	print("--------------------------------------\n");
35
	cHandle = mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
36
	mysql_debug(1);
37
	format(xstring, sizeof(xstring),"CREATE TABLE IF NOT EXISTS usersdata(pName VARCHAR(24), pIP VARCHAR(16), pPass VARCHAR(25) )");
38
	mysql_function_query(cHandle, xstring, false, "", "");
39
	return 1;
40
}
41
42
public OnFilterScriptExit()
43
{
44
	foreach(Player, i)
45
	{
46
		if(IsPlayerConnected(i)) MySQL_SaveStats(i);
47
	}
48
	return 1;
49
}
50
51-
public OnPlayerRequestClass(playerid, classid)
51+
52
{
53-
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
53+
54-
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
54+
55-
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
55+
56
	return 1;
57
}
58
forward LoadPData(playerid);
59
public LoadPData(playerid)
60
{
61
    new rows, fields;
62
    cache_get_data(rows, fields);
63
    if(!rows)
64
    {
65
        ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Register","In order to play this server, you neeed to register.\nTo register type your password bellow:","Register","Exit");
66
    }
67
    else
68
    {
69
		ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","You are registerd user.\nTo login type your password bellow:","Login","Exit");
70
		MySQL_LoadStats(playerid);
71
    }
72
	return 1;
73
}
74
75
public OnPlayerDisconnect(playerid, reason)
76
{
77
	MySQL_SaveStats(playerid);
78
	return 1;
79
}
80
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
81
{
82
	if(dialogid == DIALOG_REGISTER)
83
	{
84
	    if(response)
85
	    {
86
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Register","Enter Password !","Register","Exit");
87
			new EscapePass[60],string[300],playerip[16];
88
			mysql_real_escape_string(inputtext, EscapePass);
89
			GetPlayerIp(playerid, playerip, sizeof(playerip));
90
			SendClientMessage(playerid,COLOR_WHITE,"You are registered user now ");
91
			format(string,sizeof(string),"INSERT INTO usersdata(`pName`, `pIP`, `pPass`) VALUES('%s', '%s', '%s')",GetName(playerid),playerip,EscapePass);
92
			mysql_function_query(cHandle, string, false, "", "");
93
			strmid(Data[playerid][pName], GetName(playerid), 0, strlen(GetName(playerid)), 255);
94
			strmid(Data[playerid][pPass], EscapePass, 0, strlen(EscapePass), 255);
95
			strmid(Data[playerid][pIP], playerip, 0, strlen(playerip), 255);
96
			MySQL_SaveStats(playerid);			
97
		}
98
		else
99
		{
100
		    SendClientMessage(playerid,COLOR_RED,"You choosed to quit");
101
		    Kick(playerid);
102
		}
103
	}
104
	if(dialogid == DIALOG_LOGIN)
105
	{
106
		if(response)
107
	    {
108
			new EscapedPass[60];
109
			mysql_real_escape_string(inputtext, EscapedPass);
110
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","You are registerd user, to login type your password bellow:","Login","Exit");
111
			if(strcmp(EscapedPass, Data[playerid][pPass])) 
112
			{
113
				WrongPass[playerid] ++;
114
				if(WrongPass[playerid] >= TRYS_BEFORE_KICK) 
115
				{
116
					format(xstring,sizeof(xstring),"You entered wrong password %d times, you are kicked .",WrongPass);
117
					SendClientMessage(playerid, COLOR_RED,xstring);
118
					Kick(playerid);
119
				}
120
				SendClientMessage(playerid,COLOR_RED,"Wrong password!");
121
				format(xstring,sizeof(xstring),"Wrong password: %d/%d",WrongPass[playerid],TRYS_BEFORE_KICK);		
122
				ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",xstring,"Login","Exit");
123
			}
124
			else 
125
			{				
126
				SendClientMessage(playerid,COLOR_GREEN,"[Login] You successfully logged in ! ");
127
				MySQL_LoadStats(playerid);
128
			}	
129
		}
130
		else
131
		{
132
		    SendClientMessage(playerid,COLOR_RED,"You choosed to quit");
133
		    Kick(playerid);
134
		}
135
	}
136
	return 1;
137
}
138
MySQL_LoadStats(playerid)
139
{
140
	new count = GetTickCount();
141
	new query[300], pname[24];
142
    GetPlayerName(playerid, pname, 24);
143
    format(query, sizeof(query), "SELECT * FROM `usersdata` WHERE `pName` = '%s'", pname);
144
	mysql_function_query(cHandle, query, true, "", "");
145
	new rows,fields;
146
	cache_get_data(rows, fields, cHandle);
147
    if(rows)
148
    {
149
		cache_get_row(0, 0, Data[playerid][pName]),
150
		cache_get_row(0, 1, Data[playerid][pIP]),
151
		cache_get_row(0, 2, Data[playerid][pPass]);
152
    }
153
	printf("Loading %s account took %d seconds (cached)",GetName(playerid),GetTickCount() - count);
154
    return 1;
155
}
156
MySQL_SaveStats(playerid)
157
{
158
	new playerip[16],query[200];
159
	GetPlayerIp(playerid, playerip, sizeof(playerip));
160
	format(query,sizeof(query),"UPDATE `usersdata` SET `pName` = '%s', `pIP` = '%s', `pPass` = '%s' WHERE `pName` = '%s'",GetName(playerid),Data[playerid][pIP],Data[playerid][pPass],GetName(playerid));
161
	print(query);
162
	mysql_function_query(cHandle, query, false, "", "");
163
	return 1;
164
}
165
GetName(playerid)
166
{
167
	new planame[MAX_PLAYER_NAME];
168
	GetPlayerName(playerid, planame, sizeof(planame));
169
	return planame;
170
}