• Страница 1 из 1
  • 1
[FAQ] Создание регистрации GUI (Диологовые окна)
WedMacKДата: Воскресенье, 03.07.2011, 23:16 | Сообщение # 1
Сдешний
Сообщений: 51
Награды: 0
Репутация: -1
Сейчас я вам расскажу, как сделать логин и регистрацию через диалоги (ShowPlayerDialog)

Для начала изменим OnPlayerConnect
Находим такие строки:
[pwn]
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); }[/pwn]

В данной системе диалоговое окно будет показываться игроку сразу при подключении и не факт, что у него всё прогрузится. Так что если вы останетесь недовольными, можете перенести 1-ый показ диалогового окна в OnPlayerRequestClass

(Если хотите, чтобы сообщение внутри диалогового окна переходило на следующую строку, добавляем \n Пример:
Первая строка\nВторая строка\nТретья строка)
 
bob-94Дата: Суббота, 10.11.2012, 21:16 | Сообщение # 2
Проверенный
Сообщений: 20
Награды: 0
Репутация: 0
ураа gta-mp.net cпасибо тебе за то что ты мне помог)
 
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Последние посты Популярные темы Топ пользователей Новые пользователи
Наткнулся на интерес... Пост от [ Dodo ]
[CHEAT] Смена скина ... Пост от [ madeinprestige ]
Cоздание HUD интерфе... Пост от [ Player321 ]
Форма заявки! Пост от [ West ]
[GM] SF-LV TDM v 4.0... Пост от [ kimalto452 ]
[GM] Virtual World Пост от [ kimalto452 ]
[GM] Nero RolePlay Пост от [ kimalto452 ]
[GM] Engine Role PLa... Пост от [ kimalto452 ]
[GM] Godfather (Madt... Пост от [ kimalto452 ]
[GTA CriminalRussia]... Пост от [ kimalto452 ]
Новый шаблон главной Ответов [ 25 ]
Игра "Я знаю 5&... Ответов [ 23 ]
Разработка [GTA-MP] ... Ответов [ 22 ]
[GTA-MP]~Russian'... Ответов [ 21 ]
Какая у вас oc? Ответов [ 16 ]
Общение Ответов [ 16 ]
Как долго вы на Gta-... Ответов [ 12 ]
Города Ответов [ 12 ]
RussianWorld [Долгож... Ответов [ 12 ]
"Вот это прикол... Ответов [ 11 ]
West Постов [ 163 ]
Папа Постов [ 103 ]
Sup Постов [ 80 ]
Deni Постов [ 52 ]
WedMacK Постов [ 51 ]
apaccer Постов [ 50 ]
DriftStyle Постов [ 50 ]
XEK Постов [ 45 ]
AK47 Постов [ 44 ]
heyo Постов [ 36 ]
OffingSTДата [ 22.10.2023 ]
ЛексДата [ 30.09.2022 ]
ArsherДата [ 13.01.2021 ]
Graffiton5656Дата [ 13.01.2021 ]
Grom5656Дата [ 13.01.2021 ]
novok94Дата [ 15.09.2020 ]
ArsebДата [ 17.06.2020 ]
SANEK3826Дата [ 27.12.2019 ]
6twertwgdrgДата [ 13.08.2019 ]
zornik123Дата [ 23.07.2019 ]

Sitemap
Хостинг от uCoz