Version / Update: v1.0.0
- Download / Script Link
- 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)[ View More ]
This menu is built for "hunting game."Features:ESP: Highlights animals with a bright red outline so they are visible through obstacles.Info: Toggles for animal names and distance in studs.Targets: Specifically tracks Bears, Moose, Horses, Deer, and Rabbits.Teleports: • Animal Teleport: One-click teleport to any random animal of a specific species.Town Teleport: Quickly teleport back to the main town.Follow: Select an animal species to stay "glued" to a target. The script teleports you exactly 8 studs in front of them and forces your character to face them automatically as they move. Shooting them like this is difficult; it's recommended that you take out your knife and spam click.UI: Draggable UI, press the X button to unload the menu and all ESP.