22.12.2014, 02:46
For some reason, once I register I can play all day.
But as soon as I log out, and goto log back in, my server restarts.
It's only when I log in, never when I register.
It print's 'Login Function Variable Loading' but nothing after that so I assume it's dying at;
mysql_fetch_field_row(); I placed all the print's in there to see where it was dying at.
Using BlueG Plugin R5
REGISTER FUNCTION:
REGISTER + LOGIN DIALOGS
ONPLAYER DISCONNECT
ONPLAYERCONNECT
ONGAMEMODEINIT
But as soon as I log out, and goto log back in, my server restarts.
It's only when I log in, never when I register.
It print's 'Login Function Variable Loading' but nothing after that so I assume it's dying at;
mysql_fetch_field_row(); I placed all the print's in there to see where it was dying at.
Using BlueG Plugin R5
pawn Код:
stock MySQL_Login(playerid)
{
printf("Login stock loaded");
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,"|"))
{
printf("Login Function Variable Loading");
mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring)); // THIS IS WHERE IT CRASHES AT.
printf("Login Function Variable Loading - Score");
mysql_fetch_field_row(savingstring, "money"); MoneyGiven[playerid] = strval(savingstring);
printf("Login Function Variable Loading - Money");
}
mysql_free_result();
SendClientMessage(playerid, -1, "You have been logged in!");
Logged[playerid] = true;
return 1;
}
pawn Код:
stock MySQL_Register(playerid, passwordstring[])
{
new query[200], pname[24], IP[16];
GetPlayerName(playerid, pname, 24);
GetPlayerIp(playerid, IP, 16);
format(query, sizeof(query), "INSERT INTO playerdata (user, password, score, money, IP) VALUES('%s', SHA1('%s'), 0, 0, '%s')", pname, passwordstring, IP);
mysql_query(query);
SendClientMessage(playerid, -1, "You are now registerd, make sure to take a look at {F81414}(/rules) {FFFFFF}before proceeding.");
Logged[playerid] = true;
return 1;
}
pawn Код:
if(dialogid == DIALOG_REGISTER) // register dialog
{
if(response)
{
if(!(1 <= strlen(inputtext) <= 100))
{
SendClientMessage(playerid, -1, "You must insert a password between 1-100 characters!");
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register","This account is unregistered.\nInput desired password below.","Register","Cancel");
}
else
{
new escpass[100];
mysql_real_escape_string(inputtext, escpass);
MySQL_Register(playerid, escpass);
}
}
if(!response)
{
SendClientMessage(playerid, -1, "You may not proceed until you register your account in our system.");
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register","This account is unregistered.\nInput desired password below.","Register","Cancel");
}
}
if(dialogid == DIALOG_LOGIN) //Dialog login
{
if(!response)
{
SendClientMessage(playerid, -1, "Please login before proceeding.");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login","This account is registered.\nPlease Login input your login credentials.","Login","Cancel");
}
else
{
new query[200], pname[24], escapepass[100]; //
GetPlayerName(playerid, pname, 24);
mysql_real_escape_string(inputtext, escapepass);
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","This account is registered.\nPlease Login input your login credentials.","Login","Cancel");
SendClientMessage(playerid, -1, "ERROR: Invalid password entry.");
}
mysql_free_result();
}
}
pawn Код:
if(Logged[playerid] == true)
{
new query[200], pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
format(query, sizeof(query), "UPDATE playerdata SET score=%d, money=%d WHERE user='%s'", GetPlayerScore(playerid), GetPlayerMoney(playerid), pname);
mysql_query(query);
}
pawn Код:
MoneyGiven[playerid] = -1;
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()) // or if(mysql_num_rows() == 0)
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register","This account is unregistered.\nInput desired 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
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login","This account is registered.\nPlease Login input your login credentials.","Login","Cancel"); //Shows our login dialog :).
IsRegistered[playerid] = 1;
}
}
mysql_free_result();
pawn Код:
mysql_debug(1); // If there is a issue with SQL, this will report it.
mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password); // Connects to our Database
mysql_query("CREATE TABLE IF NOT EXISTS playerdata(user VARCHAR(24), password VARCHAR(41), score INT(20), money INT(20), IP VARCHAR(16) )");