local badgeService = game:GetService("BadgeService")
local badgeId = nil -- замените на ваш ID бейджа (точнее его AssetID)
local partsDeleted = 0
local partsToDelete = 4 -- количество частей, которые нужно удалить для получения бейджа
local function onPartDeleted()
partsDeleted = partsDeleted + 1
if partsDeleted >= partsToDelete then
-- Предполагается, что player передается в функцию или доступен глобально
badgeService:AwardBadge(player.UserId, badgeId)
end
end
-- Функция для проверки и удаления блоков
local function checkAndDeleteParts()
local partName = "Part" -- замените на имя ваших блоков
local parts = workspace:GetChildren()
for _, obj in ipairs(parts) do
if obj:IsA("Part") and obj.Name == partName and obj.Transparency == 1 then
partsDeleted = partsDeleted + 1
end
end
if partsDeleted >= partsToDelete then
badgeService:AwardBadge(player.UserId, badgeId)
end
end
-- Запускаем проверку каждые несколько секунд
while true do
checkAndDeleteParts()
wait(5) -- интервал проверки в секундах
end
local part = script.Parent
local function onPromptTriggered()
part.Transparency = 1
part.CanCollide = false
part.Anchored = true -- чтобы блок не падал
end
local proximityPrompt = Instance.new("ProximityPrompt")
proximityPrompt.ActionText = "Удалить"
proximityPrompt.ObjectText = "Часть"
proximityPrompt.KeyboardKeyCode = Enum.KeyCode.E
proximityPrompt.Parent = part
proximityPrompt.Triggered:Connect(onPromptTriggered)
Обязательно запомни, что твои блоки должны иметь название - "Part", дабы скрипт их видел. local part = script.Parent -- Объект, к которому игрок будет подходить
local badgeID = 12345678 -- Замените на ID вашего бейджа
local badgeService = game:GetService("BadgeService")
local players = game:GetService("Players")
local guiEnabled = false -- Флаг для отслеживания состояния GUI
-- Функция для отображения GUI
local function showGui(player)
local playerGui = player:WaitForChild("PlayerGui")
local screenGui = Instance.new("ScreenGui", playerGui)
local textLabel = Instance.new("TextLabel", screenGui)
textLabel.Text = "Зажми E"
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.Position = UDim2.new(0.5, -100, 0.5, -25)
textLabel.BackgroundColor3 = Color3.new(1, 1, 1)
textLabel.TextColor3 = Color3.new(0, 0, 0)
return screenGui
end
part.Touched:Connect(function(hit)
local player = players:GetPlayerFromCharacter(hit.Parent)
if player and not guiEnabled then
guiEnabled = true -- Устанавливаем флаг
-- Показать GUI
local screenGui = showGui(player)
-- Ждем нажатия клавиши E
local function onKeyPress(key)
if key == "e" then
-- Удаляем объект
part:Destroy()
-- Проверяем и выдаем бейдж
if not badgeService:UserHasBadge(player.UserId, badgeID) then
badgeService:AwardBadge(player.UserId, badgeID)
end
-- Убираем GUI после взаимодействия
screenGui:Destroy()
guiEnabled = false -- Сбрасываем флаг
end
end
-- Подписываемся на событие нажатия клавиш
player:GetMouse().KeyDown:Connect(onKeyPress)
-- Удаляем слушатель событий при выходе игрока
player.AncestryChanged:Connect(function(_, parent)
if not parent then
guiEnabled = false -- Сбрасываем флаг при выходе игрока
screenGui:Destroy() -- Удаляем GUI если игрок покинул игру
end
end)
end
end)