• 0
Гость ShaggyMCS

Регистрация

Вопросы

Здравствуйте, столкнулся с проблемой с DIALOG_STYLE_MSGBOX.

Суть проблемы:При входе на сервер появляется окно регистраций ввод пароля, если поле пустое и нажать "Далее" в задумках было сделать через DIALOG_STYLE_MSGBOX следующее сообщение "Ошибка!", "Необходимо ввести пароль" , так вот окно появляется НО когда нажимаешь Повтор или Enter на клавиатуре не появляется снова окно ввода пароля.Помогите решить проблему пожалуйста.

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
	    case DLG_REG:
	    {
	        if(response)
	        {
	            if(!strlen(inputtext))
	            {
				    ShowRegistration(playerid);
             		return SPD(playerid, DLG_REG, DIALOG_STYLE_MSGBOX, "Ошибка!", "{FF6347}Необходимо ввести пароль", "Повтор", "");
				}
				if(!(8 <= (strlen(inputtext)) <= 32))
				{
                    ShowRegistration(playerid);
                    return SPD(playerid, DLG_REG, DIALOG_STYLE_MSGBOX, "Ошибка!", "{FF6347}Длина пароля должна быть от 8 до 32 символов", "Повтор", "");
    			}
				new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9]{1,}$");
				if(regex_check(inputtext, rg_passwordcheck))
				{
				    new salt[11];
				    for(new i; i < 11; i++)
				    {
				        salt[i] = random(79) + 47;
				    }
				    salt[10] = 0;
				    SHA256_PassHash(inputtext, salt, player_info[playerid][PASSWORD], 65);
				    strmid(player_info[playerid][SALT], salt, 0, 11, 11);
				    SPD(playerid, DLG_REGEMAIL, DIALOG_STYLE_INPUT,  "{FFFF00}Email (2/5)", "\n\n{FFFFFF}Введите свой емайл адрес\n\n{FF0000}Укажите ваш настоящий емайл.С его помощью вы сможете восстановить свой пароль. ", "Далее", "");
				}
				else
				{
				    ShowRegistration(playerid);
        			return SPD(playerid, DLG_REG, DIALOG_STYLE_MSGBOX, "Ошибка!", "{FF6347}Введенный вами пароль содержит русские буквы.\n Смените раскладку клавиатуры!", "Повтор", "");
        		}
        		regex_delete(rg_passwordcheck);
	        }
	        else
	        {
	            SCM(playerid, COLOR_SADDLEBROWN, "Для выхода из игры используйте /q(uit)");
	            return Kick(playerid);
			}
		}

 

Поделиться сообщением


Ссылка на сообщение

1 ответ на этот вопрос

  • 0

Я, конечно не эксперт, но попробуй поменять местами ShowRegistration(); и return SPD, т.е. , сначала

SPD(playerid, DLG_REG, DIALOG_STYLE_MSGBOX, "Ошибка!", "{FF6347}Необходимо ввести пароль", "Повтор", ""); 
А потом return ShowRegistration();

Вообще у тебя довольно-таки странно сделано, но ладно.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу