Danila_Ud 0 Опубликовано 6 ноября, 2017 Я сделал подключение к базе данных через MYSQL. Но в базе данных вместо имени (логина) ничего не пишется. То есть пишется ИД, логин (нет) и пароль. enum player { ID, //?? ???????? } new player_info[MAX_PLAYERS][player]; public OnPlayerConnect(playerid) { SCM(playerid, 0x00FF40AA, "????? ?????????? ?? Hydra RolePplay!"); SetTimerEx("player_connect", 700, false, "i", playerid); return 1; } forward player_connect(playerid); public player_connect(playerid) { static const fmt_query[] = "SELECT `id` FROM `accounts` WHERE `login` = '%s'"; new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)]; format(query, sizeof(query), fmt_query, sendername(playerid)); mysql_tquery(dbHandle, query, "player_check", "ii", playerid, 0); return 1; } forward player_check(playerid); public player_check(playerid) { new rows; cache_get_row_count(rows); if(rows) show_login(playerid); else show_register(playerid); return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case 1: { if(!strlen(inputtext) || strlen(inputtext) < 6 || strlen(inputtext) > 16) { show_register(playerid); } else { new query[128], temp[16]; mysql_escape_string(inputtext, temp); format(query, sizeof(query), "INSERT INTO `accounts` (`login`, `password`) VALUES ('%s','%s')", sendername(playerid), temp); mysql_query(dbHandle, query); format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1", sendername(playerid), temp); mysql_tquery(dbHandle, query, "player_login", "i", playerid); } } } return 1; } То есть. Регистрация произошла. Но при регистрации не указался логин в базе данных Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SCRIPTMAN 358 Опубликовано 6 ноября, 2017 Раскладку на русскую и копируй 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
#Rips 210 Опубликовано 6 ноября, 2017 Зачем было делать sendername, когда можно было сразу записать ник нейм в player_info и дальше использовать player_info[playerid][NAME] enum player { ID, // ID ACCA NAME[MAX_PLAYER_NAME] // NICK NAME } new player_info[MAX_PLAYERS][player]; public OnPlayerConnect(playerid) { GetPlayerName(playerid, player_info[playerid][NAME], MAX_PLAYER_NAME); SCM(playerid, 0x00FF40AA, "Добро пожаловать на Hydra RolePplay!"); SetTimerEx("player_connect", 700, false, "i", playerid); return 1; } forward player_connect(playerid); public player_connect(playerid) { static const fmt_query[] = "SELECT * FROM `accounts` WHERE `login` = '%s'"; new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)]; format(query, sizeof(query), fmt_query, player_info[playerid][NAME]); mysql_tquery(dbHandle, query, "player_check", "ii", playerid, 0); return 1; } forward player_check(playerid); public player_check(playerid) { new rows; cache_get_row_count(rows); if(rows) show_login(playerid); else show_register(playerid); return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case 1: { if(!strlen(inputtext) || strlen(inputtext) < 6 || strlen(inputtext) > 16) { show_register(playerid); } else { new query[128], temp[16]; mysql_escape_string(inputtext, temp); format(query, sizeof(query), "INSERT INTO `accounts` (`login`, `password`) VALUES ('%s','%s')", player_info[playerid][NAME], temp); mysql_query(dbHandle, query); format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1", player_info[playerid][NAME], temp); mysql_tquery(dbHandle, query, "player_login", "i", playerid); } } } return 1; } 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты