Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Register & Login system based on MySQL By maor (make_belive) from fxp.co.il
- //#define FILTERSCRIPT
- #include <a_samp>
- #include <a_mysql>
- #include <colors>
- #include <foreach>
- // פה תכניסו את פרטי ההתחברות של הMySQL שלכם
- #define mysql_host "localhost"
- #define mysql_user "root"
- #define mysql_password ""
- #define mysql_database "sa:mp"
- #define DIALOG_LOGIN 1
- #define DIALOG_REGISTER 2
- #define TRYS_BEFORE_KICK 5 // כמה פעמים השחקן יוכל להכניס ססמא שגויה לפני שהוא יקבל קיק, תשנו את זה למה שאתם רוצים
- new cHandle;
- new xstring[128];
- enum pData
- {
- pName,
- pRegisterDate,
- pIP,
- pPass
- };
- new Data[MAX_PLAYERS][pData];
- new WrongPass[MAX_PLAYERS];
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" MySQL Register & Login System, By Maor (make_belive)");
- print(" From FxP.co.il");
- print("--------------------------------------\n");
- cHandle = mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
- mysql_debug(1);
- format(xstring, sizeof(xstring),"CREATE TABLE IF NOT EXISTS usersdata(pName VARCHAR(24), pIP VARCHAR(16), pPass VARCHAR(25) )");
- mysql_function_query(cHandle, xstring, false, "", "");
- return 1;
- }
- public OnFilterScriptExit()
- {
- foreach(Player, i)
- {
- if(IsPlayerConnected(i)) MySQL_SaveStats(i);
- }
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new query[150];
- format(query, sizeof(query), "SELECT * FROM `usersdata` WHERE `pName` = '%s' LIMIT 0,1",GetName(playerid));
- mysql_function_query(cHandle, query, true, "LoadPData", "d", playerid);
- return 1;
- }
- forward LoadPData(playerid);
- public LoadPData(playerid)
- {
- new rows, fields;
- cache_get_data(rows, fields);
- if(!rows)
- {
- 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");
- }
- else
- {
- ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","You are registerd user.\nTo login type your password bellow:","Login","Exit");
- MySQL_LoadStats(playerid);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- MySQL_SaveStats(playerid);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_REGISTER)
- {
- if(response)
- {
- if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Register","Enter Password !","Register","Exit");
- new EscapePass[60],string[300],playerip[16];
- mysql_real_escape_string(inputtext, EscapePass);
- GetPlayerIp(playerid, playerip, sizeof(playerip));
- SendClientMessage(playerid,COLOR_WHITE,"You are registered user now ");
- format(string,sizeof(string),"INSERT INTO usersdata(`pName`, `pIP`, `pPass`) VALUES('%s', '%s', '%s')",GetName(playerid),playerip,EscapePass);
- mysql_function_query(cHandle, string, false, "", "");
- strmid(Data[playerid][pName], GetName(playerid), 0, strlen(GetName(playerid)), 255);
- strmid(Data[playerid][pPass], EscapePass, 0, strlen(EscapePass), 255);
- strmid(Data[playerid][pIP], playerip, 0, strlen(playerip), 255);
- MySQL_SaveStats(playerid);
- }
- else
- {
- SendClientMessage(playerid,COLOR_RED,"You choosed to quit");
- Kick(playerid);
- }
- }
- if(dialogid == DIALOG_LOGIN)
- {
- if(response)
- {
- new EscapedPass[60];
- mysql_real_escape_string(inputtext, EscapedPass);
- if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","You are registerd user, to login type your password bellow:","Login","Exit");
- if(strcmp(EscapedPass, Data[playerid][pPass]))
- {
- WrongPass[playerid] ++;
- if(WrongPass[playerid] >= TRYS_BEFORE_KICK)
- {
- format(xstring,sizeof(xstring),"You entered wrong password %d times, you are kicked .",WrongPass);
- SendClientMessage(playerid, COLOR_RED,xstring);
- Kick(playerid);
- }
- SendClientMessage(playerid,COLOR_RED,"Wrong password!");
- format(xstring,sizeof(xstring),"Wrong password: %d/%d",WrongPass[playerid],TRYS_BEFORE_KICK);
- ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",xstring,"Login","Exit");
- }
- else
- {
- SendClientMessage(playerid,COLOR_GREEN,"[Login] You successfully logged in ! ");
- MySQL_LoadStats(playerid);
- }
- }
- else
- {
- SendClientMessage(playerid,COLOR_RED,"You choosed to quit");
- Kick(playerid);
- }
- }
- return 1;
- }
- MySQL_LoadStats(playerid)
- {
- new count = GetTickCount();
- new query[300], pname[24];
- GetPlayerName(playerid, pname, 24);
- format(query, sizeof(query), "SELECT * FROM `usersdata` WHERE `pName` = '%s'", pname);
- mysql_function_query(cHandle, query, true, "", "");
- new rows,fields;
- cache_get_data(rows, fields, cHandle);
- if(rows)
- {
- cache_get_row(0, 0, Data[playerid][pName]),
- cache_get_row(0, 1, Data[playerid][pIP]),
- cache_get_row(0, 2, Data[playerid][pPass]);
- }
- printf("Loading %s account took %d seconds (cached)",GetName(playerid),GetTickCount() - count);
- return 1;
- }
- MySQL_SaveStats(playerid)
- {
- new playerip[16],query[200];
- GetPlayerIp(playerid, playerip, sizeof(playerip));
- 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));
- print(query);
- mysql_function_query(cHandle, query, false, "", "");
- return 1;
- }
- GetName(playerid)
- {
- new planame[MAX_PLAYER_NAME];
- GetPlayerName(playerid, planame, sizeof(planame));
- return planame;
- }
Add Comment
Please, Sign In to add comment