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
})
Comments
No comments yet
Be the first to share your thoughts!