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)