Jump to content

Recommended Posts

Posted (edited)

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

Edited by axblue
  • 1 month later...
Posted (edited)

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

Когда игрок подключается на сервер он появляется в дефолтной точке у гаража в городе и запускается ивент 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
  • Like 1

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...