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 | } |