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

Прицеп с верёвкой 2 vehicles вместе

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Здраствуйте

На данный момент пытаюсь прицепить tractor к raketrailer с помощю веревки. Тоесть введу команду /tractore и появляется трактор который прицеплён к верёвке. Мой код не работает; тоесть vehicles оба появляются но физика прицепа и сам прицеп не видно/не появляется/не работает ). Пожалуйста помогите я сделал небольшую паузу и немного скатился.
Server side :
Код:
mp.events.addCommand('tractore', (player) => {
    const tractor = mp.vehicles.new(mp.joaat('tractor'), player.position, {
        heading: player.heading,
        dimension: player.dimension
    });
    const trailerPosition = player.position;
    trailerPosition.z += 1;
    trailerPosition.y -= 5;


    const raketrailer = mp.vehicles.new(mp.joaat('raketrailer'), trailerPosition, {
        heading: player.heading,
        dimension: player.dimension
    });


    player.call('attachRopeToVehicle', [tractor.remoteId, raketrailer.remoteId]);
});

Client side :
Код:
function attachRopeEntityToEntity(tractor, raketrailer) {
    mp.game.invoke('0x9B9039DBF2D258C1');
    
    const rope = mp.game.invoke(
        '0xE832D760399EB220',
        tractor.position.x,
        tractor.position.y,
        tractor.position.z,
        0,
        0,
        0,
        15,
        4,
        5,
        0.1,
        0.5,
        false,
        false,
        true,
        1.0,
        false,
        0
    );


    mp.game.rope.attachEntitiesToRope(
        rope,
        tractor.handle,
        raketrailer.handle,
        tractor.position.x,
        tractor.position.y,
        tractor.position.z,
        raketrailer.position.x,
        raketrailer.position.y,
        raketrailer.position.z,
        15,
        false,
        false
    );


    mp.game.invoke('0x710311ADF0E20730', rope);
}


mp.events.add('attachRopeToVehicle', (tractorId, raketrailerId) => {
    const tractor = mp.vehicles.atRemoteId(tractorId);
    const raketrailer = mp.vehicles.atRemoteId(raketrailerId);


    if (tractor && raketrailer) {
        attachRopeEntityToEntity(tractor, raketrailer);
    }
});

 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
1,763
1,305
5
Привет! Похоже, что проблема может быть связана с тем, что неправильно задаешь координаты веревки и её закрепление между трактором и прицепом. Попробуй изменить параметры при создании верёвки и её закреплении, чтобы они точнее соответствовали позициям трактора и прицепа. Не забудь также проверить, что функция attachRopeEntityToEntity корректно связывает верёвку между трактором и прицепом.
 

enotit

Гуру
13 Ноя 2020
1,094
496
147
21
Здраствуйте

На данный момент пытаюсь прицепить tractor к raketrailer с помощю веревки. Тоесть введу команду /tractore и появляется трактор который прицеплён к верёвке. Мой код не работает; тоесть vehicles оба появляются но физика прицепа и сам прицеп не видно/не появляется/не работает ). Пожалуйста помогите я сделал небольшую паузу и немного скатился.
Server side :
Код:
mp.events.addCommand('tractore', (player) => {
    const tractor = mp.vehicles.new(mp.joaat('tractor'), player.position, {
        heading: player.heading,
        dimension: player.dimension
    });
    const trailerPosition = player.position;
    trailerPosition.z += 1;
    trailerPosition.y -= 5;


    const raketrailer = mp.vehicles.new(mp.joaat('raketrailer'), trailerPosition, {
        heading: player.heading,
        dimension: player.dimension
    });


    player.call('attachRopeToVehicle', [tractor.remoteId, raketrailer.remoteId]);
});

Client side :
Код:
function attachRopeEntityToEntity(tractor, raketrailer) {
    mp.game.invoke('0x9B9039DBF2D258C1');
   
    const rope = mp.game.invoke(
        '0xE832D760399EB220',
        tractor.position.x,
        tractor.position.y,
        tractor.position.z,
        0,
        0,
        0,
        15,
        4,
        5,
        0.1,
        0.5,
        false,
        false,
        true,
        1.0,
        false,
        0
    );


    mp.game.rope.attachEntitiesToRope(
        rope,
        tractor.handle,
        raketrailer.handle,
        tractor.position.x,
        tractor.position.y,
        tractor.position.z,
        raketrailer.position.x,
        raketrailer.position.y,
        raketrailer.position.z,
        15,
        false,
        false
    );


    mp.game.invoke('0x710311ADF0E20730', rope);
}


mp.events.add('attachRopeToVehicle', (tractorId, raketrailerId) => {
    const tractor = mp.vehicles.atRemoteId(tractorId);
    const raketrailer = mp.vehicles.atRemoteId(raketrailerId);


    if (tractor && raketrailer) {
        attachRopeEntityToEntity(tractor, raketrailer);
    }
});
так код взял, а это не чекнул https://ragemp.pro/threads/problema-pri-prorisovke-tekstur-verevok.11817/post-96982?
 

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Да я с темой знаком был когда еще не столкнулся с ропами; попробывал с этим кодом но не работает ( . Я уверен что я где то тупанул но где именно не знаю

PS : У меня даже физика веревки не работает он просто вертикально стоит
 
Последнее редактирование:

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Ну что тут не так боже ... первая попытка спавна веревка видна вертикально стоит ничего не работает. Вторая попытка спавна веревка не видна физика работает только для поворотов лево право ; тоесть вперед если идти то трейлер стоит на месте и не будет за вами приследовать. Мазолит мне рейдж уже со своими манерами

Server side :
Код:
mp.events.addCommand('ss', (player) => {
    const tractorModel = mp.joaat('tractor');
    const trailerModel = mp.joaat('raketrailer');


    const { x, y, z } = player.position;
    const heading = player.heading;


    const tractor = mp.vehicles.new(tractorModel, new mp.Vector3(x, y, z), {
        heading: heading,
        numberPlate: 'TRACTOR',
        color: [[0, 0, 0], [0, 0, 0]]
    });


    const headingRadians = (heading * Math.PI) / 180;


    const trailerPosition = {
        x: x + 2 * Math.sin(headingRadians),
        y: y - 2 * Math.cos(headingRadians),
        z: z + 0.22
    };


    const trailer = mp.vehicles.new(trailerModel, new mp.Vector3(trailerPosition.x, trailerPosition.y, trailerPosition.z), {
        heading: heading,
        numberPlate: 'TRAILER',
        color: [[255, 255, 255], [255, 255, 255]]
    });


    player.call('client:attachRope', [tractor.id, trailer.id]);
});
Client side:
Код:
mp.events.add('client:attachRope', (tractorId, trailerId) => {
    const tractor = mp.vehicles.at(tractorId);
    const trailer = mp.vehicles.at(trailerId);


    if (tractor && trailer) {
        const tractorPos = tractor.position;


        const { result: rope } = mp.game.physics.addRope(
            tractorPos.x, tractorPos.y, tractorPos.z,
            0, 0, 0,
            5.0,
            1,
            5.0,
            5.0,
            1.0,
            false,
            true,
            true,
            10.0,
            true,
            null
        );


        mp.game.rope.attachEntitiesToRope(
            rope,
            tractor.handle, trailer.handle,
            0, 0, 0,
            0, 0, 0,
            5.0,
            false, true, 0, 0
        );


        mp.gui.chat.push('Rope attached between tractor and trailer!');
    } else {
        mp.gui.chat.push('Could not find the vehicles.');
    }
});

 

Andrew Fares

Специалист
7 Окт 2020
68
44
79
@Robert_Easter попробуй такой код на клиенте, у меня работало (физику верёвки возможно стоит донастроить)

JavaScript:
const { result } = mp.game.physics.addRope(
          vehicle.position.x,
          vehicle.position.y,
          vehicle.position.z,
          grapVeh.position.x,
          grapVeh.position.y,
          grapVeh.position.z,
          12.0,
          1,
          6.0,
          1.0,
          1.2,
          false,
          true,
          true,
          10.0,
          true,
          null
        );
const ropeId = result;
mp.game.rope.attachEntitiesToRope(
    ropeId,
    vehicle.handle,
    grapVeh.handle,
    vehicle.vehicleSize.front.x,
    vehicle.vehicleSize.front.y,
    vehicle.position.z,
    grapVeh.position.x,
    grapVeh.position.y,
    grapVeh.position.z,
    12,
    true,
    true,
    "chassis",
    "chassis"
);
 
  • Like
Реакции: Robert_Easter

Inoi

/dev/null
VIP
15 Окт 2020
3,372
2,122
208
35
Vermillion Inoi , Спецы пожалуйста помогите.
я никогда не крепил верёвку сам, честно говоря, прям с чистого кода

сейчас я достаточно давно не занимаюсь рейджом, а давать советы которые не могу проверить сам, или в чём не уверен - к сожалению не очень люблю
я когда мельком прочитал, единственное что вспомнил - это скрипт флетбеда

вот он: https://rage.mp/files/file/344-flatbed/
там даже гит есть, можно так посмотреть - https://github.com/ItsMos/flatbed-ragemp
я его брал, он не работал - но там какая-то ерунда, которую я легко тогда починил, просто удалил какие-то лишние строчки (могу поискать что именно, если нужно, посмотреть)
они сильно багали процесс натягивания тачки

так вот
там тоже была верёвка, которая тянулась от машины к машине и очевидно аттачилась к ентити тачки - и ентити типа креплений на флетбеде сверху
и она точно работала

это вот единственное что мне с ходу в голову пришло, что можно просто посмотреть, чтобы понять, что возможно ты делаешь не так
 
  • Like
Реакции: Robert_Easter

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
@Robert_Easter попробуй такой код на клиенте, у меня работало (физику верёвки возможно стоит донастроить)

JavaScript:
const { result } = mp.game.physics.addRope(
          vehicle.position.x,
          vehicle.position.y,
          vehicle.position.z,
          grapVeh.position.x,
          grapVeh.position.y,
          grapVeh.position.z,
          12.0,
          1,
          6.0,
          1.0,
          1.2,
          false,
          true,
          true,
          10.0,
          true,
          null
        );
const ropeId = result;
mp.game.rope.attachEntitiesToRope(
    ropeId,
    vehicle.handle,
    grapVeh.handle,
    vehicle.vehicleSize.front.x,
    vehicle.vehicleSize.front.y,
    vehicle.position.z,
    grapVeh.position.x,
    grapVeh.position.y,
    grapVeh.position.z,
    12,
    true,
    true,
    "chassis",
    "chassis"
);
Сорян конечно но что я тут не так сделал ?(
Server side :
Код:
mp.events.addCommand('rope', (player) => {
    const tractor = mp.vehicles.new(mp.joaat('tractor'), player.position, {
        heading: player.heading,
        numberPlate: 'TRACTOR',
        dimension: player.dimension
    });


    const raketrailer = mp.vehicles.new(mp.joaat('raketrailer'), {
        x: player.position.x - 5,
        y: player.position.y,
        z: player.position.z
    }, {
        heading: player.heading,
        numberPlate: 'TRAILER',
        dimension: player.dimension
    });

    player.call('createRope', [tractor.id, raketrailer.id]);
});
Client side :
Код:
mp.events.add('createRope', (tractorId, raketrailerId) => {
    const vehicle = mp.vehicles.at(tractorId);
    const grapVeh = mp.vehicles.at(raketrailerId);


    if (vehicle && grapVeh) {
        const { result } = mp.game.physics.addRope(
            vehicle.position.x,
            vehicle.position.y,
            vehicle.position.z,
            grapVeh.position.x,
            grapVeh.position.y,
            grapVeh.position.z,
            12.0,
            1,
            6.0,
            1.0,
            1.2,
            false,
            true,
            true,
            10.0,
            true,
            null
        );


        const ropeId = result;


        mp.game.rope.attachEntitiesToRope(
            ropeId,
            vehicle.handle,
            grapVeh.handle,
            vehicle.vehicleSize.front.x,
            vehicle.vehicleSize.front.y,
            vehicle.position.z,
            grapVeh.position.x,
            grapVeh.position.y,
            grapVeh.position.z,
            12,
            true,
            true,
            "chassis",
            "chassis"
        );
    } else {
        mp.gui.chat.push('Не нашёл');
    }
});
 

Andrew Fares

Специалист
7 Окт 2020
68
44
79
Сорян конечно но что я тут не так сделал ?
А что тебе выводит или что происходит?
И ещё момент с поиском ТС: ты с бэка передаёшь на клиент RemoteID и соответственно на клиенте лучше использовать
mp.vehicles.atRemoteId вместо mp.vehicles.at
 

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
А что тебе выводит или что происходит?
И ещё момент с поиском ТС: ты с бэка передаёшь на клиент RemoteID и соответственно на клиенте лучше использовать
mp.vehicles.atRemoteId вместо mp.vehicles.at
Спавнятся трактор и свой трейлер колонной. Ничего их не цепляет вместе. Сажусь трактор вожу его а прицеп остаётся на месте. Никакой веревки не видно к сожалению. Пожалуйста помогите.
Server side :
Код:
mp.events.addCommand('rope', (player) => {
    const { x, y, z } = player.position;
    const heading = player.heading;


    const tractorModel = mp.joaat('tractor');
    const trailerModel = mp.joaat('raketrailer');


    const tractor = mp.vehicles.new(tractorModel, new mp.Vector3(x, y, z), {
        heading: heading,
        numberPlate: 'TRACTOR',
        color: [[0, 0, 0], [0, 0, 0]]
    });


    const headingRadians = (heading * Math.PI) / 180;


    const trailerPosition = {
        x: x + 2 * Math.sin(headingRadians),
        y: y - 2 * Math.cos(headingRadians),
        z: z + 0.22
    };


    const raketrailer = mp.vehicles.new(trailerModel, new mp.Vector3(trailerPosition.x, trailerPosition.y, trailerPosition.z), {
        heading: heading,
        numberPlate: 'RAKETRL',
        color: [[255, 0, 0], [255, 0, 0]]
    });


    player.call('attachVehiclesWithRope', [tractor.id, raketrailer.id]);
});
Client side :
Код:
mp.events.add('attachVehiclesWithRope', (tractorId, raketrailerId) => {
    const tractor = mp.vehicles.atRemoteId(tractorId);
    const raketrailer = mp.vehicles.atRemoteId(raketrailerId);


    if (tractor && raketrailer) {
        const tractorPos = tractor.position;
        const raketrailerPos = raketrailer.position;


        const { result } = mp.game.physics.addRope(
            tractorPos.x,
            tractorPos.y,
            tractorPos.z + 1.0,
            0, 0, 0,
            12.0,
            1,
            6.0,
            1.0,
            1.2,
            false,
            true,
            true,
            10.0,
            true,
            null
        );
        const ropeId = result;


        mp.game.rope.attachEntitiesToRope(
            ropeId,
            tractor.handle,
            raketrailer.handle,
            tractorPos.x,
            tractorPos.y,
            tractorPos.z + 0.5,
            raketrailerPos.x,
            raketrailerPos.y,
            raketrailerPos.z + 0.5,
            12,
            true,
            true,
            "chassis",
            "chassis"
        );
    } else {
        mp.gui.chat.push("Не нашёл");
    }
});
 

Andrew Fares

Специалист
7 Окт 2020
68
44
79
Спавнятся трактор и свой трейлер колонной. Ничего их не цепляет вместе. Сажусь трактор вожу его а прицеп остаётся на месте. Никакой веревки не видно к сожалению. Пожалуйста помогите.
Когда у тебя спрашивают "А что тебе выводит или что происходит?", то лучше всё таки залогировать каждое минимальное действие, как поиск транспорта(и вывод ошибки что его не нашло), так и результаты создания верёвки, а вообще лучше после каждого действия воткнуть какой то console.log УСЛОВНО и уже отслеживать куда доходит код.
Факт в том, что верёвку так или иначе можно реализовать и я лично это делал, дальше вопрос дебага твоего кода.

P.S. Нет никаких гарантий, что спавн транспорта происходит раньше, чем вызывается эвент на клиенте
 
  • Like
Реакции: Inoi и Robert_Easter

Vermilion

Мастер
29 Сен 2021
973
750
151
34
Передай на клиент полностью транспорт, а не его remoteId
Код:
player.call('attachRopeToVehicle', [tractor, raketrailer]);

Соответственно на клиенте:
Код:
mp.events.add('attachRopeToVehicle', (tractor, raketrailer) => {
    if (tractor && raketrailer) {
        attachRopeEntityToEntity(tractor, raketrailer);
    }
});
 
  • Like
Реакции: Robert_Easter

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Когда у тебя спрашивают "А что тебе выводит или что происходит?", то лучше всё таки залогировать каждое минимальное действие, как поиск транспорта(и вывод ошибки что его не нашло), так и результаты создания верёвки, а вообще лучше после каждого действия воткнуть какой то console.log УСЛОВНО и уже отслеживать куда доходит код.
Факт в том, что верёвку так или иначе можно реализовать и я лично это делал, дальше вопрос дебага твоего кода.

P.S. Нет никаких гарантий, что спавн транспорта происходит раньше, чем вызывается эвент на клиенте
Решено спасибо именно в этом и проблема была
 

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Передай на клиент полностью транспорт, а не его remoteId
Код:
player.call('attachRopeToVehicle', [tractor, raketrailer]);

Соответственно на клиенте:
Код:
mp.events.add('attachRopeToVehicle', (tractor, raketrailer) => {
    if (tractor && raketrailer) {
        attachRopeEntityToEntity(tractor, raketrailer);
    }
});
Спасибо