Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Rayfield Interface Suite
- by Sirius
- shlex | Designing + Programming
- iRay | Programming
- Cat Development | MR.Cat#3496
- ]]
- local Release = "Beta 4"
- local NotificationDuration = 6.5
- local ConfigurationFolder = "Cat Hub"
- local ConfigurationExtension = ".txt"
- local RayfieldLibrary = {}
- local UserInputService = game:GetService("UserInputService")
- local TweenService = game:GetService("TweenService")
- local HttpService = game:GetService("HttpService")
- local RunService = game:GetService("RunService")
- local Players = game:GetService("Players")
- local CoreGui = game:GetService("CoreGui")
- local Rayfield = game:GetObjects("rbxassetid://10804731440")[1]
- if gethui then
- Rayfield.Parent = gethui()
- elseif syn.protect_gui then
- syn.protect_gui(Rayfield)
- Rayfield.Parent = CoreGui
- elseif CoreGui:FindFirstChild("RobloxGui") then
- Rayfield.Parent = CoreGui:FindFirstChild("RobloxGui")
- else
- Rayfield.Parent = CoreGui
- end
- if gethui then
- for _, Interface in ipairs(gethui():GetChildren()) do
- if Interface.Name == Rayfield.Name and Interface ~= Rayfield then
- Interface.Enabled = false
- Interface.Name = "Rayfield-Old"
- end
- end
- else
- for _, Interface in ipairs(CoreGui:GetChildren()) do
- if Interface.Name == Rayfield.Name and Interface ~= Rayfield then
- Interface.Enabled = false
- Interface.Name = "Rayfield-Old"
- end
- end
- end
- local Camera = workspace.CurrentCamera
- local Main = Rayfield.Main
- local Topbar = Main.Topbar
- local Elements = Main.Elements
- local LoadingFrame = Main.LoadingFrame
- local TabList = Main.TabList
- Rayfield.DisplayOrder = 100
- LoadingFrame.Version.Text = Release
- local CFileName = nil
- local CEnabled = false
- local Minimised = false
- local Hidden = false
- local Debounce = false
- local Flags = {}
- local NotificationStack = {}
- local Notifications = Rayfield.Notifications
- local function AddDraggingFunctionality(DragPoint, Main)
- pcall(function()
- local Dragging, DragInput, MousePos, FramePos = false
- DragPoint.InputBegan:Connect(function(Input)
- if Input.UserInputType == Enum.UserInputType.MouseButton1 then
- Dragging = true
- MousePos = Input.Position
- FramePos = Main.Position
- Input.Changed:Connect(function()
- if Input.UserInputState == Enum.UserInputState.End then
- Dragging = false
- end
- end)
- end
- end)
- DragPoint.InputChanged:Connect(function(Input)
- if Input.UserInputType == Enum.UserInputType.MouseMovement then
- DragInput = Input
- end
- end)
- UserInputService.InputChanged:Connect(function(Input)
- if Input == DragInput and Dragging then
- local Delta = Input.Position - MousePos
- TweenService:Create(Main, TweenInfo.new(0.45, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Position = UDim2.new(FramePos.X.Scale,FramePos.X.Offset + Delta.X, FramePos.Y.Scale, FramePos.Y.Offset + Delta.Y)}):Play()
- end
- end)
- end)
- end
- local function PackColor(Color)
- return {R = Color.R * 255, G = Color.G * 255, B = Color.B * 255}
- end
- local function UnpackColor(Color)
- return Color3.fromRGB(Color.R, Color.G, Color.B)
- end
- local function LoadConfiguration(Configuration)
- local Data = HttpService:JSONDecode(Configuration)
- table.foreach(Data, function(FlagName, FlagValue)
- if Flags[FlagName] then
- spawn(function()
- if Flags[FlagName].Type == "Colorpicker" then
- Flags[FlagName]:Set(UnpackColor(FlagValue))
- else
- if Flags[FlagName].CurrentValue or Flags[FlagName].CurrentKeybind or Flags[FlagName].CurrentOption ~= FlagValue then Flags[FlagName]:Set(FlagValue) end
- end
- end)
- else
- RayfieldLibrary:Notify("Flag Error","Rayfield was unable to find '"..FlagName.. "'' in the current script")
- end
- end)
- end
- local function SaveConfiguration()
- if not CEnabled then return end
- local Data = {}
- for i,v in pairs(Flags) do
- if v.Type == "Colorpicker" then
- Data[i] = PackColor(v.CurrentValue)
- else
- Data[i] = v.CurrentValue or v.CurrentKeybind or v.CurrentOption
- end
- end
- writefile(ConfigurationFolder .. "/" .. CFileName .. ConfigurationExtension, tostring(HttpService:JSONEncode(Data)))
- end
- function FigureNotifications()
- local stacksize = 1
- local i = #NotificationStack
- while i > 0 do
- local gui = NotificationStack[i]
- if gui then
- if stacksize == 1 then
- stacksize = 0.915
- else
- stacksize = stacksize - 0.18
- end
- local desiredpos = UDim2.new(0.5,0,stacksize,0)
- if gui.Position ~= desiredpos then
- gui:TweenPosition(desiredpos,"Out","Quint",0.4,true)
- end
- end
- i = i-1
- end
- end
- local neon = (function() -- Open sourced neon module
- local module = {}
- do
- local function IsNotNaN(x)
- return x == x
- end
- local continued = IsNotNaN(Camera:ScreenPointToRay(0,0).Origin.x)
- while not continued do
- RunService.RenderStepped:wait()
- continued = IsNotNaN(Camera:ScreenPointToRay(0,0).Origin.x)
- end
- end
- local RootParent = Camera
- if getgenv().SecureMode == nil then
- RootParent = Camera
- else
- if not getgenv().SecureMode then
- RootParent = Camera
- else
- RootParent = nil
- end
- end
- local binds = {}
- local root = Instance.new('Folder', RootParent)
- root.Name = 'neon'
- local GenUid; do
- local id = 0
- function GenUid()
- id = id + 1
- return 'neon::'..tostring(id)
- end
- end
- local DrawQuad; do
- local acos, max, pi, sqrt = math.acos, math.max, math.pi, math.sqrt
- local sz = 0.2
- function DrawTriangle(v1, v2, v3, p0, p1)
- local s1 = (v1 - v2).magnitude
- local s2 = (v2 - v3).magnitude
- local s3 = (v3 - v1).magnitude
- local smax = max(s1, s2, s3)
- local A, B, C
- if s1 == smax then
- A, B, C = v1, v2, v3
- elseif s2 == smax then
- A, B, C = v2, v3, v1
- elseif s3 == smax then
- A, B, C = v3, v1, v2
- end
- local para = ( (B-A).x*(C-A).x + (B-A).y*(C-A).y + (B-A).z*(C-A).z ) / (A-B).magnitude
- local perp = sqrt((C-A).magnitude^2 - para*para)
- local dif_para = (A - B).magnitude - para
- local st = CFrame.new(B, A)
- local za = CFrame.Angles(pi/2,0,0)
- local cf0 = st
- local Top_Look = (cf0 * za).lookVector
- local Mid_Point = A + CFrame.new(A, B).LookVector * para
- local Needed_Look = CFrame.new(Mid_Point, C).LookVector
- local dot = Top_Look.x*Needed_Look.x + Top_Look.y*Needed_Look.y + Top_Look.z*Needed_Look.z
- local ac = CFrame.Angles(0, 0, acos(dot))
- cf0 = cf0 * ac
- if ((cf0 * za).lookVector - Needed_Look).magnitude > 0.01 then
- cf0 = cf0 * CFrame.Angles(0, 0, -2*acos(dot))
- end
- cf0 = cf0 * CFrame.new(0, perp/2, -(dif_para + para/2))
- local cf1 = st * ac * CFrame.Angles(0, pi, 0)
- if ((cf1 * za).lookVector - Needed_Look).magnitude > 0.01 then
- cf1 = cf1 * CFrame.Angles(0, 0, 2*acos(dot))
- end
- cf1 = cf1 * CFrame.new(0, perp/2, dif_para/2)
- if not p0 then
- p0 = Instance.new('Part')
- p0.FormFactor = 'Custom'
- p0.TopSurface = 0
- p0.BottomSurface = 0
- p0.Anchored = true
- p0.CanCollide = false
- p0.Material = 'Glass'
- p0.Size = Vector3.new(sz, sz, sz)
- local mesh = Instance.new('SpecialMesh', p0)
- mesh.MeshType = 2
- mesh.Name = 'WedgeMesh'
- end
- p0.WedgeMesh.Scale = Vector3.new(0, perp/sz, para/sz)
- p0.CFrame = cf0
- if not p1 then
- p1 = p0:clone()
- end
- p1.WedgeMesh.Scale = Vector3.new(0, perp/sz, dif_para/sz)
- p1.CFrame = cf1
- return p0, p1
- end
- function DrawQuad(v1, v2, v3, v4, parts)
- parts[1], parts[2] = DrawTriangle(v1, v2, v3, parts[1], parts[2])
- parts[3], parts[4] = DrawTriangle(v3, v2, v4, parts[3], parts[4])
- end
- end
- function module:BindFrame(frame, properties)
- if RootParent == nil then return end
- if binds[frame] then
- return binds[frame].parts
- end
- local uid = GenUid()
- local parts = {}
- local f = Instance.new('Folder', root)
- f.Name = frame.Name
- local parents = {}
- do
- local function add(child)
- if child:IsA'GuiObject' then
- parents[#parents + 1] = child
- add(child.Parent)
- end
- end
- add(frame)
- end
- local function UpdateOrientation(fetchProps)
- local zIndex = 1 - 0.05*frame.ZIndex
- local tl, br = frame.AbsolutePosition, frame.AbsolutePosition + frame.AbsoluteSize
- local tr, bl = Vector2.new(br.x, tl.y), Vector2.new(tl.x, br.y)
- do
- local rot = 0;
- for _, v in ipairs(parents) do
- rot = rot + v.Rotation
- end
- if rot ~= 0 and rot%180 ~= 0 then
- local mid = tl:lerp(br, 0.5)
- local s, c = math.sin(math.rad(rot)), math.cos(math.rad(rot))
- local vec = tl
- tl = Vector2.new(c*(tl.x - mid.x) - s*(tl.y - mid.y), s*(tl.x - mid.x) + c*(tl.y - mid.y)) + mid
- tr = Vector2.new(c*(tr.x - mid.x) - s*(tr.y - mid.y), s*(tr.x - mid.x) + c*(tr.y - mid.y)) + mid
- bl = Vector2.new(c*(bl.x - mid.x) - s*(bl.y - mid.y), s*(bl.x - mid.x) + c*(bl.y - mid.y)) + mid
- br = Vector2.new(c*(br.x - mid.x) - s*(br.y - mid.y), s*(br.x - mid.x) + c*(br.y - mid.y)) + mid
- end
- end
- DrawQuad(
- Camera:ScreenPointToRay(tl.x, tl.y, zIndex).Origin,
- Camera:ScreenPointToRay(tr.x, tr.y, zIndex).Origin,
- Camera:ScreenPointToRay(bl.x, bl.y, zIndex).Origin,
- Camera:ScreenPointToRay(br.x, br.y, zIndex).Origin,
- parts
- )
- if fetchProps then
- for _, pt in pairs(parts) do
- pt.Parent = f
- end
- for propName, propValue in pairs(properties) do
- for _, pt in pairs(parts) do
- pt[propName] = propValue
- end
- end
- end
- end
- UpdateOrientation(true)
- RunService:BindToRenderStep(uid, 2000, UpdateOrientation)
- binds[frame] = {
- uid = uid;
- parts = parts;
- }
- return binds[frame].parts
- end
- function module:Modify(frame, properties)
- local parts = module:GetBoundParts(frame)
- if parts then
- for propName, propValue in pairs(properties) do
- for _, pt in pairs(parts) do
- pt[propName] = propValue
- end
- end
- end
- end
- function module:UnbindFrame(frame)
- if RootParent == nil then return end
- local cb = binds[frame]
- if cb then
- RunService:UnbindFromRenderStep(cb.uid)
- for _, v in pairs(cb.parts) do
- v:Destroy()
- end
- binds[frame] = nil
- end
- end
- function module:HasBinding(frame)
- return binds[frame] ~= nil
- end
- function module:GetBoundParts(frame)
- return binds[frame] and binds[frame].parts
- end
- return module
- end)()
- --end
- function RayfieldLibrary:Notify(Title,Content,Image)
- spawn(function()
- local Notification = Notifications.Template:Clone()
- Notification.Parent = Notifications
- Notification.Name = Title
- Notification.Visible = true
- local blurlight = Instance.new("DepthOfFieldEffect",game:GetService("Lighting"))
- blurlight.Enabled = true
- blurlight.FarIntensity = 0
- blurlight.FocusDistance = 51.6
- blurlight.InFocusRadius = 50
- blurlight.NearIntensity = 1
- game:GetService("Debris"):AddItem(script,0)
- Notification.Title.Text = Title or "Unknown"
- Notification.Title.TextTransparency = 1
- Notification.Title.TextColor3 = Color3.fromRGB(240,240,240)
- Notification.Description.Text = Content or "Unknown"
- Notification.Description.TextTransparency = 1
- Notification.Description.TextColor3 = Color3.fromRGB(240,240,240)
- if Image then
- Notification.Icon.Image = "rbxassetid://"..tostring(Image)
- else
- Notification.Icon.Image = "rbxassetid://3944680095"
- end
- Notification.Icon.ImageTransparency = 1
- Notification.Parent = Notifications
- Notification.Position = UDim2.new(-1.1,0,0.915,0)
- Notification.Size = UDim2.new(0, 295, 0, 91)
- Notification.BackgroundTransparency = 1
- Notification.UIStroke.Transparency = 1
- table.insert(NotificationStack,Notification)
- FigureNotifications()
- TweenService:Create(Notification, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0.1}):Play()
- TweenService:Create(Notification.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0.7}):Play()
- Notification:TweenPosition(UDim2.new(0.5,0,0.915,0),'Out','Quint',0.8,true)
- wait(0.3)
- TweenService:Create(Notification.Icon, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {ImageTransparency = 0}):Play()
- TweenService:Create(Notification.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- TweenService:Create(Notification.Description, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 0.2}):Play()
- wait(0.2)
- -- Requires Graphics Level 8-10
- if getgenv().SecureMode == nil then
- TweenService:Create(Notification, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0.3}):Play()
- else
- if not getgenv().SecureMode then
- TweenService:Create(Notification, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0.3}):Play()
- else
- TweenService:Create(Notification, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- end
- end
- if Rayfield.Name == "Rayfield" then
- neon:BindFrame(Notification.BlurModule, {
- Transparency = 0.98;
- BrickColor = BrickColor.new("Institutional white");
- })
- end
- wait(NotificationDuration - 0.5)
- TweenService:Create(Notification.Title, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Position = UDim2.new(0.47, 0,0.234, 0)}):Play()
- TweenService:Create(Notification.Description, TweenInfo.new(0.8, Enum.EasingStyle.Quint), {Position = UDim2.new(0.528, 0,0.637, 0)}):Play()
- TweenService:Create(Notification, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 280, 0, 83)}):Play()
- TweenService:Create(Notification.Icon, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- TweenService:Create(Notification, TweenInfo.new(0.8, Enum.EasingStyle.Quint), {BackgroundTransparency = 0.6}):Play()
- wait(0.3)
- TweenService:Create(Notification.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 0.9}):Play()
- TweenService:Create(Notification.Title, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 0.4}):Play()
- TweenService:Create(Notification.Description, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 0.5}):Play()
- wait(0.05)
- Notification:TweenPosition(UDim2.new(1.5,0,Notification.Position.Y.Scale,0),'In','Quint',0.8,true)
- for a,b in pairs(NotificationStack) do
- if b == Notification then
- table.remove(NotificationStack,a)
- end
- end
- wait(1.35)
- neon:UnbindFrame(Notification.BlurModule)
- Notification:Destroy()
- blurlight:Destroy()
- FigureNotifications()
- end)
- end
- function Hide()
- Debounce = true
- RayfieldLibrary:Notify("Interface Hidden","Cat Hub has been hidden, you can unhide the interface by tapping RightShift")
- TweenService:Create(Main, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 470, 0, 400)}):Play()
- TweenService:Create(Main.Topbar, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 470, 0, 45)}):Play()
- TweenService:Create(Main, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(Main.Topbar, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(Main.Topbar.Divider, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(Main.Topbar.CornerRepair, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(Main.Topbar.Title, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(Main.Shadow.Image, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- TweenService:Create(Topbar.UIStroke, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- for _, TopbarButton in ipairs(Topbar:GetChildren()) do
- if TopbarButton.ClassName == "ImageButton" then
- TweenService:Create(TopbarButton, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- end
- end
- for _, tabbtn in ipairs(TabList:GetChildren()) do
- if tabbtn.ClassName == "Frame" and tabbtn.Name ~= "Placeholder" then
- TweenService:Create(tabbtn, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(tabbtn.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(tabbtn.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- end
- end
- for _, tab in ipairs(Elements:GetChildren()) do
- if tab.Name ~= "Template" and tab.ClassName == "ScrollingFrame" and tab.Name ~= "Placeholder" then
- for _, element in ipairs(tab:GetChildren()) do
- if element.ClassName == "Frame" then
- if element.Name ~= "SectionSpacing" and element.Name ~= "Placeholder" then
- if element.Name == "SectionTitle" then
- TweenService:Create(element.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- else
- TweenService:Create(element, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(element.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(element.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- end
- for _, child in ipairs(element:GetChildren()) do
- if child.ClassName == "Frame" or child.ClassName == "TextLabel" or child.ClassName == "TextBox" or child.ClassName == "ImageButton" or child.ClassName == "ImageLabel" then
- child.Visible = false
- end
- end
- end
- end
- end
- end
- end
- wait(0.5)
- Main.Visible = false
- Debounce = false
- end
- function Unhide()
- Debounce = true
- Main.Position = UDim2.new(0.5, 0, 0.5, 0)
- Main.Visible = true
- TweenService:Create(Main, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 475)}):Play()
- TweenService:Create(Main.Topbar, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 45)}):Play()
- TweenService:Create(Main.Shadow.Image, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.4}):Play()
- TweenService:Create(Main, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Main.Topbar, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Main.Topbar.Divider, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Main.Topbar.CornerRepair, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Main.Topbar.Title, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- if Minimised then
- spawn(Maximise)
- end
- for _, TopbarButton in ipairs(Topbar:GetChildren()) do
- if TopbarButton.ClassName == "ImageButton" then
- TweenService:Create(TopbarButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.8}):Play()
- end
- end
- for _, tabbtn in ipairs(TabList:GetChildren()) do
- if tabbtn.ClassName == "Frame" and tabbtn.Name ~= "Placeholder" then
- if tostring(Elements.UIPageLayout.CurrentPage) == tabbtn.Title.Text then
- TweenService:Create(tabbtn, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(tabbtn.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- TweenService:Create(tabbtn.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- else
- TweenService:Create(tabbtn, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0.7}):Play()
- TweenService:Create(tabbtn.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0.2}):Play()
- TweenService:Create(tabbtn.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- end
- end
- end
- for _, tab in ipairs(Elements:GetChildren()) do
- if tab.Name ~= "Template" and tab.ClassName == "ScrollingFrame" and tab.Name ~= "Placeholder" then
- for _, element in ipairs(tab:GetChildren()) do
- if element.ClassName == "Frame" then
- if element.Name ~= "SectionSpacing" and element.Name ~= "Placeholder" then
- if element.Name == "SectionTitle" then
- TweenService:Create(element.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- else
- TweenService:Create(element, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(element.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(element.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- end
- for _, child in ipairs(element:GetChildren()) do
- if child.ClassName == "Frame" or child.ClassName == "TextLabel" or child.ClassName == "TextBox" or child.ClassName == "ImageButton" or child.ClassName == "ImageLabel" then
- child.Visible = true
- end
- end
- end
- end
- end
- end
- end
- wait(0.5)
- Debounce = false
- end
- function Maximise()
- Debounce = true
- Topbar.ChangeSize.Image = "rbxassetid://"..10137941941
- TweenService:Create(Topbar.UIStroke, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(Main.Shadow.Image, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {ImageTransparency = 0.4}):Play()
- TweenService:Create(Topbar.CornerRepair, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Topbar.Divider, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Main, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 475)}):Play()
- TweenService:Create(Topbar, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 45)}):Play()
- TabList.Visible = true
- wait(0.2)
- Elements.Visible = true
- for _, tab in ipairs(Elements:GetChildren()) do
- if tab.Name ~= "Template" and tab.ClassName == "ScrollingFrame" and tab.Name ~= "Placeholder" then
- for _, element in ipairs(tab:GetChildren()) do
- if element.ClassName == "Frame" then
- if element.Name ~= "SectionSpacing" and element.Name ~= "Placeholder" then
- if element.Name == "SectionTitle" then
- TweenService:Create(element.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- else
- TweenService:Create(element, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(element.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(element.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- end
- for _, child in ipairs(element:GetChildren()) do
- if child.ClassName == "Frame" or child.ClassName == "TextLabel" or child.ClassName == "TextBox" or child.ClassName == "ImageButton" or child.ClassName == "ImageLabel" then
- child.Visible = true
- end
- end
- end
- end
- end
- end
- end
- wait(0.1)
- for _, tabbtn in ipairs(TabList:GetChildren()) do
- if tabbtn.ClassName == "Frame" and tabbtn.Name ~= "Placeholder" then
- if tostring(Elements.UIPageLayout.CurrentPage) == tabbtn.Title.Text then
- TweenService:Create(tabbtn, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(tabbtn.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- TweenService:Create(tabbtn.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- else
- TweenService:Create(tabbtn, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0.7}):Play()
- TweenService:Create(tabbtn.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0.2}):Play()
- TweenService:Create(tabbtn.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- end
- end
- end
- wait(0.5)
- Debounce = false
- end
- function Minimise()
- Debounce = true
- Topbar.ChangeSize.Image = "rbxassetid://"..11036884234
- for _, tabbtn in ipairs(TabList:GetChildren()) do
- if tabbtn.ClassName == "Frame" and tabbtn.Name ~= "Placeholder" then
- TweenService:Create(tabbtn, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(tabbtn.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(tabbtn.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- end
- end
- for _, tab in ipairs(Elements:GetChildren()) do
- if tab.Name ~= "Template" and tab.ClassName == "ScrollingFrame" and tab.Name ~= "Placeholder" then
- for _, element in ipairs(tab:GetChildren()) do
- if element.ClassName == "Frame" then
- if element.Name ~= "SectionSpacing" and element.Name ~= "Placeholder" then
- if element.Name == "SectionTitle" then
- TweenService:Create(element.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- else
- TweenService:Create(element, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(element.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(element.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- end
- for _, child in ipairs(element:GetChildren()) do
- if child.ClassName == "Frame" or child.ClassName == "TextLabel" or child.ClassName == "TextBox" or child.ClassName == "ImageButton" or child.ClassName == "ImageLabel" then
- child.Visible = false
- end
- end
- end
- end
- end
- end
- end
- TweenService:Create(Topbar.UIStroke, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Main.Shadow.Image, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- TweenService:Create(Topbar.CornerRepair, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(Topbar.Divider, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(Main, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 495, 0, 45)}):Play()
- TweenService:Create(Topbar, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 495, 0, 45)}):Play()
- wait(0.3)
- Elements.Visible = false
- TabList.Visible = false
- wait(0.2)
- Debounce = false
- end
- function RayfieldLibrary:CreateWindow(Settings)
- local Passthrough = false
- Topbar.Title.Text = Settings.Name
- Main.Size = UDim2.new(0, 450, 0, 260)
- Main.Visible = true
- Main.BackgroundTransparency = 1
- LoadingFrame.Title.TextTransparency = 1
- LoadingFrame.Subtitle.TextTransparency = 1
- Main.Shadow.Image.ImageTransparency = 1
- LoadingFrame.Version.TextTransparency = 1
- LoadingFrame.Title.Text = Settings.LoadingTitle or "Rayfield Interface Suite"
- LoadingFrame.Subtitle.Text = Settings.LoadingSubtitle or "by Sirius"
- Topbar.Visible = false
- Elements.Visible = false
- LoadingFrame.Visible = true
- pcall(function()
- if not Settings.ConfigurationSaving.FileName then
- Settings.ConfigurationSaving.FileName = tostring(game.PlaceId)
- end
- if Settings.ConfigurationSaving.Enabled == nil then
- Settings.ConfigurationSaving.Enabled = false
- end
- CFileName = Settings.ConfigurationSaving.FileName
- CEnabled = Settings.ConfigurationSaving.Enabled
- if Settings.ConfigurationSaving.Enabled then
- if not isfolder(ConfigurationFolder) then
- makefolder(ConfigurationFolder)
- end
- end
- end)
- AddDraggingFunctionality(Topbar,Main)
- for _, TabButton in ipairs(TabList:GetChildren()) do
- if TabButton.ClassName == "Frame" and TabButton.Name ~= "Placeholder" then
- TabButton.BackgroundTransparency = 1
- TabButton.Title.TextTransparency = 1
- TabButton.UIStroke.Transparency = 1
- end
- end
- if Settings.KeySystem then
- local AttemptsRemaining = math.random(3,6)
- Rayfield.Enabled = false
- local KeyUI = game:GetObjects("rbxassetid://11380036235")[1]
- if gethui then
- KeyUI.Parent = gethui()
- elseif syn.protect_gui then
- syn.protect_gui(Rayfield)
- KeyUI.Parent = CoreGui
- else
- KeyUI.Parent = CoreGui
- end
- if gethui then
- for _, Interface in ipairs(gethui():GetChildren()) do
- if Interface.Name == KeyUI.Name and Interface ~= KeyUI then
- Interface.Enabled = false
- Interface.Name = "KeyUI-Old"
- end
- end
- else
- for _, Interface in ipairs(CoreGui:GetChildren()) do
- if Interface.Name == KeyUI.Name and Interface ~= KeyUI then
- Interface.Enabled = false
- Interface.Name = "KeyUI-Old"
- end
- end
- end
- local KeyMain = KeyUI.Main
- KeyMain.Title.Text = Settings.KeySettings.Title or Settings.Name
- KeyMain.Subtitle.Text = Settings.KeySettings.Subtitle or "Key System"
- KeyMain.NoteMessage.Text = Settings.KeySettings.Note or "No instructions"
- KeyMain.Size = UDim2.new(0, 467, 0, 175)
- KeyMain.BackgroundTransparency = 1
- KeyMain.Shadow.Image.ImageTransparency = 1
- KeyMain.Title.TextTransparency = 1
- KeyMain.Subtitle.TextTransparency = 1
- KeyMain.KeyNote.TextTransparency = 1
- KeyMain.Input.BackgroundTransparency = 1
- KeyMain.Input.UIStroke.Transparency = 1
- KeyMain.Input.InputBox.TextTransparency = 1
- KeyMain.NoteTitle.TextTransparency = 1
- KeyMain.NoteMessage.TextTransparency = 1
- KeyMain.Hide.ImageTransparency = 1
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 187)}):Play()
- TweenService:Create(KeyMain.Shadow.Image, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {ImageTransparency = 0.5}):Play()
- wait(0.05)
- TweenService:Create(KeyMain.Title, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- TweenService:Create(KeyMain.Subtitle, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- wait(0.05)
- TweenService:Create(KeyMain.KeyNote, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- TweenService:Create(KeyMain.Input, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(KeyMain.Input.UIStroke, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(KeyMain.Input.InputBox, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- wait(0.05)
- TweenService:Create(KeyMain.NoteTitle, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- TweenService:Create(KeyMain.NoteMessage, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- wait(0.15)
- TweenService:Create(KeyMain.Hide, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {ImageTransparency = 0.3}):Play()
- KeyUI.Main.Input.InputBox.FocusLost:Connect(function()
- if KeyMain.Input.InputBox.Text == Settings.KeySettings.Key then
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 467, 0, 175)}):Play()
- TweenService:Create(KeyMain.Shadow.Image, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- TweenService:Create(KeyMain.Title, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Subtitle, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.KeyNote, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Input, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(KeyMain.Input.UIStroke, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(KeyMain.Input.InputBox, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.NoteTitle, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.NoteMessage, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Hide, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- wait(0.51)
- Passthrough = true
- else
- if AttemptsRemaining == 0 then
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 467, 0, 175)}):Play()
- TweenService:Create(KeyMain.Shadow.Image, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- TweenService:Create(KeyMain.Title, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Subtitle, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.KeyNote, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Input, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(KeyMain.Input.UIStroke, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(KeyMain.Input.InputBox, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.NoteTitle, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.NoteMessage, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Hide, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- wait(0.45)
- game:Shutdown()
- game.Players.LocalPlayer:Kick("no attempts remaining")
- end
- KeyMain.Input.InputBox.Text = ""
- AttemptsRemaining = AttemptsRemaining - 1
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 467, 0, 175)}):Play()
- TweenService:Create(KeyMain, TweenInfo.new(0.4, Enum.EasingStyle.Elastic), {Position = UDim2.new(0.495,0,0.5,0)}):Play()
- wait(0.1)
- TweenService:Create(KeyMain, TweenInfo.new(0.4, Enum.EasingStyle.Elastic), {Position = UDim2.new(0.505,0,0.5,0)}):Play()
- wait(0.1)
- TweenService:Create(KeyMain, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {Position = UDim2.new(0.5,0,0.5,0)}):Play()
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 187)}):Play()
- end
- end)
- KeyMain.Hide.MouseButton1Click:Connect(function()
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(KeyMain, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 467, 0, 175)}):Play()
- TweenService:Create(KeyMain.Shadow.Image, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- TweenService:Create(KeyMain.Title, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Subtitle, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.KeyNote, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Input, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(KeyMain.Input.UIStroke, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(KeyMain.Input.InputBox, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.NoteTitle, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.NoteMessage, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(KeyMain.Hide, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {ImageTransparency = 1}):Play()
- wait(0.51)
- RayfieldLibrary:Destroy()
- KeyUI:Destroy()
- end)
- else
- Passthrough = true
- end
- repeat wait() until Passthrough
- Notifications.Template.Visible = false
- Notifications.Visible = true
- Rayfield.Enabled = true
- wait(0.5)
- TweenService:Create(Main, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Main.Shadow.Image, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.55}):Play()
- wait(0.1)
- TweenService:Create(LoadingFrame.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- wait(0.05)
- TweenService:Create(LoadingFrame.Subtitle, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- wait(0.05)
- TweenService:Create(LoadingFrame.Version, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- Elements.Template.LayoutOrder = 100000
- Elements.Template.Visible = false
- Elements.UIPageLayout.FillDirection = Enum.FillDirection.Horizontal
- TabList.Template.Visible = false
- -- Tab
- local FirstTab = false
- local Window = {}
- function Window:CreateTab(Name)
- local SDone = false
- local TabButton = TabList.Template:Clone()
- TabButton.Name = Name
- TabButton.Title.Text = Name
- TabButton.Parent = TabList
- TabButton.Title.TextWrapped = false
- TabButton.Size = UDim2.new(0, TabButton.Title.TextBounds.X + 30, 0, 30)
- TabButton.BackgroundTransparency = 1
- TabButton.Title.TextTransparency = 1
- TabButton.UIStroke.Transparency = 1
- TabButton.Visible = true
- -- Create Elements Page
- local TabPage = Elements.Template:Clone()
- TabPage.Name = Name
- TabPage.Visible = true
- TabPage.LayoutOrder = #Elements:GetChildren()
- for _, TemplateElement in ipairs(TabPage:GetChildren()) do
- if TemplateElement.ClassName == "Frame" and TemplateElement.Name ~= "Placeholder" then
- TemplateElement:Destroy()
- end
- end
- TabPage.Parent = Elements
- if not FirstTab then
- Elements.UIPageLayout.Animated = false
- Elements.UIPageLayout:JumpTo(TabPage)
- Elements.UIPageLayout.Animated = true
- end
- -- Animate
- wait(0.1)
- if FirstTab then
- TabButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
- TweenService:Create(TabButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0.7}):Play()
- TweenService:Create(TabButton.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0.2}):Play()
- TweenService:Create(TabButton.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- else
- FirstTab = Name
- TabButton.BackgroundColor3 = Color3.fromRGB(210, 210, 210)
- TabButton.Title.TextColor3 = Color3.fromRGB(50, 50, 50)
- TweenService:Create(TabButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(TabButton.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- end
- TabButton.Interact.MouseButton1Click:Connect(function()
- if Minimised then return end
- TweenService:Create(TabButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(TabButton.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(TabButton.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- TweenService:Create(TabButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(210, 210, 210)}):Play()
- TweenService:Create(TabButton.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextColor3 = Color3.fromRGB(50, 50, 50)}):Play()
- for _, OtherTabButton in ipairs(TabList:GetChildren()) do
- if OtherTabButton.Name ~= "Template" and OtherTabButton.ClassName == "Frame" and OtherTabButton ~= TabButton and OtherTabButton.Name ~= "Placeholder" then
- TweenService:Create(OtherTabButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(80, 80, 80)}):Play()
- TweenService:Create(OtherTabButton.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextColor3 = Color3.fromRGB(240, 240, 240)}):Play()
- TweenService:Create(OtherTabButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0.7}):Play()
- TweenService:Create(OtherTabButton.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0.2}):Play()
- TweenService:Create(OtherTabButton.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- end
- end
- if Elements.UIPageLayout.CurrentPage ~= TabPage then
- TweenService:Create(Elements, TweenInfo.new(1, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 460,0, 330)}):Play()
- Elements.UIPageLayout:JumpTo(TabPage)
- wait(0.2)
- TweenService:Create(Elements, TweenInfo.new(0.8, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 475,0, 366)}):Play()
- end
- end)
- local Tab = {}
- -- Button
- function Tab:CreateButton(ButtonSettings)
- local ButtonValue = {}
- local Button = Elements.Template.Button:Clone()
- Button.Name = ButtonSettings.Name
- Button.Title.Text = ButtonSettings.Name
- Button.Visible = true
- Button.Parent = TabPage
- Button.BackgroundTransparency = 1
- Button.UIStroke.Transparency = 1
- Button.Title.TextTransparency = 1
- TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Button.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Button.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- Button.Interact.MouseButton1Click:Connect(function()
- local Success, Response = pcall(ButtonSettings.Callback)
- if not Success then
- -- Notify on unnsuccessful callback
- local TitleBefore = Button.Title.Text
- TweenService:Create(Button, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
- TweenService:Create(Button.ElementIndicator, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(Button.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- Button.Title.Text = "Callback Error"
- wait(0.5)
- Button.Title.Text = TitleBefore
- TweenService:Create(Button, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- TweenService:Create(Button.ElementIndicator, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 0.9}):Play()
- TweenService:Create(Button.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- else
- SaveConfiguration()
- TweenService:Create(Button, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(45, 45, 45)}):Play()
- TweenService:Create(Button.ElementIndicator, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(Button.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- wait(0.2)
- TweenService:Create(Button, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- TweenService:Create(Button.ElementIndicator, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 0.9}):Play()
- TweenService:Create(Button.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- end
- end)
- Button.MouseEnter:Connect(function()
- TweenService:Create(Button, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(40, 40, 40)}):Play()
- TweenService:Create(Button.ElementIndicator, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 0.7}):Play()
- end)
- Button.MouseLeave:Connect(function()
- TweenService:Create(Button, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- TweenService:Create(Button.ElementIndicator, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {TextTransparency = 0.9}):Play()
- end)
- function ButtonValue:Set(NewButton)
- Button.Title.Text = NewButton
- Button.Name = NewButton
- end
- return ButtonValue
- end
- -- Section
- function Tab:CreateSection(SectionName)
- local SectionValue = {}
- if SDone then
- local SectionSpace = Elements.Template.SectionSpacing:Clone()
- SectionSpace.Visible = true
- SectionSpace.Parent = TabPage
- end
- local Section = Elements.Template.SectionTitle:Clone()
- Section.Title.Text = SectionName
- Section.Visible = true
- Section.Parent = TabPage
- Section.Title.TextTransparency = 1
- TweenService:Create(Section.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- function SectionValue:Set(NewSection)
- Section.Title.Text = NewSection
- end
- SDone = true
- return SectionValue
- end
- -- Label
- function Tab:CreateLabel(LabelText)
- local LabelValue = {}
- local Label = Elements.Template.Label:Clone()
- Label.Title.Text = LabelText
- Label.Visible = true
- Label.Parent = TabPage
- Label.BackgroundTransparency = 1
- Label.UIStroke.Transparency = 1
- Label.Title.TextTransparency = 1
- TweenService:Create(Label, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Label.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Label.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- function LabelValue:Set(NewLabel)
- Label.Title.Text = NewLabel
- end
- return LabelValue
- end
- -- Paragraph
- function Tab:CreateParagraph(ParagraphSettings)
- local ParagraphValue = {}
- local Paragraph = Elements.Template.Paragraph:Clone()
- Paragraph.Title.Text = ParagraphSettings.Title
- Paragraph.Content.Text = ParagraphSettings.Content
- Paragraph.Visible = true
- Paragraph.Parent = TabPage
- Paragraph.Content.Size = UDim2.new(0, 438, 0, Paragraph.Content.TextBounds.Y)
- Paragraph.Content.Position = UDim2.new(1, -10, 0.575,0 )
- Paragraph.Size = UDim2.new(1, -10, 0, Paragraph.Content.TextBounds.Y + 40)
- Paragraph.BackgroundTransparency = 1
- Paragraph.UIStroke.Transparency = 1
- Paragraph.Title.TextTransparency = 1
- Paragraph.Content.TextTransparency = 1
- TweenService:Create(Paragraph, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Paragraph.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Paragraph.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- TweenService:Create(Paragraph.Content, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- function ParagraphValue:Set(NewParagraphSettings)
- Paragraph.Title.Text = NewParagraphSettings.Title
- Paragraph.Content.Text = NewParagraphSettings.Content
- end
- return ParagraphValue
- end
- -- Input
- function Tab:CreateInput(InputSettings)
- local Input = Elements.Template.Input:Clone()
- Input.Name = InputSettings.Name
- Input.Title.Text = InputSettings.Name
- Input.Visible = true
- Input.Parent = TabPage
- Input.BackgroundTransparency = 1
- Input.UIStroke.Transparency = 1
- Input.Title.TextTransparency = 1
- TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Input.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- Input.InputFrame.InputBox.PlaceholderText = InputSettings.PlaceholderText
- Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 24, 0, 30)
- Input.InputFrame.InputBox.FocusLost:Connect(function()
- InputSettings.Callback(Input.InputFrame.InputBox.Text)
- if InputSettings.RemoveTextAfterFocusLost then
- Input.InputFrame.InputBox.Text = ""
- end
- SaveConfiguration()
- end)
- Input.MouseEnter:Connect(function()
- TweenService:Create(Input, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(40, 40, 40)}):Play()
- end)
- Input.MouseLeave:Connect(function()
- TweenService:Create(Input, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- end)
- Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()
- TweenService:Create(Input.InputFrame, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 24, 0, 30)}):Play()
- end)
- end
- -- Dropdown
- function Tab:CreateDropdown(DropdownSettings)
- local Dropdown = Elements.Template.Dropdown:Clone()
- if string.find(DropdownSettings.Name,"closed") then
- Dropdown.Name = "Dropdown"
- else
- Dropdown.Name = DropdownSettings.Name
- end
- Dropdown.Title.Text = DropdownSettings.Name
- Dropdown.Visible = true
- Dropdown.Parent = TabPage
- Dropdown.List.Visible = false
- Dropdown.Selected.Text = DropdownSettings.CurrentOption
- Dropdown.BackgroundTransparency = 1
- Dropdown.UIStroke.Transparency = 1
- Dropdown.Title.TextTransparency = 1
- Dropdown.Size = UDim2.new(1, -10, 0, 45)
- TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Dropdown.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Dropdown.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- for _, ununusedoption in ipairs(Dropdown.List:GetChildren()) do
- if ununusedoption.ClassName == "Frame" and ununusedoption.Name ~= "Placeholder" then
- ununusedoption:Destroy()
- end
- end
- Dropdown.Toggle.Rotation = 180
- Dropdown.Interact.MouseButton1Click:Connect(function()
- TweenService:Create(Dropdown, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(45, 45, 45)}):Play()
- TweenService:Create(Dropdown.UIStroke, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- wait(0.1)
- TweenService:Create(Dropdown, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- TweenService:Create(Dropdown.UIStroke, TweenInfo.new(0.4, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- if Debounce then return end
- if Dropdown.List.Visible then
- Debounce = true
- TweenService:Create(Dropdown, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(1, -10, 0, 45)}):Play()
- for _, DropdownOpt in ipairs(Dropdown.List:GetChildren()) do
- if DropdownOpt.ClassName == "Frame" and DropdownOpt.Name ~= "Placeholder" then
- TweenService:Create(DropdownOpt, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(DropdownOpt.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(DropdownOpt.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- end
- end
- TweenService:Create(Dropdown.List, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {ScrollBarImageTransparency = 1}):Play()
- TweenService:Create(Dropdown.Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Rotation = 180}):Play()
- wait(0.35)
- Dropdown.List.Visible = false
- Debounce = false
- else
- TweenService:Create(Dropdown, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(1, -10, 0, 180)}):Play()
- Dropdown.List.Visible = true
- TweenService:Create(Dropdown.List, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {ScrollBarImageTransparency = 0.7}):Play()
- TweenService:Create(Dropdown.Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Rotation = 0}):Play()
- for _, DropdownOpt in ipairs(Dropdown.List:GetChildren()) do
- if DropdownOpt.ClassName == "Frame" and DropdownOpt.Name ~= "Placeholder" then
- TweenService:Create(DropdownOpt, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(DropdownOpt.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(DropdownOpt.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- end
- end
- end
- end)
- Dropdown.MouseEnter:Connect(function()
- if not Dropdown.List.Visible then
- TweenService:Create(Dropdown, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(40, 40, 40)}):Play()
- end
- end)
- Dropdown.MouseLeave:Connect(function()
- TweenService:Create(Dropdown, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- end)
- for _, Option in ipairs(DropdownSettings.Options) do
- local DropdownOption = Elements.Template.Dropdown.List.Template:Clone()
- DropdownOption.Name = Option
- DropdownOption.Title.Text = Option
- DropdownOption.Parent = Dropdown.List
- DropdownOption.Visible = true
- if DropdownSettings.CurrentOption == Option then
- DropdownOption.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
- end
- DropdownOption.BackgroundTransparency = 1
- DropdownOption.UIStroke.Transparency = 1
- DropdownOption.Title.TextTransparency = 1
- DropdownOption.Interact.ZIndex = 50
- DropdownOption.Interact.MouseButton1Click:Connect(function()
- if Dropdown.Selected.Text ~= Option then
- Dropdown.Selected.Text = Option
- DropdownSettings.Callback(Option)
- DropdownSettings.CurrentOption = Option
- for _, droption in ipairs(Dropdown.List:GetChildren()) do
- if droption.ClassName == "Frame" and droption.Name ~= "Placeholder" and droption.Name ~= DropdownSettings.CurrentOption then
- TweenService:Create(droption, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(30, 30, 30)}):Play()
- end
- end
- TweenService:Create(DropdownOption.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(DropdownOption, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(40, 40, 40)}):Play()
- Debounce = true
- wait(0.2)
- TweenService:Create(DropdownOption.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- wait(0.1)
- TweenService:Create(Dropdown, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {Size = UDim2.new(1, -10, 0, 45)}):Play()
- for _, DropdownOpt in ipairs(Dropdown.List:GetChildren()) do
- if DropdownOpt.ClassName == "Frame" and DropdownOpt.Name ~= "Placeholder" then
- TweenService:Create(DropdownOpt, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {BackgroundTransparency = 1}):Play()
- TweenService:Create(DropdownOpt.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(DropdownOpt.Title, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- end
- end
- TweenService:Create(Dropdown.List, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {ScrollBarImageTransparency = 1}):Play()
- TweenService:Create(Dropdown.Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Rotation = 180}):Play()
- wait(0.35)
- Dropdown.List.Visible = false
- Debounce = false
- SaveConfiguration()
- end
- end)
- end
- function DropdownSettings:Set(NewOption)
- Dropdown.Selected.Text = NewOption
- DropdownSettings.CurrentOption = NewOption
- DropdownSettings.Callback(NewOption)
- for _, droption in ipairs(Dropdown.List:GetChildren()) do
- if droption.Name ~= NewOption then
- if droption.ClassName == "Frame" and droption.Name ~= "Placeholder" then
- droption.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
- end
- else
- droption.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
- end
- end
- end
- if Settings.ConfigurationSaving then
- if Settings.ConfigurationSaving.Enabled and DropdownSettings.Flag then
- Flags[DropdownSettings.Flag] = DropdownSettings
- end
- end
- return DropdownSettings
- end
- -- Keybind
- function Tab:CreateKeybind(KeybindSettings)
- local CheckingForKey = false
- local Keybind = Elements.Template.Keybind:Clone()
- Keybind.Name = KeybindSettings.Name
- Keybind.Title.Text = KeybindSettings.Name
- Keybind.Visible = true
- Keybind.Parent = TabPage
- Keybind.BackgroundTransparency = 1
- Keybind.UIStroke.Transparency = 1
- Keybind.Title.TextTransparency = 1
- TweenService:Create(Keybind, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Keybind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Keybind.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- Keybind.KeybindFrame.KeybindBox.Text = KeybindSettings.CurrentKeybind
- Keybind.KeybindFrame.Size = UDim2.new(0, Keybind.KeybindFrame.KeybindBox.TextBounds.X + 24, 0, 30)
- Keybind.KeybindFrame.KeybindBox.Focused:Connect(function()
- CheckingForKey = true
- Keybind.KeybindFrame.KeybindBox.Text = ""
- end)
- Keybind.KeybindFrame.KeybindBox.FocusLost:Connect(function()
- CheckingForKey = false
- if Keybind.KeybindFrame.KeybindBox.Text == nil or "" then
- Keybind.KeybindFrame.KeybindBox.Text = KeybindSettings.CurrentKeybind
- SaveConfiguration()
- end
- end)
- Keybind.MouseEnter:Connect(function()
- TweenService:Create(Keybind, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(40, 40, 40)}):Play()
- end)
- Keybind.MouseLeave:Connect(function()
- TweenService:Create(Keybind, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- end)
- UserInputService.InputBegan:Connect(function(input, processed)
- if CheckingForKey then
- if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode ~= Enum.KeyCode.RightShift then
- local SplitMessage = string.split(tostring(input.KeyCode), ".")
- local NewKeyNoEnum = SplitMessage[3]
- Keybind.KeybindFrame.KeybindBox.Text = tostring(NewKeyNoEnum)
- KeybindSettings.CurrentKeybind = tostring(NewKeyNoEnum)
- Keybind.KeybindFrame.KeybindBox:ReleaseFocus()
- SaveConfiguration()
- end
- elseif (input.KeyCode == Enum.KeyCode[KeybindSettings.CurrentKeybind] and not processed) then
- local Held = true
- local Connection
- Connection = input.Changed:Connect(function(prop)
- if prop == "UserInputState" then
- Connection:Disconnect()
- Held = false
- end
- end)
- if not KeybindSettings.HoldToInteract then
- pcall(KeybindSettings.Callback)
- else
- wait(0.25)
- if Held then
- local Loop; Loop = RunService.Stepped:Connect(function()
- if not Held then
- KeybindSettings.Callback(false)
- Loop:Disconnect()
- else
- KeybindSettings.Callback(true)
- end
- end)
- end
- end
- end
- end)
- Keybind.KeybindFrame.KeybindBox:GetPropertyChangedSignal("Text"):Connect(function()
- TweenService:Create(Keybind.KeybindFrame, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Size = UDim2.new(0, Keybind.KeybindFrame.KeybindBox.TextBounds.X + 24, 0, 30)}):Play()
- end)
- function KeybindSettings:Set(NewKeybind)
- Keybind.KeybindFrame.KeybindBox.Text = tostring(NewKeybind)
- KeybindSettings.CurrentKeybind = tostring(NewKeybind)
- Keybind.KeybindFrame.KeybindBox:ReleaseFocus()
- SaveConfiguration()
- end
- if Settings.ConfigurationSaving then
- if Settings.ConfigurationSaving.Enabled and KeybindSettings.Flag then
- Flags[KeybindSettings.Flag] = KeybindSettings
- end
- end
- return KeybindSettings
- end
- -- Toggle
- function Tab:CreateToggle(ToggleSettings)
- local ToggleValue = {}
- local Toggle = Elements.Template.Toggle:Clone()
- Toggle.Name = ToggleSettings.Name
- Toggle.Title.Text = ToggleSettings.Name
- Toggle.Visible = true
- Toggle.Parent = TabPage
- Toggle.BackgroundTransparency = 1
- Toggle.UIStroke.Transparency = 1
- Toggle.Title.TextTransparency = 1
- TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Toggle.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- if not ToggleSettings.CurrentValue then
- Toggle.Switch.Indicator.Position = UDim2.new(1, -40, 0.5, 0)
- Toggle.Switch.Indicator.UIStroke.Color = Color3.fromRGB(125, 125, 125)
- Toggle.Switch.Indicator.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
- Toggle.Switch.UIStroke.Color = Color3.fromRGB(65, 65, 65)
- else
- Toggle.Switch.Indicator.Position = UDim2.new(1, -20, 0.5, 0)
- Toggle.Switch.Indicator.UIStroke.Color = Color3.fromRGB(0, 170, 255)
- Toggle.Switch.Indicator.BackgroundColor3 = Color3.fromRGB(0, 146, 214)
- Toggle.Switch.UIStroke.Color = Color3.fromRGB(100, 100, 100)
- end
- Toggle.MouseEnter:Connect(function()
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(40, 40, 40)}):Play()
- end)
- Toggle.MouseLeave:Connect(function()
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- end)
- Toggle.Interact.MouseButton1Click:Connect(function()
- if ToggleSettings.CurrentValue then
- ToggleSettings.CurrentValue = false
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(45, 45, 45)}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.45, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Position = UDim2.new(1, -40, 0.5, 0)}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0,12,0,12)}):Play()
- TweenService:Create(Toggle.Switch.Indicator.UIStroke, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Color = Color3.fromRGB(125, 125, 125)}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.8, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {BackgroundColor3 = Color3.fromRGB(100, 100, 100)}):Play()
- TweenService:Create(Toggle.Switch.UIStroke, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Color = Color3.fromRGB(65,65,65)}):Play()
- wait(0.05)
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0,17,0,17)}):Play()
- wait(0.15)
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- else
- ToggleSettings.CurrentValue = true
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(45, 45, 45)}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.5, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Position = UDim2.new(1, -20, 0.5, 0)}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0,12,0,12)}):Play()
- TweenService:Create(Toggle.Switch.Indicator.UIStroke, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Color = Color3.fromRGB(0, 170, 255)}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.8, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {BackgroundColor3 = Color3.fromRGB(0, 146, 214)}):Play()
- TweenService:Create(Toggle.Switch.UIStroke, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Color = Color3.fromRGB(100,100,100)}):Play()
- wait(0.05)
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.45, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0,17,0,17)}):Play()
- wait(0.15)
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- end
- ToggleSettings.Callback(ToggleSettings.CurrentValue)
- SaveConfiguration()
- end)
- function ToggleSettings:Set(NewToggleValue)
- if NewToggleValue then
- ToggleSettings.CurrentValue = true
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(45, 45, 45)}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.5, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Position = UDim2.new(1, -20, 0.5, 0)}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0,12,0,12)}):Play()
- TweenService:Create(Toggle.Switch.Indicator.UIStroke, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Color = Color3.fromRGB(0, 170, 255)}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.8, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {BackgroundColor3 = Color3.fromRGB(0, 146, 214)}):Play()
- TweenService:Create(Toggle.Switch.UIStroke, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Color = Color3.fromRGB(100,100,100)}):Play()
- wait(0.05)
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.45, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0,17,0,17)}):Play()
- wait(0.15)
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- else
- ToggleSettings.CurrentValue = false
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(45, 45, 45)}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 1}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.45, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Position = UDim2.new(1, -40, 0.5, 0)}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0,12,0,12)}):Play()
- TweenService:Create(Toggle.Switch.Indicator.UIStroke, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Color = Color3.fromRGB(125, 125, 125)}):Play()
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.8, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {BackgroundColor3 = Color3.fromRGB(100, 100, 100)}):Play()
- TweenService:Create(Toggle.Switch.UIStroke, TweenInfo.new(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Color = Color3.fromRGB(65,65,65)}):Play()
- wait(0.05)
- TweenService:Create(Toggle.Switch.Indicator, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0,17,0,17)}):Play()
- wait(0.15)
- TweenService:Create(Toggle, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- end
- ToggleSettings.Callback(ToggleSettings.CurrentValue)
- SaveConfiguration()
- end
- if Settings.ConfigurationSaving then
- if Settings.ConfigurationSaving.Enabled and ToggleSettings.Flag then
- Flags[ToggleSettings.Flag] = ToggleSettings
- end
- end
- return ToggleSettings
- end
- -- Slider
- function Tab:CreateSlider(SliderSettings)
- local Slider = Elements.Template.Slider:Clone()
- Slider.Name = SliderSettings.Name
- Slider.Title.Text = SliderSettings.Name
- Slider.Visible = true
- Slider.Parent = TabPage
- Slider.BackgroundTransparency = 1
- Slider.UIStroke.Transparency = 1
- Slider.Title.TextTransparency = 1
- TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Transparency = 0}):Play()
- TweenService:Create(Slider.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- Slider.Main.Progress.Size = UDim2.new(0, Slider.Main.AbsoluteSize.X * ((SliderSettings.CurrentValue + SliderSettings.Range[1]) / (SliderSettings.Range[2] - SliderSettings.Range[1])) > 5 and Slider.Main.AbsoluteSize.X * (SliderSettings.CurrentValue / (SliderSettings.Range[2] - SliderSettings.Range[1])) or 5, 1, 0)
- if not SliderSettings.Suffix then
- Slider.Main.Information.Text = tostring(SliderSettings.CurrentValue)
- else
- Slider.Main.Information.Text = tostring(SliderSettings.CurrentValue) .. " " .. SliderSettings.Suffix
- end
- Slider.MouseEnter:Connect(function()
- TweenService:Create(Slider, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(40, 40, 40)}):Play()
- end)
- Slider.MouseLeave:Connect(function()
- TweenService:Create(Slider, TweenInfo.new(0.6, Enum.EasingStyle.Quint), {BackgroundColor3 = Color3.fromRGB(35, 35, 35)}):Play()
- end)
- Slider.Main.Interact.MouseButton1Down:Connect(function(X)
- local Current = Slider.Main.Progress.AbsolutePosition.X + Slider.Main.Progress.AbsoluteSize.X
- local Start = Current
- local Location = X
- local Loop; Loop = RunService.Stepped:Connect(function()
- if UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then
- Location = UserInputService:GetMouseLocation().X
- Current = Current + 0.025 * (Location - Start)
- if Location < Slider.Main.AbsolutePosition.X then
- Location = Slider.Main.AbsolutePosition.X
- elseif Location > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then
- Location = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X
- end
- if Current < Slider.Main.AbsolutePosition.X + 5 then
- Current = Slider.Main.AbsolutePosition.X + 5
- elseif Current > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then
- Current = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X
- end
- if Current <= Location and (Location - Start) < 0 then
- Start = Location
- elseif Current >= Location and (Location - Start) > 0 then
- Start = Location
- end
- TweenService:Create(Slider.Main.Progress, TweenInfo.new(0.45, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Size = UDim2.new(0, Current - Slider.Main.AbsolutePosition.X, 1, 0)}):Play()
- local NewValue = SliderSettings.Range[1] + (Location - Slider.Main.AbsolutePosition.X) / Slider.Main.AbsoluteSize.X * (SliderSettings.Range[2] - SliderSettings.Range[1])
- NewValue = math.floor(NewValue / SliderSettings.Increment + 0.5) * (SliderSettings.Increment * 10000000) / 10000000
- if not SliderSettings.Suffix then
- Slider.Main.Information.Text = tostring(NewValue)
- else
- Slider.Main.Information.Text = tostring(NewValue) .. " " .. SliderSettings.Suffix
- end
- if SliderSettings.CurrentValue ~= NewValue then
- SliderSettings.Callback(NewValue)
- SliderSettings.CurrentValue = NewValue
- SaveConfiguration()
- end
- else
- TweenService:Create(Slider.Main.Progress, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X > 5 and Location - Slider.Main.AbsolutePosition.X or 5, 1, 0)}):Play()
- Loop:Disconnect()
- end
- end)
- end)
- function SliderSettings:Set(NewVal)
- TweenService:Create(Slider.Main.Progress, TweenInfo.new(0.45, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Size = UDim2.new(0, Slider.Main.AbsoluteSize.X * ((NewVal + SliderSettings.Range[1]) / (SliderSettings.Range[2] - SliderSettings.Range[1])) > 5 and Slider.Main.AbsoluteSize.X * (NewVal / (SliderSettings.Range[2] - SliderSettings.Range[1])) or 5, 1, 0)}):Play()
- Slider.Main.Information.Text = tostring(NewVal) .. " " .. SliderSettings.Suffix
- SliderSettings.Callback(NewVal)
- SliderSettings.CurrentValue = NewVal
- SaveConfiguration()
- end
- if Settings.ConfigurationSaving then
- if Settings.ConfigurationSaving.Enabled and SliderSettings.Flag then
- Flags[SliderSettings.Flag] = SliderSettings
- end
- end
- return SliderSettings
- end
- return Tab
- end
- Elements.Visible = true
- wait(1.2)
- TweenService:Create(LoadingFrame.Title, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(LoadingFrame.Subtitle, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- TweenService:Create(LoadingFrame.Version, TweenInfo.new(0.5, Enum.EasingStyle.Quint), {TextTransparency = 1}):Play()
- wait(0.2)
- TweenService:Create(Main, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 475)}):Play()
- TweenService:Create(Main.Shadow.Image, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.4}):Play()
- Topbar.BackgroundTransparency = 1
- Topbar.Divider.Size = UDim2.new(0, 0, 0, 1)
- Topbar.CornerRepair.BackgroundTransparency = 1
- Topbar.Title.TextTransparency = 1
- Topbar.Lighting.ImageTransparency = 1
- Topbar.ChangeSize.ImageTransparency = 1
- Topbar.Hide.ImageTransparency = 1
- wait(0.8)
- Topbar.Visible = true
- TweenService:Create(Topbar, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- TweenService:Create(Topbar.CornerRepair, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {BackgroundTransparency = 0}):Play()
- wait(0.1)
- TweenService:Create(Topbar.Divider, TweenInfo.new(1, Enum.EasingStyle.Quint), {Size = UDim2.new(1, 0, 0, 1)}):Play()
- wait(0.1)
- TweenService:Create(Topbar.Title, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {TextTransparency = 0}):Play()
- wait(0.1)
- TweenService:Create(Topbar.Lighting, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.8}):Play()
- wait(0.1)
- TweenService:Create(Topbar.ChangeSize, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.8}):Play()
- wait(0.1)
- TweenService:Create(Topbar.Hide, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.8}):Play()
- wait(0.3)
- return Window
- end
- function RayfieldLibrary:Destroy()
- Rayfield:Destroy()
- end
- Topbar.ChangeSize.MouseButton1Click:Connect(function()
- if Debounce then return end
- if Minimised then
- Minimised = false
- Maximise()
- else
- Minimised = true
- Minimise()
- end
- end)
- Topbar.Hide.MouseButton1Click:Connect(function()
- if Debounce then return end
- if Hidden then
- Hidden = false
- Minimised = false
- Unhide()
- else
- Hidden = true
- Hide()
- end
- end)
- UserInputService.InputBegan:Connect(function(input, processed)
- if (input.KeyCode == Enum.KeyCode.RightShift and not processed) then
- if Debounce then return end
- if Hidden then
- Hidden = false
- Unhide()
- else
- Hidden = true
- Hide()
- end
- end
- end)
- for _, TopbarButton in ipairs(Topbar:GetChildren()) do
- if TopbarButton.ClassName == "ImageButton" then
- TopbarButton.MouseEnter:Connect(function()
- TweenService:Create(TopbarButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0}):Play()
- end)
- TopbarButton.MouseLeave:Connect(function()
- TweenService:Create(TopbarButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.8}):Play()
- end)
- TopbarButton.MouseButton1Click:Connect(function()
- TweenService:Create(TopbarButton, TweenInfo.new(0.7, Enum.EasingStyle.Quint), {ImageTransparency = 0.8}):Play()
- end)
- end
- end
- function RayfieldLibrary:LoadConfiguration()
- if CEnabled then
- pcall(function()
- if isfile(ConfigurationFolder .. "/" .. CFileName .. ConfigurationExtension) then
- LoadConfiguration(readfile(ConfigurationFolder .. "/" .. CFileName .. ConfigurationExtension))
- RayfieldLibrary:Notify("Configuration Loaded","The configuration file for this game has been loaded from a previous session")
- end
- end)
- end
- end
- return RayfieldLibrary
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement