*ty waypoint script
Key RequiredUniversal

*ty waypoint script

Universal ScriptReslResl 547 views 358 executesUpdated Jan 1, 2026
Unrated
00
Lua Script•318 lines (11576 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")

local player = Players.LocalPlayer
local date = os.date("*t")

local function getHolidayMessage()
    if date.month == 1 and date.day == 22 then
        return "it's the Creator's birthday!!! yay!!!!"
    elseif date.month == 1 and date.day <= 10 then
        return "Happy New Year!"
    elseif date.month == 12 then
        return "Merry Christmas!"
    elseif date.month == 10 then
        return "Spooky Halloween month!"
    elseif date.month == 7 and date.day == 4 then
        return "Happy Independence Day!"
    else
        return "couldn't fix that billboards UI bug that makes it go lower the farther you are :I original by m3taph0r1cally on Roblox / resl on scriptblox!! :D "
    end
end

local function getHolidayGradient()
    if date.month == 1 and date.day == 22 then
        return {Color3.fromRGB(128,0,128), Color3.fromRGB(0,0,0), Color3.fromRGB(0,0,64)}
    elseif date.month == 1 and date.day <= 10 then
        return {Color3.fromRGB(0,0,255), Color3.fromRGB(255,255,255), Color3.fromRGB(255,215,0)}
    elseif date.month == 12 then
        return {Color3.fromRGB(0,128,0), Color3.fromRGB(255,0,0)}
    elseif date.month == 10 then
        return {Color3.fromRGB(0,0,0), Color3.fromRGB(255,165,0)}
    elseif date.month == 7 and date.day == 4 then
        return {Color3.fromRGB(255,0,0), Color3.fromRGB(255,255,255), Color3.fromRGB(0,0,255)}
    else
        return {Color3.fromRGB(40,40,40), Color3.fromRGB(80,80,80)}
    end
end

local gui = Instance.new("ScreenGui")
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

local notif = Instance.new("Frame")
notif.Size = UDim2.fromOffset(340,130)
notif.Position = UDim2.fromScale(0.5,-0.3)
notif.AnchorPoint = Vector2.new(0.5,0)
notif.Parent = gui
Instance.new("UICorner", notif).CornerRadius = UDim.new(0,14)

local nText = Instance.new("TextLabel")
nText.Size = UDim2.new(1,-20,0.6,0)
nText.Position = UDim2.fromOffset(10,10)
nText.BackgroundTransparency = 1
nText.TextScaled = true
nText.TextWrapped = true
nText.Font = Enum.Font.Arial
nText.TextColor3 = Color3.new(1,1,1)
nText.Text = getHolidayMessage()
nText.Parent = notif

local fuckOff = Instance.new("TextButton")
fuckOff.Size = UDim2.fromScale(0.6,0.25)
fuckOff.Position = UDim2.fromScale(0.2,0.7)
fuckOff.Text = "fuck off"
fuckOff.TextScaled = true
fuckOff.Font = Enum.Font.ArialBold
fuckOff.BackgroundColor3 = Color3.fromRGB(60,60,60)
fuckOff.TextColor3 = Color3.new(1,1,1)
fuckOff.Parent = notif
Instance.new("UICorner", fuckOff).CornerRadius = UDim.new(0,10)

TweenService:Create(notif, TweenInfo.new(0.4, Enum.EasingStyle.Back), {
    Position = UDim2.fromScale(0.5,0.05)
}):Play()

fuckOff.MouseButton1Click:Connect(function()
    notif:Destroy()

    local openBtn = Instance.new("ImageButton")
    openBtn.Size = UDim2.fromOffset(50,50)
    openBtn.Position = UDim2.fromScale(0.02,0.5)
    openBtn.Image = "rbxassetid://111544248762777"
    openBtn.Parent = gui
    Instance.new("UICorner", openBtn).CornerRadius = UDim.new(1,0)

    local menu = Instance.new("Frame")
    menu.Size = UDim2.fromOffset(650,450)
    menu.Position = UDim2.fromScale(0.5,0.5)
    menu.AnchorPoint = Vector2.new(0.5,0.5)
    menu.Visible = false
    menu.Parent = gui
    Instance.new("UICorner", menu).CornerRadius = UDim.new(0,16)

    local gradient = Instance.new("UIGradient")
    gradient.Rotation = 0
    local colors = getHolidayGradient()
    local keypoints = {}
    for i,color in ipairs(colors) do
        table.insert(keypoints, ColorSequenceKeypoint.new((i-1)/(#colors-1), color))
    end
    gradient.Color = ColorSequence.new(keypoints)
    gradient.Parent = menu

    local menuOpen = false
    openBtn.MouseButton1Click:Connect(function()
        menuOpen = not menuOpen
        menu.Visible = true
        menu.Size = menuOpen and UDim2.fromOffset(0,0) or menu.Size
        local t = TweenService:Create(menu, TweenInfo.new(0.25, Enum.EasingStyle.Back), {
            Size = menuOpen and UDim2.fromOffset(650,450) or UDim2.fromOffset(0,0)
        })
        t:Play()
        if not menuOpen then
            t.Completed:Wait()
            menu.Visible = false
        end
    end)

    local list = Instance.new("Frame")
    list.Size = UDim2.fromScale(0.3,0.9)
    list.Position = UDim2.fromScale(0.02,0.05)
    list.BackgroundColor3 = Color3.fromRGB(30,30,30)
    list.Parent = menu
    Instance.new("UICorner", list).CornerRadius = UDim.new(0,12)

    local listLayout = Instance.new("UIListLayout", list)
    listLayout.Padding = UDim.new(0,8)
    listLayout.SortOrder = Enum.SortOrder.LayoutOrder

    local nameBox = Instance.new("TextBox")
    nameBox.PlaceholderText = "Waypoint Name (20 max)"
    nameBox.ClearTextOnFocus = true
    nameBox.Size = UDim2.fromScale(0.65,0.08)
    nameBox.Position = UDim2.fromScale(0.33,0.05)
    nameBox.TextScaled = true
    nameBox.TextColor3 = Color3.new(1,1,1)
    nameBox.BackgroundColor3 = Color3.fromRGB(35,35,35)
    nameBox.Font = Enum.Font.Arial
    nameBox.Parent = menu
    Instance.new("UICorner", nameBox).CornerRadius = UDim.new(0,10)
    nameBox:GetPropertyChangedSignal("Text"):Connect(function()
        if #nameBox.Text > 20 then
            nameBox.Text = nameBox.Text:sub(1,20)
        end
    end)

    local function createSlider(labelText, yPos)
        local frame = Instance.new("Frame")
        frame.Size = UDim2.fromScale(0.65,0.08)
        frame.Position = UDim2.fromScale(0.33,yPos)
        frame.BackgroundColor3 = Color3.fromRGB(45,45,45)
        frame.Parent = menu
        Instance.new("UICorner", frame).CornerRadius = UDim.new(0,6)

        local label = Instance.new("TextLabel")
        label.Text = labelText
        label.Size = UDim2.fromScale(0.2,1)
        label.BackgroundTransparency = 1
        label.TextColor3 = Color3.new(1,1,1)
        label.TextScaled = true
        label.Font = Enum.Font.Arial
        label.Parent = frame

        local slider = Instance.new("TextBox")
        slider.Text = "255"
        slider.Size = UDim2.fromScale(0.75,1)
        slider.Position = UDim2.fromScale(0.25,0)
        slider.ClearTextOnFocus = true
        slider.TextScaled = true
        slider.BackgroundColor3 = Color3.fromRGB(70,70,70)
        slider.TextColor3 = Color3.new(1,1,1)
        slider.Font = Enum.Font.Arial
        slider.Parent = frame
        Instance.new("UICorner", slider).CornerRadius = UDim.new(0,6)

        return slider
    end

    local rBox = createSlider("R",0.17)
    local gBox = createSlider("G",0.27)
    local bBox = createSlider("B",0.37)

    local preview = Instance.new("Frame")
    preview.Size = UDim2.fromScale(0.65,0.08)
    preview.Position = UDim2.fromScale(0.33,0.47)
    preview.BackgroundColor3 = Color3.fromRGB(255,255,255)
    preview.Parent = menu
    Instance.new("UICorner", preview).CornerRadius = UDim.new(0,6)

    RunService.RenderStepped:Connect(function()
        local r = tonumber(rBox.Text) or 255
        local g = tonumber(gBox.Text) or 255
        local b = tonumber(bBox.Text) or 255
        preview.BackgroundColor3 = Color3.fromRGB(r,g,b)
    end)

    local createBtn = Instance.new("TextButton")
    createBtn.Text = "Create Waypoint"
    createBtn.Size = UDim2.fromScale(0.65,0.1)
    createBtn.Position = UDim2.fromScale(0.33,0.6)
    createBtn.TextScaled = true
    createBtn.Font = Enum.Font.ArialBold
    createBtn.BackgroundColor3 = Color3.fromRGB(70,70,70)
    createBtn.TextColor3 = Color3.new(1,1,1)
    createBtn.Parent = menu
    Instance.new("UICorner", createBtn).CornerRadius = UDim.new(0,10)

    local waypoints = {}

    local function addWaypointToList(wpName, attach, bb)
        local item = Instance.new("Frame")
        item.Size = UDim2.fromScale(1,0.12)
        item.BackgroundColor3 = Color3.fromRGB(40,40,40)
        item.Parent = list
        Instance.new("UICorner", item).CornerRadius = UDim.new(0,8)

        local label = Instance.new("TextLabel")
        label.Size = UDim2.fromScale(0.5,1)
        label.BackgroundTransparency = 1
        label.Text = wpName
        label.TextColor3 = Color3.new(1,1,1)
        label.Font = Enum.Font.Arial
        label.TextScaled = true
        label.TextXAlignment = Enum.TextXAlignment.Left
        label.Parent = item

        local toggleBtn = Instance.new("TextButton")
        toggleBtn.Size = UDim2.fromScale(0.15,1)
        toggleBtn.Position = UDim2.fromScale(0.5,0)
        toggleBtn.Text = "👁️"
        toggleBtn.Font = Enum.Font.ArialBold
        toggleBtn.TextScaled = true
        toggleBtn.TextColor3 = Color3.new(1,1,1)
        toggleBtn.BackgroundColor3 = Color3.fromRGB(70,70,70)
        toggleBtn.Parent = item
        Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(0,6)

        local visible = true
        toggleBtn.MouseButton1Click:Connect(function()
            visible = not visible
            bb.Enabled = visible
            toggleBtn.Text = visible and "👁️" or "🚫"
        end)

        local delBtn = Instance.new("TextButton")
        delBtn.Size = UDim2.fromScale(0.15,1)
        delBtn.Position = UDim2.fromScale(0.65,0)
        delBtn.Text = "🗑️"
        delBtn.Font = Enum.Font.ArialBold
        delBtn.TextScaled = true
        delBtn.TextColor3 = Color3.new(1,1,1)
        delBtn.BackgroundColor3 = Color3.fromRGB(120,40,40)
        delBtn.Parent = item
        Instance.new("UICorner", delBtn).CornerRadius = UDim.new(0,6)

        delBtn.MouseButton1Click:Connect(function()
            attach:Destroy()
            bb:Destroy()
            item:Destroy()
        end)
    end

    createBtn.MouseButton1Click:Connect(function()
        local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
        if not hrp then return end

        local pos = hrp.Position + Vector3.new(0,6,0)
        local attach = Instance.new("Attachment")
        attach.WorldPosition = pos
        attach.Parent = workspace.Terrain

        local bb = Instance.new("BillboardGui")
        bb.Size = UDim2.fromOffset(140,170)
        bb.AlwaysOnTop = true
        bb.Adornee = attach
        bb.MaxDistance = math.huge
        bb.Parent = gui

        local img = Instance.new("ImageLabel")
        img.Size = UDim2.fromScale(1,0.6)
        img.BackgroundTransparency = 1
        img.Image = "rbxassetid://10516012789"
        img.ImageColor3 = preview.BackgroundColor3
        img.Parent = bb

        local txt = Instance.new("TextLabel")
        txt.Size = UDim2.fromScale(1,0.2)
        txt.Position = UDim2.fromScale(0,0.6)
        txt.BackgroundTransparency = 1
        txt.Text = nameBox.Text ~= "" and nameBox.Text or "Waypoint"
        txt.TextSize = 18
        txt.TextScaled = false
        txt.TextColor3 = Color3.new(1,1,1)
        txt.Font = Enum.Font.Arial
        txt.Parent = bb

        local dist = Instance.new("TextLabel")
        dist.Size = UDim2.fromScale(1,0.2)
        dist.Position = UDim2.fromScale(0,0.8)
        dist.BackgroundTransparency = 1
        dist.TextSize = 14
        dist.TextColor3 = Color3.fromRGB(200,200,200)
        dist.Font = Enum.Font.Arial
        dist.Parent = bb

        local basePos = attach.WorldPosition

        RunService.RenderStepped:Connect(function()
            if not hrp.Parent then return end
            local d = (hrp.Position - basePos).Magnitude
            dist.Text = math.floor(d).." studs"
            attach.WorldPosition = basePos
        end)

        addWaypointToList(txt.Text, attach, bb)
    end)
end)

Features & Information

vro what does the fucking script name say ITS WAYPOINTS VRO uh I couldn't figure out how to fix that fuckass billboard GUI thing where the farther you get the lower it goes so I just left it like that
#Waypoint#Waypoints#Universal

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts