
KeylessUniversal

local rs = game:GetService("RunService")
local plrs = game:GetService("Players")
local uis = game:GetService("UserInputService")
local hs = game:GetService("HttpService")
local cas = game:GetService("ContextActionService")
local lit = game:GetService("Lighting")
local cg = game:GetService("CoreGui")
local lp = plrs.LocalPlayer
local cam = workspace.CurrentCamera
do
pcall(function()
if not getrawmetatable or not setreadonly or not newcclosure or not checkcaller then return end
local m = getrawmetatable(game)
local orig = m.__index
setreadonly(m, false)
m.__index = newcclosure(function(s, k)
if not checkcaller() then return orig(s, k) end
return orig(s, k)
end)
setreadonly(m, true)
end)
end
local function getchar()
return lp.Character
end
local function getroot()
local c = getchar()
return c and c:FindFirstChild("HumanoidRootPart")
end
local function gethum()
local c = getchar()
return c and c:FindFirstChildOfClass("Humanoid")
end
local function isalive()
local h = gethum()
return h and h.Health > 0
end
local function getwpos()
local r = getroot()
return r and r.Position or Vector3.new()
end
local function screenCenter()
return Vector2.new(cam.ViewportSize.X / 2, cam.ViewportSize.Y / 2)
end
local function worldToScreen(pos)
local s, vis = cam:WorldToViewportPoint(pos)
return Vector2.new(s.X, s.Y), vis, s.Z
end
local function distanceTo(pos)
return (getwpos() - pos).Magnitude
end
local function isTeammate(pl)
pcall(function() end)
if not lp.Team then return false end
return pl.Team == lp.Team
end
local function hasLOS(origin, target)
local dir = (target - origin).Unit * 999
local rp = RaycastParams.new()
rp.FilterDescendantsInstances = {getchar()}
rp.FilterType = Enum.RaycastFilterType.Exclude
local res = workspace:Raycast(origin, dir, rp)
if not res then return true end
local hit = res.Instance
local inChar = false
for _, pl in ipairs(plrs:GetPlayers()) do
if pl ~= lp and pl.Character and hit:IsDescendantOf(pl.Character) then
inChar = true
break
end
end
return inChar
end
local cfg = {
aim_on = true,
aim_fov = 120,
aim_smooth = 10,
aim_mode = 1,
aim_modes = {"Mouse", "Camera"},
aim_bone = "Head",
wallck = true,
npc_aim = false,
aim_key = Enum.KeyCode.B,
strafe_on = false,
strafe_dist = 10,
strafe_spd = 10,
strafe_key = Enum.KeyCode.L,
strafe_name = "",
esp_on = true,
esp_boxes = true,
esp_tracers = true,
esp_highlight = false,
esp_names = true,
esp_dist = 1000,
teamck = false,
npc_esp = false,
box_col = Color3.fromRGB(255, 255, 255),
tracer_col = Color3.fromRGB(255, 255, 255),
alist = true,
colormode = 1,
color_list = {"White", "Black", "Rainbow"},
fly_on = false,
fly_spd = 50,
fly_inertia = true,
fly_inertia_pwr = 0.1,
speed_on = false,
wspeed = 16,
noclip_on = false,
freecam_on = false,
freecam_spd = 1,
airwalk_on = false,
air_lvl = 0,
wallhop_on = false,
fps_on = false,
stretch_on = false,
stretch_val = 70,
fstretch_on = false,
fstretch_val = 65,
trail_on = false,
trail_col = Color3.fromRGB(255, 0, 0),
trail_life = 1,
chinahat_on = false,
chinahat_col = Color3.fromRGB(255, 255, 255),
neko_on = false,
}
local SAVE_KEY = "fhub_v2.json"
local function doSave()
pcall(function()
local t = {}
for k,v in pairs(cfg) do
local vt = type(v)
if vt == "boolean" or vt == "number" or vt == "string" then
t[k] = v
elseif vt == "EnumItem" then
t[k] = tostring(v)
end
end
writefile(SAVE_KEY, hs:JSONEncode(t))
end)
end
local function doLoad()
if not isfile then return end
if not isfile(SAVE_KEY) then return end
local ok, raw = pcall(readfile, SAVE_KEY)
if not ok then return end
local ok2, data = pcall(hs.JSONDecode, hs, raw)
if not ok2 or type(data) ~= "table" then return end
for k, v in pairs(data) do
if cfg[k] ~= nil then
if type(cfg[k]) == "boolean" then
cfg[k] = v == true
elseif type(cfg[k]) == "number" then
cfg[k] = tonumber(v) or cfg[k]
elseif type(cfg[k]) == "string" then
cfg[k] = tostring(v)
elseif type(cfg[k]) == "EnumItem" and type(v) == "string" then
pcall(function()
cfg[k] = Enum.KeyCode[v:match("%.(%w+)$") or v]
end)
end
end
end
end
doLoad()
local themes = {
{
bg = Color3.fromRGB(12, 12, 12),
side = Color3.fromRGB(18, 18, 18),
elem = Color3.fromRGB(22, 22, 22),
toff = Color3.fromRGB(40, 40, 40),
ton = Color3.fromRGB(255, 255, 255),
txt = Color3.fromRGB(235, 235, 235),
name = "Dark",
},
{
bg = Color3.fromRGB(242, 242, 242),
side = Color3.fromRGB(220, 220, 220),
elem = Color3.fromRGB(205, 205, 205),
toff = Color3.fromRGB(40, 40, 40),
ton = Color3.fromRGB(255, 255, 255),
txt = Color3.fromRGB(35, 35, 35),
name = "Light",
},
{
bg = Color3.fromRGB(10, 10, 12),
side = Color3.fromRGB(4, 4, 6),
elem = Color3.fromRGB(30, 30, 35),
toff = Color3.fromRGB(40, 40, 40),
ton = Color3.fromRGB(255, 255, 255),
txt = Color3.fromRGB(255, 255, 255),
name = "Glass",
},
}
local tidx = 1
local thm = themes[tidx]
local txt_pool = {}
local elem_pool = {}
local function reg_t(o) txt_pool[#txt_pool+1] = o end
local function reg_e(o) elem_pool[#elem_pool+1] = o end
local function push_theme(t)
thm = t
for _, o in ipairs(txt_pool) do if o.Parent then o.TextColor3 = t.txt end end
for _, o in ipairs(elem_pool) do if o.Parent then o.BackgroundColor3 = t.elem end end
end
local tw_info = TweenInfo.new(0.18, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local function tw_pos(f, p)
f:TweenPosition(p, Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.18, true)
end
local function mkround(p, r)
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, r or 7)
c.Parent = p
return c
end
local function mkpad(p, px, py)
local pad = Instance.new("UIPadding")
pad.PaddingLeft = UDim.new(0, px or 4)
pad.PaddingRight = UDim.new(0, px or 4)
pad.PaddingTop = UDim.new(0, py or 2)
pad.PaddingBottom = UDim.new(0, py or 2)
pad.Parent = p
end
local function mkToggle(par, init, on_fn, off_fn)
local wrap = Instance.new("TextButton")
wrap.Size = UDim2.new(0, 34, 0, 18)
wrap.Position = UDim2.new(1, -42, 0.5, -9)
wrap.Text = ""
wrap.AutoButtonColor = false
mkround(wrap, 9)
wrap.Parent = par
local knob = Instance.new("Frame")
knob.Size = UDim2.new(0, 13, 0, 13)
mkround(knob, 7)
knob.Parent = wrap
local ON_P = UDim2.new(1, -15, 0.5, -6)
local OFF_P = UDim2.new(0, 2, 0.5, -6)
local st = init
local function redraw()
if st then
wrap.BackgroundColor3 = thm.ton
knob.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
tw_pos(knob, ON_P)
else
wrap.BackgroundColor3 = thm.toff
knob.BackgroundColor3 = Color3.fromRGB(190, 190, 190)
tw_pos(knob, OFF_P)
end
end
redraw()
wrap.MouseButton1Click:Connect(function()
st = not st
redraw()
if st then if on_fn then on_fn() end
else if off_fn then off_fn() end end
doSave()
end)
return wrap, knob
end
local function mkRow(par, lbl_text, key, on_fn, off_fn)
local row = Instance.new("Frame")
row.Size = UDim2.new(1, -4, 0, 34)
row.BackgroundColor3 = Color3.fromRGB(17, 17, 17)
mkround(row, 6)
reg_e(row)
row.Parent = par
local lbl = Instance.new("TextLabel")
lbl.Text = " " .. lbl_text
lbl.Size = UDim2.new(0.72, 0, 1, 0)
lbl.TextColor3 = Color3.fromRGB(205, 205, 205)
lbl.BackgroundTransparency = 1
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Font = Enum.Font.GothamMedium
lbl.TextSize = 12
reg_t(lbl)
lbl.Parent = row
mkToggle(row, cfg[key],
function() cfg[key] = true; if on_fn then on_fn() end end,
function() cfg[key] = false; if off_fn then off_fn() end end
)
return row
end
local function mkSlide(par, lbl_text, key, lo, hi)
local v = tonumber(cfg[key]) or lo
local wrap = Instance.new("Frame")
wrap.Size = UDim2.new(1, -4, 0, 46)
wrap.BackgroundTransparency = 1
wrap.Parent = par
local lbl = Instance.new("TextLabel")
lbl.Text = string.format(" %s: %s", lbl_text, tostring(v))
lbl.Size = UDim2.new(1, 0, 0, 17)
lbl.TextColor3 = Color3.fromRGB(145, 145, 145)
lbl.BackgroundTransparency = 1
lbl.Font = Enum.Font.Gotham
lbl.TextSize = 11
lbl.TextXAlignment = Enum.TextXAlignment.Left
reg_t(lbl)
lbl.Parent = wrap
local track = Instance.new("Frame")
track.Size = UDim2.new(1, -12, 0, 4)
track.Position = UDim2.new(0, 6, 0, 32)
track.BackgroundColor3 = Color3.fromRGB(32, 32, 38)
mkround(track, 2)
track.Parent = wrap
local fill = Instance.new("Frame")
fill.Size = UDim2.new(math.clamp((v - lo) / (hi - lo), 0, 1), 0, 1, 0)
fill.BackgroundColor3 = Color3.fromRGB(220, 220, 220)
mkround(fill, 2)
fill.Parent = track
local hitbox = Instance.new("TextButton")
hitbox.Size = UDim2.new(1, 0, 4, 0)
hitbox.Position = UDim2.new(0, 0, -1.5, 0)
hitbox.BackgroundTransparency = 1
hitbox.Text = ""
hitbox.Parent = track
local dragging = false
local function setVal(inp)
local raw = (inp.Position.X - track.AbsolutePosition.X) / math.max(track.AbsoluteSize.X, 1)
local ratio = math.clamp(raw, 0, 1)
local nv = math.floor(lo + ratio * (hi - lo))
cfg[key] = nv
fill.Size = UDim2.new(ratio, 0, 1, 0)
lbl.Text = string.format(" %s: %s", lbl_text, tostring(nv))
doSave()
end
hitbox.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
setVal(i)
end
end)
hitbox.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
uis.InputChanged:Connect(function(i)
if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then setVal(i) end
end)
return wrap
end
local function mkCycle(par, prefix, opts, key)
local idx = tonumber(cfg[key]) or 1
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -4, 0, 30)
btn.Text = prefix .. (opts[idx] or "?")
btn.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
btn.TextColor3 = Color3.fromRGB(220, 220, 220)
btn.Font = Enum.Font.GothamMedium
btn.TextSize = 11
btn.AutoButtonColor = false
mkround(btn, 6)
reg_t(btn)
reg_e(btn)
btn.Parent = par
btn.MouseButton1Click:Connect(function()
idx = idx % #opts + 1
cfg[key] = idx
btn.Text = prefix .. opts[idx]
doSave()
end)
return btn
end
local function mkBind(par, prefix, key)
local kc = cfg[key]
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -4, 0, 30)
btn.Text = prefix .. (type(kc) == "EnumItem" and kc.Name or tostring(kc))
btn.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
btn.TextColor3 = Color3.fromRGB(220, 220, 220)
btn.Font = Enum.Font.GothamMedium
btn.TextSize = 11
btn.AutoButtonColor = false
mkround(btn, 6)
reg_t(btn)
reg_e(btn)
btn.Parent = par
local wait_key = false
btn.MouseButton1Click:Connect(function()
if wait_key then return end
wait_key = true
btn.Text = "[ press key ]"
end)
uis.InputBegan:Connect(function(i)
if not wait_key then return end
if i.UserInputType ~= Enum.UserInputType.Keyboard then return end
wait_key = false
cfg[key] = i.KeyCode
btn.Text = prefix .. i.KeyCode.Name
doSave()
end)
return btn
end
local scr = Instance.new("ScreenGui")
scr.Name = "fh_" .. tostring(math.random(10000, 99999))
scr.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
scr.ResetOnSpawn = false
scr.Parent = cg
local earL = Instance.new("ImageLabel")
earL.Name = "el"
earL.Size = UDim2.new(0, 118, 0, 118)
earL.AnchorPoint = Vector2.new(0.5, 0.5)
earL.BackgroundTransparency = 1
earL.Image = "rbxassetid://113169948724698"
earL.ZIndex = 99
earL.Visible = false
earL.Parent = scr
local earR = Instance.new("ImageLabel")
earR.Name = "er"
earR.Size = UDim2.new(0, 118, 0, 118)
earR.AnchorPoint = Vector2.new(0.5, 0.5)
earR.BackgroundTransparency = 1
earR.Image = "rbxassetid://94760042824701"
earR.ZIndex = 99
earR.Visible = false
earR.Parent = scr
local tail = Instance.new("ImageLabel")
tail.Name = "tl"
tail.Size = UDim2.new(0, 128, 0, 165)
tail.AnchorPoint = Vector2.new(0.5, 0.5)
tail.BackgroundTransparency = 1
tail.Image = "rbxassetid://114951759498089"
tail.ZIndex = 99
tail.Visible = false
tail.Parent = scr
local win = Instance.new("Frame")
win.Size = UDim2.new(0, 448, 0, 378)
win.Position = UDim2.new(0.5, -224, 0.5, -189)
win.BackgroundColor3 = Color3.fromRGB(9, 9, 9)
win.BorderSizePixel = 0
mkround(win, 8)
win.Parent = scr
local wstroke = Instance.new("UIStroke")
wstroke.Color = Color3.fromRGB(70, 70, 75)
wstroke.Thickness = 1.5
wstroke.Parent = win
local sidebar = Instance.new("Frame")
sidebar.Size = UDim2.new(0, 108, 1, 0)
sidebar.BackgroundColor3 = Color3.fromRGB(14, 14, 14)
sidebar.BorderSizePixel = 0
mkround(sidebar, 8)
sidebar.Parent = win
local title = Instance.new("TextLabel")
title.Text = "FOKI HUB"
title.Size = UDim2.new(0, 108, 0, 44)
title.Position = UDim2.new(0, 0, 0, 0)
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.GothamBold
title.TextSize = 15
title.BackgroundTransparency = 1
reg_t(title)
title.Parent = win
local topbar = Instance.new("Frame")
topbar.Size = UDim2.new(0, 64, 0, 30)
topbar.Position = UDim2.new(1, -70, 0, 8)
topbar.BackgroundTransparency = 1
topbar.Parent = win
local function mkCtrl(txt, x)
local b = Instance.new("TextButton")
b.Text = txt
b.Size = UDim2.new(0, 26, 0, 22)
b.Position = UDim2.new(0, x, 0, 3)
b.Font = Enum.Font.GothamBold
b.TextSize = 15
b.AutoButtonColor = false
mkround(b, 5)
reg_e(b)
reg_t(b)
b.Parent = topbar
return b
end
local minBtn = mkCtrl("-", 0)
local xBtn = mkCtrl("x", 34)
local isMin = false
minBtn.MouseButton1Click:Connect(function()
isMin = not isMin
if isMin then
win:TweenSize(UDim2.new(0, 448, 0, 44), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.25, true)
sidebar.Visible = false
else
win:TweenSize(UDim2.new(0, 448, 0, 378), Enum.EasingDirection.Out, Enum.EasingStyle.Quart, 0.25, true)
sidebar.Visible = true
end
end)
xBtn.MouseButton1Click:Connect(function()
win.Visible = false
end)
do
local dragging_win = false
local drag_offset = Vector2.new()
win.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
local mp = uis:GetMouseLocation()
if mp.Y - win.AbsolutePosition.Y < 46 then
dragging_win = true
drag_offset = mp - Vector2.new(win.AbsolutePosition.X, win.AbsolutePosition.Y)
end
end
end)
win.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging_win = false end
end)
uis.InputChanged:Connect(function(i)
if dragging_win and i.UserInputType == Enum.UserInputType.MouseMovement then
local mp = uis:GetMouseLocation()
local np = mp - drag_offset
win.Position = UDim2.new(0, np.X, 0, np.Y)
end
end)
end
local tabbox = Instance.new("Frame")
tabbox.Size = UDim2.new(1, 0, 1, -54)
tabbox.Position = UDim2.new(0, 0, 0, 48)
tabbox.BackgroundTransparency = 1
tabbox.Parent = sidebar
local tablist = Instance.new("UIListLayout")
tablist.HorizontalAlignment = Enum.HorizontalAlignment.Center
tablist.Padding = UDim.new(0, 4)
tablist.SortOrder = Enum.SortOrder.LayoutOrder
tablist.Parent = tabbox
local pghold = Instance.new("Frame")
pghold.Size = UDim2.new(1, -132, 1, -58)
pghold.Position = UDim2.new(0, 122, 0, 50)
pghold.BackgroundTransparency = 1
pghold.Parent = win
local function mkPage()
local p = Instance.new("ScrollingFrame")
p.Size = UDim2.new(1, 0, 1, 0)
p.BackgroundTransparency = 1
p.Visible = false
p.ScrollBarThickness = 0
p.AutomaticCanvasSize = Enum.AutomaticSize.Y
p.Parent = pghold
local ll = Instance.new("UIListLayout")
ll.Padding = UDim.new(0, 7)
ll.SortOrder = Enum.SortOrder.LayoutOrder
ll.Parent = p
return p
end
local pg_combat = mkPage()
local pg_visuals = mkPage()
local pg_move = mkPage()
local pg_misc = mkPage()
local all_pages = {pg_combat, pg_visuals, pg_move, pg_misc}
pg_combat.Visible = true
local function swapPage(tgt)
for _, p in ipairs(all_pages) do
p.Visible = (p == tgt)
end
end
local tab_names = {"Combat", "Visuals", "Move", "Misc"}
local tab_pages = {pg_combat, pg_visuals, pg_move, pg_misc}
for i = 1, #tab_names do
local tb = Instance.new("TextButton")
tb.LayoutOrder = i
tb.Size = UDim2.new(0.88, 0, 0, 30)
tb.Text = tab_names[i]
tb.Font = Enum.Font.GothamMedium
tb.TextSize = 11
tb.AutoButtonColor = false
mkround(tb, 5)
reg_e(tb)
reg_t(tb)
tb.Parent = tabbox
local page = tab_pages[i]
tb.MouseButton1Click:Connect(function()
swapPage(page)
end)
end
mkRow(pg_combat, "Aimbot", "aim_on")
mkSlide(pg_combat, "FOV", "aim_fov", 1, 576)
mkSlide(pg_combat, "Smoothness", "aim_smooth", 1, 99)
mkCycle(pg_combat, "Mode: ", {"Mouse","Camera"}, "aim_mode")
mkCycle(pg_combat, "Bone: ", {"Head","Torso","HumanoidRootPart"}, "aim_bone")
mkRow(pg_combat, "Wall Check", "wallck")
mkRow(pg_combat, "NPC Aim", "npc_aim")
mkBind(pg_combat, "Aim key: ", "aim_key")
mkRow(pg_combat, "Target Strafe", "strafe_on")
mkSlide(pg_combat, "Strafe Dist", "strafe_dist", 1, 50)
mkSlide(pg_combat, "Strafe Speed", "strafe_spd", 1, 50)
mkBind(pg_combat, "Strafe key: ", "strafe_key")
do
local box = Instance.new("TextBox")
box.Size = UDim2.new(1, -4, 0, 30)
box.PlaceholderText = "focus target name..."
box.Text = cfg.strafe_name or ""
box.Font = Enum.Font.Gotham
box.TextSize = 11
box.BackgroundColor3 = Color3.fromRGB(17, 17, 17)
box.TextColor3 = Color3.fromRGB(205, 205, 205)
box.PlaceholderColor3 = Color3.fromRGB(80, 80, 80)
box.ClearTextOnFocus = false
mkround(box, 6)
reg_e(box)
box.Parent = pg_combat
box.FocusLost:Connect(function()
cfg.strafe_name = box.Text
doSave()
end)
end
mkRow(pg_visuals, "ESP", "esp_on")
mkRow(pg_visuals, "Boxes", "esp_boxes")
mkRow(pg_visuals, "Tracers", "esp_tracers")
mkRow(pg_visuals, "Names", "esp_names")
mkRow(pg_visuals, "Highlight", "esp_highlight")
mkSlide(pg_visuals, "ESP Dist", "esp_dist", 100, 5000)
mkRow(pg_visuals, "Team Check", "teamck")
mkRow(pg_visuals, "NPC ESP", "npc_esp")
do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -4, 0, 30)
btn.Text = "Theme: " .. themes[tidx].name
btn.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
btn.TextColor3 = Color3.fromRGB(220, 220, 220)
btn.Font = Enum.Font.GothamMedium
btn.TextSize = 11
btn.AutoButtonColor = false
mkround(btn, 6)
reg_t(btn)
reg_e(btn)
btn.Parent = pg_visuals
btn.MouseButton1Click:Connect(function()
tidx = tidx % #themes + 1
push_theme(themes[tidx])
btn.Text = "Theme: " .. themes[tidx].name
end)
end
mkCycle(pg_visuals, "Color: ", cfg.color_list, "colormode")
mkRow(pg_visuals, "ArrayList", "alist")
mkRow(pg_visuals, "Player Trail", "trail_on")
mkRow(pg_visuals, "China Hat", "chinahat_on")
mkRow(pg_visuals, "FOV Ring", "stretch_on")
mkSlide(pg_visuals, "FOV Value", "stretch_val", 10, 120)
mkRow(pg_move, "Fly", "fly_on")
mkSlide(pg_move, "Fly Speed", "fly_spd", 1, 200)
mkRow(pg_move, "Fly Inertia", "fly_inertia")
mkRow(pg_move, "Speed", "speed_on",
function()
local h = gethum()
if h then h.WalkSpeed = cfg.wspeed end
end,
function()
local h = gethum()
if h then h.WalkSpeed = 16 end
end
)
mkSlide(pg_move, "Speed Val", "wspeed", 16, 500)
mkRow(pg_move, "No-Clip", "noclip_on")
mkRow(pg_move, "FreeCam", "freecam_on",
function() cas:UnbindAction("DisableInputs") end,
function() cas:UnbindAction("DisableInputs") end
)
mkSlide(pg_move, "FreeCam Speed", "freecam_spd", 1, 20)
mkRow(pg_move, "Air Walk", "airwalk_on")
mkRow(pg_move, "Wall Hop", "wallhop_on")
mkRow(pg_misc, "FPS Boost", "fps_on",
function()
lit.GlobalShadows = false
for _, p in ipairs(workspace:GetDescendants()) do
if p:IsA("BasePart") then
pcall(function() p.Material = Enum.Material.SmoothPlastic end)
end
end
end,
function()
lit.GlobalShadows = true
end
)
mkRow(pg_misc, "Frame Stretch", "fstretch_on")
mkSlide(pg_misc, "Stretch Val", "fstretch_val", 1, 99)
mkRow(pg_misc, "Neko Mode", "neko_on",
function()
earL.Visible = true
earR.Visible = true
tail.Visible = true
end,
function()
earL.Visible = false
earR.Visible = false
tail.Visible = false
end
)
do
local sv = Instance.new("TextButton")
sv.Size = UDim2.new(1, -4, 0, 30)
sv.Text = "Save Config"
sv.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
sv.TextColor3 = Color3.fromRGB(220, 220, 220)
sv.Font = Enum.Font.GothamMedium
sv.TextSize = 11
sv.AutoButtonColor = false
mkround(sv, 6)
reg_t(sv)
reg_e(sv)
sv.Parent = pg_misc
sv.MouseButton1Click:Connect(function()
doSave()
sv.Text = "Saved"
task.delay(1.2, function() sv.Text = "Save Config" end)
end)
local lv = Instance.new("TextButton")
lv.Size = UDim2.new(1, -4, 0, 30)
lv.Text = "Load Config"
lv.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
lv.TextColor3 = Color3.fromRGB(220, 220, 220)
lv.Font = Enum.Font.GothamMedium
lv.TextSize = 11
lv.AutoButtonColor = false
mkround(lv, 6)
reg_t(lv)
reg_e(lv)
lv.Parent = pg_misc
lv.MouseButton1Click:Connect(function()
doLoad()
lv.Text = "Loaded"
task.delay(1.2, function() lv.Text = "Load Config" end)
end)
end
local alist_gui = Instance.new("ScreenGui")
alist_gui.Name = "fh_al_" .. tostring(math.random(1000, 9999))
alist_gui.ResetOnSpawn = false
alist_gui.Parent = cg
local al_frame = Instance.new("Frame")
al_frame.Size = UDim2.new(0, 195, 1, 0)
al_frame.Position = UDim2.new(1, -205, 0, 10)
al_frame.BackgroundTransparency = 1
al_frame.Parent = alist_gui
local al_layout = Instance.new("UIListLayout")
al_layout.HorizontalAlignment = Enum.HorizontalAlignment.Right
al_layout.Padding = UDim.new(0, 2)
al_layout.Parent = al_frame
local al_features = {
{"aim_on", "Aimbot"},
{"strafe_on", "Strafe"},
{"esp_on", "ESP"},
{"esp_boxes", "Boxes"},
{"esp_tracers", "Tracers"},
{"esp_names", "Names"},
{"esp_highlight", "Highlight"},
{"fly_on", "Fly"},
{"speed_on", "Speed"},
{"noclip_on", "NoClip"},
{"freecam_on", "FreeCam"},
{"airwalk_on", "AirWalk"},
{"wallhop_on", "WallHop"},
{"fps_on", "FPS Boost"},
{"fstretch_on", "FStretch"},
{"stretch_on", "FOV Ring"},
{"trail_on", "Trail"},
{"chinahat_on", "ChinaHat"},
{"neko_on", "Neko"},
{"npc_aim", "NPC Aim"},
{"npc_esp", "NPC ESP"},
}
local al_lbls = {}
local al_last = 0
rs.Heartbeat:Connect(function()
al_frame.Visible = cfg.alist
if not cfg.alist then return end
if tick() - al_last < 0.09 then return end
al_last = tick()
for _, l in ipairs(al_lbls) do l:Destroy() end
al_lbls = {}
for _, e in ipairs(al_features) do
local k, disp = e[1], e[2]
if cfg[k] == true then
local lbl = Instance.new("TextLabel")
lbl.Text = disp
lbl.Size = UDim2.new(0, 195, 0, 17)
lbl.TextColor3 = Color3.fromRGB(235, 235, 235)
lbl.BackgroundColor3 = Color3.fromRGB(13, 13, 13)
lbl.BackgroundTransparency = 0.35
lbl.Font = Enum.Font.GothamMedium
lbl.TextSize = 11
lbl.TextXAlignment = Enum.TextXAlignment.Right
lbl.Parent = al_frame
al_lbls[#al_lbls + 1] = lbl
end
end
end)
rs.Stepped:Connect(function()
if not cfg.noclip_on then return end
local c = getchar()
if not c then return end
for _, p in ipairs(c:GetDescendants()) do
if p:IsA("BasePart") then
p.CanCollide = false
end
end
end)
rs:BindToRenderStep("fh_wh", Enum.RenderPriority.Character.Value + 1, function()
if not cfg.wallhop_on then return end
local h = gethum()
if h and h:GetState() == Enum.HumanoidStateType.Freefall then
h:ChangeState(Enum.HumanoidStateType.Jumping)
end
end)
rs.Heartbeat:Connect(function()
if not cfg.speed_on then return end
local h = gethum()
if h then
h.WalkSpeed = cfg.wspeed
end
end)
local esp_objects = {}
local function destroyESP(pl)
if esp_objects[pl] then
for _, o in pairs(esp_objects[pl]) do
pcall(function() o:Destroy() end)
end
esp_objects[pl] = nil
end
end
local function buildESP(pl)
destroyESP(pl)
esp_objects[pl] = {}
local box = Instance.new("SelectionBox")
box.Color3 = cfg.box_col
box.LineThickness = 0.03
box.SurfaceTransparency = 1
box.SurfaceColor3 = Color3.new(0,0,0)
box.Parent = cg
esp_objects[pl].box = box
if cfg.esp_highlight then
local hl = Instance.new("Highlight")
hl.FillTransparency = 0.7
hl.OutlineTransparency = 0
hl.OutlineColor = cfg.box_col
hl.FillColor = cfg.box_col
hl.Parent = cg
esp_objects[pl].highlight = hl
end
if cfg.esp_names then
local bb = Instance.new("BillboardGui")
bb.AlwaysOnTop = true
bb.Size = UDim2.new(0, 100, 0, 24)
bb.StudsOffset = Vector3.new(0, 2.5, 0)
bb.Parent = cg
local nl = Instance.new("TextLabel")
nl.Size = UDim2.new(1, 0, 1, 0)
nl.BackgroundTransparency = 1
nl.Font = Enum.Font.GothamBold
nl.TextSize = 13
nl.TextColor3 = cfg.box_col
nl.Text = pl.Name
nl.Parent = bb
esp_objects[pl].bb = bb
esp_objects[pl].nml = nl
end
if cfg.esp_tracers then
local line = Instance.new("SelectionBox")
line.Color3 = cfg.tracer_col
line.LineThickness = 0.02
line.SurfaceTransparency = 1
line.Parent = cg
esp_objects[pl].tracer = line
end
end
local function updateESP()
for _, pl in ipairs(plrs:GetPlayers()) do
if pl == lp then
destroyESP(pl)
elseif not cfg.esp_on then
destroyESP(pl)
elseif cfg.teamck and isTeammate(pl) then
destroyESP(pl)
else
local c = pl.Character
local root = c and c:FindFirstChild("HumanoidRootPart")
if not root then
destroyESP(pl)
else
local dist = distanceTo(root.Position)
if dist > cfg.esp_dist then
destroyESP(pl)
else
if not esp_objects[pl] then buildESP(pl) end
local obj = esp_objects[pl]
if obj.box then
obj.box.Adornee = cfg.esp_boxes and c or nil
end
if obj.highlight then
obj.highlight.Adornee = cfg.esp_highlight and c or nil
end
if obj.bb then
obj.bb.Adornee = root
if obj.nml then obj.nml.Text = pl.Name end
end
end
end
end
end
end
plrs.PlayerRemoving:Connect(function(pl)
destroyESP(pl)
end)
rs.Heartbeat:Connect(function()
updateESP()
end)
local aim_active = false
uis.InputBegan:Connect(function(i, g)
if g then return end
if i.KeyCode == cfg.aim_key then aim_active = true end
end)
uis.InputEnded:Connect(function(i)
if i.KeyCode == cfg.aim_key then aim_active = false end
end)
local function getTarget()
if not cfg.aim_on or not aim_active then return nil end
if not isalive() then return nil end
local best_pl = nil
local best_dist = cfg.aim_fov
local sc = screenCenter()
for _, pl in ipairs(plrs:GetPlayers()) do
if pl ~= lp then
if cfg.teamck and isTeammate(pl) then continue end
local c = pl.Character
if not c then continue end
local part = c:FindFirstChild(cfg.aim_bone) or c:FindFirstChild("Head")
if not part then continue end
local hm = c:FindFirstChildOfClass("Humanoid")
if not hm or hm.Health <= 0 then continue end
local spos, vis = worldToScreen(part.Position)
if not vis then continue end
local rootp = c:FindFirstChild("HumanoidRootPart")
if cfg.wallck and rootp and not hasLOS(getwpos(), rootp.Position) then continue end
local d = (spos - sc).Magnitude
if d < best_dist then
best_dist = d
best_pl = part
end
end
end
return best_pl
end
rs.Heartbeat:Connect(function()
local t = getTarget()
if not t then return end
local spos = worldToScreen(t.Position)
local sc = screenCenter()
if cfg.aim_mode == 1 then
local cur = uis:GetMouseLocation()
local dir = (spos - cur)
local sm = math.clamp(cfg.aim_smooth / 100, 0.01, 1)
mousemoverel(dir.X * sm, dir.Y * sm)
elseif cfg.aim_mode == 2 then
local sm = math.clamp(cfg.aim_smooth / 100, 0.01, 1)
local cr = cam.CFrame
local tr = CFrame.new(cam.CFrame.Position, t.Position)
cam.CFrame = cr:Lerp(tr, sm)
end
end)
local strafe_angle = 0
rs.Heartbeat:Connect(function(dt)
if not cfg.strafe_on then return end
if not isalive() then return end
local tgt_pl = plrs:FindFirstChild(cfg.strafe_name)
if not tgt_pl then return end
local tc = tgt_pl.Character
local tr = tc and tc:FindFirstChild("HumanoidRootPart")
if not tr then return end
local myroot = getroot()
if not myroot then return end
strafe_angle = strafe_angle + cfg.strafe_spd * dt
local dist = cfg.strafe_dist
local tx = tr.Position.X + math.cos(strafe_angle) * dist
local tz = tr.Position.Z + math.sin(strafe_angle) * dist
local ty = tr.Position.Y
local h = gethum()
if h then
h:MoveTo(Vector3.new(tx, ty, tz))
end
end)
local fly_vel = Vector3.new()
local fly_active = false
uis.InputBegan:Connect(function(i, g)
if g then return end
if i.KeyCode == Enum.KeyCode.F then
if not cfg.fly_on then return end
fly_active = not fly_active
local c = getchar()
local h = gethum()
local r = getroot()
if not c or not h or not r then fly_active = false return end
if fly_active then
h.PlatformStand = true
else
h.PlatformStand = false
fly_vel = Vector3.new()
end
end
end)
rs.Heartbeat:Connect(function(dt)
if not cfg.fly_on then
if fly_active then
fly_active = false
local h = gethum()
if h then h.PlatformStand = false end
end
return
end
if not fly_active then return end
local r = getroot()
if not r then return end
local mv = Vector3.new()
if uis:IsKeyDown(Enum.KeyCode.W) then mv = mv + cam.CFrame.LookVector end
if uis:IsKeyDown(Enum.KeyCode.S) then mv = mv - cam.CFrame.LookVector end
if uis:IsKeyDown(Enum.KeyCode.A) then mv = mv - cam.CFrame.RightVector end
if uis:IsKeyDown(Enum.KeyCode.D) then mv = mv + cam.CFrame.RightVector end
if uis:IsKeyDown(Enum.KeyCode.Space) then mv = mv + Vector3.new(0,1,0) end
if uis:IsKeyDown(Enum.KeyCode.LeftShift) then mv = mv - Vector3.new(0,1,0) end
if mv.Magnitude > 0 then
mv = mv.Unit * cfg.fly_spd
end
if cfg.fly_inertia then
fly_vel = fly_vel:Lerp(mv, cfg.fly_inertia_pwr)
else
fly_vel = mv
end
r.Velocity = fly_vel
r.CFrame = CFrame.new(r.Position + fly_vel * dt, r.Position + fly_vel * dt + cam.CFrame.LookVector)
end)
local noclip_conn
rs.Stepped:Connect(function()
if not cfg.noclip_on then return end
local c = getchar()
if not c then return end
for _, p in ipairs(c:GetDescendants()) do
if p:IsA("BasePart") then p.CanCollide = false end
end
end)
push_theme(thm)



you this * jsut crack a scirpt in 3 second when it was posted
W
90% of the functions do not work , only the menu works xD
@Foki fr