axblue Posted May 19, 2018 Posted May 19, 2018 (edited) Здравствуйте. Подскажите алгоритм авторизации игрока. Допустим, игрок коннектится на сервер, мы берем событие "playerJoin" и поэтому событию выводим форму авторизации? Как запретить что бы игрок не спавнился автоматом до авторизации? Дальше мы проверяем данные и спавним. Так же интересует вопрос при регистрации, а точнее при создании игрока. Я так понимаю после валидной регистрации мы игрока спавним в каком-то интерьере(здании) к нему привязываем камеру и редактируем модель? Самый главный вопрос как вызвать форму авторизации при заходе на сервер и как запретить спавн до авторизации/регистрации? Edited May 19, 2018 by axblue
Jake Posted July 4, 2018 Posted July 4, 2018 (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 July 5, 2018 by Jake 1
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now