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

Проблема Прикрепить объект к авто

Valdemar

Новый участник
1 Авг 2025
31
0
8
Нужно что-бы при клике на Е, если авто погрузчик у контейнера, контейнер прикреплялся к погрузчику.
Я нашел скриптик на эту тему, попробовал переписать, но он не работает:

JavaScript:
const model = -629735826;
let container = mp.game.object.createObject(model, 1011, -3181, 5, true, false, true);

mp.keys.bind(0x45, true, () => {
    mp.events.call('pickupContainer');
});

mp.events.add('pickupContainer', () => {
    const player = mp.players.local;
    if(player.vehicle) {
        const vehicle = player.vehicle;
        const boneIndex = vehicle.getBoneIndexByName("chassis");
        const bonePosition = vehicle.getWorldPositionOfBone(boneIndex);
        mp.gui.chat.push(`Позиция: ${bonePosition.x}, ${bonePosition.y}, ${bonePosition.z}`);
        const objectContainer = mp.objects.atHandle(container);
        if(objectContainer) {
        const objPos = objectContainer.position;
        const distance = mp.game.gameplay.getDistanceBetweenCoords(
        bonePosition.x, bonePosition.y, bonePosition.z,
        objPos.x, objPos.y, objPos.z,
        true
    );
        mp.gui.chat.push(`Дистанция: ${distance}`);

        if(distance < 10) {
            objectContainer.attachTo(vehicle.handle, boneIndex, 0, 0, 0, 0, 0, 0, true, true, false, false, 2, true);
            mp.gui.chat.push("Контейнер закреплен!");
        }
        }
    }
})

Позиция кости авто(bonePosition) выводится в чат, а вот дистанция нет, соответствено все что после этого тоже не работает. Не понимаю почему.
Возможно неправильный boneIndex ->
JavaScript:
const boneIndex = vehicle.getBoneIndexByName("chassis");
Хотя я перепробовал все кости связанные с fork и не только.
 

Вложения

  • 1760305737313.png
    1760305737313.png
    629.8 KB · Просмотры: 21

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,601
254
100
Проблема может быть связана с тем, что вы используете неправильное имя кости для автомобиля. Вам нужно убедиться, что вы указываете правильное именование кости, которая именно соответствует месту, где вы хотите прикрепить контейнер.

Попробуйте изменить строку, где вы получаете индекс кости автомобиля на что-то подобное:

JavaScript:
const boneIndex = vehicle.getBoneIndexByName("attach_female");

Где "attach_female" - это имя кости, возможно, соответствующее месту прикрепления контейнера. После этого убедитесь, что ваш контейнер находится в правильном месте для привязки к автомобилю и поработайте над дальнейшей логикой прикрепления контейнера к автомобилю.
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,538
928
181
35
Проблема в том, что objectContainer у тебя undefined. Если более точнее, вот этот метод не находит твой контейнер.

Код:
const objectContainer = mp.objects.atHandle(container);

Что бы убедиться, добавь после этой строки консоль:
Код:
mp.console.logInfo(objectContainer)
 

Valdemar

Новый участник
1 Авг 2025
31
0
8
Проблема в том, что objectContainer у тебя undefined. Если более точнее, вот этот метод не находит твой контейнер.

Код:
const objectContainer = mp.objects.atHandle(container);

Что бы убедиться, добавь после этой строки консоль:
Код:
mp.console.logInfo(objectContainer)
Короче как я понял я не могу в этом коде работать с mp.objects.atHandle и mp.game.object.getClosestObjectOfType тк они дают число, а мне же надо ObjectMp для atHandle.
JavaScript:
const model = mp.game.joaat("prop_container_01a");
let container = mp.game.object.createObject(model, 1011, -3181, 5, true, false, true);

mp.keys.bind(0x45, true, () => {
    mp.events.call('pickupContainer');
});

mp.events.add('pickupContainer', () => {
    const player = mp.players.local;
    if(player.vehicle) {
        const vehicle = player.vehicle;
        const boneIndex = vehicle.getBoneIndexByName("attach_female");
        const bonePosition = vehicle.getWorldPositionOfBone(boneIndex);
        mp.gui.chat.push(`Позиция: ${bonePosition.x}, ${bonePosition.y}, ${bonePosition.z}`);
        const containerHandle = mp.game.object.getClosestObjectOfType(player.position.x, player.position.y, player.position.z, 5, mp.game.joaat("prop_container_01a"), true, true, true);
       
        const objectContainer = mp.objects.atHandle(containerHandle);
        mp.console.logInfo(containerHandle);
        if(objectContainer) {
        const objPos = objectContainer.position;
        const distance = mp.game.gameplay.getDistanceBetweenCoords(
        bonePosition.x, bonePosition.y, bonePosition.z,
        objPos.x, objPos.y, objPos.z,
        true
    );
        mp.gui.chat.push(`Дистанция: ${distance}`);

        if(distance < 10) {
            objectContainer.attachTo(vehicle.handle, boneIndex, 0, 0, 0, 0, 0, 0, true, true, false, false, 2, true);
            mp.gui.chat.push("Контейнер закреплен!");
        }
        }
    }
})
invoke тоже попробовал, как тогда сделать?
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,538
928
181
35
Короче как я понял я не могу в этом коде работать с mp.objects.atHandle и mp.game.object.getClosestObjectOfType тк они дают число, а мне же надо ObjectMp для atHandle.
JavaScript:
const model = mp.game.joaat("prop_container_01a");
let container = mp.game.object.createObject(model, 1011, -3181, 5, true, false, true);

mp.keys.bind(0x45, true, () => {
    mp.events.call('pickupContainer');
});

mp.events.add('pickupContainer', () => {
    const player = mp.players.local;
    if(player.vehicle) {
        const vehicle = player.vehicle;
        const boneIndex = vehicle.getBoneIndexByName("attach_female");
        const bonePosition = vehicle.getWorldPositionOfBone(boneIndex);
        mp.gui.chat.push(`Позиция: ${bonePosition.x}, ${bonePosition.y}, ${bonePosition.z}`);
        const containerHandle = mp.game.object.getClosestObjectOfType(player.position.x, player.position.y, player.position.z, 5, mp.game.joaat("prop_container_01a"), true, true, true);
    
        const objectContainer = mp.objects.atHandle(containerHandle);
        mp.console.logInfo(containerHandle);
        if(objectContainer) {
        const objPos = objectContainer.position;
        const distance = mp.game.gameplay.getDistanceBetweenCoords(
        bonePosition.x, bonePosition.y, bonePosition.z,
        objPos.x, objPos.y, objPos.z,
        true
    );
        mp.gui.chat.push(`Дистанция: ${distance}`);

        if(distance < 10) {
            objectContainer.attachTo(vehicle.handle, boneIndex, 0, 0, 0, 0, 0, 0, true, true, false, false, 2, true);
            mp.gui.chat.push("Контейнер закреплен!");
        }
        }
    }
})
invoke тоже попробовал, как тогда сделать?
Как раз для atHandle и нужно число хэндла. На каком моменте объект теряется? Добавь больше логов. Ты какой транспорт используешь? Handler как на картинке? Ищи кость под названием frame_2 а не attach_female. Скорее всего она у тебя undefined, соответственно позицию получить не можешь.
 

Valdemar

Новый участник
1 Авг 2025
31
0
8
На каком моменте объект теряется?
Проблема в том что const objectContainer = mp.objects.atHandle(containerHandle) = null
JavaScript:
const model = mp.game.joaat("prop_container_01a");
let container = mp.game.object.createObject(model, 1011, -3181, 5, true, false, true);

mp.keys.bind(0x45, true, () => {
    mp.events.call('pickupContainer');
});

mp.events.add('pickupContainer', () => {
    const player = mp.players.local;
    if(player.vehicle) {
        const vehicle = player.vehicle;
        const boneIndex = vehicle.getBoneIndexByName("frame_2");
        const bonePosition = vehicle.getWorldPositionOfBone(boneIndex);
        mp.gui.chat.push(`Позиция: ${bonePosition.x}, ${bonePosition.y}, ${bonePosition.z}`);

        const containerHandle = mp.game.object.getClosestObjectOfType(player.position.x, player.position.y, player.position.z, 5, mp.game.joaat("prop_container_01a"), true, true, true);
        mp.gui.chat.push("Container handle: " + containerHandle);

        const objectContainer = mp.objects.atHandle(containerHandle);
        mp.gui.chat.push(`objectContainer: ${objectContainer}`);
         

        if(objectContainer) {
        const objPos = objectContainer.position;
        mp.gui.chat.push(`objPos: ${objPos}`);

        const distance = mp.game.gameplay.getDistanceBetweenCoords(
            bonePosition.x, bonePosition.y, bonePosition.z,
            objPos.x, objPos.y, objPos.z,
            true
        );
        mp.gui.chat.push(`Дистанция: ${distance}`);
     

        if(distance < 10) {
            objectContainer.attachTo(vehicle.handle, boneIndex, 0, 0, 0, 0, 0, 0, true, true, false, false, 2, true);
            mp.gui.chat.push("Контейнер закреплен!");
        }
        }
 
    }
})

Позиция и Container handle нормально отображаются в чате, а вот objectContainer: null, соответственно и дальше дистанция не отображется.
Мб из-за того что клиент не видит объект?
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,538
928
181
35
Объект должен быть в зоне стрима игрока. По хорошему, нужно создавать его уже после инициализации игрока по какому то ивенту.

Для тестов, добавь логику создания объекта с небольшим смещением координат от позиции игрока вот сюда:
Код:
mp.keys.bind(0x45, true, () => {
    mp.events.call('pickupContainer');
});

Когда ты убедишься, что объект создается и у тебя появился его handle, можешь с ним работать. Напомню, что после создания объекта нужно сделать небольшой таймаут, после чего уже начинать с ним работать. К слову, синхронизации между игроками естественно не будет, я думаю ты должен понимать.
 
Реакции: Touch и Valdemar