--// Rayfield Init
local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()

local Window = Rayfield:CreateWindow({
   Name = "🔥Villainhub🔫",
   LoadingTitle = "🔫villainhub script 💥",
   LoadingSubtitle = "by villain",
   ConfigurationSaving = {
      Enabled = false,
      FolderName = nil,
      FileName = "Example Hub"
   },
   Discord = {
      Enabled = false,
      Invite = "https://[Log in to view URL]",
      RememberJoins = true
   },
   KeySystem = false
})

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer

-------------------------------------------------------------------
-- 🔐 SAFE VALIDATION CHECK SYSTEM (YOU CONTROL THE RESULTS HERE)
-------------------------------------------------------------------

-- 👇 You must replace this with your OWN Luarmor key/blacklist check.
-- Pull the result from your backend, then set this value:
local validation = "success"
-- options: "success", "expired", "blacklisted", "invalid"

local function KickUser(reason)
    task.wait(0.2)
    localPlayer:Kick(reason)
end

if validation == "expired" then
    KickUser("Your key has expired. Get a new one at villainhub.")
    return
elseif validation == "blacklisted" then
    KickUser("You are blacklisted from Villainhub.")
    return
elseif validation == "invalid" then
    KickUser("Invalid key.")
    return
end

-------------------------------------------------------------------
-- 🔐 END VALIDATION SYSTEM
-------------------------------------------------------------------

-- MAIN TAB
local MainTab = Window:CreateTab("🏠 Home", nil)

Rayfield:Notify({
   Title = "You executed the script",
   Content = "Very cool gui",
   Duration = 5,
   Image = 13047715178,
   Actions = {
      Ignore = {
         Name = "Okay!",
         Callback = function()
            print("The user tapped Okay!")
         end
      },
   },
})

-- Infinite Jump Button
MainTab:CreateButton({
   Name = "Infinite Jump Toggle",
   Callback = function()
       _G.infinjump = not _G.infinjump
       if _G.infinJumpStarted == nil then
           _G.infinJumpStarted = true
           game.StarterGui:SetCore("SendNotification", {Title="Youtube Hub"; Text="Infinite Jump Activated!"; Duration=5;})
           local plr = Players.LocalPlayer
           local m = plr:GetMouse()
           m.KeyDown:Connect(function(k)
               if _G.infinjump and k:byte() == 32 then
                   local humanoid = plr.Character:FindFirstChildOfClass('Humanoid')
                   if humanoid then
                       humanoid:ChangeState('Jumping')
                       task.wait()
                       humanoid:ChangeState('Seated')
                   end
               end
           end)
       end
   end,
})

-- WalkSpeed Slider
MainTab:CreateSlider({
   Name = "WalkSpeed Slider",
   Range = {1, 20},
   Increment = 1,
   Suffix = "Speed",
   CurrentValue = 16,
   Flag = "sliderws",
   Callback = function(Value)
        Players.LocalPlayer.Character.Humanoid.WalkSpeed = Value
   end,
})

-- JumpPower Slider
MainTab:CreateSlider({
   Name = "JumpPower Slider",
   Range = {1, 350},
   Increment = 1,
   Suffix = "Jump",
   CurrentValue = 16,
   Flag = "sliderjp",
   Callback = function(Value)
        Players.LocalPlayer.Character.Humanoid.JumpPower = Value
   end,
})

-- Area Dropdown
MainTab:CreateDropdown({
   Name = "Select Area",
   Options = {"Starter World","Pirate Island","Pineapple Paradise"},
   CurrentOption = {"Starter World"},
   MultipleOptions = false,
   Flag = "dropdownarea",
   Callback = function(Option)
        print(Option)
   end,
})

-- Walkspeed Input
MainTab:CreateInput({
   Name = "Walkspeed",
   PlaceholderText = "1-500",
   RemoveTextAfterFocusLost = true,
   Callback = function(Text)
        Players.LocalPlayer.Character.Humanoid.WalkSpeed = tonumber(Text)
   end,
})

-------------------------------------------------------------------
-- TELEPORT TAB
-------------------------------------------------------------------

local TPTab = Window:CreateTab("🏝 Teleports", nil)

TPTab:CreateButton({Name = "marsh mello seller", Callback = function() end})
TPTab:CreateButton({Name = "bank", Callback = function() end})
TPTab:CreateButton({Name = "casino", Callback = function() end})

-------------------------------------------------------------------
-- MISC TAB
-------------------------------------------------------------------

local MiscTab = Window:CreateTab("🎲 Misc", nil)
local RunService = game:GetService("RunService")

-- Autofarm
MiscTab:CreateToggle({
    Name = "Autofarm",
    CurrentValue = false,
    Flag = "Toggle1",
    Callback = function(Value)
        print('Autofarm toggled:', Value)
    end,
})

-- Noclip
local noclip = false
MiscTab:CreateToggle({
    Name = "Noclip",
    CurrentValue = false,
    Flag = "noclipToggle",
    Callback = function(Value)
        noclip = Value
    end,
})

RunService.Stepped:Connect(function()
    local char = localPlayer.Character
    if char then
        for _, part in pairs(char:GetChildren()) do
            if part:IsA("BasePart") then
                part.CanCollide = not noclip
            end
        end
    end
end)

localPlayer.CharacterAdded:Connect(function(char)
    task.wait(0.1)
    for _, part in pairs(char:GetChildren()) do
        if part:IsA("BasePart") then
            part.CanCollide = not noclip
        end
    end
end)

-- ESP
local espEnabled = false
local highlights = {}

MiscTab:CreateToggle({
    Name = "ESP",
    CurrentValue = false,
    Flag = "ESPtoggle",
    Callback = function(Value)
        espEnabled = Value
        if not espEnabled then
            for _, hl in pairs(highlights) do
                if hl and hl.Parent then
                    hl:Destroy()
                end
            end
            highlights = {}
        else
            for _, player in pairs(Players:GetPlayers()) do
                local char = player.Character
                if char and not highlights[char] then
                    local hl = Instance.new("Highlight")
                    hl.FillColor = Color3.fromRGB(0,255,0)
                    hl.OutlineColor = Color3.fromRGB(255,255,255)
                    hl.Parent = char
                    highlights[char] = hl
                end
            end
        end
    end,
})

Players.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function(char)
        if espEnabled then
            local hl = Instance.new("Highlight")
            hl.FillColor = Color3.fromRGB(0,255,0)
            hl.OutlineColor = Color3.fromRGB(255,255,255)
            hl.Parent = char
            highlights[char] = hl
        end
    end)
end)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: