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

Вопрос Синхронизация команды "вести за собой"

vladik865

Новый участник
5 Авг 2021
14
2
5
В общем проблема известная, при попытке вести за собой игрока на нем отключается управление, и применяется - localplayer.taskFollowToOffsetOf(entity.handle, 0, 0, 0, 1, -1, 1, true)

И на клиенте он идет за целью как следует, на других же клиентах он просто стоит и перемещается периодически, как можно синхронизировать данную команду через сервер? Думал передавать другим клиентам в радиусе передавать положение клиента но что делать с анимацией?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,494
1,382
211
27
Здравствуйте.

Дополнительно ничего не нужно делать, достаточно у клиента, которого ведут, отработать ту строчку, что Вы в теме и написали:
JavaScript:
localplayer.taskFollowToOffsetOf(entity.handle, 0, 0, 0, 1, -1, 1, true);
Этот код будет отрабатываться у него с клиента и сам синхронизироваться с сервером, а так же другими игроками. Работает этот способ на версиях и 0.3.7, и 1.1.
Это проверено. Ищите проблему в другом, если с этой строчкой у Вас не отображаются передвижения, возможно какой-то другой код клиента это обрывает?
 

vladik865

Новый участник
5 Авг 2021
14
2
5
Здравствуйте.

Дополнительно ничего не нужно делать, достаточно у клиента, которого ведут, отработать ту строчку, что Вы в теме и написали:
JavaScript:
localplayer.taskFollowToOffsetOf(entity.handle, 0, 0, 0, 1, -1, 1, true);
Этот код будет отрабатываться у него с клиента и сам синхронизироваться с сервером, а так же другими игроками. Работает этот способ на версиях и 0.3.7, и 1.1.
Это проверено. Ищите проблему в другом, если с этой строчкой у Вас не отображаются передвижения, возможно какой-то другой код клиента это обрывает?
Да вы правы, убрав все оказалось проблема вызвана командой - Player.StopAnimation()
при применении наручников, и не будет корректно работать пока игрок не сядет/выйдет из машины, вот и вопрос какой командой можно сбросить StopAnimation?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,494
1,382
211
27
Да вы правы, убрав все оказалось проблема вызвана командой - Player.StopAnimation()
при применении наручников, и не будет корректно работать пока игрок не сядет/выйдет из машины, вот и вопрос какой командой можно сбросить StopAnimation?
А в чём проблема сначала сбросить анимацию (выполнить player.StopAnimation), а после этого послать запрос на клиент, чтобы отработать код о преследовании?
UPD:
Да и в целом, насколько я помню, совсем не обязательно использовать сброс анимации перед использованием кода преследования, вроде как должно работать всё так, в таком случае стоит вопрос о смысле использования stopanimation?
 
Последнее редактирование:

vladik865

Новый участник
5 Авг 2021
14
2
5
А в чём проблема сначала сбросить анимацию (выполнить player.StopAnimation), а после этого послать запрос на клиент, чтобы отработать код о преследовании?
Так и делаю конечно, проблема в том то даже если игрок до этого через колесо анимаций вызовет сброс анимации то у меня (у ведущего) он будет телепортироваться, при этом если ведущий уйдет за область стриминга и вернется то снова все будет работать как нужно, получается что то нужно сделать на ведущем?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,494
1,382
211
27
Так и делаю конечно, проблема в том то даже если игрок до этого через колесо анимаций вызовет сброс анимации то у меня (у ведущего) он будет телепортироваться, при этом если ведущий уйдет за область стриминга и вернется то снова все будет работать как нужно, получается что то нужно сделать на ведущем?
Если игрока хотят повести, то перед тем, как его повести - сбрасывайте ему анимацию (и проверку о том, использует ли он кольцо анимаций, если таковая есть в моде, а я советую таковую использовать, чтобы игрок не имел возможности 'когда угодно' сделать stopanimation, ибо это может привести ко многим незапланированным ситуациям), после чего присваивайте ему какое-то значение, которым Вы сможете проверять ведёт его кто-то или нет и уже затем отправляйте вызов ивента с преследованием на клиент. В кольце анимаций сделайте проверку на то, что если кто-то 'меня' ведёт - просто отменяйте дальнейшую работу кода через return;.
Таким образом вы получаете:
а) При "Повести за собой" у игрока автоматически будет заканчиваться анимация.
б) Игрок не сможет вызвать новую анимацию (или отменить её) до тех пор, пока его ведут за собой.
 
Последнее редактирование:

vladik865

Новый участник
5 Авг 2021
14
2
5
Если игрока хотят повести, то перед тем, как его повести - сбрасывайте ему анимацию (и проверку о том, использует ли он кольцо анимаций, если таковая есть в моде, а я советую таковую использовать, чтобы игрок не имел возможности 'когда угодно' сделать stopanimation, ибо это может привести ко многим незапланированным ситуациям), после чего присваивайте ему какое-то значение, которым Вы сможете проверять ведёт его кто-то или нет и уже затем отправляйте вызов ивента с преследованием на клиент. В кольце анимаций сделайте проверку на то, что если кто-то 'меня' ведёт - просто отменяйте дальнейшую работу кода через return;.
Таким образом вы получаете:
а) При "Повести за собой" у игрока автоматически будет заканчиваться анимация.
б) Игрок не сможет вызвать новую анимацию (или отменить её) до тех пор, пока его ведут за собой.
Все верно игрок не может использовать анимацию в наручниках или когда его ведут за собой, но до этого может использовать кольцо анимацией, плюс опять же для сброса анимации руки вверх при использовании наручников используется команда stopanimation и вот после ее применения он будет телепортироваться у других игроков пока они не выйдут за область стриминга с ним, потом вернувшись в область стриминга все работает как надо до применения - stopanimation.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,494
1,382
211
27
Все верно игрок не может использовать анимацию в наручниках или когда его ведут за собой, но до этого может использовать кольцо анимацией, плюс опять же для сброса анимации руки вверх при использовании наручников используется команда stopanimation и вот после ее применения он будет телепортироваться у других игроков пока они не выйдут за область стриминга с ним, потом вернувшись в область стриминга все работает как надо до применения - stopanimation.
Сделай StopAnimation и отправь ивент на клиент, прождав, например, 250 мс. Этого должно быть достаточно.
ВАЖНО! Отправлять клиент ивенты можно только из главного потока (main thread), если это будет не главный поток - это будет потенциальное проблемное место, из-за которого когда-то может начать крашить сервер.
 

vladik865

Новый участник
5 Авг 2021
14
2
5
Сделай StopAnimation и отправь ивент на клиент, прождав, например, 250 мс. Этого должно быть достаточно.
ВАЖНО! Отправлять клиент ивенты можно только из главного потока (main thread), если это будет не главный поток - это будет потенциальное проблемное место, из-за которого когда-то может начать крашить сервер.
Все так и делаю, добавил задержку на отправку ивента на клиент в 500мс, ничего не изменилось, суть такая что на всех клиентах которые были в радиусе стриминга игрока который сбросил анимацию он перестает у них бегать просто стоит на месте и меняет позицию периодически, т.е. перестают работать его анимации в для всех игроков которые "видели" его stopanimation, если одеть наручники (сработает stopanimation) вылететь за область стриминга игрока тогда все работает как надо (а для тех кто не вылетел он телепортируется).
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,494
1,382
211
27
Все так и делаю, добавил задержку на отправку ивента на клиент в 500мс, ничего не изменилось, суть такая что на всех клиентах которые были в радиусе стриминга игрока который сбросил анимацию он перестает у них бегать просто стоит на месте и меняет позицию периодически, т.е. перестают работать его анимации в для всех игроков которые "видели" его stopanimation, если одеть наручники (сработает stopanimation) вылететь за область стриминга игрока тогда все работает как надо (а для тех кто не вылетел он телепортируется).
Хм, это очень странно, не сталкивался с такой проблемой никогда.
Можно, конечно, решить это всё костылём, отправляя всем в зоне стриминга этот ивент, но обозначая, что такой-то player должен двигаться за таким-то target. Но, повторюсь, это костыль и к такому прибегать я не советую. Впервые слышу про проблему, что даже через время после использования stopanimation у других игроков происходит такое. А попробуй для проверки увеличить время ожидания после последнего stopanimation на секунду или две, только для того, чтобы понять, будет ли работать всё как нужно, если подождать дольше с момента последней остановки анимации. Может есть какое-то конкретное количество времени, которое должно пройти, чтобы эта опция работала корректно для всех, кто был в зоне стриминга.
 

vladik865

Новый участник
5 Авг 2021
14
2
5
Хм, это очень странно, не сталкивался с такой проблемой никогда.
Можно, конечно, решить это всё костылём, отправляя всем в зоне стриминга этот ивент, но обозначая, что такой-то player должен двигаться за таким-то target. Но, повторюсь, это костыль и к такому прибегать я не советую. Впервые слышу про проблему, что даже через время после использования stopanimation у других игроков происходит такое. А попробуй для проверки увеличить время ожидания после последнего stopanimation на секунду или две, только для того, чтобы понять, будет ли работать всё как нужно, если подождать дольше с момента последней остановки анимации. Может есть какое-то конкретное количество времени, которое должно пройти, чтобы эта опция работала корректно для всех, кто был в зоне стриминга.
нет смысла увеличивать я проверял если использовать stopanimation такая проблема будет на всех клиентах "видевших" это пока они не выйдут за область стриминга этого игрока или этот игрок не сядет в транспорт, и не важно сколько времени пройдет. Вот я и думаю можно ли как то выкинуть игрока из стриминга? а точнее перезагрузить его для всех игроков в радиусе после применения stopanimation ?
 

vladik865

Новый участник
5 Авг 2021
14
2
5
Хм, это очень странно, не сталкивался с такой проблемой никогда.
Можно, конечно, решить это всё костылём, отправляя всем в зоне стриминга этот ивент, но обозначая, что такой-то player должен двигаться за таким-то target. Но, повторюсь, это костыль и к такому прибегать я не советую. Впервые слышу про проблему, что даже через время после использования stopanimation у других игроков происходит такое. А попробуй для проверки увеличить время ожидания после последнего stopanimation на секунду или две, только для того, чтобы понять, будет ли работать всё как нужно, если подождать дольше с момента последней остановки анимации. Может есть какое-то конкретное количество времени, которое должно пройти, чтобы эта опция работала корректно для всех, кто был в зоне стриминга.
"всем в зоне стриминга этот ивент"

была такая мысль когда думал что проблема в самой команде follow но это тоже не работает.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,494
1,382
211
27
нет смысла увеличивать я проверял если использовать stopanimation такая проблема будет на всех клиентах "видевших" это пока они не выйдут за область стриминга этого игрока или этот игрок не сядет в транспорт, и не важно сколько времени пройдет. Вот я и думаю можно ли как то выкинуть игрока из стриминга? а точнее перезагрузить его для всех игроков в радиусе после применения stopanimation ?
Это тоже будет считаться костылём. Если очень хочется ими пользоваться, то, как опцию, можешь сменить Dimension клиенту, которого хотят вести за собой, два раза. Но я бы так не делал, это в целом неправильно и выглядит отвратительно. Странно, что я никогда не встречался с тем, о чём ты говоришь. Всё работало в моём случае на обеих версиях мультиплеера и при любом количестве игроков рядом - для всех всё отображало корректно. Какой мод ты используешь?
 

vladik865

Новый участник
5 Авг 2021
14
2
5
Это тоже будет считаться костылём. Если очень хочется ими пользоваться, то, как опцию, можешь сменить Dimension клиенту, которого хотят вести за собой, два раза. Но я бы так не делал, это в целом неправильно и выглядит отвратительно. Странно, что я никогда не встречался с тем, о чём ты говоришь. Всё работало в моём случае на обеих версиях мультиплеера и при любом количестве игроков рядом - для всех всё отображало корректно. Какой мод ты используешь?
спасибо большое, это действительно плохой вариант решения но он хотя бы работает. Буду дальше проверять что может быть причиной, если найду причину такого поведения я напишу.