Ну я имею ввиду что допустим игрок в машине ) как улучшить синхронизацию ?Посмотри аналогию с player.vehicle, в открытом доступе много примеров
Брат копировал вот этот твой код ставил в место моего одна и та же проблема, приезжаешь к игроку в машине/ или резко тпхаешся к нему, понадобится некоторое время что бы правильно хп и армор показать(а то всё фулл показывает).Ты полный код покажи свой, а то не понятно что ты там добавляешь кусками
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, // добавляем обводку, чтобы текст был лучше виден
})
}
})
})
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,
});
}
);
});
Молниносно тестил. Заходил через 1ый акк зашёл в машину возле спавна хп 52 должно было быть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 правки учтены
Можно ил тогда считать, что это славянско-народный код?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 правки учтены
Если в машине то показывать не должно вообще. Ты что то не правильно делаешьМолниносно тестил. Заходил через 1ый акк зашёл в машину возле спавна хп 52 должно было быть
Зашёл через второй акк подошёл и показывает фулл хп фулл арм; вытащил из тачки показывает правильно 52.
Итог : проблема не решена xDD
Копировал ставил добавил только mp.nametags.enabled = false; и всё.Если в машине то показывать не должно вообще. Ты что то не правильно делаешь
Копировал ставил добавил только mp.nametags.enabled = false; и всё.
Этот код показывает хп не у других игроков а у тебя над головой которое не видно других.
Я тестил и это проблема с синхрой есть у оригинального рейджа с mp.nametags.enabled = true;
Это значит что его не исправить ?
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,
});
}
}
);
});
Спасибо за твои ответы. К сожалению так и не исправил проблему. Но всё нормально это не критично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, }); } } ); });
попробуй подебажить, почему в машине / не машине не меняется отобраение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, }); } } ); });