[OPEN SRC] YS - WAYPOINT SETTER

SETS WAYPOINTS TO TELEPORT TO.

publicluauupdated
loadstring(game:HttpGet("https://pasteblox.com/raw/uqaha3k67v"))()
pbx pull uqaha3k67vraw link never changes · v1 live
open-src-ys-waypoint-setter.luau
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players['LocalPlayer']

local session = {
	uiName = "WaypointSetter",
	unloaded = false,
	connections = {},
	tweens = {},
	markers = {},
	cleanups = {},
	minimize = nil :: (() -> ())?,
	minimizedMenuGui = nil :: Instance?,
}

function session:track(connection)
	self.connections[connection] = true
	return connection
end

function session:release(connection)
	if not connection then return end
	self.connections[connection] = nil
	connection:Disconnect()
end

function session:onUnload(cleanup)
	table['insert'](self.cleanups, cleanup)
end

function session:unload()
	if self.unloaded then return end
	self.unloaded = true

	for _, cleanup in ipairs(self.cleanups) do
		local ok, err = pcall(cleanup)
		if not ok then
			warn(self.uiName .. " unload: " .. tostring(err))
		end
	end
	table['clear'](self.cleanups)

	for connection in pairs(self.connections) do
		connection:Disconnect()
		self.connections[connection] = nil
	end
	for activeTween in pairs(self.tweens) do
		activeTween:Cancel()
		self.tweens[activeTween] = nil
	end
	for marker in pairs(self.markers) do
		if marker['Parent'] then marker:Destroy() end
		self.markers[marker] = nil
	end

	if self.gui then
		self.gui:Destroy()
		self.gui = nil
	end
end

local GLASS_TINT = Color3['fromRGB'](18, 22, 30)
local GLASS_TRANSPARENCY = 0

local COLOR_GLASS = Color3['fromRGB'](255, 255, 255)
local COLOR_RED = Color3['fromRGB'](255, 105, 97)
local COLOR_DESTRUCTIVE = Color3['fromRGB'](255, 59, 48)
local COLOR_DESTRUCTIVE_HOVER = Color3['fromRGB'](255, 80, 70)
local COLOR_TEXT = Color3['fromRGB'](255, 255, 255)
local COLOR_TEXT_SOFT = Color3['fromRGB'](240, 244, 250)
local COLOR_SECONDARY = Color3['fromRGB'](222, 228, 238)
local COLOR_TERTIARY = Color3['fromRGB'](200, 208, 220)
local COLOR_STROKE = Color3['fromRGB'](255, 255, 255)

local TL_RED = Color3['fromRGB'](255, 95, 87)
local TL_YELLOW = Color3['fromRGB'](254, 188, 46)
local TL_GREEN = Color3['fromRGB'](40, 200, 64)

local T_PANEL = 0.94
local T_PANEL_HOVER = 0.9
local T_BUTTON = 0.91
local T_BUTTON_HOVER = 0.84
local T_PRIMARY = 0.82
local T_PRIMARY_HOVER = 0.72
local T_RIM = 0.4

local WINDOW_RADIUS = 26
local CARD_RADIUS = 20
local SIDEBAR_WIDTH = 170
local TITLEBAR_HEIGHT = 44

local FONT_REGULAR = Enum['Font'].BuilderSans
local FONT_MEDIUM = Enum['Font'].BuilderSansMedium
local FONT_BOLD = Enum['Font'].BuilderSansBold
local FONT_MONO = Enum['Font'].RobotoMono

local QUINT = Enum['EasingStyle'].Quint
local QUAD = Enum['EasingStyle'].Quad
local BACK = Enum['EasingStyle'].Back
local OUT = Enum['EasingDirection'].Out
local IN = Enum['EasingDirection'].In
local INOUT = Enum['EasingDirection'].InOut

local function create(className, props)
	local obj = Instance['new'](className)
	for key, value in pairs(props) do
		if key ~= "Parent" then
			obj[key] = value
		end
	end
	obj['Parent'] = props['Parent']
	return obj
end

local function isPress(input)
	return input['UserInputType'] == Enum['UserInputType'].MouseButton1 or input['UserInputType'] == Enum['UserInputType'].Touch
end

local function trackDrag(startInput, onMove, onEnd)
	local isTouch = startInput['UserInputType'] == Enum['UserInputType'].Touch
	local moveConn, endConn
	moveConn = session:track(UserInputService['InputChanged']:Connect(function(input)
		if session.unloaded then return end
		if isTouch and input ~= startInput then return end
		if not isTouch and input['UserInputType'] ~= Enum['UserInputType'].MouseMovement then return end
		onMove(input)
	end))
	endConn = session:track(UserInputService['InputEnded']:Connect(function(input)
		if isTouch and input ~= startInput then return end
		if not isTouch and input['UserInputType'] ~= Enum['UserInputType'].MouseButton1 then return end
		session:release(moveConn)
		session:release(endConn)
		if onEnd and not session.unloaded then onEnd() end
	end))
end

local function offsetBy(pos, delta)
	return UDim2['new'](pos['X'].Scale, pos['X'].Offset + delta['X'], pos['Y'].Scale, pos['Y'].Offset + delta['Y'])
end

local function runSection(fn)
	fn()
end

local function corner(radius, parent)
	local c = create("UICorner", { CornerRadius = UDim['new'](0, radius), Parent = parent })
	return c
end

local function stroke(parent, color, thickness, transparency)
	local s = create("UIStroke", {
		Color = color or COLOR_STROKE, Thickness = thickness or 1, Transparency = transparency or T_RIM,
		ApplyStrokeMode = Enum['ApplyStrokeMode'].Border, Parent = parent,
	})
	return s
end

local function tween(obj, props, t, style, dir)
	local info = TweenInfo['new'](t or 0.2, style or QUINT, dir or OUT)
	local tw = TweenService:Create(obj, info, props)
	session.tweens[tw] = true
	tw['Completed']:Once(function()
		session.tweens[tw] = nil
	end)
	tw:Play()
	return tw
end

local function rimLight(strokeObj)
	local g = create("UIGradient", { Rotation = 35 })
	g['Transparency'] = NumberSequence['new']({
		NumberSequenceKeypoint['new'](0, 0),
		NumberSequenceKeypoint['new'](0.45, 0.75),
		NumberSequenceKeypoint['new'](0.75, 0.85),
		NumberSequenceKeypoint['new'](1, 0.35),
	})
	g['Parent'] = strokeObj
	return g
end

local function glassSheen(obj)
	if obj:IsA("CanvasGroup") then
		local sheen = create("Frame", {
			Name = "sheen", BackgroundColor3 = Color3['fromRGB'](255, 255, 255), BackgroundTransparency = 0.94,
			BorderSizePixel = 0, Size = UDim2['new'](1, 0, 0.55, 0), ZIndex = 0, Active = false, Parent = obj,
		})
		local g = create("UIGradient", { Rotation = 90 })
		g['Transparency'] = NumberSequence['new']({
			NumberSequenceKeypoint['new'](0, 0),
			NumberSequenceKeypoint['new'](1, 1),
		})
		g['Parent'] = sheen
		return g
	end
	local g = create("UIGradient", { Rotation = 90 })
	g['Transparency'] = NumberSequence['new']({
		NumberSequenceKeypoint['new'](0, 0),
		NumberSequenceKeypoint['new'](1, 0.35),
	})
	g['Parent'] = obj
	return g
end

local function innerEdge(obj, radius)
	local edge = create("Frame", {
		Name = "innerEdge", BackgroundTransparency = 1, Position = UDim2['new'](0, 1, 0, 1),
		Size = UDim2['new'](1, -2, 1, -2), ZIndex = obj['ZIndex'], Active = false, Parent = obj,
	})
	corner(math['max'](radius - 1, 0), edge)
	local s = stroke(edge, COLOR_STROKE, 1, 0.8)
	local g = create("UIGradient", { Rotation = 215 })
	g['Transparency'] = NumberSequence['new']({
		NumberSequenceKeypoint['new'](0, 0.2),
		NumberSequenceKeypoint['new'](0.35, 0.9),
		NumberSequenceKeypoint['new'](1, 1),
	})
	g['Parent'] = s
	return edge
end

local function glass(obj, transparency, radius, rimTransparency)
	obj['BackgroundColor3'] = COLOR_GLASS
	obj['BackgroundTransparency'] = transparency or T_PANEL
	obj['BorderSizePixel'] = 0
	if radius then
		corner(radius, obj)
		if radius >= 12 then
			innerEdge(obj, radius)
		end
	end
	glassSheen(obj)
	local s = stroke(obj, COLOR_STROKE, 1, rimTransparency or T_RIM)
	rimLight(s)
	return s
end

local settings = {
	toggleKey = Enum['KeyCode'].K,
	topbarButtons = "Default",
	notificationTransparency = 0,
	minimizedMenuTransparency = 0,
	notifications = {
		menuClosed = true,
		clearAll = true,
		waypointAdded = false,
		teleported = false,
		renamed = false,
	},
}

local saveSettings

runSection(function()
	local HttpService = game:GetService("HttpService")
	local SETTINGS_FOLDER = "YSWAYPOINTSETTER"
	local SETTINGS_FILE = SETTINGS_FOLDER .. "/settings_" .. tostring(LocalPlayer['UserId']) .. ".json"
	local canSave = typeof(writefile) == "function" and typeof(readfile) == "function"
	local migratedSettings = false

	if canSave then
		local ok, raw = pcall(readfile, SETTINGS_FILE)
		if not ok or type(raw) ~= "string" or raw == "" then
			local previousFile = "WaypointClicker/settings_" .. tostring(LocalPlayer['UserId']) .. ".json"
			ok, raw = pcall(readfile, previousFile)
			migratedSettings = ok and type(raw) == "string" and raw ~= ""
		end
		if ok and type(raw) == "string" and raw ~= "" then
			local decodedOk, data = pcall(function()
				return HttpService:JSONDecode(raw)
			end)
			if decodedOk and type(data) == "table" then
				if type(data['toggleKey']) == "string" then
					local keyOk, key = pcall(function()
						return Enum['KeyCode'][data['toggleKey']]
					end)
					if keyOk and key then
						settings['toggleKey'] = key
					end
				end
				if type(data['notifications']) == "table" then
					for name, value in pairs(data['notifications']) do
						if settings['notifications'][name] ~= nil and type(value) == "boolean" then
							settings['notifications'][name] = value
						end
					end
				end
				if type(data['transparency']) == "number" then
					GLASS_TRANSPARENCY = math['clamp'](data['transparency'], 0, 0.95)
				end
				if data['topbarButtons'] == "Default" or data['topbarButtons'] == "Mac" then
					settings['topbarButtons'] = data['topbarButtons']
				end
				if type(data['notificationTransparency']) == "number" then
					settings['notificationTransparency'] = math['clamp'](data['notificationTransparency'], 0, 0.95)
				end
				if type(data['minimizedMenuTransparency']) == "number" then
					settings['minimizedMenuTransparency'] = math['clamp'](data['minimizedMenuTransparency'], 0, 0.95)
				end
lines 1–300 of 2,647open raw find-in-page only searches the lines loaded so far. "show all" loads the rest.

changelog

1 version
  1. first version

    live

    @yamis_scripts·