• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Вопрос Менеджеринг авторизационной сессии

pationprime

Участник портала
15 Янв 2024
10
1
5
Доброго времени суток!

Хотелось бы услышать мнение опытных девов серверов rage mp по поводу авторизационной сессии. Как правильно хранить информацию о состоянии авторизации пользователя (залогинен/разлогинен). CEF клиент реализую с использованием React JS. Пробовал сохранять состояние в localStorage (дефолтный js localStorage), но, как я понял, CEF имеет какой-то другой протокол для локального хранилища, из-за чего не получается использовать в нем localStorage. Возможно, в рамках разработки серверов для rage mp используют какой-нибудь другой подход. Буду признателен любой информации!
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
681
340
161
29
Приветствую на форуме. Обычно при заходе на сервер игрок вновь и вновь вводит свои данные для входа. Что именно вы хотите сохранять?
 

Vermilion

Мастер
29 Сен 2021
869
645
151
34
Можешь хранить в Redux на пример
 

pationprime

Участник портала
15 Янв 2024
10
1
5
Привет! Спасибо за ответ!
Я бы хотел сохранять условное состояние, что игрок уже залогинился, чтобы ему не приходилось постоянно логиниться при перезапуске игры
Приветствую на форуме. Обычно при заходе на сервер игрок вновь и вновь вводит свои данные для входа. Что именно вы хотите сохранять?
 

pationprime

Участник портала
15 Янв 2024
10
1
5
Можешь хранить в Redux на пример
А разве Redux не хранит состояние только в runtime?
Насколько я знаю (по опыту в из других сфер разработки), Redux - это реактивный стейт менеджер, но он лишь осуществяет менеджмент состояния, но в runtime, чтобы менеджерить какое-то поведение, ту же авторизацию, ему необходимы данные, которые как раз-таки и должны храниться в памяти, а не только в runtime
 

Vermilion

Мастер
29 Сен 2021
869
645
151
34

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
681
340
161
29

pationprime

Участник портала
15 Янв 2024
10
1
5
Вы все правильно изночально делали. Можете при первом логине игрока сгенерировать ключ авторизации и сохранить его на клиенте в https://wiki.rage.mp/index.php?title=Storage.data
Для валидации я бы посоветовал сопоставлять дополнительно SocialID игрока https://wiki.rage.mp/index.php?title=Player::rgscId
О, а вот это выглядит как то, что мне нужно. Большое спасибо! Буду пробовать
 
  • Like
Реакции: X-Clusiv

Vermilion

Мастер
29 Сен 2021
869
645
151
34
В твоем случае нужно реализировать это на стороне сервера. К примеру, при успешной авторизации добавлять steamID игрока в хранилище авторизированных пользователей.
Так же на стороне сервера создавать евент «playerReady» в котором получать тот самый steamIDи и если он существует в хранилище - пускать на сервер.
Такие вещи лучше не делать на стороне клиента по причинам безопасности. Опять же таки, необходимо больше информации какая задача перед тобой стоит.
 
  • Like
Реакции: pationprime

pationprime

Участник портала
15 Янв 2024
10
1
5
Вы все правильно изночально делали. Можете при первом логине игрока сгенерировать ключ авторизации и сохранить его на клиенте в https://wiki.rage.mp/index.php?title=Storage.data
Для валидации я бы посоветовал сопоставлять дополнительно SocialID игрока https://wiki.rage.mp/index.php?title=Player::rgscId
Подскажите, а есть пример реализации на C#?
 

Vermilion

Мастер
29 Сен 2021
869
645
151
34
Код:
//server-side
mp.events.add("playerReady", (player) => {
    const scid = player.rgscId;
})
 

Vermilion

Мастер
29 Сен 2021
869
645
151
34
Подскажите, а есть пример реализации на C#?
server-side C#
Код:
using GTANetworkAPI;

public class YourScript : Script
{
    public YourScript()
    {
        API.onPlayerConnected += OnPlayerConnected;
    }

    private void OnPlayerConnected(Client player)
    {
        string scid = player.socialClubName;
    }
}
 

enotit

Гуру
13 Ноя 2020
936
419
127
21
server-side C#
Код:
using GTANetworkAPI;

public class YourScript : Script
{
    public YourScript()
    {
        API.onPlayerConnected += OnPlayerConnected;
    }

    private void OnPlayerConnected(Client player)
    {
        string scid = player.socialClubName;
    }
}
Поправочка

C#:
using GTANetworkAPI;

public class YourScript : Script
    {
        [ServerEvent(Event.PlayerConnected)]
        private void OnPlayerConnected(Player player)
        {
            var sc = player.SocialClubName;
        }
    }
 
  • Like
Реакции: Vermilion

pationprime

Участник портала
15 Янв 2024
10
1
5
Поправочка

C#:
using GTANetworkAPI;

public class YourScript : Script
    {
        [ServerEvent(Event.PlayerConnected)]
        private void OnPlayerConnected(Player player)
        {
            var sc = player.SocialClubName;
        }
    }
Как я понял, таким образом, я могу получить данные о SocialClub, подключившегося пользователя. Но я не совсем понимаю как это связано с записью данных в локальное хранилище?

Если говорить про JS, выше подсказали, что можно использовать Storage.data для доступа к локальному хранилищу. Таким образом в него можно записать какие-то авторизационные данные, условный accessToken. Есть ли такой функционал в C#?
 

enotit

Гуру
13 Ноя 2020
936
419
127
21
Немного не понимаю зачем такую авторизацию делать? Чем исконно славянский player.SetData("CharacterId", <ID>); не угодил?
 

enotit

Гуру
13 Ноя 2020
936
419
127
21
Тебе аутентификация CEF - SERVER нужно? Тебе в любом случае через клиент пробиваться. А setData / getData юзай и будет тебе счастья.
 

pationprime

Участник портала
15 Янв 2024
10
1
5
Тебе аутентификация CEF - SERVER нужно? Тебе в любом случае через клиент пробиваться. А setData / getData юзай и будет тебе счастья.
Да, именно CEF-SERVER. Я понимаю что через клиент придётся стучаться само-собой.
Спасибо за подсказу.
Не будет затруднительно пример использования setData / getData привести?
 

pationprime

Участник портала
15 Янв 2024
10
1
5
Тебе аутентификация CEF - SERVER нужно? Тебе в любом случае через клиент пробиваться. А setData / getData юзай и будет тебе счастья.
Я так понимаю
https://wiki.rage.mp/index.php?title=Entity::getData
https://wiki.rage.mp/index.php?title=Entity::setData&action=edit&redlink=1
это и есть то, о чём ты мне говоришь. Только не совсем понятно как грамотно юзать данные методы
 

enotit

Гуру
13 Ноя 2020
936
419
127
21
Я так понимаю
https://wiki.rage.mp/index.php?title=Entity::getData
https://wiki.rage.mp/index.php?title=Entity::setData&action=edit&redlink=1
это и есть то, о чём ты мне говоришь. Только не совсем понятно как грамотно юзать данные методы
Советую взять что-то слитое (redage), поиграть и поисправлять для себя
 
  • Dislike
  • Like
Реакции: MiLT и pationprime