-- KFC HUB — FULL SCRIPT (LocalScript) -- Paste into StarterPlayerScripts. This version fixes aim smoothness mapping: -- Slider 0..100 where 0 = fully snappy/instant, higher = slower smoothing. -- Mouse-based aim first (mousemoverel), camera fallback if not available. -- ====== SERVICES & HELPERS ====== local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer or Players.PlayerAdded:Wait() local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local function safeHttpGet(url) local ok, res = pcall(function() return game:HttpGet(url, true) end) if ok then return res end warn("HttpGet failed:", url, res) return nil end -- ====== LOAD RAYFIELD ====== local rfRaw = safeHttpGet("https://sirius.menu/rayfield") if not rfRaw then warn("Rayfield fetch failed. UI won't load.") return end local Rayfield = loadstring(rfRaw)() -- ====== THEME ====== local KFCTheme = { TextColor = Color3.fromRGB(255,255,255), Background = Color3.fromRGB(196,0,0), Topbar = Color3.fromRGB(38,28,2), Shadow = Color3.fromRGB(20,20,20), NotificationBackground = Color3.fromRGB(38,28,2), NotificationActionsBackground = Color3.fromRGB(245,212,183), TabBackground = Color3.fromRGB(38,28,2), TabStroke = Color3.fromRGB(196,0,0), TabBackgroundSelected = Color3.fromRGB(245,212,183), TabTextColor = Color3.fromRGB(255,255,255), SelectedTabTextColor = Color3.fromRGB(38,28,2), ElementBackground = Color3.fromRGB(60,30,10), ElementBackgroundHover = Color3.fromRGB(245,212,183), SecondaryElementBackground = Color3.fromRGB(38,28,2), ElementStroke = Color3.fromRGB(196,0,0), SecondaryElementStroke = Color3.fromRGB(245,212,183), SliderBackground = Color3.fromRGB(245,212,183), SliderProgress = Color3.fromRGB(255,255,255), SliderStroke = Color3.fromRGB(196,0,0), ToggleBackground = Color3.fromRGB(60,30,10), ToggleEnabled = Color3.fromRGB(255,255,255), ToggleDisabled = Color3.fromRGB(100,50,20), ToggleEnabledStroke = Color3.fromRGB(255,255,255), ToggleDisabledStroke = Color3.fromRGB(100,50,20), ToggleEnabledOuterStroke = Color3.fromRGB(245,212,183), ToggleDisabledOuterStroke = Color3.fromRGB(60,30,10), DropdownSelected = Color3.fromRGB(245,212,183), DropdownUnselected = Color3.fromRGB(60,30,10), InputBackground = Color3.fromRGB(100,50,20), InputStroke = Color3.fromRGB(60,30,10), PlaceholderColor = Color3.fromRGB(255,255,255) } -- ====== CREATE WINDOW & TABS ====== local Window = Rayfield:CreateWindow({ Name = "KFC Hub", LoadingTitle = "Eat Fried Chicken", LoadingSubtitle = "by DudesCreations", ShowText = "KFC", Theme = KFCTheme, ToggleUIKeybind = "K", ConfigurationSaving = { Enabled = true, FolderName = nil, FileName = "KFC_Hub_Config" }, Discord = { Enabled = false }, KeySystem = false }) local MainTab = Window:CreateTab("Main") local CombatTab = Window:CreateTab("Combat") local BloxFruitsTab = Window:CreateTab("Blox Fruits") local GameHubsTab = Window:CreateTab("Game Hubs") -- ====== SENSE (ESP lib) ====== local senseRaw = safeHttpGet("https://sirius.menu/sense") local Sense = nil if senseRaw then Sense = loadstring(senseRaw)() else warn("Sense (ESP) fetch failed — ESP toggle will notify and be disabled.") end -- ====== ESP CONFIG ====== local ESP_Enabled = false local function ApplyESPConfig(enabled) if not Sense then return end Sense.whitelist = {} Sense.sharedSettings = { textSize = 13, textFont = 2, limitDistance = true, maxDistance = 700, useTeamColor = false } Sense.teamSettings.enemy = { enabled = enabled, box = true, boxColor = { Color3.fromRGB(255,255,255), 1 }, boxOutline = true, boxFill = true, boxFillColor = { Color3.fromRGB(245,212,183), 0.06 }, healthBar = true, healthBarOutline = true, healthyColor = Color3.fromRGB(120,220,120), dyingColor = Color3.fromRGB(240,120,120), distance = true, distanceColor = { Color3.fromRGB(200,200,200), 1 }, name = true, nameColor = { Color3.fromRGB(255,255,255), 1 }, nameOutline = false, tracer = true, tracerColor = { Color3.fromRGB(196,0,0), 1 }, offScreenArrow = false, chams = false } Sense.teamSettings.friendly = { enabled = false } end local function EnableESP() if ESP_Enabled or not Sense then return end ESP_Enabled = true ApplyESPConfig(true) pcall(function() Sense.Load() end) end local function DisableESP() if not ESP_Enabled or not Sense then return end ESP_Enabled = false ApplyESPConfig(false) pcall(function() Sense.Unload() end) end CombatTab:CreateToggle({ Name = "Modern ESP", CurrentValue = false, Callback = function(val) if not Sense then Rayfield:Notify({ Title = "ESP", Content = "Unavailable (fetch failed)", Duration = 3 }) return end if val then EnableESP() else DisableESP() end end }) -- ====== AIM SYSTEM (mouse-based primary) ====== local targetPart = "Head" local aimFeatureEnabled = false local markerEnabled = false local aimBind = { kind = "KeyCode", val = Enum.KeyCode.Q } local holdToAim = true local aimHeld = false local aimToggleActive = false local smoothness = 18 -- user-facing slider 0..100 (0 = snappy) local drawingAvailable = pcall(function() return Drawing end) local mousemoverelAvailable = (typeof(mousemoverel) == "function") local mouse = LocalPlayer:GetMouse() -- UI controls CombatTab:CreateDropdown({ Name = "Target Body Part", Options = {"Head", "HumanoidRootPart", "UpperTorso"}, CurrentOption = targetPart, Callback = function(opt) targetPart = opt end }) CombatTab:CreateToggle({ Name = "Enable Aim (hold bind / toggle)", CurrentValue = false, Callback = function(v) aimFeatureEnabled = v Rayfield:Notify({Title="Aim", Content=(v and "Enabled (use bind to aim)" or "Disabled"), Duration=2}) end }) CombatTab:CreateToggle({ Name = "Hold to Aim (ON = hold, OFF = toggle)", CurrentValue = holdToAim, Callback = function(v) holdToAim = v end }) local keyOptions = {"Q","E","R","F","T","Y","Z","X","C","V","MouseButton1","MouseButton2"} CombatTab:CreateDropdown({ Name = "Aim Keybind", Options = keyOptions, CurrentOption = "Q", Callback = function(opt) if opt == "MouseButton1" then aimBind.kind = "UserInputType"; aimBind.val = Enum.UserInputType.MouseButton1 elseif opt == "MouseButton2" then aimBind.kind = "UserInputType"; aimBind.val = Enum.UserInputType.MouseButton2 else aimBind.kind = "KeyCode"; aimBind.val = Enum.KeyCode[opt] end end }) -- Smoothness slider: 0..100 where 0 = instant/snappy CombatTab:CreateSlider({ Name = "Aim Smoothness (0 = snappy)", Range = {0,100}, Increment = 1, CurrentValue = smoothness, Callback = function(v) smoothness = v end }) CombatTab:CreateToggle({ Name = "Show Marker + Line", CurrentValue = markerEnabled, Callback = function(v) markerEnabled = v end }) -- Input handling UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if aimBind.kind == "KeyCode" then if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == aimBind.val then if holdToAim then aimHeld = true else aimToggleActive = not aimToggleActive end end else if input.UserInputType == aimBind.val then if holdToAim then aimHeld = true else aimToggleActive = not aimToggleActive end end end end) UserInputService.InputEnded:Connect(function(input) if aimBind.kind == "KeyCode" then if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == aimBind.val then if holdToAim then aimHeld = false end end else if input.UserInputType == aimBind.val then if holdToAim then aimHeld = false end end end end) local function isAimingNow() if not aimFeatureEnabled then return false end if holdToAim then return aimHeld end return aimToggleActive end -- Drawing helpers local function safeNewCircle(pos, radius, color, thickness) if not drawingAvailable then return nil end local ok, obj = pcall(function() local c = Drawing.new("Circle") c.Position = pos c.Radius = radius c.Color = color c.Thickness = thickness or 2 c.Visible = true return c end) if ok then return obj end return nil end local function safeNewLine(a,b,color,th) if not drawingAvailable then return nil end local ok, obj = pcall(function() local l = Drawing.new("Line") l.From = a; l.To = b; l.Color = color; l.Thickness = th or 1.5; l.Visible = true return l end) if ok then return obj end return nil end -- ====== RENDER LOOP ====== RunService.RenderStepped:Connect(function() local cam = workspace.CurrentCamera if not cam then return end -- find closest on-screen part to mouse local closestPart = nil local shortest = math.huge local mousePos = UserInputService:GetMouseLocation() for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild(targetPart) then local part = plr.Character[targetPart] local sp, onScreen = cam:WorldToViewportPoint(part.Position) if onScreen then local d = (Vector2.new(sp.X, sp.Y) - mousePos).Magnitude if d < shortest then shortest = d; closestPart = part end end end end if closestPart then local sp, onScreen = cam:WorldToViewportPoint(closestPart.Position) if onScreen and markerEnabled then local circle = safeNewCircle(Vector2.new(sp.X, sp.Y), 9, Color3.fromRGB(255,255,255), 2) if circle then task.delay(0.04, function() pcall(function() circle:Remove() end) end) end local center = Vector2.new(cam.ViewportSize.X/2, cam.ViewportSize.Y/2) local line = safeNewLine(center, Vector2.new(sp.X, sp.Y), Color3.fromRGB(196,0,0), 2) if line then task.delay(0.04, function() pcall(function() line:Remove() end) end) end end if isAimingNow() then local currentMouse = UserInputService:GetMouseLocation() local delta = Vector2.new(sp.X, sp.Y) - currentMouse -- If mouse movement injection is allowed, prefer it (works with custom FPS) if mousemoverelAvailable then if smoothness == 0 then -- instant: move full delta pcall(function() mousemoverel(delta.X, delta.Y) end) else -- sensitivity mapping: smoothness 0 -> sensitivity 1, 100 -> sensitivity ~0.02 local sensitivity = math.clamp(1 - (smoothness / 100), 0.02, 1) local move = delta * sensitivity * 0.6 -- multiplier tuned for feel pcall(function() mousemoverel(move.X, move.Y) end) end else -- fallback to camera lerp/hard aim local ok = true if smoothness == 0 then ok, _ = pcall(function() local camPos = cam.CFrame.Position cam.CFrame = CFrame.new(camPos, closestPart.Position) end) else local alpha = math.clamp(1 - (smoothness / 100), 0.01, 0.99) ok, _ = pcall(function() local camPos = cam.CFrame.Position cam.CFrame = cam.CFrame:Lerp(CFrame.new(camPos, closestPart.Position), alpha) end) end -- if camera setting fails, marker still helps user aim manually end end end end) -- ====== MAIN TAB: organized, working buttons (pcall wrapped) ====== MainTab:CreateSection("Admin") MainTab:CreateButton({ Name = "Infinite Yield (IY)", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source", true))() end) Rayfield:Notify({Title="Loaded", Content="Infinite Yield", Duration=2}) end}) MainTab:CreateButton({ Name = "CMD-X Admin", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/CMD-X/CMD-X/master/Source", true))() end) Rayfield:Notify({Title="Loaded", Content="CMD-X", Duration=2}) end}) MainTab:CreateButton({ Name = "Fates Admin", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/fatesc/fates-admin/main/main.lua", true))() end) Rayfield:Notify({Title="Loaded", Content="Fates Admin", Duration=2}) end}) MainTab:CreateButton({ Name = "Homebrew Admin", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/Syntaxx64/HomebrewAdmin/master/Main", true))() end) Rayfield:Notify({Title="Loaded", Content="Homebrew Admin", Duration=2}) end}) MainTab:CreateButton({ Name = "Nameless Admin", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/BlackOut51/NamelessAdmin/master/main.lua", true))() end) Rayfield:Notify({Title="Loaded", Content="Nameless Admin", Duration=2}) end}) MainTab:CreateSection("Utilities") MainTab:CreateButton({ Name = "FPS Boost", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/FPS-Boost-Script", true))() end) Rayfield:Notify({Title="Loaded", Content="FPS Boost", Duration=2}) end}) MainTab:CreateButton({ Name = "Fly Script", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/Fly-V7-Script", true))() end) Rayfield:Notify({Title="Loaded", Content="Fly", Duration=2}) end}) MainTab:CreateButton({ Name = "WalkSpeed / JumpPower UI", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/WalkSpeed-JumpPower-GUI", true))() end) Rayfield:Notify({Title="Loaded", Content="WalkSpeed UI", Duration=2}) end}) MainTab:CreateButton({ Name = "Noclip Toggle", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/Noclip-Toggle-Script", true))() end) Rayfield:Notify({Title="Loaded", Content="Noclip", Duration=2}) end}) MainTab:CreateButton({ Name = "Auto Chest Collector", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/Auto-Chest-Collector", true))() end) Rayfield:Notify({Title="Loaded", Content="Chest Collector", Duration=2}) end}) MainTab:CreateButton({ Name = "Auto Fish GUI", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/Auto-Fish-GUI", true))() end) Rayfield:Notify({Title="Loaded", Content="Auto Fish", Duration=2}) end}) MainTab:CreateSection("Hubs & Fun") MainTab:CreateButton({ Name = "InfiniteFun IY", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/Xane123/InfiniteFun_IY/master/source", true))() end) Rayfield:Notify({Title="Loaded", Content="InfiniteFun IY", Duration=2}) end}) MainTab:CreateButton({ Name = "Fun Tenna Dance", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Fe-Tenna-Dance-58322", true))() end) Rayfield:Notify({Title="Loaded", Content="Tenna Dance", Duration=2}) end}) MainTab:CreateButton({ Name = "Goner FE Hat", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-FE-Goner-Hat-Script-UNIVERSAL-DA-HOOD-SUPPORT-15569", true))() end) Rayfield:Notify({Title="Loaded", Content="Goner FE", Duration=2}) end}) MainTab:CreateButton({ Name = "FE Animations (R6)", Callback = function() pcall(function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-FE-R6-Animations-80487", true))() end) Rayfield:Notify({Title="Loaded", Content="R6 Animations", Duration=2}) end}) MainTab:CreateButton({ Name = "DomainX Utils", Callback = function() pcall(function() loadstring(game:HttpGet("https://shlex.dev/release/domainx/latest.lua", true))() end) Rayfield:Notify({Title="Loaded", Content="DomainX", Duration=2}) end}) MainTab:CreateButton({ Name = "Hydra Hub", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/HydraHubTeam/Hydra/main/source", true))() end) Rayfield:Notify({Title="Loaded", Content="Hydra Hub", Duration=2}) end}) MainTab:CreateButton({ Name = "Owl Hub", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/OwlHubTeam/Owl/main/init.lua", true))() end) Rayfield:Notify({Title="Loaded", Content="Owl Hub", Duration=2}) end}) -- ====== BLOX FRUITS TAB ====== BloxFruitsTab:CreateSection("Blox Fruits Hubs") BloxFruitsTab:CreateButton({ Name = "Redz Hub", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/realredz/BloxFruits/master/Source.lua", true))() end) Rayfield:Notify({Title="Loaded", Content="Redz Hub", Duration=2}) end}) BloxFruitsTab:CreateButton({ Name = "Speed Hub X", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/AhmadV99/Speed-Hub-X/main/Speed%20Hub%20X.lua", true))() end) Rayfield:Notify({Title="Loaded", Content="Speed Hub X", Duration=2}) end}) BloxFruitsTab:CreateButton({ Name = "Aurora Hub", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/Jadelly261/BloxFruits/main/Aurora", true))() end) Rayfield:Notify({Title="Loaded", Content="Aurora Hub", Duration=2}) end}) BloxFruitsTab:CreateButton({ Name = "Raito Hub", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/Efe0626/RaitoHub/main/Script", true))() end) Rayfield:Notify({Title="Loaded", Content="Raito Hub", Duration=2}) end}) BloxFruitsTab:CreateButton({ Name = "Banana Hub", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/Nghia11n/Banana-Hub/main/bananahub.lua", true))() end) Rayfield:Notify({Title="Loaded", Content="Banana Hub", Duration=2}) end}) -- ====== GAME HUBS TAB ====== GameHubsTab:CreateSection("Universal Game Hubs") GameHubsTab:CreateButton({ Name = "Hydra Universal", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/HydraHubTeam/Hydra/main/source", true))() end) Rayfield:Notify({Title="Loaded", Content="Hydra Universal", Duration=2}) end}) GameHubsTab:CreateButton({ Name = "DomainX", Callback = function() pcall(function() loadstring(game:HttpGet("https://shlex.dev/release/domainx/latest.lua", true))() end) Rayfield:Notify({Title="Loaded", Content="DomainX", Duration=2}) end}) GameHubsTab:CreateButton({ Name = "Project Krampus", Callback = function() pcall(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/ProjectKrampusTeam/krampus/main/source", true))() end) Rayfield:Notify({Title="Loaded", Content="Krampus Tools", Duration=2}) end}) -- ====== FINISH ====== Rayfield:Notify({ Title = "KFC Hub Loaded", Content = "ESP, Aim, and Scripts ready 🍗", Duration = 4 }) print("KFC Hub initialized. Drawing available:", drawingAvailable, "mousemoverel:", mousemoverelAvailable)