-free Ugc- | Obby For Ugc- Op Script -auto Obby-...

-- Table to track rewarded players local rewardedPlayers = {}

-- Auto-detect parts by name or tag local function scanObby() for _, part in ipairs(workspace:GetDescendants()) do if part:IsA("BasePart") then if part.Name:lower():find("checkpoint") or part:GetAttribute("Type") == "Checkpoint" then setupPart(part, "Checkpoint") elseif part.Name:lower():find("kill") or part:GetAttribute("Type") == "Kill" then setupPart(part, "KillPart") elseif part.Name:lower():find("win") or part:GetAttribute("Type") == "Win" then part.Touched:Connect(function(hit) local char = hit.Parent if char and char:FindFirstChild("Humanoid") then local player = Players:GetPlayerFromCharacter(char) if player and not rewardedPlayers[player.UserId] then rewardedPlayers[player.UserId] = true remoteEvent:FireClient(player, UGC_ASSET_ID, REWARD_MESSAGE) end end end) end end end end -FREE UGC- Obby For UGC- OP SCRIPT -AUTO OBBY-...

-- Run on startup and when new parts are added scanObby() workspace.DescendantAdded:Connect(function(desc) if desc:IsA("BasePart") then if desc.Name:lower():find("checkpoint") then scanObby() elseif desc.Name:lower():find("kill") then scanObby() elseif desc.Name:lower():find("win") then scanObby() end end end) -- Table to track rewarded players local rewardedPlayers

-- === AUTO OBBY CHECKPOINT & KILL PARTS === local function setupPart(part, partType) if partType == "Checkpoint" then part.Touched:Connect(function(hit) local char = hit.Parent if char and char:FindFirstChild("Humanoid") then local player = Players:GetPlayerFromCharacter(char) if player then -- Save checkpoint position player:SetAttribute("LastCheckpoint", part.Position) part.BrickColor = BrickColor.new("Bright green") task.wait(0.5) part.BrickColor = BrickColor.new("Lime green") end end end) elseif partType == "KillPart" then part.Touched:Connect(function(hit) local char = hit.Parent if char and char:FindFirstChild("Humanoid") then local player = Players:GetPlayerFromCharacter(char) if player then local checkpoint = player:GetAttribute("LastCheckpoint") if checkpoint then char:SetPrimaryPartCFrame(CFrame.new(checkpoint)) else char:SetPrimaryPartCFrame(CFrame.new(0, 5, 0)) -- spawn end end end end) end end -FREE UGC- Obby For UGC- OP SCRIPT -AUTO OBBY-...

-- === CLIENT SIDE REWARD HANDLER === local clientScript = Instance.new("LocalScript") clientScript.Name = "UGCClientHandler" clientScript.Parent = ReplicatedStorage