Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- script made by me universal
- if _G.UniversalHubRunning then return end
- _G.UniversalHubRunning = true
- local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
- local Window = Rayfield:CreateWindow({
- Name = "Universal Script Hub",
- LoadingTitle = "Lucky Universal Hub...",
- LoadingSubtitle = "by Lucky",
- ConfigurationSaving = {
- Enabled = true,
- FolderName = "UniversalHub",
- FileName = "Config"
- },
- KeySystem = false
- })
- local TweenService = game:GetService("TweenService")
- -- Tabs
- local ScanTab = Window:CreateTab("Scan Tools", 4483362458)
- local MovementTab = Window:CreateTab("Movement", 4483362458)
- local InteractionTab = Window:CreateTab("Interactions", 4483362458)
- local NPCTab = Window:CreateTab("NPC Tools", 4483362458)
- local PlayerTab = Window:CreateTab("Player Tools", 4483362458)
- local ItemTab = Window:CreateTab("Item Tools", 4483362458)
- local WeaponTab = Window:CreateTab("Weapon Tools", 4483362458)
- -- ==================== MOVEMENT TAB ====================
- local InfiniteJumpEnabled = false
- local UserInputService = game:GetService("UserInputService")
- local InfiniteJumpConnection
- MovementTab:CreateToggle({
- Name = "Infinite Jump",
- CurrentValue = false,
- Callback = function(Value)
- InfiniteJumpEnabled = Value
- if Value then
- InfiniteJumpConnection = UserInputService.JumpRequest:Connect(function()
- local player = game.Players.LocalPlayer
- local character = player.Character or player.CharacterAdded:Wait()
- local humanoid = character:FindFirstChildOfClass("Humanoid")
- if humanoid then
- humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
- end
- end)
- else
- if InfiniteJumpConnection then
- InfiniteJumpConnection:Disconnect()
- InfiniteJumpConnection = nil
- end
- end
- end,
- })
- local WalkSpeedEnabled = false
- local WalkSpeedValue = 50
- MovementTab:CreateToggle({
- Name = "Walk Speed",
- CurrentValue = false,
- Callback = function(Value)
- WalkSpeedEnabled = Value
- end,
- })
- MovementTab:CreateInput({
- Name = "Walk Speed Value",
- PlaceholderText = "Enter value (16 - 200)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- WalkSpeedValue = math.clamp(num, 16, 200)
- end
- end,
- })
- coroutine.wrap(function()
- while true do
- wait()
- local char = game.Players.LocalPlayer.Character
- if char and char:FindFirstChild("Humanoid") then
- if WalkSpeedEnabled then
- char.Humanoid.WalkSpeed = WalkSpeedValue
- else
- char.Humanoid.WalkSpeed = 16
- end
- end
- end
- end)()
- local NoclipEnabled = false
- local NoclipConnection
- MovementTab:CreateToggle({
- Name = "Noclip",
- CurrentValue = false,
- Callback = function(Value)
- NoclipEnabled = Value
- if Value then
- NoclipConnection = game:GetService("RunService").Stepped:Connect(function()
- local char = game.Players.LocalPlayer.Character
- if char then
- for _, part in ipairs(char:GetDescendants()) do
- if part:IsA("BasePart") then
- part.CanCollide = false
- end
- end
- end
- end)
- else
- if NoclipConnection then NoclipConnection:Disconnect() end
- end
- end,
- })
- local TweenDuration = 0.5
- MovementTab:CreateInput({
- Name = "Tween Duration (sec)",
- PlaceholderText = "Enter duration (0.1 - 5)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- TweenDuration = math.clamp(num, 0.1, 5)
- end
- end,
- })
- -- ==================== GLOBAL BRING POSITION ====================
- local BringDirection = "Above"
- local BringDirectionDropdown = NPCTab:CreateDropdown({
- Name = "Bring Position (NPCs & Players)",
- Options = {"Front", "Back", "Left", "Right", "Above"},
- CurrentOption = {"Above"},
- MultipleOptions = false,
- Flag = "BringDirection",
- Callback = function(Option)
- BringDirection = Option[1]
- end,
- })
- local function GetBringPosition()
- local player = game.Players.LocalPlayer
- local character = player.Character
- if not character or not character:FindFirstChild("HumanoidRootPart") then return nil end
- local rootPos = character.HumanoidRootPart.Position
- local rootCFrame = character.HumanoidRootPart.CFrame
- local offset = Vector3.new(0, 8, 0)
- if BringDirection == "Front" then
- offset = rootCFrame.LookVector * 6
- elseif BringDirection == "Back" then
- offset = rootCFrame.LookVector * -6
- elseif BringDirection == "Left" then
- offset = rootCFrame.RightVector * -6
- elseif BringDirection == "Right" then
- offset = rootCFrame.RightVector * 6
- elseif BringDirection == "Above" then
- offset = Vector3.new(0, 8, 0)
- end
- return rootPos + offset
- end
- -- ==================== INTERACTIONS TAB ====================
- local InstantInteractEnabled = false
- local AutoInteractEnabled = false
- local AutoInteractSpeed = 0.1
- local function EnableInstantInteract()
- if InstantInteractEnabled then
- for _, prompt in ipairs(workspace:GetDescendants()) do
- if prompt:IsA("ProximityPrompt") then
- prompt.HoldDuration = 0
- prompt.RequiresLineOfSight = false
- end
- end
- end
- end
- local function AutoInteract()
- while AutoInteractEnabled do
- for _, prompt in ipairs(workspace:GetDescendants()) do
- if prompt:IsA("ProximityPrompt") and prompt.Enabled then
- local character = game.Players.LocalPlayer.Character
- if character and character:FindFirstChild("HumanoidRootPart") then
- local distance = (character.HumanoidRootPart.Position - prompt.Parent.Position).Magnitude
- if distance <= prompt.MaxActivationDistance then
- fireproximityprompt(prompt)
- end
- end
- end
- end
- wait(AutoInteractSpeed)
- end
- end
- InteractionTab:CreateToggle({
- Name = "Instant Interact",
- CurrentValue = false,
- Callback = function(Value)
- InstantInteractEnabled = Value
- EnableInstantInteract()
- end,
- })
- InteractionTab:CreateToggle({
- Name = "Auto Interact (Fast)",
- CurrentValue = false,
- Callback = function(Value)
- AutoInteractEnabled = Value
- if Value then coroutine.wrap(AutoInteract)() end
- end,
- })
- InteractionTab:CreateInput({
- Name = "Auto Interact Speed",
- PlaceholderText = "Enter speed (0.01 - 1)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- AutoInteractSpeed = math.clamp(num, 0.01, 1)
- end
- end,
- })
- -- ==================== NPC TOOLS TAB ====================
- local ScannedNPCs = {}
- local ESPNPCsEnabled = false
- local ESPConnections = {}
- local KillAuraEnabled = false
- local KillAuraRange = 10
- local KillAuraConnection
- local AutoBringNPCsEnabled = false
- local AutoBringNPCsConnection
- -- New NPC Teleport Features (moved up for definition order)
- local SelectedNPC = nil
- local NPCList = {}
- local function UpdateNPCList()
- NPCList = {}
- for _, npc in ipairs(ScannedNPCs) do
- table.insert(NPCList, npc.Name)
- end
- end
- local function ScanNPCs()
- ScannedNPCs = {}
- -- Improved scanning: Find all Humanoids in workspace and check if their parent Model is not a player character
- for _, humanoid in ipairs(workspace:GetDescendants()) do
- if humanoid:IsA("Humanoid") then
- local model = humanoid.Parent
- if model and model:IsA("Model") then
- local isPlayer = false
- for _, player in ipairs(game.Players:GetPlayers()) do
- if player.Character == model then
- isPlayer = true
- break
- end
- end
- if not isPlayer then
- table.insert(ScannedNPCs, model)
- end
- end
- end
- end
- UpdateNPCList()
- if NPCDropdown then
- NPCDropdown:Refresh(NPCList)
- end
- end
- local function BringNPCs()
- local targetPos = GetBringPosition()
- if not targetPos then return end
- for _, npc in ipairs(ScannedNPCs) do
- -- Improved bringing: Check for HumanoidRootPart, RootPart, or primary part
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root then
- root.CFrame = CFrame.new(targetPos)
- end
- end
- end
- local function KillNPCs()
- for _, npc in ipairs(ScannedNPCs) do
- local humanoid = npc:FindFirstChild("Humanoid")
- if humanoid and humanoid.Health > 0 then
- humanoid.Health = 0 -- Changed to direct health set for instant death
- end
- end
- end
- local function EnableKillAura()
- if KillAuraEnabled then
- KillAuraConnection = game:GetService("RunService").Heartbeat:Connect(function()
- local char = game.Players.LocalPlayer.Character
- if char and char:FindFirstChild("HumanoidRootPart") then
- local pos = char.HumanoidRootPart.Position
- for _, npc in ipairs(ScannedNPCs) do
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root and (pos - root.Position).Magnitude <= KillAuraRange then
- local hum = npc:FindFirstChild("Humanoid")
- if hum and hum.Health > 0 then
- hum.Health = 0
- end
- end
- end
- end
- end)
- else
- if KillAuraConnection then KillAuraConnection:Disconnect() end
- end
- end
- local function EnableAutoBringNPCs()
- if AutoBringNPCsEnabled then
- AutoBringNPCsConnection = game:GetService("RunService").Heartbeat:Connect(BringNPCs)
- else
- if AutoBringNPCsConnection then AutoBringNPCsConnection:Disconnect() end
- end
- end
- local function EnableESPNPCs()
- if ESPNPCsEnabled then
- for _, npc in ipairs(ScannedNPCs) do
- if not ESPConnections[npc] then
- local billboard = Instance.new("BillboardGui")
- billboard.Adornee = npc:FindFirstChild("Head") or npc:FindFirstChild("HumanoidRootPart") or npc.PrimaryPart
- billboard.Size = UDim2.new(0, 100, 0, 100)
- billboard.StudsOffset = Vector3.new(0, 2, 0)
- billboard.AlwaysOnTop = true
- billboard.Parent = game.CoreGui
- local label = Instance.new("TextLabel", billboard)
- label.Text = npc.Name .. " (NPC)"
- label.Size = UDim2.new(1,0,1,0)
- label.BackgroundTransparency = 1
- label.TextColor3 = Color3.new(1,0,0)
- label.TextScaled = true
- ESPConnections[npc] = billboard
- end
- end
- else
- for _, gui in pairs(ESPConnections) do gui:Destroy() end
- ESPConnections = {}
- end
- end
- local function TeleportToNPC(npcName)
- local localPlayer = game.Players.LocalPlayer
- local localChar = localPlayer.Character
- if not localChar or not localChar:FindFirstChild("HumanoidRootPart") then return end
- for _, npc in ipairs(ScannedNPCs) do
- if npc.Name == npcName then
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root then
- local tweenInfo = TweenInfo.new(TweenDuration, Enum.EasingStyle.Linear)
- local goal = {CFrame = root.CFrame * CFrame.new(0, 0, -2)}
- local tween = TweenService:Create(localChar.HumanoidRootPart, tweenInfo, goal)
- tween:Play()
- end
- break
- end
- end
- end
- -- Added Freeze Aura
- local FreezeAuraEnabled = false
- local FreezeAuraRange = 10
- local FreezeAuraConnection
- local function EnableFreezeAura()
- if FreezeAuraEnabled then
- FreezeAuraConnection = game:GetService("RunService").Heartbeat:Connect(function()
- local char = game.Players.LocalPlayer.Character
- if char and char:FindFirstChild("HumanoidRootPart") then
- local pos = char.HumanoidRootPart.Position
- for _, npc in ipairs(ScannedNPCs) do
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root and root:IsA("BasePart") then
- local dist = (pos - root.Position).Magnitude
- if dist <= FreezeAuraRange then
- root.Anchored = true
- else
- root.Anchored = false
- end
- end
- end
- end
- end)
- else
- if FreezeAuraConnection then FreezeAuraConnection:Disconnect() end
- -- Unanchor all NPCs when disabled
- for _, npc in ipairs(ScannedNPCs) do
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root and root:IsA("BasePart") then
- root.Anchored = false
- end
- end
- end
- end
- -- NPC Controls
- NPCTab:CreateButton({
- Name = "Bring All NPCs",
- Callback = BringNPCs
- })
- NPCTab:CreateToggle({
- Name = "Auto Bring NPCs",
- CurrentValue = false,
- Callback = function(Value)
- AutoBringNPCsEnabled = Value
- EnableAutoBringNPCs()
- end,
- })
- NPCTab:CreateButton({
- Name = "Kill All NPCs",
- Callback = KillNPCs
- })
- -- NEW BUTTON: Load FE NPC Script
- NPCTab:CreateButton({
- Name = "Load FE NPC Script",
- Callback = function()
- loadstring(game:HttpGet("https://raw.githubusercontent.com/randomstring0/fe-source/refs/heads/main/NPC/source/main.Luau"))()
- end
- })
- NPCTab:CreateToggle({
- Name = "Kill Aura NPCs",
- CurrentValue = false,
- Callback = function(Value)
- KillAuraEnabled = Value
- EnableKillAura()
- end,
- })
- NPCTab:CreateInput({
- Name = "Kill Aura Range",
- PlaceholderText = "Enter range (5 - 50)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- KillAuraRange = math.clamp(num, 5, 50)
- end
- end,
- })
- NPCTab:CreateToggle({
- Name = "Freeze Aura NPCs",
- CurrentValue = false,
- Callback = function(Value)
- FreezeAuraEnabled = Value
- EnableFreezeAura()
- end,
- })
- NPCTab:CreateInput({
- Name = "Freeze Aura Range",
- PlaceholderText = "Enter range (5 - 50)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- FreezeAuraRange = math.clamp(num, 5, 50)
- end
- end,
- })
- NPCTab:CreateToggle({
- Name = "ESP NPCs",
- CurrentValue = false,
- Callback = function(Value)
- ESPNPCsEnabled = Value
- EnableESPNPCs()
- end,
- })
- coroutine.wrap(function()
- while wait(1) do
- if ESPNPCsEnabled then EnableESPNPCs() end
- end
- end)()
- local NPCDropdown = NPCTab:CreateDropdown({
- Name = "Select NPC",
- Options = NPCList,
- CurrentOption = {},
- Callback = function(Option) SelectedNPC = Option[1] end,
- })
- NPCTab:CreateButton({
- Name = "Teleport to Selected NPC",
- Callback = function()
- if SelectedNPC then TeleportToNPC(SelectedNPC) end
- end,
- })
- -- ==================== PLAYER TOOLS TAB ====================
- local SelectedPlayer = nil
- local PlayerList = {}
- local AutoBringAllEnabled = false
- local AutoBringConnection
- local AutoBringSelectedEnabled = false
- local AutoBringSelectedConnection
- local ESPPlayersEnabled = false
- local TracerPlayersEnabled = false
- local ESPPlayerConnections = {}
- local TracerLines = {}
- local function UpdatePlayerList()
- PlayerList = {}
- for _, player in ipairs(game.Players:GetPlayers()) do
- if player ~= game.Players.LocalPlayer then
- table.insert(PlayerList, player.Name)
- end
- end
- end
- local function BringPlayer(playerName)
- local targetPos = GetBringPosition()
- if not targetPos then return end
- local player = game.Players:FindFirstChild(playerName)
- if player and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
- player.Character.HumanoidRootPart.CFrame = CFrame.new(targetPos)
- end
- end
- local function TeleportToPlayer(playerName)
- local localPlayer = game.Players.LocalPlayer
- local localChar = localPlayer.Character
- if not localChar or not localChar:FindFirstChild("HumanoidRootPart") then return end
- local target = game.Players:FindFirstChild(playerName)
- if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
- local tweenInfo = TweenInfo.new(TweenDuration, Enum.EasingStyle.Linear)
- local goal = {CFrame = target.Character.HumanoidRootPart.CFrame * CFrame.new(0, 0, -2)}
- local tween = TweenService:Create(localChar.HumanoidRootPart, tweenInfo, goal)
- tween:Play()
- end
- end
- local function BringAllPlayers()
- local targetPos = GetBringPosition()
- if not targetPos then return end
- local localPlayer = game.Players.LocalPlayer
- for _, player in ipairs(game.Players:GetPlayers()) do
- if player ~= localPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
- player.Character.HumanoidRootPart.CFrame = CFrame.new(targetPos)
- end
- end
- end
- local function EnableAutoBringAll()
- if AutoBringAllEnabled then
- AutoBringConnection = game:GetService("RunService").Heartbeat:Connect(function()
- BringAllPlayers()
- end)
- else
- if AutoBringConnection then AutoBringConnection:Disconnect() end
- end
- end
- local function EnableAutoBringSelected()
- if AutoBringSelectedEnabled then
- AutoBringSelectedConnection = game:GetService("RunService").Heartbeat:Connect(function()
- if SelectedPlayer then BringPlayer(SelectedPlayer) end
- end)
- else
- if AutoBringSelectedConnection then AutoBringSelectedConnection:Disconnect() end
- end
- end
- local function GetTeamColor(player)
- local localPlayer = game.Players.LocalPlayer
- if player.Team and localPlayer.Team then
- if player.Team == localPlayer.Team then
- return Color3.new(0, 1, 0) -- Green for team
- else
- return Color3.new(1, 0, 0) -- Red for enemy
- end
- else
- return Color3.new(1, 1, 1) -- White if no teams
- end
- end
- local function EnableESPPlayers()
- if ESPPlayersEnabled then
- for _, player in ipairs(game.Players:GetPlayers()) do
- if player ~= game.Players.LocalPlayer and player.Character then
- local head = player.Character:FindFirstChild("Head")
- if head and not ESPPlayerConnections[player] then
- -- Billboard for name
- local billboard = Instance.new("BillboardGui")
- billboard.Adornee = head
- billboard.Size = UDim2.new(0, 100, 0, 100)
- billboard.StudsOffset = Vector3.new(0, 2, 0)
- billboard.AlwaysOnTop = true
- billboard.Parent = game.CoreGui
- local label = Instance.new("TextLabel", billboard)
- label.Text = player.Name
- label.Size = UDim2.new(1, 0, 1, 0)
- label.BackgroundTransparency = 1
- label.TextColor3 = GetTeamColor(player)
- label.TextScaled = true
- -- Highlight for body
- local highlight = Instance.new("Highlight")
- highlight.Adornee = player.Character
- highlight.FillColor = GetTeamColor(player)
- highlight.OutlineColor = GetTeamColor(player)
- highlight.FillTransparency = 0.5
- highlight.OutlineTransparency = 0
- highlight.Parent = game.CoreGui
- ESPPlayerConnections[player] = {Billboard = billboard, Highlight = highlight}
- end
- end
- end
- else
- for _, conn in pairs(ESPPlayerConnections) do
- if conn.Billboard then conn.Billboard:Destroy() end
- if conn.Highlight then conn.Highlight:Destroy() end
- end
- ESPPlayerConnections = {}
- end
- end
- local function EnableTracerPlayers()
- if TracerPlayersEnabled then
- for _, player in ipairs(game.Players:GetPlayers()) do
- if player ~= game.Players.LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
- if not TracerLines[player] then
- local line = Drawing.new("Line")
- line.Thickness = 2
- line.Color = GetTeamColor(player)
- line.Transparency = 1
- TracerLines[player] = line
- end
- end
- end
- else
- for _, line in pairs(TracerLines) do
- line:Remove()
- end
- TracerLines = {}
- end
- end
- local PlayerDropdown = PlayerTab:CreateDropdown({
- Name = "Select Player",
- Options = PlayerList,
- CurrentOption = {},
- Callback = function(Option) SelectedPlayer = Option[1] end,
- })
- PlayerTab:CreateButton({
- Name = "Bring Selected Player",
- Callback = function()
- if SelectedPlayer then BringPlayer(SelectedPlayer) end
- end,
- })
- PlayerTab:CreateToggle({
- Name = "Auto Bring Selected Player",
- CurrentValue = false,
- Callback = function(Value)
- AutoBringSelectedEnabled = Value
- EnableAutoBringSelected()
- end,
- })
- PlayerTab:CreateButton({
- Name = "Teleport to Selected Player",
- Callback = function()
- if SelectedPlayer then TeleportToPlayer(SelectedPlayer) end
- end,
- })
- PlayerTab:CreateButton({
- Name = "Bring All Players",
- Callback = BringAllPlayers
- })
- PlayerTab:CreateToggle({
- Name = "Auto Bring All Players",
- CurrentValue = false,
- Callback = function(Value)
- AutoBringAllEnabled = Value
- EnableAutoBringAll()
- end,
- })
- PlayerTab:CreateToggle({
- Name = "ESP Players",
- CurrentValue = false,
- Callback = function(Value)
- ESPPlayersEnabled = Value
- EnableESPPlayers()
- end,
- })
- PlayerTab:CreateToggle({
- Name = "Tracer Players",
- CurrentValue = false,
- Callback = function(Value)
- TracerPlayersEnabled = Value
- EnableTracerPlayers()
- end,
- })
- -- Initial setup
- UpdatePlayerList()
- PlayerDropdown:Refresh(PlayerList)
- -- Dynamic instant interact
- workspace.DescendantAdded:Connect(function(descendant)
- if InstantInteractEnabled and descendant:IsA("ProximityPrompt") then
- descendant.HoldDuration = 0
- descendant.RequiresLineOfSight = false
- end
- end)
- -- ESP and Tracer update loop
- coroutine.wrap(function()
- while wait(0.1) do
- if ESPPlayersEnabled then
- EnableESPPlayers()
- -- Update colors in case teams change
- for player, conn in pairs(ESPPlayerConnections) do
- if conn.Billboard and conn.Billboard:FindFirstChild("TextLabel") then
- conn.Billboard.TextLabel.TextColor3 = GetTeamColor(player)
- end
- if conn.Highlight then
- conn.Highlight.FillColor = GetTeamColor(player)
- conn.Highlight.OutlineColor = GetTeamColor(player)
- end
- end
- end
- if TracerPlayersEnabled then
- local camera = workspace.CurrentCamera
- local screenCenter = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
- for player, line in pairs(TracerLines) do
- if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
- local pos, onScreen = camera:WorldToViewportPoint(player.Character.HumanoidRootPart.Position)
- if onScreen then
- line.From = screenCenter
- line.To = Vector2.new(pos.X, pos.Y)
- line.Visible = true
- line.Color = GetTeamColor(player)
- else
- line.Visible = false
- end
- else
- line.Visible = false
- end
- end
- end
- end
- end)()
- local ScannedItems = {}
- local ItemESPEnabled = false
- local ItemESPObjects = {}
- local ItemSearchText = ""
- local function IsItem(obj)
- if obj:IsA("Tool") then return true end
- local keywords = {
- "gold", "silver", "bonds", "bond", "money", "coal",
- "weapon", "gun", "sword", "knife", "pistol", "rifle", "shotgun", "card", "tools", "tool",
- "key", "crate", "orb",
- "treasure", "ammo", "bottle"
- }
- local lname = obj.Name:lower()
- for _, kw in ipairs(keywords) do
- if lname:find(kw) then
- return true
- end
- end
- -- Additional check for interactable items (universal scan enhancement)
- if obj:FindFirstChildWhichIsA("ProximityPrompt") or obj:FindFirstChildWhichIsA("ClickDetector") then
- return true
- end
- return false
- end
- local function ScanItems()
- ScannedItems = {}
- for _, obj in ipairs(workspace:GetDescendants()) do
- if IsItem(obj) then
- table.insert(ScannedItems, obj)
- end
- end
- end
- local function EnableItemESP()
- if ItemESPEnabled then
- for _, item in ipairs(ScannedItems) do
- if not ItemESPObjects[item] then
- local adornee =
- item:IsA("Model") and (item.PrimaryPart or item:FindFirstChildWhichIsA("BasePart"))
- or item:IsA("BasePart") and item
- if adornee then
- local gui = Instance.new("BillboardGui")
- gui.Adornee = adornee
- gui.Size = UDim2.new(0, 120, 0, 40)
- gui.StudsOffset = Vector3.new(0, 2, 0)
- gui.AlwaysOnTop = true
- gui.Parent = game.CoreGui
- local txt = Instance.new("TextLabel", gui)
- txt.Size = UDim2.new(1,0,1,0)
- txt.BackgroundTransparency = 1
- txt.TextColor3 = Color3.new(1,1,0)
- txt.TextScaled = true
- txt.Text = item.Name
- ItemESPObjects[item] = gui
- end
- end
- end
- else
- for _, gui in pairs(ItemESPObjects) do
- gui:Destroy()
- end
- ItemESPObjects = {}
- end
- end
- local SelectedItemESPEnabled = false
- local SelectedItemESPObjects = {}
- local SelectedItemNames = {}
- local function EnableSelectedItemESP()
- for _, gui in pairs(SelectedItemESPObjects) do gui:Destroy() end
- SelectedItemESPObjects = {}
- if SelectedItemESPEnabled and #SelectedItemNames > 0 then
- for _, item in ipairs(ScannedItems) do
- if table.find(SelectedItemNames, item.Name) then
- local adornee =
- item:IsA("Model") and (item.PrimaryPart or item:FindFirstChildWhichIsA("BasePart"))
- or item:IsA("BasePart") and item
- if adornee then
- local gui = Instance.new("BillboardGui")
- gui.Adornee = adornee
- gui.Size = UDim2.new(0, 120, 0, 40)
- gui.StudsOffset = Vector3.new(0, 2, 0)
- gui.AlwaysOnTop = true
- gui.Parent = game.CoreGui
- local txt = Instance.new("TextLabel", gui)
- txt.Size = UDim2.new(1,0,1,0)
- txt.BackgroundTransparency = 1
- txt.TextColor3 = Color3.new(0,1,0)
- txt.TextScaled = true
- txt.Text = item.Name .. " (Selected)"
- SelectedItemESPObjects[item] = gui
- end
- end
- end
- end
- end
- coroutine.wrap(function()
- while task.wait(1) do
- if ItemESPEnabled then
- EnableItemESP()
- end
- if SelectedItemESPEnabled then
- EnableSelectedItemESP()
- end
- end
- end)()
- local function GetItemRoot(item)
- if item:IsA("Tool") then
- return item:FindFirstChild("Handle")
- elseif item:IsA("Model") then
- return item.PrimaryPart or item:FindFirstChildWhichIsA("BasePart")
- elseif item:IsA("BasePart") then
- return item
- end
- end
- local function TeleportToItem(item)
- local root = GetItemRoot(item)
- local char = game.Players.LocalPlayer.Character
- if root and char and char:FindFirstChild("HumanoidRootPart") then
- local tweenInfo = TweenInfo.new(TweenDuration, Enum.EasingStyle.Linear)
- local goal = {CFrame = root.CFrame * CFrame.new(0,0,-3)}
- local tween = TweenService:Create(char.HumanoidRootPart, tweenInfo, goal)
- tween:Play()
- end
- end
- local function BringItem(item)
- local root = GetItemRoot(item)
- local pos = GetBringPosition()
- if root and pos then
- root.CFrame = CFrame.new(pos)
- end
- end
- local function BringAllItems()
- local pos = GetBringPosition()
- if not pos then return end
- for _, item in ipairs(ScannedItems) do
- local root = GetItemRoot(item)
- if root then
- root.CFrame = CFrame.new(pos)
- end
- end
- end
- local function GetFilteredItems()
- local set = {}
- local list = {}
- for _, item in ipairs(ScannedItems) do
- if (ItemSearchText == "" or item.Name:lower():find(ItemSearchText)) and not set[item.Name] then
- set[item.Name] = true
- table.insert(list, item.Name)
- end
- end
- return list
- end
- ItemTab:CreateToggle({
- Name = "ESP Items",
- CurrentValue = false,
- Callback = function(v)
- ItemESPEnabled = v
- EnableItemESP()
- end
- })
- ItemTab:CreateToggle({
- Name = "ESP Selected Item",
- CurrentValue = false,
- Callback = function(v)
- SelectedItemESPEnabled = v
- EnableSelectedItemESP()
- end
- })
- ItemTab:CreateInput({
- Name = "Search Items",
- PlaceholderText = "coin / box / food / money",
- Callback = function(txt)
- ItemSearchText = txt:lower()
- ItemDropdown:Refresh(GetFilteredItems())
- end
- })
- local ItemDropdown = ItemTab:CreateDropdown({
- Name = "Select Item",
- Options = {},
- CurrentOption = {},
- MultipleOptions = true,
- Callback = function(opt)
- SelectedItemNames = opt
- if SelectedItemESPEnabled then
- EnableSelectedItemESP()
- end
- end
- })
- ItemTab:CreateButton({
- Name = "Teleport To Item",
- Callback = function()
- if #SelectedItemNames > 0 then
- for _, item in ipairs(ScannedItems) do
- if table.find(SelectedItemNames, item.Name) then
- TeleportToItem(item)
- break -- Teleport to first matching item only
- end
- end
- end
- end
- })
- ItemTab:CreateButton({
- Name = "Bring Selected Items",
- Callback = function()
- if #SelectedItemNames > 0 then
- for _, item in ipairs(ScannedItems) do
- if table.find(SelectedItemNames, item.Name) then
- BringItem(item)
- end
- end
- end
- end
- })
- ItemTab:CreateButton({
- Name = "Bring ALL Items",
- Callback = BringAllItems
- })
- local AutoPickupEnabled = false
- local AutoPickupRange = 20
- local function AutoPickupLoop()
- while AutoPickupEnabled do
- local char = game.Players.LocalPlayer.Character
- if char and char:FindFirstChild("HumanoidRootPart") then
- local pos = char.HumanoidRootPart.Position
- local rootPart = char.HumanoidRootPart
- for _, item in ipairs(ScannedItems) do
- local root = GetItemRoot(item)
- if root and (pos - root.Position).Magnitude <= AutoPickupRange then
- -- Teleport to player
- root.CFrame = rootPart.CFrame
- -- Fire prompt if exists
- local prompt = item:FindFirstChildOfClass("ProximityPrompt", true)
- if prompt then
- fireproximityprompt(prompt)
- end
- -- If tool, try to parent to backpack
- if item:IsA("Tool") then
- item.Parent = game.Players.LocalPlayer.Backpack
- end
- end
- end
- end
- wait(0.1)
- end
- end
- ItemTab:CreateToggle({
- Name = "Auto Pickup Items",
- CurrentValue = false,
- Callback = function(Value)
- AutoPickupEnabled = Value
- if Value then
- coroutine.wrap(AutoPickupLoop)()
- end
- end,
- })
- ItemTab:CreateInput({
- Name = "Auto Pickup Range",
- PlaceholderText = "Enter range (10 - 100)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- AutoPickupRange = math.clamp(num, 10, 100)
- end
- end,
- })
- -- ==================== SCAN TAB ====================
- local AutoScanInterval = 5
- local AutoScanNPCsEnabled = false
- local AutoScanItemsEnabled = false
- local AutoScanPlayersEnabled = false
- ScanTab:CreateButton({
- Name = "Scan NPCs",
- Callback = function()
- ScanNPCs()
- UpdateNPCList()
- if NPCDropdown then NPCDropdown:Refresh(NPCList) end
- end,
- })
- ScanTab:CreateToggle({
- Name = "Auto Scan NPCs",
- CurrentValue = false,
- Callback = function(Value)
- AutoScanNPCsEnabled = Value
- if Value then
- coroutine.wrap(function()
- while AutoScanNPCsEnabled do
- ScanNPCs()
- UpdateNPCList()
- if NPCDropdown then NPCDropdown:Refresh(NPCList) end
- wait(AutoScanInterval)
- end
- end)()
- end
- end,
- })
- ScanTab:CreateButton({
- Name = "Scan Items",
- Callback = function()
- ScanItems()
- if ItemDropdown then ItemDropdown:Refresh(GetFilteredItems()) end
- end,
- })
- ScanTab:CreateToggle({
- Name = "Auto Scan Items",
- CurrentValue = false,
- Callback = function(Value)
- AutoScanItemsEnabled = Value
- if Value then
- coroutine.wrap(function()
- while AutoScanItemsEnabled do
- ScanItems()
- if ItemDropdown then ItemDropdown:Refresh(GetFilteredItems()) end
- wait(AutoScanInterval)
- end
- end)()
- end
- end,
- })
- ScanTab:CreateButton({
- Name = "Scan Players",
- Callback = function()
- UpdatePlayerList()
- if PlayerDropdown then PlayerDropdown:Refresh(PlayerList) end
- end,
- })
- ScanTab:CreateToggle({
- Name = "Auto Scan Players",
- CurrentValue = false,
- Callback = function(Value)
- AutoScanPlayersEnabled = Value
- if Value then
- coroutine.wrap(function()
- while AutoScanPlayersEnabled do
- UpdatePlayerList()
- if PlayerDropdown then PlayerDropdown:Refresh(PlayerList) end
- wait(AutoScanInterval)
- end
- end)()
- end
- end,
- })
- ScanTab:CreateInput({
- Name = "Auto Scan Interval (sec)",
- PlaceholderText = "Enter seconds (1 - 30)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- AutoScanInterval = math.clamp(num, 1, 30)
- end
- end,
- })
- -- ==================== WEAPON TAB ====================
- local InfiniteAmmoEnabled = false
- local FastFireEnabled = false
- local FireRateValue = 0.05
- WeaponTab:CreateToggle({
- Name = "Infinite Ammo",
- CurrentValue = false,
- Callback = function(Value)
- InfiniteAmmoEnabled = Value
- end,
- })
- WeaponTab:CreateToggle({
- Name = "Fast Fire",
- CurrentValue = false,
- Callback = function(Value)
- FastFireEnabled = Value
- if Value then
- coroutine.wrap(function()
- while FastFireEnabled do
- local char = game.Players.LocalPlayer.Character
- if char then
- local serverScript = char:FindFirstChild("ServerScript")
- if serverScript then
- local fireWeapon = serverScript:FindFirstChild("FireWeapon")
- if fireWeapon then
- fireWeapon:FireServer()
- end
- end
- end
- wait(FireRateValue)
- end
- end)()
- end
- end,
- })
- WeaponTab:CreateInput({
- Name = "Fire Rate Delay",
- PlaceholderText = "Enter delay (0.01 - 1)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- FireRateValue = math.clamp(num, 0.01, 1)
- end
- end,
- })
- local AmmoNames = {"Ammo", "Clip", "Magazine", "Bullets", "Rounds", "StoredAmmo"}
- coroutine.wrap(function()
- while true do
- wait(0.1)
- if InfiniteAmmoEnabled then
- local char = game.Players.LocalPlayer.Character
- if char then
- -- Search in character
- for _, obj in ipairs(char:GetDescendants()) do
- if (obj:IsA("IntValue") or obj:IsA("NumberValue")) and table.find(AmmoNames, obj.Name) then
- obj.Value = 999
- end
- end
- -- Search in backpack
- local backpack = game.Players.LocalPlayer.Backpack
- for _, tool in ipairs(backpack:GetChildren()) do
- for _, obj in ipairs(tool:GetDescendants()) do
- if (obj:IsA("IntValue") or obj:IsA("NumberValue")) and table.find(AmmoNames, obj.Name) then
- obj.Value = 999
- end
- end
- end
- end
- end
- end
- end)()
- WeaponTab:CreateButton({
- Name = "Mod Guns (Alternative if Infinite Ammo not working)",
- Callback = function()
- for _, v in pairs(getgc(true)) do
- if type(v) == "table" and rawget(v, "BulletDamage") and rawget(v, "BulletRange") then
- v.MaxAmmo = 999999
- v.Supply = 999999
- v.BulletDamage = 450
- v.BulletRange = 1000
- v.FireInterval = 0
- v.ReloadInterval = 0
- print("guns modded")
- return
- end
- end
- print("executor not support or type error??")
- end
- })
- add the item , bringer and scan or refresh
- put it here
- -- script made by me universal
- if _G.UniversalHubRunning then return end
- _G.UniversalHubRunning = true
- local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
- local Window = Rayfield:CreateWindow({
- Name = "Dead Rails Hub",
- LoadingTitle = "Loading Dead Rails...",
- LoadingSubtitle = "Lucky 28]",
- ConfigurationSaving = {
- Enabled = false,
- FolderName = nil,
- FileName = "DeadRailsConfig"
- }
- })
- local TweenService = game:GetService("TweenService")
- -- Tabs
- local MainTab = Window:CreateTab("Main")
- local NPCTab = Window:CreateTab("NPC Tools", 4483362458)
- -- ==================== GLOBAL BRING POSITION ====================
- local BringDirection = "Above"
- local BringDirectionDropdown = NPCTab:CreateDropdown({
- Name = "Bring Position (NPCs & Players)",
- Options = {"Front", "Back", "Left", "Right", "Above"},
- CurrentOption = {"Above"},
- MultipleOptions = false,
- Flag = "BringDirection",
- Callback = function(Option)
- BringDirection = Option[1]
- end,
- })
- local function GetBringPosition()
- local player = game.Players.LocalPlayer
- local character = player.Character
- if not character or not character:FindFirstChild("HumanoidRootPart") then return nil end
- local rootPos = character.HumanoidRootPart.Position
- local rootCFrame = character.HumanoidRootPart.CFrame
- local offset = Vector3.new(0, 8, 0)
- if BringDirection == "Front" then
- offset = rootCFrame.LookVector * 6
- elseif BringDirection == "Back" then
- offset = rootCFrame.LookVector * -6
- elseif BringDirection == "Left" then
- offset = rootCFrame.RightVector * -6
- elseif BringDirection == "Right" then
- offset = rootCFrame.RightVector * 6
- elseif BringDirection == "Above" then
- offset = Vector3.new(0, 8, 0)
- end
- return rootPos + offset
- end
- -- ==================== NPC TOOLS TAB ====================
- local ScannedNPCs = {}
- local ESPNPCsEnabled = false
- local ESPConnections = {}
- local KillAuraEnabled = false
- local KillAuraRange = 10
- local KillAuraConnection
- local AutoBringNPCsEnabled = false
- local AutoBringNPCsConnection
- local AutoScanNPCsEnabled = false
- local AutoScanInterval = 5
- local BringRange = 100 -- Default bring range in studs
- -- New NPC Teleport Features (moved up for definition order)
- local SelectedNPC = nil
- local NPCList = {}
- local function UpdateNPCList()
- NPCList = {}
- for _, npc in ipairs(ScannedNPCs) do
- table.insert(NPCList, npc.Name)
- end
- end
- local function ScanNPCs()
- ScannedNPCs = {}
- -- Improved scanning: Find all Humanoids in workspace and check if their parent Model is not a player character
- for _, humanoid in ipairs(workspace:GetDescendants()) do
- if humanoid:IsA("Humanoid") then
- local model = humanoid.Parent
- if model and model:IsA("Model") then
- local isPlayer = false
- for _, player in ipairs(game.Players:GetPlayers()) do
- if player.Character == model then
- isPlayer = true
- break
- end
- end
- if not isPlayer then
- table.insert(ScannedNPCs, model)
- end
- end
- end
- end
- UpdateNPCList()
- if NPCDropdown then
- NPCDropdown:Refresh(NPCList)
- end
- end
- local function BringNPCs()
- local targetPos = GetBringPosition()
- if not targetPos then return end
- local playerPos = game.Players.LocalPlayer.Character.HumanoidRootPart.Position
- for _, npc in ipairs(ScannedNPCs) do
- -- Improved bringing: Check for HumanoidRootPart, RootPart, or primary part
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root then
- local dist = (playerPos - root.Position).Magnitude
- if dist <= BringRange then
- root.CFrame = CFrame.new(targetPos)
- end
- end
- end
- end
- local function KillNPCs()
- for _, npc in ipairs(ScannedNPCs) do
- local humanoid = npc:FindFirstChild("Humanoid")
- if humanoid and humanoid.Health > 0 then
- humanoid.Health = 0 -- Changed to direct health set for instant death
- end
- end
- end
- local function EnableKillAura()
- if KillAuraEnabled then
- KillAuraConnection = game:GetService("RunService").Heartbeat:Connect(function()
- local char = game.Players.LocalPlayer.Character
- if char and char:FindFirstChild("HumanoidRootPart") then
- local pos = char.HumanoidRootPart.Position
- for _, npc in ipairs(ScannedNPCs) do
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root and (pos - root.Position).Magnitude <= KillAuraRange then
- local hum = npc:FindFirstChild("Humanoid")
- if hum and hum.Health > 0 then
- hum.Health = 0
- end
- end
- end
- end
- end)
- else
- if KillAuraConnection then KillAuraConnection:Disconnect() end
- end
- end
- local function EnableAutoBringNPCs()
- if AutoBringNPCsEnabled then
- AutoBringNPCsConnection = game:GetService("RunService").Heartbeat:Connect(BringNPCs)
- else
- if AutoBringNPCsConnection then AutoBringNPCsConnection:Disconnect() end
- end
- end
- local function EnableESPNPCs()
- if ESPNPCsEnabled then
- for _, npc in ipairs(ScannedNPCs) do
- if not ESPConnections[npc] then
- local billboard = Instance.new("BillboardGui")
- billboard.Adornee = npc:FindFirstChild("Head") or npc:FindFirstChild("HumanoidRootPart") or npc.PrimaryPart
- billboard.Size = UDim2.new(0, 100, 0, 100)
- billboard.StudsOffset = Vector3.new(0, 2, 0)
- billboard.AlwaysOnTop = true
- billboard.Parent = game.CoreGui
- local label = Instance.new("TextLabel", billboard)
- label.Text = npc.Name .. " (NPC)"
- label.Size = UDim2.new(1,0,1,0)
- label.BackgroundTransparency = 1
- label.TextColor3 = Color3.new(1,0,0)
- label.TextScaled = true
- ESPConnections[npc] = billboard
- end
- end
- else
- for _, gui in pairs(ESPConnections) do gui:Destroy() end
- ESPConnections = {}
- end
- end
- local function TeleportToNPC(npcName)
- local localPlayer = game.Players.LocalPlayer
- local localChar = localPlayer.Character
- if not localChar or not localChar:FindFirstChild("HumanoidRootPart") then return end
- for _, npc in ipairs(ScannedNPCs) do
- if npc.Name == npcName then
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root then
- local tweenInfo = TweenInfo.new(TweenDuration, Enum.EasingStyle.Linear)
- local goal = {CFrame = root.CFrame * CFrame.new(0, 0, -2)}
- local tween = TweenService:Create(localChar.HumanoidRootPart, tweenInfo, goal)
- tween:Play()
- end
- break
- end
- end
- end
- -- Added Freeze Aura
- local FreezeAuraEnabled = false
- local FreezeAuraRange = 10
- local FreezeAuraConnection
- local function EnableFreezeAura()
- if FreezeAuraEnabled then
- FreezeAuraConnection = game:GetService("RunService").Heartbeat:Connect(function()
- local char = game.Players.LocalPlayer.Character
- if char and char:FindFirstChild("HumanoidRootPart") then
- local pos = char.HumanoidRootPart.Position
- for _, npc in ipairs(ScannedNPCs) do
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root and root:IsA("BasePart") then
- local dist = (pos - root.Position).Magnitude
- if dist <= FreezeAuraRange then
- root.Anchored = true
- else
- root.Anchored = false
- end
- end
- end
- end
- end)
- else
- if FreezeAuraConnection then FreezeAuraConnection:Disconnect() end
- -- Unanchor all NPCs when disabled
- for _, npc in ipairs(ScannedNPCs) do
- local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") or npc.PrimaryPart
- if root and root:IsA("BasePart") then
- root.Anchored = false
- end
- end
- end
- end
- -- NPC Controls
- NPCTab:CreateButton({
- Name = "Scan NPCs",
- Callback = function()
- ScanNPCs()
- end
- })
- NPCTab:CreateToggle({
- Name = "Auto Scan NPCs",
- CurrentValue = false,
- Callback = function(Value)
- AutoScanNPCsEnabled = Value
- if Value then
- coroutine.wrap(function()
- while AutoScanNPCsEnabled do
- ScanNPCs()
- UpdateNPCList()
- if NPCDropdown then NPCDropdown:Refresh(NPCList) end
- wait(AutoScanInterval)
- end
- end)()
- end
- end,
- })
- NPCTab:CreateInput({
- Name = "Auto Scan Interval (sec)",
- PlaceholderText = "Enter seconds (1 - 30)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- AutoScanInterval = math.clamp(num, 1, 30)
- end
- end,
- })
- NPCTab:CreateInput({
- Name = "Bring Range (studs)",
- PlaceholderText = "Enter range (20 - 100)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- BringRange = math.clamp(num, 20, 100)
- end
- end,
- })
- NPCTab:CreateButton({
- Name = "Bring Nearby NPCs",
- Callback = BringNPCs
- })
- NPCTab:CreateToggle({
- Name = "Auto Bring Nearby NPCs",
- CurrentValue = false,
- Callback = function(Value)
- AutoBringNPCsEnabled = Value
- EnableAutoBringNPCs()
- end,
- })
- NPCTab:CreateButton({
- Name = "Kill All NPCs",
- Callback = KillNPCs
- })
- -- NEW BUTTON: Load FE NPC Script
- NPCTab:CreateButton({
- Name = "Load FE NPC Script",
- Callback = function()
- loadstring(game:HttpGet("https://raw.githubusercontent.com/randomstring0/fe-source/refs/heads/main/NPC/source/main.Luau"))()
- end
- })
- NPCTab:CreateToggle({
- Name = "Kill Aura NPCs",
- CurrentValue = false,
- Callback = function(Value)
- KillAuraEnabled = Value
- EnableKillAura()
- end,
- })
- NPCTab:CreateInput({
- Name = "Kill Aura Range",
- PlaceholderText = "Enter range (5 - 50)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- KillAuraRange = math.clamp(num, 5, 50)
- end
- end,
- })
- NPCTab:CreateToggle({
- Name = "Freeze Aura NPCs",
- CurrentValue = false,
- Callback = function(Value)
- FreezeAuraEnabled = Value
- EnableFreezeAura()
- end,
- })
- NPCTab:CreateInput({
- Name = "Freeze Aura Range",
- PlaceholderText = "Enter range (5 - 50)",
- RemoveTextAfterFocusLost = false,
- Callback = function(Text)
- local num = tonumber(Text)
- if num then
- FreezeAuraRange = math.clamp(num, 5, 50)
- end
- end,
- })
- NPCTab:CreateToggle({
- Name = "ESP NPCs",
- CurrentValue = false,
- Callback = function(Value)
- ESPNPCsEnabled = Value
- EnableESPNPCs()
- end,
- })
- coroutine.wrap(function()
- while wait(1) do
- if ESPNPCsEnabled then EnableESPNPCs() end
- end
- end)()
- local NPCDropdown = NPCTab:CreateDropdown({
- Name = "Select NPC",
- Options = NPCList,
- CurrentOption = {},
- Callback = function(Option) SelectedNPC = Option[1] end,
- })
- NPCTab:CreateButton({
- Name = "Teleport to Selected NPC",
- Callback = function()
- if SelectedNPC then TeleportToNPC(SelectedNPC) end
- end,
- })
- local autoSwingEnabled = false
- local swingSpeed = 0.01 -- Default speed in seconds (adjustable)
- local autoShovelEnabled = false
- local autoExcaliburEnabled = false
- local enlargeEnabled = false
- local hitboxSize = 10
- local connections = {}
- local function isZombie(obj)
- return obj:IsA("Model") and obj:FindFirstChild("Humanoid") and obj:FindFirstChild("HumanoidRootPart") and string.find(obj.Name:lower(), "zombie")
- end
- local Toggle = MainTab:CreateToggle({
- Name = "Auto Swing Melee",
- CurrentValue = false,
- Flag = "AutoSwingToggle",
- Callback = function(Value)
- autoSwingEnabled = Value
- if autoSwingEnabled then
- spawn(function()
- while autoSwingEnabled do
- local args = {
- game:GetService("Players").LocalPlayer.Character:WaitForChild("Vampire Knife"),
- os.clock() * 1000, -- Using current time as approximation; adjust if needed
- Vector3.new(0.38748157024383545, -0.469262033700943, 0.7935056090354919)
- }
- game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Universe"):WaitForChild("Network"):WaitForChild("RemoteEvent"):WaitForChild("SwingMelee"):FireServer(unpack(args))
- wait(swingSpeed)
- end
- end)
- end
- end,
- })
- local Slider = MainTab:CreateSlider({
- Name = "Swing Speed (seconds)",
- Range = {0.01, 1.0},
- Increment = 0.01,
- Suffix = "s",
- CurrentValue = 0.01,
- Flag = "SwingSpeedSlider",
- Callback = function(Value)
- swingSpeed = Value
- end,
- })
- local ShovelToggle = MainTab:CreateToggle({
- Name = "Auto Shovel",
- CurrentValue = false,
- Flag = "AutoShovelToggle",
- Callback = function(Value)
- autoShovelEnabled = Value
- if autoShovelEnabled then
- spawn(function()
- while autoShovelEnabled do
- local args = {
- game:GetService("Players").LocalPlayer.Character:WaitForChild("Shovel"),
- 1768150910.657773,
- Vector3.new(-0.8638443350791931, -0.3981878459453583, -0.3085765242576599)
- }
- game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Universe"):WaitForChild("Network"):WaitForChild("RemoteEvent"):WaitForChild("SwingMelee"):FireServer(unpack(args))
- task.wait(0.01)
- end
- end)
- spawn(function()
- while autoShovelEnabled do
- local args = {
- game:GetService("Players").LocalPlayer.Character:WaitForChild("Shovel"),
- 1768150909.257726
- }
- game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Universe"):WaitForChild("Network"):WaitForChild("RemoteEvent"):WaitForChild("ChargeMelee"):FireServer(unpack(args))
- task.wait(0.01)
- end
- end)
- end
- end,
- })
- local ExcaliburToggle = MainTab:CreateToggle({
- Name = "Auto Excalibur",
- CurrentValue = false,
- Flag = "AutoExcaliburToggle",
- Callback = function(Value)
- autoExcaliburEnabled = Value
- if autoExcaliburEnabled then
- spawn(function()
- while autoExcaliburEnabled do
- local args = {
- game:GetService("Players").LocalPlayer.Character:WaitForChild("Excalibur"),
- 1768326712.974426
- }
- game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Universe"):WaitForChild("Network"):WaitForChild("RemoteEvent"):WaitForChild("ChargeMelee"):FireServer(unpack(args))
- task.wait(0.01)
- end
- end)
- spawn(function()
- while autoExcaliburEnabled do
- local args = {
- game:GetService("Players").LocalPlayer.Character:WaitForChild("Excalibur"),
- 1768326713.962643,
- Vector3.new(0.6278625130653381, -0.5555389523506165, 0.5451285243034363)
- }
- game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Universe"):WaitForChild("Network"):WaitForChild("RemoteEvent"):WaitForChild("SwingMelee"):FireServer(unpack(args))
- task.wait(0.01)
- end
- end)
- end
- end,
- })
- local Button = MainTab:CreateButton({
- Name = "Teleport to Presidential Conductor Seat",
- Callback = function()
- local player = game:GetService("Players").LocalPlayer
- local character = player.Character or player.CharacterAdded:Wait()
- local humanoid = character:WaitForChild("Humanoid")
- local root = character:WaitForChild("HumanoidRootPart")
- local train = workspace:FindFirstChild("presidential")
- if not train then
- Rayfield:Notify({
- Title = "Searching",
- Content = "Looking for presidential train...",
- Duration = 30,
- Image = 4483362458
- })
- local start = tick()
- while not train and tick() - start < 30 do
- task.wait(1)
- train = workspace:FindFirstChild("presidential")
- end
- if not train then
- Rayfield:Notify({
- Title = "Error",
- Content = "Presidential train not found after 30 seconds.",
- Duration = 5,
- Image = 4483362458
- })
- return
- end
- end
- local seatPath = train:WaitForChild("RequiredComponents"):WaitForChild("Controls"):WaitForChild("ConductorSeat"):WaitForChild("VehicleSeat")
- root.CFrame = seatPath.CFrame + Vector3.new(0, 3, 0) -- Teleport slightly above the seat
- wait(0.1) -- Small delay to ensure positioning
- humanoid:Sit(seatPath) -- Attempt to sit on the seat
- end,
- })
- local DefaultButton = MainTab:CreateButton({
- Name = "Teleport to Default Train Conductor Seat",
- Callback = function()
- local player = game:GetService("Players").LocalPlayer
- local character = player.Character or player.CharacterAdded:Wait()
- local humanoid = character:WaitForChild("Humanoid")
- local root = character:WaitForChild("HumanoidRootPart")
- local train = workspace:FindFirstChild("default")
- if not train then
- Rayfield:Notify({
- Title = "Searching",
- Content = "Looking for default train...",
- Duration = 30,
- Image = 4483362458
- })
- local start = tick()
- while not train and tick() - start < 30 do
- task.wait(1)
- train = workspace:FindFirstChild("default")
- end
- if not train then
- Rayfield:Notify({
- Title = "Error",
- Content = "Default train not found after 30 seconds.",
- Duration = 5,
- Image = 4483362458
- })
- return
- end
- end
- local seatPath = train:WaitForChild("RequiredComponents"):WaitForChild("Controls"):WaitForChild("ConductorSeat"):WaitForChild("VehicleSeat")
- root.CFrame = seatPath.CFrame + Vector3.new(0, 3, 0) -- Teleport slightly above the seat
- wait(0.1) -- Small delay to ensure positioning
- humanoid:Sit(seatPath) -- Attempt to sit on the seat
- end,
- })
- local GhostButton = MainTab:CreateButton({
- Name = "Teleport to Ghost Train Conductor Seat",
- Callback = function()
- local player = game:GetService("Players").LocalPlayer
- local character = player.Character or player.CharacterAdded:Wait()
- local humanoid = character:WaitForChild("Humanoid")
- local root = character:WaitForChild("HumanoidRootPart")
- local train = workspace:FindFirstChild("ghost")
- if not train then
- Rayfield:Notify({
- Title = "Searching",
- Content = "Looking for ghost train...",
- Duration = 30,
- Image = 4483362458
- })
- local start = tick()
- while not train and tick() - start < 30 do
- task.wait(1)
- train = workspace:FindFirstChild("ghost")
- end
- if not train then
- Rayfield:Notify({
- Title = "Error",
- Content = "Ghost train not found after 30 seconds.",
- Duration = 5,
- Image = 4483362458
- })
- return
- end
- end
- local seatPath = train:WaitForChild("RequiredComponents"):WaitForChild("Controls"):WaitForChild("ConductorSeat"):WaitForChild("VehicleSeat")
- root.CFrame = seatPath.CFrame + Vector3.new(0, 3, 0) -- Teleport slightly above the seat
- wait(0.1) -- Small delay to ensure positioning
- humanoid:Sit(seatPath) -- Attempt to sit on the seat
- end,
- })
- local DraculaButton = MainTab:CreateButton({
- Name = "Teleport to Dracula Train Conductor Seat",
- Callback = function()
- local player = game:GetService("Players").LocalPlayer
- local character = player.Character or player.CharacterAdded:Wait()
- local humanoid = character:WaitForChild("Humanoid")
- local root = character:WaitForChild("HumanoidRootPart")
- local train = workspace:FindFirstChild("dracula")
- if not train then
- Rayfield:Notify({
- Title = "Searching",
- Content = "Looking for dracula train...",
- Duration = 30,
- Image = 4483362458
- })
- local start = tick()
- while not train and tick() - start < 30 do
- task.wait(1)
- train = workspace:FindFirstChild("dracula")
- end
- if not train then
- Rayfield:Notify({
- Title = "Error",
- Content = "Dracula train not found after 30 seconds.",
- Duration = 5,
- Image = 4483362458
- })
- return
- end
- end
- local seatPath = train:WaitForChild("RequiredComponents"):WaitForChild("Controls"):WaitForChild("ConductorSeat"):WaitForChild("VehicleSeat")
- root.CFrame = seatPath.CFrame + Vector3.new(0, 3, 0) -- Teleport slightly above the seat
- wait(0.1) -- Small delay to ensure positioning
- humanoid:Sit(seatPath) -- Attempt to sit on the seat
- end,
- })
- local SliderHitbox = MainTab:CreateSlider({
- Name = "Hitbox Size",
- Range = {1, 50},
- Increment = 1,
- Suffix = "studs",
- CurrentValue = 10,
- Flag = "HitboxSizeSlider",
- Callback = function(Value)
- hitboxSize = Value
- end,
- })
- local ToggleEnlarge = MainTab:CreateToggle({
- Name = "Enlarge Zombie Hitboxes",
- CurrentValue = false,
- Flag = "EnlargeHitboxToggle",
- Callback = function(Value)
- enlargeEnabled = Value
- if enlargeEnabled then
- for _, obj in ipairs(workspace:GetChildren()) do
- if isZombie(obj) then
- obj.HumanoidRootPart.Size = Vector3.new(hitboxSize, hitboxSize, hitboxSize / 2)
- obj.HumanoidRootPart.Transparency = 0.5
- end
- end
- local conn = workspace.ChildAdded:Connect(function(child)
- if enlargeEnabled and isZombie(child) then
- task.wait(0.1)
- if child:FindFirstChild("HumanoidRootPart") then
- child.HumanoidRootPart.Size = Vector3.new(hitboxSize, hitboxSize, hitboxSize / 2)
- child.HumanoidRootPart.Transparency = 0.5
- end
- end
- end)
- table.insert(connections, conn)
- else
- for _, obj in ipairs(workspace:GetChildren()) do
- if isZombie(obj) then
- obj.HumanoidRootPart.Size = Vector3.new(2, 2, 1)
- obj.HumanoidRootPart.Transparency = 0
- end
- end
- for _, conn in ipairs(connections) do
- conn:Disconnect()
- end
- connections = {}
- end
- end,
- })
- -- Vampire knife charge loop (always on)
- while task.wait(0.01) do
- local args = {
- game:GetService("Players").LocalPlayer.Character:WaitForChild("Vampire Knife"),
- 1768151606.210378
- }
- game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Universe"):WaitForChild("Network"):WaitForChild("RemoteEvent"):WaitForChild("ChargeMelee"):FireServer(unpack(args))
- end
Advertisement
Add Comment
Please, Sign In to add comment