Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3714150
А
Аноним
09 октября 2026 15:55 · публичный вопрос
А
Аноним

Напиши скрипт на Luau для Roblox Studio. В ServerScriptService создай часть (Part). Если игрок касается этой части, он должен получить 10 очков (лидерстат "Points"). Скрипт должен…

Запрос пользователя

Напиши скрипт на Luau для Roblox Studio. В ServerScriptService создай часть (Part). Если игрок касается этой части, он должен получить 10 очков (лидерстат "Points"). Скрипт должен использовать Debounce, чтобы очки не начислялись бесконечно, пока игрок стоит на части. Напиши только код, без объяснений

Ответ нейросети
09 октября 2026 15:55

local Players = game:GetService("Players")

local part = Instance.new("Part") part.Name = "PointsPart" part.Size = Vector3.new(10, 1, 10) part.Position = Vector3.new(0, 0.5, 0) part.Anchored = true part.CanTouch = true part.Parent = workspace

local function getPoints(player) local leaderstats = player:FindFirstChild("leaderstats")

if not leaderstats then
    leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player
end

local points = leaderstats:FindFirstChild("Points")

if not points then
    points = Instance.new("IntValue")
    points.Name = "Points"
    points.Value = 0
    points.Parent = leaderstats
end

return points

end

local function getPlayerFromHit(hit) local character = hit:FindFirstAncestorOfClass("Model")

if not character or not character:FindFirstChildOfClass("Humanoid") then
    return nil
end

return Players:GetPlayerFromCharacter(character)

end

local touchingParts = {} local debounce = {}

local function clearPlayer(player) touchingParts[player] = nil debounce[player] = nil end

local function setupPlayer(player) getPoints(player)

player.CharacterRemoving:Connect(function()
    clearPlayer(player)
end)

end

Players.PlayerAdded:Connect(setupPlayer) Players.PlayerRemoving:Connect(clearPlayer)

for _, player in Players:GetPlayers() do setupPlayer(player) end

part.Touched:Connect(function(hit) local player = getPlayerFromHit(hit)

if not player then
    return
end

touchingParts[player] = touchingParts[player] or {}

if touchingParts[player][hit] then
    return
end

touchingParts[player][hit] = true

if debounce[player] then
    return
end

debounce[player] = true
getPoints(player).Value += 10

end)

part.TouchEnded:Connect(function(hit) local player = getPlayerFromHit(hit)

if not player or not touchingParts[player] then
    return
end

touchingParts[player][hit] = nil

if next(touchingParts[player]) == nil then
    touchingParts[player] = nil
    debounce[player] = nil
end

end)