PDA

Просмотр полной версии : [Вопрос] Нет диалога регистрации / авторизации



Gressie
07.05.2014, 16:30
Приветствую, ещё раз. Нету диалога регистрации / авторизации мод MySQL R38.
[15:18:41] [DEBUG] mysql_connect - host: "127.0.0.1", user: "root", database: "database", password: "****", port: 3306, autoreconnect: true, pool_size: 2
[15:18:41] [DEBUG] CMySQLHandle::Create - creating new connection..
[15:18:41] [DEBUG] CMySQLHandle::CMySQLHandle - constructor called
[15:18:41] [DEBUG] CMySQLHandle::Create - connection created (id: 1)
[15:18:41] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[15:18:41] [DEBUG] CMySQLConnection::Connect - connection was successful
[15:18:41] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[15:18:41] [DEBUG] mysql_set_charset - charset: "cp1251_general_ci", connection: 1
[15:18:41] [DEBUG] CMySQLConnection::SetCharset - setting charset "cp1251_general_ci"
[15:18:41] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[15:18:41] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[15:18:41] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[15:18:41] [DEBUG] CMySQLConnection::Connect - connection was successful
[15:18:41] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[15:18:41] [DEBUG] CMySQLConnection::SetCharset - setting charset "cp1251_general_ci"
[15:18:41] [DEBUG] CMySQLConnection::Connect - connection was successful
[15:18:41] [DEBUG] CMySQLConnection::Connect - connection was successful
[15:18:41] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[15:18:41] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[15:18:41] [DEBUG] CMySQLConnection::SetCharset - setting charset "cp1251_general_ci"
[15:18:41] [DEBUG] CMySQLConnection::SetCharset - setting charset "cp1251_general_ci"
[15:19:24] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `acc` WHERE `Name` = 'e'", callback: "CheckRegistration", format: "u"
[15:19:24] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - starting query execution
[15:19:24] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - query was successfully executed within 0.357 milliseconds
[15:19:24] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[15:19:24] [DEBUG] Calling callback "CheckRegistration"..
[15:19:24] [DEBUG] cache_get_data - connection: 1
[15:19:24] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[15:19:33] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `acc` WHERE `Name` = 'e'", callback: "CheckRegistration", format: "u"
[15:19:33] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - starting query execution
[15:19:33] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - query was successfully executed within 0.515 milliseconds
[15:19:33] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[15:19:33] [DEBUG] Calling callback "CheckRegistration"..
[15:19:33] [DEBUG] cache_get_data - connection: 1
[15:19:33] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[15:19:33] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `acc` WHERE `Name` = 'e'", callback: "CheckRegistration", format: "u"
[15:19:33] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - starting query execution
[15:19:33] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - query was successfully executed within 0.486 milliseconds
[15:19:33] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[15:19:33] [DEBUG] Calling callback "CheckRegistration"..
[15:19:33] [DEBUG] cache_get_data - connection: 1
[15:19:33] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[15:19:34] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `acc` WHERE `Name` = 'e'", callback: "CheckRegistration", format: "u"
[15:19:34] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - starting query execution
[15:19:34] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - query was successfully executed within 0.290 milliseconds
[15:19:34] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[15:19:34] [DEBUG] Calling callback "CheckRegistration"..
[15:19:34] [DEBUG] cache_get_data - connection: 1
[15:19:34] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[15:19:34] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `acc` WHERE `Name` = 'e'", callback: "CheckRegistration", format: "u"
[15:19:34] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - starting query execution
[15:19:34] [DEBUG] CMySQLQuery::Execute[CheckRegistration] - query was successfully executed within 0.361 milliseconds
[15:19:34] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[15:19:34] [DEBUG] Calling callback "CheckRegistration"..
[15:19:34] [DEBUG] cache_get_data - connection: 1
[15:19:34] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[15:19:45] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE acc SET `Skin` = '0' `Cash` = '0' `Bank` = '0' WHERE `Nam", callback: "(null)", format: "(null)"
[15:19:45] [DEBUG] CMySQLQuery::Execute[] - starting query execution
OnPlayerRequestClass:

format(Query, sizeof(Query), "SELECT * FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%e'", PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, true, "CheckRegistration", "u", playerid);
Сама CheckRegistration:

public CheckRegistration(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
format(string, sizeof(string), "Мы нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш пароль",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, D_LOGIN, DIALOG_STYLE_INPUT, "Авторизация", string, "Выбрать", "Отмена");
SendClientMessage(playerid, 0xffffff00, "Введите ваш пароль который вы вводили в регистрации!");
}
else
{
format(string, sizeof(string), "Мы не нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш новый пароль",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Авторизация", string, "Выбрать", "Отмена");
SendClientMessage(playerid, 0xffffff00, "Введите пароль который вы хотите дать своему персонажу!");
}
return true;
}

Диалоги:

case D_LOGIN:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext))
{
format(string, 150, "Мы нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш пароль",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, D_LOGIN, 3, "{ffffff}Авторизация", string, "Принять","Отмена");
}
cache_get_field_content(0, "Password", PlayerInfo[playerid][pPass], Handle, 124);
if(!strcmp(inputtext, PlayerInfo[playerid][pPass], true)) LoadAccount(playerid);
else return Kick(playerid);
}
case D_REG:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext))
{
format(string, sizeof(string), "Мы не нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш новый пароль", PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, D_LOGIN, 3, "{ffffff}Регистация", string, "Принять","Отмена");
}
strmid(PlayerInfo[playerid][pPass], inputtext, 0, strlen(inputtext), 32);
CreateAccount(playerid, PlayerInfo[playerid][pPass]);
SendClientMessage(playerid, -1, "Вы удачно зарегистрировались!");
}
Остальные паблики:

public LoadAccountData(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
PlayerInfo[playerid][pModel] = cache_get_field_content_int(0, "Skin", Handle);
PlayerInfo[playerid][pCash] = cache_get_field_content_int(0, "Cash", Handle);
PlayerInfo[playerid][pBank] = cache_get_field_content_int(0, "Bank", Handle);
GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
}
return true;
}

stock SavePlayer(playerid)
{
format(Query, sizeof(Query), "UPDATE "TABLE_ACCOUNTS" SET `Skin` = '%d' `Cash` = '%d' `Bank` = '%d' WHERE `Name` = '%e'",
PlayerInfo[playerid][pModel], PlayerInfo[playerid][pCash], PlayerInfo[playerid][pBank], PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, false, "", "");
return true;
}
stock LoadAccount(playerid)
{
format(Query,sizeof(Query), "SELECT * FROM "TABLE_ACCOUNTS" WHERE `Name` = '%e' LIMIT 1",PlayerInfo[playerid][pName]);
return mysql_function_query(Handle, Query, true, "LoadAccountData", "i", playerid);
}

stock CreateAccount(playerid, pass[])
{
format(Query, sizeof(Query), "INSERT INTO "TABLE_ACCOUNTS" (`Name`, `Password`, `Skin`, `Cash`, `Bank`) VALUES \
('%s', '%s', '%d', '%d', '%d')", PlayerInfo[playerid][pName], pass, 23, 0, 0);
mysql_function_query(Handle, Query, false, "", "");
SpawnPlayer(playerid);
return true;
}

Nurick
07.05.2014, 18:43
Видел эту систему регистрации в public'e автор вроде печенга если не ошибаюсь. Так вот у него небыло самой базы данных и тебе встречный вопрос ты создал базу данных и подключил её??

http://pastebin.com/dprwDrdP

Gressie
07.05.2014, 18:49
Видел эту систему регистрации в public'e автор вроде печенга если не ошибаюсь. Так вот у него небыло самой базы данных и тебе встречный вопрос ты создал базу данных и подключил её??

http://pastebin.com/dprwDrdP

Да, подключил. Если нужно вот база:
http://rghost.ru/55009829

DeimoS
07.05.2014, 19:03
"SELECT * FROM `acc` WHERE `Name` = 'e'", callback: "CheckRegistration", format: "u"
По моему, на месте "e" и "u" должно находиться что-то другое, не? Соответственно, и параметры передаются совсем не те, что должны. Хотя могу ошибаться. Сделайте следующее:

format(Query, sizeof(Query), "SELECT * FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%e'", PlayerInfo[playerid][pName]);
printf("\nQuery - %s",Query);
mysql_function_query(Handle, Query, true, "CheckRegistration", "u", playerid);
И

public CheckRegistration(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
printf("CheckRegistration(%d) = %d | %d",playerid,rows, fields);
if(rows)
{
format(string, sizeof(string), "Мы нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш пароль",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, D_LOGIN, DIALOG_STYLE_INPUT, "Авторизация", string, "Выбрать", "Отмена");
SendClientMessage(playerid, 0xffffff00, "Введите ваш пароль который вы вводили в регистрации!");
}
else
{
format(string, sizeof(string), "Мы не нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш новый пароль",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Авторизация", string, "Выбрать", "Отмена");
SendClientMessage(playerid, 0xffffff00, "Введите пароль который вы хотите дать своему персонажу!");
}
return true;
}
После зайдите на сервер, дойдите до того момента, когда должна появиться регистрация и после скиньте логи сервера

Gressie
07.05.2014, 19:36
"SELECT * FROM `acc` WHERE `Name` = 'e'", callback: "CheckRegistration", format: "u"
По моему, на месте "e" и "u" должно находиться что-то другое, не? Соответственно, и параметры передаются совсем не те, что должны. Хотя могу ошибаться. Сделайте следующее:

format(Query, sizeof(Query), "SELECT * FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%e'", PlayerInfo[playerid][pName]);
printf("\nQuery - %s",Query);
mysql_function_query(Handle, Query, true, "CheckRegistration", "u", playerid);
И

public CheckRegistration(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
printf("CheckRegistration(%d) = %d | %d",playerid,rows, fields);
if(rows)
{
format(string, sizeof(string), "Мы нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш пароль",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, D_LOGIN, DIALOG_STYLE_INPUT, "Авторизация", string, "Выбрать", "Отмена");
SendClientMessage(playerid, 0xffffff00, "Введите ваш пароль который вы вводили в регистрации!");
}
else
{
format(string, sizeof(string), "Мы не нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш новый пароль",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Авторизация", string, "Выбрать", "Отмена");
SendClientMessage(playerid, 0xffffff00, "Введите пароль который вы хотите дать своему персонажу!");
}
return true;
}
После зайдите на сервер, дойдите до того момента, когда должна появиться регистрация и после скиньте логи сервера
Зашёл, вот лог:
SA-MP Dedicated Server
----------------------
v0.3z, (C)2005-2014 SA-MP Team

[18:34:42] filterscripts = "" (string)
[18:34:42]
[18:34:42] Server Plugins
[18:34:42] --------------
[18:34:42] Loading plugin: mysql.dll
[18:34:42] >> plugin.mysql: R38 successfully loaded.
[18:34:42] Loaded.
[18:34:42] Loaded 1 plugins.

[18:34:42]
[18:34:42] Filterscripts
[18:34:42] ---------------
[18:34:42] Loaded 0 filterscripts.



[18:34:42] Number of vehicle models: 0
[18:35:12] Incoming connection: 127.0.0.1:53993
[18:35:13] [join] Niko_Rich has joined the server (0:127.0.0.1)
[18:35:13]
Query - SELECT * FROM `acc` WHERE `Name` = 'e'
[18:35:13] CheckRegistration(190736) = 0 | 5
[18:35:26] [part] Niko_Rich has left the server (0:1)

DeimoS
07.05.2014, 19:38
Ну вот. В общем, попробуйте:


format(Query, sizeof(Query), "SELECT * FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%s'", PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, true, "CheckRegistration", "i", playerid);

Kenny_Dalglish
07.05.2014, 19:40
Ну вот. В общем, попробуйте:


format(Query, sizeof(Query), "SELECT * FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%s'", PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, true, "CheckRegistration", "i", playerid);
Ну или '%e' вместо '%s'

Gressie
07.05.2014, 19:45
Ну вот. В общем, попробуйте:


format(Query, sizeof(Query), "SELECT * FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%s'", PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, true, "CheckRegistration", "i", playerid);
Заработало. Но при авторизации ввожу пароль, диалог пропадает. И дальше ничего

Kenny_Dalglish
07.05.2014, 19:49
Заработало. Но при авторизации ввожу пароль, диалог пропадает. И дальше ничего
cache_get_field_content(0, "Password", PlayerInfo[playerid][pPass], Handle, 124);
if(!strcmp(inputtext, PlayerInfo[playerid][pPass], true)) LoadAccount(playerid);
Мне интресно откуда pPass грузит? если его в LoadAccount если я не ошибаюсь.

Gressie
07.05.2014, 20:01
cache_get_field_content(0, "Password", PlayerInfo[playerid][pPass], Handle, 124);
if(!strcmp(inputtext, PlayerInfo[playerid][pPass], true)) LoadAccount(playerid);
Мне интресно откуда pPass грузит? если его в LoadAccount если я не ошибаюсь.
Сразу загружается.

DeimoS
07.05.2014, 20:25
Заработало. Но при авторизации ввожу пароль, диалог пропадает. И дальше ничего

хмм, не?

stock LoadAccount(playerid)
{
format(Query,sizeof(Query), "SELECT * FROM "TABLE_ACCOUNTS" WHERE `Name` = '%e' LIMIT 1",PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, true, "LoadAccountData", "i", playerid)
SpawnPlayer(playerid);
return 1;
}

Gressie
07.05.2014, 20:35
хмм, не?

stock LoadAccount(playerid)
{
format(Query,sizeof(Query), "SELECT * FROM "TABLE_ACCOUNTS" WHERE `Name` = '%e' LIMIT 1",PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, true, "LoadAccountData", "i", playerid)
SpawnPlayer(playerid);
return 1;
}

C:\Users\Admin\Downloads\Pechenia\gamemodes\new.pwn(155) : error 001: expected token: ";", but found "-identifier-"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
Строка:

SpawnPlayer(playerid);

DOS-Protection
07.05.2014, 20:40
stock LoadAccount(playerid)
{
format(Query,sizeof(Query), "SELECT * FROM "TABLE_ACCOUNTS" WHERE `Name` = '%e' LIMIT 1",PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, true, "LoadAccountData", "i", playerid);
SpawnPlayer(playerid);
return 1;
}

Gressie
07.05.2014, 20:45
stock LoadAccount(playerid)
{
format(Query,sizeof(Query), "SELECT * FROM "TABLE_ACCOUNTS" WHERE `Name` = '%e' LIMIT 1",PlayerInfo[playerid][pName]);
mysql_function_query(Handle, Query, true, "LoadAccountData", "i", playerid);
SpawnPlayer(playerid);
return 1;
}
Спасибо.