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

Вопрос await в асинхронных функциях

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,333
792
181
34
Подскажите, как правильно сделать await в асинхронной функции на удаление объекта, который был прикреплен к игроку? TypeScript
Код:
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
async attachObject(objectIdx: number) {
        const object = this.objects[objectIdx];
        const obj = mp.objects.new(object.name,this.player.position,{});
        await sleep (2000);
        obj.attachTo(this.player.handle, this.player.getBoneIndex(28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, false, false, false, false, 2, true);
        /* await obj.isAttachedToAnyPed() */ ???
        obj.destroy();
    }
 
Последнее редактирование:

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,315
237
100
Чтобы дождаться прикрепления объекта к игроку и затем удалить его, можно использовать цикл с задержкой и проверкой условия. Вот как это можно сделать:

Код:
async attachObject(objectIdx: number) {
  const objectName = this.objects[objectIdx];
  const createObject = mp.objects.new(objectName, this.player.position, {});
  await sleep(1000);

  createObject.attachTo(
    this.player.handle,
    this.player.getBoneIndex(28422),
    0.0,
    0.0,
    0.0,
    0.0,
    0.0,
    0.0,
    false,
    false,
    false,
    false,
    2,
    true
  );

  while (!createObject.isAttachedToAnyPed()) {
    await sleep(100); // Подождать 100 миллисекунд
  }

  createObject.destroy();
}

В данном коде мы используем цикл while для проверки условия isAttachedToAnyPed(). Если объект все еще не прикреплен к какому-либо персонажу, мы ждем 100 миллисекунд и повторяем проверку. Когда объект прикрепляется, мы выходим из цикла и уничтожаем объект.
 
Реакции: Vermilion