local Players = game:GetService('Players')
local Lighting = game:GetService('Lighting')
local UIS = game:GetService('UserInputService')
local RunService = game:GetService('RunService')
local LP = Players.LocalPlayer
if not LP then return end
local pg = LP:WaitForChild('PlayerGui')
local globalEnv = (getgenv and getgenv()) or _G
if type(globalEnv.BDH_DontSplash_Unload) == 'function' then
pcall(globalEnv.BDH_DontSplash_Unload)
end
local connections = {}
local unloaded = false
local function connect(signal, fn)
local c = signal:Connect(fn)
table.insert(connections, c)
return c
end
local old = pg:FindFirstChild('BrandonsDontSplashHub')
if old then old:Destroy() end
local oldMarks = workspace:FindFirstChild('BDH_LocalMarks')
if oldMarks then oldMarks:Destroy() end
local gui = Instance.new('ScreenGui')
gui.Name='BrandonsDontSplashHub'; gui.ResetOnSpawn=false; gui.IgnoreGuiInset=true; gui.Parent=pg
local marks=Instance.new('Folder'); marks.Name='BDH_LocalMarks'; marks.Parent=workspace
local C={bg=Color3.fromRGB(18,13,29), panel=Color3.fromRGB(29,20,46), accent=Color3.fromRGB(171,78,255), off=Color3.fromRGB(66,53,83), white=Color3.fromRGB(245,238,255)}
local function round(x,r) local u=Instance.new('UICorner');u.CornerRadius=UDim.new(0,r);u.Parent=x end
local function stroke(x) local s=Instance.new('UIStroke');s.Color=C.accent;s.Thickness=1;s.Transparency=.28;s.Parent=x end
local function txt(parent,str,size,pos,sz) local l=Instance.new('TextLabel');l.BackgroundTransparency=1;l.Text=str;l.TextColor3=C.white;l.TextSize=size;l.Font=Enum.Font.GothamSemibold;l.TextXAlignment=Enum.TextXAlignment.Left;l.Position=pos;l.Size=sz;l.Parent=parent;return l end
local frame=Instance.new('Frame');frame.Size=UDim2.fromOffset(390,510);frame.Position=UDim2.new(.5,-195,.5,-255);frame.BackgroundColor3=C.bg;frame.Parent=gui;round(frame,12);stroke(frame)
-- Menu focus: save the original mouse state before changing it.
local mouseWasLocked = UIS.MouseBehavior
local iconWasEnabled = UIS.MouseIconEnabled
local mouseControlConnection
local function updateGuiMouse()
if gui.Parent and frame and frame.Visible then
UIS.MouseBehavior = Enum.MouseBehavior.Default
UIS.MouseIconEnabled = true
end
end
local function releaseGuiMouse()
if frame.Visible then
UIS.MouseBehavior = Enum.MouseBehavior.Default
UIS.MouseIconEnabled = true
else
UIS.MouseBehavior = mouseWasLocked
UIS.MouseIconEnabled = iconWasEnabled
end
end
local header=Instance.new('Frame');header.Size=UDim2.new(1,0,0,56);header.BackgroundColor3=C.panel;header.Parent=frame;round(header,12)
txt(header,"BRANDON'S GAME HUB",18,UDim2.fromOffset(16,7),UDim2.new(1,-90,0,24))
txt(header,'DON’T SPLASH • BL V16.2',11,UDim2.fromOffset(17,31),UDim2.new(1,-100,0,18)).TextColor3=C.accent
local close=Instance.new('TextButton');close.Text='×';close.TextSize=25;close.TextColor3=C.white;close.BackgroundTransparency=1;close.Position=UDim2.new(1,-39,0,9);close.Size=UDim2.fromOffset(28,32);close.Parent=header
local scroll=Instance.new('ScrollingFrame');scroll.Position=UDim2.fromOffset(12,66);scroll.Size=UDim2.new(1,-24,1,-104);scroll.BackgroundTransparency=1;scroll.BorderSizePixel=0;scroll.ScrollBarThickness=4;scroll.ScrollBarImageColor3=C.accent;scroll.Parent=frame
local layout=Instance.new('UIListLayout');layout.Padding=UDim.new(0,8);layout.Parent=scroll
connect(layout:GetPropertyChangedSignal('AbsoluteContentSize'), function()scroll.CanvasSize=UDim2.fromOffset(0,layout.AbsoluteContentSize.Y+12)end)
local status=txt(frame,'Ready • INSERT to hide/show',11,UDim2.new(0,16,1,-30),UDim2.new(1,-30,0,20));status.TextColor3=C.accent
local state={players=false,monsters=false,items=false,safe=false,vaults=false}
local function toggle(label,key,callback)
local b=Instance.new('TextButton');b.Size=UDim2.new(1,-4,0,43);b.BackgroundColor3=C.panel;b.Text='';b.Parent=scroll;round(b,8)
txt(b,label,13,UDim2.fromOffset(13,0),UDim2.new(1,-85,1,0))
local pill=Instance.new('Frame');pill.Size=UDim2.fromOffset(45,23);pill.Position=UDim2.new(1,-57,.5,-11);pill.BackgroundColor3=C.off;pill.Parent=b;round(pill,12)
local dot=Instance.new('Frame');dot.Size=UDim2.fromOffset(17,17);dot.Position=UDim2.fromOffset(3,3);dot.BackgroundColor3=C.white;dot.Parent=pill;round(dot,9)
connect(b.MouseButton1Click, function()state[key]=not state[key];pill.BackgroundColor3=state[key] and C.accent or C.off;dot.Position=state[key] and UDim2.fromOffset(25,3) or UDim2.fromOffset(3,3);if callback then callback(state[key])end end)
end
local function section(t)local l=txt(scroll,t,12,UDim2.new(),UDim2.new(1,-4,0,24));l.TextColor3=C.accent;l.LayoutOrder=0 end
section('VISUALS')
toggle('Player ESP','players')
toggle('Monster ESP (experimental)','monsters')
toggle('Item ESP (experimental)','items')
toggle('Platform ESP (all green)','safe')
toggle('Vault ESP (maintenance valves)','vaults')
-- Overlay registry; map instances are never recolored.
local tagged={}
local vaultBillboards={}
-- Use adornments here so platform marks do not consume Highlight slots.
local platformMarks={}
local function tagPlatform(inst)
if platformMarks[inst] then return end
local part=inst:IsA('BasePart') and inst or (inst:IsA('Model') and inst:FindFirstChildWhichIsA('BasePart',true))
if not part then return end
local adorn=Instance.new('BoxHandleAdornment')
adorn.Name='BDH_PlatformESP'
adorn.Adornee=part
adorn.Size=part.Size + Vector3.new(.08,.08,.08)
adorn.Color3=Color3.fromRGB(65,255,145)
adorn.Transparency=.65
adorn.AlwaysOnTop=true
adorn.ZIndex=1
adorn.Parent=marks
platformMarks[inst]=adorn
end
local ITEM_COLOR=Color3.fromRGB(255,30,235)
local ITEM_OUTLINE=Color3.fromRGB(25,0,35)
local function tag(inst,color,label)
if tagged[inst] then return end
local h=Instance.new('Highlight');h.Name='BDHHighlight';h.FillColor=color;h.OutlineColor=(label=='Possible item') and ITEM_OUTLINE or color;h.FillTransparency=(label=='Possible item') and .28 or .75;h.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop;h.Adornee=inst;h.Parent=marks
tagged[inst]={highlight=h,label=label}
end
local function clearTags()
for _,v in pairs(tagged)do if v.highlight then v.highlight:Destroy()end end
table.clear(tagged)
for _,a in pairs(platformMarks) do pcall(function() a:Destroy() end) end
table.clear(platformMarks)
for _,b in ipairs(vaultBillboards) do pcall(function() b:Destroy() end) end
table.clear(vaultBillboards)
end
local function unload()
if unloaded then return end
unloaded = true
if globalEnv.BDH_DontSplash_Unload == unload then globalEnv.BDH_DontSplash_Unload = nil end
for _,c in ipairs(connections) do pcall(function() c:Disconnect() end) end
table.clear(connections)
if mouseControlConnection then pcall(function() mouseControlConnection:Disconnect() end) end
clearTags()
pcall(function() UIS.MouseBehavior=mouseWasLocked; UIS.MouseIconEnabled=iconWasEnabled end)
pcall(function() marks:Destroy() end)
pcall(function() gui:Destroy() end)
end
globalEnv.BDH_DontSplash_Unload = unload
local unloadButton=Instance.new('TextButton')
unloadButton.Name='UnloadButton'
unloadButton.Size=UDim2.new(1,-4,0,43)
unloadButton.BackgroundColor3=Color3.fromRGB(91,34,71)
unloadButton.Text='UNLOAD HUB • Restore & Remove'
unloadButton.TextColor3=C.white
unloadButton.Font=Enum.Font.GothamBold
unloadButton.TextSize=13
unloadButton.Parent=scroll
round(unloadButton,8)
connect(unloadButton.MouseButton1Click, unload)
local monsterWords={'monster','creature','entity','beast','hunter','locust'}
local itemWords={'pebble','rock','bottle','flare','battery','key','tool','pickup','collectible','rope','toy'}
local function match(name,words)
local s=string.lower(name)
for _,w in ipairs(words) do if s:find(w,1,true) then return true end end
return false
end
-- One green outline for all matched platform parts.
-- Names + attributes are enough for the maps we've seen so far.
local platformWords={'platform','pad','tile','step','sinking','spinner','spinplatform','collapse','temporary'}
local function isPlatform(inst)
if not inst:IsA('BasePart') then return false end
if LP.Character and inst:IsDescendantOf(LP.Character) then return false end
if inst.Size.X<1.5 or inst.Size.Z<1.5 or inst.Size.Y>16 then return false end
local parent=inst.Parent
local name=string.lower(inst.Name..' '..(parent and parent.Name or ''))
if match(name,platformWords) then return true end
for k,v in pairs(inst:GetAttributes()) do
local key=string.lower(tostring(k))
if key=='cansink' or key=='issinking' or key=='sinking' or key=='issafe' or key=='stable' or key=='platform' or key=='isplatform' then
return true
end
end
return false
end
-- Valve prompts were more reliable than model names during testing.
-- Streaming can still hide one until you get closer.
local function vaultPrompt(inst)
if not inst:IsA('ProximityPrompt') then return false end
local words=string.lower((inst.ActionText or '')..' '..(inst.ObjectText or '')..' '..(inst.Parent and inst.Parent.Name or ''))
return words:find('valve',1,true) or words:find('maintenance control',1,true)
end
local function vaultTarget(prompt)
local node=prompt.Parent
if not node then return nil end
local fallback=node
for i=1,4 do
if not node or node==workspace then break end
if node:IsA('Model') and node:FindFirstChildWhichIsA('BasePart',true) then
return node
end
if node:IsA('BasePart') then fallback=node end
node=node.Parent
end
return fallback
end
local function vaultStatus(prompt)
local txt=string.lower((prompt.ActionText or '')..' '..(prompt.ObjectText or ''))
if not prompt.Enabled or txt:find('close valve',1,true) then return 'activated' end
if txt:find('open valve',1,true) then return 'available' end
return 'unknown'
end
local function labelVault(target,prompt,mode)
local anchor=target:IsA('BasePart') and target or target:FindFirstChildWhichIsA('BasePart',true)
if not anchor then return end
local bb=Instance.new('BillboardGui')
bb.Name='BDH_VaultLabel';bb.Adornee=anchor;bb.AlwaysOnTop=true;bb.Size=UDim2.fromOffset(170,36)
bb.StudsOffsetWorldSpace=Vector3.new(0,math.max(anchor.Size.Y/2+2,3),0);bb.Parent=marks
local root=LP.Character and LP.Character:FindFirstChild('HumanoidRootPart')
local distance=root and math.floor((root.Position-anchor.Position).Magnitude+0.5)
local label=txt(bb,'VAULT • '..string.upper(mode)..(distance and (' • '..distance..' studs') or ''),12,UDim2.new(),UDim2.fromScale(1,1))
label.TextXAlignment=Enum.TextXAlignment.Center
label.TextColor3=mode=='available' and Color3.fromRGB(255,105,105) or mode=='activated' and Color3.fromRGB(80,245,150) or Color3.fromRGB(220,220,220)
table.insert(vaultBillboards,bb)
end
local lastScan=0
connect(RunService.Heartbeat, function(dt)
if not gui.Parent then return end
if os.clock()-lastScan<1.5 then return end;lastScan=os.clock();clearTags()
if state.players then for _,p in ipairs(Players:GetPlayers())do if p~=LP and p.Character then tag(p.Character,Color3.fromRGB(70,210,255),'Player')end end end
if not (state.monsters or state.items or state.safe or state.vaults) then return end
local count=0
local seenVaults={}
for _,inst in ipairs(workspace:GetDescendants())do
count+=1;if count>18000 then break end
if state.vaults and vaultPrompt(inst) then
local target=vaultTarget(inst)
if target and not seenVaults[target] then
seenVaults[target]=true
local mode=vaultStatus(inst)
local color=mode=='available' and Color3.fromRGB(255,85,85) or mode=='activated' and Color3.fromRGB(70,245,140) or Color3.fromRGB(190,190,190)
tag(target,color,'Vault '..mode)
labelVault(target,inst,mode)
end
end
if state.monsters and inst:IsA('Model') and not Players:GetPlayerFromCharacter(inst) and match(inst.Name,monsterWords) and (inst:FindFirstChildOfClass('Humanoid') or inst.PrimaryPart or inst:FindFirstChildWhichIsA('BasePart')) then tag(inst,Color3.fromRGB(255,75,105),'Possible monster')
elseif state.items and (inst:IsA('Tool') or inst:IsA('Model') or inst:IsA('BasePart')) and match(inst.Name,itemWords) and not (LP.Character and inst:IsDescendantOf(LP.Character)) then tag(inst,ITEM_COLOR,'Possible item')
elseif state.safe and isPlatform(inst) then
tagPlatform(inst)
end
end
end)
mouseControlConnection = connect(RunService.RenderStepped, function()
if not gui.Parent then
mouseControlConnection:Disconnect()
return
end
updateGuiMouse()
end)
releaseGuiMouse()
connect(gui.Destroying, function()
if mouseControlConnection then mouseControlConnection:Disconnect() end
UIS.MouseBehavior = mouseWasLocked
UIS.MouseIconEnabled = iconWasEnabled
end)
local dragging,startMouse,startPos=false,nil,nil
connect(header.InputBegan, function(i)if i.UserInputType==Enum.UserInputType.MouseButton1 then dragging=true;startMouse=i.Position;startPos=frame.Position end end)
connect(UIS.InputChanged, function(i)if dragging and i.UserInputType==Enum.UserInputType.MouseMovement then local d=i.Position-startMouse;frame.Position=UDim2.new(startPos.X.Scale,startPos.X.Offset+d.X,startPos.Y.Scale,startPos.Y.Offset+d.Y)end end)
connect(UIS.InputEnded, function(i)if i.UserInputType==Enum.UserInputType.MouseButton1 then dragging=false end end)
connect(UIS.InputBegan, function(i,processed)if not processed and i.KeyCode==Enum.KeyCode.Insert then frame.Visible=not frame.Visible;releaseGuiMouse() end end)
connect(close.MouseButton1Click, function()frame.Visible=false;releaseGuiMouse() end)
status.Text='BL V16.2 • ESP only • INSERT = show/hide'
No comments yet! Be the first one to react