-- DOORS Hardcore Mode (Mobile + PC) -- Inspirado em Noonie, recriado com melhorias -- Créditos da ideia: Davisaymon749 -- Sistema com progresso, conquistas, HUB inicial, dificuldades e entidades extras local DataStoreService = game:GetService("DataStoreService") local PlayerDataStore = DataStoreService:GetDataStore("DoorsHardcoreProgress") local Player = game.Players.LocalPlayer local PlayerGui = Player:WaitForChild("PlayerGui") local PlayerStats = { Coins = 0, Achievements = {}, UnlockedModes = {"Normal","Hardcore"}, } -- [FUNÇÃO DE SALVAR E CARREGAR PROGRESSO] local function LoadData() local success, data = pcall(function() return PlayerDataStore:GetAsync(Player.UserId) end) if success and data then PlayerStats = data end end local function SaveData() pcall(function() PlayerDataStore:SetAsync(Player.UserId, PlayerStats) end) end LoadData() -- [HUB INICIAL COM CRÉDITOS] local ScreenGui = Instance.new("ScreenGui", PlayerGui) ScreenGui.IgnoreGuiInset = true ScreenGui.ResetOnSpawn = false local Frame = Instance.new("Frame", ScreenGui) Frame.Size = UDim2.new(0.5,0,0.7,0) Frame.Position = UDim2.new(0.25,0,0.15,0) Frame.BackgroundColor3 = Color3.fromRGB(15,15,15) Frame.BorderSizePixel = 0 Frame.BackgroundTransparency = 0.1 local Title = Instance.new("TextLabel", Frame) Title.Size = UDim2.new(1,0,0.15,0) Title.Text = "DOORS Hardcore Mode" Title.TextScaled = true Title.TextColor3 = Color3.new(1,1,1) Title.BackgroundTransparency = 1 local Credits = Instance.new("TextLabel", Frame) Credits.Size = UDim2.new(1,0,0.08,0) Credits.Position = UDim2.new(0,0,0.13,0) Credits.Text = "Créditos da ideia: Davisaymon749" Credits.TextColor3 = Color3.fromRGB(0,200,255) Credits.BackgroundTransparency = 1 Credits.TextScaled = true local CoinsLabel = Instance.new("TextLabel", Frame) CoinsLabel.Size = UDim2.new(1,0,0.08,0) CoinsLabel.Position = UDim2.new(0,0,0.23,0) CoinsLabel.Text = "Moedas: "..PlayerStats.Coins CoinsLabel.TextColor3 = Color3.new(1,1,0) CoinsLabel.BackgroundTransparency = 1 CoinsLabel.TextScaled = true -- [DIFICULDADES DESBLOQUEÁVEIS] local Difficulties = PlayerStats.UnlockedModes local SelectedDifficulty = "Hardcore" for i, diff in ipairs({"Normal","Hardcore","Insano"}) do local Btn = Instance.new("TextButton", Frame) Btn.Size = UDim2.new(0.8,0,0.1,0) Btn.Position = UDim2.new(0.1,0,0.35+(i*0.12),0) Btn.Text = diff .. (table.find(Difficulties, diff) and "" or " (Bloqueado)") Btn.BackgroundColor3 = table.find(Difficulties, diff) and Color3.fromRGB(30,30,30) or Color3.fromRGB(80,0,0) Btn.TextColor3 = Color3.new(1,1,1) Btn.MouseButton1Click:Connect(function() if table.find(Difficulties, diff) then SelectedDifficulty = diff for _,b in ipairs(Frame:GetChildren()) do if b:IsA("TextButton") then b.BackgroundColor3 = Color3.fromRGB(30,30,30) end end Btn.BackgroundColor3 = Color3.fromRGB(0,150,0) end end) end -- [BOTÃO INICIAR] local StartBtn = Instance.new("TextButton", Frame) StartBtn.Size = UDim2.new(0.6,0,0.1,0) StartBtn.Position = UDim2.new(0.2,0,0.85,0) StartBtn.Text = "Iniciar" StartBtn.BackgroundColor3 = Color3.fromRGB(0,120,0) StartBtn.TextColor3 = Color3.new(1,1,1) StartBtn.MouseButton1Click:Connect(function() Frame:Destroy() StartHardcore(SelectedDifficulty) end) -- [FINALIZAÇÃO DE RUN - RECOMPENSAS] function EndRun(success, difficulty) if success then local reward = difficulty == "Insano" and 500 or difficulty == "Hardcore" and 200 or 100 PlayerStats.Coins += reward if difficulty == "Insano" then PlayerStats.Achievements["Imortal"] = true end if PlayerStats.Coins >= 1000 and not table.find(PlayerStats.UnlockedModes, "Insano") then table.insert(PlayerStats.UnlockedModes, "Insano") end SaveData() end end