• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в 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/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Проблема Проблема с raycasting'ом

dreamharakiri

Начинающий специалист
Автор темы
25 Дек 2021
75
4
49
Приветствую.

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


JavaScript:
mp.events.add('render', () =>{
    var drawLine;
    mp.events.add('entityStreamIn', (entity) => {
            if ((entity && entity.doesExist()) === false) return
            if (entity === mp.players.local.remoteId) return

            const endPosition = entity.position;
            const startPosition = mp.players.local.getBoneCoords(12844, 0.5, 0, 0);
            const hitData = mp.raycasting.testPointToPoint(startPosition, endPosition);
            if (!hitData) {
                mp.gui.chat.push('Смотрит на сущность')
                // Is in line of sight
            } else {
                mp.gui.chat.push('Вне поля видимости')
                label = null;
                mp.game.graphics.drawLine(startPosition.x, startPosition.y, startPosition.z, endPosition.x, endPosition.y, endPosition.z, 255, 0, 0, 255); // Is NOT in line of sight
            }
    });   
})

Но, ивент срабатывает лишь один раз. В рендер по сути своей запихивать и так не хорошая идея, но я решил пойти дальше и кинул туда еще и таймер. Тогда-то все заработало, но, одно большое но, во первых, я понимаю что есть более деликатные способы, во вторых фпс падает достаточно сильно. Какие есть варианты решения этой проблема?
 

Gantileon

Участник портала
4 Ноя 2022
6
4
23
JavaScript:
mp.events.add.add('render', () => {
    const camera = mp.cameras.new("gameplay");
    let position = camera.getCoord();
    let direction = camera.getDirection();
    let distance = 15;
    let farAway = new mp.Vector3((direction.x * distance) + (position.x), (direction.y * distance) + (position.y), (direction.z * distance) + (position.z));
    let raycast = mp.raycasting.testCapsule(position, farAway, 0.1, mp.players.local)
    if (raycast && raycast.entity && raycast.entity.type === 'player') {
        mp.gui.chat.push('Смотрит на сущность')
        mp.game.graphics.drawText("Смотрю на эту сущность", [raycast.entity.getCoords(true).x, raycast.entity.getCoords(true).y, raycast.entity.getCoords(true).z], {
            font: 7,
            color: [255, 0, 0, 185],
            scale: [1.2, 1.2],
            outline: true,
            centre: true
        });
    } else {
        mp.gui.chat.push('Вне поля видимости')
    }
});
 
  • Like
Реакции: dreamharakiri