local players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local UserInputService = game:GetService("UserInputService") local player = players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local screen_gui = Instance.new("ScreenGui") screen_gui.Name = "hunting game hub" screen_gui.ResetOnSpawn = false screen_gui.Parent = playerGui local main_frame = Instance.new("Frame") main_frame.Size = UDim2.new(0, 220, 0, 350) main_frame.Position = UDim2.new(0.5, -110, 0.5, -175) main_frame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) main_frame.BorderColor3 = Color3.fromRGB(15, 15, 15) main_frame.BorderSizePixel = 2 main_frame.Active = true main_frame.Parent = screen_gui local top_bar = Instance.new("Frame") top_bar.Size = UDim2.new(1, 0, 0, 25) top_bar.BackgroundColor3 = Color3.fromRGB(25, 25, 25) top_bar.BorderSizePixel = 0 top_bar.Parent = main_frame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -30, 1, 0) title.Position = UDim2.new(0, 5, 0, 0) title.Text = "hunting game hub" title.Font = Enum.Font.Code title.TextSize = 14 title.BackgroundTransparency = 1 title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = top_bar local close_btn = Instance.new("TextButton") close_btn.Size = UDim2.new(0, 25, 0, 25) close_btn.Position = UDim2.new(1, -25, 0, 0) close_btn.Text = "x" close_btn.Font = Enum.Font.Code close_btn.TextSize = 14 close_btn.BackgroundColor3 = Color3.fromRGB(180, 40, 40) close_btn.BorderSizePixel = 0 close_btn.TextColor3 = Color3.fromRGB(255, 255, 255) close_btn.Parent = top_bar local dragging, dragInput, dragStart, startPos local function update(input) local delta = input.Position - dragStart main_frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end top_bar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = main_frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) top_bar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then update(input) end end) local tab_bar = Instance.new("Frame") tab_bar.Size = UDim2.new(1, 0, 0, 25) tab_bar.Position = UDim2.new(0, 0, 0, 25) tab_bar.BackgroundColor3 = Color3.fromRGB(35, 35, 35) tab_bar.BorderSizePixel = 0 tab_bar.Parent = main_frame local function create_tab_button(text, pos) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.333, 0, 1, 0) btn.Position = pos btn.Text = text btn.Font = Enum.Font.Code btn.TextSize = 12 btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40) btn.BorderColor3 = Color3.fromRGB(15, 15, 15) btn.BorderSizePixel = 1 btn.TextColor3 = Color3.fromRGB(150, 150, 150) btn.Parent = tab_bar return btn end local esp_tab = create_tab_button("esp", UDim2.new(0, 0, 0, 0)) local tp_tab = create_tab_button("teleports", UDim2.new(0.333, 0, 0, 0)) local follow_tab = create_tab_button("follow", UDim2.new(0.666, 0, 0, 0)) local content_area = Instance.new("Frame") content_area.Size = UDim2.new(1, -10, 1, -60) content_area.Position = UDim2.new(0, 5, 0, 55) content_area.BackgroundTransparency = 1 content_area.Parent = main_frame local function create_frame() local f = Instance.new("ScrollingFrame") f.Size = UDim2.new(1, 0, 1, 0) f.BackgroundTransparency = 1 f.BorderSizePixel = 0 f.ScrollBarThickness = 4 f.Visible = false f.Parent = content_area local l = Instance.new("UIListLayout") l.Padding = UDim.new(0, 5) l.SortOrder = Enum.SortOrder.LayoutOrder l.Parent = f l:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() f.CanvasSize = UDim2.new(0, 0, 0, l.AbsoluteContentSize.Y + 5) end) return f end local esp_frame = create_frame() esp_frame.Visible = true esp_tab.BackgroundColor3 = Color3.fromRGB(55, 55, 55) esp_tab.TextColor3 = Color3.fromRGB(255, 255, 255) local tp_frame = create_frame() local follow_frame = create_frame() local function switch_tab(target_frame, target_btn) for _, f in ipairs({esp_frame, tp_frame, follow_frame}) do f.Visible = false end for _, b in ipairs({esp_tab, tp_tab, follow_tab}) do b.BackgroundColor3 = Color3.fromRGB(40, 40, 40) b.TextColor3 = Color3.fromRGB(150, 150, 150) end target_frame.Visible = true target_btn.BackgroundColor3 = Color3.fromRGB(55, 55, 55) target_btn.TextColor3 = Color3.fromRGB(255, 255, 255) end esp_tab.MouseButton1Click:Connect(function() switch_tab(esp_frame, esp_tab) end) tp_tab.MouseButton1Click:Connect(function() switch_tab(tp_frame, tp_tab) end) follow_tab.MouseButton1Click:Connect(function() switch_tab(follow_frame, follow_tab) end) local function create_button(text, parent, order) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -5, 0, 25) btn.Text = text btn.Font = Enum.Font.Code btn.TextSize = 13 btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) btn.BorderColor3 = Color3.fromRGB(20, 20, 20) btn.BorderSizePixel = 1 btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.LayoutOrder = order btn.Parent = parent return btn end local animal_types = {"Bear", "Moose", "Horse", "Deer", "Rabbit"} local toggles = {} local follow_states = {} local active_highlights = {} local active_billboards = {} local show_name = false local show_distance = false local following_instance = nil local active_follow_type = "" local function apply_highlight(model) if not active_highlights[model] then local hl = Instance.new("Highlight") hl.FillColor = Color3.new(1, 0, 0) hl.OutlineColor = Color3.new(1, 0, 0) hl.FillTransparency = 0.5 hl.OutlineTransparency = 0 hl.Parent = model active_highlights[model] = hl end end local function remove_highlight(model) if active_highlights[model] then active_highlights[model]:Destroy() active_highlights[model] = nil end end local function get_billboard(model) if active_billboards[model] then return active_billboards[model] end local bgui = Instance.new("BillboardGui") bgui.Size = UDim2.new(0, 150, 0, 30) bgui.Adornee = model.PrimaryPart or model:FindFirstChild("HumanoidRootPart") or model:FindFirstChild("Head") or model:FindFirstChildWhichIsA("BasePart") bgui.AlwaysOnTop = true bgui.ExtentsOffset = Vector3.new(0, 4.5, 0) bgui.Parent = screen_gui local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.TextColor3 = Color3.new(1, 1, 1) label.TextStrokeTransparency = 0 label.TextSize = 12 label.Font = Enum.Font.Code label.Parent = bgui active_billboards[model] = {gui = bgui, label = label} return active_billboards[model] end local name_btn = create_button("show name: off", esp_frame, 1) name_btn.MouseButton1Click:Connect(function() show_name = not show_name name_btn.Text = "show name: " .. (show_name and "on" or "off") end) local dist_btn = create_button("show distance: off", esp_frame, 2) dist_btn.MouseButton1Click:Connect(function() show_distance = not show_distance dist_btn.Text = "show distance: " .. (show_distance and "on" or "off") end) for i, name in ipairs(animal_types) do toggles[name] = false local btn = create_button(name:lower() .. ": off", esp_frame, i + 2) btn.MouseButton1Click:Connect(function() toggles[name] = not toggles[name] btn.Text = name:lower() .. ": " .. (toggles[name] and "on" or "off") end) end local function stop_follow_all() active_follow_type = "" following_instance = nil for k, _ in pairs(follow_states) do follow_states[k] = false for _, child in ipairs(follow_frame:GetChildren()) do if child:IsA("TextButton") and child.Text:find(k:lower()) then child.Text = "follow " .. k:lower() .. ": off" end end end end create_button("teleport to town", tp_frame, 1).MouseButton1Click:Connect(function() stop_follow_all() local character = player.Character local spawn_loc = Workspace:FindFirstChild("SpawnLocation") if character and character:FindFirstChild("HumanoidRootPart") and spawn_loc then character.HumanoidRootPart.CFrame = spawn_loc.CFrame * CFrame.new(0, 3, 0) end end) for i, name in ipairs(animal_types) do create_button("tp to " .. name:lower(), tp_frame, i + 1).MouseButton1Click:Connect(function() stop_follow_all() local folder = Workspace:FindFirstChild("Animals") if folder then local targets = {} for _, child in ipairs(folder:GetChildren()) do local hum = child:FindFirstChildWhichIsA("Humanoid") if child.Name:lower():find(name:lower()) and (not hum or hum.Health > 0) then table.insert(targets, child) end end if #targets > 0 then local target = targets[math.random(1, #targets)] local part = target.PrimaryPart or target:FindFirstChild("HumanoidRootPart") or target:FindFirstChildWhichIsA("BasePart") if part and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then player.Character.HumanoidRootPart.CFrame = part.CFrame * CFrame.new(0, 0, -50) end end end end) end for i, name in ipairs(animal_types) do follow_states[name] = false local btn = create_button("follow " .. name:lower() .. ": off", follow_frame, i) btn.MouseButton1Click:Connect(function() follow_states[name] = not follow_states[name] if follow_states[name] then active_follow_type = name for k, _ in pairs(follow_states) do if k ~= name then follow_states[k] = false for _, child in ipairs(follow_frame:GetChildren()) do if child:IsA("TextButton") and child.Text:find(k:lower()) then child.Text = "follow " .. k:lower() .. ": off" end end end end btn.Text = "follow " .. name:lower() .. ": on" local folder = Workspace:FindFirstChild("Animals") if folder then local targets = {} for _, child in ipairs(folder:GetChildren()) do local hum = child:FindFirstChildWhichIsA("Humanoid") if child.Name:lower():find(name:lower()) and (not hum or hum.Health > 0) then table.insert(targets, child) end end if #targets > 0 then following_instance = targets[math.random(1, #targets)] else stop_follow_all() end end else stop_follow_all() end end) end local update_connection = RunService.RenderStepped:Connect(function() local folder = Workspace:FindFirstChild("Animals") local char = player.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if following_instance and active_follow_type ~= "" then local hum = following_instance:FindFirstChildWhichIsA("Humanoid") if following_instance.Parent ~= folder or (hum and hum.Health <= 0) then stop_follow_all() else local target_part = following_instance.PrimaryPart or following_instance:FindFirstChild("HumanoidRootPart") or following_instance:FindFirstChildWhichIsA("BasePart") if target_part and hrp then local target_pos = target_part.Position local offset_pos = (target_part.CFrame * CFrame.new(0, 0, -8)).Position hrp.CFrame = CFrame.lookAt(offset_pos, target_pos) hrp.Velocity = Vector3.new(0, 0, 0) end end end if folder then for _, child in ipairs(folder:GetChildren()) do local foundToggle = false for toggleName, status in pairs(toggles) do if child.Name:lower():find(toggleName:lower()) and status then foundToggle = true break end end if foundToggle then apply_highlight(child) if show_name or show_distance then local data = get_billboard(child) local str = "" local target_part = child.PrimaryPart or child:FindFirstChild("HumanoidRootPart") or child:FindFirstChildWhichIsA("BasePart") if show_name then str = child.Name:lower() end if show_distance and hrp and target_part then local dist = math.floor((hrp.Position - target_part.Position).Magnitude) str = str .. (show_name and " [" or "") .. dist .. " studs" .. (show_name and "]" or "") end data.label.Text = str elseif active_billboards[child] then active_billboards[child].gui:Destroy() active_billboards[child] = nil end else remove_highlight(child) if active_billboards[child] then active_billboards[child].gui:Destroy() active_billboards[child] = nil end end end end end) close_btn.MouseButton1Click:Connect(function() update_connection:Disconnect() for _, hl in pairs(active_highlights) do if hl then hl:Destroy() end end for _, data in pairs(active_billboards) do if data.gui then data.gui:Destroy() end end screen_gui:Destroy() end)