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

