stock MySQL_Register(playerid, passwordstring[])
{
new query[200], pname[24], IP[16];
GetPlayerName(playerid, pname, 24);
GetPlayerIp(playerid, IP, 16);
new score = GetPlayerScore(playerid);
new money = GetPlayerMoney(playerid);
format(query, sizeof(query), "INSERT INTO playerdata (user, password, score, money,adminlevel, operator,viplevel, capped, highestspree, IP, kills, deaths, banned) VALUES('%s', SHA1('%s'), '%d','%d', '%d' , '%d' , '%d','%d', '%d', '%s', '%d', '%d', '%d')", pname, passwordstring,score ,money ,pInfo[playerid][AdminLevel], pInfo[playerid][VIP], pInfo[playerid][Capped], pInfo[playerid][HighestSpree] ,IP, pInfo[playerid][Kills], pInfo[playerid][Deaths], pInfo[playerid][Banned]);
mysql_query(query);
SendClientMessage(playerid, -1, "You have been registered on this server!");
pInfo[playerid][Registered] = 1;
return 1;
}
stock MySQL_Login(playerid)
{
ResetPlayerMoney(playerid);
new query[300], pname[24], savingstring[20];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "SELECT * FROM playerdata WHERE user = '%s'", pname);
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format(query,"|"))
{
mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring));
mysql_fetch_field_row(savingstring, "money"); GivePlayerMoney(playerid, strval(savingstring) );
mysql_fetch_field_row(savingstring, "adminlevel"); pInfo[playerid][AdminLevel] = strval(savingstring);
mysql_fetch_field_row(savingstring, "operator"); pInfo[playerid][Operator] = strval(savingstring);
mysql_fetch_field_row(savingstring, "viplevel"); pInfo[playerid][VIP] = strval(savingstring);
mysql_fetch_field_row(savingstring, "capped"); pInfo[playerid][Capped] = strval(savingstring);
mysql_fetch_field_row(savingstring, "deaths"); pInfo[playerid][Deaths] = strval(savingstring);
mysql_fetch_field_row(savingstring, "kills"); pInfo[playerid][Kills] = strval(savingstring);
mysql_fetch_field_row(savingstring, "highestspree"); pInfo[playerid][HighestSpree] = strval(savingstring);
}
mysql_free_result();
SendClientMessage(playerid, -1, "You have been logged in!");
pInfo[playerid][LoggedIn] = 1;
return 1;
}
public MySQL_Update(playerid)
{
new query[250];
format(query, sizeof(query), "UPDATE playerdata SET score=%d, money=%d adminlevel=%d capped=%d viplevel=%d highestspree=%d kills=%d deaths=%d banned=%d WHERE user='%s'", GetPlayerScore(playerid), GetPlayerMoney(playerid),pInfo[playerid][AdminLevel], pInfo[playerid][Capped],pInfo[playerid][VIP], pInfo[playerid][HighestSpree], pInfo[playerid][Kills], pInfo[playerid][Deaths], pInfo[playerid][Banned] ,PlayerName(playerid));
mysql_query(query);
return 1;
}
switch(dialogid)
{
case DIALOG_REGISTER:
{
if (!response) return Kick(playerid);
if (response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registering...","You have entered an invalid password.\nType your password below to register a new account.","Register","Quit");
}
else
{
MySQL_Register(playerid, inputtext);
pInfo[playerid][Registered] = 1;
pInfo[playerid][LoggedIn] = 0;
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login","Type your password below to login.","Login","Quit");
}
}
}
case DIALOG_LOGIN:
{
if(!response)
{
SendClientMessage(playerid, 0xFF0000, "You must login before you spawn!"); //Sends the client a error message
ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_INPUT, "Login","Your user is {FF0000}registered{FFFFFF}! Please {0000FF}login{FFFFFF} with your password below!\n{FF0000} You must login before you spawn!","Login","Cancel"); //Shows our login dialog :).
}
if(response)
{
new query[200], pname[24], escapepass[100];
GetPlayerName(playerid, pname, 24);
mysql_real_escape_string(inputtext, escapepass); //We escape the inputtext to avoid SQL injections.
format(query, sizeof(query), "SELECT `user` FROM playerdata WHERE user = '%s' AND password = SHA1('%s')", pname, escapepass);
mysql_query(query);
mysql_store_result();
new numrows = mysql_num_rows();
if(numrows == 1) MySQL_Login(playerid);
if(!numrows)
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login","Your user is {FF0000}registered{FFFFFF}! Please {0000FF}login{FFFFFF} with your password below!\n{FF0000} The password you typed was incorrect!","Login","Cancel"); //Shows our login dialog :).
SendClientMessage(playerid, 0xFF0000, "Incorrect password!");
}
mysql_free_result();
}
}
public OnPlayerConnect(playerid)
{
new query[200], pname[24];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "SELECT IP FROM `playerdata` WHERE user = '%s' LIMIT 1", pname);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() < 1)
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register","Your user is {FF0000}not{FFFFFF} registered! Please {0000FF}register{FFFFFF} with a password below!","Register","Cancel"); //Shows our register dialog :).
}
else
{
new IP[2][16];
mysql_fetch_field_row(IP[0],"IP");
GetPlayerIp(playerid, IP[1], 16);
if(strlen(IP[0]) != 0 && !strcmp(IP[0], IP[1], true))
{
MySQL_Login(playerid);
}
else if(!strlen(IP[0]) || strcmp(IP[0], IP[1], true))
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login","Your user is {FF0000}registered{FFFFFF}! Please {0000FF}login{FFFFFF} with your password below!","Login","Cancel"); //Shows our login dialog :).
pInfo[playerid][Registered] = 1;
}
}
mysql_free_result();
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(pInfo[playerid][LoggedIn] == 1)
{
new score = GetPlayerScore(playerid);
new money = GetPlayerMoney(playerid);
new query[200], pname[24];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "UPDATE playerdata SET score=%d, money=%d adminlevel=%d operator=%d kills=%d deaths=%d viplevel=%d highestspree=%d banned=%d capped=%d WHERE user='%s'", score, money, pname);
mysql_query(query);
}
pInfo[playerid][LoggedIn] = 0;
return 1;
}
This forum requires that you wait 120 seconds between posts. Please try again in 14 seconds. |
public OnGameModeInit()
{
mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
mysql_debug(1); //for some reason it doesnt debug, go ingame
mysql_query("CREATE TABLE IF NOT EXISTS playerdata(user VARCHAR(24), password VARCHAR(41), score INT(20), money INT(20), IP VARCHAR(16), capped INT(20), highestspree INT(20), adminlevel INT(5), viplevel INT(5) )");