
KeylessUniversal

local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
local Window = WindUI:CreateWindow({
Title = "Vortex Hub",
Icon = "gamepad-2", -- lucide icon
Author = "by the official Vortex!",
Folder = "VortexHub",
-- ↓ This all is Optional. You can remove it.
Size = UDim2.fromOffset(580, 460),
MinSize = Vector2.new(560, 350),
MaxSize = Vector2.new(850, 560),
Transparent = true,
Theme = "Dark",
Resizable = true,
SideBarWidth = 200,
BackgroundImageTransparency = 0.42,
HideSearchBar = true,
ScrollBarEnabled = false,
-- ↓ Optional. You can remove it.
--[[ You can set 'rbxassetid://' or video to Background.
'rbxassetid://':
Background = "rbxassetid://", -- rbxassetid
Video:
Background = "video:YOUR-RAW-LINK-TO-VIDEO.webm", -- video
--]]
-- ↓ Optional. You can remove it.
User = {
Enabled = true,
Anonymous = false,
Callback = function()
print("User Info Clicked")
end,
},
-- remove this all,
-- ! ↓ if you DON'T need the key system
KeySystem = {
-- ↓ Optional. You can remove it.
Key = { "BotVerification", "0000" },
Note = "Type BotVerification or 0000 to get access to the hub.",
-- ↓ Optional. You can remove it.
SaveKey = true, -- automatically save and load the key.
-- ↓ Optional. You can remove it.
-- API = {} ← Services. Read about it below ↓
},
})
local Tab = Window:Tab({
Title = "Local Player",
Icon = "user", -- optional
Locked = false,
})
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local currentSpeed = 16
local SPeedSlider = Tab:Slider({
Title = "Walkspeed Slider",
Desc = "Set Walkspeed Using This Slider.",
Step = 1,
Value = {
Min = 16,
Max = 250,
Default = 16,
},
Callback = function(value)
currentSpeed = value
local char = player.Character or player.CharacterAdded:Wait()
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = value
end
end
})
-- keep after respawn
player.CharacterAdded:Connect(function(char)
local humanoid = char:WaitForChild("Humanoid")
humanoid.WalkSpeed = currentSpeed
end)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local currentJump = 50
local JumpSlider = Tab:Slider({
Title = "Jumppower Slider",
Desc = "Set Jumppower Using This Slider.",
Step = 1,
Value = {
Min = 50,
Max = 500,
Default = 50,
},
Callback = function(value)
currentJump = value
local char = player.Character or player.CharacterAdded:Wait()
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.JumpPower = value
end
end
})
-- keep after respawn
player.CharacterAdded:Connect(function(char)
local humanoid = char:WaitForChild("Humanoid")
humanoid.JumpPower = currentJump
end)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local infJumpEnabled = false
local infJumpToggle = Tab:Toggle({
Title = "Infinite Jump",
Desc = "Jump in the air endlessly",
Icon = "plane",
Type = "Checkbox",
Value = false,
Callback = function(state)
infJumpEnabled = state
print("Infinite Jump: " .. tostring(state))
end
})
UserInputService.JumpRequest:Connect(function()
if infJumpEnabled then
local char = player.Character
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end
end)
local player = game:GetService("Players").LocalPlayer
local function setTiny(state)
local char = player.Character
if not char then return end
local humanoid = char:FindFirstChildOfClass("Humanoid")
if not humanoid then return end
-- reset FIRST (important)
for _, v in pairs(humanoid:GetChildren()) do
if v:IsA("NumberValue") and v.Name:find("Scale") then
v.Value = 1
end
end
if state then
-- apply tiny AFTER reset
if humanoid:FindFirstChild("BodyHeightScale") then
humanoid.BodyHeightScale.Value = 0.3
humanoid.BodyWidthScale.Value = 0.3
humanoid.BodyDepthScale.Value = 0.3
humanoid.HeadScale.Value = 0.3
end
end
end
-- 🔹 INVISIBLE TOGGLE
local invisEnabled = false
local InvisToggle = Tab:Toggle({
Title = "Become Invisible",
Desc = "Make Your Character Invisible.",
Icon = "hat-glasses",
Type = "Checkbox",
Value = false,
Callback = function(state)
invisEnabled = state
local char = player.Character
if not char then return end
for _, v in pairs(char:GetDescendants()) do
if v:IsA("BasePart") then
v.Transparency = state and 1 or 0
v.CanCollide = not state -- optional
elseif v:IsA("Decal") then
v.Transparency = state and 1 or 0
end
end
end
})
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local noclipEnabled = false
local NoclipToggle = Tab:Toggle({
Title = "Noclip",
Desc = "Walk through walls",
Icon = "ghost",
Type = "Checkbox",
Value = false,
Callback = function(state)
noclipEnabled = state
print("Noclip: " .. tostring(state))
end
})
-- 🔥 Noclip loop (runs every frame)
RunService.Stepped:Connect(function()
if noclipEnabled then
local char = player.Character
if char then
for _, v in pairs(char:GetDescendants()) do
if v:IsA("BasePart") then
v.CanCollide = false
end
end
end
end
end)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local VisualsTab = Window:Tab({
Title = "Visuals",
Icon = "eye"
})
--// SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
--// STATES
local MurdererESP = false
local SheriffESP = false
local InnocentESP = false
local GunESP = false
local CoinESP = false
--// UI (PUT THIS IN YOUR VISUALS TAB)
VisualsTab:Toggle({
Title = "Murderer ESP",
Value = false,
Callback = function(v) MurdererESP = v end
})
VisualsTab:Toggle({
Title = "Sheriff ESP",
Value = false,
Callback = function(v) SheriffESP = v end
})
VisualsTab:Toggle({
Title = "Innocent ESP",
Value = false,
Callback = function(v) InnocentESP = v end
})
VisualsTab:Toggle({
Title = "Gun ESP",
Value = false,
Callback = function(v) GunESP = v end
})
VisualsTab:Toggle({
Title = "Coin ESP",
Value = false,
Callback = function(v) CoinESP = v end
})
--// ESP FUNCTIONS
local function addHighlight(obj, color)
if not obj then return end
local hl = obj:FindFirstChild("ESP")
if not hl then
hl = Instance.new("Highlight")
hl.Name = "ESP"
hl.Parent = obj
end
hl.FillColor = color
hl.OutlineColor = color
hl.FillTransparency = 0.4
end
local function removeHighlight(obj)
if obj and obj:FindFirstChild("ESP") then
obj.ESP:Destroy()
end
end
--// ROLE DETECTION (BETTER)
local function getRole(plr)
local function check(container)
if not container then return end
for _, v in pairs(container:GetChildren()) do
if v:IsA("Tool") then
local name = v.Name:lower()
if name:find("knife") then return "Murderer" end
if name:find("gun") then return "Sheriff" end
end
end
end
return check(plr.Character) or check(plr:FindFirstChild("Backpack")) or "Innocent"
end
--// MAIN LOOP (STABLE)
RunService.Heartbeat:Connect(function()
for _, plr in pairs(Players:GetPlayers()) do
if plr ~= player and plr.Character then
local role = getRole(plr)
if role == "Murderer" and MurdererESP then
addHighlight(plr.Character, Color3.fromRGB(255,0,0))
elseif role == "Sheriff" and SheriffESP then
addHighlight(plr.Character, Color3.fromRGB(0,0,255))
elseif role == "Innocent" and InnocentESP then
addHighlight(plr.Character, Color3.fromRGB(0,255,0))
else
removeHighlight(plr.Character)
end
end
end
-- 🔫 GunDrop ESP (FIXED SEARCH)
if GunESP then
local gun = workspace:FindFirstChild("GunDrop", true)
if gun then
addHighlight(gun, Color3.fromRGB(255,255,0))
end
end
-- 🪙 Coin ESP (NEAR ONLY = LESS LAG)
if CoinESP and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local root = player.Character.HumanoidRootPart
for _, v in pairs(workspace:GetDescendants()) do
if v:IsA("BasePart") and v.Name:lower():find("coin") then
if (v.Position - root.Position).Magnitude < 80 then
addHighlight(v, Color3.fromRGB(255,215,0))
end
end
end
end
end)
--// SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
--// SETTINGS
local AimMode = "Automatic"
local trackingEnabled = false
--// ================= UI =================
VisualsTab:Dropdown({
Title = "Target Mode",
Values = {"Murderer", "Sheriff", "Automatic"},
Value = "Automatic",
Callback = function(v)
AimMode = v
end
})
VisualsTab:Toggle({
Title = "Aim Tracking",
Value = false,
Callback = function(v)
trackingEnabled = v
end
})
--// ================= ROLE DETECTION =================
local function getRole(plr)
local function check(container)
if not container then return end
for _, v in pairs(container:GetChildren()) do
if v:IsA("Tool") then
local name = v.Name:lower()
if name:find("knife") then return "Murderer" end
if name:find("gun") then return "Sheriff" end
end
end
end
return check(plr.Character) or check(plr:FindFirstChild("Backpack")) or "Innocent"
end
--// ================= TARGET FINDER =================
local function getTarget()
local closest = nil
local shortest = math.huge
if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
return nil
end
local myRole = getRole(player)
for _, plr in pairs(Players:GetPlayers()) do
if plr ~= player and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
local role = getRole(plr)
local valid = false
if AimMode == "Murderer" and role == "Murderer" then
valid = true
elseif AimMode == "Sheriff" and role == "Sheriff" then
valid = true
elseif AimMode == "Automatic" then
if myRole == "Sheriff" and role == "Murderer" then
valid = true
elseif myRole == "Murderer" then
valid = true
end
end
if valid then
local dist = (plr.Character.HumanoidRootPart.Position - player.Character.HumanoidRootPart.Position).Magnitude
if dist < shortest then
shortest = dist
closest = plr
end
end
end
end
return closest
end
--// ================= TRACK LOOP =================
RunService.RenderStepped:Connect(function()
if not trackingEnabled then return end
if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then return end
local target = getTarget()
if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
local camPos = camera.CFrame.Position
local targetPos = target.Character.HumanoidRootPart.Position
-- ⚡ INSTANT TRACK
camera.CFrame = CFrame.new(camPos, targetPos)
end
end)
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local CoinFarmEnabled = false
local TweenSpeed = 50
-- Toggle
Tab:Toggle({
Title = "Coin Farm",
Desc = "Tween to random coins",
Icon = "coins",
Type = "Checkbox",
Value = false,
Callback = function(state)
CoinFarmEnabled = state
end
})
-- Speed Slider
Tab:Slider({
Title = "Coin Tween Speed",
Desc = "Change how fast you move",
Step = 1,
Value = {
Min = 10,
Max = 200,
Default = 50,
},
Callback = function(value)
TweenSpeed = value
end
})
-- Find coins
local function getCoins()
local coins = {}
for _, obj in pairs(workspace:GetDescendants()) do
if obj:IsA("BasePart") then
if obj.Name:lower():find("coin") then
table.insert(coins, obj)
end
end
end
return coins
end
-- Tween player
local function tweenToCoin(coin)
local character = player.Character
if not character then return end
local root = character:FindFirstChild("HumanoidRootPart")
if not root then return end
local distance = (root.Position - coin.Position).Magnitude
local time = distance / TweenSpeed
local tween = TweenService:Create(
root,
TweenInfo.new(
time,
Enum.EasingStyle.Linear
),
{
CFrame = coin.CFrame + Vector3.new(0, 3, 0)
}
)
tween:Play()
tween.Completed:Wait()
end
-- Farm loop
task.spawn(function()
while true do
if CoinFarmEnabled then
local coins = getCoins()
if #coins > 0 then
local randomCoin = coins[math.random(1, #coins)]
tweenToCoin(randomCoin)
end
end
task.wait(0.2)
end
end)No comments yet for this script.



