PDA

Просмотр полной версии : [Вопрос] Опять же регистрация...



Elaid
18.09.2014, 09:35
Приветствую, уважаемый. У меня вот такая проблема. Не получается показать диалог с показом ввода Emaila игроку

Вот код, вроде бы все правильно сделал (наверное):

Добавил Email

enum pInfo
{
Key[128],
Level,
Email
}

Далее добавил сам диалог:

case 3:
{
if(!strlen(inputtext))
return ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"{ffffff}Email","{ffffff}Введите Email","Далее","Отмена");
OnPlayerRegister(playerid,inputtext);
return 1;
}

Далее добавил сохранение введенной информации при регистрации (думаю правильно сказал):

OnPlayerRegister(p, password[])
{
new str[128];
format(str, sizeof(str), "INSERT INTO `Accounts` (`Name`, `Key`, `Email`) VALUES ('%s', '%s', '%s')", Name(p), password, Email);
mysql_function_query(mysql_variable, str, false, "RegisterCallback","d", p);
return 1;
}

nekaz
18.09.2014, 10:50
А ты вообще вызываешь этот диалог?

Elaid
18.09.2014, 11:03
А ты вообще вызываешь этот диалог?

Вто то и проблема, я не знаю как. Вот и написал сюды

- - - Добавлено - - -

Вот*

nekaz
18.09.2014, 11:09
Кидай полностью диалоги регистрации

Elaid
18.09.2014, 11:13
Кидай полностью диалоги регистрации


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 1://Регистрация
{
if(!strlen(inputtext))
return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"{ffffff}Регистрация","{ffffff}Добро пожаловать на сервер Antlantic RolePlay!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:","Далее","Отмена");
OnPlayerRegister(playerid,inputtext);
return 1;
}
case 2://Авторизация
{
if(!strlen(inputtext))
return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"{ffffff}Авторизация","{ffffff}Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:","Вход","Отмена");
OnPlayerLogin(playerid,inputtext);
return 1;
}
case 3:
{
if(!strlen(inputtext))
return ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"{ffffff}Email","{ffffff}Введите Email","Далее","Отмена");
OnPlayerRegister(playerid,inputtext);
return 1;
}
}
return 1;
}

nekaz
18.09.2014, 11:32
enum pInfo
{
Key[32],
Level,
Email[128]
}



public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 1://Регистрация
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"{ffffff}Регистрация","{ffffff}Добро пожаловать на сервер Antlantic RolePlay!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:","Далее","Отмена");
strmid(PlayerInfo[playerid][pKey], inputtext, 0, strlen(inputtext), 32);
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"{ffffff}Email","{ffffff}Введите Email","Далее","Отмена");
// OnPlayerRegister(playerid,inputtext);
return 1;
}
case 2://Авторизация
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"{ffffff}Авторизация","{ffffff}Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:","Вход","Отмена");
OnPlayerLogin(playerid,inputtext);
return 1;
}
case 3:
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"{ffffff}Email","{ffffff}Введите Email","Далее","Отмена");
strmid(PlayerInfo[playerid][pEmail], inputtext, 0, strlen(inputtext), 128);
OnPlayerRegister(playerid);
return 1;
}
}
return 1;
}



OnPlayerRegister(p)
{
new str[MAX_PLAYER_NAME+32+128];
format(str, sizeof(str), "INSERT INTO `Accounts` (`Name`, `Key`, `Email`) VALUES ('%s', '%s', '%s')", Name(p), PlayerInfo[playerid][pKey], PlayerInfo[playerid][pEmail]);
mysql_function_query(mysql_variable, str, false, "RegisterCallback","d", p);
return 1;
}

Отпишись если что.

- - - Добавлено - - -

new str[78+MAX_PLAYER_NAME+32+128];

Elaid
18.09.2014, 11:36
C:\Users\Âëàäèìèð\Desktop\v 0.0.1\gamemodes\new.pwn(81) : error 017: undefined symbol "pKey"
C:\Users\Âëàäèìèð\Desktop\v 0.0.1\gamemodes\new.pwn(95) : error 017: undefined symbol "pEmail"
C:\Users\Âëàäèìèð\Desktop\v 0.0.1\gamemodes\new.pwn(130) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

nekaz
18.09.2014, 11:41
C:\Users\Âëàäèìèð\Desktop\v 0.0.1\gamemodes\new.pwn(81) : error 017: undefined symbol "pKey"
C:\Users\Âëàäèìèð\Desktop\v 0.0.1\gamemodes\new.pwn(95) : error 017: undefined symbol "pEmail"
C:\Users\Âëàäèìèð\Desktop\v 0.0.1\gamemodes\new.pwn(130) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

Протупил, pEmail убери у них в начале букву "p".
Если это в OnplayerRegister... то playerid замени на p

Elaid
18.09.2014, 11:54
Протупил, pEmail убери у них в начале букву "p".
Если это в OnplayerRegister... то playerid замени на p

Все вышло, сейчас попробую затестить :)

- - - Добавлено - - -

Email не сохраняется в БД, что делать?

nekaz
18.09.2014, 11:58
Все вышло, сейчас попробую затестить :)

- - - Добавлено - - -

Email не сохраняется в БД, что делать?
Только email ? ты заменил переменную в стоке регистрации ?
Если нет, то new str[78+MAX_PLAYER_NAME+32+128];

Elaid
18.09.2014, 12:01
Только email ? ты заменил переменную в стоке регистрации ?
Если нет, то new str[78+MAX_PLAYER_NAME+32+128];

Ой, Он сохраняется, но только в таблицу Name

nekaz
18.09.2014, 12:07
mysql_function_query(mysql_variable, str, false, "RegisterCallback","d", p);
Зачем? что там ? дай его сюда..


OnPlayerRegister(p)
{
new str[78+MAX_PLAYER_NAME+32+128];
mysql_format(mysql_variable,str, sizeof(str), "INSERT INTO `Accounts` (`Name`, `Key`, `Email`) VALUE ('%s', '%s', '%s')", Name(p), PlayerInfo[p][Key], PlayerInfo[p][Email]);
mysql_function_query(mysql_variable, str, false, "", "");

return 1;
}

Elaid
18.09.2014, 12:19
Да, я все сделал. Но так и не сохраняется

- - - Добавлено - - -


mysql_function_query(mysql_variable, str, false, "RegisterCallback","d", p);
Зачем? что там ? дай его сюда..


OnPlayerRegister(p)
{
new str[78+MAX_PLAYER_NAME+32+128];
mysql_format(mysql_variable,str, sizeof(str), "INSERT INTO `Accounts` (`Name`, `Key`, `Email`) VALUE ('%s', '%s', '%s')", Name(p), PlayerInfo[p][Key], PlayerInfo[p][Email]);
mysql_function_query(mysql_variable, str, false, "", "");

return 1;
}



public RegisterCallback(playerid);
public RegisterCallback(playerid)
{
SendClientMessage(playerid, -1, "Ðåãèñòðàöèÿ ïðîøëà óñïåøíî!");
SetPVarInt(playerid,"Logged", 1);
SpawnPlayer(playerid);
return 1;
}

nekaz
18.09.2014, 12:19
логи mysql дай

Elaid
18.09.2014, 12:20
Ой.


public RegisterCallback(playerid);
public RegisterCallback(playerid)
{
SendClientMessage(playerid, -1, "Регистрация прошла успешно!");
SetPVarInt(playerid,"Logged", 1);
SpawnPlayer(playerid);
return 1;
}

- - - Добавлено - - -


логи mysql дай


[15:49:45] [ERROR] CMySQLQuery::Execute - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `Level` = '0' WHERE `Name` = 'Marcus_Grace'' at line 1
[13:26:40] [ERROR] CMySQLQuery::Execute - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `Level` = '0' WHERE `Name` = 'Test_Bomj'' at line 1

nekaz
18.09.2014, 12:20
public RegisterCallback(playerid);
public RegisterCallback(playerid)

Что за ?...


forward RegisterCallback(playerid);
public RegisterCallback(playerid)

Elaid
18.09.2014, 12:21
public RegisterCallback(playerid);
public RegisterCallback(playerid)

Что за ?...


forward RegisterCallback(playerid);
public RegisterCallback(playerid)


:crazy:

nekaz
18.09.2014, 12:22
У тебя ячейка в бд Email, хоть тип не int ?

Elaid
18.09.2014, 12:33
У тебя ячейка в бд Email, хоть тип не int ?

=) Не понял, что ты сказал

- - - Добавлено - - -

Ой ступил, ща...

- - - Добавлено - - -


varchar(64

- - - Добавлено - - -

А может кодировка таблицы быть "виновата"? Например у меня cp1251_bin, а заменить к примеру на utf8_general_ci

nekaz
18.09.2014, 12:35
Такс...


OnPlayerRegister(p)
{
new str[78+MAX_PLAYER_NAME+32+128];
mysql_format(mysql_variable,str, sizeof(str), "INSERT INTO `Accounts` (`Name`, `Key`, `Email`) VALUE ('%s', '%s', '%s')", Name(p), PlayerInfo[p][Key], PlayerInfo[p][Email]);
printf("Email - %s",PlayerInfo[p][Email]);

mysql_function_query(mysql_variable, str, false, "", "");

return 1;
}

И добавь
public OnQueryError(errorid, error[], callback[], query[], connectionHandle) return print(error);

- - - Добавлено - - -

Потом покажешь что выдаст. utf8_general_ci ,да замени

Elaid
18.09.2014, 12:47
----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3z-R4, (C)2005-2014 SA-MP Team

[11:43:39] filterscripts = "" (string)
[11:43:39]
[11:43:39] Server Plugins
[11:43:39] --------------
[11:43:39] Loading plugin: sscanf
[11:43:39] Failed.
[11:43:39] Loading plugin: mysql
[11:43:39] >> plugin.mysql: R39-2 successfully loaded.
[11:43:39] Loaded.
[11:43:39] Loading plugin: streamer
[11:43:39] Loaded.
[11:43:39] Loading plugin: dc_cmd
[11:43:39] Daniel's CMD plugin v2.8
[11:43:39] (c) 2014 Daniel_Cortez
[11:43:39] www.pro-pawn.ru
[11:43:39] Loaded.
[11:43:39] Loaded 3 plugins.

[11:43:40]
[11:43:40] Filterscripts
[11:43:40] ---------------
[11:43:40] Loaded 0 filterscripts.

[11:43:40] Подключение к базе `gamebase` успешно
[11:43:40] Number of vehicle models: 0
[11:44:07] Incoming connection: 127.0.0.1:65411
[11:44:07] [join] ASVd has joined the server (0:127.0.0.1)
[11:44:13] [part] ASVd has left the server (0:1)
[11:44:51] Incoming connection: 127.0.0.1:65418
[11:44:51] [join] ASVD has joined the server (0:127.0.0.1)
[11:44:58] Email - [email protected]
[11:45:03] [part] ASVD has left the server (0:1)


- - - Добавлено - - -

Все сохранять стало. Но теперь регистрация обрывает, после регистрации камера так и стоит. Нажимая на кнопку "sapwn" Ты выкидыват. И сервер предупреждает, что я не зарегистрирован и все

nekaz
18.09.2014, 12:49
да.. это засунь в onplayerregister ....


SendClientMessage(playerid, -1, "Регистрация прошла успешно!");
SetPVarInt(playerid,"Logged", 1);
SpawnPlayer(playerid);

Elaid
18.09.2014, 12:53
да.. это засунь в onplayerregister ....


SendClientMessage(playerid, -1, "Регистрация прошла успешно!");
SetPVarInt(playerid,"Logged", 1);
SpawnPlayer(playerid);

У меня эта же фигня стоит в RegisterCallback

nekaz
18.09.2014, 12:57
Мы убрали вызов с onplayerregister... Или ты вернул ?

- - - Добавлено - - -

модераторы опупеют от нашего флуда :D

Elaid
18.09.2014, 12:59
Мы убрали вызов с onplayerregister... Или ты вернул ?

- - - Добавлено - - -

модераторы опупеют от нашего флуда :D


OnPlayerRegister(p)
{
new str[78+MAX_PLAYER_NAME+32+128];
mysql_format(mysql_variable,str, sizeof(str), "INSERT INTO `Accounts` (`Name`, `Key`, `Email`) VALUE ('%s', '%s', '%s')", Name(p), PlayerInfo[p][Key], PlayerInfo[p][Email]);
printf("Email - %s",PlayerInfo[p][Email]);

mysql_function_query(mysql_variable, str, false, "", "");

SendClientMessage(playerid, -1, "Ðåãèñòðàöèÿ ïðîøëà óñïåøíî!");
SetPVarInt(playerid,"Logged", 1);
SpawnPlayer(playerid);
return 1;
}



nekaz
18.09.2014, 13:04
Дак у тебя что то с плагином [11:43:39] Loading plugin: sscanf
[11:43:39] Failed.

Elaid
18.09.2014, 13:24
:( Ща скачаю другой.

- - - Добавлено - - -

xD У меня плаигн был, а инклуда небыло. Ошибка все еще осталась

- - - Добавлено - - -

Может как нибудь обратно в RegisterCallback ?

- - - Добавлено - - -

Добавил переменную

new playerid;
Только не знаю, можно ли так делать?

- - - Добавлено - - -


Р Е Ш Е Н О

DeimoS
18.09.2014, 15:38
Закрыто.