PDA

Просмотр полной версии : [Вопрос] Как исправить баг с БД



Maksim97
08.06.2014, 20:57
Баг с базой данной бывает создаёт левые акки т.е играет игрок под ником Name_Name и Бд создаёт ещё 3 акка с ником Name_Name ток пароль 123123

Gressie
08.06.2014, 21:34
Код нужен.

Maksim97
08.06.2014, 23:41
Возможности нету дать код т.к не дома ну просто примеры причин какие могут быть

underwoker
09.06.2014, 07:08
Возможности нету дать код т.к не дома ну просто примеры причин какие могут быть
Не ванги. Но может вызывается два раза регистрация O_O.

DeimoS
09.06.2014, 07:43
Несколько раз посылается запрос в БД. Посмотрите то, как пишется запрос на создание строки в БД, найдите его в моде и смотрите откуда вызывается функция с запросом

Maksim97
10.06.2014, 20:23
Ну вот

stock OnPlayerRegister(playerid, password[])
{
new bac[200],mysql_query[144];
mysql_format(connects,mysql_query,sizeof(mysql_query),"INSERT INTO `Accounts` (`Name`, `pKey`) VALUES ('%s', '%e')", PlayerInfo[playerid][pNames], password);
mysql_function_query(connects, mysql_query, false, "","");
format(bac, sizeof(bac),"{FFFFFF}_______________________________________\n\n Приветствуем вас на сервере {99FF66}Optimum-Rp{FFFFFF}\n Этот аккаунт зарегестрирован\n\nЛогин: {B4B5B7}%s{FFFFFF}\nВведите пароль:\n_______________________________________", PlayerInfo[playerid][pNames]);
SPD(playerid,2,DIALOG_STYLE_PASSWORD,"Авторизация",bac,"Вход","Отмена");
return true;
}

DeimoS
10.06.2014, 20:30
Ну вот и смотрите где OnPlayerRegister вызывается

Maksim97
10.06.2014, 20:40
Используется только здесь.

switch(dialogid)
{
case 1://Регистрация
{
if(!strlen(inputtext))
{
format(stringer, sizeof(stringer),"{FFFFFF}_______________________________________\n\n Приветствуем вас на сервере {99FF66}Optimum-Rp{FFFFFF}\n Ваш аккаунт не зарегистрирован у нас.\n\nЛогин: {B4B5B7}%s{FFFFFF}\nВведите ниже ваш будующий пароль:\n_______________________________________", PlayerInfo[playerid][pNames]);
SPD(playerid,1,DIALOG_STYLE_INPUT,"Регистрация",stringer,"Далее","Отмена");
return true;
}
if(strlen(inputtext) < 6 ||strlen(inputtext) > 20)
{
format(stringer, sizeof(stringer),"{FFFFFF}_______________________________________\n\n Приветствуем вас на сервере {99FF66}Optimum-Rp{FFFFFF}\n Ваш аккаунт не зарегистрирован у нас.\n\nЛогин: {B4B5B7}%s{FFFFFF}\nВведите ниже ваш будующий пароль:\n\t{FFFF00}от 6 до 20 символов!{FFFFFF}\n_______________________________________", PlayerInfo[playerid][pNames]);
SPD(playerid,1,DIALOG_STYLE_INPUT,"Регистрация",stringer,"Далее","Отмена");
return true;
}
OnPlayerRegister(playerid,inputtext);
SPD(playerid,3,DIALOG_STYLE_INPUT,"Электронная почта","\t\t\t{FFFFFF}Подтвердив E-mail в дальнейшем, вам откроются дополнительные возможности. \nПри потери доступа к персонажу, вы сможете его ввостановить в UCP на сайте и только через email.","Вход","Отмена");
return true;
}

DeimoS
10.06.2014, 20:54
stock OnPlayerRegister(playerid, password[])
{
printf("Код вызван для игрока %s [ID: %d]", PlayerInfo[playerid][pNames], password);

new bac[200],mysql_query[144];
mysql_format(connects,mysql_query,sizeof(mysql_query),"INSERT INTO `Accounts` (`Name`, `pKey`) VALUES ('%s', '%e')", PlayerInfo[playerid][pNames], password);
mysql_function_query(connects, mysql_query, false, "","");
format(bac, sizeof(bac),"{FFFFFF}_______________________________________\n\n Приветствуем вас на сервере {99FF66}Optimum-Rp{FFFFFF}\n Этот аккаунт зарегестрирован\n\nЛогин: {B4B5B7}%s{FFFFFF}\nВведите пароль:\n_______________________________________", PlayerInfo[playerid][pNames]);
SPD(playerid,2,DIALOG_STYLE_PASSWORD,"Авторизация",bac,"Вход","Отмена");
return true;
}
После регистрации сначала проверьте таблицу и если опять создаст несколько аккаунтов, смотрите/скиньте логи сервера.

Maksim97
10.06.2014, 21:20
Спасибо будем про бывать !