• Из-за обновления 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) последний раз были обновлены:

Вопрос прод сборка проекта

ilhmjv

Начинающий специалист
18 Июл 2021
75
2
45
Привет. Кто знает, каким образом грамотно можно собрать React CEF?

browser = await mp.browsers.new(http://localhost:3000/sign);
Вот таким образом вызываю браузер в client_packages, и бегаю по маршрутам. Сами файлы CEF на react + typescript находятся в отдельной папке client. Для разработки все понятно, запускаю реакт проект и захожу на сервер. А что по поводу продакшена? Запускать на хостинге реакт не очень... Все может полететь из за любой ошибки у любого из пользователей.... Как можно грамотно собрать такой проект? На сколько я понимаю эта практика существует, я даже видел видос на ютубе, откуда и узнал о таком способе но почему то сейчас я не могу его найти..
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,292
1,533
211
27
Во-первых, await'ить mp.browsers.new не нужно (почему-то, в последнее время все вокруг всё пытаются за await'ить, как будто бы даже близко не понимая зачем это нужно).
Во-вторых, путь по localhost:3000 - подходит только для тестирования, для твоих игроков этот вариант не подойдёт, нужно иметь файлы в папке client_packages, к которым будет держаться путь ( mp.browsers.new("package://путь до файла"); ).
Если же ты хочешь оставить это всё удаленно, то тебе нужно поднять веб сайт, на котором будут лежать все эти файлы, и, соответственно, указывать путь уже до них ( mp.browsers.new("https://сайт/путь до файла"); ).
 

ilhmjv

Начинающий специалист
18 Июл 2021
75
2
45
Во-первых, await'ить mp.browsers.new не нужно (почему-то, в последнее время все вокруг всё пытаются за await'ить, как будто бы даже близко не понимая зачем это нужно).
Во-вторых, путь по localhost:3000 - подходит только для тестирования, для твоих игроков этот вариант не подойдёт, нужно иметь файлы в папке client_packages, к которым будет держаться путь ( mp.browsers.new("package://путь до файла"); ).
Если же ты хочешь оставить это всё удаленно, то тебе нужно поднять веб сайт, на котором будут лежать все эти файлы, и, соответственно, указывать путь уже до них ( mp.browsers.new("https://сайт/путь до файла"); ).
Я не знал как работает конкретно метод mp.browsers.new и не знал что он синхронный, так как писал этот кусок кода давно. Я понимаю что не пойдет через http://localhost:3000, можно ли как то сделать сборку на вебпаке, или как то по другому, что бы я просто прописал для продакшена mp.browsers.new(package:путь)? Что бы роуты из маршрутизации сделались отдельными файлами
 

ready to massacre

Активный участник
4 Мар 2023
153
93
40
Вот пример
раз, два
далее кладешь свой реакт в ./server-files/client_packages/(папка с cef)/index.html
пример не тривиальный, но суть ты должен понять
 

ilhmjv

Начинающий специалист
18 Июл 2021
75
2
45
Вот пример
раз, два
далее кладешь свой реакт в ./server-files/client_packages/(папка с cef)/index.html
пример не тривиальный, но суть ты должен понять
Судя по всему ты запихнул все компоненты в один, и показываешь их когда это нужно? Я думал о такой реализации, но подумал что будет очень не оптимизировано... Но похоже это единственный способ.
 

ilhmjv

Начинающий специалист
18 Июл 2021
75
2
45

ready to massacre

Активный участник
4 Мар 2023
153
93
40
Но с другой стороны ведь, интерфейсов для РП проекта гараздо больше...
ну я пока не открыл для себя другой адекватный способ, кроме как
JavaScript:
return <></> // в компоненте, который в данный момент времени неактивный

можно заморочиться с пересозданием mp.browsers.new и для каждой абстракции юзать свой цеф, но чет мне кажется это еще хуже вариант
 

ilhmjv

Начинающий специалист
18 Июл 2021
75
2
45
ну я пока не открыл для себя другой адекватный способ, кроме как
JavaScript:
return <></> // в компоненте, который в данный момент времени неактивный

можно заморочиться с пересозданием mp.browsers.new и для каждой абстракции юзать свой цеф, но чет мне кажется это еще хуже вариант
Я думаю создать браузер один раз, и сделать условный рендеринг в корневом компоненте. На клиенте сделать событие для того что бы дергать его с сервера когда нужно менять "тип" Интерфейса, я думаю если будет использоваться условный рендеринг то тогда будет лучше с оптимизацией. Так как учитывая даже если у тебя стоит изменение стилей внутри компонента для отображения или скрытия, реакт прежде всего все равно рендерит все эти компоненты, то есть создает их на дом дереве а по условному рендерингу по идее он будет рендерить только то что ему нужно, так как инфы о других интерфейсах у него еще нету...
 

ready to massacre

Активный участник
4 Мар 2023
153
93
40
Я думаю создать браузер один раз, и сделать условный рендеринг в корневом компоненте. На клиенте сделать событие для того что бы дергать его с сервера когда нужно менять "тип" Интерфейса, я думаю если будет использоваться условный рендеринг то тогда будет лучше с оптимизацией. Так как учитывая даже если у тебя стоит изменение стилей внутри компонента для отображения или скрытия, реакт прежде всего все равно рендерит все эти компоненты, то есть создает их на дом дереве а по условному рендерингу по идее он будет рендерить только то что ему нужно, так как инфы о других интерфейсах у него еще нету...
если у тебя в типе интерфейсов будут вложенные компоненты, то при каждом изменение типа ре-рендеринга имхо будет больше, чем ты просто делаешь return <></>
а вообще я не фронтер, я бекендер, поэтому не бери мои слова за чистую монету
 

ilhmjv

Начинающий специалист
18 Июл 2021
75
2
45
если у тебя в типе интерфейсов будут вложенные компоненты, то при каждом изменение типа ре-рендеринга имхо будет больше, чем ты просто делаешь return <></>
а вообще я не фронтер, я бекендер, поэтому не бери мои слова за чистую монету
Возможно, но я попробую пока так.