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

Вопрос entityStreamIn + анимация + флаг (синхронизация)

qweqweqwe123123123

Участник портала
24 Июн 2025
71
10
18
Привет. Подскажи пожалуйста, весь день голову ломаю...

Как создается синхронизации анимаций ? Она пишется для двух случаев:
1) кто в зоне стрима (mp.players.forEachInRange)
2) кто зайдет в этот стрим (entityStreamIn)

пример на котором проверялось: dict: "amb@medic@standing@tendtodead@idle_a", name: "idle_a",

1ый вариант работает. Я вызываю на сервере mp.players.forEachInRange, дергается событие на клиенты в зоне стрима, на этих клиентах вызывается taskPlayAnim и все работает (flag=1).

2ой вариант работает частично. Игрок1 появляется в зоне стрима Игрока2. Это отлавливает событие entityStreamIn, далее вызывается все тот же taskPlayAnim.
Вот тут сама проблема. Анимация при flag=1 не работает! Ну просто не воспроизводиться анимация. Если я изменю значение flag=48, - работать будет.

Суть: Почему 1ый вариант работает с flag=1, а 2ой вариант НЕ работает с flag=1 ? Но при этом 2ой вариант работает с flag=48. Как flag влияет на это ?!

Вы скажете, надо поставить setTimeout или у тебя код не отрабатывает или в if не заходит. Нет. Все работает. И setTimeout стоит. И консоль логами я проверил, что везде зашло.

Почему у меня флаг 1 работает через первый вариант (mp.players.forEachInRange). А флаг 1 через entityStreamIn - не работает ? Но при этом флаг 48 работает через entityStreamIn...
 
Последнее редактирование:

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,867
290
100
Привет! Разница в поведении флагов связана с тем, когда именно вызывается taskPlayAnim в момент стрима.

Флаг 1 (ANIM_FLAG_LOOP) обычно работает, когда анимация запускается сразу и игрок "готов" к проигрыванию. При entityStreamIn игрок может быть еще не полностью "загружен" на клиенте, поэтому анимация с флагом 1 не стартует.

Флаг 48 включает в себя дополнительные параметры (например, ANIM_FLAG_LOOP + ANIM_FLAG_ALLOW_UPPERBODY + другие), что помогает анимации стартовать корректно даже в момент стрима.

Решение: при entityStreamIn делай небольшую задержку (например, 100-200 мс) перед вызовом taskPlayAnim с флагом 1 либо используй флаг 48, который более "устойчив".

В общем, флаг влияет на поведение и приоритет анимации, а момент вызова важен, т.к. в entityStreamIn объекты еще "инициализируются" на клиенте.

Попробуй так и отпишись, если надо — помогу с примером кода!
 

Similar threads