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

Вопрос Как можно сделать хитмаркер на js? Можете кинуть статью, а то я что-то не нашёл либо плохо искал.

Статус
В этой теме нельзя размещать новые ответы.

hon1n

Начинающий специалист
29 Июн 2022
142
6
68
Как можно сделать хитмаркер на js? Можете кинуть статью, а то я что-то не нашёл либо плохо искал.
 

mippoosedev

Гуру
2 Мар 2021
292
138
100
На офф.сайте рейджа в ресурсах есть TS ресурс с хитмаркерами, но если что - держи мои, не жалко особо


JavaScript:
let hitList = []


const DEAD_MSG = "DEAD"
const Z_OFFSET = 1.5

mp.events.add("SRV::CL::DrawHitMarker", (targetId, damage, bone, flag) => {
    let player = mp.players.atRemoteId(targetId);
    if (player === undefined || player === null) return;

    let color = [];
    switch (flag) {
        // обычный хит
        case 0:
            color = [255,255,255]
            break
        // голова
        case 1:
            color = [0,255,0]
            break
        case 2:
        // умер
            color = [255,0,0]
            break
        default:
            color = [255,255,255]
            break
    }

    hitList.push({
        text: flag === 2 ? DEAD_MSG : damage,
        position: new mp.Vector3(player.position.x,player.position.y,player.position.z + Z_OFFSET),
        color: color,
        opacityCorrosion: 0
    })
})

const FONT = 2
const SCALE = 0.4
const OPACITY_PER_FRAME = 2
const Z_OFFSET_PER_FRAME = 0.02

mp.events.add('render', () => {
    hitList.forEach((hit) => {
        mp.game.graphics.drawText(hit.text, [hit.position.x,hit.position.y,hit.position.z], {
            font: FONT,
            color: [hit.color[0], hit.color[1],hit.color[2], 155 - hit.opacityCorrosion],
            scale: [SCALE, SCALE],
            outline: true,
        })

        hit.opacityCorrosion = hit.opacityCorrosion + OPACITY_PER_FRAME
        hit.position.z = hit.position.z + Z_OFFSET_PER_FRAME

        if (hit.opacityCorrosion > 155) hitList.pop();
    })
})

П.с в евент приходит в т.ч кость(из урона, от 1 до 20), можешь позицию кости в мире найти(но сначала по этому индексу найди саму кость) и по ней рисовать, а не по игроку. Мне такой вариант просто удобнее
 

hon1n

Начинающий специалист
29 Июн 2022
142
6
68
Спасибо большое
 

lazare13

Активный участник
9 Мар 2023
7
0
38
На офф.сайте рейджа в ресурсах есть TS ресурс с хитмаркерами, но если что - держи мои, не жалко особо


JavaScript:
let hitList = []


const DEAD_MSG = "DEAD"
const Z_OFFSET = 1.5

mp.events.add("SRV::CL::DrawHitMarker", (targetId, damage, bone, flag) => {
    let player = mp.players.atRemoteId(targetId);
    if (player === undefined || player === null) return;

    let color = [];
    switch (flag) {
        // обычный хит
        case 0:
            color = [255,255,255]
            break
        // голова
        case 1:
            color = [0,255,0]
            break
        case 2:
        // умер
            color = [255,0,0]
            break
        default:
            color = [255,255,255]
            break
    }

    hitList.push({
        text: flag === 2 ? DEAD_MSG : damage,
        position: new mp.Vector3(player.position.x,player.position.y,player.position.z + Z_OFFSET),
        color: color,
        opacityCorrosion: 0
    })
})

const FONT = 2
const SCALE = 0.4
const OPACITY_PER_FRAME = 2
const Z_OFFSET_PER_FRAME = 0.02

mp.events.add('render', () => {
    hitList.forEach((hit) => {
        mp.game.graphics.drawText(hit.text, [hit.position.x,hit.position.y,hit.position.z], {
            font: FONT,
            color: [hit.color[0], hit.color[1],hit.color[2], 155 - hit.opacityCorrosion],
            scale: [SCALE, SCALE],
            outline: true,
        })

        hit.opacityCorrosion = hit.opacityCorrosion + OPACITY_PER_FRAME
        hit.position.z = hit.position.z + Z_OFFSET_PER_FRAME

        if (hit.opacityCorrosion > 155) hitList.pop();
    })
})

П.с в евент приходит в т.ч кость(из урона, от 1 до 20), можешь позицию кости в мире найти(но сначала по этому индексу найди саму кость) и по ней рисовать, а не по игроку. Мне такой вариант просто удобнее
Где написать этот код?
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,399
1,614
211
27
Поднимать можно не чаще, чем раз в 24 часа.

По поводу Вашего вопроса - следует заняться изучением языка программирования, тогда таких вопросов возникать не будет. Это не столько относится к RageMP, как к самому языку программирования, который Вы, по всей видимости, не знаете.
 
Статус
В этой теме нельзя размещать новые ответы.