-- BANANA EAT SCIRPT FREE SOURCE local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") -- CONFIGURATION local COLORS = { Banana = Color3.fromRGB(255, 220, 0), Runners = Color3.fromRGB(0, 255, 100), HollowKey = Color3.fromRGB(255, 40, 40), EscapeDoor = Color3.fromRGB(0, 170, 255) } local categories = { "Banana", "Runners", "HollowKey", "EscapeDoor" } local espEnabled = { Banana = true, Runners = true, HollowKey = true, EscapeDoor = true } local espObjects = {} local selectedCategory = "Banana" local enabled = true local running = true -- GUI local gui = Instance.new("ScreenGui") gui.Name = "BananaEatESP" gui.ResetOnSpawn = false gui.Parent = PlayerGui local function corner(object, radius) local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, radius) c.Parent = object end local function makeButton(parent, text, position, size, color) local button = Instance.new("TextButton") button.Size = size button.Position = position button.BackgroundColor3 = color or Color3.fromRGB(45, 45, 55) button.Text = text button.TextColor3 = Color3.new(1, 1, 1) button.Font = Enum.Font.GothamBold button.TextSize = 12 button.Parent = parent corner(button, 6) return button end -- MAIN WINDOW local main = Instance.new("Frame") main.Size = UDim2.fromOffset(300, 510) main.Position = UDim2.new(0, 20, 0.2, 0) main.BackgroundColor3 = Color3.fromRGB(22, 22, 28) main.BorderSizePixel = 0 main.Active = true main.Parent = gui corner(main, 10) -- HEADER local header = Instance.new("Frame") header.Size = UDim2.new(1, 0, 0, 40) header.BackgroundColor3 = Color3.fromRGB(32, 32, 40) header.BorderSizePixel = 0 header.Active = true header.Parent = main corner(header, 10) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -80, 1, 0) title.Position = UDim2.fromOffset(10, 0) title.BackgroundTransparency = 1 title.Text = "BANANA EAT ESP" title.TextColor3 = COLORS.Banana title.Font = Enum.Font.GothamBold title.TextSize = 16 title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = header local minimize = makeButton( header, "—", UDim2.new(1, -65, 0, 5), UDim2.fromOffset(27, 27), Color3.fromRGB(80, 80, 95) ) local exitButton = makeButton( header, "X", UDim2.new(1, -33, 0, 5), UDim2.fromOffset(27, 27), Color3.fromRGB(170, 45, 45) ) -- DRAG MAIN WINDOW local dragging = false local dragStart local startPosition header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPosition = main.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) -- FLOATING BUTTON local floating = makeButton( gui, "ESP", UDim2.fromOffset(20, 180), UDim2.fromOffset(55, 55), Color3.fromRGB(35, 130, 70) ) floating.TextSize = 14 floating.Visible = false floating.ZIndex = 10 local function hideMenu() main.Visible = false floating.Visible = true end local function showMenu() main.Visible = true floating.Visible = false end minimize.MouseButton1Click:Connect(hideMenu) -- DRAG FLOATING BUTTON local floatDragging = false local floatStart local floatPosition local floatMoved = false floating.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then floatDragging = true floatMoved = false floatStart = input.Position floatPosition = floating.Position end end) UserInputService.InputChanged:Connect(function(input) if floatDragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) then local delta = input.Position - floatStart if delta.Magnitude > 5 then floatMoved = true end floating.Position = UDim2.new( floatPosition.X.Scale, floatPosition.X.Offset + delta.X, floatPosition.Y.Scale, floatPosition.Y.Offset + delta.Y ) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then floatDragging = false end end) floating.MouseButton1Click:Connect(function() if not floatMoved then showMenu() end end) -- ESP MASTER SWITCH local toggle = makeButton( main, "DISABLE ESP", UDim2.fromOffset(10, 48), UDim2.new(1, -20, 0, 32), Color3.fromRGB(35, 130, 70) ) -- ESP CLEANUP local function removeESP(object) local data = espObjects[object] if not data then return end if data.Highlight then data.Highlight:Destroy() end if data.Billboard then data.Billboard:Destroy() end espObjects[object] = nil end local function clearESP() for object in pairs(espObjects) do removeESP(object) end end toggle.MouseButton1Click:Connect(function() enabled = not enabled if enabled then toggle.Text = "DISABLE ESP" toggle.BackgroundColor3 = Color3.fromRGB(35, 130, 70) else toggle.Text = "ENABLE ESP" toggle.BackgroundColor3 = Color3.fromRGB(140, 45, 45) clearESP() end end) -- INDIVIDUAL ESP SWITCHES local categoryButtons = {} local settingsTitle = Instance.new("TextLabel") settingsTitle.Size = UDim2.new(1, -20, 0, 22) settingsTitle.Position = UDim2.fromOffset(10, 85) settingsTitle.BackgroundTransparency = 1 settingsTitle.Text = "ESP SETTINGS" settingsTitle.TextColor3 = Color3.new(1, 1, 1) settingsTitle.Font = Enum.Font.GothamBold settingsTitle.TextSize = 12 settingsTitle.Parent = main for i, category in ipairs(categories) do local row = math.floor((i - 1) / 2) local column = (i - 1) % 2 local button = makeButton( main, category .. ": ON", UDim2.fromOffset(10 + column * 145, 110 + row * 35), UDim2.fromOffset(135, 30), COLORS[category] ) categoryButtons[category] = button button.MouseButton1Click:Connect(function() espEnabled[category] = not espEnabled[category] button.Text = category .. (espEnabled[category] and ": ON" or ": OFF") button.BackgroundColor3 = espEnabled[category] and COLORS[category] or Color3.fromRGB(65, 65, 70) end) end -- COLOR PICKER local pickerTitle = Instance.new("TextLabel") pickerTitle.Size = UDim2.new(1, -20, 0, 22) pickerTitle.Position = UDim2.fromOffset(10, 185) pickerTitle.BackgroundTransparency = 1 pickerTitle.Text = "COLOR PICKER" pickerTitle.TextColor3 = Color3.new(1, 1, 1) pickerTitle.Font = Enum.Font.GothamBold pickerTitle.TextSize = 12 pickerTitle.Parent = main local hue, saturation, value = COLORS.Banana:ToHSV() local updatePicker for i, category in ipairs(categories) do local button = makeButton( main, category, UDim2.fromOffset(10 + (i - 1) * 70, 210), UDim2.fromOffset(65, 27) ) button.TextSize = 10 button.MouseButton1Click:Connect(function() selectedCategory = category hue, saturation, value = COLORS[category]:ToHSV() pickerTitle.Text = "EDITING: " .. category updatePicker() end) end -- COLOR AREA local colorArea = Instance.new("Frame") colorArea.Size = UDim2.fromOffset(260, 105) colorArea.Position = UDim2.fromOffset(20, 250) colorArea.BackgroundColor3 = Color3.fromRGB(255, 0, 0) colorArea.BorderSizePixel = 0 colorArea.Parent = main corner(colorArea, 6) local white = Instance.new("Frame") white.Size = UDim2.new(1, 0, 1, 0) white.BackgroundColor3 = Color3.new(1, 1, 1) white.BorderSizePixel = 0 white.Parent = colorArea local whiteGradient = Instance.new("UIGradient") whiteGradient.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1) }) whiteGradient.Parent = white local black = Instance.new("Frame") black.Size = UDim2.new(1, 0, 1, 0) black.BackgroundColor3 = Color3.new(0, 0, 0) black.BorderSizePixel = 0 black.Parent = colorArea local blackGradient = Instance.new("UIGradient") blackGradient.Rotation = 90 blackGradient.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 0) }) blackGradient.Parent = black local selector = Instance.new("Frame") selector.Size = UDim2.fromOffset(12, 12) selector.AnchorPoint = Vector2.new(0.5, 0.5) selector.BackgroundColor3 = Color3.new(1, 1, 1) selector.BorderSizePixel = 2 selector.ZIndex = 5 selector.Parent = colorArea corner(selector, 10) -- HUE BAR local hueBar = Instance.new("Frame") hueBar.Size = UDim2.fromOffset(260, 16) hueBar.Position = UDim2.fromOffset(20, 365) hueBar.BackgroundColor3 = Color3.new(1, 1, 1) hueBar.BorderSizePixel = 0 hueBar.Parent = main corner(hueBar, 5) local hueGradient = Instance.new("UIGradient") hueGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)), ColorSequenceKeypoint.new(0.17, Color3.fromRGB(255, 255, 0)), ColorSequenceKeypoint.new(0.33, Color3.fromRGB(0, 255, 0)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(0, 255, 255)), ColorSequenceKeypoint.new(0.67, Color3.fromRGB(0, 0, 255)), ColorSequenceKeypoint.new(0.83, Color3.fromRGB(255, 0, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 0)) }) hueGradient.Parent = hueBar local hueSelector = Instance.new("Frame") hueSelector.Size = UDim2.fromOffset(5, 22) hueSelector.AnchorPoint = Vector2.new(0.5, 0.5) hueSelector.BackgroundColor3 = Color3.new(1, 1, 1) hueSelector.BorderSizePixel = 1 hueSelector.ZIndex = 5 hueSelector.Parent = hueBar -- HEX INPUT local hexBox = Instance.new("TextBox") hexBox.Size = UDim2.fromOffset(155, 27) hexBox.Position = UDim2.fromOffset(20, 397) hexBox.BackgroundColor3 = Color3.fromRGB(40, 40, 48) hexBox.TextColor3 = Color3.new(1, 1, 1) hexBox.Text = "#FFD700" hexBox.PlaceholderText = "#FFFFFF" hexBox.Font = Enum.Font.GothamBold hexBox.TextSize = 13 hexBox.ClearTextOnFocus = false hexBox.Parent = main corner(hexBox, 5) local preview = Instance.new("Frame") preview.Size = UDim2.fromOffset(85, 27) preview.Position = UDim2.fromOffset(195, 397) preview.BackgroundColor3 = COLORS.Banana preview.Parent = main corner(preview, 5) local function applyColor() local color = Color3.fromHSV(hue, saturation, value) COLORS[selectedCategory] = color preview.BackgroundColor3 = color hexBox.Text = "#" .. color:ToHex():upper() categoryButtons[selectedCategory].BackgroundColor3 = espEnabled[selectedCategory] and color or Color3.fromRGB(65, 65, 70) end updatePicker = function() colorArea.BackgroundColor3 = Color3.fromHSV(hue, 1, 1) selector.Position = UDim2.new(saturation, 0, 1 - value, 0) hueSelector.Position = UDim2.new(hue, 0, 0.5, 0) applyColor() end local function updateArea(position) saturation = math.clamp( (position.X - colorArea.AbsolutePosition.X) / colorArea.AbsoluteSize.X, 0, 1 ) value = 1 - math.clamp( (position.Y - colorArea.AbsolutePosition.Y) / colorArea.AbsoluteSize.Y, 0, 1 ) updatePicker() end local function updateHue(position) hue = math.clamp( (position.X - hueBar.AbsolutePosition.X) / hueBar.AbsoluteSize.X, 0, 1 ) updatePicker() end local draggingArea = false local draggingHue = false colorArea.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then draggingArea = true updateArea(input.Position) end end) hueBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then draggingHue = true updateHue(input.Position) end end) UserInputService.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then if draggingArea then updateArea(input.Position) elseif draggingHue then updateHue(input.Position) end end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then draggingArea = false draggingHue = false end end) hexBox.FocusLost:Connect(function() local hex = hexBox.Text:gsub("#", "") if #hex == 6 and hex:match("^%x%x%x%x%x%x$") then local r = tonumber(hex:sub(1, 2), 16) local g = tonumber(hex:sub(3, 4), 16) local b = tonumber(hex:sub(5, 6), 16) local color = Color3.fromRGB(r, g, b) hue, saturation, value = color:ToHSV() updatePicker() else updatePicker() end end) -- CREATE ESP -- Outline is fully visible; fill is transparent. local function addESP(object, color, labelText) if not object.Parent then return end local data = espObjects[object] if not data then local highlight = Instance.new("Highlight") highlight.Name = "BananaESPHighlight" highlight.Adornee = object highlight.FillTransparency = 1 highlight.OutlineTransparency = 0 highlight.OutlineColor = color highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.Parent = object local adornee if object:IsA("Model") then adornee = object:FindFirstChild("Head") or object.PrimaryPart or object:FindFirstChildWhichIsA("BasePart", true) elseif object:IsA("BasePart") then adornee = object end local billboard if adornee then billboard = Instance.new("BillboardGui") billboard.Name = "BananaESPLabel" billboard.Adornee = adornee billboard.Size = UDim2.fromOffset(180, 30) billboard.StudsOffset = Vector3.new(0, 2.5, 0) billboard.AlwaysOnTop = true billboard.Parent = gui local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.Text = labelText label.TextColor3 = color label.TextStrokeTransparency = 0 label.Font = Enum.Font.GothamBold label.TextSize = 13 label.Parent = billboard end data = { Highlight = highlight, Billboard = billboard } espObjects[object] = data end -- Update outline and label every refresh data.Highlight.FillTransparency = 1 data.Highlight.OutlineTransparency = 0 data.Highlight.OutlineColor = color if data.Billboard then local label = data.Billboard:FindFirstChildWhichIsA("TextLabel") if label then label.Text = labelText label.TextColor3 = color end end end -- PLAYER ESP local function refreshPlayers() for _, player in ipairs(Players:GetPlayers()) do if player.Character then local character = player.Character local role if player.Team then local teamName = player.Team.Name:lower():match("^%s*(.-)%s*$") if teamName == "banana" then role = "Banana" elseif teamName == "runners" then role = "Runners" end end if role and espEnabled[role] then addESP( character, COLORS[role], player.Name .. " [" .. role .. "]" ) else removeESP(character) end end end end -- HOLLOWKEY ESP local function refreshHollowKey() for _, object in ipairs(Workspace:GetDescendants()) do if object.Name == "HollowKey" and (object:IsA("Model") or object:IsA("BasePart")) then if espEnabled.HollowKey then addESP(object, COLORS.HollowKey, "HollowKey") else removeESP(object) end end end end -- ESCAPE DOOR ESP -- Workspace > GameKeeper > Exits > EscapeDoor -- ExitTag is ignored. local function refreshEscapeDoors() local gameKeeper = Workspace:FindFirstChild("GameKeeper") if not gameKeeper then return end local exits = gameKeeper:FindFirstChild("Exits") if not exits then return end for _, object in ipairs(exits:GetDescendants()) do if object.Name == "EscapeDoor" and (object:IsA("Model") or object:IsA("BasePart")) then if espEnabled.EscapeDoor then addESP(object, COLORS.EscapeDoor, "EscapeDoor") else removeESP(object) end end end end -- REMOVE OBJECTS WHEN THEY DISAPPEAR Workspace.DescendantRemoving:Connect(function(object) removeESP(object) end) Players.PlayerRemoving:Connect(function(player) if player.Character then removeESP(player.Character) end end) -- FULL EXIT exitButton.MouseButton1Click:Connect(function() running = false enabled = false clearESP() gui:Destroy() end) -- INITIAL COLOR updatePicker() -- MAIN LOOP while running and gui.Parent do if enabled then refreshPlayers() refreshHollowKey() refreshEscapeDoors() end task.wait(1) end