local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Window = Rayfield:CreateWindow({ Name = "Artful Scripts", Icon = 0, LoadingTitle = "Artful Scripts", LoadingSubtitle = "by Noll Holeday", Theme = "Default", DisableRayfieldPrompts = false, DisableBuildWarnings = false, ConfigurationSaving = { Enabled = true, FolderName = nil, FileName = "ArmlessDetective" }, Discord = { Enabled = true, Invite = "WcyKFx99rH", RememberJoins = true }, KeySystem = true, KeySettings = { Title = "Key System", Subtitle = "Key is in the Discord server", Note = "Join Discord to get the key!", FileName = "ArmlessKey", SaveKey = false, GrabKeyFromSite = false, Key = {"Armless Detectiveing"} } }) ---------------------------------------------------- -- CREDITS TAB ---------------------------------------------------- local CreditsTab = Window:CreateTab("Credits", nil) CreditsTab:CreateSection("Owner") CreditsTab:CreateLabel("Noll Holeday") CreditsTab:CreateSection("Discord") CreditsTab:CreateButton({ Name = "Copy Discord Link", Callback = function() local DiscordLink = "https://discord.gg/WcyKFx99rH" if setclipboard then setclipboard(DiscordLink) Rayfield:Notify({Title = "✅ Copied!", Content = "Discord link copied", Duration = 4}) end end, }) ---------------------------------------------------- -- PLAYER TAB ---------------------------------------------------- local PlayerTab = Window:CreateTab("Player", nil) PlayerTab:CreateSection("Movement") local WalkSpeedValue = 16 PlayerTab:CreateSlider({ Name = "Walkspeed", Range = {0, 500}, Increment = 1, Suffix = "Speed", CurrentValue = 16, Flag = "WalkSpeedSlider", Callback = function(Value) WalkSpeedValue = Value end, }) local JumpEnabled = false PlayerTab:CreateToggle({ Name = "Enable Jump", CurrentValue = false, Callback = function(v) JumpEnabled = v end, }) local FlyEnabled = false local FlySpeed = 50 local BodyVelocity = nil local BodyGyro = nil PlayerTab:CreateToggle({ Name = "Enable Fly", CurrentValue = false, Callback = function(v) FlyEnabled = v end, }) PlayerTab:CreateSlider({ Name = "Fly Speed", Range = {10, 200}, Increment = 5, Suffix = "Speed", CurrentValue = 50, Flag = "FlySpeedSlider", Callback = function(Value) FlySpeed = Value end, }) local NoclipEnabled = false PlayerTab:CreateToggle({ Name = "Noclip", CurrentValue = false, Callback = function(v) NoclipEnabled = v end, }) -- Movement Loops game:GetService("RunService").Heartbeat:Connect(function() local char = game.Players.LocalPlayer.Character if not char then return end local root = char:FindFirstChild("HumanoidRootPart") local hum = char:FindFirstChildOfClass("Humanoid") if not root or not hum then return end hum.WalkSpeed = WalkSpeedValue if JumpEnabled then hum.JumpPower = 50 end if FlyEnabled and BodyVelocity and BodyGyro then local cam = workspace.CurrentCamera local moveDirection = Vector3.new() local uis = game:GetService("UserInputService") if uis:IsKeyDown(Enum.KeyCode.W) then moveDirection += cam.CFrame.LookVector end if uis:IsKeyDown(Enum.KeyCode.S) then moveDirection -= cam.CFrame.LookVector end if uis:IsKeyDown(Enum.KeyCode.A) then moveDirection -= cam.CFrame.RightVector end if uis:IsKeyDown(Enum.KeyCode.D) then moveDirection += cam.CFrame.RightVector end if uis:IsKeyDown(Enum.KeyCode.Space) then moveDirection += Vector3.new(0,1,0) end if uis:IsKeyDown(Enum.KeyCode.LeftShift) then moveDirection -= Vector3.new(0,1,0) end BodyVelocity.Velocity = moveDirection.Unit * FlySpeed BodyGyro.CFrame = cam.CFrame end end) game:GetService("RunService").Stepped:Connect(function() if NoclipEnabled then local char = game.Players.LocalPlayer.Character if char then for _, part in pairs(char:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end end) ---------------------------------------------------- -- PREMIUM SECTION ---------------------------------------------------- PlayerTab:CreateSection("Premium Section") PlayerTab:CreateButton({ Name = "Copy Gamepass Link", Callback = function() local GamepassLink = "https://www.roblox.com/game-pass/YOUR_GAMEPASS_ID_HERE" if setclipboard then setclipboard(GamepassLink) Rayfield:Notify({Title = "✅ Copied!", Content = "Gamepass link copied", Duration = 4}) end end, }) ---------------------------------------------------- -- MAPS TAB ---------------------------------------------------- local MapsTab = Window:CreateTab("Maps", nil) MapsTab:CreateSection("Motel Massacre") -- ESP Variables local TixESP = false local FingerprintsESP = false local FoodESP = false local HairESP = false local ThermostatESP = false -- Clean ESP Function (Small text, No Emojis) local function createESP(obj, color, labelText) if not obj or obj:FindFirstChild("ArtfulESP") then return end local highlight = Instance.new("Highlight") highlight.Name = "ArtfulESP" highlight.FillColor = color highlight.OutlineColor = color highlight.FillTransparency = 0.5 highlight.Parent = obj local billboard = Instance.new("BillboardGui") billboard.Name = "ArtfulESP" billboard.Adornee = obj:FindFirstChildWhichIsA("BasePart") or obj billboard.Size = UDim2.new(0, 160, 0, 45) billboard.StudsOffset = Vector3.new(0, 3.5, 0) billboard.AlwaysOnTop = true billboard.Parent = obj local text = Instance.new("TextLabel") text.Size = UDim2.new(1, 0, 1, 0) text.BackgroundTransparency = 1 text.Text = labelText text.TextColor3 = color text.TextScaled = true text.Font = Enum.Font.GothamSemibold text.TextSize = 14 -- Smaller text text.Parent = billboard end local function removeESP() for _, v in ipairs(workspace:GetDescendants()) do if v:FindFirstChild("ArtfulESP") then v.ArtfulESP:Destroy() end end end local function getMotelRoom() local paths = {workspace:FindFirstChild("Map"), workspace:FindFirstChild("Live") and workspace.Live:FindFirstChild("Map")} for _, c in ipairs(paths) do if c then local room = c:FindFirstChild("MotelRoom") or c:FindFirstChild("Motel") or c:FindFirstChild("Room") or c if room then return room end end end return nil end local function getThermostatText(obj) for _, child in ipairs(obj:GetDescendants()) do if child:IsA("TextLabel") or child:IsA("TextBox") then local t = child.Text if t:match("%d+") then return t end end end return "Thermostat" end -- Toggles MapsTab:CreateToggle({Name = "Tix ESP", CurrentValue = false, Callback = function(v) TixESP = v end}) MapsTab:CreateToggle({Name = "Fingerprints ESP", CurrentValue = false, Callback = function(v) FingerprintsESP = v end}) MapsTab:CreateToggle({Name = "Food ESP", CurrentValue = false, Callback = function(v) FoodESP = v end}) MapsTab:CreateToggle({Name = "Hair ESP", CurrentValue = false, Callback = function(v) HairESP = v end}) MapsTab:CreateToggle({Name = "Thermostat ESP", CurrentValue = false, Callback = function(v) ThermostatESP = v end}) -- ESP Loop task.spawn(function() while true do task.wait(1) removeESP() local motelRoom = getMotelRoom() if not motelRoom then continue end for _, obj in ipairs(motelRoom:GetDescendants()) do local nameLower = obj.Name:lower() if TixESP and (nameLower:find("tix") or nameLower:find("fix") or nameLower:find("robux") or nameLower:find("coin") or nameLower:find("cash")) then createESP(obj, Color3.fromRGB(255, 215, 0), "Currency") end if FingerprintsESP and (nameLower:find("fingerprint") or nameLower:find("print") or nameLower:find("blacklight")) then createESP(obj, Color3.fromRGB(255, 100, 100), "Fingerprints") end if FoodESP and (nameLower:find("food") or nameLower:find("burger") or nameLower:find("pizza") or nameLower:find("cake") or nameLower:find("snack")) then createESP(obj, Color3.fromRGB(0, 255, 150), "Food") end if HairESP and (nameLower:find("hair") or nameLower:find("wig") or nameLower:find("hairstyle")) then createESP(obj, Color3.fromRGB(255, 100, 200), "Hair") end if ThermostatESP and (nameLower:find("thermostat") or nameLower:find("temp") or nameLower:find("heat") or nameLower:find("thermometer")) then local displayText = getThermostatText(obj) createESP(obj, Color3.fromRGB(255, 165, 0), displayText) end end end end) Rayfield:Notify({ Title = "Artful Scripts", Content = "Loaded - Welcome to Artful Hub! :D", Duration = 6 })