25.02.2017, 19:22
My accounts aren't registering or saving. It doesn't show me anything once it hits onplayerregister function.
Код:
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Visionary Roleplay");
new MySQLOpt: option_id = mysql_init_options();
mysql_set_option(option_id, AUTO_RECONNECT, true);
Database = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
if(Database == MYSQL_INVALID_HANDLE || mysql_errno(Database) != 0)
{
print("I couldn't connect to the MySQL server, closing.");
SendRconCommand("exit");
return 1;
}
print("I have connected to the MySQL server.");
return 1;
}
public OnPlayerConnect(playerid)
{
new DB_Query[115];
PlayerInfo[playerid][PasswordFails] = 0;
PlayerInfo[playerid][Admin] = 0;
GetPlayerName(playerid, PlayerInfo[playerid][Name], MAX_PLAYER_NAME);
Corrupt_Check[playerid]++;
mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM `accounts` WHERE `NAME` = '%e' LIMIT 1", PlayerInfo[playerid][Name]);
mysql_tquery(Database, DB_Query, "OnPlayerDataCheck", "ii", playerid, Corrupt_Check[playerid]);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch (dialogid)
{
case LoginDialog:
{
if(!response) return Kick(playerid);
new buf[129];
WP_Hash(buf, sizeof(buf), inputtext);
if(!strcmp(buf, PlayerInfo[playerid][Password], true))
{
OnPlayerLogin(playerid);
}
else
{
new String[150];
PlayerInfo[playerid][PasswordFails] += 1;
printf("%s has been failed to login. (%d)", PlayerInfo[playerid][Name], PlayerInfo[playerid][PasswordFails]);
if (PlayerInfo[playerid][PasswordFails] >= 3)
{
Kick(playerid);
}
else
{
format(String, sizeof(String), "Wrong password, you have %d out of 3 tries.", PlayerInfo[playerid][PasswordFails]);
SendClientMessage(playerid, 0xFF0000FF, String);
format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
{0099FF}Please, input your password below to proceed to the game.\n\n", PlayerInfo[playerid][Name]);
ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
}
}
}
case RegisterDialog:
{
if(!response) return Kick(playerid);
if(strlen(inputtext) <= 5 || strlen(inputtext) > 60)
{
SendClientMessage(playerid, 0x969696FF, "Invalid password length, should be 5 - 60.");
new String[150];
format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
{0099FF}Please, input your password below to proceed.\n\n", PlayerInfo[playerid][Name]);
ShowPlayerDialog(playerid, RegisterDialog, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
}
else
{
new playerip[16];
WP_Hash(PlayerInfo[playerid][Password], 129, inputtext); //hashing inputtext
GetPlayerIp(playerid, playerip, sizeof(playerip));
new DB_Query[225];
mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `accounts` (`Name`, `Password`, `IP`, `Admin`) VALUES ('%e', '%s', '%s', '0')", PlayerInfo[playerid][Name], PlayerInfo[playerid][Password], playerip);
mysql_tquery(Database, DB_Query, "OnPlayerRegister", "d", playerid);
}
}
}
return 1;
}
forward public OnPlayerDataCheck(playerid, corrupt_check);
public OnPlayerDataCheck(playerid, corrupt_check)
{
if (corrupt_check != Corrupt_Check[playerid]) return Kick(playerid);
new String[150];
if(cache_num_rows() > 0)
{
cache_get_value_name(0, "Password", PlayerInfo[playerid][Password]);
PlayerInfo[playerid][Player_Cache] = cache_save();
format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
{0099FF}Please, input your password below to proceed to the game.\n\n", PlayerInfo[playerid][Name]);
ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
}
else
{
format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
{0099FF}Please, input your password below to proceed to the game.\n\n", PlayerInfo[playerid][Name]);
ShowPlayerDialog(playerid, RegisterDialog, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
}
return 1;
}
forward public OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
SendClientMessage(playerid, 0x00FF00FF, "Welcome to Visionary roleplay.");
PlayerInfo[playerid][LoggedIn] = true;
return 1;
}
forward public OnPlayerLogin(playerid);
public OnPlayerLogin(playerid)
{
cache_set_active(PlayerInfo[playerid][Player_Cache]);
cache_get_value_int(0, "ID", PlayerInfo[playerid][ID]);
cache_get_value_int(0, "Admin", PlayerInfo[playerid][Admin]);
cache_delete(PlayerInfo[playerid][Player_Cache]);
PlayerInfo[playerid][Player_Cache] = MYSQL_INVALID_CACHE;
PlayerInfo[playerid][LoggedIn] = true;
SendClientMessage(playerid, 0x00FF00FF, "Logged in to the account.");
return 1;
}
forward public OnPlayerAccountSave(playerid);
public OnPlayerAccountSave(playerid)
{
Corrupt_Check[playerid]++;
new DB_Query[256];
if(PlayerInfo[playerid][LoggedIn] == true)
{
mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `accounts` SET `ADMIN` = %d WHERE `ID` = %d LIMIT 1",
PlayerInfo[playerid][Admin], PlayerInfo[playerid][ID]);
mysql_tquery(Database, DB_Query);
if(cache_is_valid(PlayerInfo[playerid][Player_Cache]))
{
cache_delete(PlayerInfo[playerid][Player_Cache]);
PlayerInfo[playerid][Player_Cache] = MYSQL_INVALID_CACHE;
}
}
return 1;
}


