19.06.2016, 02:37
I tried to mimic xSladeHDx's mysql register/login system, but I failed completely. My system doesn't even show the dialog now, and it didn't use to register the account. I have the full code here:
Код:
public OnPlayerConnect(playerid) { new query[126], pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName)); format(query, sizeof(query), "SELECT * FROM accounts WHERE name = '%s'", pName); mysql_query(query); mysql_store_result(); if(mysql_num_rows() == 1) { SCM(pid, -1, "That username is registered!"); ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Login", "Please login with your password.", "Login", "Cancel"); } else if(mysql_num_rows() == 0) { SCM(pid, -1, "That username is not registered. You may use it."); ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Register", "Please enter a password to register.", "Register", "Cancel"); } return 1; } stock SavePlayer(playerid) { new query[126], pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName)); GetPlayerPos(playerid, Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2]); format(query, sizeof(query), "UPDATE accounts SET Name = '%s', Password = '%s', PlayerX = '%f', PlayerY = '%f', PlayerZ = '%f', pAdmin = '%d', pHelper = '%d', pVip = '%d' WHERE Name = '%s'", pName, Player[playerid][Password], Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2], Player[playerid][pAdmin], Player[playerid][pHelper],Player[playerid][pVip], pName); mysql_query(query); printf("Player ID %d (%s) has been saved.", playerid, pName); } public OnPlayerDisconnect(playerid, reason) { SavePlayer(playerid); return 1; } stock GetName(playerid) { new playerName[MAX_PLAYER_NAME]; GetPlayerName(playerid, playerName, sizeof(playerName)); return playerName; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case 0: { if(response) { new query[126], pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName)); format(query, sizeof(query), "SELECT * FROM accounts WHERE name = '%s' AND password = '%s'", pName, inputtext); mysql_query(query); mysql_store_result(); if(mysql_num_rows() != 0) { SCM(pid, -1, "Logging in."); LoginPlayer(playerid); } else { SCM(pid, -1, "Invalid password!"); ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "Login", "Please login with your password", "Login", "Cancel"); } } } case 1: { if(response) { new query[126], pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName)); format(query, sizeof(query), "INSERT INTO accounts VALUES ('%s', '%s')", pName, inputtext); mysql_query(query); SCM(pid, -1, "You have registered successfully!"); SpawnPlayer(playerid); } } } return 1; } stock RegisterPlayer(playerid, regpass[]) { new query[350], EncryptedPass[130]; WP_Hash(EncryptedPass, sizeof(EncryptedPass), regpass); format(query, sizeof(query), "INSERT INTO accounts (Name, Password, pAdmin, pHelper, pLeader) VALUES ('%s', '%s', '%d', '%d', '%d')", GetName(playerid), EncryptedPass); mysql_query(query); SavePlayer(playerid); return 1; } stock LoginPlayer(playerid) { new query[126], pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName)); format(query, sizeof(query), "SELECT * FROM accounts WHERE Name = '%s'", pName); mysql_query(query); mysql_store_result(); while(mysql_fetch_row_format(query, "|")) { mysql_fetch_field_row(Player[playerid][Name], "Name"); mysql_fetch_field_row(Player[playerid][Password], "Password"); mysql_fetch_field_row(query, "PlayerX"); Player[playerid][Position][0] = floatstr(query); mysql_fetch_field_row(query, "PlayerY"); Player[playerid][Position][1] = floatstr(query); mysql_fetch_field_row(query, "PlayerZ"); Player[playerid][Position][2] = floatstr(query); mysql_fetch_field_row(query, "pAdmin"); Player[playerid][pAdmin] = strval(query); mysql_fetch_field_row(query, "pHelper"); Player[playerid][pHelper] = strval(query); mysql_fetch_field_row(query, "pVip"); Player[playerid][pVip] = strval(query); } mysql_free_result(); SetSpawnInfo(playerid, 0, 294, Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2], 0, 0, 0, 0, 0, 0, 0); SpawnPlayer(playerid); }