-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] -- Vision Hub/main.lua -- sexy script by github.com/orialdev -- please give credit if you use anything from my code local CoreGui = game:GetService("CoreGui") local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local Modules = {} local WindUI = loadstring(game:HttpGet("https://raw.githubusercontent.com/KevinScripts2024/Gkfkfkdlwsk/refs/heads/main/wind%20(1).txt"))() local queue_on_teleport = queue_on_teleport or (syn and syn.queue_on_teleport) or (fluxus and fluxus.queue_on_teleport) or function(...) end if getgenv().VisionHub_Connections then for i, conn in pairs(getgenv().VisionHub_Connections) do if conn then pcall(function() conn:Disconnect() end) end getgenv().VisionHub_Connections[i] = nil end end getgenv().VisionHub_Connections = {} for _, gui in ipairs(CoreGui:GetChildren()) do if gui.Name == "Vision Hub" or gui.Name == "VisionESP" or string.match(gui.Name, "^VisionBtn_") or gui.Name == "VisionTimerGUI" then gui:Destroy() end end for _, player in ipairs(Players:GetPlayers()) do if player.Character then local artifacts = { player.Character:FindFirstChild("VisionHighlight"), player.Character:FindFirstChild("Head") and player.Character.Head:FindFirstChild("NameESP") } for _, artifact in ipairs(artifacts) do if artifact then artifact:Destroy() end end end end for _, obj in ipairs(Workspace:GetDescendants()) do if obj.Name == "VisionGunHighlight" or obj.Name == "VisionGunLabel" then obj:Destroy() end end if Modules and Modules.RootPart then local v = Modules.RootPart:FindFirstChild("EpixVel") if v then v:Destroy() end end if getgenv().FPDH then Workspace.FallenPartsDestroyHeight = getgenv().FPDH end local function AddConnection(conn) local connections = getgenv().VisionHub_Connections for i = #connections, 1, -1 do local c = connections[i] if not c or not c.Connected then table.remove(connections, i) end end table.insert(connections, conn) return conn end local RunService = game:GetService("RunService") local TeleportService = game:GetService("TeleportService") local StarterGui = game:GetService("StarterGui") local ReplicatedStorage = game:GetService("ReplicatedStorage") local HttpService = game:GetService("HttpService") local UserInputService = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local SoundService = game:GetService("SoundService") local TextChatService = game:GetService("TextChatService") local Player = Players.LocalPlayer local GetMouse = Player:GetMouse() local PlayerGui = Player:FindFirstChildWhichIsA("PlayerGui") local PlaceId, JobId = game.PlaceId, game.JobId local writefile = writefile or nil local readfile = readfile or nil local firetouchinterest = firetouchinterest or nil Modules.Player = Player Modules.GetMouse = GetMouse Modules.PlayerGui = PlayerGui Modules.PlaceId = PlaceId Modules.JobId = JobId Modules.RunService = RunService Modules.UserInputService = UserInputService Modules.Lighting = Lighting Modules.SoundService = SoundService Modules.Workspace = Workspace Modules.ReplicatedStorage = ReplicatedStorage Modules.HttpService = HttpService Modules.StarterGui = StarterGui Modules.TextChatService = TextChatService Modules.Config = { GodMode = false, AntiFling = false, AntiAfk = false, EnableWalkSpeed = false, WalkSpeed = 16, EnableJumpPower = false, JumpPower = 50, Noclip = false, InfiniteJump = false, AutoGrabGun = false, AutoKill = false, KnifeAura = false, AuraRadius = 10, EspPlayers = false, ShowNames = false, EspDroppedGun = false, EspTrap = false, RemoveTraps = false, SilentThrow = false, AutoShootMurderer = false, AutoQueue = true, QueueUrl = 'loadstring(game:HttpGet("https://raw.githubusercontent.com/orialdev/Vision-Hub/refs/heads/main/main.lua"))()', NotifyMurderer = false, NotifySheriff = false, NotifyGunDropped = false, ButtonsLocked = false } Modules.PlayerData = {} Modules.MobileButtons = {} local function updateCharacterRefs(character) Modules.Character = character if character then local hum = character:FindFirstChildOfClass("Humanoid") if not hum then hum = character:WaitForChild("Humanoid", 5) end Modules.Humanoid = hum Modules.Backpack = Modules.Player:FindFirstChild("Backpack") Modules.RootPart = character:FindFirstChild("HumanoidRootPart") or character.PrimaryPart Modules.Camera = Workspace.CurrentCamera else Modules.Humanoid = nil Modules.RootPart = nil end end if Modules.Player then if Modules.Player.Character then updateCharacterRefs(Modules.Player.Character) end AddConnection(Modules.Player.CharacterAdded:Connect(function(character) updateCharacterRefs(character) end)) AddConnection(Modules.Player.CharacterRemoving:Connect(function() updateCharacterRefs(nil) end)) AddConnection(Players.PlayerRemoving:Connect(function(p) if p and p.Name and Modules.PlayerData[p.Name] then Modules.PlayerData[p.Name] = nil end end)) end function Modules.GetService(name) local ok, s = pcall(function() return game:GetService(name) end) return ok and s or nil end do local antiFlingConn = nil function Modules.ToggleAntiFling(enable) Modules.Config.AntiFling = enable if antiFlingConn then antiFlingConn:Disconnect() antiFlingConn = nil end if enable then antiFlingConn = AddConnection(RunService.Stepped:Connect(function() if not Modules.Character then return end for _, otherPlayer in ipairs(Players:GetPlayers()) do if otherPlayer ~= Modules.Player and otherPlayer.Character then for _, part in ipairs(otherPlayer.Character:GetChildren()) do if part:IsA("BasePart") and part.CanCollide then part.CanCollide = false if part.Name == "HumanoidRootPart" then part.Velocity = Vector3.new(0, 0, 0) part.RotVelocity = Vector3.new(0, 0, 0) end end end end end end)) end end end function Modules.HandleQueueTeleport() if Modules.Config.AutoQueue and Modules.Config.QueueUrl and Modules.Config.QueueUrl ~= "" then if queue_on_teleport then queue_on_teleport(Modules.Config.QueueUrl) end end end function Modules.Rejoin() if not TeleportService then return end if not Modules.Player then return end Modules.HandleQueueTeleport() pcall(function() TeleportService:TeleportToPlaceInstance( game.PlaceId, game.JobId, Modules.Player ) end) end function Modules.ServerHop() if not TeleportService or not Modules.Player then return end Modules.HandleQueueTeleport() local url = "https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100" local success, result = pcall(function() return HttpService:JSONDecode(game:HttpGet(url)) end) if success and result and result.data then for _, server in ipairs(result.data) do if server.id ~= game.JobId and server.playing < server.maxPlayers then TeleportService:TeleportToPlaceInstance( game.PlaceId, server.id, Modules.Player ) return end end end TeleportService:Teleport(game.PlaceId, Modules.Player) end function getMap() for _, o in ipairs(workspace:GetChildren()) do if o:FindFirstChild("CoinContainer") and o:FindFirstChild("Spawns") then return o end end return nil end function Modules.TeleportToMap() local character = Modules.Character or (Modules.RootPart and Modules.RootPart.Parent) if not character then return end local map = getMap() if not map then return end local spawns = map:FindFirstChild("Spawns") if not spawns then return end local spawnList = {} for _, v in ipairs(spawns:GetChildren()) do if v:IsA("BasePart") then table.insert(spawnList, v) end end local spawn if #spawnList > 0 then spawn = spawnList[math.random(1, #spawnList)] end if not spawn then spawn = spawns:FindFirstChild("Spawn") or spawns:FindFirstChild("PlayerSpawn") end if spawn and spawn:IsA("BasePart") then character:PivotTo(spawn.CFrame * CFrame.new(0, 5, 0)) else end end function getLobby() for _, obj in ipairs(workspace:GetChildren()) do if obj:FindFirstChild("Lobby") then return obj.Lobby end if obj.Name:lower() == "lobby" then return obj end end return nil end function Modules.TeleportToLobby() local character = Modules.Character or (Modules.RootPart and Modules.RootPart.Parent) if not character then return end local lobby = getLobby() if not lobby then return end local spawns = lobby:FindFirstChild("Spawns") if not spawns then return end local spawnList = {} for _, v in ipairs(spawns:GetChildren()) do if v:IsA("BasePart") then table.insert(spawnList, v) end end local spawn if #spawnList > 0 then spawn = spawnList[math.random(1, #spawnList)] end if not spawn then spawn = spawns:FindFirstChild("SpawnLocation") end if spawn and spawn:IsA("BasePart") then character:PivotTo(spawn.CFrame * CFrame.new(0, 5, 0)) end end function getCoinContainer() local map = getMap() if map then return map:FindFirstChild("CoinContainer") end return nil end function Modules.GetPlayerByName(name) if not name then return nil end for _, p in ipairs(Players:GetPlayers()) do if p.Name:lower() == name:lower() then return p end end return nil end function Modules.FindMurderer() for _, plr in ipairs(Players:GetPlayers()) do if plr:FindFirstChild("Backpack") and plr.Backpack:FindFirstChild("Knife") then return plr end end for _, plr in ipairs(Players:GetPlayers()) do if plr.Character and plr.Character:FindFirstChild("Knife") then return plr end end if Modules.PlayerData then for playerName, data in pairs(Modules.PlayerData) do if data and (data.Role == "Murderer" or data.role == "Murderer") then local found = Players:FindFirstChild(playerName) if found then return found end end end end return nil end function Modules.FindSheriff() for _, plr in ipairs(Players:GetPlayers()) do if plr:FindFirstChild("Backpack") and plr.Backpack:FindFirstChild("Gun") then return plr end end for _, plr in ipairs(Players:GetPlayers()) do if plr.Character and plr.Character:FindFirstChild("Gun") then return plr end end if Modules.PlayerData then for playerName, data in pairs(Modules.PlayerData) do if data and (data.Role == "Sheriff" or data.role == "Sheriff") then local found = Players:FindFirstChild(playerName) if found then return found end end end end return nil end function Modules.FindSheriffThatsNotMe() local localplayer = Players.LocalPlayer for _, plr in ipairs(Players:GetPlayers()) do if plr ~= localplayer and plr:FindFirstChild("Backpack") and plr.Backpack:FindFirstChild("Gun") then return plr end end for _, plr in ipairs(Players:GetPlayers()) do if plr ~= localplayer and plr.Character and plr.Character:FindFirstChild("Gun") then return plr end end if Modules.PlayerData then for playerName, data in pairs(Modules.PlayerData) do if data and (data.Role == "Sheriff" or data.role == "Sheriff") then local found = Players:FindFirstChild(playerName) if found and found ~= localplayer then return found end end end end return nil end do local success, remotes = pcall(function() return Modules.ReplicatedStorage and Modules.ReplicatedStorage:WaitForChild("Remotes", 5) end) if success and remotes then local gameplay = remotes:FindFirstChild("Gameplay") or remotes:FindFirstChild("Gameplay", true) if gameplay then local pdEvent = gameplay:FindFirstChild("PlayerDataChanged") if pdEvent and pdEvent:IsA("RemoteEvent") then AddConnection(pdEvent.OnClientEvent:Connect(function(data) if type(data) == "table" then Modules.PlayerData = data end end)) end end end local getPD = nil if Modules.ReplicatedStorage then getPD = Modules.ReplicatedStorage:FindFirstChild("GetPlayerData", true) end if getPD and typeof(getPD.InvokeServer) == "function" then pcall(function() local ok, res = pcall(function() return getPD:InvokeServer() end) if ok and type(res) == "table" then Modules.PlayerData = res end end) end end local SkidFling = function(TargetPlayer) if not TargetPlayer or not TargetPlayer.Character then return end local Character = Player and Player.Character local Humanoid = Character and (Character:FindFirstChildOfClass("Humanoid") or Character:FindFirstChild("Humanoid")) local RootPart = Character and (Character:FindFirstChild("HumanoidRootPart") or Character.PrimaryPart) local TCharacter = TargetPlayer and TargetPlayer.Character local THumanoid local TRootPart local THead local Accessory local Handle if TCharacter and TCharacter:FindFirstChildOfClass("Humanoid") then THumanoid = TCharacter:FindFirstChildOfClass("Humanoid") end if THumanoid then TRootPart = TCharacter:FindFirstChild("HumanoidRootPart") or TCharacter.PrimaryPart or THumanoid.RootPart end if TCharacter and TCharacter:FindFirstChild("Head") then THead = TCharacter.Head end if TCharacter and TCharacter:FindFirstChildOfClass("Accessory") then Accessory = TCharacter:FindFirstChildOfClass("Accessory") end if Accessory and Accessory:FindFirstChild("Handle") then Handle = Accessory.Handle end if Character and Humanoid and RootPart then if RootPart.Velocity.Magnitude < 50 then getgenv().OldPos = RootPart.CFrame end local CurrentCam = workspace.CurrentCamera if THead then CurrentCam.CameraSubject = THead elseif not THead and Handle then CurrentCam.CameraSubject = Handle elseif THumanoid and TRootPart then CurrentCam.CameraSubject = THumanoid end if not (TCharacter and TCharacter:FindFirstChildWhichIsA("BasePart")) then return end local FPos = function(BasePart, Pos, Ang) RootPart.CFrame = CFrame.new(BasePart.Position) * Pos * Ang pcall(function() if Character and Character.PrimaryPart then Character:SetPrimaryPartCFrame(CFrame.new(BasePart.Position) * Pos * Ang) end end) RootPart.Velocity = Vector3.new(9e7, 9e7 * 10, 9e7) RootPart.RotVelocity = Vector3.new(9e8, 9e8, 9e8) end local SFBasePart = function(BasePart) local TimeToWait = 2 local Time = tick() local Angle = 0 repeat if RootPart and THumanoid then if BasePart.Velocity.Magnitude < 50 then Angle = Angle + 100 FPos(BasePart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle),0 ,0)) task.wait() FPos(BasePart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0)) task.wait() FPos(BasePart, CFrame.new(2.25, 1.5, -2.25) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0)) task.wait() FPos(BasePart, CFrame.new(-2.25, -1.5, 2.25) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection,CFrame.Angles(math.rad(Angle), 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection,CFrame.Angles(math.rad(Angle), 0, 0)) task.wait() else FPos(BasePart, CFrame.new(0, 1.5, THumanoid.WalkSpeed), CFrame.Angles(math.rad(90), 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, -1.5, -THumanoid.WalkSpeed), CFrame.Angles(0, 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, 1.5, THumanoid.WalkSpeed), CFrame.Angles(math.rad(90), 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, 1.5, TRootPart and TRootPart.Velocity.Magnitude / 1.25 or 0), CFrame.Angles(math.rad(90), 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, -1.5, -(TRootPart and TRootPart.Velocity.Magnitude / 1.25 or 0)), CFrame.Angles(0, 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, 1.5, TRootPart and TRootPart.Velocity.Magnitude / 1.25 or 0), CFrame.Angles(math.rad(90), 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(math.rad(90), 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(0, 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, -1.5 ,0), CFrame.Angles(math.rad(-90), 0, 0)) task.wait() FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(0, 0, 0)) task.wait() end else break end until BasePart.Velocity.Magnitude > 500 or BasePart.Parent ~= TargetPlayer.Character or TargetPlayer.Parent ~= Players or TargetPlayer.Character ~= TCharacter or (THumanoid and THumanoid.Sit) or (Humanoid and Humanoid.Health <= 0) or tick() > Time + TimeToWait end if not getgenv().FPDH then getgenv().FPDH = workspace.FallenPartsDestroyHeight end workspace.FallenPartsDestroyHeight = 0/0 local BV = Instance.new("BodyVelocity") BV.Name = "EpixVel" BV.Parent