--// DeepHat - Mobile Pro Edition (Dynamic Rarity Counter & Secret Rarity)
--// Target: Multi-Rarity Detection, Sequential Teleport & Auto Scanning
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
--==================================================
-- CONFIG & STATE
--==================================================
local TARGET_CFRAME = CFrame.new(-0.888233185, 3.99999928, 30.4985771)
-- Added "Secret" to the list
local rarities = {"Admin", "Eternal", "OG", "Divine", "Celestial", "Exclusive", "Godly", "Secret"}
local enabledRarities = { ["Admin"] = true }
local stealActive = false
local promptsEnabled = false
local autoFarmActive = false
local autoScanActive = false
local hookedPrompts = {}
local randomGenerator = Random.new()
-- Remote Event Reference
local RequestSellEvent = ReplicatedStorage:WaitForChild("Events"):WaitForChild("RequestSell")
--==================================================
-- CORE LOGIC
--==================================================
local function getCharacter()
local player = Players.LocalPlayer
local char = player.Character
return (char and char:FindFirstChild("Humanoid") and char.Humanoid.Health > 0) and char or nil
end
local function getHumanoidRootPart()
local char = getCharacter()
if not char then task.wait(0.1) char = getCharacter() end
return char and char:FindFirstChild("HumanoidRootPart")
end
local function hardTeleport(cf)
local hrp = getHumanoidRootPart()
if not hrp then return end
hrp.AssemblyLinearVelocity = Vector3.new(0,0,0)
for i = 1, 4 do
hrp.CFrame = cf
RunService.Heartbeat:Wait()
end
end
local function setupPromptHook(prompt)
if not prompt:IsA("ProximityPrompt") or hookedPrompts[prompt] then return end
hookedPrompts[prompt] = true
prompt.Triggered:Connect(function()
if stealActive then
hardTeleport(TARGET_CFRAME)
end
end)
end
local function scanAndSync()
local basesFolder = workspace:FindFirstChild("Bases")
if not basesFolder then return 0 end
local count = 0
for _, desc in ipairs(basesFolder:GetDescendants()) do
if desc:IsA("ProximityPrompt") then
if desc.Parent and (desc.Parent:IsA("BasePart") or desc.Parent:IsA("MeshPart")) then
desc.Enabled = promptsEnabled
setupPromptHook(desc)
count += 1
end
end
end
return count
end
local function findRandomByRarity()
local bases = workspace:FindFirstChild("Bases")
if not bases then return nil end
local matches = {}
for _, obj in ipairs(bases:GetDescendants()) do
local rarity = obj:GetAttribute("Rarity")
if rarity and enabledRarities[rarity] then
table.insert(matches, obj)
end
end
return #matches > 0 and matches[randomGenerator:NextInteger(1, #matches)] or nil
end
local function runAutoFarmCycle()
if not autoFarmActive then return end
local target = findRandomByRarity()
if not target then task.wait(1) return end
local hrp = getHumanoidRootPart()
if not hrp then return end
local part = target:IsA("BasePart") and target or target:FindFirstChildWhichIsA("BasePart", true)
if not part then return end
hrp.CFrame = part.CFrame + Vector3.new(0, 3, 0)
task.wait(0.8)
local prompt = target:FindFirstChildWhichIsA("ProximityPrompt", true)
if prompt then
prompt:InputHoldBegin()
task.wait(0.2)
prompt:InputHoldEnd()
task.wait(1.5)
if stealActive then hardTeleport(TARGET_CFRAME) end
end
end
--==================================================
-- SELL FUNCTIONS
--==================================================
local function sellInventory()
RequestSellEvent:FireServer("Inventory")
end
local function sellEquipped()
RequestSellEvent:FireServer("Equipped")
end
--==================================================
-- MOBILE UI (COMPACT)
--==================================================
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "DeepHatMobile"
ScreenGui.Parent = CoreGui
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 180, 0, 280)
MainFrame.Position = UDim2.new(0.1, 0, 0.3, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 30)
Title.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Text = "DEEP HAT MOBILE"
Title.Font = Enum.Font.GothamBold
Title.TextSize = 12
Title.Parent = MainFrame
local Container = Instance.new("ScrollingFrame")
Container.Size = UDim2.new(1, -10, 1, -40)
Container.Position = UDim2.new(0, 5, 0, 35)
Container.BackgroundTransparency = 1
Container.CanvasSize = UDim2.new(0, 0, 0, 550)
Container.ScrollBarThickness = 2
Container.Parent = MainFrame
local UIListLayout = Instance.new("UIListLayout")
UIListLayout.Parent = Container
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0, 6)
-- UI Helpers
local function createButton(name, color, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -5, 0, 32)
btn.BackgroundColor3 = color or Color3.fromRGB(50, 50, 50)
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Text = name
btn.Font = Enum.Font.GothamMedium
btn.TextSize = 11
btn.AutoButtonColor = true
btn.Parent = Container
btn.MouseButton1Click:Connect(callback)
return btn
end
local function createToggle(name, callback)
local state = false
local btn = createButton(name .. ": OFF", Color3.fromRGB(60, 60, 60), function() end)
btn.MouseButton1Click:Connect(function()
state = not state
btn.Text = name .. (state and ": ON" or ": OFF")
btn.BackgroundColor3 = state and Color3.fromRGB(80, 120, 80) or Color3.fromRGB(60, 60, 60)
callback(state)
end)
end
--==================================================
-- RARITY PANEL (CENTERED OVERLAY)
--==================================================
local RarityPanel = Instance.new("Frame")
RarityPanel.Name = "RarityPanel"
RarityPanel.Size = UDim2.new(0, 200, 0, 250)
RarityPanel.AnchorPoint = Vector2.new(0.5, 0.5)
RarityPanel.Position = UDim2.new(0.5, 0, 0.5, 0)
RarityPanel.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
RarityPanel.BorderSizePixel = 2
RarityPanel.BorderColor3 = Color3.fromRGB(100, 100, 255)
RarityPanel.Visible = false
RarityPanel.ZIndex = 100
RarityPanel.Parent = ScreenGui
local PanelTitle = Instance.new("TextLabel")
PanelTitle.Size = UDim2.new(1, 0, 0, 30)
PanelTitle.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
PanelTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
PanelTitle.Text = "SELECT RARITY"
PanelTitle.Font = Enum.Font.GothamBold
PanelTitle.TextSize = 12
PanelTitle.ZIndex = 101
PanelTitle.Parent = RarityPanel
local PanelClose = Instance.new("TextButton")
PanelClose.Size = UDim2.new(0, 30, 0, 30)
PanelClose.Position = UDim2.new(1, -30, 0, 0)
PanelClose.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
PanelClose.Text = "X"
PanelClose.TextColor3 = Color3.fromRGB(255, 255, 255)
PanelClose.Font = Enum.Font.GothamBold
PanelClose.TextSize = 12
PanelClose.ZIndex = 102
PanelClose.Parent = RarityPanel
local PanelContainer = Instance.new("ScrollingFrame")
PanelContainer.Size = UDim2.new(1, -10, 1, -40)
PanelContainer.Position = UDim2.new(0, 5, 0, 35)
PanelContainer.BackgroundTransparency = 1
PanelContainer.CanvasSize = UDim2.new(0, 0, 0, 350)
PanelContainer.ScrollBarThickness = 4
PanelContainer.ZIndex = 101
PanelContainer.Parent = RarityPanel
local PanelList = Instance.new("UIListLayout")
PanelList.Parent = PanelContainer
PanelList.SortOrder = Enum.SortOrder.LayoutOrder
PanelList.Padding = UDim.new(0, 5)
-- [NEW] Function to update the number in brackets on the main menu
local function updateRarityButtonText(btn)
local count = 0
for _, v in pairs(enabledRarities) do
if v then count += 1 end
end
btn.Text = "Rarity Select: ["..count.."]"
end
-- Populate Rarity Buttons
for _, rName in ipairs(rarities) do
local rb = Instance.new("TextButton")
rb.Size = UDim2.new(1, -5, 0, 32)
rb.BackgroundColor3 = enabledRarities[rName] and Color3.fromRGB(100, 150, 100) or Color3.fromRGB(50, 50, 50)
rb.TextColor3 = Color3.fromRGB(255, 255, 255)
rb.Text = rName
rb.Font = Enum.Font.Gotham
rb.TextSize = 12
rb.ZIndex = 102
rb.Parent = PanelContainer
rb.MouseButton1Click:Connect(function()
enabledRarities[rName] = not enabledRarities[rName]
rb.BackgroundColor3 = enabledRarities[rName] and Color3.fromRGB(100, 150, 100) or Color3.fromRGB(50, 50, 50)
rb.TextColor3 = enabledRarities[rName] and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(200, 200, 200)
-- Trigger UI Update on the main button
local mainBtn = MainFrame:FindFirstChild("RaritySelectBtn", true)
if mainBtn then
updateRarityButtonText(mainBtn)
end
end)
end
PanelClose.MouseButton1Click:Connect(function()
RarityPanel.Visible = false
end)
--==================================================
-- MAIN MENU SETUP
--==================================================
createToggle("Auto Farm", function(v) autoFarmActive = v end)
createToggle("Instant Steal", function(v) stealActive = v end)
createToggle("Enable Prompts", function(v) promptsEnabled = v end)
createToggle("Auto Scan Prompts", function(v) autoScanActive = v end)
-- Rarity Selection Button
local initialCount = 0
for _, v in pairs(enabledRarities) do if v then initialCount += 1 end end
-- We name this button so the Rarity Panel can find it to update its text
local rarityBtn = createButton("Rarity Select: ["..initialCount.."]", Color3.fromRGB(70, 70, 100))
rarityBtn.Name = "RaritySelectBtn"
rarityBtn.MouseButton1Click:Connect(function()
RarityPanel.Visible = not RarityPanel.Visible
end)
-- SELL SECTION
createButton("Sell Inventory", Color3.fromRGB(100, 80, 150), function()
sellInventory()
end)
createButton("Sell Equipped", Color3.fromRGB(150, 80, 80), function()
sellEquipped()
end)
-- Utility Buttons
createButton("Scan Prompts (Once)", Color3.fromRGB(80, 80, 80), function()
local c = scanAndSync()
print("[DeepHat] Scanned " .. c .. " prompts.")
end)
createButton("Purge Guards", Color3.fromRGB(120, 50, 50), function()
local npcFolder = workspace:FindFirstChild("LocalNPCs")
if npcFolder then
for i = 1, 11 do
local target = npcFolder:FindFirstChild("LocalGuard_Base" .. i)
if target then target:Destroy() end
end
end
end)
createButton("Refresh System", Color3.fromRGB(50, 80, 120), function()
autoFarmActive = false
stealActive = false
promptsEnabled = false
autoScanActive = false
table.clear(hookedPrompts)
print("[DeepHat] System Refreshed")
end)
--==================================================
-- LOOPS
--==================================================
task.spawn(function()
while true do
if autoFarmActive then runAutoFarmCycle() end
task.wait(0.5)
end
end)
task.spawn(function()
while true do
if autoScanActive then
scanAndSync()
end
task.wait(0.1)
end
end)
print("[DeepHat] Mobile Edition Loaded.")