• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в 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/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


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

Вопрос как добавить нпс из сюжетки гта ?

huledesu

Участник портала
Автор темы
28 Июн 2022
2
0
6
Мне хотелось бы найти инфу по поводу добавления на сервер нпс(типо трафика), как в гта онлайн и в сюжетке, чтобы те заполнили город. Я создал сервер для своих друзей фор фан, но так как сервак не превышает онлайна в 100, я бы хотел, чтобы по всей карте были нпс, как в сюжетке, но найти достаточной инфы не смог. Знаю лишь, что такое практикуют на серваках с вайт листами, что и сам хочу сделать.
 
Последнее редактирование:

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Стандартная система трафика включается достаточно просто, нужно лишь прописать на клиенте вот это:
JavaScript:
mp.game.ped.removeScenarioBlockingArea();
mp.game.streaming.setPedPopulationBudget(3);
mp.game.ped.setCreateRandomCops(true);
mp.game.vehicle.setRandomBoats(true);
mp.game.vehicle.setRandomTrains(true);
mp.game.vehicle.setGarbageTrucks(true);
mp.game.streaming.setVehiclePopulationBudget(3);
mp.game.invoke('0x34AD89078831A4BC'); // SET_ALL_VEHICLE_GENERATORS_ACTIVE
mp.game.vehicle.setAllLowPriorityVehicleGeneratorsActive(true);
mp.game.vehicle.setNumberOfParkedVehicles(-1);
mp.game.vehicle.displayDistantVehicles(true);
mp.game.graphics.disableVehicleDistantlights(false);
Код взят отсюда.


Одна лишь проблема в этом всём - это клиентский код и он НЕ синхронизирован между игроками, то есть у игрока А будут нпц в одном месте, у игрока Б в другом, а у игрока В в третьем и так до бесконечности, потому что отрисовка у каждого своя на своём клиенте.
Проблема: так как на разных компьютерах будут разные передвижения, то может получиться так, что на экране игрока А игрок Б будет врезаться в нпц, которые отрисованы на экране игрока А при том, что на экране игрока Б этих нпц нет, они для него в другом месте. Так что это решение (для общего мира) плохое. Оно бы подошло лучше для использования в каком-то отдельном Dimension'е, например, когда происходит тестдрайв машины из автосалона и в этом мире находится только 1 человек, тогда синхронизация и не нужна.
А чтобы сделать систему синхронизированной - код выше не будет использоваться в принципе, тебе понадобится самостоятельно написать код, который будет создавать нпц, создавать для них машины, усаживать их туда, передвигать и при этом синхронизировать между игроками.
По своему опыту написания данной системы и общение с несколькими англоязычными разработчиками пришёл к выводу, что сейчас эту систему хоть и можно написать, но RAGE недостаточно к этому готов и, к сожалению, система будет работать, но с багами, которые в данный момент исправить просто невозможно по причине недостатка возможностей в RAGE. Помимо этого у меня даже есть готовый пример такой системы, которая, как я и сказал, работает, но до ума её сейчас довести невозможно из-за ограничений в передаче Controller'а на стороне сервера.
 
Последнее редактирование:
  • Like
Реакции: Inoi и huledesu

LET

Начинающий специалист
16 Апр 2021
21
5
60
Стандартная система трафика включается достаточно просто, нужно лишь прописать на клиенте вот это:
JavaScript:
mp.game.ped.removeScenarioBlockingArea();
mp.game.streaming.setPedPopulationBudget(3);
mp.game.ped.setCreateRandomCops(true);
mp.game.vehicle.setRandomBoats(true);
mp.game.vehicle.setRandomTrains(true);
mp.game.vehicle.setGarbageTrucks(true);
mp.game.streaming.setVehiclePopulationBudget(3);
mp.game.invoke('0x34AD89078831A4BC'); // SET_ALL_VEHICLE_GENERATORS_ACTIVE
mp.game.vehicle.setAllLowPriorityVehicleGeneratorsActive(true);
mp.game.vehicle.setNumberOfParkedVehicles(-1);
mp.game.vehicle.displayDistantVehicles(true);
mp.game.graphics.disableVehicleDistantlights(false);
Код взят отсюда.


Одна лишь проблема в этом всём - это клиентский код и он НЕ синхронизирован между игроками, то есть у игрока А будут нпц в одном месте, у игрока Б в другом, а у игрока В в третьем и так до бесконечности, потому что отрисовка у каждого своя на своём клиенте.
Проблема: так как на разных компьютерах будут разные передвижения, то может получиться так, что на экране игрока А игрок Б будет врезаться в нпц, которые отрисованы на экране игрока А при том, что на экране игрока Б этих нпц нет, они для него в другом месте. Так что это решение (для общего мира) плохое. Оно бы подошло лучше для использования в каком-то отдельном Dimension'е, например, когда происходит тестдрайв машины из автосалона и в этом мире находится только 1 человек, тогда синхронизация и не нужна.
А чтобы сделать систему синхронизированной - код выше не будет использоваться в принципе, тебе понадобится самостоятельно написать код, который будет создавать нпц, создавать для них машины, усаживать их туда, передвигать и при этом синхронизировать между игроками.
По своему опыту написания данной системы и общение с несколькими англоязычными разработчиками пришёл к выводу, что сейчас эту систему хоть и можно написать, но RAGE недостаточно к этому готов и, к сожалению, система будет работать, но с багами, которые в данный момент исправить просто невозможно по причине недостатка возможностей в RAGE. Помимо этого у меня даже есть готовый пример такой системы, которая, как я и сказал, работает, но до ума её сейчас довести невозможно из-за ограничений в передаче Controller'а на стороне сервера.
Недавно на RedAge был тестовый период с NPC на сервере. Их было очень много и всё довольно неплохо работало. Не идеально, но работало. И синхронизировалось.
Не знаешь кто это писал случайно? ;-)
 
  • Like
Реакции: huledesu

huledesu

Участник портала
Автор темы
28 Июн 2022
2
0
6
Стандартная система трафика включается достаточно просто, нужно лишь прописать на клиенте вот это:
JavaScript:
mp.game.ped.removeScenarioBlockingArea();
mp.game.streaming.setPedPopulationBudget(3);
mp.game.ped.setCreateRandomCops(true);
mp.game.vehicle.setRandomBoats(true);
mp.game.vehicle.setRandomTrains(true);
mp.game.vehicle.setGarbageTrucks(true);
mp.game.streaming.setVehiclePopulationBudget(3);
mp.game.invoke('0x34AD89078831A4BC'); // SET_ALL_VEHICLE_GENERATORS_ACTIVE
mp.game.vehicle.setAllLowPriorityVehicleGeneratorsActive(true);
mp.game.vehicle.setNumberOfParkedVehicles(-1);
mp.game.vehicle.displayDistantVehicles(true);
mp.game.graphics.disableVehicleDistantlights(false);
Код взят отсюда.


Одна лишь проблема в этом всём - это клиентский код и он НЕ синхронизирован между игроками, то есть у игрока А будут нпц в одном месте, у игрока Б в другом, а у игрока В в третьем и так до бесконечности, потому что отрисовка у каждого своя на своём клиенте.
Проблема: так как на разных компьютерах будут разные передвижения, то может получиться так, что на экране игрока А игрок Б будет врезаться в нпц, которые отрисованы на экране игрока А при том, что на экране игрока Б этих нпц нет, они для него в другом месте. Так что это решение (для общего мира) плохое. Оно бы подошло лучше для использования в каком-то отдельном Dimension'е, например, когда происходит тестдрайв машины из автосалона и в этом мире находится только 1 человек, тогда синхронизация и не нужна.
А чтобы сделать систему синхронизированной - код выше не будет использоваться в принципе, тебе понадобится самостоятельно написать код, который будет создавать нпц, создавать для них машины, усаживать их туда, передвигать и при этом синхронизировать между игроками.
По своему опыту написания данной системы и общение с несколькими англоязычными разработчиками пришёл к выводу, что сейчас эту систему хоть и можно написать, но RAGE недостаточно к этому готов и, к сожалению, система будет работать, но с багами, которые в данный момент исправить просто невозможно по причине недостатка возможностей в RAGE. Помимо этого у меня даже есть готовый пример такой системы, которая, как я и сказал, работает, но до ума её сейчас довести невозможно из-за ограничений в передаче Controller'а на стороне сервера.
спасибо за ответ, но когда я разбирался с этим вопросом, чубрики упоминали, что на Fivem тему с нпс часто практиковали, не мог бы ты рассказать побольше ?
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Недавно на RedAge был тестовый период с NPC на сервере. Их было очень много и всё довольно неплохо работало. Не идеально, но работало. И синхронизировалось.
Не знаешь кто это писал случайно? ;-)
Это и была моя система.
И я не хотел, чтобы она там выходила, но они попросили - я дал.
Она работает, как я и сказал, но это достаточно посредственный вариант её работы. Лучше её в данный момент не сделать из-за ограничений передачи Controller'а, который и отвечает в нашем случае за то, кто из игроков "синхронизирует" машину и нпц для других игроков.
 
  • Like
Реакции: LET

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
спасибо за ответ, но когда я разбирался с этим вопросом, чубрики упоминали, что на Fivem тему с нпс часто практиковали, не мог бы ты рассказать побольше ?
Я уже, в целом, всё сказал, что у меня есть на данную тему.
FiveM это совершенно другой мультиплеер, который работает и построен иначе, поэтому там это возможно. Разные мультиплееры - разные особенности/проблемы/плюсы.
На RAGE же систему можно сделать, она будет работать, но относительно не очень, ни с точки зрения игрока, ни с точки зрения бэкэнда.
Подобия таких систем лежат в открытом доступе за бесплатно в интернете, спокойно можно найти. Идеальной системы пока нет и сделать невозможно, так что либо пользоваться тем, что есть, либо не трогать в принципе, до тех пор, пока, как минимум, не будет качественной реализации передачи Controller'а со стороны RAGE. В данный момент автоматически этот контроллер передаётся очень плохо (например, по логике должен был бы передаваться от того, кто выходит из зоны стрима тому, кто ближе всего к NPC, но работает совершенно не так), а если назначать руками - на сервере будет десинхронизация этих NPC (у которых изменилось значение контроллера) на ~5 секунд. Если рассматривать вариант взаимодействия с каким-то мало-подвижным NPC, то это еще может как-то работать, но когда разговор идёт о передвижении огромного количества машин, то за эти 5 секунд машина может успеть и въехать в зону стрима и выехать, но из-за этой десинхронизации вы об этом даже не узнаете, для вас машина будет стоять, хотя по серверу она как-будто бы двигается. В общем, в данный момент реализация подобной системы без багов - к сожалению не возможна.
 
Последнее редактирование:
  • Like
Реакции: huledesu

Randomchik

Гуру
high coder
19 Сен 2020
822
319
141
Я уже, в целом, всё сказал, что у меня есть на данную тему.
FiveM это совершенно другой мультиплеер, который работает и построен иначе, поэтому там это возможно. Разные мультиплееры - разные особенности/проблемы/плюсы.
На RAGE же систему можно сделать, она будет работать, но относительно не очень, ни с точки зрения игрока, ни с точки зрения бэкэнда.
Подобия таких систем лежат в открытом доступе за бесплатно в интернете, спокойно можно найти. Идеальной системы пока нет и сделать невозможно, так что либо пользоваться тем, что есть, либо не трогать в принципе, до тех пор, пока, как минимум, не будет качественной реализации передачи Controller'а со стороны RAGE. В данный момент автоматически этот контроллер передаётся очень плохо (например, по логике должен был бы передаваться от того, кто выходит из зоны стрима тому, кто ближе всего к NPC, но работает совершенно не так), а если назначать руками - на сервере будет десинхронизация этих NPC (у которых изменилось значение контроллера) на ~5 секунд. Если рассматривать вариант взаимодействия с каким-то мало-подвижным NPC, то это еще может как-то работать, но когда разговор идёт о передвижении огромного количества машин, то за эти 5 секунд машина может успеть и въехать в зону стрима и выехать, но из-за этой десинхронизации вы об этом даже не узнаете, для вас машина будет стоять, хотя по серверу она как-будто бы двигается. В общем, в данный момент реализация подобной системы без багов - к сожалению не возможна.
Да согласен, пытался тоже делать, только на охоте. На педе контроллер висит, и когда пед начинает убегать, то на клиенте он остаётся на месте, а на сервере он отображает реальную координату. Поэтому на клиенте и нельзя отследить вышел ли со стрима или нет, так как позицию педа будет брать при его спавне, а не нынешнее. Но самое интересное, что когда игрок вылетит со стрима и залети обратно, позиция педа изменится, и станет реальной
 
  • Like
Реакции: huledesu