local wall = script.Parent
local wallHP = 100 -- Начальное здоровье стены, например, 100
-- Таблица для отслеживания игроков, недавно ударивших стену, для предотвращения множественных ударов
local recentHitPlayers = {}
local debounceTime = 1 -- Задержка в секундах между ударами от одного игрока
-- Создание Surface GUI, если его еще нет
local surfaceGUI
if wall:FindFirstChild("SurfaceGUI") then
surfaceGUI = wall.SurfaceGUI
else
surfaceGUI = Instance.new("SurfaceGUI")
surfaceGUI.Name = "SurfaceGUI"
surfaceGUI.Parent = wall
surfaceGUI.Face = Enum.NormalId.Front -- Указываем, на какой стороне стены отображать текст (например, передняя сторона)
end
-- Создание TextLabel для отображения HP, если его еще нет
local hpDisplay
if surfaceGUI:FindFirstChild("HPDisplay") then
hpDisplay = surfaceGUI.HPDisplay
else
hpDisplay = Instance.new("TextLabel")
hpDisplay.Name = "HPDisplay"
hpDisplay.Parent = surfaceGUI
hpDisplay.Size = UDim2.new(1, 0, 1, 0) -- Размер на всю поверхность
hpDisplay.BackgroundTransparency = 1 -- Прозрачный фон
hpDisplay.BorderSizePixel = 0
hpDisplay.Font = Enum.Font.Arial
hpDisplay.TextSize = 24 -- Размер текста для лучшей видимости
hpDisplay.TextColor3 = Color3.new(1, 1, 1) -- Белый цвет текста
hpDisplay.HorizontalAlignment = Enum.HorizontalAlignment.Center -- Центрирование по горизонтали
hpDisplay.VerticalAlignment = Enum.VerticalAlignment.Center -- Центрирование по вертикали
hpDisplay.ZIndex = 10 -- Уровень отображения
end
-- Установка начального значения HP
hpDisplay.Text = tostring(wallHP)
-- Обработка события касания стены
wall.Touched:Connect(function(hitPart)
local character = hitPart:FindFirstAncestorOfClass("Model")
if character then
local player = game.Players:FindFirstChild(character.Name)
if player then
-- Проверка, не бил ли игрок недавно, чтобы избежать множественных ударов
if recentHitPlayers[player] and tick() - recentHitPlayers[player] < debounceTime then
return
end
recentHitPlayers[player] = tick()
local leaderstats = character:FindFirstChild("leaderstats")
if leaderstats then
local strength = leaderstats:FindFirstChild("Strength")
if strength then
wallHP = wallHP - strength.Value -- Вычитаем силу игрока из HP стены
hpDisplay.Text = tostring(wallHP) -- Обновляем отображение HP
if wallHP <= 0 then
wall:Destroy() -- Уничтожаем стену, если HP <= 0
end
end
end
end
end
end)
делаю режим в роблоксе как Punch Wall Simulator, не пойму как сделать стену, у которой будет показано ее хп, и как игрок её сломает с помощью силы в leaderstats, то стена пропадет.
уточню: если у стены 100 хп, а сила игрока в leaderstats 30, то у стены снимется 30 хп