Я видел большое количество просьб написать нормальную регистрацию на MySQL R7, вот я решил это сделать но так сказать обновить регистрацию на актуальную версию MySQL R8 ревизии: 20.
Приступаем:
Для начала добавляем в new.pwn названия Include.
Код
#include a_samp #include a_mysql
Далее добавляем переменные и #define:
Код
#define opublic%0(%1) forward %0(%1); public %0(%1)
new DATABASE; new QUERY[512];
Создаём enumeration чуть ниже переменных и директивы #define:
Код
enum Data { Password[32], }; new User[MAX_PLAYERS][Data];
Добавляем public'и ниже мода:
Код
public OnGameModeInit() return DATABASE = mysql_connect("Название хостинга", "Название логина", "Название базы данных", "Пароль");
public OnGameModeExit() return mysql_close(DATABASE);
public OnPlayerRequestClass(playerid, classid) { mysql_format(DATABASE, QUERY, sizeof(QUERY), "SELECT `Name` FROM `Users` WHERE `Name` = '%e'", USER(playerid)), mysql_function_query(DATABASE, QUERY, true, "Register", "d", playerid);
public OnPlayerSpawn(playerid) return SetPlayerSkin(playerid, GetPVarInt(playerid, "New")); public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case 1: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, 1, "{FFFFFF}РЕГИСТРАЦИЯ АККАУНТА", "\t{FFFFFF}Добро пожаловать на сервер!\n\tДля того чтобы создать аккаунт введите Ваш пароль:", "ОК", ""); return SwitchRegister(playerid, inputtext); } case 2: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, 1, "{FFFFFF}ВХОД В АККАУНТ", "\t{FFFFFF}Добро пожаловать на сервер!\n\tДля того чтобы войти в аккаунт введите Ваш пароль:", "ОК", ""); return SwitchLogin(playerid, inputtext); } } return true; }
CREATE TABLE IF NOT EXISTS `Users` ( `Name` varchar(24) COLLATE utf8 NOT NULL, `PassKey` varchar(30) CHARACTER SET utf8 NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8;
Регистрация будет дорабатываться по мере времени и по желанию пользователей!
К сожалению функции cache_get_row не были использованы т.к не было нужды в этом, регистрация чисто на MySQL без всяких Level'ов и Exp.
В случае обнаружения ошибок пишите, ошибки могут быть т.к у меня глючит клавиатуры и мышка.