local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local HttpService = game:GetService("HttpService")
local TeleportService = game:GetService("TeleportService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

-- [ UI LIBRARY SETUP ]
local Library = loadstring(game:HttpGetAsync("https://[Log in to view URL]"))()

local Window = Library:Window({
    Title = "NWR's Hub | SCP: Roleplay",
    SubTitle = "by whoisnwr",
    TabWidth = 160, 
    Size = UDim2.fromOffset(580, 520),
    Acrylic = true, 
    Theme = "Darker",
})

local Tabs = { 
    Main = Window:AddTab({ Title = "Main System", Icon = "target" }),
    Teleports = Window:AddTab({ Title = "Teleports", Icon = "map-pin" }),
    Player = Window:AddTab({ Title = "Player", Icon = "user" }),
    Settings = Window:AddTab({ Title = "Settings", Icon = "settings" })
}

local TweenService = game:GetService("TweenService")

local TweenService = game:GetService("TweenService")

-- [ TELEPORT HELPER - LEGIT SIMULATION ]
local function teleportTo(x, y, z)
    local char = LocalPlayer.Character
    local root = char and char:FindFirstChild("HumanoidRootPart")
    local hum = char and char:FindFirstChild("Humanoid")
    
    if root and hum then
        local targetPos = Vector3.new(x, y + 3, z)
        local distance = (root.Position - targetPos).Magnitude
        
        -- Speed: 60-80 is usually the "safe" limit for most SCP anticheats
        local travelSpeed = 70 
        local duration = distance / travelSpeed
        
        -- 1. Disable collisions to pass through walls
        for _, part in pairs(char:GetDescendants()) do
            if part:IsA("BasePart") then part.CanCollide = false end
        end

        -- 2. Fake the state so the server thinks you're walking
        hum:ChangeState(Enum.HumanoidStateType.Running)
        
        -- 3. Create the Tween
        local tweenInfo = TweenInfo.new(duration, Enum.EasingStyle.Linear)
        local tween = TweenService:Create(root, tweenInfo, {CFrame = CFrame.new(targetPos)})
        
        -- 4. Apply a fake velocity while tweening to satisfy the server's check
        local connection
        connection = game:GetService("RunService").Heartbeat:Connect(function()
            if tween.PlaybackState == Enum.PlaybackState.Playing then
                root.AssemblyLinearVelocity = (targetPos - root.Position).Unit * travelSpeed
            else
                connection:Disconnect()
            end
        end)

        tween:Play()
        
        tween.Completed:Connect(function()
            root.AssemblyLinearVelocity = Vector3.new(0,0,0)
            for _, part in pairs(char:GetDescendants()) do
                if part:IsA("BasePart") then part.CanCollide = true end
            end
            
            Library:Notify({
                Title = "Arrived",
                Content = "Teleport completed via Stealth-Glide.",
                Duration = 3
            })
        end)
    end
end

-- [ PLAYER TAB CONTENT ]
Tabs.Player:AddSection("Visuals")

local highlightName = "NWR_Highlight"
local highlightEnabled = false

local function applyHighlight(player)
    if player == LocalPlayer then return end
    
    local function createHL(character)
        if highlightEnabled and not character:FindFirstChild(highlightName) then
            local hl = Instance.new("Highlight")
            hl.Name = highlightName
            hl.FillColor = Color3.fromRGB(255, 0, 0)
            hl.OutlineColor = Color3.fromRGB(255, 255, 255)
            hl.FillOpacity = 0.5
            hl.Parent = character
        end
    end

    player.CharacterAdded:Connect(createHL)
    if player.Character then createHL(player.Character) end
end

Tabs.Player:AddToggle("PlayerHighlight", {
    Title = "Player Highlights (Red)", 
    Default = false,
    Callback = function(Value)
        highlightEnabled = Value
        if highlightEnabled then
            for _, player in pairs(Players:GetPlayers()) do
                applyHighlight(player)
            end
        else
            for _, player in pairs(Players:GetPlayers()) do
                if player.Character and player.Character:FindFirstChild(highlightName) then
                    player.Character[highlightName]:Destroy()
                end
            end
        end
    end
})

Players.PlayerAdded:Connect(applyHighlight)
-- [ TELEPORTS TAB ]
Tabs.Teleports:AddSection("Foundation Locations")

Tabs.Teleports:AddButton({
    Title = "O5 Office",
    Description = "Teleport to the O5 Command Suite",
    Callback = function() teleportTo(107.14, 2.69, 235.58) end
})

Tabs.Teleports:AddButton({
    Title = "Control Center",
    Description = "Teleport to the Facility Control Room",
    Callback = function() teleportTo(-78.69, 23.02, 426.06) end
})

Tabs.Teleports:AddButton({
    Title = "Helipad",
    Description = "Teleport to the Surface Helipad",
    Callback = function() teleportTo(-77.97, 2.68, 850.79) end
})

Tabs.Teleports:AddSection("Class-D Areas")

Tabs.Teleports:AddButton({
    Title = "CDC Main",
    Description = "Teleport to the Class-D Cell Block Floor",
    Callback = function() teleportTo(229.12, 36.90, -187.30) end
})

Tabs.Teleports:AddButton({
    Title = "CDC Catwalk",
    Description = "Teleport to the CDC Observation Deck",
    Callback = function() teleportTo(221.17, 24.57, -260.38) end
})

Tabs.Teleports:AddSection("SCP Containment")

Tabs.Teleports:AddButton({
    Title = "SCP-173",
    Description = "The Sculpture's Containment",
    Callback = function() teleportTo(67.64, 2.69, -520.93) end
})

Tabs.Teleports:AddButton({
    Title = "SCP-049",
    Description = "The Plague Doctor's Containment",
    Callback = function() teleportTo(53.70, 2.69, -604.31) end
})

Tabs.Teleports:AddButton({
    Title = "SCP-096",
    Description = "The Shy Guy's Containment",
    Callback = function() teleportTo(171.05, 2.69, -806.93) end
})

Tabs.Teleports:AddButton({
    Title = "SCP-106",
    Description = "The Old Man's Containment",
    Callback = function() teleportTo(-348.80, -20.88, -1060.87) end
})

Tabs.Teleports:AddButton({
    Title = "SCP-457",
    Description = "The Burning Man's Containment",
    Callback = function() teleportTo(-368.40, 3.11, -917.31) end
})

Tabs.Teleports:AddButton({
    Title = "Biohazard Section",
    Description = "Teleport to the Biohazard labs",
    Callback = function() teleportTo(120.25, 2.69, -967.46) end
})

Tabs.Teleports:AddSection("Hostile Groups")

Tabs.Teleports:AddButton({
    Title = "Chaos Insurgency Spawn",
    Description = "Teleport to the CI Base",
    Callback = function() teleportTo(-123.67, 116.92, -208.54) end
})

Window:SelectTab(1)

Embed on website

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