28.12.2012, 06:59
Hello.
Please help me.
Not register users in my mod
Please help me.
Not register users in my mod
Код:
#include <a_samp> #include <a_mysql> #include <sscanf2> #define mysql_host "localhost"//the IP of the host, should be displayed when created a database #define mysql_user "ul"//database username #define mysql_password "123"//database password #define mysql_database "ul"//database name #define white 0xFFFFFFFF #define blue 0x0073FFFF #define liblue 0x00FFFFFF #define green 0x00E228FF #define ligreen 0x00FF28FF #define green2 0x9BFF00FF #define limegreen 0x00FF96FF #define pink 0xFFAFD7FF #define purple 0xDB00AFFF #define yellow 0xF5FF00FF #define orange 0xFFA000FF #define red 0xFF0000FF #define cwhite "{FFFFFF}" #define cblue "{00B9FF}" #define cliblue "{00FFFA}" #define cgreen "{05E200}" #define cligreen "{05FF00}" #define cgreen2 "{A5FF00}" #define cpink "{FFA4C3}" #define cpurple "{E500C3}" #define cyellow "{FFFA00}" #define cyellow2 "{FFFF11}" #define corange "{FF9600}" #define cred "{FF0000}" #define Logindialog 1 #define Regdialog 2 #define Reginfo 3 enum PlayerData { AccID, Username[24], Password[129], Ip[16], Money, Score, Kills, Deaths, Logged, FailedLogins, FirstSpawn }; native WP_Hash(buffer[], len, const str[]); new pData[MAX_PLAYERS][PlayerData]; new Query[450]; #if defined FILTERSCRIPT public OnFilterScriptInit() { mysql_debug(1); print("\n************************************"); print("BReg - MySQL Registration script by [MWR]Blood - Loaded!"); print("************************************\n"); mysql_connect(mysql_host,mysql_user,mysql_database,mysql_password); mysql_query( "CREATE TABLE IF NOT EXISTS `Accounts` ("\ "`AccID` int(10) NOT NULL AUTO_INCREMENT,"\ "`Username` varchar(24) NOT NULL,"\ "`Password` varchar(64) NOT NULL,"\ "`IP` varchar(16) NULL,"\ "`Money` int(15) NULL,"\ "`Score` int(15) NULL,"\ "`Kills` int(15) NULL,"\ "`Deaths` int(15) NULL,"\ "PRIMARY KEY (`AccID`)"\ ") ENGINE=InnoDB DEFAULT CHARSET=latin1;"); if(mysql_ping() > -1) return print("::BReg:: MySQL connection to database succeeded!"); else print("::BReg:: MySQL connection to database failed. Please check your database settings!"); return 1; } public OnFilterScriptExit() { return 1; } #else main() { } #endif public OnGameModeInit() { SetGameModeText("GameMode"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; } public OnGameModeExit() { return 1; } public OnPlayerRequestClass(playerid, classid) { TogglePlayerSpectating(playerid, 1); SetSpawnInfo( playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0 ); SpawnPlayer(playerid); return 0; } public OnPlayerConnect(playerid) { new string[256]; format(Query,sizeof(Query),"SELECT Username FROM `Accounts` WHERE `Username` = '%s'",GetPName(playerid)); mysql_query(Query); mysql_store_result(); if(mysql_num_rows() != 0) { format(Query,sizeof Query,"SELECT IP FROM `Accounts` WHERE `Username` = '%s' AND `IP` = '%s'",GetPName(playerid),GetIP(playerid)); mysql_query(Query); mysql_store_result(); if(mysql_num_rows() != 0) { LoadStats(playerid); pData[playerid][Logged] = 1; PlaySound(playerid,1057); SendClientMessage(playerid,green,"» You have been automatically logged in! Welcome back!"); } else { 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)); ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login",""); } } else { format(string,sizeof(string),""cblue"Hey, "cred"%s"cblue"! \nYour account is "cred"not registered"cblue". \nPlease "cgreen"register"cblue" to continue!",GetPName(playerid)); ShowPlayerDialog(playerid,Regdialog,DIALOG_STYLE_INPUT,""cpurple"Register",string,"Register",""); } mysql_free_result(); pData[playerid][FirstSpawn] = 1; return 1; } public OnPlayerDisconnect(playerid, reason) { if(pData[playerid][Logged] == 1) return SaveStats(playerid); pData[playerid][FailedLogins] = 0; return 1; } public OnPlayerSpawn(playerid) { TogglePlayerSpectating(playerid, 0); if(pData[playerid][FirstSpawn] == 1 && pData[playerid][Logged] == 1) { GivePlayerMoney(playerid,pData[playerid][Money]); SetPlayerScore(playerid,pData[playerid][Score]); format(pData[playerid][Ip],16,"%s",GetIP(playerid)); pData[playerid][FirstSpawn] = 0; } return 1; } public OnPlayerDeath(playerid, killerid, reason) { pData[killerid][Kills]++; pData[playerid][Deaths]++; return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case Regdialog: { new string[220]; if(strlen(inputtext) == 0) { 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!",""); SendClientMessage(playerid,red,"Please input a password!"); } else { new EscapedText[64],buffer[129]; mysql_real_escape_string(inputtext, EscapedText); WP_Hash(buffer,sizeof(buffer),EscapedText); format(Query,sizeof(Query),"INSERT INTO `Accounts` (Username,Password,IP,Money,Score,Kills,Deaths) VALUES('%s','%s','%s','0','0','0','0')",GetPName(playerid),buffer,GetIP(playerid)); mysql_query(Query); mysql_store_result(); SendClientMessage(playerid,green2,"You have been successfully registered!"); 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()); ShowPlayerDialog(playerid,Reginfo,0,"Registered!",string,"Ok",""); mysql_free_result(); LoadStats(playerid); pData[playerid][Logged] = 1; GivePlayerMoney(playerid,5000); SetPlayerScore(playerid,1); PlaySound(playerid,1083); } } case Logindialog: { if(!response) return Kick(playerid); if(strlen(inputtext) == 0) { new string[220]; 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)); ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login",""); SendClientMessage(playerid,red,"Please input a password!"); } else { LoginPlayer(playerid,inputtext); } } } return 1; } GetPName(playerid) { new pname[24]; GetPlayerName(playerid,pname,24); return pname; } GetIP(playerid) { new ip[16]; GetPlayerIp(playerid,ip,16); return ip; } stock PlaySound(playerid,soundid) { new Float:p[3]; GetPlayerPos(playerid, p[0], p[1], p[2]); PlayerPlaySound(playerid, soundid, p[0], p[1], p[2]); return 1; } stock LoadStats(playerid) { format(Query, sizeof(Query), "SELECT * FROM `Accounts` WHERE `Username` = '%s'", GetPName(playerid)); mysql_query(Query); mysql_store_result(); mysql_fetch_row_format(Query, "|"); sscanf(Query, "e<p<|>is[24]s[129]s[16]iiii>", pData[playerid]);//Remember to update this if you are going to add more info! mysql_free_result(); return 1; } stock SaveStats(playerid) { format(Query,sizeof(Query),"UPDATE `Accounts` SET `IP` = '%s', `Money` = '%i', `Score` = '%i', `Kills` = '%i', `Deaths` = '%i' WHERE `Username` = '%s'", pData[playerid][Ip], GetPlayerMoney(playerid), GetPlayerScore(playerid), pData[playerid][Kills], pData[playerid][Deaths], GetPName(playerid)); mysql_query(Query); mysql_free_result(); return 1; } stock LoginPlayer(playerid,const password[]) { new string[165], buffer[129]; WP_Hash(buffer,sizeof(buffer),password); format(Query,sizeof(Query),"SELECT Password FROM `Accounts` WHERE `Username` = '%s' AND `Password` = '%s'",GetPName(playerid),buffer); mysql_query(Query); mysql_store_result(); if(mysql_num_rows() != 0) { format(string,sizeof(string),"You have been logged in! Welcome back, "cred"%s"cgreen"!",GetPName(playerid)); SendClientMessage(playerid,green,string); LoadStats(playerid); pData[playerid][Logged] = 1; PlaySound(playerid,1057); } else { pData[playerid][FailedLogins]++; 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-pData[playerid][FailedLogins],GetPName(playerid)); ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login",""); PlaySound(playerid,1055); if(pData[playerid][FailedLogins] == 3) { format(string,sizeof(string),"%s has been automatically kicked as he entered the wrong login password 3 times in a row",GetPName(playerid)); SendClientMessageToAll(red,string); SendClientMessage(playerid,red,"*** You have been kicked as you have entered the wrong login password 3 times!"); PlaySound(playerid,1141); Kick(playerid); } } mysql_free_result(); return 1; }