This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Проблема Синхронизация hp игрока

Vermilion

Мастер
29 Сен 2021
972
748
151
34
Ты полный код покажи свой, а то не понятно что ты там добавляешь кусками
 

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Ты полный код покажи свой, а то не понятно что ты там добавляешь кусками
Брат копировал вот этот твой код ставил в место моего одна и та же проблема, приезжаешь к игроку в машине/ или резко тпхаешся к нему, понадобится некоторое время что бы правильно хп и армор показать(а то всё фулл показывает).
Код:
const localPlayer = mp.players.local

mp.events.add('render', () => {
    // Проходим по всем игрокам в радиусе 50 метров
    mp.players.forEachInRange(localPlayer.position, 50, (player) => {
        if (player.handle !== localPlayer.handle) {
            const health = player.getHealth()
            const armour = player.getArmour()

            // Получаем позицию игрока
            const { x, y, z } = player.position

            // Смещаем текст немного выше головы игрока
            const textPositionZ = z + 1.2

            // Форматируем текст для отображения HP и брони
            const displayText = `HP: ${health} | Armour: ${armour}`

            // Рендерим текст над игроком
            mp.game.graphics.drawText(displayText, [x, y, textPositionZ], {
                font: 4, // шрифт
                color: [255, 255, 255, 185], // цвет белый с прозрачностью
                scale: [0.4, 0.4], // размер текста
                outline: true, // добавляем обводку, чтобы текст был лучше виден
            })
        }
    })
})
 

Vermilion

Мастер
29 Сен 2021
972
748
151
34
JavaScript:
const localPlayer = mp.players.local;
const drawDistance = 50; // Все игроки в радиусе
const drawPosition = 1.2; // Высота текста над головой

mp.events.add("render", () => {
      mp.players.forEachInRange(
        localPlayer.position,
        drawDistance,
        (target) => {
          if (target !== localPlayer || target.vehicle) return;
          const health = target.getHealth();
          const armour = target.getArmour();

          const { x, y, z } = target.position;
          const textPositionZ = z + drawPosition;
          const displayText = `HP: ${health} | Armour: ${armour}`;

          mp.game.graphics.drawText(displayText, [x, y, textPositionZ], {
            centre: true,
            font: 4,
            color: [255, 255, 255, 185],
            scale: [0.4, 0.4],
            outline: true,
          });
        }
      );
});

@enotit правки учтены
 
Реакции: THEMOD

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Молниносно тестил. Заходил через 1ый акк зашёл в машину возле спавна хп 52 должно было быть
Зашёл через второй акк подошёл и показывает фулл хп фулл арм; вытащил из тачки показывает правильно 52.

Итог : проблема не решена xDD
 
Последнее редактирование:
Реакции: enotit

enotit

Гуру
13 Ноя 2020
1,092
493
147
21
Можно ил тогда считать, что это славянско-народный код?
 

Vermilion

Мастер
29 Сен 2021
972
748
151
34
Если в машине то показывать не должно вообще. Ты что то не правильно делаешь
 

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Копировал ставил добавил только mp.nametags.enabled = false; и всё.
Этот код показывает хп не у других игроков а у тебя над головой которое не видно других.

Я тестил и это проблема с синхрой есть у оригинального рейджа с mp.nametags.enabled = true;
Это значит что его не исправить ?
 

Vermilion

Мастер
29 Сен 2021
972
748
151
34
JavaScript:
const localPlayer = mp.players.local;
const drawDistance = 50; // Все игроки в радиусе
const drawPosition = 1.2; // Высота текста над головой

mp.events.add("render", () => {
    mp.players.forEachInRange(
        localPlayer.position,
        drawDistance,
        (target) => {
            if (target === localPlayer || target.vehicle) return;

            const health = target.getHealth();
            const armour = target.getArmour();

            const { x, y, z } = target.position;
            const textPositionZ = z + drawPosition;

            const distance = mp.game.system.vdist(localPlayer.position.x, localPlayer.position.y, localPlayer.position.z, x, y, z);
            if (distance > drawDistance) return;

            const screenCoords = mp.game.graphics.world3dToScreen2d(x, y, textPositionZ);
            if (screenCoords) {
                const [screenX, screenY] = screenCoords;
                const displayText = `HP: ${health} | Armour: ${armour}`;

                mp.game.graphics.drawText(displayText, [screenX, screenY], {
                    centre: true,
                    font: 4,
                    color: [255, 255, 255, 185],
                    scale: [0.4, 0.4],
                    outline: true,
                });
            }
        }
    );
});
 
Реакции: Robert_Easter

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Спасибо за твои ответы. К сожалению так и не исправил проблему. Но всё нормально это не критично
 

enotit

Гуру
13 Ноя 2020
1,092
493
147
21
попробуй подебажить, почему в машине / не машине не меняется отобраение