What's new
Heapleak - Scripthub

Get the most out of HeapLeak by creating a free account! Once signed in, you’ll gain full access to restricted content, be able to share your own scripts, and participate in our member-only discussions.

NIKI HUB (esp, aim, loot esp, hitbox expander)

Version / Update: v1.0.0
Download / Script Link
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TeleportService = game:GetService("TeleportService")
local TweenService = game:GetService("TweenService")
local Lighting = game:GetService("Lighting")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()

local LootFolder = workspace:FindFirstChild("Filter") and workspace.Filter:FindFirstChild("SpawnedPiles")
local OrigLight = {B = Lighting.Brightness, C = Lighting.ClockTime, A = Lighting.Ambient, S = Lighting.GlobalShadows}

local espEnabled = true
local espMode = "Highlight"
local espColor = Color3.fromRGB(255, 0, 0)
local espColorIndex = 1
local espColors = {
Color3.fromRGB(255, 0, 0),
Color3.fromRGB(0, 255, 0),
Color3.fromRGB(0, 100, 255),
Color3.fromRGB(255, 255, 0),
Color3.fromRGB(255, 0, 255),
Color3.fromRGB(0, 255, 255)
}
local espColorNames = {"Red", "Green", "Blue", "Yellow", "Pink", "Cyan"}

local aimEnabled = false
local fovSize = 120
local fovColor = Color3.fromRGB(255, 0, 0)
local fovColorIndex = 1
local fovColors = {
Color3.fromRGB(255, 0, 0),
Color3.fromRGB(0, 255, 0),
Color3.fromRGB(0, 100, 255),
Color3.fromRGB(255, 255, 0),
Color3.fromRGB(255, 0, 255),
Color3.fromRGB(0, 255, 255)
}
local fovColorNames = {"Red", "Green", "Blue", "Yellow", "Pink", "Cyan"}
local aimKey = Enum.UserInputType.MouseButton2
local isSettingAimKey = false

local hitboxEnabled = false
local hitboxMultiplier = 2.0
local originalSizes = {}

local scrapEspEnabled = false
local crateEspEnabled = false
local safeEspEnabled = false
local autoLockpick = false

local menuKey = Enum.KeyCode.LeftAlt
local isSettingMenuKey = false

local screenGui = Instance.new("ScreenGui")
screenGui.Parent = game.CoreGui
screenGui.ResetOnSpawn = false
screenGui.Name = "NikiHub"

local mainFrame = Instance.new("Frame", screenGui)
mainFrame.Size = UDim2.new(0, 650, 0, 600)
mainFrame.Position = UDim2.new(0.5, -325, 0.5, -300)
mainFrame.BackgroundColor3 = Color3.fromRGB(15, 25, 45)
Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 12)

local topBar = Instance.new("Frame", mainFrame)
topBar.Size = UDim2.new(1, 0, 0, 4)
local hue = 0.6
RunService.RenderStepped:Connect(function()
hue = hue + 0.002
if hue > 1 then hue = 0 end
topBar.BackgroundColor3 = Color3.fromHSV(hue, 1, 1)
end)

local title = Instance.new("TextLabel", mainFrame)
title.Size = UDim2.new(1, 0, 0, 45)
title.BackgroundTransparency = 1
title.Text = "Niki Hub"
title.Font = Enum.Font.GothamBold
title.TextSize = 22
title.TextColor3 = Color3.new(0.8, 0.9, 1)

local dragging = false
local dragStart, dragFramePos
title.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
dragFramePos = mainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
title.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement and dragging then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(dragFramePos.X.Scale, dragFramePos.X.Offset + delta.X,
dragFramePos.Y.Scale, dragFramePos.Y.Offset + delta.Y)
end
end)

local tabPanel = Instance.new("Frame", mainFrame)
tabPanel.Size = UDim2.new(1, -20, 0, 35)
tabPanel.Position = UDim2.new(0, 10, 0, 50)
tabPanel.BackgroundTransparency = 1

local tabs = {"ESP", "AIM", "HITBOX", "LOOT", "SETTINGS"}
local tabButtons = {}
local tabWidth = 115
for idx, name in ipairs(tabs) do
local btn = Instance.new("TextButton", tabPanel)
btn.Size = UDim2.new(0, tabWidth, 1, 0)
btn.Position = UDim2.new(0, (idx-1)*(tabWidth+5), 0, 0)
btn.Text = name
btn.Font = Enum.Font.Gotham
btn.TextSize = 14
btn.TextColor3 = Color3.new(1, 1, 1)
btn.BackgroundColor3 = Color3.fromRGB(40, 60, 90)
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
tabButtons[idx] = btn
end

local contentHolder = Instance.new("Frame", mainFrame)
contentHolder.Size = UDim2.new(1, -20, 1, -140)
contentHolder.Position = UDim2.new(0, 10, 0, 90)
contentHolder.BackgroundTransparency = 1

local espFrame = Instance.new("Frame", contentHolder)
espFrame.Size = UDim2.new(1, 0, 1, 0)
espFrame.BackgroundTransparency = 1

local aimFrame = Instance.new("Frame", contentHolder)
aimFrame.Size = UDim2.new(1, 0, 1, 0)
aimFrame.BackgroundTransparency = 1
aimFrame.Visible = false

local hitboxFrame = Instance.new("Frame", contentHolder)
hitboxFrame.Size = UDim2.new(1, 0, 1, 0)
hitboxFrame.BackgroundTransparency = 1
hitboxFrame.Visible = false

local lootFrame = Instance.new("Frame", contentHolder)
lootFrame.Size = UDim2.new(1, 0, 1, 0)
lootFrame.BackgroundTransparency = 1
lootFrame.Visible = false

local settingsFrame = Instance.new("Frame", contentHolder)
settingsFrame.Size = UDim2.new(1, 0, 1, 0)
settingsFrame.BackgroundTransparency = 1
settingsFrame.Visible = false

for i, btn in ipairs(tabButtons) do
btn.MouseButton1Click:Connect(function()
espFrame.Visible = (i == 1)
aimFrame.Visible = (i == 2)
hitboxFrame.Visible = (i == 3)
lootFrame.Visible = (i == 4)
settingsFrame.Visible = (i == 5)
end)
end

local function createButton(parent, text, yPos)
local btn = Instance.new("TextButton", parent)
btn.Size = UDim2.new(0, 260, 0, 38)
btn.Position = UDim2.new(.5, -130, 0, yPos)
btn.Text = text
btn.Font = Enum.Font.Gotham
btn.TextSize = 14
btn.TextColor3 = Color3.new(1, 1, 1)
btn.BackgroundColor3 = Color3.fromRGB(40, 60, 90)
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10)

btn.MouseEnter:Connect(function()
TweenService:Create(btn, TweenInfo.new(.15), {BackgroundColor3 = Color3.fromRGB(60, 90, 130)}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(.15), {BackgroundColor3 = Color3.fromRGB(40, 60, 90)}):Play()
end)
return btn
end

local function createSlider(parent, label, min, max, default, yPos, onChange)
local labelObj = Instance.new("TextLabel", parent)
labelObj.Size = UDim2.new(0, 260, 0, 20)
labelObj.Position = UDim2.new(.5, -130, 0, yPos)
labelObj.BackgroundTransparency = 1
labelObj.Text = label .. ": " .. string.format("%.1f", default)
labelObj.Font = Enum.Font.Gotham
labelObj.TextSize = 14
labelObj.TextColor3 = Color3.fromRGB(200, 200, 255)

local bg = Instance.new("Frame", parent)
bg.Size = UDim2.new(0, 260, 0, 10)
bg.Position = UDim2.new(.5, -130, 0, yPos + 20)
bg.BackgroundColor3 = Color3.fromRGB(30, 50, 80)
Instance.new("UICorner", bg).CornerRadius = UDim.new(0, 5)

local fill = Instance.new("Frame", bg)
fill.Size = UDim2.new((default-min)/(max-min), 0, 1, 0)
fill.BackgroundColor3 = Color3.fromRGB(100, 150, 255)
Instance.new("UICorner", fill).CornerRadius = UDim.new(0, 5)

local knob = Instance.new("TextButton", parent)
knob.Size = UDim2.new(0, 20, 0, 20)
knob.Position = UDim2.new(.5, -130 + ((default-min)/(max-min)*260) - 10, 0, yPos + 15)
knob.BackgroundColor3 = Color3.new(1, 1, 1)
knob.Text = ""
knob.ZIndex = 2
Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0)

local dragging = false
local value = default

knob.MouseButton1Down:Connect(function() dragging = true end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local mousePos = UserInputService:GetMouseLocation()
local sliderX = bg.AbsolutePosition.X
local rel = math.clamp(mousePos.X - sliderX, 0, bg.AbsoluteSize.X)
local newVal = min + (rel / bg.AbsoluteSize.X) * (max - min)
newVal = math.floor(newVal * 10) / 10
value = newVal
fill.Size = UDim2.new((value-min)/(max-min), 0, 1, 0)
knob.Position = UDim2.new(.5, -130 + ((value-min)/(max-min)*260) - 10, 0, yPos + 15)
labelObj.Text = label .. ": " .. string.format("%.1f", value)
onChange(value)
end
end)
return labelObj
end

local function createToggle(parent, text, yPos, getter, setter)
local label = Instance.new("TextLabel", parent)
label.Size = UDim2.new(0, 150, 0, 25)
label.Position = UDim2.new(0, 10, 0, yPos)
label.BackgroundTransparency = 1
label.Text = text
label.Font = Enum.Font.Gotham
label.TextSize = 14
label.TextXAlignment = Enum.TextXAlignment.Left
label.TextColor3 = Color3.new(1, 1, 1)

local btn = Instance.new("TextButton", parent)
btn.Size = UDim2.new(0, 60, 0, 25)
btn.Position = UDim2.new(1, -70, 0, yPos)
btn.Text = getter() and "ON" or "OFF"
btn.Font = Enum.Font.GothamBold
btn.TextSize = 14
btn.BackgroundColor3 = getter() and Color3.fromRGB(0, 170, 0) or Color3.fromRGB(170, 0, 0)
btn.TextColor3 = Color3.new(1, 1, 1)
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 5)
btn.MouseButton1Click:Connect(function()
setter(not getter())
btn.Text = getter() and "ON" or "OFF"
btn.BackgroundColor3 = getter() and Color3.fromRGB(0, 170, 0) or Color3.fromRGB(170, 0, 0)
end)
return btn
end

local espOnBtn = createButton(espFrame, "ESP ON", 20)
local modeBtn = createButton(espFrame, "Mode: " .. espMode, 70)
local colorBtn = createButton(espFrame, "Box Color: " .. espColorNames[espColorIndex], 120)

local boxLines = {}

local function removeAllHighlights()
for _, plr in pairs(Players:GetPlayers()) do
if plr.Character then
local hl = plr.Character:FindFirstChildOfClass("Highlight")
if hl then hl:Destroy() end
end
end
end

local function removeAllBoxes()
for plr, lines in pairs(boxLines) do
for _, line in pairs(lines) do line:Remove() end
end
boxLines = {}
end

local function findBodyPart(character)
if not character then return nil end
local root = character:FindFirstChild("HumanoidRootPart")
if root then return root end
local torso = character:FindFirstChild("Torso")
if torso then return torso end
local head = character:FindFirstChild("Head")
if head then return head end
for _, child in pairs(character:GetChildren()) do
if child:IsA("BasePart") then
return child
end
end
return nil
end

local function createHighlightForPlayer(plr)
if plr == LocalPlayer then return end
if not plr.Character then return end
local old = plr.Character:FindFirstChildOfClass("Highlight")
if old then old:Destroy() end
local hl = Instance.new("Highlight")
hl.Parent = plr.Character
hl.FillTransparency = 0.5
hl.OutlineTransparency = 0
hl.FillColor = espColor
hl.OutlineColor = espColor
end

local function createBoxLinesForPlayer(plr)
if boxLines[plr] then return end
local lines = {}
for i = 1, 4 do
lines[i] = Drawing.new("Line")
lines[i].Thickness = 2
lines[i].Color = espColor
lines[i].Visible = false
end
boxLines[plr] = lines
end

local function updateBoxes()
if not espEnabled or espMode ~= "Box" then
for _, lines in pairs(boxLines) do
for _, line in pairs(lines) do line.Visible = false end
end
return
end

for _, plr in pairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character then
local part = findBodyPart(plr.Character)
if part then
createBoxLinesForPlayer(plr)
local pos, onScreen = Camera:WorldToViewportPoint(part.Position)
if onScreen then
local dist = (Camera.CFrame.Position - part.Position).Magnitude
local height = 500 / dist
local width = height * 0.6
local left = pos.X - width/2
local right = pos.X + width/2
local top = pos.Y - height/2
local bottom = pos.Y + height/2
local lines = boxLines[plr]
lines[1].From = Vector2.new(left, top)
lines[1].To = Vector2.new(right, top)
lines[2].From = Vector2.new(right, top)
lines[2].To = Vector2.new(right, bottom)
lines[3].From = Vector2.new(right, bottom)
lines[3].To = Vector2.new(left, bottom)
lines[4].From = Vector2.new(left, bottom)
lines[4].To = Vector2.new(left, top)
for _, line in pairs(lines) do
line.Color = espColor
line.Visible = true
end
else
if boxLines[plr] then
for _, line in pairs(boxLines[plr]) do line.Visible = false end
end
end
else
if boxLines[plr] then
for _, line in pairs(boxLines[plr]) do line.Visible = false end
end
end
else
if boxLines[plr] then
for _, line in pairs(boxLines[plr]) do line.Visible = false end
end
end
end
end

local function refreshESP()
if not espEnabled then
removeAllHighlights()
removeAllBoxes()
return
end
if espMode == "Highlight" then
removeAllBoxes()
for _, plr in pairs(Players:GetPlayers()) do
createHighlightForPlayer(plr)
end
else
removeAllHighlights()
end
end

Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function()
task.wait(0.5)
if espEnabled and espMode == "Highlight" then
createHighlightForPlayer(plr)
end
end)
end)

Players.PlayerRemoving:Connect(function(plr)
if boxLines[plr] then
for _, line in pairs(boxLines[plr]) do line:Remove() end
boxLines[plr] = nil
end
end)

for _, plr in pairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character then
plr.CharacterAdded:Connect(function()
task.wait(0.5)
if espEnabled and espMode == "Highlight" then
createHighlightForPlayer(plr)
end
end)
end
end

LocalPlayer.CharacterAdded:Connect(function()
task.wait(1)
if espEnabled and espMode == "Highlight" then
for _, plr in pairs(Players:GetPlayers()) do
createHighlightForPlayer(plr)
end
end
end)

espOnBtn.MouseButton1Click:Connect(function()
espEnabled = not espEnabled
espOnBtn.Text = espEnabled and "ESP ON" or "ESP OFF"
refreshESP()
end)

modeBtn.MouseButton1Click:Connect(function()
espMode = (espMode == "Highlight") and "Box" or "Highlight"
modeBtn.Text = "Mode: " .. espMode
refreshESP()
end)

colorBtn.MouseButton1Click:Connect(function()
espColorIndex = espColorIndex + 1
if espColorIndex > #espColors then espColorIndex = 1 end
espColor = espColors[espColorIndex]
colorBtn.Text = "Box Color: " .. espColorNames[espColorIndex]
for plr, lines in pairs(boxLines) do
for _, line in pairs(lines) do
line.Color = espColor
end
end
refreshESP()
end)

-- ========== AIMBOT SECTION (FIXED) ==========
-- Створюємо FOV круг ДО слайдера, щоб він був доступний при зміні розміру
local fovCircle = Drawing.new("Circle")
fovCircle.Radius = fovSize
fovCircle.Thickness = 2
fovCircle.Color = fovColor
fovCircle.Visible = false
fovCircle.NumSides = 64

local aimOnBtn = createButton(aimFrame, "AIM OFF", 20)
local aimKeyBtn = createButton(aimFrame, "Aim Key: RMB", 70)
local fovColorBtn = createButton(aimFrame, "FOV Color: " .. fovColorNames[fovColorIndex], 120)
createSlider(aimFrame, "FOV Size", 50, 300, fovSize, 170, function(val)
fovSize = val
if fovCircle then fovCircle.Radius = fovSize end
end)

RunService.RenderStepped:Connect(function()
if fovCircle then
fovCircle.Position = Vector2.new(Mouse.X, Mouse.Y)
end
updateBoxes()

if aimEnabled then
local keyPressed = false
if typeof(aimKey) == "EnumItem" then
if aimKey.EnumType == Enum.UserInputType then
keyPressed = UserInputService:IsMouseButtonPressed(aimKey)
else
keyPressed = UserInputService:IsKeyDown(aimKey)
end
end
if keyPressed then
local closestTarget = nil
local closestDist = fovSize
for _, plr in pairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("Head") then
local headPos = plr.Character.Head.Position
local vec, onScr = Camera:WorldToViewportPoint(headPos)
if onScr then
local dist = (Vector2.new(vec.X, vec.Y) - Vector2.new(Mouse.X, Mouse.Y)).Magnitude
if dist < closestDist then
closestDist = dist
closestTarget = plr.Character.Head
end
end
end
end
if closestTarget then
Camera.CFrame = CFrame.new(Camera.CFrame.Position, closestTarget.Position)
end
end
end
end)

aimOnBtn.MouseButton1Click:Connect(function()
aimEnabled = not aimEnabled
aimOnBtn.Text = aimEnabled and "AIM ON" or "AIM OFF"
fovCircle.Visible = aimEnabled
end)

aimKeyBtn.MouseButton1Click:Connect(function()
aimKeyBtn.Text = "Press key..."
isSettingAimKey = true
end)

fovColorBtn.MouseButton1Click:Connect(function()
fovColorIndex = fovColorIndex + 1
if fovColorIndex > #fovColors then fovColorIndex = 1 end
fovColor = fovColors[fovColorIndex]
fovColorBtn.Text = "FOV Color: " .. fovColorNames[fovColorIndex]
if fovCircle then fovCircle.Color = fovColor end
end)
-- ========== END AIMBOT SECTION ==========

local hitboxToggle = createButton(hitboxFrame, "HITBOX OFF", 20)
createSlider(hitboxFrame, "Multiplier", 1.0, 5.0, hitboxMultiplier, 70, function(val)
hitboxMultiplier = val
if hitboxEnabled then
applyHitboxToAll()
end
end)

local infoText = Instance.new("TextLabel", hitboxFrame)
infoText.Size = UDim2.new(0, 260, 0, 40)
infoText.Position = UDim2.new(.5, -130, 0, 120)
infoText.BackgroundTransparency = 1
infoText.Text = "Note: Hitboxes apply only to new players and respawns.\nExisting players are not affected."
infoText.Font = Enum.Font.Gotham
infoText.TextSize = 12
infoText.TextColor3 = Color3.fromRGB(200, 200, 255)
infoText.TextWrapped = true

local function applyHitboxToCharacter(character)
if not character then return end
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") then
if not originalSizes[part] then
originalSizes[part] = part.Size
end
part.Size = originalSizes[part] * hitboxMultiplier
end
end
end

local function restoreCharacterHitbox(character)
if not character then return end
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") and originalSizes[part] then
part.Size = originalSizes[part]
originalSizes[part] = nil
end
end
end

local function applyHitboxToAll()
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
applyHitboxToCharacter(player.Character)
end
end
end

local function restoreAll()
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
restoreCharacterHitbox(player.Character)
end
end
originalSizes = {}
end

hitboxToggle.MouseButton1Click:Connect(function()
hitboxEnabled = not hitboxEnabled
if hitboxEnabled then
hitboxToggle.Text = "HITBOX ON"
hitboxToggle.BackgroundColor3 = Color3.fromRGB(0, 100, 200)
applyHitboxToAll()
else
hitboxToggle.Text = "HITBOX OFF"
hitboxToggle.BackgroundColor3 = Color3.fromRGB(40, 60, 90)
restoreAll()
end
end)

local function onCharacterAdded(character)
task.wait(0.5)
if hitboxEnabled then
applyHitboxToCharacter(character)
end
end

Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
end)

for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
player.CharacterAdded:Connect(onCharacterAdded)
end
end

task.spawn(function()
task.wait(2)
if hitboxEnabled then
applyHitboxToAll()
end
end)

local function applyLootHighlight(obj)
if not (obj:IsA("BasePart") or obj:IsA("Model")) then return end
if (obj.Name == "S1" or obj.Name == "S2") then
local hl = obj:FindFirstChild("ScrapHL") or Instance.new("Highlight")
hl.Name = "ScrapHL"; hl.FillColor = Color3.fromRGB(255, 0, 0); hl.Parent = obj; hl.Enabled = scrapEspEnabled
elseif (obj.Name == "SupplyCrate" or obj.Name == "C1") then
local hl = obj:FindFirstChild("CrateHL") or Instance.new("Highlight")
hl.Name = "CrateHL"; hl.FillTransparency = 0.5; hl.OutlineTransparency = 0; hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop; hl.Parent = obj
if obj.Name == "SupplyCrate" then hl.FillColor = Color3.fromRGB(255, 255, 0)
elseif obj.Name == "C1" then
local isT = false
for _, c in pairs(obj:GetChildren()) do
if c:IsA("MeshPart") and c.TextureID and c.TextureID:find("11157915894") then isT = true; break end
end
hl.FillColor = isT and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 255, 0)
end
hl.Enabled = crateEspEnabled
end
end

local function updateLootESP()
if LootFolder then
for _, v in pairs(LootFolder:GetChildren()) do
if v.Name == "S1" or v.Name == "S2" then
applyLootHighlight(v)
elseif v.Name == "SupplyCrate" or v.Name == "C1" then
applyLootHighlight(v)
end
end
end
end

local function updateSafeESP()
local safeFolder = workspace:FindFirstChild("Map") and workspace.Map:FindFirstChild("BredMakurz")
if not safeFolder then return end
for _, obj in pairs(safeFolder:GetChildren()) do
if obj:IsA("Model") and (obj.Name:find("SmallSafe") or obj.Name:find("MediumSafe")) then
local billboard = obj:FindFirstChild("SafeUI")
if safeEspEnabled then
if not billboard then
billboard = Instance.new("BillboardGui")
billboard.Name = "SafeUI"; billboard.AlwaysOnTop = true; billboard.Size = UDim2.new(0, 100, 0, 30); billboard.StudsOffset = Vector3.new(0, 3, 0); billboard.Parent = obj
local label = Instance.new("TextLabel", billboard); label.Name = "SafeLabel"; label.BackgroundTransparency = 1; label.Size = UDim2.new(1, 0, 1, 0); label.Font = Enum.Font.Gotham; label.TextSize = 14; label.TextStrokeTransparency = 0; label.TextColor3 = Color3.new(1,1,1)
end
local values = obj:FindFirstChild("Values")
local brokenVal = values and values:FindFirstChild("Broken")
local isBroken = (brokenVal and brokenVal.Value == true)
local label = billboard.SafeLabel
label.Text = obj.Name:find("Small") and "Small Safe" or "Medium Safe"
label.TextColor3 = isBroken and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 255, 0)
billboard.Enabled = true
else
if billboard then billboard.Enabled = false end
end
end
end
end

task.spawn(function()
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
while true do
task.wait()
if autoLockpick then
local lpgui = PlayerGui:FindFirstChild('LockpickGUI')
if lpgui and lpgui:FindFirstChild("MF") then
pcall(function()
local B1 = lpgui.MF.LP_Frame.Frames.B1.Bar.Selection
local B2 = lpgui.MF.LP_Frame.Frames.B2.Bar.Selection
local B3 = lpgui.MF.LP_Frame.Frames.B3.Bar.Selection
if checkLockpick then checkLockpick(B1, B2, B3) end
end)
end
end
end
end)

createToggle(lootFrame, "Scrap ESP", 10, function() return scrapEspEnabled end, function(v) scrapEspEnabled = v; updateLootESP() end)
createToggle(lootFrame, "Crate ESP", 50, function() return crateEspEnabled end, function(v) crateEspEnabled = v; updateLootESP() end)
createToggle(lootFrame, "Safe ESP", 90, function() return safeEspEnabled end, function(v) safeEspEnabled = v; updateSafeESP() end)
createToggle(lootFrame, "Auto Lockpick", 130, function() return autoLockpick end, function(v) autoLockpick = v end)

local menuKeyBtn = createButton(settingsFrame, "Menu Key: LeftAlt", 20)
local rejoinBtn = createButton(settingsFrame, "Rejoin", 70)

menuKeyBtn.MouseButton1Click:Connect(function()
menuKeyBtn.Text = "Press key..."
isSettingMenuKey = true
end)

rejoinBtn.MouseButton1Click:Connect(function()
TeleportService:Teleport(game.PlaceId, LocalPlayer)
end)

UserInputService.InputBegan:Connect(function(inp, gProc)
if gProc then return end

if isSettingMenuKey then
if inp.KeyCode ~= Enum.KeyCode.Unknown then
menuKey = inp.KeyCode
menuKeyBtn.Text = "Menu Key: " .. inp.KeyCode.Name
isSettingMenuKey = false
elseif inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.MouseButton2 then
menuKey = inp.UserInputType
menuKeyBtn.Text = "Menu Key: " .. tostring(inp.UserInputType):gsub("Enum.UserInputType.", "")
isSettingMenuKey = false
end
return
end

if isSettingAimKey then
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.MouseButton2 then
aimKey = inp.UserInputType
aimKeyBtn.Text = "Aim Key: " .. tostring(inp.UserInputType):gsub("Enum.UserInputType.", "")
isSettingAimKey = false
elseif inp.KeyCode ~= Enum.KeyCode.Unknown then
aimKey = inp.KeyCode
aimKeyBtn.Text = "Aim Key: " .. inp.KeyCode.Name
isSettingAimKey = false
end
return
end

if inp.KeyCode == menuKey or inp.UserInputType == menuKey then
mainFrame.Visible = not mainFrame.Visible
end
end)

refreshESP()

if LootFolder then
LootFolder.ChildAdded:Connect(function(d) task.defer(function() applyLootHighlight(d) end) end)
updateLootESP()
end

task.spawn(function()
while true do
task.wait(0.5)
if safeEspEnabled then updateSafeESP() end
end
end)

print("=== Niki Hub loaded ===")
print("Press LeftAlt to open menu.")
[ View More ]
f4b009c9-889d-4770-afc4-f343fc56cdd3.webp


Criminality is a free roam fighting game featuring punishing and unpredictable gameplay with advanced combat mechanics and extensive weaponry. You are in SECTOR-07, the most hostile and uncontrollable sector exiled from civilized society. Arm yourselves, and prepare for the unexpected.
 
Back
Top