Sign in to follow this  
axblue

Подскажите алгоритм реализации авторизации игрока

Recommended Posts

Здравствуйте. Подскажите алгоритм авторизации игрока. 
Допустим, игрок коннектится на сервер, мы берем событие "playerJoin" и поэтому событию выводим форму авторизации? Как запретить что бы игрок не спавнился автоматом до авторизации? Дальше мы проверяем данные и спавним. 
Так же интересует вопрос при регистрации, а точнее при создании игрока. Я так понимаю после валидной регистрации мы игрока спавним в каком-то интерьере(здании) к нему привязываем камеру и редактируем модель?
Самый главный вопрос как вызвать форму авторизации при заходе на сервер и как запретить спавн до авторизации/регистрации?

Edited by axblue

Share this post


Link to post
Share on other sites

Спавна игрока не происходит до того момента, как вы сами его не заспавните.

Когда игрок подключается на сервер он появляется в дефолтной точке у гаража в городе и запускается ивент PlayerJoin.

Объясню как это работает у меня. (объясняю учитывая то, что ты уже знаешь как работает клиент-сервер и CEF)

При подключении игрока на сервер начинают свою работу 2 "главных" файла - index.js сервера и index.js клиента.

1. В клиенте я сразу замораживаю игрока, отключаю HUD, вызываю функцию браузера, которая отобразит форму авторизации, (заранее созданную(HTML+CSS+JS))

menu.execute(`showLoginForm('${mp.players.local.name}');`);
mp.players.local.freezePosition(true);
mp.game.ui.displayCash(false);
mp.game.ui.displayHud(false);
mp.game.ui.displayRadar(false);
mp.gui.chat.activate(false);
mp.gui.chat.show(false);

2. Игрок вводит свои данные в поля и нажимает кнопку авторизации.

3. После проверок на заполнение полей и прочего, клиент отправляет на сервер запрос в виде объекта типа 

var data = {
  type: 'auth',
  login: login,
  password: password
}
mp.events.callRemote('clientData', JSON.stringify(data));

4. Сервер, получив запрос с данными игрока проверяет, есть ли такой игрок в базе, верен ли пароль и в случае успешной проверки отправляет запрос клиенту (у меня опять же в виде объекта)

var data = { // в случае успешной авторизации
 type: 'success'
}
player.call("serverData", JSON.stringify(data));
player.spawn(...);

// или

var data = { // в случае неверно введенного пароля
 type: 'error',
 errorType: 'wrongPass'
}
player.call("serverData", JSON.stringify(data));

При получении ответа от сервера на клиенте ты либо закрываешь форму авторизации либо даешь уведомление о неверно введенных данных.

В случае успешной авторизации размораживаешь игрока, включаешь HUD и спавнишь а где посчитаешь нужным.

P.S. Объясняю я наверное не лучшим образом, но объяснил чисто последовательность действий. Если что-то не ясно - задавай.

Edited by Jake

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.