if(fexist(string))
{
gPlayerAccount[playerid] = 1;
SendClientMessage(playerid, COLOR_YELLOW, "SERVER: That nick is registered, please login");
SendClientMessage(playerid, COLOR_WHITE, "HINT: You can now login by typing /login <password>");
return 1;
}
else
{
gPlayerAccount[playerid] = 0;
SendClientMessage(playerid,COLOR_YELLOW,"You dont have an account. Please register by using /register [password]");
return 1;
}[/pwn]
И заменяем на
[pwn]if(fexist(string))
{
gPlayerAccount[playerid] = 1;
new loginmsg[256+1];
format(loginmsg,256,"Сообщение, которое будет отображено внутри диалогового окна");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Название окна",loginmsg,"Левая кнопка(логин)","Правка кнопка(отмена)");
}
else
{
gPlayerAccount[playerid] = 0;
new loginmsg[256+1];
format(loginmsg,256,"Сообщение, которое будет отображено внутри диалогового окна");
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Название окна",loginmsg,"Левая кнопка(регистрация)","Правка кнопка(отмена)");
}[/pwn]
Итак, диалоговые окна созданы, теперь надо определить их действия
Добавляем public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
[pwn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new tpass[256];//преобразованный пароль
if(dialogid == 1)//итак, наше первое окно
{
if(response) // при нажатие на левую кнопку (логин)
{
if(!strlen(inputtext))// если оставляет пустую строку, выводим ему опять окно
{
new loginmsg[256+1];
format(loginmsg,256,"Сообщение, которое будет отображено внутри диалогового окна");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Название окна",loginmsg,"Левая кнопка(логин)","Правка кнопка(отмена)");
return 1;
}
strmid(tpass, inputtext, 0, strlen(inputtext), 255);
Encrypt(tpass);
OnPlayerLogin(playerid,tpass);
}
else // если нажимает правую кнопку (отмена)
{
Kick(playerid); // здесь вы уже сами выбирайте, но я кикну его, ибо я хочу, чтобы он авторизовывался
}
}
else if(dialogid == 2)//переходим ко второму диалоговому окну (регистрация)
{
if(response)// всё так-же, это нажатие левой кнопки (регистрация)
{
if(!strlen(inputtext)) // если поле осталось пустым, выводим ему опять диалоговое окно
{
new loginmsg[256+1];
format(loginmsg,256,"Сообщение, которое будет отображено внутри диалогового окна");
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Название окна",loginmsg,"Левая кнопка(регистрация)","Правка кнопка(отмена)");
return 1;
}
strmid(tpass, inputtext, 0, strlen(inputtext), 255);
Encrypt(tpass);
OnPlayerRegister(playerid,tpass);
// теперь давайте отправим его на логин
new loginmsg[256+1];
format(loginmsg,256,"Сообщение, которое будет отображено внутри диалогового окна");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Название окна",loginmsg,"Левая кнопка(логин)","Правка кнопка(отмена)");
}
else // нажатие правой кнопки (отмена)
{
Kick(playerid); // мне опять это не нравится и я его кикаю.
}
}
return 1;
}[/pwn]
Теперь надо сделать так, чтобы диалоговое окно не закрывалось при неправильном пароле
Находим в OnPlayerLogin
[pwn]
gPlayerLogTries[playerid] += 1;
if(gPlayerLogTries[playerid] == 4) { Ban(playerid); }[/pwn]
и заменяем на
[pwn]
gPlayerLogTries[playerid] += 1;
new loginmsg[256+1];
format(loginmsg,256,"Сообщение, которое будет отображено внутри диалогового окна");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Название окна",loginmsg,"Левая кнопка(логин)","Правка кнопка(отмена)");
if(gPlayerLogTries[playerid] == 4) { Ban(playerid); }