--This watermark is used to delete the file if its cached, remove it to make the file persist after vape updates. local mainapi = { Categories = {}, GUIColor = { Hue = 0.46, Sat = 0.96, Value = 0.52 }, HeldKeybinds = {}, Keybind = {'RightShift'}, Loaded = false, Libraries = {}, Modules = {}, Place = game.PlaceId, Profile = 'default', Profiles = {}, RainbowSpeed = {Value = 1}, RainbowUpdateSpeed = {Value = 60}, RainbowTable = {}, Scale = {Value = 1}, ThreadFix = setthreadidentity and true or false, ToggleNotifications = {}, Version = '4.18', Windows = {} } local cloneref = cloneref or function(obj) return obj end local tweenService = cloneref(game:GetService('TweenService')) local inputService = cloneref(game:GetService('UserInputService')) local textService = cloneref(game:GetService('TextService')) local guiService = cloneref(game:GetService('GuiService')) local runService = cloneref(game:GetService('RunService')) local httpService = cloneref(game:GetService('HttpService')) local fontsize = Instance.new('GetTextBoundsParams') fontsize.Width = math.huge local notifications local assetfunction = getcustomasset local getcustomasset local clickgui local scaledgui local toolblur local tooltip local scale local gui local color = {} local tween = { tweens = {}, tweenstwo = {} } local uipallet = { Main = Color3.fromRGB(26, 25, 26), Text = Color3.fromRGB(200, 200, 200), Font = Font.fromEnum(Enum.Font.Arial), FontSemiBold = Font.fromEnum(Enum.Font.Arial, Enum.FontWeight.SemiBold), Tween = TweenInfo.new(0.16, Enum.EasingStyle.Linear) } local getcustomassets = { ['newvape/assets/new/add.png'] = 'rbxassetid://14368300605', ['newvape/assets/new/alert.png'] = 'rbxassetid://14368301329', ['newvape/assets/new/allowedicon.png'] = 'rbxassetid://14368302000', ['newvape/assets/new/allowedtab.png'] = 'rbxassetid://14368302875', ['newvape/assets/new/arrowmodule.png'] = 'rbxassetid://14473354880', ['newvape/assets/new/back.png'] = 'rbxassetid://14368303894', ['newvape/assets/new/bind.png'] = 'rbxassetid://14368304734', ['newvape/assets/new/bindbkg.png'] = 'rbxassetid://14368305655', ['newvape/assets/new/blatanticon.png'] = 'rbxassetid://14368306745', ['newvape/assets/new/blockedicon.png'] = 'rbxassetid://14385669108', ['newvape/assets/new/blockedtab.png'] = 'rbxassetid://14385672881', ['newvape/assets/new/blur.png'] = 'rbxassetid://14898786664', ['newvape/assets/new/blurnotif.png'] = 'rbxassetid://16738720137', ['newvape/assets/new/close.png'] = 'rbxassetid://14368309446', ['newvape/assets/new/closemini.png'] = 'rbxassetid://14368310467', ['newvape/assets/new/colorpreview.png'] = 'rbxassetid://14368311578', ['newvape/assets/new/combaticon.png'] = 'rbxassetid://14368312652', ['newvape/assets/new/customsettings.png'] = 'rbxassetid://14403726449', ['newvape/assets/new/discord.png'] = '', ['newvape/assets/new/dots.png'] = 'rbxassetid://14368314459', ['newvape/assets/new/edit.png'] = 'rbxassetid://14368315443', ['newvape/assets/new/expandicon.png'] = 'rbxassetid://14368353032', ['newvape/assets/new/expandright.png'] = 'rbxassetid://14368316544', ['newvape/assets/new/expandup.png'] = 'rbxassetid://14368317595', ['newvape/assets/new/friendstab.png'] = 'rbxassetid://14397462778', ['newvape/assets/new/guisettings.png'] = 'rbxassetid://14368318994', ['newvape/assets/new/guislider.png'] = 'rbxassetid://14368320020', ['newvape/assets/new/guisliderrain.png'] = 'rbxassetid://14368321228', ['newvape/assets/new/guiv4.png'] = 'rbxassetid://14368322199', ['newvape/assets/new/guivape.png'] = 'rbxassetid://14657521312', ['newvape/assets/new/info.png'] = 'rbxassetid://14368324807', ['newvape/assets/new/inventoryicon.png'] = 'rbxassetid://14928011633', ['newvape/assets/new/legit.png'] = 'rbxassetid://14425650534', ['newvape/assets/new/legittab.png'] = 'rbxassetid://14426740825', ['newvape/assets/new/miniicon.png'] = 'rbxassetid://14368326029', ['newvape/assets/new/notification.png'] = 'rbxassetid://16738721069', ['newvape/assets/new/overlaysicon.png'] = 'rbxassetid://14368339581', ['newvape/assets/new/overlaystab.png'] = 'rbxassetid://14397380433', ['newvape/assets/new/pin.png'] = 'rbxassetid://14368342301', ['newvape/assets/new/profilesicon.png'] = 'rbxassetid://14397465323', ['newvape/assets/new/radaricon.png'] = 'rbxassetid://14368343291', ['newvape/assets/new/rainbow_1.png'] = 'rbxassetid://14368344374', ['newvape/assets/new/rainbow_2.png'] = 'rbxassetid://14368345149', ['newvape/assets/new/rainbow_3.png'] = 'rbxassetid://14368345840', ['newvape/assets/new/rainbow_4.png'] = 'rbxassetid://14368346696', ['newvape/assets/new/range.png'] = 'rbxassetid://14368347435', ['newvape/assets/new/rangearrow.png'] = 'rbxassetid://14368348640', ['newvape/assets/new/rendericon.png'] = 'rbxassetid://14368350193', ['newvape/assets/new/rendertab.png'] = 'rbxassetid://14397373458', ['newvape/assets/new/search.png'] = 'rbxassetid://14425646684', ['newvape/assets/new/targetinfoicon.png'] = 'rbxassetid://14368354234', ['newvape/assets/new/targetnpc1.png'] = 'rbxassetid://14497400332', ['newvape/assets/new/targetnpc2.png'] = 'rbxassetid://14497402744', ['newvape/assets/new/targetplayers1.png'] = 'rbxassetid://14497396015', ['newvape/assets/new/targetplayers2.png'] = 'rbxassetid://14497397862', ['newvape/assets/new/targetstab.png'] = 'rbxassetid://14497393895', ['newvape/assets/new/textguiicon.png'] = 'rbxassetid://14368355456', ['newvape/assets/new/textv4.png'] = 'rbxassetid://14368357095', ['newvape/assets/new/textvape.png'] = 'rbxassetid://14368358200', ['newvape/assets/new/utilityicon.png'] = 'rbxassetid://14368359107', ['newvape/assets/new/vape.png'] = 'rbxassetid://14373395239', ['newvape/assets/new/warning.png'] = 'rbxassetid://14368361552', ['newvape/assets/new/worldicon.png'] = 'rbxassetid://14368362492' } local isfile = isfile or function(file) local suc, res = pcall(function() return readfile(file) end) return suc and res ~= nil and res ~= '' end local getfontsize = function(text, size, font) fontsize.Text = text fontsize.Size = size if typeof(font) == 'Font' then fontsize.Font = font end return textService:GetTextBoundsAsync(fontsize) end local function addBlur(parent, notif) local blur = Instance.new('ImageLabel') blur.Name = 'Blur' blur.Size = UDim2.new(1, 89, 1, 52) blur.Position = UDim2.fromOffset(-48, -31) blur.BackgroundTransparency = 1 blur.Image = getcustomasset('newvape/assets/new/'..(notif and 'blurnotif' or 'blur')..'.png') blur.ScaleType = Enum.ScaleType.Slice blur.SliceCenter = Rect.new(52, 31, 261, 502) blur.Parent = parent return blur end local function addCorner(parent, radius) local corner = Instance.new('UICorner') corner.CornerRadius = radius or UDim.new(0, 5) corner.Parent = parent return corner end local function addCloseButton(parent, offset) local close = Instance.new('ImageButton') close.Name = 'Close' close.Size = UDim2.fromOffset(24, 24) close.Position = UDim2.new(1, -35, 0, offset or 9) close.BackgroundColor3 = Color3.new(1, 1, 1) close.BackgroundTransparency = 1 close.AutoButtonColor = false close.Image = getcustomasset('newvape/assets/new/close.png') close.ImageColor3 = color.Light(uipallet.Text, 0.2) close.ImageTransparency = 0.5 close.Parent = parent addCorner(close, UDim.new(1, 0)) close.MouseEnter:Connect(function() close.ImageTransparency = 0.3 tween:Tween(close, uipallet.Tween, { BackgroundTransparency = 0.6 }) end) close.MouseLeave:Connect(function() close.ImageTransparency = 0.5 tween:Tween(close, uipallet.Tween, { BackgroundTransparency = 1 }) end) return close end local function addMaid(object) object.Connections = {} function object:Clean(callback) if typeof(callback) == 'Instance' then table.insert(self.Connections, { Disconnect = function() callback:ClearAllChildren() callback:Destroy() end }) elseif type(callback) == 'function' then table.insert(self.Connections, { Disconnect = callback }) else table.insert(self.Connections, callback) end end end local function addTooltip(gui, text) if not text then return end local function tooltipMoved(x, y) local right = x + 16 + tooltip.Size.X.Offset > (scale.Scale * 1920) tooltip.Position = UDim2.fromOffset( (right and x - (tooltip.Size.X.Offset * scale.Scale) - 16 or x + 16) / scale.Scale, ((y + 11) - (tooltip.Size.Y.Offset / 2)) / scale.Scale ) tooltip.Visible = toolblur.Visible end gui.MouseEnter:Connect(function(x, y) local tooltipSize = getfontsize(text, tooltip.TextSize, uipallet.Font) tooltip.Size = UDim2.fromOffset(tooltipSize.X + 10, tooltipSize.Y + 10) tooltip.Text = text tooltipMoved(x, y) end) gui.MouseMoved:Connect(tooltipMoved) gui.MouseLeave:Connect(function() tooltip.Visible = false end) end local function checkKeybinds(compare, target, key) if type(target) == 'table' then if table.find(target, key) then for i, v in target do if not table.find(compare, v) then return false end end return true end end return false end local function createDownloader(text) if mainapi.Loaded ~= true then local downloader = mainapi.Downloader if not downloader then downloader = Instance.new('TextLabel') downloader.Size = UDim2.new(1, 0, 0, 40) downloader.BackgroundTransparency = 1 downloader.TextStrokeTransparency = 0 downloader.TextSize = 20 downloader.TextColor3 = Color3.new(1, 1, 1) downloader.FontFace = uipallet.Font downloader.Parent = mainapi.gui mainapi.Downloader = downloader end downloader.Text = 'Downloading '..text end end local function createMobileButton(buttonapi, position) local heldbutton = false local button = Instance.new('TextButton') button.Size = UDim2.fromOffset(40, 40) button.Position = UDim2.fromOffset(position.X, position.Y) button.AnchorPoint = Vector2.new(0.5, 0.5) button.BackgroundColor3 = buttonapi.Enabled and Color3.new(0, 0.7, 0) or Color3.new() button.BackgroundTransparency = 0.5 button.Text = buttonapi.Name button.TextColor3 = Color3.new(1, 1, 1) button.TextScaled = true button.Font = Enum.Font.Gotham button.Parent = mainapi.gui local buttonconstraint = Instance.new('UITextSizeConstraint') buttonconstraint.MaxTextSize = 16 buttonconstraint.Parent = button addCorner(button, UDim.new(1, 0)) button.MouseButton1Down:Connect(function() heldbutton = true local holdtime, holdpos = tick(), inputService:GetMouseLocation() repeat heldbutton = (inputService:GetMouseLocation() - holdpos).Magnitude < 6 task.wait() until (tick() - holdtime) > 1 or not heldbutton if heldbutton then buttonapi.Bind = {} button:Destroy() end end) button.MouseButton1Up:Connect(function() heldbutton = false end) button.MouseButton1Click:Connect(function() buttonapi:Toggle() button.BackgroundColor3 = buttonapi.Enabled and Color3.new(0, 0.7, 0) or Color3.new() end) buttonapi.Bind = {Button = button} end local function downloadFile(path, func) if not isfile(path) then createDownloader(path) local suc, res = pcall(function() return game:HttpGet('https://raw.githubusercontent.com/7GrandDadPGN/VapeV4ForRoblox/'..readfile('newvape/profiles/commit.txt')..'/'..select(1, path:gsub('newvape/', '')), true) end) if not suc or res == '404: Not Found' then error(res) end if path:find('.lua') then res = '--This watermark is used to delete the file if its cached, remove it to make the file persist after vape updates.\n'..res end writefile(path, res) end return (func or readfile)(path) end getcustomasset = not inputService.TouchEnabled and assetfunction and function(path) return downloadFile(path, assetfunction) end or function(path) return getcustomassets[path] or '' end local function getTableSize(tab) local ind = 0 for _ in tab do ind += 1 end return ind end local function loopClean(tab) for i, v in tab do if type(v) == 'table' then loopClean(v) end tab[i] = nil end end local function loadJson(path) local suc, res = pcall(function() return httpService:JSONDecode(readfile(path)) end) return suc and type(res) == 'table' and res or nil end local function makeDraggable(gui, window) gui.InputBegan:Connect(function(inputObj) if window and not window.Visible then return end if (inputObj.UserInputType == Enum.UserInputType.MouseButton1 or inputObj.UserInputType == Enum.UserInputType.Touch) and (inputObj.Position.Y - gui.AbsolutePosition.Y < 40 or window) then local dragPosition = Vector2.new( gui.AbsolutePosition.X - inputObj.Position.X, gui.AbsolutePosition.Y - inputObj.Position.Y + guiService:GetGuiInset().Y ) / scale.Scale local changed = inputService.InputChanged:Connect(function(input) if input.UserInputType == (inputObj.UserInputType == Enum.UserInputType.MouseButton1 and Enum.UserInputType.MouseMovement or Enum.UserInputType.Touch) then local position = input.Position if inputService:IsKeyDown(Enum.KeyCode.LeftShift) then dragPosition = (dragPosition // 3) * 3 position = (position // 3) * 3 end gui.Position = UDim2.fromOffset((position.X / scale.Scale) + dragPosition.X, (position.Y / scale.Scale) + dragPosition.Y) end end) local ended ended = inputObj.Changed:Connect(function() if inputObj.UserInputState == Enum.UserInputState.End then if changed then changed:Disconnect() end if ended then ended:Disconnect() end end end) end end) end local function randomString() local array = {} for i = 1, math.random(10, 100) do array[i] = string.char(math.random(32, 126)) end return table.concat(array) end local function removeTags(str) str = str:gsub('', '\n') return str:gsub('<[^<>]->', '') end do local res = isfile('newvape/profiles/color.txt') and loadJson('newvape/profiles/color.txt') if res then uipallet.Main = res.Main and Color3.fromRGB(unpack(res.Main)) or uipallet.Main uipallet.Text = res.Text and Color3.fromRGB(unpack(res.Text)) or uipallet.Text uipallet.Font = res.Font and Font.new( res.Font:find('rbxasset') and res.Font or string.format('rbxasset://fonts/families/%s.json', res.Font) ) or uipallet.Font uipallet.FontSemiBold = Font.new(uipallet.Font.Family, Enum.FontWeight.SemiBold) end fontsize.Font = uipallet.Font end do function color.Dark(col, num) local h, s, v = col:ToHSV() return Color3.fromHSV(h, s, math.clamp(select(3, uipallet.Main:ToHSV()) > 0.5 and v + num or v - num, 0, 1)) end function color.Light(col, num) local h, s, v = col:ToHSV() return Color3.fromHSV(h, s, math.clamp(select(3, uipallet.Main:ToHSV()) > 0.5 and v - num or v + num, 0, 1)) end function mainapi:Color(h) local s = 0.75 + (0.15 * math.min(h / 0.03, 1)) if h > 0.57 then s = 0.9 - (0.4 * math.min((h - 0.57) / 0.09, 1)) end if h > 0.66 then s = 0.5 + (0.4 * math.min((h - 0.66) / 0.16, 1)) end if h > 0.87 then s = 0.9 - (0.15 * math.min((h - 0.87) / 0.13, 1)) end return h, s, 1 end function mainapi:TextColor(h, s, v) if v >= 0.7 and (s < 0.6 or h > 0.04 and h < 0.56) then return Color3.new(0.19, 0.19, 0.19) end return Color3.new(1, 1, 1) end end do function tween:Tween(obj, tweeninfo, goal, tab) tab = tab or self.tweens if tab[obj] then tab[obj]:Cancel() tab[obj] = nil end if obj.Parent and obj.Visible then tab[obj] = tweenService:Create(obj, tweeninfo, goal) tab[obj].Completed:Once(function() if tab then tab[obj] = nil tab = nil end end) tab[obj]:Play() else for i, v in goal do obj[i] = v end end end function tween:Cancel(obj) if self.tweens[obj] then self.tweens[obj]:Cancel() self.tweens[obj] = nil end end end mainapi.Libraries = { color = color, getcustomasset = getcustomasset, getfontsize = getfontsize, tween = tween, uipallet = uipallet, } local components components = { Button = function(optionsettings, children, api) local button = Instance.new('TextButton') button.Name = optionsettings.Name..'Button' button.Size = UDim2.new(1, 0, 0, 31) button.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) button.BorderSizePixel = 0 button.AutoButtonColor = false button.Visible = optionsettings.Visible == nil or optionsettings.Visible button.Text = '' button.Parent = children addTooltip(button, optionsettings.Tooltip) local bkg = Instance.new('Frame') bkg.Size = UDim2.fromOffset(200, 27) bkg.Position = UDim2.fromOffset(10, 2) bkg.BackgroundColor3 = color.Light(uipallet.Main, 0.05) bkg.Parent = button addCorner(bkg) local label = Instance.new('TextLabel') label.Size = UDim2.new(1, -4, 1, -4) label.Position = UDim2.fromOffset(2, 2) label.BackgroundColor3 = uipallet.Main label.Text = optionsettings.Name label.TextColor3 = color.Dark(uipallet.Text, 0.16) label.TextSize = 14 label.FontFace = uipallet.Font label.Parent = bkg addCorner(label, UDim.new(0, 4)) optionsettings.Function = optionsettings.Function or function() end button.MouseEnter:Connect(function() tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.0875) }) end) button.MouseLeave:Connect(function() tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.05) }) end) button.MouseButton1Click:Connect(optionsettings.Function) end, ColorSlider = function(optionsettings, children, api) local optionapi = { Type = 'ColorSlider', Hue = optionsettings.DefaultHue or 0.44, Sat = optionsettings.DefaultSat or 1, Value = optionsettings.DefaultValue or 1, Opacity = optionsettings.DefaultOpacity or 1, Rainbow = false, Index = 0 } local function createSlider(name, gradientColor) local slider = Instance.new('TextButton') slider.Name = optionsettings.Name..'Slider'..name slider.Size = UDim2.new(1, 0, 0, 50) slider.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) slider.BorderSizePixel = 0 slider.AutoButtonColor = false slider.Visible = false slider.Text = '' slider.Parent = children local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.fromOffset(60, 30) title.Position = UDim2.fromOffset(10, 2) title.BackgroundTransparency = 1 title.Text = name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = color.Dark(uipallet.Text, 0.16) title.TextSize = 11 title.FontFace = uipallet.Font title.Parent = slider local bkg = Instance.new('Frame') bkg.Name = 'Slider' bkg.Size = UDim2.new(1, -20, 0, 2) bkg.Position = UDim2.fromOffset(10, 37) bkg.BackgroundColor3 = Color3.new(1, 1, 1) bkg.BorderSizePixel = 0 bkg.Parent = slider local gradient = Instance.new('UIGradient') gradient.Color = gradientColor gradient.Parent = bkg local fill = bkg:Clone() fill.Name = 'Fill' fill.Size = UDim2.fromScale(math.clamp(name == 'Saturation' and optionapi.Sat or name == 'Vibrance' and optionapi.Value or optionapi.Opacity, 0.04, 0.96), 1) fill.Position = UDim2.new() fill.BackgroundTransparency = 1 fill.Parent = bkg local knobholder = Instance.new('Frame') knobholder.Name = 'Knob' knobholder.Size = UDim2.fromOffset(24, 4) knobholder.Position = UDim2.fromScale(1, 0.5) knobholder.AnchorPoint = Vector2.new(0.5, 0.5) knobholder.BackgroundColor3 = slider.BackgroundColor3 knobholder.BorderSizePixel = 0 knobholder.Parent = fill local knob = Instance.new('Frame') knob.Name = 'Knob' knob.Size = UDim2.fromOffset(14, 14) knob.Position = UDim2.fromScale(0.5, 0.5) knob.AnchorPoint = Vector2.new(0.5, 0.5) knob.BackgroundColor3 = uipallet.Text knob.Parent = knobholder addCorner(knob, UDim.new(1, 0)) slider.InputBegan:Connect(function(inputObj) if (inputObj.UserInputType == Enum.UserInputType.MouseButton1 or inputObj.UserInputType == Enum.UserInputType.Touch) and (inputObj.Position.Y - slider.AbsolutePosition.Y) > (20 * scale.Scale) then local changed = inputService.InputChanged:Connect(function(input) if input.UserInputType == (inputObj.UserInputType == Enum.UserInputType.MouseButton1 and Enum.UserInputType.MouseMovement or Enum.UserInputType.Touch) then optionapi:SetValue(nil, name == 'Saturation' and math.clamp((input.Position.X - bkg.AbsolutePosition.X) / bkg.AbsoluteSize.X, 0, 1) or nil, name == 'Vibrance' and math.clamp((input.Position.X - bkg.AbsolutePosition.X) / bkg.AbsoluteSize.X, 0, 1) or nil, name == 'Opacity' and math.clamp((input.Position.X - bkg.AbsolutePosition.X) / bkg.AbsoluteSize.X, 0, 1) or nil) end end) local ended ended = inputObj.Changed:Connect(function() if inputObj.UserInputState == Enum.UserInputState.End then if changed then changed:Disconnect() end if ended then ended:Disconnect() end end end) end end) slider.MouseEnter:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(16, 16) }) end) slider.MouseLeave:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(14, 14) }) end) return slider end local slider = Instance.new('TextButton') slider.Name = optionsettings.Name..'Slider' slider.Size = UDim2.new(1, 0, 0, 50) slider.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) slider.BorderSizePixel = 0 slider.AutoButtonColor = false slider.Visible = optionsettings.Visible == nil or optionsettings.Visible slider.Text = '' slider.Parent = children addTooltip(slider, optionsettings.Tooltip) local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.fromOffset(60, 30) title.Position = UDim2.fromOffset(10, 2) title.BackgroundTransparency = 1 title.Text = optionsettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = color.Dark(uipallet.Text, 0.16) title.TextSize = 11 title.FontFace = uipallet.Font title.Parent = slider local valuebox = Instance.new('TextBox') valuebox.Name = 'Box' valuebox.Size = UDim2.fromOffset(60, 15) valuebox.Position = UDim2.new(1, -69, 0, 9) valuebox.BackgroundTransparency = 1 valuebox.Visible = false valuebox.Text = '' valuebox.TextXAlignment = Enum.TextXAlignment.Right valuebox.TextColor3 = color.Dark(uipallet.Text, 0.16) valuebox.TextSize = 11 valuebox.FontFace = uipallet.Font valuebox.ClearTextOnFocus = true valuebox.Parent = slider local bkg = Instance.new('Frame') bkg.Name = 'Slider' bkg.Size = UDim2.new(1, -20, 0, 2) bkg.Position = UDim2.fromOffset(10, 39) bkg.BackgroundColor3 = Color3.new(1, 1, 1) bkg.BorderSizePixel = 0 bkg.Parent = slider local rainbowTable = {} for i = 0, 1, 0.1 do table.insert(rainbowTable, ColorSequenceKeypoint.new(i, Color3.fromHSV(i, 1, 1))) end local gradient = Instance.new('UIGradient') gradient.Color = ColorSequence.new(rainbowTable) gradient.Parent = bkg local fill = bkg:Clone() fill.Name = 'Fill' fill.Size = UDim2.fromScale(math.clamp(optionapi.Hue, 0.04, 0.96), 1) fill.Position = UDim2.new() fill.BackgroundTransparency = 1 fill.Parent = bkg local preview = Instance.new('ImageButton') preview.Name = 'Preview' preview.Size = UDim2.fromOffset(12, 12) preview.Position = UDim2.new(1, -22, 0, 10) preview.BackgroundTransparency = 1 preview.Image = getcustomasset('newvape/assets/new/colorpreview.png') preview.ImageColor3 = Color3.fromHSV(optionapi.Hue, optionapi.Sat, optionapi.Value) preview.ImageTransparency = 1 - optionapi.Opacity preview.Parent = slider local expandbutton = Instance.new('TextButton') expandbutton.Name = 'Expand' expandbutton.Size = UDim2.fromOffset(17, 13) expandbutton.Position = UDim2.new(0, textService:GetTextSize(title.Text, title.TextSize, title.Font, Vector2.new(1000, 1000)).X + 11, 0, 7) expandbutton.BackgroundTransparency = 1 expandbutton.Text = '' expandbutton.Parent = slider local expand = Instance.new('ImageLabel') expand.Name = 'Expand' expand.Size = UDim2.fromOffset(9, 5) expand.Position = UDim2.fromOffset(4, 4) expand.BackgroundTransparency = 1 expand.Image = getcustomasset('newvape/assets/new/expandicon.png') expand.ImageColor3 = color.Dark(uipallet.Text, 0.43) expand.Parent = expandbutton local rainbow = Instance.new('TextButton') rainbow.Name = 'Rainbow' rainbow.Size = UDim2.fromOffset(12, 12) rainbow.Position = UDim2.new(1, -42, 0, 10) rainbow.BackgroundTransparency = 1 rainbow.Text = '' rainbow.Parent = slider local rainbow1 = Instance.new('ImageLabel') rainbow1.Size = UDim2.fromOffset(12, 12) rainbow1.BackgroundTransparency = 1 rainbow1.Image = getcustomasset('newvape/assets/new/rainbow_1.png') rainbow1.ImageColor3 = color.Light(uipallet.Main, 0.37) rainbow1.Parent = rainbow local rainbow2 = rainbow1:Clone() rainbow2.Image = getcustomasset('newvape/assets/new/rainbow_2.png') rainbow2.Parent = rainbow local rainbow3 = rainbow1:Clone() rainbow3.Image = getcustomasset('newvape/assets/new/rainbow_3.png') rainbow3.Parent = rainbow local rainbow4 = rainbow1:Clone() rainbow4.Image = getcustomasset('newvape/assets/new/rainbow_4.png') rainbow4.Parent = rainbow local knobholder = Instance.new('Frame') knobholder.Name = 'Knob' knobholder.Size = UDim2.fromOffset(24, 4) knobholder.Position = UDim2.fromScale(1, 0.5) knobholder.AnchorPoint = Vector2.new(0.5, 0.5) knobholder.BackgroundColor3 = slider.BackgroundColor3 knobholder.BorderSizePixel = 0 knobholder.Parent = fill local knob = Instance.new('Frame') knob.Name = 'Knob' knob.Size = UDim2.fromOffset(14, 14) knob.Position = UDim2.fromScale(0.5, 0.5) knob.AnchorPoint = Vector2.new(0.5, 0.5) knob.BackgroundColor3 = uipallet.Text knob.Parent = knobholder addCorner(knob, UDim.new(1, 0)) optionsettings.Function = optionsettings.Function or function() end local satSlider = createSlider('Saturation', ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0, optionapi.Value)), ColorSequenceKeypoint.new(1, Color3.fromHSV(optionapi.Hue, 1, optionapi.Value)) })) local vibSlider = createSlider('Vibrance', ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0, 0)), ColorSequenceKeypoint.new(1, Color3.fromHSV(optionapi.Hue, optionapi.Sat, 1)) })) local opSlider = createSlider('Opacity', ColorSequence.new({ ColorSequenceKeypoint.new(0, color.Dark(uipallet.Main, 0.02)), ColorSequenceKeypoint.new(1, Color3.fromHSV(optionapi.Hue, optionapi.Sat, optionapi.Value)) })) function optionapi:Save(tab) tab[optionsettings.Name] = { Hue = self.Hue, Sat = self.Sat, Value = self.Value, Opacity = self.Opacity, Rainbow = self.Rainbow } end function optionapi:Load(tab) if tab.Rainbow ~= self.Rainbow then self:Toggle() end if self.Hue ~= tab.Hue or self.Sat ~= tab.Sat or self.Value ~= tab.Value or self.Opacity ~= tab.Opacity then self:SetValue(tab.Hue, tab.Sat, tab.Value, tab.Opacity) end end function optionapi:SetValue(h, s, v, o) self.Hue = h or self.Hue self.Sat = s or self.Sat self.Value = v or self.Value self.Opacity = o or self.Opacity preview.ImageColor3 = Color3.fromHSV(self.Hue, self.Sat, self.Value) preview.ImageTransparency = 1 - self.Opacity satSlider.Slider.UIGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0, self.Value)), ColorSequenceKeypoint.new(1, Color3.fromHSV(self.Hue, 1, self.Value)) }) vibSlider.Slider.UIGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0, 0)), ColorSequenceKeypoint.new(1, Color3.fromHSV(self.Hue, self.Sat, 1)) }) opSlider.Slider.UIGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, color.Dark(uipallet.Main, 0.02)), ColorSequenceKeypoint.new(1, Color3.fromHSV(self.Hue, self.Sat, self.Value)) }) if self.Rainbow then fill.Size = UDim2.fromScale(math.clamp(self.Hue, 0.04, 0.96), 1) else tween:Tween(fill, uipallet.Tween, { Size = UDim2.fromScale(math.clamp(self.Hue, 0.04, 0.96), 1) }) end if s then tween:Tween(satSlider.Slider.Fill, uipallet.Tween, { Size = UDim2.fromScale(math.clamp(self.Sat, 0.04, 0.96), 1) }) end if v then tween:Tween(vibSlider.Slider.Fill, uipallet.Tween, { Size = UDim2.fromScale(math.clamp(self.Value, 0.04, 0.96), 1) }) end if o then tween:Tween(opSlider.Slider.Fill, uipallet.Tween, { Size = UDim2.fromScale(math.clamp(self.Opacity, 0.04, 0.96), 1) }) end optionsettings.Function(self.Hue, self.Sat, self.Value, self.Opacity) end function optionapi:Toggle() self.Rainbow = not self.Rainbow if self.Rainbow then table.insert(mainapi.RainbowTable, self) rainbow1.ImageColor3 = Color3.fromRGB(5, 127, 100) task.delay(0.1, function() if not self.Rainbow then return end rainbow2.ImageColor3 = Color3.fromRGB(228, 125, 43) task.delay(0.1, function() if not self.Rainbow then return end rainbow3.ImageColor3 = Color3.fromRGB(225, 46, 52) end) end) else local ind = table.find(mainapi.RainbowTable, self) if ind then table.remove(mainapi.RainbowTable, ind) end rainbow3.ImageColor3 = color.Light(uipallet.Main, 0.37) task.delay(0.1, function() if self.Rainbow then return end rainbow2.ImageColor3 = color.Light(uipallet.Main, 0.37) task.delay(0.1, function() if self.Rainbow then return end rainbow1.ImageColor3 = color.Light(uipallet.Main, 0.37) end) end) end end local doubleClick = tick() preview.MouseButton1Click:Connect(function() preview.Visible = false valuebox.Visible = true valuebox:CaptureFocus() local text = Color3.fromHSV(optionapi.Hue, optionapi.Sat, optionapi.Value) valuebox.Text = math.round(text.R * 255)..', '..math.round(text.G * 255)..', '..math.round(text.B * 255) end) slider.InputBegan:Connect(function(inputObj) if (inputObj.UserInputType == Enum.UserInputType.MouseButton1 or inputObj.UserInputType == Enum.UserInputType.Touch) and (inputObj.Position.Y - slider.AbsolutePosition.Y) > (20 * scale.Scale) then if doubleClick > tick() then optionapi:Toggle() end doubleClick = tick() + 0.3 local changed = inputService.InputChanged:Connect(function(input) if input.UserInputType == (inputObj.UserInputType == Enum.UserInputType.MouseButton1 and Enum.UserInputType.MouseMovement or Enum.UserInputType.Touch) then optionapi:SetValue(math.clamp((input.Position.X - bkg.AbsolutePosition.X) / bkg.AbsoluteSize.X, 0, 1)) end end) local ended ended = inputObj.Changed:Connect(function() if inputObj.UserInputState == Enum.UserInputState.End then if changed then changed:Disconnect() end if ended then ended:Disconnect() end end end) end end) slider.MouseEnter:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(16, 16) }) end) slider.MouseLeave:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(14, 14) }) end) slider:GetPropertyChangedSignal('Visible'):Connect(function() satSlider.Visible = expand.Rotation == 180 and slider.Visible vibSlider.Visible = satSlider.Visible opSlider.Visible = satSlider.Visible end) expandbutton.MouseEnter:Connect(function() expand.ImageColor3 = color.Dark(uipallet.Text, 0.16) end) expandbutton.MouseLeave:Connect(function() expand.ImageColor3 = color.Dark(uipallet.Text, 0.43) end) expandbutton.MouseButton1Click:Connect(function() satSlider.Visible = not satSlider.Visible vibSlider.Visible = satSlider.Visible opSlider.Visible = satSlider.Visible expand.Rotation = satSlider.Visible and 180 or 0 end) rainbow.MouseButton1Click:Connect(function() optionapi:Toggle() end) valuebox.FocusLost:Connect(function(enter) preview.Visible = true valuebox.Visible = false if enter then local commas = valuebox.Text:split(',') local suc, res = pcall(function() return tonumber(commas[1]) and Color3.fromRGB(tonumber(commas[1]), tonumber(commas[2]), tonumber(commas[3])) or Color3.fromHex(valuebox.Text) end) if suc then if optionapi.Rainbow then optionapi:Toggle() end optionapi:SetValue(res:ToHSV()) end end end) optionapi.Object = slider api.Options[optionsettings.Name] = optionapi return optionapi end, Dropdown = function(optionsettings, children, api) local optionapi = { Type = 'Dropdown', Value = optionsettings.List[1] or 'None', Index = 0 } local dropdown = Instance.new('TextButton') dropdown.Name = optionsettings.Name..'Dropdown' dropdown.Size = UDim2.new(1, 0, 0, 40) dropdown.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) dropdown.BorderSizePixel = 0 dropdown.AutoButtonColor = false dropdown.Visible = optionsettings.Visible == nil or optionsettings.Visible dropdown.Text = '' dropdown.Parent = children addTooltip(dropdown, optionsettings.Tooltip or optionsettings.Name) local bkg = Instance.new('Frame') bkg.Name = 'BKG' bkg.Size = UDim2.new(1, -20, 1, -9) bkg.Position = UDim2.fromOffset(10, 4) bkg.BackgroundColor3 = color.Light(uipallet.Main, 0.034) bkg.Parent = dropdown addCorner(bkg, UDim.new(0, 6)) local button = Instance.new('TextButton') button.Name = 'Dropdown' button.Size = UDim2.new(1, -2, 1, -2) button.Position = UDim2.fromOffset(1, 1) button.BackgroundColor3 = uipallet.Main button.AutoButtonColor = false button.Text = '' button.Parent = bkg local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, 0, 0, 29) title.BackgroundTransparency = 1 title.Text = '         '..optionsettings.Name..' - '..optionapi.Value title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = color.Dark(uipallet.Text, 0.16) title.TextSize = 13 title.TextTruncate = Enum.TextTruncate.AtEnd title.FontFace = uipallet.Font title.Parent = button addCorner(button, UDim.new(0, 6)) local arrow = Instance.new('ImageLabel') arrow.Name = 'Arrow' arrow.Size = UDim2.fromOffset(4, 8) arrow.Position = UDim2.new(1, -17, 0, 11) arrow.BackgroundTransparency = 1 arrow.Image = getcustomasset('newvape/assets/new/expandright.png') arrow.ImageColor3 = Color3.fromRGB(140, 140, 140) arrow.Rotation = 90 arrow.Parent = button optionsettings.Function = optionsettings.Function or function() end local dropdownchildren function optionapi:Save(tab) tab[optionsettings.Name] = {Value = self.Value} end function optionapi:Load(tab) if self.Value ~= tab.Value then self:SetValue(tab.Value) end end function optionapi:Change(list) optionsettings.List = list or {} if not table.find(optionsettings.List, self.Value) then self:SetValue(self.Value) end end function optionapi:SetValue(val, mouse) self.Value = table.find(optionsettings.List, val) and val or optionsettings.List[1] or 'None' title.Text = '         '..optionsettings.Name..' - '..self.Value if dropdownchildren then arrow.Rotation = 90 dropdownchildren:Destroy() dropdownchildren = nil dropdown.Size = UDim2.new(1, 0, 0, 40) end optionsettings.Function(self.Value, mouse) end button.MouseButton1Click:Connect(function() if not dropdownchildren then arrow.Rotation = 270 dropdown.Size = UDim2.new(1, 0, 0, 40 + (#optionsettings.List - 1) * 26) dropdownchildren = Instance.new('Frame') dropdownchildren.Name = 'Children' dropdownchildren.Size = UDim2.new(1, 0, 0, (#optionsettings.List - 1) * 26) dropdownchildren.Position = UDim2.fromOffset(0, 27) dropdownchildren.BackgroundTransparency = 1 dropdownchildren.Parent = button local ind = 0 for _, v in optionsettings.List do if v == optionapi.Value then continue end local dropdownoption = Instance.new('TextButton') dropdownoption.Name = v..'Option' dropdownoption.Size = UDim2.new(1, 0, 0, 26) dropdownoption.Position = UDim2.fromOffset(0, ind * 26) dropdownoption.BackgroundColor3 = uipallet.Main dropdownoption.BorderSizePixel = 0 dropdownoption.AutoButtonColor = false dropdownoption.Text = '         '..v dropdownoption.TextXAlignment = Enum.TextXAlignment.Left dropdownoption.TextColor3 = color.Dark(uipallet.Text, 0.16) dropdownoption.TextSize = 13 dropdownoption.TextTruncate = Enum.TextTruncate.AtEnd dropdownoption.FontFace = uipallet.Font dropdownoption.Parent = dropdownchildren dropdownoption.MouseEnter:Connect(function() tween:Tween(dropdownoption, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.02) }) end) dropdownoption.MouseLeave:Connect(function() tween:Tween(dropdownoption, uipallet.Tween, { BackgroundColor3 = uipallet.Main }) end) dropdownoption.MouseButton1Click:Connect(function() optionapi:SetValue(v, true) end) ind += 1 end else optionapi:SetValue(optionapi.Value, true) end end) dropdown.MouseEnter:Connect(function() tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.0875) }) end) dropdown.MouseLeave:Connect(function() tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.034) }) end) optionapi.Object = dropdown api.Options[optionsettings.Name] = optionapi return optionapi end, Font = function(optionsettings, children, api) local fonts = { optionsettings.Blacklist, 'Custom' } for _, v in Enum.Font:GetEnumItems() do if not table.find(fonts, v.Name) then table.insert(fonts, v.Name) end end local optionapi = {Value = Font.fromEnum(Enum.Font[fonts[1]])} local fontdropdown local fontbox optionsettings.Function = optionsettings.Function or function() end fontdropdown = components.Dropdown({ Name = optionsettings.Name, List = fonts, Function = function(val) fontbox.Object.Visible = val == 'Custom' and fontdropdown.Object.Visible if val ~= 'Custom' then optionapi.Value = Font.fromEnum(Enum.Font[val]) optionsettings.Function(optionapi.Value) else pcall(function() optionapi.Value = Font.fromId(tonumber(fontbox.Value)) end) optionsettings.Function(optionapi.Value) end end, Darker = optionsettings.Darker, Visible = optionsettings.Visible }, children, api) optionapi.Object = fontdropdown.Object fontbox = components.TextBox({ Name = optionsettings.Name..' Asset', Placeholder = 'font (rbxasset)', Function = function() if fontdropdown.Value == 'Custom' then pcall(function() optionapi.Value = Font.fromId(tonumber(fontbox.Value)) end) optionsettings.Function(optionapi.Value) end end, Visible = false, Darker = true }, children, api) fontdropdown.Object:GetPropertyChangedSignal('Visible'):Connect(function() fontbox.Object.Visible = fontdropdown.Object.Visible and fontdropdown.Value == 'Custom' end) return optionapi end, Slider = function(optionsettings, children, api) local optionapi = { Type = 'Slider', Value = optionsettings.Default or optionsettings.Min, Max = optionsettings.Max, Index = getTableSize(api.Options) } local slider = Instance.new('TextButton') slider.Name = optionsettings.Name..'Slider' slider.Size = UDim2.new(1, 0, 0, 50) slider.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) slider.BorderSizePixel = 0 slider.AutoButtonColor = false slider.Visible = optionsettings.Visible == nil or optionsettings.Visible slider.Text = '' slider.Parent = children addTooltip(slider, optionsettings.Tooltip) local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.fromOffset(60, 30) title.Position = UDim2.fromOffset(10, 2) title.BackgroundTransparency = 1 title.Text = optionsettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = color.Dark(uipallet.Text, 0.16) title.TextSize = 11 title.FontFace = uipallet.Font title.Parent = slider local valuebutton = Instance.new('TextButton') valuebutton.Name = 'Value' valuebutton.Size = UDim2.fromOffset(60, 15) valuebutton.Position = UDim2.new(1, -69, 0, 9) valuebutton.BackgroundTransparency = 1 valuebutton.Text = optionapi.Value..(optionsettings.Suffix and ' '..(type(optionsettings.Suffix) == 'function' and optionsettings.Suffix(optionapi.Value) or optionsettings.Suffix) or '') valuebutton.TextXAlignment = Enum.TextXAlignment.Right valuebutton.TextColor3 = color.Dark(uipallet.Text, 0.16) valuebutton.TextSize = 11 valuebutton.FontFace = uipallet.Font valuebutton.Parent = slider local valuebox = Instance.new('TextBox') valuebox.Name = 'Box' valuebox.Size = valuebutton.Size valuebox.Position = valuebutton.Position valuebox.BackgroundTransparency = 1 valuebox.Visible = false valuebox.Text = optionapi.Value valuebox.TextXAlignment = Enum.TextXAlignment.Right valuebox.TextColor3 = color.Dark(uipallet.Text, 0.16) valuebox.TextSize = 11 valuebox.FontFace = uipallet.Font valuebox.ClearTextOnFocus = false valuebox.Parent = slider local bkg = Instance.new('Frame') bkg.Name = 'Slider' bkg.Size = UDim2.new(1, -20, 0, 2) bkg.Position = UDim2.fromOffset(10, 37) bkg.BackgroundColor3 = color.Light(uipallet.Main, 0.034) bkg.BorderSizePixel = 0 bkg.Parent = slider local fill = bkg:Clone() fill.Name = 'Fill' fill.Size = UDim2.fromScale(math.clamp((optionapi.Value - optionsettings.Min) / optionsettings.Max, 0.04, 0.96), 1) fill.Position = UDim2.new() fill.BackgroundColor3 = Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) fill.Parent = bkg local knobholder = Instance.new('Frame') knobholder.Name = 'Knob' knobholder.Size = UDim2.fromOffset(24, 4) knobholder.Position = UDim2.fromScale(1, 0.5) knobholder.AnchorPoint = Vector2.new(0.5, 0.5) knobholder.BackgroundColor3 = slider.BackgroundColor3 knobholder.BorderSizePixel = 0 knobholder.Parent = fill local knob = Instance.new('Frame') knob.Name = 'Knob' knob.Size = UDim2.fromOffset(14, 14) knob.Position = UDim2.fromScale(0.5, 0.5) knob.AnchorPoint = Vector2.new(0.5, 0.5) knob.BackgroundColor3 = Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) knob.Parent = knobholder addCorner(knob, UDim.new(1, 0)) optionsettings.Function = optionsettings.Function or function() end optionsettings.Decimal = optionsettings.Decimal or 1 function optionapi:Save(tab) tab[optionsettings.Name] = { Value = self.Value, Max = self.Max } end function optionapi:Load(tab) local newval = tab.Value == tab.Max and tab.Max ~= self.Max and self.Max or tab.Value if self.Value ~= newval then self:SetValue(newval, nil, true) end end function optionapi:Color(hue, sat, val, rainbowcheck) fill.BackgroundColor3 = rainbowcheck and Color3.fromHSV(mainapi:Color((hue - (self.Index * 0.075)) % 1)) or Color3.fromHSV(hue, sat, val) knob.BackgroundColor3 = fill.BackgroundColor3 end function optionapi:SetValue(value, pos, final) if tonumber(value) == math.huge or value ~= value then return end local check = self.Value ~= value self.Value = value tween:Tween(fill, uipallet.Tween, { Size = UDim2.fromScale(math.clamp(pos or math.clamp(value / optionsettings.Max, 0, 1), 0.04, 0.96), 1) }) valuebutton.Text = self.Value..(optionsettings.Suffix and ' '..(type(optionsettings.Suffix) == 'function' and optionsettings.Suffix(self.Value) or optionsettings.Suffix) or '') if check or final then optionsettings.Function(value, final) end end slider.InputBegan:Connect(function(inputObj) if (inputObj.UserInputType == Enum.UserInputType.MouseButton1 or inputObj.UserInputType == Enum.UserInputType.Touch) and (inputObj.Position.Y - slider.AbsolutePosition.Y) > (20 * scale.Scale) then local newPosition = math.clamp((inputObj.Position.X - bkg.AbsolutePosition.X) / bkg.AbsoluteSize.X, 0, 1) optionapi:SetValue(math.floor((optionsettings.Min + (optionsettings.Max - optionsettings.Min) * newPosition) * optionsettings.Decimal) / optionsettings.Decimal, newPosition) local lastValue = optionapi.Value local lastPosition = newPosition local changed = inputService.InputChanged:Connect(function(input) if input.UserInputType == (inputObj.UserInputType == Enum.UserInputType.MouseButton1 and Enum.UserInputType.MouseMovement or Enum.UserInputType.Touch) then local newPosition = math.clamp((input.Position.X - bkg.AbsolutePosition.X) / bkg.AbsoluteSize.X, 0, 1) optionapi:SetValue(math.floor((optionsettings.Min + (optionsettings.Max - optionsettings.Min) * newPosition) * optionsettings.Decimal) / optionsettings.Decimal, newPosition) lastValue = optionapi.Value lastPosition = newPosition end end) local ended ended = inputObj.Changed:Connect(function() if inputObj.UserInputState == Enum.UserInputState.End then if changed then changed:Disconnect() end if ended then ended:Disconnect() end optionapi:SetValue(lastValue, lastPosition, true) end end) end end) slider.MouseEnter:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(16, 16) }) end) slider.MouseLeave:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(14, 14) }) end) valuebutton.MouseButton1Click:Connect(function() valuebutton.Visible = false valuebox.Visible = true valuebox.Text = optionapi.Value valuebox:CaptureFocus() end) valuebox.FocusLost:Connect(function(enter) valuebutton.Visible = true valuebox.Visible = false if enter and tonumber(valuebox.Text) then optionapi:SetValue(tonumber(valuebox.Text), nil, true) end end) optionapi.Object = slider api.Options[optionsettings.Name] = optionapi return optionapi end, Targets = function(optionsettings, children, api) local optionapi = { Type = 'Targets', Index = getTableSize(api.Options) } local textlist = Instance.new('TextButton') textlist.Name = 'Targets' textlist.Size = UDim2.new(1, 0, 0, 50) textlist.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) textlist.BorderSizePixel = 0 textlist.AutoButtonColor = false textlist.Visible = optionsettings.Visible == nil or optionsettings.Visible textlist.Text = '' textlist.Parent = children addTooltip(textlist, optionsettings.Tooltip) local bkg = Instance.new('Frame') bkg.Name = 'BKG' bkg.Size = UDim2.new(1, -20, 1, -9) bkg.Position = UDim2.fromOffset(10, 4) bkg.BackgroundColor3 = color.Light(uipallet.Main, 0.034) bkg.Parent = textlist addCorner(bkg, UDim.new(0, 4)) local button = Instance.new('TextButton') button.Name = 'TextList' button.Size = UDim2.new(1, -2, 1, -2) button.Position = UDim2.fromOffset(1, 1) button.BackgroundColor3 = uipallet.Main button.AutoButtonColor = false button.Text = '' button.Parent = bkg local buttontitle = Instance.new('TextLabel') buttontitle.Name = 'Title' buttontitle.Size = UDim2.new(1, -5, 0, 15) buttontitle.Position = UDim2.fromOffset(5, 6) buttontitle.BackgroundTransparency = 1 buttontitle.Text = 'Target:' buttontitle.TextXAlignment = Enum.TextXAlignment.Left buttontitle.TextColor3 = color.Dark(uipallet.Text, 0.16) buttontitle.TextSize = 15 buttontitle.TextTruncate = Enum.TextTruncate.AtEnd buttontitle.FontFace = uipallet.Font buttontitle.Parent = button local items = buttontitle:Clone() items.Name = 'Items' items.Position = UDim2.fromOffset(5, 21) items.Text = 'Ignore none' items.TextColor3 = color.Dark(uipallet.Text, 0.16) items.TextSize = 11 items.Parent = button addCorner(button, UDim.new(0, 4)) local tool = Instance.new('Frame') tool.Size = UDim2.fromOffset(65, 12) tool.Position = UDim2.fromOffset(52, 8) tool.BackgroundTransparency = 1 tool.Parent = button local toollist = Instance.new('UIListLayout') toollist.FillDirection = Enum.FillDirection.Horizontal toollist.Padding = UDim.new(0, 6) toollist.Parent = tool local window = Instance.new('TextButton') window.Name = 'TargetsTextWindow' window.Size = UDim2.fromOffset(220, 145) window.BackgroundColor3 = uipallet.Main window.BorderSizePixel = 0 window.AutoButtonColor = false window.Visible = false window.Text = '' window.Parent = clickgui optionapi.Window = window addBlur(window) addCorner(window) local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = UDim2.fromOffset(18, 12) icon.Position = UDim2.fromOffset(10, 15) icon.BackgroundTransparency = 1 icon.Image = getcustomasset('newvape/assets/new/targetstab.png') icon.Parent = window local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -36, 0, 20) title.Position = UDim2.fromOffset(math.abs(title.Size.X.Offset), 11) title.BackgroundTransparency = 1 title.Text = 'Target settings' title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = window local close = addCloseButton(window) optionsettings.Function = optionsettings.Function or function() end function optionapi:Save(tab) tab.Targets = { Players = self.Players.Enabled, NPCs = self.NPCs.Enabled, Invisible = self.Invisible.Enabled, Walls = self.Walls.Enabled } end function optionapi:Load(tab) if self.Players.Enabled ~= tab.Players then self.Players:Toggle() end if self.NPCs.Enabled ~= tab.NPCs then self.NPCs:Toggle() end if self.Invisible.Enabled ~= tab.Invisible then self.Invisible:Toggle() end if self.Walls.Enabled ~= tab.Walls then self.Walls:Toggle() end end function optionapi:Color(hue, sat, val, rainbowcheck) bkg.BackgroundColor3 = rainbowcheck and Color3.fromHSV(mainapi:Color((hue - (self.Index * 0.075)) % 1)) or Color3.fromHSV(hue, sat, val) if self.Players.Enabled then tween:Cancel(self.Players.Object.Frame) self.Players.Object.Frame.BackgroundColor3 = Color3.fromHSV(hue, sat, val) end if self.NPCs.Enabled then tween:Cancel(self.NPCs.Object.Frame) self.NPCs.Object.Frame.BackgroundColor3 = Color3.fromHSV(hue, sat, val) end if self.Invisible.Enabled then tween:Cancel(self.Invisible.Object.Knob) self.Invisible.Object.Knob.BackgroundColor3 = Color3.fromHSV(hue, sat, val) end if self.Walls.Enabled then tween:Cancel(self.Walls.Object.Knob) self.Walls.Object.Knob.BackgroundColor3 = Color3.fromHSV(hue, sat, val) end end optionapi.Players = components.TargetsButton({ Position = UDim2.fromOffset(11, 45), Icon = getcustomasset('newvape/assets/new/targetplayers1.png'), IconSize = UDim2.fromOffset(15, 16), IconParent = tool, ToolIcon = getcustomasset('newvape/assets/new/targetplayers2.png'), ToolSize = UDim2.fromOffset(11, 12), Tooltip = 'Players', Function = optionsettings.Function }, window, tool) optionapi.NPCs = components.TargetsButton({ Position = UDim2.fromOffset(112, 45), Icon = getcustomasset('newvape/assets/new/targetnpc1.png'), IconSize = UDim2.fromOffset(12, 16), IconParent = tool, ToolIcon = getcustomasset('newvape/assets/new/targetnpc2.png'), ToolSize = UDim2.fromOffset(9, 12), Tooltip = 'NPCs', Function = optionsettings.Function }, window, tool) optionapi.Invisible = components.Toggle({ Name = 'Ignore invisible', Function = function() local text = 'none' if optionapi.Invisible.Enabled then text = 'invisible' end if optionapi.Walls.Enabled then text = text == 'none' and 'behind walls' or text..', behind walls' end items.Text = 'Ignore '..text optionsettings.Function() end }, window, {Options = {}}) optionapi.Invisible.Object.Position = UDim2.fromOffset(0, 81) optionapi.Walls = components.Toggle({ Name = 'Ignore behind walls', Function = function() local text = 'none' if optionapi.Invisible.Enabled then text = 'invisible' end if optionapi.Walls.Enabled then text = text == 'none' and 'behind walls' or text..', behind walls' end items.Text = 'Ignore '..text optionsettings.Function() end }, window, {Options = {}}) optionapi.Walls.Object.Position = UDim2.fromOffset(0, 111) if optionsettings.Players then optionapi.Players:Toggle() end if optionsettings.NPCs then optionapi.NPCs:Toggle() end if optionsettings.Invisible then optionapi.Invisible:Toggle() end if optionsettings.Walls then optionapi.Walls:Toggle() end close.MouseButton1Click:Connect(function() window.Visible = false end) button.MouseButton1Click:Connect(function() window.Visible = not window.Visible tween:Cancel(bkg) bkg.BackgroundColor3 = window.Visible and Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) or color.Light(uipallet.Main, 0.37) end) textlist.MouseEnter:Connect(function() if not optionapi.Window.Visible then tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.37) }) end end) textlist.MouseLeave:Connect(function() if not optionapi.Window.Visible then tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.034) }) end end) textlist:GetPropertyChangedSignal('AbsolutePosition'):Connect(function() if mainapi.ThreadFix then setthreadidentity(8) end local actualPosition = (textlist.AbsolutePosition + Vector2.new(0, 60)) / scale.Scale window.Position = UDim2.fromOffset(actualPosition.X + 220, actualPosition.Y) end) optionapi.Object = textlist api.Options.Targets = optionapi return optionapi end, TargetsButton = function(optionsettings, children, api) local optionapi = {Enabled = false} local targetbutton = Instance.new('TextButton') targetbutton.Size = UDim2.fromOffset(98, 31) targetbutton.Position = optionsettings.Position targetbutton.BackgroundColor3 = color.Light(uipallet.Main, 0.05) targetbutton.AutoButtonColor = false targetbutton.Visible = optionsettings.Visible == nil or optionsettings.Visible targetbutton.Text = '' targetbutton.Parent = children addCorner(targetbutton) addTooltip(targetbutton, optionsettings.Tooltip) local bkg = Instance.new('Frame') bkg.Size = UDim2.new(1, -2, 1, -2) bkg.Position = UDim2.fromOffset(1, 1) bkg.BackgroundColor3 = uipallet.Main bkg.Parent = targetbutton addCorner(bkg) local icon = Instance.new('ImageLabel') icon.Size = optionsettings.IconSize icon.Position = UDim2.fromScale(0.5, 0.5) icon.AnchorPoint = Vector2.new(0.5, 0.5) icon.BackgroundTransparency = 1 icon.Image = optionsettings.Icon icon.ImageColor3 = color.Light(uipallet.Main, 0.37) icon.Parent = bkg optionsettings.Function = optionsettings.Function or function() end local tooltipicon function optionapi:Toggle() self.Enabled = not self.Enabled tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = self.Enabled and Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) or uipallet.Main }) tween:Tween(icon, uipallet.Tween, { ImageColor3 = self.Enabled and Color3.new(1, 1, 1) or color.Light(uipallet.Main, 0.37) }) if tooltipicon then tooltipicon:Destroy() end if self.Enabled then tooltipicon = Instance.new('ImageLabel') tooltipicon.Size = optionsettings.ToolSize tooltipicon.BackgroundTransparency = 1 tooltipicon.Image = optionsettings.ToolIcon tooltipicon.ImageColor3 = uipallet.Text tooltipicon.Parent = optionsettings.IconParent end optionsettings.Function(self.Enabled) end targetbutton.MouseEnter:Connect(function() if not optionapi.Enabled then tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value - 0.25) }) tween:Tween(icon, uipallet.Tween, { ImageColor3 = Color3.new(1, 1, 1) }) end end) targetbutton.MouseLeave:Connect(function() if not optionapi.Enabled then tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = uipallet.Main }) tween:Tween(icon, uipallet.Tween, { ImageColor3 = color.Light(uipallet.Main, 0.37) }) end end) targetbutton.MouseButton1Click:Connect(function() optionapi:Toggle() end) optionapi.Object = targetbutton return optionapi end, TextBox = function(optionsettings, children, api) local optionapi = { Type = 'TextBox', Value = optionsettings.Default or '', Index = 0 } local textbox = Instance.new('TextButton') textbox.Name = optionsettings.Name..'TextBox' textbox.Size = UDim2.new(1, 0, 0, 58) textbox.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) textbox.BorderSizePixel = 0 textbox.AutoButtonColor = false textbox.Visible = optionsettings.Visible == nil or optionsettings.Visible textbox.Text = '' textbox.Parent = children addTooltip(textbox, optionsettings.Tooltip) local title = Instance.new('TextLabel') title.Size = UDim2.new(1, -10, 0, 20) title.Position = UDim2.fromOffset(10, 3) title.BackgroundTransparency = 1 title.Text = optionsettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 12 title.FontFace = uipallet.Font title.Parent = textbox local bkg = Instance.new('Frame') bkg.Name = 'BKG' bkg.Size = UDim2.new(1, -20, 0, 29) bkg.Position = UDim2.fromOffset(10, 23) bkg.BackgroundColor3 = color.Light(uipallet.Main, 0.02) bkg.Parent = textbox addCorner(bkg, UDim.new(0, 4)) local box = Instance.new('TextBox') box.Size = UDim2.new(1, -8, 1, 0) box.Position = UDim2.fromOffset(8, 0) box.BackgroundTransparency = 1 box.Text = optionsettings.Default or '' box.PlaceholderText = optionsettings.Placeholder or 'Click to set' box.TextXAlignment = Enum.TextXAlignment.Left box.TextColor3 = color.Dark(uipallet.Text, 0.16) box.PlaceholderColor3 = color.Dark(uipallet.Text, 0.31) box.TextSize = 12 box.FontFace = uipallet.Font box.ClearTextOnFocus = false box.Parent = bkg optionsettings.Function = optionsettings.Function or function() end function optionapi:Save(tab) tab[optionsettings.Name] = {Value = self.Value} end function optionapi:Load(tab) if self.Value ~= tab.Value then self:SetValue(tab.Value) end end function optionapi:SetValue(val, enter) self.Value = val box.Text = val optionsettings.Function(enter) end textbox.MouseButton1Click:Connect(function() box:CaptureFocus() end) box.FocusLost:Connect(function(enter) optionapi:SetValue(box.Text, enter) end) box:GetPropertyChangedSignal('Text'):Connect(function() optionapi:SetValue(box.Text) end) optionapi.Object = textbox api.Options[optionsettings.Name] = optionapi return optionapi end, TextList = function(optionsettings, children, api) local optionapi = { Type = 'TextList', List = optionsettings.Default or {}, ListEnabled = optionsettings.Default or {}, Objects = {}, Window = {Visible = false}, Index = getTableSize(api.Options) } optionsettings.Color = optionsettings.Color or Color3.fromRGB(5, 134, 105) local textlist = Instance.new('TextButton') textlist.Name = optionsettings.Name..'TextList' textlist.Size = UDim2.new(1, 0, 0, 50) textlist.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) textlist.BorderSizePixel = 0 textlist.AutoButtonColor = false textlist.Visible = optionsettings.Visible == nil or optionsettings.Visible textlist.Text = '' textlist.Parent = children addTooltip(textlist, optionsettings.Tooltip) local bkg = Instance.new('Frame') bkg.Name = 'BKG' bkg.Size = UDim2.new(1, -20, 1, -9) bkg.Position = UDim2.fromOffset(10, 4) bkg.BackgroundColor3 = color.Light(uipallet.Main, 0.034) bkg.Parent = textlist addCorner(bkg, UDim.new(0, 4)) local button = Instance.new('TextButton') button.Name = 'TextList' button.Size = UDim2.new(1, -2, 1, -2) button.Position = UDim2.fromOffset(1, 1) button.BackgroundColor3 = uipallet.Main button.AutoButtonColor = false button.Text = '' button.Parent = bkg local buttonicon = Instance.new('ImageLabel') buttonicon.Name = 'Icon' buttonicon.Size = UDim2.fromOffset(14, 12) buttonicon.Position = UDim2.fromOffset(10, 14) buttonicon.BackgroundTransparency = 1 buttonicon.Image = optionsettings.Icon or getcustomasset('newvape/assets/new/allowedicon.png') buttonicon.Parent = button local buttontitle = Instance.new('TextLabel') buttontitle.Name = 'Title' buttontitle.Size = UDim2.new(1, -35, 0, 15) buttontitle.Position = UDim2.fromOffset(35, 6) buttontitle.BackgroundTransparency = 1 buttontitle.Text = optionsettings.Name buttontitle.TextXAlignment = Enum.TextXAlignment.Left buttontitle.TextColor3 = color.Dark(uipallet.Text, 0.16) buttontitle.TextSize = 15 buttontitle.TextTruncate = Enum.TextTruncate.AtEnd buttontitle.FontFace = uipallet.Font buttontitle.Parent = button local amount = buttontitle:Clone() amount.Name = 'Amount' amount.Size = UDim2.new(1, -13, 0, 15) amount.Position = UDim2.fromOffset(0, 6) amount.Text = '0' amount.TextXAlignment = Enum.TextXAlignment.Right amount.Parent = button local items = buttontitle:Clone() items.Name = 'Items' items.Position = UDim2.fromOffset(35, 21) items.Text = 'None' items.TextColor3 = color.Dark(uipallet.Text, 0.43) items.TextSize = 11 items.Parent = button addCorner(button, UDim.new(0, 4)) local window = Instance.new('TextButton') window.Name = optionsettings.Name..'TextWindow' window.Size = UDim2.fromOffset(220, 85) window.BackgroundColor3 = uipallet.Main window.BorderSizePixel = 0 window.AutoButtonColor = false window.Visible = false window.Text = '' window.Parent = api.Legit and mainapi.Legit.Window or clickgui optionapi.Window = window addBlur(window) addCorner(window) local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = optionsettings.TabSize or UDim2.fromOffset(19, 16) icon.Position = UDim2.fromOffset(10, 13) icon.BackgroundTransparency = 1 icon.Image = optionsettings.Tab or getcustomasset('newvape/assets/new/allowedtab.png') icon.Parent = window local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -36, 0, 20) title.Position = UDim2.fromOffset(math.abs(title.Size.X.Offset), 11) title.BackgroundTransparency = 1 title.Text = optionsettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = window local close = addCloseButton(window) local addbkg = Instance.new('Frame') addbkg.Name = 'Add' addbkg.Size = UDim2.fromOffset(200, 31) addbkg.Position = UDim2.fromOffset(10, 45) addbkg.BackgroundColor3 = color.Light(uipallet.Main, 0.02) addbkg.Parent = window addCorner(addbkg) local addbox = addbkg:Clone() addbox.Size = UDim2.new(1, -2, 1, -2) addbox.Position = UDim2.fromOffset(1, 1) addbox.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) addbox.Parent = addbkg local addvalue = Instance.new('TextBox') addvalue.Size = UDim2.new(1, -35, 1, 0) addvalue.Position = UDim2.fromOffset(10, 0) addvalue.BackgroundTransparency = 1 addvalue.Text = '' addvalue.PlaceholderText = optionsettings.Placeholder or 'Add entry...' addvalue.TextXAlignment = Enum.TextXAlignment.Left addvalue.TextColor3 = Color3.new(1, 1, 1) addvalue.TextSize = 15 addvalue.FontFace = uipallet.Font addvalue.ClearTextOnFocus = false addvalue.Parent = addbkg local addbutton = Instance.new('ImageButton') addbutton.Name = 'AddButton' addbutton.Size = UDim2.fromOffset(16, 16) addbutton.Position = UDim2.new(1, -26, 0, 8) addbutton.BackgroundTransparency = 1 addbutton.Image = getcustomasset('newvape/assets/new/add.png') addbutton.ImageColor3 = optionsettings.Color addbutton.ImageTransparency = 0.3 addbutton.Parent = addbkg optionsettings.Function = optionsettings.Function or function() end function optionapi:Save(tab) tab[optionsettings.Name] = { List = self.List, ListEnabled = self.ListEnabled } end function optionapi:Load(tab) self.List = tab.List or {} self.ListEnabled = tab.ListEnabled or {} self:ChangeValue() end function optionapi:Color(hue, sat, val, rainbowcheck) if window.Visible then bkg.BackgroundColor3 = rainbowcheck and Color3.fromHSV(mainapi:Color((hue - (self.Index * 0.075)) % 1)) or Color3.fromHSV(hue, sat, val) end end function optionapi:ChangeValue(val) if val then local ind = table.find(self.List, val) if ind then table.remove(self.List, ind) ind = table.find(self.ListEnabled, val) if ind then table.remove(self.ListEnabled, ind) end else table.insert(self.List, val) table.insert(self.ListEnabled, val) end end optionsettings.Function(self.List) for _, v in self.Objects do v:Destroy() end table.clear(self.Objects) window.Size = UDim2.fromOffset(220, 85 + (#self.List * 35)) amount.Text = #self.List local enabledtext = 'None' for i, v in self.ListEnabled do if i == 1 then enabledtext = '' end enabledtext = enabledtext..(i == 1 and v or ', '..v) end items.Text = enabledtext for i, v in self.List do local enabled = table.find(self.ListEnabled, v) local object = Instance.new('TextButton') object.Name = v object.Size = UDim2.fromOffset(200, 32) object.Position = UDim2.fromOffset(10, 47 + (i * 35)) object.BackgroundColor3 = color.Light(uipallet.Main, 0.02) object.AutoButtonColor = false object.Text = '' object.Parent = window addCorner(object) local objectbkg = Instance.new('Frame') objectbkg.Name = 'BKG' objectbkg.Size = UDim2.new(1, -2, 1, -2) objectbkg.Position = UDim2.fromOffset(1, 1) objectbkg.BackgroundColor3 = uipallet.Main objectbkg.Visible = false objectbkg.Parent = object addCorner(objectbkg) local objectdot = Instance.new('Frame') objectdot.Name = 'Dot' objectdot.Size = UDim2.fromOffset(10, 11) objectdot.Position = UDim2.fromOffset(10, 12) objectdot.BackgroundColor3 = enabled and optionsettings.Color or color.Light(uipallet.Main, 0.37) objectdot.Parent = object addCorner(objectdot, UDim.new(1, 0)) local objectdotin = objectdot:Clone() objectdotin.Size = UDim2.fromOffset(8, 9) objectdotin.Position = UDim2.fromOffset(1, 1) objectdotin.BackgroundColor3 = enabled and optionsettings.Color or color.Light(uipallet.Main, 0.02) objectdotin.Parent = objectdot local objecttitle = Instance.new('TextLabel') objecttitle.Name = 'Title' objecttitle.Size = UDim2.new(1, -30, 1, 0) objecttitle.Position = UDim2.fromOffset(30, 0) objecttitle.BackgroundTransparency = 1 objecttitle.Text = v objecttitle.TextXAlignment = Enum.TextXAlignment.Left objecttitle.TextColor3 = color.Dark(uipallet.Text, 0.16) objecttitle.TextSize = 15 objecttitle.FontFace = uipallet.Font objecttitle.Parent = object local close = Instance.new('ImageButton') close.Name = 'Close' close.Size = UDim2.fromOffset(16, 16) close.Position = UDim2.new(1, -26, 0, 8) close.BackgroundColor3 = Color3.new(1, 1, 1) close.BackgroundTransparency = 1 close.AutoButtonColor = false close.Image = getcustomasset('newvape/assets/new/closemini.png') close.ImageColor3 = color.Light(uipallet.Text, 0.2) close.ImageTransparency = 0.5 close.Parent = object addCorner(close, UDim.new(1, 0)) close.MouseEnter:Connect(function() close.ImageTransparency = 0.3 tween:Tween(close, uipallet.Tween, { BackgroundTransparency = 0.6 }) end) close.MouseLeave:Connect(function() close.ImageTransparency = 0.5 tween:Tween(close, uipallet.Tween, { BackgroundTransparency = 1 }) end) close.MouseButton1Click:Connect(function() self:ChangeValue(v) end) object.MouseEnter:Connect(function() objectbkg.Visible = true end) object.MouseLeave:Connect(function() objectbkg.Visible = false end) object.MouseButton1Click:Connect(function() local ind = table.find(self.ListEnabled, v) if ind then table.remove(self.ListEnabled, ind) objectdot.BackgroundColor3 = color.Light(uipallet.Main, 0.37) objectdotin.BackgroundColor3 = color.Light(uipallet.Main, 0.02) else table.insert(self.ListEnabled, v) objectdot.BackgroundColor3 = optionsettings.Color objectdotin.BackgroundColor3 = optionsettings.Color end local enabledtext = 'None' for i, v in self.ListEnabled do if i == 1 then enabledtext = '' end enabledtext = enabledtext..(i == 1 and v or ', '..v) end items.Text = enabledtext optionsettings.Function() end) table.insert(self.Objects, object) end end addbutton.MouseEnter:Connect(function() addbutton.ImageTransparency = 0 end) addbutton.MouseLeave:Connect(function() addbutton.ImageTransparency = 0.3 end) addbutton.MouseButton1Click:Connect(function() if not table.find(optionapi.List, addvalue.Text) then optionapi:ChangeValue(addvalue.Text) addvalue.Text = '' end end) addvalue.FocusLost:Connect(function(enter) if enter and not table.find(optionapi.List, addvalue.Text) then optionapi:ChangeValue(addvalue.Text) addvalue.Text = '' end end) addvalue.MouseEnter:Connect(function() tween:Tween(addbkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.14) }) end) addvalue.MouseLeave:Connect(function() tween:Tween(addbkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.02) }) end) close.MouseButton1Click:Connect(function() window.Visible = false end) button.MouseButton1Click:Connect(function() window.Visible = not window.Visible tween:Cancel(bkg) bkg.BackgroundColor3 = window.Visible and Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) or color.Light(uipallet.Main, 0.37) end) textlist.MouseEnter:Connect(function() if not optionapi.Window.Visible then tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.37) }) end end) textlist.MouseLeave:Connect(function() if not optionapi.Window.Visible then tween:Tween(bkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.034) }) end end) textlist:GetPropertyChangedSignal('AbsolutePosition'):Connect(function() if mainapi.ThreadFix then setthreadidentity(8) end local actualPosition = (textlist.AbsolutePosition - (api.Legit and mainapi.Legit.Window.AbsolutePosition or -guiService:GetGuiInset())) / scale.Scale window.Position = UDim2.fromOffset(actualPosition.X + 220, actualPosition.Y) end) if optionsettings.Default then optionapi:ChangeValue() end optionapi.Object = textlist api.Options[optionsettings.Name] = optionapi return optionapi end, Toggle = function(optionsettings, children, api) local optionapi = { Type = 'Toggle', Enabled = false, Index = getTableSize(api.Options) } local hovered = false local toggle = Instance.new('TextButton') toggle.Name = optionsettings.Name..'Toggle' toggle.Size = UDim2.new(1, 0, 0, 30) toggle.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) toggle.BorderSizePixel = 0 toggle.AutoButtonColor = false toggle.Visible = optionsettings.Visible == nil or optionsettings.Visible toggle.Text = '          '..optionsettings.Name toggle.TextXAlignment = Enum.TextXAlignment.Left toggle.TextColor3 = color.Dark(uipallet.Text, 0.16) toggle.TextSize = 14 toggle.FontFace = uipallet.Font toggle.Parent = children addTooltip(toggle, optionsettings.Tooltip) local knobholder = Instance.new('Frame') knobholder.Name = 'Knob' knobholder.Size = UDim2.fromOffset(22, 12) knobholder.Position = UDim2.new(1, -30, 0, 9) knobholder.BackgroundColor3 = color.Light(uipallet.Main, 0.14) knobholder.Parent = toggle addCorner(knobholder, UDim.new(1, 0)) local knob = knobholder:Clone() knob.Size = UDim2.fromOffset(8, 8) knob.Position = UDim2.fromOffset(2, 2) knob.BackgroundColor3 = uipallet.Main knob.Parent = knobholder optionsettings.Function = optionsettings.Function or function() end function optionapi:Save(tab) tab[optionsettings.Name] = {Enabled = self.Enabled} end function optionapi:Load(tab) if self.Enabled ~= tab.Enabled then self:Toggle() end end function optionapi:Color(hue, sat, val, rainbowcheck) if self.Enabled then tween:Cancel(knobholder) knobholder.BackgroundColor3 = rainbowcheck and Color3.fromHSV(mainapi:Color((hue - (self.Index * 0.075)) % 1)) or Color3.fromHSV(hue, sat, val) end end function optionapi:Toggle() self.Enabled = not self.Enabled local rainbowcheck = mainapi.GUIColor.Rainbow and mainapi.RainbowMode.Value ~= 'Retro' tween:Tween(knobholder, uipallet.Tween, { BackgroundColor3 = self.Enabled and (rainbowcheck and Color3.fromHSV(mainapi:Color((mainapi.GUIColor.Hue - (self.Index * 0.075)) % 1)) or Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value)) or (hovered and color.Light(uipallet.Main, 0.37) or color.Light(uipallet.Main, 0.14)) }) tween:Tween(knob, uipallet.Tween, { Position = UDim2.fromOffset(self.Enabled and 12 or 2, 2) }) optionsettings.Function(self.Enabled) end toggle.MouseEnter:Connect(function() hovered = true if not optionapi.Enabled then tween:Tween(knobholder, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.37) }) end end) toggle.MouseLeave:Connect(function() hovered = false if not optionapi.Enabled then tween:Tween(knobholder, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.14) }) end end) toggle.MouseButton1Click:Connect(function() optionapi:Toggle() end) if optionsettings.Default then optionapi:Toggle() end optionapi.Object = toggle api.Options[optionsettings.Name] = optionapi return optionapi end, TwoSlider = function(optionsettings, children, api) local optionapi = { Type = 'TwoSlider', ValueMin = optionsettings.DefaultMin or optionsettings.Min, ValueMax = optionsettings.DefaultMax or 10, Max = optionsettings.Max, Index = getTableSize(api.Options) } local slider = Instance.new('TextButton') slider.Name = optionsettings.Name..'Slider' slider.Size = UDim2.new(1, 0, 0, 50) slider.BackgroundColor3 = color.Dark(children.BackgroundColor3, optionsettings.Darker and 0.02 or 0) slider.BorderSizePixel = 0 slider.AutoButtonColor = false slider.Visible = optionsettings.Visible == nil or optionsettings.Visible slider.Text = '' slider.Parent = children addTooltip(slider, optionsettings.Tooltip) local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.fromOffset(60, 30) title.Position = UDim2.fromOffset(10, 2) title.BackgroundTransparency = 1 title.Text = optionsettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = color.Dark(uipallet.Text, 0.16) title.TextSize = 11 title.FontFace = uipallet.Font title.Parent = slider local valuebutton = Instance.new('TextButton') valuebutton.Name = 'Value' valuebutton.Size = UDim2.fromOffset(60, 15) valuebutton.Position = UDim2.new(1, -69, 0, 9) valuebutton.BackgroundTransparency = 1 valuebutton.Text = optionapi.ValueMax valuebutton.TextXAlignment = Enum.TextXAlignment.Right valuebutton.TextColor3 = color.Dark(uipallet.Text, 0.16) valuebutton.TextSize = 11 valuebutton.FontFace = uipallet.Font valuebutton.Parent = slider local valuebutton2 = valuebutton:Clone() valuebutton2.Position = UDim2.new(1, -125, 0, 9) valuebutton2.Text = optionapi.ValueMin valuebutton2.Parent = slider local valuebox = Instance.new('TextBox') valuebox.Name = 'Box' valuebox.Size = valuebutton.Size valuebox.Position = valuebutton.Position valuebox.BackgroundTransparency = 1 valuebox.Visible = false valuebox.Text = optionapi.ValueMin valuebox.TextXAlignment = Enum.TextXAlignment.Right valuebox.TextColor3 = color.Dark(uipallet.Text, 0.16) valuebox.TextSize = 11 valuebox.FontFace = uipallet.Font valuebox.ClearTextOnFocus = false valuebox.Parent = slider local valuebox2 = valuebox:Clone() valuebox2.Position = valuebutton2.Position valuebox2.Parent = slider local bkg = Instance.new('Frame') bkg.Name = 'Slider' bkg.Size = UDim2.new(1, -20, 0, 2) bkg.Position = UDim2.fromOffset(10, 37) bkg.BackgroundColor3 = color.Light(uipallet.Main, 0.034) bkg.BorderSizePixel = 0 bkg.Parent = slider local fill = bkg:Clone() fill.Name = 'Fill' fill.Position = UDim2.fromScale(math.clamp(optionapi.ValueMin / optionsettings.Max, 0.04, 0.96), 0) fill.Size = UDim2.fromScale(math.clamp(math.clamp(optionapi.ValueMax / optionsettings.Max, 0, 1), 0.04, 0.96) - fill.Position.X.Scale, 1) fill.BackgroundColor3 = Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) fill.Parent = bkg local knobholder = Instance.new('Frame') knobholder.Name = 'Knob' knobholder.Size = UDim2.fromOffset(16, 4) knobholder.Position = UDim2.fromScale(0, 0.5) knobholder.AnchorPoint = Vector2.new(0.5, 0.5) knobholder.BackgroundColor3 = slider.BackgroundColor3 knobholder.BorderSizePixel = 0 knobholder.Parent = fill local knob = Instance.new('ImageLabel') knob.Name = 'Knob' knob.Size = UDim2.fromOffset(9, 16) knob.Position = UDim2.fromScale(0.5, 0.5) knob.AnchorPoint = Vector2.new(0.5, 0.5) knob.BackgroundTransparency = 1 knob.Image = getcustomasset('newvape/assets/new/range.png') knob.ImageColor3 = Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) knob.Parent = knobholder local knobholdermax = knobholder:Clone() knobholdermax.Name = 'KnobMax' knobholdermax.Position = UDim2.fromScale(1, 0.5) knobholdermax.Parent = fill knobholdermax.Knob.Rotation = 180 local arrow = Instance.new('ImageLabel') arrow.Name = 'Arrow' arrow.Size = UDim2.fromOffset(12, 6) arrow.Position = UDim2.new(1, -56, 0, 10) arrow.BackgroundTransparency = 1 arrow.Image = getcustomasset('newvape/assets/new/rangearrow.png') arrow.ImageColor3 = color.Light(uipallet.Main, 0.14) arrow.Parent = slider optionsettings.Function = optionsettings.Function or function() end optionsettings.Decimal = optionsettings.Decimal or 1 local random = Random.new() function optionapi:Save(tab) tab[optionsettings.Name] = {ValueMin = self.ValueMin, ValueMax = self.ValueMax} end function optionapi:Load(tab) if self.ValueMin ~= tab.ValueMin then self:SetValue(false, tab.ValueMin) end if self.ValueMax ~= tab.ValueMax then self:SetValue(true, tab.ValueMax) end end function optionapi:Color(hue, sat, val, rainbowcheck) fill.BackgroundColor3 = rainbowcheck and Color3.fromHSV(mainapi:Color((hue - (self.Index * 0.075)) % 1)) or Color3.fromHSV(hue, sat, val) knob.ImageColor3 = fill.BackgroundColor3 knobholdermax.Knob.ImageColor3 = fill.BackgroundColor3 end function optionapi:GetRandomValue() return random:NextNumber(optionapi.ValueMin, optionapi.ValueMax) end function optionapi:SetValue(max, value) if tonumber(value) == math.huge or value ~= value then return end self[max and 'ValueMax' or 'ValueMin'] = value valuebutton.Text = self.ValueMax valuebutton2.Text = self.ValueMin local size = math.clamp(math.clamp(self.ValueMin / optionsettings.Max, 0, 1), 0.04, 0.96) tween:Tween(fill, TweenInfo.new(0.1), { Position = UDim2.fromScale(size, 0), Size = UDim2.fromScale(math.clamp(math.clamp(math.clamp(self.ValueMax / optionsettings.Max, 0.04, 0.96), 0.04, 0.96) - size, 0, 1), 1) }) end knobholder.MouseEnter:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(11, 18) }) end) knobholder.MouseLeave:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(9, 16) }) end) knobholdermax.MouseEnter:Connect(function() tween:Tween(knobholdermax.Knob, uipallet.Tween, { Size = UDim2.fromOffset(11, 18) }) end) knobholdermax.MouseLeave:Connect(function() tween:Tween(knobholdermax.Knob, uipallet.Tween, { Size = UDim2.fromOffset(9, 16) }) end) slider.InputBegan:Connect(function(inputObj) if (inputObj.UserInputType == Enum.UserInputType.MouseButton1 or inputObj.UserInputType == Enum.UserInputType.Touch) and (inputObj.Position.Y - slider.AbsolutePosition.Y) > (20 * scale.Scale) then local maxCheck = (inputObj.Position.X - knobholdermax.AbsolutePosition.X) > -10 local newPosition = math.clamp((inputObj.Position.X - bkg.AbsolutePosition.X) / bkg.AbsoluteSize.X, 0, 1) optionapi:SetValue(maxCheck, math.floor((optionsettings.Min + (optionsettings.Max - optionsettings.Min) * newPosition) * optionsettings.Decimal) / optionsettings.Decimal, newPosition) local changed = inputService.InputChanged:Connect(function(input) if input.UserInputType == (inputObj.UserInputType == Enum.UserInputType.MouseButton1 and Enum.UserInputType.MouseMovement or Enum.UserInputType.Touch) then local newPosition = math.clamp((input.Position.X - bkg.AbsolutePosition.X) / bkg.AbsoluteSize.X, 0, 1) optionapi:SetValue(maxCheck, math.floor((optionsettings.Min + (optionsettings.Max - optionsettings.Min) * newPosition) * optionsettings.Decimal) / optionsettings.Decimal, newPosition) end end) local ended ended = inputObj.Changed:Connect(function() if inputObj.UserInputState == Enum.UserInputState.End then if changed then changed:Disconnect() end if ended then ended:Disconnect() end end end) end end) valuebutton.MouseButton1Click:Connect(function() valuebutton.Visible = false valuebox.Visible = true valuebox.Text = optionapi.ValueMax valuebox:CaptureFocus() end) valuebutton2.MouseButton1Click:Connect(function() valuebutton2.Visible = false valuebox2.Visible = true valuebox2.Text = optionapi.ValueMin valuebox2:CaptureFocus() end) valuebox.FocusLost:Connect(function(enter) valuebutton.Visible = true valuebox.Visible = false if enter and tonumber(valuebox.Text) then optionapi:SetValue(true, tonumber(valuebox.Text)) end end) valuebox2.FocusLost:Connect(function(enter) valuebutton2.Visible = true valuebox2.Visible = false if enter and tonumber(valuebox2.Text) then optionapi:SetValue(false, tonumber(valuebox2.Text)) end end) optionapi.Object = slider api.Options[optionsettings.Name] = optionapi return optionapi end, Divider = function(children, text) local divider = Instance.new('Frame') divider.Name = 'Divider' divider.Size = UDim2.new(1, 0, 0, 1) divider.BackgroundColor3 = color.Light(uipallet.Main, 0.02) divider.BorderSizePixel = 0 divider.Parent = children if text then local label = Instance.new('TextLabel') label.Name = 'DividerLabel' label.Size = UDim2.fromOffset(218, 27) label.BackgroundTransparency = 1 label.Text = '          '..text:upper() label.TextXAlignment = Enum.TextXAlignment.Left label.TextColor3 = color.Dark(uipallet.Text, 0.43) label.TextSize = 9 label.FontFace = uipallet.Font label.Parent = children divider.Position = UDim2.fromOffset(0, 26) divider.Parent = label end end } mainapi.Components = setmetatable(components, { __newindex = function(self, ind, func) for _, v in mainapi.Modules do rawset(v, 'Create'..ind, function(_, settings) return func(settings, v.Children, v) end) end if mainapi.Legit then for _, v in mainapi.Legit.Modules do rawset(v, 'Create'..ind, function(_, settings) return func(settings, v.Children, v) end) end end rawset(self, ind, func) end }) task.spawn(function() repeat local hue = tick() * (0.2 * mainapi.RainbowSpeed.Value) % 1 for _, v in mainapi.RainbowTable do if v.Type == 'GUISlider' then v:SetValue(mainapi:Color(hue)) else v:SetValue(hue) end end task.wait(1 / mainapi.RainbowUpdateSpeed.Value) until mainapi.Loaded == nil end) function mainapi:BlurCheck() if self.ThreadFix then setthreadidentity(8) runService:SetRobloxGuiFocused((clickgui.Visible or guiService:GetErrorType() ~= Enum.ConnectionError.OK) and self.Blur.Enabled) end end addMaid(mainapi) function mainapi:CreateGUI() local categoryapi = { Type = 'MainWindow', Buttons = {}, Options = {} } local window = Instance.new('TextButton') window.Name = 'GUICategory' window.Position = UDim2.fromOffset(6, 60) window.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) window.AutoButtonColor = false window.Text = '' window.Parent = clickgui addBlur(window) addCorner(window) makeDraggable(window) local logo = Instance.new('ImageLabel') logo.Name = 'VapeLogo' logo.Size = UDim2.fromOffset(62, 18) logo.Position = UDim2.fromOffset(11, 10) logo.BackgroundTransparency = 1 logo.Image = getcustomasset('newvape/assets/new/guivape.png') logo.ImageColor3 = select(3, uipallet.Main:ToHSV()) > 0.5 and uipallet.Text or Color3.new(1, 1, 1) logo.Parent = window local logov4 = Instance.new('ImageLabel') logov4.Name = 'V4Logo' logov4.Size = UDim2.fromOffset(28, 16) logov4.Position = UDim2.new(1, 1, 0, 1) logov4.BackgroundTransparency = 1 logov4.Image = getcustomasset('newvape/assets/new/guiv4.png') logov4.Parent = logo local children = Instance.new('Frame') children.Name = 'Children' children.Size = UDim2.new(1, 0, 1, -33) children.Position = UDim2.fromOffset(0, 37) children.BackgroundTransparency = 1 children.Parent = window local windowlist = Instance.new('UIListLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlist.Parent = children local settingsbutton = Instance.new('TextButton') settingsbutton.Name = 'Settings' settingsbutton.Size = UDim2.fromOffset(40, 40) settingsbutton.Position = UDim2.new(1, -40, 0, 0) settingsbutton.BackgroundTransparency = 1 settingsbutton.Text = '' settingsbutton.Parent = window addTooltip(settingsbutton, 'Open settings') local settingsicon = Instance.new('ImageLabel') settingsicon.Size = UDim2.fromOffset(14, 14) settingsicon.Position = UDim2.fromOffset(15, 12) settingsicon.BackgroundTransparency = 1 settingsicon.Image = getcustomasset('newvape/assets/new/guisettings.png') settingsicon.ImageColor3 = color.Light(uipallet.Main, 0.37) settingsicon.Parent = settingsbutton local discordbutton = Instance.new('ImageButton') discordbutton.Size = UDim2.fromOffset(16, 16) discordbutton.Position = UDim2.new(1, -56, 0, 11) discordbutton.BackgroundTransparency = 1 discordbutton.Image = getcustomasset('newvape/assets/new/discord.png') discordbutton.Parent = window addTooltip(discordbutton, 'Join discord') local settingspane = Instance.new('TextButton') settingspane.Size = UDim2.fromScale(1, 1) settingspane.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) settingspane.AutoButtonColor = false settingspane.Visible = false settingspane.Text = '' settingspane.Parent = window local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -36, 0, 20) title.Position = UDim2.fromOffset(math.abs(title.Size.X.Offset), 11) title.BackgroundTransparency = 1 title.Text = 'Settings' title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = settingspane local close = addCloseButton(settingspane) local back = Instance.new('ImageButton') back.Name = 'Back' back.Size = UDim2.fromOffset(16, 16) back.Position = UDim2.fromOffset(11, 13) back.BackgroundTransparency = 1 back.Image = getcustomasset('newvape/assets/new/back.png') back.ImageColor3 = color.Light(uipallet.Main, 0.37) back.Parent = settingspane local settingsversion = Instance.new('TextLabel') settingsversion.Name = 'Version' settingsversion.Size = UDim2.new(1, 0, 0, 16) settingsversion.Position = UDim2.new(0, 0, 1, -16) settingsversion.BackgroundTransparency = 1 settingsversion.Text = 'Vape '..mainapi.Version..' '..( isfile('newvape/profiles/commit.txt') and readfile('newvape/profiles/commit.txt'):sub(1, 6) or '' )..' ' settingsversion.TextColor3 = color.Dark(uipallet.Text, 0.43) settingsversion.TextXAlignment = Enum.TextXAlignment.Right settingsversion.TextSize = 10 settingsversion.FontFace = uipallet.Font settingsversion.Parent = settingspane addCorner(settingspane) local settingschildren = Instance.new('Frame') settingschildren.Name = 'Children' settingschildren.Size = UDim2.new(1, 0, 1, -57) settingschildren.Position = UDim2.fromOffset(0, 41) settingschildren.BackgroundColor3 = uipallet.Main settingschildren.BorderSizePixel = 0 settingschildren.Parent = settingspane local settingswindowlist = Instance.new('UIListLayout') settingswindowlist.SortOrder = Enum.SortOrder.LayoutOrder settingswindowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center settingswindowlist.Parent = settingschildren categoryapi.Object = window function categoryapi:CreateBind() local optionapi = {Bind = {'RightShift'}} local button = Instance.new('TextButton') button.Size = UDim2.fromOffset(220, 40) button.BackgroundColor3 = uipallet.Main button.BorderSizePixel = 0 button.AutoButtonColor = false button.Text = '          Rebind GUI' button.TextXAlignment = Enum.TextXAlignment.Left button.TextColor3 = color.Dark(uipallet.Text, 0.16) button.TextSize = 14 button.FontFace = uipallet.Font button.Parent = settingschildren addTooltip(button, 'Change the bind of the GUI') local bind = Instance.new('TextButton') bind.Name = 'Bind' bind.Size = UDim2.fromOffset(20, 21) bind.Position = UDim2.new(1, -10, 0, 9) bind.AnchorPoint = Vector2.new(1, 0) bind.BackgroundColor3 = Color3.new(1, 1, 1) bind.BackgroundTransparency = 0.92 bind.BorderSizePixel = 0 bind.AutoButtonColor = false bind.Text = '' bind.Parent = button addTooltip(bind, 'Click to bind') addCorner(bind, UDim.new(0, 4)) local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = UDim2.fromOffset(12, 12) icon.Position = UDim2.new(0.5, -6, 0, 5) icon.BackgroundTransparency = 1 icon.Image = getcustomasset('newvape/assets/new/bind.png') icon.ImageColor3 = color.Dark(uipallet.Text, 0.43) icon.Parent = bind local label = Instance.new('TextLabel') label.Name = 'Text' label.Size = UDim2.fromScale(1, 1) label.Position = UDim2.fromOffset(0, 1) label.BackgroundTransparency = 1 label.Visible = false label.Text = '' label.TextColor3 = color.Dark(uipallet.Text, 0.43) label.TextSize = 12 label.FontFace = uipallet.Font label.Parent = bind function optionapi:SetBind(tab) mainapi.Keybind = #tab <= 0 and mainapi.Keybind or table.clone(tab) self.Bind = mainapi.Keybind if mainapi.VapeButton then mainapi.VapeButton:Destroy() mainapi.VapeButton = nil end bind.Visible = true label.Visible = true icon.Visible = false label.Text = table.concat(mainapi.Keybind, ' + '):upper() bind.Size = UDim2.fromOffset(math.max(getfontsize(label.Text, label.TextSize, label.Font).X + 10, 20), 21) end bind.MouseEnter:Connect(function() label.Visible = false icon.Visible = not label.Visible icon.Image = getcustomasset('newvape/assets/new/edit.png') icon.ImageColor3 = color.Dark(uipallet.Text, 0.16) end) bind.MouseLeave:Connect(function() label.Visible = true icon.Visible = not label.Visible icon.Image = getcustomasset('newvape/assets/new/bind.png') icon.ImageColor3 = color.Dark(uipallet.Text, 0.43) end) bind.MouseButton1Click:Connect(function() mainapi.Binding = optionapi end) categoryapi.Options.Bind = optionapi return optionapi end function categoryapi:CreateButton(categorysettings) local optionapi = { Enabled = false, Index = getTableSize(categoryapi.Buttons) } local button = Instance.new('TextButton') button.Name = categorysettings.Name button.Size = UDim2.fromOffset(220, 40) button.BackgroundColor3 = uipallet.Main button.BorderSizePixel = 0 button.AutoButtonColor = false button.Text = (categorysettings.Icon and '                                 ' or '             ')..categorysettings.Name button.TextXAlignment = Enum.TextXAlignment.Left button.TextColor3 = color.Dark(uipallet.Text, 0.16) button.TextSize = 14 button.FontFace = uipallet.Font button.Parent = children local icon if categorysettings.Icon then icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = categorysettings.Size icon.Position = UDim2.fromOffset(13, 13) icon.BackgroundTransparency = 1 icon.Image = categorysettings.Icon icon.ImageColor3 = color.Dark(uipallet.Text, 0.16) icon.Parent = button end if categorysettings.Name == 'Profiles' then local label = Instance.new('TextLabel') label.Name = 'ProfileLabel' label.Size = UDim2.fromOffset(53, 24) label.Position = UDim2.new(1, -36, 0, 8) label.AnchorPoint = Vector2.new(1, 0) label.BackgroundColor3 = color.Light(uipallet.Main, 0.04) label.Text = 'default' label.TextColor3 = color.Dark(uipallet.Text, 0.29) label.TextSize = 12 label.FontFace = uipallet.Font label.Parent = button addCorner(label) mainapi.ProfileLabel = label end local arrow = Instance.new('ImageLabel') arrow.Name = 'Arrow' arrow.Size = UDim2.fromOffset(4, 8) arrow.Position = UDim2.new(1, -20, 0, 16) arrow.BackgroundTransparency = 1 arrow.Image = getcustomasset('newvape/assets/new/expandright.png') arrow.ImageColor3 = color.Light(uipallet.Main, 0.37) arrow.Parent = button optionapi.Name = categorysettings.Name optionapi.Icon = icon optionapi.Object = button function optionapi:Toggle() self.Enabled = not self.Enabled tween:Tween(arrow, uipallet.Tween, { Position = UDim2.new(1, self.Enabled and -14 or -20, 0, 16) }) button.TextColor3 = self.Enabled and Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) or uipallet.Text if icon then icon.ImageColor3 = button.TextColor3 end button.BackgroundColor3 = color.Light(uipallet.Main, 0.02) categorysettings.Window.Visible = self.Enabled end button.MouseEnter:Connect(function() if not optionapi.Enabled then button.TextColor3 = uipallet.Text if buttonicon then buttonicon.ImageColor3 = uipallet.Text end button.BackgroundColor3 = color.Light(uipallet.Main, 0.02) end end) button.MouseLeave:Connect(function() if not optionapi.Enabled then button.TextColor3 = color.Dark(uipallet.Text, 0.16) if buttonicon then buttonicon.ImageColor3 = color.Dark(uipallet.Text, 0.16) end button.BackgroundColor3 = uipallet.Main end end) button.MouseButton1Click:Connect(function() optionapi:Toggle() end) categoryapi.Buttons[categorysettings.Name] = optionapi return optionapi end function categoryapi:CreateDivider(text) return components.Divider(children, text) end function categoryapi:CreateOverlayBar() local optionapi = {Toggles = {}} local bar = Instance.new('Frame') bar.Name = 'Overlays' bar.Size = UDim2.fromOffset(220, 36) bar.BackgroundColor3 = uipallet.Main bar.BorderSizePixel = 0 bar.Parent = children components.Divider(bar) local button = Instance.new('ImageButton') button.Size = UDim2.fromOffset(24, 24) button.Position = UDim2.new(1, -29, 0, 7) button.BackgroundTransparency = 1 button.AutoButtonColor = false button.Image = getcustomasset('newvape/assets/new/overlaysicon.png') button.ImageColor3 = color.Light(uipallet.Main, 0.37) button.Parent = bar addCorner(button, UDim.new(1, 0)) addTooltip(button, 'Open overlays menu') local shadow = Instance.new('TextButton') shadow.Name = 'Shadow' shadow.Size = UDim2.new(1, 0, 1, -5) shadow.BackgroundColor3 = Color3.new() shadow.BackgroundTransparency = 1 shadow.AutoButtonColor = false shadow.ClipsDescendants = true shadow.Visible = false shadow.Text = '' shadow.Parent = window addCorner(shadow) local window = Instance.new('Frame') window.Size = UDim2.fromOffset(220, 42) window.Position = UDim2.fromScale(0, 1) window.BackgroundColor3 = uipallet.Main window.Parent = shadow addCorner(window) local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = UDim2.fromOffset(14, 12) icon.Position = UDim2.fromOffset(10, 13) icon.BackgroundTransparency = 1 icon.Image = getcustomasset('newvape/assets/new/overlaystab.png') icon.ImageColor3 = uipallet.Text icon.Parent = window local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -36, 0, 38) title.Position = UDim2.fromOffset(36, 0) title.BackgroundTransparency = 1 title.Text = 'Overlays' title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 15 title.FontFace = uipallet.Font title.Parent = window local close = addCloseButton(window, 7) local divider = Instance.new('Frame') divider.Name = 'Divider' divider.Size = UDim2.new(1, 0, 0, 1) divider.Position = UDim2.fromOffset(0, 37) divider.BackgroundColor3 = color.Light(uipallet.Main, 0.02) divider.BorderSizePixel = 0 divider.Parent = window local childrentoggle = Instance.new('Frame') childrentoggle.Position = UDim2.fromOffset(0, 38) childrentoggle.BackgroundTransparency = 1 childrentoggle.Parent = window local windowlist = Instance.new('UIListLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlist.Parent = childrentoggle function optionapi:CreateToggle(togglesettings) local toggleapi = { Enabled = false, Index = getTableSize(optionapi.Toggles) } local hovered = false local toggle = Instance.new('TextButton') toggle.Name = togglesettings.Name..'Toggle' toggle.Size = UDim2.new(1, 0, 0, 40) toggle.BackgroundTransparency = 1 toggle.AutoButtonColor = false toggle.Text = string.rep(' ', 33 * scale.Scale)..togglesettings.Name toggle.TextXAlignment = Enum.TextXAlignment.Left toggle.TextColor3 = color.Dark(uipallet.Text, 0.16) toggle.TextSize = 14 toggle.FontFace = uipallet.Font toggle.Parent = childrentoggle local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = togglesettings.Size icon.Position = togglesettings.Position icon.BackgroundTransparency = 1 icon.Image = togglesettings.Icon icon.ImageColor3 = uipallet.Text icon.Parent = toggle local knob = Instance.new('Frame') knob.Name = 'Knob' knob.Size = UDim2.fromOffset(22, 12) knob.Position = UDim2.new(1, -30, 0, 14) knob.BackgroundColor3 = color.Light(uipallet.Main, 0.14) knob.Parent = toggle addCorner(knob, UDim.new(1, 0)) local knobmain = knob:Clone() knobmain.Size = UDim2.fromOffset(8, 8) knobmain.Position = UDim2.fromOffset(2, 2) knobmain.BackgroundColor3 = uipallet.Main knobmain.Parent = knob toggleapi.Object = toggle function toggleapi:Toggle() self.Enabled = not self.Enabled tween:Tween(knob, uipallet.Tween, { BackgroundColor3 = self.Enabled and Color3.fromHSV( mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value ) or (hovered and color.Light(uipallet.Main, 0.37) or color.Light(uipallet.Main, 0.14)) }) tween:Tween(knobmain, uipallet.Tween, { Position = UDim2.fromOffset(self.Enabled and 12 or 2, 2) }) togglesettings.Function(self.Enabled) end scale:GetPropertyChangedSignal('Scale'):Connect(function() toggle.Text = string.rep(' ', 33 * scale.Scale)..togglesettings.Name end) toggle.MouseEnter:Connect(function() hovered = true if not toggleapi.Enabled then tween:Tween(knob, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.37) }) end end) toggle.MouseLeave:Connect(function() hovered = false if not toggleapi.Enabled then tween:Tween(knob, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.14) }) end end) toggle.MouseButton1Click:Connect(function() toggleapi:Toggle() end) table.insert(optionapi.Toggles, toggleapi) return toggleapi end button.MouseEnter:Connect(function() button.ImageColor3 = uipallet.Text tween:Tween(button, uipallet.Tween, { BackgroundTransparency = 0.9 }) end) button.MouseLeave:Connect(function() button.ImageColor3 = color.Light(uipallet.Main, 0.37) tween:Tween(button, uipallet.Tween, { BackgroundTransparency = 1 }) end) button.MouseButton1Click:Connect(function() shadow.Visible = true tween:Tween(shadow, uipallet.Tween, { BackgroundTransparency = 0.5 }) tween:Tween(window, uipallet.Tween, { Position = UDim2.new(0, 0, 1, -(window.Size.Y.Offset)) }) end) close.MouseButton1Click:Connect(function() tween:Tween(shadow, uipallet.Tween, { BackgroundTransparency = 1 }) tween:Tween(window, uipallet.Tween, { Position = UDim2.fromScale(0, 1) }) task.wait(0.2) shadow.Visible = false end) shadow.MouseButton1Click:Connect(function() tween:Tween(shadow, uipallet.Tween, { BackgroundTransparency = 1 }) tween:Tween(window, uipallet.Tween, { Position = UDim2.fromScale(0, 1) }) task.wait(0.2) shadow.Visible = false end) windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if mainapi.ThreadFix then setthreadidentity(8) end window.Size = UDim2.fromOffset(220, math.min(37 + windowlist.AbsoluteContentSize.Y / scale.Scale, 605)) childrentoggle.Size = UDim2.fromOffset(220, window.Size.Y.Offset - 5) end) mainapi.Overlays = optionapi return optionapi end function categoryapi:CreateSettingsDivider() components.Divider(settingschildren) end function categoryapi:CreateSettingsPane(categorysettings) local optionapi = {} local button = Instance.new('TextButton') button.Name = categorysettings.Name button.Size = UDim2.fromOffset(220, 40) button.BackgroundColor3 = uipallet.Main button.BorderSizePixel = 0 button.AutoButtonColor = false button.Text = '          '..categorysettings.Name button.TextXAlignment = Enum.TextXAlignment.Left button.TextColor3 = color.Dark(uipallet.Text, 0.16) button.TextSize = 14 button.FontFace = uipallet.Font button.Parent = settingschildren local arrow = Instance.new('ImageLabel') arrow.Name = 'Arrow' arrow.Size = UDim2.fromOffset(4, 8) arrow.Position = UDim2.new(1, -20, 0, 16) arrow.BackgroundTransparency = 1 arrow.Image = getcustomasset('newvape/assets/new/expandright.png') arrow.ImageColor3 = color.Light(uipallet.Main, 0.37) arrow.Parent = button local settingspane = Instance.new('TextButton') settingspane.Size = UDim2.fromScale(1, 1) settingspane.BackgroundColor3 = uipallet.Main settingspane.AutoButtonColor = false settingspane.Visible = false settingspane.Text = '' settingspane.Parent = window local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -36, 0, 20) title.Position = UDim2.fromOffset(math.abs(title.Size.X.Offset), 11) title.BackgroundTransparency = 1 title.Text = categorysettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = settingspane local close = addCloseButton(settingspane) local back = Instance.new('ImageButton') back.Name = 'Back' back.Size = UDim2.fromOffset(16, 16) back.Position = UDim2.fromOffset(11, 13) back.BackgroundTransparency = 1 back.Image = getcustomasset('newvape/assets/new/back.png') back.ImageColor3 = color.Light(uipallet.Main, 0.37) back.Parent = settingspane addCorner(settingspane) local settingschildren = Instance.new('Frame') settingschildren.Name = 'Children' settingschildren.Size = UDim2.new(1, 0, 1, -57) settingschildren.Position = UDim2.fromOffset(0, 41) settingschildren.BackgroundColor3 = uipallet.Main settingschildren.BorderSizePixel = 0 settingschildren.Parent = settingspane local divider = Instance.new('Frame') divider.Name = 'Divider' divider.Size = UDim2.new(1, 0, 0, 1) divider.BackgroundColor3 = Color3.new(1, 1, 1) divider.BackgroundTransparency = 0.928 divider.BorderSizePixel = 0 divider.Parent = settingschildren local settingswindowlist = Instance.new('UIListLayout') settingswindowlist.SortOrder = Enum.SortOrder.LayoutOrder settingswindowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center settingswindowlist.Parent = settingschildren for i, v in components do optionapi['Create'..i] = function(_, settings) return v(settings, settingschildren, categoryapi) end end back.MouseEnter:Connect(function() back.ImageColor3 = uipallet.Text end) back.MouseLeave:Connect(function() back.ImageColor3 = color.Light(uipallet.Main, 0.37) end) back.MouseButton1Click:Connect(function() settingspane.Visible = false end) button.MouseEnter:Connect(function() button.TextColor3 = uipallet.Text button.BackgroundColor3 = color.Light(uipallet.Main, 0.02) end) button.MouseLeave:Connect(function() button.TextColor3 = color.Dark(uipallet.Text, 0.16) button.BackgroundColor3 = uipallet.Main end) button.MouseButton1Click:Connect(function() settingspane.Visible = true end) close.MouseButton1Click:Connect(function() settingspane.Visible = false end) windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if mainapi.ThreadFix then setthreadidentity(8) end window.Size = UDim2.fromOffset(220, 45 + windowlist.AbsoluteContentSize.Y / scale.Scale) for _, v in categoryapi.Buttons do if v.Icon then v.Object.Text = string.rep(' ', 33 * scale.Scale)..v.Name end end end) return optionapi end function categoryapi:CreateGUISlider(optionsettings) local optionapi = { Type = 'GUISlider', Notch = 4, Hue = 0.46, Sat = 0.96, Value = 0.52, Rainbow = false, CustomColor = false } local slidercolors = { Color3.fromRGB(250, 50, 56), Color3.fromRGB(242, 99, 33), Color3.fromRGB(252, 179, 22), Color3.fromRGB(5, 133, 104), Color3.fromRGB(47, 122, 229), Color3.fromRGB(126, 84, 217), Color3.fromRGB(232, 96, 152) } local slidercolorpos = { 4, 33, 62, 90, 119, 148, 177 } local function createSlider(name, gradientColor) local slider = Instance.new('TextButton') slider.Name = optionsettings.Name..'Slider'..name slider.Size = UDim2.fromOffset(220, 50) slider.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) slider.BorderSizePixel = 0 slider.AutoButtonColor = false slider.Visible = false slider.Text = '' slider.Parent = settingschildren local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.fromOffset(60, 30) title.Position = UDim2.fromOffset(10, 2) title.BackgroundTransparency = 1 title.Text = name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = color.Dark(uipallet.Text, 0.16) title.TextSize = 11 title.FontFace = uipallet.Font title.Parent = slider local holder = Instance.new('Frame') holder.Name = 'Slider' holder.Size = UDim2.fromOffset(200, 2) holder.Position = UDim2.fromOffset(10, 37) holder.BackgroundColor3 = Color3.new(1, 1, 1) holder.BorderSizePixel = 0 holder.Parent = slider local uigradient = Instance.new('UIGradient') uigradient.Color = gradientColor uigradient.Parent = holder local fill = holder:Clone() fill.Name = 'Fill' fill.Size = UDim2.fromScale(math.clamp(1, 0.04, 0.96), 1) fill.Position = UDim2.new() fill.BackgroundTransparency = 1 fill.Parent = holder local knobframe = Instance.new('Frame') knobframe.Name = 'Knob' knobframe.Size = UDim2.fromOffset(24, 4) knobframe.Position = UDim2.fromScale(1, 0.5) knobframe.AnchorPoint = Vector2.new(0.5, 0.5) knobframe.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) knobframe.BorderSizePixel = 0 knobframe.Parent = fill local knob = Instance.new('Frame') knob.Name = 'Knob' knob.Size = UDim2.fromOffset(14, 14) knob.Position = UDim2.fromScale(0.5, 0.5) knob.AnchorPoint = Vector2.new(0.5, 0.5) knob.BackgroundColor3 = uipallet.Text knob.Parent = knobframe addCorner(knob, UDim.new(1, 0)) if name == 'Custom color' then local reset = Instance.new('TextButton') reset.Size = UDim2.fromOffset(45, 20) reset.Position = UDim2.new(1, -52, 0, 5) reset.BackgroundTransparency = 1 reset.Text = 'RESET' reset.TextColor3 = color.Dark(uipallet.Text, 0.16) reset.TextSize = 11 reset.FontFace = uipallet.Font reset.Parent = slider reset.MouseButton1Click:Connect(function() optionapi:SetValue(nil, nil, nil, 4) end) end slider.InputBegan:Connect(function(inputObj) if (inputObj.UserInputType == Enum.UserInputType.MouseButton1 or inputObj.UserInputType == Enum.UserInputType.Touch) and (inputObj.Position.Y - slider.AbsolutePosition.Y) > (20 * scale.Scale) then local changed = inputService.InputChanged:Connect(function(input) if input.UserInputType == (inputObj.UserInputType == Enum.UserInputType.MouseButton1 and Enum.UserInputType.MouseMovement or Enum.UserInputType.Touch) then local value = math.clamp((input.Position.X - holder.AbsolutePosition.X) / holder.AbsoluteSize.X, 0, 1) optionapi:SetValue( name == 'Custom color' and value or nil, name == 'Saturation' and value or nil, name == 'Vibrance' and value or nil, name == 'Opacity' and value or nil ) end end) local ended ended = inputObj.Changed:Connect(function() if inputObj.UserInputState == Enum.UserInputState.End then if changed then changed:Disconnect() end if ended then ended:Disconnect() end end end) end end) slider.MouseEnter:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(16, 16) }) end) slider.MouseLeave:Connect(function() tween:Tween(knob, uipallet.Tween, { Size = UDim2.fromOffset(14, 14) }) end) return slider end local slider = Instance.new('TextButton') slider.Name = optionsettings.Name..'Slider' slider.Size = UDim2.fromOffset(220, 50) slider.BackgroundTransparency = 1 slider.AutoButtonColor = false slider.Text = '' slider.Parent = settingschildren local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.fromOffset(60, 30) title.Position = UDim2.fromOffset(10, 2) title.BackgroundTransparency = 1 title.Text = optionsettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = color.Dark(uipallet.Text, 0.16) title.TextSize = 11 title.FontFace = uipallet.Font title.Parent = slider local holder = Instance.new('Frame') holder.Name = 'Slider' holder.Size = UDim2.fromOffset(200, 2) holder.Position = UDim2.fromOffset(10, 37) holder.BackgroundTransparency = 1 holder.BorderSizePixel = 0 holder.Parent = slider local colornum = 0 for i, color in slidercolors do local colorframe = Instance.new('Frame') colorframe.Size = UDim2.fromOffset(27 + (((i + 1) % 2) == 0 and 1 or 0), 2) colorframe.Position = UDim2.fromOffset(colornum, 0) colorframe.BackgroundColor3 = color colorframe.BorderSizePixel = 0 colorframe.Parent = holder colornum += (colorframe.Size.X.Offset + 1) end local preview = Instance.new('ImageButton') preview.Name = 'Preview' preview.Size = UDim2.fromOffset(12, 12) preview.Position = UDim2.new(1, -22, 0, 10) preview.BackgroundTransparency = 1 preview.Image = getcustomasset('newvape/assets/new/colorpreview.png') preview.ImageColor3 = Color3.fromHSV(optionapi.Hue, 1, 1) preview.Parent = slider local valuebox = Instance.new('TextBox') valuebox.Name = 'Box' valuebox.Size = UDim2.fromOffset(60, 15) valuebox.Position = UDim2.new(1, -69, 0, 9) valuebox.BackgroundTransparency = 1 valuebox.Visible = false valuebox.Text = '' valuebox.TextXAlignment = Enum.TextXAlignment.Right valuebox.TextColor3 = color.Dark(uipallet.Text, 0.16) valuebox.TextSize = 11 valuebox.FontFace = uipallet.Font valuebox.ClearTextOnFocus = true valuebox.Parent = slider local expandbutton = Instance.new('TextButton') expandbutton.Name = 'Expand' expandbutton.Size = UDim2.fromOffset(17, 13) expandbutton.Position = UDim2.new(0, getfontsize(title.Text, title.TextSize, title.Font).X + 11, 0, 7) expandbutton.BackgroundTransparency = 1 expandbutton.Text = '' expandbutton.Parent = slider local expandicon = Instance.new('ImageLabel') expandicon.Name = 'Expand' expandicon.Size = UDim2.fromOffset(9, 5) expandicon.Position = UDim2.fromOffset(4, 4) expandicon.BackgroundTransparency = 1 expandicon.Image = getcustomasset('newvape/assets/new/expandicon.png') expandicon.ImageColor3 = color.Dark(uipallet.Text, 0.43) expandicon.Parent = expandbutton local rainbow = Instance.new('TextButton') rainbow.Name = 'Rainbow' rainbow.Size = UDim2.fromOffset(12, 12) rainbow.Position = UDim2.new(1, -42, 0, 10) rainbow.BackgroundTransparency = 1 rainbow.Text = '' rainbow.Parent = slider local rainbow1 = Instance.new('ImageLabel') rainbow1.Size = UDim2.fromOffset(12, 12) rainbow1.BackgroundTransparency = 1 rainbow1.Image = getcustomasset('newvape/assets/new/rainbow_1.png') rainbow1.ImageColor3 = color.Light(uipallet.Main, 0.37) rainbow1.Parent = rainbow local rainbow2 = rainbow1:Clone() rainbow2.Image = getcustomasset('newvape/assets/new/rainbow_2.png') rainbow2.Parent = rainbow local rainbow3 = rainbow1:Clone() rainbow3.Image = getcustomasset('newvape/assets/new/rainbow_3.png') rainbow3.Parent = rainbow local rainbow4 = rainbow1:Clone() rainbow4.Image = getcustomasset('newvape/assets/new/rainbow_4.png') rainbow4.Parent = rainbow local knob = Instance.new('ImageLabel') knob.Name = 'Knob' knob.Size = UDim2.fromOffset(26, 12) knob.Position = UDim2.fromOffset(slidercolorpos[4] - 3, -5) knob.BackgroundTransparency = 1 knob.Image = getcustomasset('newvape/assets/new/guislider.png') knob.ImageColor3 = slidercolors[4] knob.Parent = holder optionsettings.Function = optionsettings.Function or function() end local rainbowTable = {} for i = 0, 1, 0.1 do table.insert(rainbowTable, ColorSequenceKeypoint.new(i, Color3.fromHSV(i, 1, 1))) end local colorSlider = createSlider('Custom color', ColorSequence.new(rainbowTable)) local satSlider = createSlider('Saturation', ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0, optionapi.Value)), ColorSequenceKeypoint.new(1, Color3.fromHSV(optionapi.Hue, 1, optionapi.Value)) })) local vibSlider = createSlider('Vibrance', ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0, 0)), ColorSequenceKeypoint.new(1, Color3.fromHSV(optionapi.Hue, optionapi.Sat, 1)) })) local normalknob = getcustomasset('newvape/assets/new/guislider.png') local rainbowknob = getcustomasset('newvape/assets/new/guisliderrain.png') local rainbowthread function optionapi:Save(tab) tab[optionsettings.Name] = { Hue = self.Hue, Sat = self.Sat, Value = self.Value, Notch = self.Notch, CustomColor = self.CustomColor, Rainbow = self.Rainbow } end function optionapi:Load(tab) if tab.Rainbow then self:Toggle() end if self.Rainbow or tab.CustomColor then self:SetValue(tab.Hue, tab.Sat, tab.Value) else self:SetValue(nil, nil, nil, tab.Notch) end end function optionapi:SetValue(h, s, v, n) if n then if self.Rainbow then self:Toggle() end self.CustomColor = false h, s, v = slidercolors[n]:ToHSV() else self.CustomColor = true end self.Hue = h or self.Hue self.Sat = s or self.Sat self.Value = v or self.Value self.Notch = n preview.ImageColor3 = Color3.fromHSV(self.Hue, self.Sat, self.Value) satSlider.Slider.UIGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0, self.Value)), ColorSequenceKeypoint.new(1, Color3.fromHSV(self.Hue, 1, self.Value)) }) vibSlider.Slider.UIGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0, 0)), ColorSequenceKeypoint.new(1, Color3.fromHSV(self.Hue, self.Sat, 1)) }) if self.Rainbow or self.CustomColor then knob.Image = rainbowknob knob.ImageColor3 = Color3.new(1, 1, 1) tween:Tween(knob, uipallet.Tween, { Position = UDim2.fromOffset(slidercolorpos[4] - 3, -5) }) else knob.Image = normalknob knob.ImageColor3 = Color3.fromHSV(self.Hue, self.Sat, self.Value) tween:Tween(knob, uipallet.Tween, { Position = UDim2.fromOffset(slidercolorpos[n or 4] - 3, -5) }) end if self.Rainbow then if h then colorSlider.Slider.Fill.Size = UDim2.fromScale(math.clamp(self.Hue, 0.04, 0.96), 1) end if s then satSlider.Slider.Fill.Size = UDim2.fromScale(math.clamp(self.Sat, 0.04, 0.96), 1) end if v then vibSlider.Slider.Fill.Size = UDim2.fromScale(math.clamp(self.Value, 0.04, 0.96), 1) end else if h then tween:Tween(colorSlider.Slider.Fill, uipallet.Tween, { Size = UDim2.fromScale(math.clamp(self.Hue, 0.04, 0.96), 1) }) end if s then tween:Tween(satSlider.Slider.Fill, uipallet.Tween, { Size = UDim2.fromScale(math.clamp(self.Sat, 0.04, 0.96), 1) }) end if v then tween:Tween(vibSlider.Slider.Fill, uipallet.Tween, { Size = UDim2.fromScale(math.clamp(self.Value, 0.04, 0.96), 1) }) end end optionsettings.Function(self.Hue, self.Sat, self.Value) end function optionapi:Toggle() self.Rainbow = not self.Rainbow if rainbowthread then task.cancel(rainbowthread) end if self.Rainbow then knob.Image = rainbowknob table.insert(mainapi.RainbowTable, self) rainbow1.ImageColor3 = Color3.fromRGB(5, 127, 100) rainbowthread = task.delay(0.1, function() rainbow2.ImageColor3 = Color3.fromRGB(228, 125, 43) rainbowthread = task.delay(0.1, function() rainbow3.ImageColor3 = Color3.fromRGB(225, 46, 52) rainbowthread = nil end) end) else self:SetValue(nil, nil, nil, 4) knob.Image = normalknob local ind = table.find(mainapi.RainbowTable, self) if ind then table.remove(mainapi.RainbowTable, ind) end rainbow3.ImageColor3 = color.Light(uipallet.Main, 0.37) rainbowthread = task.delay(0.1, function() rainbow2.ImageColor3 = color.Light(uipallet.Main, 0.37) rainbowthread = task.delay(0.1, function() rainbow1.ImageColor3 = color.Light(uipallet.Main, 0.37) end) end) end end expandbutton.MouseEnter:Connect(function() expandicon.ImageColor3 = color.Dark(uipallet.Text, 0.16) end) expandbutton.MouseLeave:Connect(function() expandicon.ImageColor3 = color.Dark(uipallet.Text, 0.43) end) expandbutton.MouseButton1Click:Connect(function() colorSlider.Visible = not colorSlider.Visible satSlider.Visible = colorSlider.Visible vibSlider.Visible = satSlider.Visible expandicon.Rotation = satSlider.Visible and 180 or 0 end) preview.MouseButton1Click:Connect(function() preview.Visible = false valuebox.Visible = true valuebox:CaptureFocus() local text = Color3.fromHSV(optionapi.Hue, optionapi.Sat, optionapi.Value) valuebox.Text = math.round(text.R * 255)..', '..math.round(text.G * 255)..', '..math.round(text.B * 255) end) slider.InputBegan:Connect(function(inputObj) if (inputObj.UserInputType == Enum.UserInputType.MouseButton1 or inputObj.UserInputType == Enum.UserInputType.Touch) and (inputObj.Position.Y - slider.AbsolutePosition.Y) > (20 * scale.Scale) then local changed = inputService.InputChanged:Connect(function(input) if input.UserInputType == (inputObj.UserInputType == Enum.UserInputType.MouseButton1 and Enum.UserInputType.MouseMovement or Enum.UserInputType.Touch) then optionapi:SetValue(nil, nil, nil, math.clamp(math.round((input.Position.X - holder.AbsolutePosition.X) / scale.Scale / 27), 1, 7)) end end) local ended ended = inputObj.Changed:Connect(function() if inputObj.UserInputState == Enum.UserInputState.End then if changed then changed:Disconnect() end if ended then ended:Disconnect() end end end) optionapi:SetValue(nil, nil, nil, math.clamp(math.round((inputObj.Position.X - holder.AbsolutePosition.X) / scale.Scale / 27), 1, 7)) end end) rainbow.MouseButton1Click:Connect(function() optionapi:Toggle() end) valuebox.FocusLost:Connect(function(enter) preview.Visible = true valuebox.Visible = false if enter then local commas = valuebox.Text:split(',') local suc, res = pcall(function() return tonumber(commas[1]) and Color3.fromRGB( tonumber(commas[1]), tonumber(commas[2]), tonumber(commas[3]) ) or Color3.fromHex(valuebox.Text) end) if suc then if optionapi.Rainbow then optionapi:Toggle() end optionapi:SetValue(res:ToHSV()) end end end) optionapi.Object = slider categoryapi.Options[optionsettings.Name] = optionapi return optionapi end back.MouseEnter:Connect(function() back.ImageColor3 = uipallet.Text end) back.MouseLeave:Connect(function() back.ImageColor3 = color.Light(uipallet.Main, 0.37) end) back.MouseButton1Click:Connect(function() settingspane.Visible = false end) close.MouseButton1Click:Connect(function() settingspane.Visible = false end) discordbutton.MouseButton1Click:Connect(function() task.spawn(function() local body = httpService:JSONEncode({ nonce = httpService:GenerateGUID(false), args = { invite = {code = '5gJqhQmrdS'}, code = '5gJqhQmrdS' }, cmd = 'INVITE_BROWSER' }) for i = 1, 14 do task.spawn(function() request({ Method = 'POST', Url = 'http://127.0.0.1:64'..(53 + i)..'/rpc?v=1', Headers = { ['Content-Type'] = 'application/json', Origin = 'https://discord.com' }, Body = body }) end) end end) task.spawn(function() tooltip.Text = 'Copied!' setclipboard('https://discord.gg/5gJqhQmrdS') end) end) settingsbutton.MouseEnter:Connect(function() settingsicon.ImageColor3 = uipallet.Text end) settingsbutton.MouseLeave:Connect(function() settingsicon.ImageColor3 = color.Light(uipallet.Main, 0.37) end) settingsbutton.MouseButton1Click:Connect(function() settingspane.Visible = true end) windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if self.ThreadFix then setthreadidentity(8) end window.Size = UDim2.fromOffset(220, 42 + windowlist.AbsoluteContentSize.Y / scale.Scale) for _, v in categoryapi.Buttons do if v.Icon then v.Object.Text = string.rep(' ', 36 * scale.Scale)..v.Name end end end) self.Categories.Main = categoryapi return categoryapi end function mainapi:CreateCategory(categorysettings) local categoryapi = { Type = 'Category', Expanded = false } local window = Instance.new('TextButton') window.Name = categorysettings.Name..'Category' window.Size = UDim2.fromOffset(220, 41) window.Position = UDim2.fromOffset(236, 60) window.BackgroundColor3 = uipallet.Main window.AutoButtonColor = false window.Visible = false window.Text = '' window.Parent = clickgui addBlur(window) addCorner(window) makeDraggable(window) local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = categorysettings.Size icon.Position = UDim2.fromOffset(12, (icon.Size.X.Offset > 20 and 14 or 13)) icon.BackgroundTransparency = 1 icon.Image = categorysettings.Icon icon.ImageColor3 = uipallet.Text icon.Parent = window local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -(categorysettings.Size.X.Offset > 18 and 40 or 33), 0, 41) title.Position = UDim2.fromOffset(math.abs(title.Size.X.Offset), 0) title.BackgroundTransparency = 1 title.Text = categorysettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = window local arrowbutton = Instance.new('TextButton') arrowbutton.Name = 'Arrow' arrowbutton.Size = UDim2.fromOffset(40, 40) arrowbutton.Position = UDim2.new(1, -40, 0, 0) arrowbutton.BackgroundTransparency = 1 arrowbutton.Text = '' arrowbutton.Parent = window local arrow = Instance.new('ImageLabel') arrow.Name = 'Arrow' arrow.Size = UDim2.fromOffset(9, 4) arrow.Position = UDim2.fromOffset(20, 18) arrow.BackgroundTransparency = 1 arrow.Image = getcustomasset('newvape/assets/new/expandup.png') arrow.ImageColor3 = Color3.fromRGB(140, 140, 140) arrow.Rotation = 180 arrow.Parent = arrowbutton local children = Instance.new('ScrollingFrame') children.Name = 'Children' children.Size = UDim2.new(1, 0, 1, -41) children.Position = UDim2.fromOffset(0, 37) children.BackgroundTransparency = 1 children.BorderSizePixel = 0 children.Visible = false children.ScrollBarThickness = 2 children.ScrollBarImageTransparency = 0.75 children.CanvasSize = UDim2.new() children.Parent = window local divider = Instance.new('Frame') divider.Name = 'Divider' divider.Size = UDim2.new(1, 0, 0, 1) divider.Position = UDim2.fromOffset(0, 37) divider.BackgroundColor3 = Color3.new(1, 1, 1) divider.BackgroundTransparency = 0.928 divider.BorderSizePixel = 0 divider.Visible = false divider.Parent = window local windowlist = Instance.new('UIListLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlist.Parent = children function categoryapi:CreateModule(modulesettings) mainapi:Remove(modulesettings.Name) local moduleapi = { Enabled = false, Options = {}, Bind = {}, Index = getTableSize(mainapi.Modules), ExtraText = modulesettings.ExtraText, Name = modulesettings.Name, Category = categorysettings.Name } local hovered = false local modulebutton = Instance.new('TextButton') modulebutton.Name = modulesettings.Name modulebutton.Size = UDim2.fromOffset(220, 40) modulebutton.BackgroundColor3 = uipallet.Main modulebutton.BorderSizePixel = 0 modulebutton.AutoButtonColor = false modulebutton.Text = '            '..modulesettings.Name modulebutton.TextXAlignment = Enum.TextXAlignment.Left modulebutton.TextColor3 = color.Dark(uipallet.Text, 0.16) modulebutton.TextSize = 14 modulebutton.FontFace = uipallet.Font modulebutton.Parent = children local gradient = Instance.new('UIGradient') gradient.Rotation = 90 gradient.Enabled = false gradient.Parent = modulebutton local modulechildren = Instance.new('Frame') local bind = Instance.new('TextButton') addTooltip(modulebutton, modulesettings.Tooltip) addTooltip(bind, 'Click to bind') bind.Name = 'Bind' bind.Size = UDim2.fromOffset(20, 21) bind.Position = UDim2.new(1, -36, 0, 9) bind.AnchorPoint = Vector2.new(1, 0) bind.BackgroundColor3 = Color3.new(1, 1, 1) bind.BackgroundTransparency = 0.92 bind.BorderSizePixel = 0 bind.AutoButtonColor = false bind.Visible = false bind.Text = '' addCorner(bind, UDim.new(0, 4)) local bindicon = Instance.new('ImageLabel') bindicon.Name = 'Icon' bindicon.Size = UDim2.fromOffset(12, 12) bindicon.Position = UDim2.new(0.5, -6, 0, 5) bindicon.BackgroundTransparency = 1 bindicon.Image = getcustomasset('newvape/assets/new/bind.png') bindicon.ImageColor3 = color.Dark(uipallet.Text, 0.43) bindicon.Parent = bind local bindtext = Instance.new('TextLabel') bindtext.Size = UDim2.fromScale(1, 1) bindtext.Position = UDim2.fromOffset(0, 1) bindtext.BackgroundTransparency = 1 bindtext.Visible = false bindtext.Text = '' bindtext.TextColor3 = color.Dark(uipallet.Text, 0.43) bindtext.TextSize = 12 bindtext.FontFace = uipallet.Font bindtext.Parent = bind local bindcover = Instance.new('ImageLabel') bindcover.Name = 'Cover' bindcover.Size = UDim2.fromOffset(154, 40) bindcover.BackgroundTransparency = 1 bindcover.Visible = false bindcover.Image = getcustomasset('newvape/assets/new/bindbkg.png') bindcover.ScaleType = Enum.ScaleType.Slice bindcover.SliceCenter = Rect.new(0, 0, 141, 40) bindcover.Parent = modulebutton local bindcovertext = Instance.new('TextLabel') bindcovertext.Name = 'Text' bindcovertext.Size = UDim2.new(1, -10, 1, -3) bindcovertext.BackgroundTransparency = 1 bindcovertext.Text = 'PRESS A KEY TO BIND' bindcovertext.TextColor3 = uipallet.Text bindcovertext.TextSize = 11 bindcovertext.FontFace = uipallet.Font bindcovertext.Parent = bindcover bind.Parent = modulebutton local dotsbutton = Instance.new('TextButton') dotsbutton.Name = 'Dots' dotsbutton.Size = UDim2.fromOffset(25, 40) dotsbutton.Position = UDim2.new(1, -25, 0, 0) dotsbutton.BackgroundTransparency = 1 dotsbutton.Text = '' dotsbutton.Parent = modulebutton local dots = Instance.new('ImageLabel') dots.Name = 'Dots' dots.Size = UDim2.fromOffset(3, 16) dots.Position = UDim2.fromOffset(4, 12) dots.BackgroundTransparency = 1 dots.Image = getcustomasset('newvape/assets/new/dots.png') dots.ImageColor3 = color.Light(uipallet.Main, 0.37) dots.Parent = dotsbutton modulechildren.Name = modulesettings.Name..'Children' modulechildren.Size = UDim2.new(1, 0, 0, 0) modulechildren.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) modulechildren.BorderSizePixel = 0 modulechildren.Visible = false modulechildren.Parent = children moduleapi.Children = modulechildren local windowlist = Instance.new('UIListLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlist.Parent = modulechildren local divider = Instance.new('Frame') divider.Name = 'Divider' divider.Size = UDim2.new(1, 0, 0, 1) divider.Position = UDim2.new(0, 0, 1, -1) divider.BackgroundColor3 = Color3.new(0.19, 0.19, 0.19) divider.BackgroundTransparency = 0.52 divider.BorderSizePixel = 0 divider.Visible = false divider.Parent = modulebutton modulesettings.Function = modulesettings.Function or function() end addMaid(moduleapi) function moduleapi:SetBind(tab, mouse) if tab.Mobile then createMobileButton(moduleapi, Vector2.new(tab.X, tab.Y)) return end self.Bind = table.clone(tab) if mouse then bindcovertext.Text = #tab <= 0 and 'BIND REMOVED' or 'BOUND TO' bindcover.Size = UDim2.fromOffset(getfontsize(bindcovertext.Text, bindcovertext.TextSize).X + 20, 40) task.delay(1, function() bindcover.Visible = false end) end if #tab <= 0 then bindtext.Visible = false bindicon.Visible = true bind.Size = UDim2.fromOffset(20, 21) else bind.Visible = true bindtext.Visible = true bindicon.Visible = false bindtext.Text = table.concat(tab, ' + '):upper() bind.Size = UDim2.fromOffset(math.max(getfontsize(bindtext.Text, bindtext.TextSize, bindtext.Font).X + 10, 20), 21) end end function moduleapi:Toggle(multiple) if mainapi.ThreadFix then setthreadidentity(8) end self.Enabled = not self.Enabled divider.Visible = self.Enabled gradient.Enabled = self.Enabled modulebutton.TextColor3 = (hovered or modulechildren.Visible) and uipallet.Text or color.Dark(uipallet.Text, 0.16) modulebutton.BackgroundColor3 = (hovered or modulechildren.Visible) and color.Light(uipallet.Main, 0.02) or uipallet.Main dots.ImageColor3 = self.Enabled and Color3.fromRGB(50, 50, 50) or color.Light(uipallet.Main, 0.37) bindicon.ImageColor3 = color.Dark(uipallet.Text, 0.43) bindtext.TextColor3 = color.Dark(uipallet.Text, 0.43) if not self.Enabled then for _, v in self.Connections do v:Disconnect() end table.clear(self.Connections) end if not multiple then mainapi:UpdateTextGUI() end task.spawn(modulesettings.Function, self.Enabled) end for i, v in components do moduleapi['Create'..i] = function(_, optionsettings) return v(optionsettings, modulechildren, moduleapi) end end bind.MouseEnter:Connect(function() bindtext.Visible = false bindicon.Visible = not bindtext.Visible bindicon.Image = getcustomasset('newvape/assets/new/edit.png') if not moduleapi.Enabled then bindicon.ImageColor3 = color.Dark(uipallet.Text, 0.16) end end) bind.MouseLeave:Connect(function() bindtext.Visible = #moduleapi.Bind > 0 bindicon.Visible = not bindtext.Visible bindicon.Image = getcustomasset('newvape/assets/new/bind.png') if not moduleapi.Enabled then bindicon.ImageColor3 = color.Dark(uipallet.Text, 0.43) end end) bind.MouseButton1Click:Connect(function() bindcovertext.Text = 'PRESS A KEY TO BIND' bindcover.Size = UDim2.fromOffset(getfontsize(bindcovertext.Text, bindcovertext.TextSize).X + 20, 40) bindcover.Visible = true mainapi.Binding = moduleapi end) dotsbutton.MouseEnter:Connect(function() if not moduleapi.Enabled then dots.ImageColor3 = uipallet.Text end end) dotsbutton.MouseLeave:Connect(function() if not moduleapi.Enabled then dots.ImageColor3 = color.Light(uipallet.Main, 0.37) end end) dotsbutton.MouseButton1Click:Connect(function() modulechildren.Visible = not modulechildren.Visible end) dotsbutton.MouseButton2Click:Connect(function() modulechildren.Visible = not modulechildren.Visible end) modulebutton.MouseEnter:Connect(function() hovered = true if not moduleapi.Enabled and not modulechildren.Visible then modulebutton.TextColor3 = uipallet.Text modulebutton.BackgroundColor3 = color.Light(uipallet.Main, 0.02) end bind.Visible = #moduleapi.Bind > 0 or hovered or modulechildren.Visible end) modulebutton.MouseLeave:Connect(function() hovered = false if not moduleapi.Enabled and not modulechildren.Visible then modulebutton.TextColor3 = color.Dark(uipallet.Text, 0.16) modulebutton.BackgroundColor3 = uipallet.Main end bind.Visible = #moduleapi.Bind > 0 or hovered or modulechildren.Visible end) modulebutton.MouseButton1Click:Connect(function() moduleapi:Toggle() end) modulebutton.MouseButton2Click:Connect(function() modulechildren.Visible = not modulechildren.Visible end) if inputService.TouchEnabled then local heldbutton = false modulebutton.MouseButton1Down:Connect(function() heldbutton = true local holdtime, holdpos = tick(), inputService:GetMouseLocation() repeat heldbutton = (inputService:GetMouseLocation() - holdpos).Magnitude < 3 task.wait() until (tick() - holdtime) > 1 or not heldbutton or not clickgui.Visible if heldbutton and clickgui.Visible then if mainapi.ThreadFix then setthreadidentity(8) end clickgui.Visible = false tooltip.Visible = false mainapi:BlurCheck() for _, mobileButton in mainapi.Modules do if mobileButton.Bind.Button then mobileButton.Bind.Button.Visible = true end end local touchconnection touchconnection = inputService.InputBegan:Connect(function(inputType) if inputType.UserInputType == Enum.UserInputType.Touch then if mainapi.ThreadFix then setthreadidentity(8) end createMobileButton(moduleapi, inputType.Position + Vector3.new(0, guiService:GetGuiInset().Y, 0)) clickgui.Visible = true mainapi:BlurCheck() for _, mobileButton in mainapi.Modules do if mobileButton.Bind.Button then mobileButton.Bind.Button.Visible = false end end touchconnection:Disconnect() end end) end end) modulebutton.MouseButton1Up:Connect(function() heldbutton = false end) end windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if mainapi.ThreadFix then setthreadidentity(8) end modulechildren.Size = UDim2.new(1, 0, 0, windowlist.AbsoluteContentSize.Y / scale.Scale) end) moduleapi.Object = modulebutton mainapi.Modules[modulesettings.Name] = moduleapi local sorting = {} for _, v in mainapi.Modules do sorting[v.Category] = sorting[v.Category] or {} table.insert(sorting[v.Category], v.Name) end for _, sort in sorting do table.sort(sort) for i, v in sort do mainapi.Modules[v].Index = i mainapi.Modules[v].Object.LayoutOrder = i mainapi.Modules[v].Children.LayoutOrder = i end end return moduleapi end function categoryapi:Expand() self.Expanded = not self.Expanded children.Visible = self.Expanded arrow.Rotation = self.Expanded and 0 or 180 window.Size = UDim2.fromOffset(220, self.Expanded and math.min(41 + windowlist.AbsoluteContentSize.Y / scale.Scale, 601) or 41) divider.Visible = children.CanvasPosition.Y > 10 and children.Visible end arrowbutton.MouseButton1Click:Connect(function() categoryapi:Expand() end) arrowbutton.MouseButton2Click:Connect(function() categoryapi:Expand() end) arrowbutton.MouseEnter:Connect(function() arrow.ImageColor3 = Color3.fromRGB(220, 220, 220) end) arrowbutton.MouseLeave:Connect(function() arrow.ImageColor3 = Color3.fromRGB(140, 140, 140) end) children:GetPropertyChangedSignal('CanvasPosition'):Connect(function() if self.ThreadFix then setthreadidentity(8) end divider.Visible = children.CanvasPosition.Y > 10 and children.Visible end) window.InputBegan:Connect(function(inputObj) if inputObj.Position.Y < window.AbsolutePosition.Y + 41 and inputObj.UserInputType == Enum.UserInputType.MouseButton2 then categoryapi:Expand() end end) windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if self.ThreadFix then setthreadidentity(8) end children.CanvasSize = UDim2.fromOffset(0, windowlist.AbsoluteContentSize.Y / scale.Scale) if categoryapi.Expanded then window.Size = UDim2.fromOffset(220, math.min(41 + windowlist.AbsoluteContentSize.Y / scale.Scale, 601)) end end) categoryapi.Button = self.Categories.Main:CreateButton({ Name = categorysettings.Name, Icon = categorysettings.Icon, Size = categorysettings.Size, Window = window }) categoryapi.Object = window self.Categories[categorysettings.Name] = categoryapi return categoryapi end function mainapi:CreateOverlay(categorysettings) local window local categoryapi categoryapi = { Type = 'Overlay', Expanded = false, Button = self.Overlays:CreateToggle({ Name = categorysettings.Name, Function = function(callback) window.Visible = callback and (clickgui.Visible or categoryapi.Pinned) if not callback then for _, v in categoryapi.Connections do v:Disconnect() end table.clear(categoryapi.Connections) end if categorysettings.Function then task.spawn(categorysettings.Function, callback) end end, Icon = categorysettings.Icon, Size = categorysettings.Size, Position = categorysettings.Position }), Pinned = false, Options = {} } window = Instance.new('TextButton') window.Name = categorysettings.Name..'Overlay' window.Size = UDim2.fromOffset(categorysettings.CategorySize or 220, 41) window.Position = UDim2.fromOffset(240, 46) window.BackgroundColor3 = uipallet.Main window.AutoButtonColor = false window.Visible = false window.Text = '' window.Parent = scaledgui local blur = addBlur(window) addCorner(window) makeDraggable(window) local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = categorysettings.Size icon.Position = UDim2.fromOffset(12, (icon.Size.X.Offset > 14 and 14 or 13)) icon.BackgroundTransparency = 1 icon.Image = categorysettings.Icon icon.ImageColor3 = uipallet.Text icon.Parent = window local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -32, 0, 41) title.Position = UDim2.fromOffset(math.abs(title.Size.X.Offset), 0) title.BackgroundTransparency = 1 title.Text = categorysettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = window local pin = Instance.new('ImageButton') pin.Name = 'Pin' pin.Size = UDim2.fromOffset(16, 16) pin.Position = UDim2.new(1, -47, 0, 12) pin.BackgroundTransparency = 1 pin.AutoButtonColor = false pin.Image = getcustomasset('newvape/assets/new/pin.png') pin.ImageColor3 = color.Dark(uipallet.Text, 0.43) pin.Parent = window local dotsbutton = Instance.new('TextButton') dotsbutton.Name = 'Dots' dotsbutton.Size = UDim2.fromOffset(17, 40) dotsbutton.Position = UDim2.new(1, -17, 0, 0) dotsbutton.BackgroundTransparency = 1 dotsbutton.Text = '' dotsbutton.Parent = window local dots = Instance.new('ImageLabel') dots.Name = 'Dots' dots.Size = UDim2.fromOffset(3, 16) dots.Position = UDim2.fromOffset(4, 12) dots.BackgroundTransparency = 1 dots.Image = getcustomasset('newvape/assets/new/dots.png') dots.ImageColor3 = color.Light(uipallet.Main, 0.37) dots.Parent = dotsbutton local customchildren = Instance.new('Frame') customchildren.Name = 'CustomChildren' customchildren.Size = UDim2.new(1, 0, 0, 200) customchildren.Position = UDim2.fromScale(0, 1) customchildren.BackgroundTransparency = 1 customchildren.Parent = window local children = Instance.new('ScrollingFrame') children.Name = 'Children' children.Size = UDim2.new(1, 0, 1, -41) children.Position = UDim2.fromOffset(0, 37) children.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) children.BorderSizePixel = 0 children.Visible = false children.ScrollBarThickness = 2 children.ScrollBarImageTransparency = 0.75 children.CanvasSize = UDim2.new() children.Parent = window local windowlist = Instance.new('UIListLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlist.Parent = children addMaid(categoryapi) function categoryapi:Expand(check) if check and not blur.Visible then return end self.Expanded = not self.Expanded children.Visible = self.Expanded dots.ImageColor3 = self.Expanded and uipallet.Text or color.Light(uipallet.Main, 0.37) if self.Expanded then window.Size = UDim2.fromOffset(window.Size.X.Offset, math.min(41 + windowlist.AbsoluteContentSize.Y / scale.Scale, 601)) else window.Size = UDim2.fromOffset(window.Size.X.Offset, 41) end end function categoryapi:Pin() self.Pinned = not self.Pinned pin.ImageColor3 = self.Pinned and uipallet.Text or color.Dark(uipallet.Text, 0.43) end function categoryapi:Update() window.Visible = self.Button.Enabled and (clickgui.Visible or self.Pinned) if self.Expanded then self:Expand() end if clickgui.Visible then window.Size = UDim2.fromOffset(window.Size.X.Offset, 41) window.BackgroundTransparency = 0 blur.Visible = true icon.Visible = true title.Visible = true pin.Visible = true dotsbutton.Visible = true else window.Size = UDim2.fromOffset(window.Size.X.Offset, 0) window.BackgroundTransparency = 1 blur.Visible = false icon.Visible = false title.Visible = false pin.Visible = false dotsbutton.Visible = false end end for i, v in components do categoryapi['Create'..i] = function(self, optionsettings) return v(optionsettings, children, categoryapi) end end dotsbutton.MouseEnter:Connect(function() if not children.Visible then dots.ImageColor3 = uipallet.Text end end) dotsbutton.MouseLeave:Connect(function() if not children.Visible then dots.ImageColor3 = color.Light(uipallet.Main, 0.37) end end) dotsbutton.MouseButton1Click:Connect(function() categoryapi:Expand(true) end) dotsbutton.MouseButton2Click:Connect(function() categoryapi:Expand(true) end) pin.MouseButton1Click:Connect(function() categoryapi:Pin() end) window.MouseButton2Click:Connect(function() categoryapi:Expand(true) end) windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if self.ThreadFix then setthreadidentity(8) end children.CanvasSize = UDim2.fromOffset(0, windowlist.AbsoluteContentSize.Y / scale.Scale) if categoryapi.Expanded then window.Size = UDim2.fromOffset(window.Size.X.Offset, math.min(41 + windowlist.AbsoluteContentSize.Y / scale.Scale, 601)) end end) self:Clean(clickgui:GetPropertyChangedSignal('Visible'):Connect(function() categoryapi:Update() end)) categoryapi:Update() categoryapi.Object = window categoryapi.Children = customchildren self.Categories[categorysettings.Name] = categoryapi return categoryapi end function mainapi:CreateCategoryList(categorysettings) local categoryapi = { Type = 'CategoryList', Expanded = false, List = {}, ListEnabled = {}, Objects = {}, Options = {} } categorysettings.Color = categorysettings.Color or Color3.fromRGB(5, 134, 105) local window = Instance.new('TextButton') window.Name = categorysettings.Name..'CategoryList' window.Size = UDim2.fromOffset(220, 45) window.Position = UDim2.fromOffset(240, 46) window.BackgroundColor3 = uipallet.Main window.AutoButtonColor = false window.Visible = false window.Text = '' window.Parent = clickgui addBlur(window) addCorner(window) makeDraggable(window) local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = categorysettings.Size icon.Position = categorysettings.Position or UDim2.fromOffset(12, (categorysettings.Size.X.Offset > 20 and 13 or 12)) icon.BackgroundTransparency = 1 icon.Image = categorysettings.Icon icon.ImageColor3 = uipallet.Text icon.Parent = window local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -(categorysettings.Size.X.Offset > 20 and 44 or 36), 0, 20) title.Position = UDim2.fromOffset(math.abs(title.Size.X.Offset), 12) title.BackgroundTransparency = 1 title.Text = categorysettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = uipallet.Text title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = window local arrowbutton = Instance.new('TextButton') arrowbutton.Name = 'Arrow' arrowbutton.Size = UDim2.fromOffset(40, 40) arrowbutton.Position = UDim2.new(1, -40, 0, 0) arrowbutton.BackgroundTransparency = 1 arrowbutton.Text = '' arrowbutton.Parent = window local arrow = Instance.new('ImageLabel') arrow.Name = 'Arrow' arrow.Size = UDim2.fromOffset(9, 4) arrow.Position = UDim2.fromOffset(20, 19) arrow.BackgroundTransparency = 1 arrow.Image = getcustomasset('newvape/assets/new/expandup.png') arrow.ImageColor3 = Color3.fromRGB(140, 140, 140) arrow.Rotation = 180 arrow.Parent = arrowbutton local children = Instance.new('ScrollingFrame') children.Name = 'Children' children.Size = UDim2.new(1, 0, 1, -45) children.Position = UDim2.fromOffset(0, 45) children.BackgroundTransparency = 1 children.BorderSizePixel = 0 children.Visible = false children.ScrollBarThickness = 2 children.ScrollBarImageTransparency = 0.75 children.CanvasSize = UDim2.new() children.Parent = window local childrentwo = Instance.new('Frame') childrentwo.BackgroundTransparency = 1 childrentwo.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) childrentwo.Visible = false childrentwo.Parent = children local settings = Instance.new('ImageButton') settings.Name = 'Settings' settings.Size = UDim2.fromOffset(16, 16) settings.Position = UDim2.new(1, -52, 0, 13) settings.BackgroundTransparency = 1 settings.AutoButtonColor = false settings.Image = getcustomasset('newvape/assets/new/customsettings.png') settings.ImageColor3 = color.Dark(uipallet.Text, 0.43) settings.Parent = window local divider = Instance.new('Frame') divider.Name = 'Divider' divider.Size = UDim2.new(1, 0, 0, 1) divider.Position = UDim2.fromOffset(0, 41) divider.BorderSizePixel = 0 divider.Visible = false divider.BackgroundColor3 = Color3.new(1, 1, 1) divider.BackgroundTransparency = 0.928 divider.Parent = window local windowlist = Instance.new('UIListLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlist.Padding = UDim.new(0, 3) windowlist.Parent = children local windowlisttwo = Instance.new('UIListLayout') windowlisttwo.SortOrder = Enum.SortOrder.LayoutOrder windowlisttwo.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlisttwo.Parent = childrentwo local addbkg = Instance.new('Frame') addbkg.Name = 'Add' addbkg.Size = UDim2.fromOffset(200, 31) addbkg.Position = UDim2.fromOffset(10, 45) addbkg.BackgroundColor3 = color.Light(uipallet.Main, 0.02) addbkg.Parent = children addCorner(addbkg) local addbox = addbkg:Clone() addbox.Size = UDim2.new(1, -2, 1, -2) addbox.Position = UDim2.fromOffset(1, 1) addbox.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) addbox.Parent = addbkg local addvalue = Instance.new('TextBox') addvalue.Size = UDim2.new(1, -35, 1, 0) addvalue.Position = UDim2.fromOffset(10, 0) addvalue.BackgroundTransparency = 1 addvalue.Text = '' addvalue.PlaceholderText = categorysettings.Placeholder or 'Add entry...' addvalue.TextXAlignment = Enum.TextXAlignment.Left addvalue.TextColor3 = Color3.new(1, 1, 1) addvalue.TextSize = 15 addvalue.FontFace = uipallet.Font addvalue.ClearTextOnFocus = false addvalue.Parent = addbkg local addbutton = Instance.new('ImageButton') addbutton.Name = 'AddButton' addbutton.Size = UDim2.fromOffset(16, 16) addbutton.Position = UDim2.new(1, -26, 0, 8) addbutton.BackgroundTransparency = 1 addbutton.Image = getcustomasset('newvape/assets/new/add.png') addbutton.ImageColor3 = categorysettings.Color addbutton.ImageTransparency = 0.3 addbutton.Parent = addbkg local cursedpadding = Instance.new('Frame') cursedpadding.Size = UDim2.fromOffset() cursedpadding.BackgroundTransparency = 1 cursedpadding.Parent = children categorysettings.Function = categorysettings.Function or function() end function categoryapi:ChangeValue(val) if val then if categorysettings.Profiles then local ind = self:GetValue(val) if ind then if val ~= 'default' then table.remove(mainapi.Profiles, ind) if isfile('newvape/profiles/'..val..mainapi.Place..'.txt') and delfile then delfile('newvape/profiles/'..val..mainapi.Place..'.txt') end end else table.insert(mainapi.Profiles, {Name = val, Bind = {}}) end else local ind = table.find(self.List, val) if ind then table.remove(self.List, ind) ind = table.find(self.ListEnabled, val) if ind then table.remove(self.ListEnabled, ind) end else table.insert(self.List, val) table.insert(self.ListEnabled, val) end end end categorysettings.Function() for _, v in self.Objects do v:Destroy() end table.clear(self.Objects) self.Selected = nil for i, v in (categorysettings.Profiles and mainapi.Profiles or self.List) do if categorysettings.Profiles then local object = Instance.new('TextButton') object.Name = v.Name object.Size = UDim2.fromOffset(200, 33) object.BackgroundColor3 = color.Light(uipallet.Main, 0.02) object.AutoButtonColor = false object.Text = '' object.Parent = children addCorner(object) local objectstroke = Instance.new('UIStroke') objectstroke.Color = color.Light(uipallet.Main, 0.1) objectstroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border objectstroke.Enabled = false objectstroke.Parent = object local objecttitle = Instance.new('TextLabel') objecttitle.Name = 'Title' objecttitle.Size = UDim2.new(1, -10, 1, 0) objecttitle.Position = UDim2.fromOffset(10, 0) objecttitle.BackgroundTransparency = 1 objecttitle.Text = v.Name objecttitle.TextXAlignment = Enum.TextXAlignment.Left objecttitle.TextColor3 = color.Dark(uipallet.Text, 0.4) objecttitle.TextSize = 15 objecttitle.FontFace = uipallet.Font objecttitle.Parent = object local dotsbutton = Instance.new('TextButton') dotsbutton.Name = 'Dots' dotsbutton.Size = UDim2.fromOffset(25, 33) dotsbutton.Position = UDim2.new(1, -25, 0, 0) dotsbutton.BackgroundTransparency = 1 dotsbutton.Text = '' dotsbutton.Parent = object local dots = Instance.new('ImageLabel') dots.Name = 'Dots' dots.Size = UDim2.fromOffset(3, 16) dots.Position = UDim2.fromOffset(10, 9) dots.BackgroundTransparency = 1 dots.Image = getcustomasset('newvape/assets/new/dots.png') dots.ImageColor3 = color.Light(uipallet.Main, 0.37) dots.Parent = dotsbutton local bind = Instance.new('TextButton') addTooltip(bind, 'Click to bind') bind.Name = 'Bind' bind.Size = UDim2.fromOffset(20, 21) bind.Position = UDim2.new(1, -30, 0, 6) bind.AnchorPoint = Vector2.new(1, 0) bind.BackgroundColor3 = Color3.new(1, 1, 1) bind.BackgroundTransparency = 0.92 bind.BorderSizePixel = 0 bind.AutoButtonColor = false bind.Visible = false bind.Text = '' addCorner(bind, UDim.new(0, 4)) local bindicon = Instance.new('ImageLabel') bindicon.Name = 'Icon' bindicon.Size = UDim2.fromOffset(12, 12) bindicon.Position = UDim2.new(0.5, -6, 0, 5) bindicon.BackgroundTransparency = 1 bindicon.Image = getcustomasset('newvape/assets/new/bind.png') bindicon.ImageColor3 = color.Dark(uipallet.Text, 0.43) bindicon.Parent = bind local bindtext = Instance.new('TextLabel') bindtext.Size = UDim2.fromScale(1, 1) bindtext.Position = UDim2.fromOffset(0, 1) bindtext.BackgroundTransparency = 1 bindtext.Visible = false bindtext.Text = '' bindtext.TextColor3 = color.Dark(uipallet.Text, 0.43) bindtext.TextSize = 12 bindtext.FontFace = uipallet.Font bindtext.Parent = bind bind.MouseEnter:Connect(function() bindtext.Visible = false bindicon.Visible = not bindtext.Visible bindicon.Image = getcustomasset('newvape/assets/new/edit.png') if v.Name ~= mainapi.Profile then bindicon.ImageColor3 = color.Dark(uipallet.Text, 0.16) end end) bind.MouseLeave:Connect(function() bindtext.Visible = #v.Bind > 0 bindicon.Visible = not bindtext.Visible bindicon.Image = getcustomasset('newvape/assets/new/bind.png') if v.Name ~= mainapi.Profile then bindicon.ImageColor3 = color.Dark(uipallet.Text, 0.43) end end) local bindcover = Instance.new('ImageLabel') bindcover.Name = 'Cover' bindcover.Size = UDim2.fromOffset(154, 33) bindcover.BackgroundTransparency = 1 bindcover.Visible = false bindcover.Image = getcustomasset('newvape/assets/new/bindbkg.png') bindcover.ScaleType = Enum.ScaleType.Slice bindcover.SliceCenter = Rect.new(0, 0, 141, 40) bindcover.Parent = object local bindcovertext = Instance.new('TextLabel') bindcovertext.Name = 'Text' bindcovertext.Size = UDim2.new(1, -10, 1, -3) bindcovertext.BackgroundTransparency = 1 bindcovertext.Text = 'PRESS A KEY TO BIND' bindcovertext.TextColor3 = uipallet.Text bindcovertext.TextSize = 11 bindcovertext.FontFace = uipallet.Font bindcovertext.Parent = bindcover bind.Parent = object dotsbutton.MouseEnter:Connect(function() if v.Name ~= mainapi.Profile then dots.ImageColor3 = uipallet.Text end end) dotsbutton.MouseLeave:Connect(function() if v.Name ~= mainapi.Profile then dots.ImageColor3 = color.Light(uipallet.Main, 0.37) end end) dotsbutton.MouseButton1Click:Connect(function() if v.Name ~= mainapi.Profile then categoryapi:ChangeValue(v.Name) end end) object.MouseButton1Click:Connect(function() mainapi:Save(v.Name) mainapi:Load(true) end) object.MouseEnter:Connect(function() bind.Visible = true if v.Name ~= mainapi.Profile then objectstroke.Enabled = true objecttitle.TextColor3 = color.Dark(uipallet.Text, 0.16) end end) object.MouseLeave:Connect(function() bind.Visible = #v.Bind > 0 if v.Name ~= mainapi.Profile then objectstroke.Enabled = false objecttitle.TextColor3 = color.Dark(uipallet.Text, 0.4) end end) local function bindFunction(self, tab, mouse) v.Bind = table.clone(tab) if mouse then bindcovertext.Text = #tab <= 0 and 'BIND REMOVED' or 'BOUND TO '..table.concat(tab, ' + '):upper() bindcover.Size = UDim2.fromOffset(getfontsize(bindcovertext.Text, bindcovertext.TextSize).X + 20, 40) task.delay(1, function() bindcover.Visible = false end) end if #tab <= 0 then bindtext.Visible = false bindicon.Visible = true bind.Size = UDim2.fromOffset(20, 21) else bind.Visible = true bindtext.Visible = true bindicon.Visible = false bindtext.Text = table.concat(tab, ' + '):upper() bind.Size = UDim2.fromOffset(math.max(getfontsize(bindtext.Text, bindtext.TextSize, bindtext.Font).X + 10, 20), 21) end end bindFunction({}, v.Bind) bind.MouseButton1Click:Connect(function() bindcovertext.Text = 'PRESS A KEY TO BIND' bindcover.Size = UDim2.fromOffset(getfontsize(bindcovertext.Text, bindcovertext.TextSize).X + 20, 40) bindcover.Visible = true mainapi.Binding = {SetBind = bindFunction, Bind = v.Bind} end) if v.Name == mainapi.Profile then self.Selected = object end table.insert(self.Objects, object) else local enabled = table.find(self.ListEnabled, v) local object = Instance.new('TextButton') object.Name = v object.Size = UDim2.fromOffset(200, 32) object.BackgroundColor3 = color.Light(uipallet.Main, 0.02) object.AutoButtonColor = false object.Text = '' object.Parent = children addCorner(object) local objectbkg = Instance.new('Frame') objectbkg.Name = 'BKG' objectbkg.Size = UDim2.new(1, -2, 1, -2) objectbkg.Position = UDim2.fromOffset(1, 1) objectbkg.BackgroundColor3 = uipallet.Main objectbkg.Visible = false objectbkg.Parent = object addCorner(objectbkg) local objectdot = Instance.new('Frame') objectdot.Name = 'Dot' objectdot.Size = UDim2.fromOffset(10, 11) objectdot.Position = UDim2.fromOffset(10, 12) objectdot.BackgroundColor3 = enabled and categorysettings.Color or color.Light(uipallet.Main, 0.37) objectdot.Parent = object addCorner(objectdot, UDim.new(1, 0)) local objectdotin = objectdot:Clone() objectdotin.Size = UDim2.fromOffset(8, 9) objectdotin.Position = UDim2.fromOffset(1, 1) objectdotin.BackgroundColor3 = enabled and categorysettings.Color or color.Light(uipallet.Main, 0.02) objectdotin.Parent = objectdot local objecttitle = Instance.new('TextLabel') objecttitle.Name = 'Title' objecttitle.Size = UDim2.new(1, -30, 1, 0) objecttitle.Position = UDim2.fromOffset(30, 0) objecttitle.BackgroundTransparency = 1 objecttitle.Text = v objecttitle.TextXAlignment = Enum.TextXAlignment.Left objecttitle.TextColor3 = color.Dark(uipallet.Text, 0.16) objecttitle.TextSize = 15 objecttitle.FontFace = uipallet.Font objecttitle.Parent = object if mainapi.ThreadFix then setthreadidentity(8) end local close = Instance.new('ImageButton') close.Name = 'Close' close.Size = UDim2.fromOffset(16, 16) close.Position = UDim2.new(1, -23, 0, 8) close.BackgroundColor3 = Color3.new(1, 1, 1) close.BackgroundTransparency = 1 close.AutoButtonColor = false close.Image = getcustomasset('newvape/assets/new/closemini.png') close.ImageColor3 = color.Light(uipallet.Text, 0.2) close.ImageTransparency = 0.5 close.Parent = object addCorner(close, UDim.new(1, 0)) close.MouseEnter:Connect(function() close.ImageTransparency = 0.3 tween:Tween(close, uipallet.Tween, { BackgroundTransparency = 0.6 }) end) close.MouseLeave:Connect(function() close.ImageTransparency = 0.5 tween:Tween(close, uipallet.Tween, { BackgroundTransparency = 1 }) end) close.MouseButton1Click:Connect(function() categoryapi:ChangeValue(v) end) object.MouseEnter:Connect(function() objectbkg.Visible = true end) object.MouseLeave:Connect(function() objectbkg.Visible = false end) object.MouseButton1Click:Connect(function() local ind = table.find(self.ListEnabled, v) if ind then table.remove(self.ListEnabled, ind) objectdot.BackgroundColor3 = color.Light(uipallet.Main, 0.37) objectdotin.BackgroundColor3 = color.Light(uipallet.Main, 0.02) else table.insert(self.ListEnabled, v) objectdot.BackgroundColor3 = categorysettings.Color objectdotin.BackgroundColor3 = categorysettings.Color end categorysettings.Function() end) table.insert(self.Objects, object) end end mainapi:UpdateGUI(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) end function categoryapi:Expand() self.Expanded = not self.Expanded children.Visible = self.Expanded arrow.Rotation = self.Expanded and 0 or 180 window.Size = UDim2.fromOffset(220, self.Expanded and math.min(51 + windowlist.AbsoluteContentSize.Y / scale.Scale, 611) or 45) divider.Visible = children.CanvasPosition.Y > 10 and children.Visible end function categoryapi:GetValue(name) for i, v in mainapi.Profiles do if v.Name == name then return i end end end for i, v in components do categoryapi['Create'..i] = function(self, optionsettings) return v(optionsettings, childrentwo, categoryapi) end end addbutton.MouseEnter:Connect(function() addbutton.ImageTransparency = 0 end) addbutton.MouseLeave:Connect(function() addbutton.ImageTransparency = 0.3 end) addbutton.MouseButton1Click:Connect(function() if not table.find(categoryapi.List, addvalue.Text) then categoryapi:ChangeValue(addvalue.Text) addvalue.Text = '' end end) arrowbutton.MouseEnter:Connect(function() arrow.ImageColor3 = Color3.fromRGB(220, 220, 220) end) arrowbutton.MouseLeave:Connect(function() arrow.ImageColor3 = Color3.fromRGB(140, 140, 140) end) arrowbutton.MouseButton1Click:Connect(function() categoryapi:Expand() end) arrowbutton.MouseButton2Click:Connect(function() categoryapi:Expand() end) addvalue.FocusLost:Connect(function(enter) if enter and not table.find(categoryapi.List, addvalue.Text) then categoryapi:ChangeValue(addvalue.Text) addvalue.Text = '' end end) addvalue.MouseEnter:Connect(function() tween:Tween(addbkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.14) }) end) addvalue.MouseLeave:Connect(function() tween:Tween(addbkg, uipallet.Tween, { BackgroundColor3 = color.Light(uipallet.Main, 0.02) }) end) children:GetPropertyChangedSignal('CanvasPosition'):Connect(function() divider.Visible = children.CanvasPosition.Y > 10 and children.Visible end) settings.MouseEnter:Connect(function() settings.ImageColor3 = uipallet.Text end) settings.MouseLeave:Connect(function() settings.ImageColor3 = color.Light(uipallet.Main, 0.37) end) settings.MouseButton1Click:Connect(function() childrentwo.Visible = not childrentwo.Visible end) window.InputBegan:Connect(function(inputObj) if inputObj.Position.Y < window.AbsolutePosition.Y + 41 and inputObj.UserInputType == Enum.UserInputType.MouseButton2 then categoryapi:Expand() end end) windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if self.ThreadFix then setthreadidentity(8) end children.CanvasSize = UDim2.fromOffset(0, windowlist.AbsoluteContentSize.Y / scale.Scale) if categoryapi.Expanded then window.Size = UDim2.fromOffset(220, math.min(51 + windowlist.AbsoluteContentSize.Y / scale.Scale, 611)) end end) windowlisttwo:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if self.ThreadFix then setthreadidentity(8) end childrentwo.Size = UDim2.fromOffset(220, windowlisttwo.AbsoluteContentSize.Y) end) categoryapi.Button = self.Categories.Main:CreateButton({ Name = categorysettings.Name, Icon = categorysettings.CategoryIcon, Size = categorysettings.CategorySize, Window = window }) categoryapi.Object = window self.Categories[categorysettings.Name] = categoryapi return categoryapi end function mainapi:CreateSearch() local searchbkg = Instance.new('Frame') searchbkg.Name = 'Search' searchbkg.Size = UDim2.fromOffset(220, 37) searchbkg.Position = UDim2.new(0.5, 0, 0, 13) searchbkg.AnchorPoint = Vector2.new(0.5, 0) searchbkg.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) searchbkg.Parent = clickgui local searchicon = Instance.new('ImageLabel') searchicon.Name = 'Icon' searchicon.Size = UDim2.fromOffset(14, 14) searchicon.Position = UDim2.new(1, -23, 0, 11) searchicon.BackgroundTransparency = 1 searchicon.Image = getcustomasset('newvape/assets/new/search.png') searchicon.ImageColor3 = color.Light(uipallet.Main, 0.37) searchicon.Parent = searchbkg local legiticon = Instance.new('ImageButton') legiticon.Name = 'Legit' legiticon.Size = UDim2.fromOffset(29, 16) legiticon.Position = UDim2.fromOffset(8, 11) legiticon.BackgroundTransparency = 1 legiticon.Image = getcustomasset('newvape/assets/new/legit.png') legiticon.Parent = searchbkg local legitdivider = Instance.new('Frame') legitdivider.Name = 'LegitDivider' legitdivider.Size = UDim2.fromOffset(2, 12) legitdivider.Position = UDim2.fromOffset(43, 13) legitdivider.BackgroundColor3 = color.Light(uipallet.Main, 0.14) legitdivider.BorderSizePixel = 0 legitdivider.Parent = searchbkg addBlur(searchbkg) addCorner(searchbkg) local search = Instance.new('TextBox') search.Size = UDim2.new(1, -50, 0, 37) search.Position = UDim2.fromOffset(50, 0) search.BackgroundTransparency = 1 search.Text = '' search.PlaceholderText = '' search.TextXAlignment = Enum.TextXAlignment.Left search.TextColor3 = uipallet.Text search.TextSize = 12 search.FontFace = uipallet.Font search.ClearTextOnFocus = false search.Parent = searchbkg local children = Instance.new('ScrollingFrame') children.Name = 'Children' children.Size = UDim2.new(1, 0, 1, -37) children.Position = UDim2.fromOffset(0, 34) children.BackgroundTransparency = 1 children.BorderSizePixel = 0 children.ScrollBarThickness = 2 children.ScrollBarImageTransparency = 0.75 children.CanvasSize = UDim2.new() children.Parent = searchbkg local divider = Instance.new('Frame') divider.Name = 'Divider' divider.Size = UDim2.new(1, 0, 0, 1) divider.Position = UDim2.fromOffset(0, 33) divider.BackgroundColor3 = Color3.new(1, 1, 1) divider.BackgroundTransparency = 0.928 divider.BorderSizePixel = 0 divider.Visible = false divider.Parent = searchbkg local windowlist = Instance.new('UIListLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center windowlist.Parent = children children:GetPropertyChangedSignal('CanvasPosition'):Connect(function() divider.Visible = children.CanvasPosition.Y > 10 and children.Visible end) legiticon.MouseButton1Click:Connect(function() clickgui.Visible = false self.Legit.Window.Visible = true self.Legit.Window.Position = UDim2.new(0.5, -350, 0.5, -194) end) search:GetPropertyChangedSignal('Text'):Connect(function() for _, v in children:GetChildren() do if v:IsA('TextButton') then v:Destroy() end end if search.Text == '' then return end for i, v in self.Modules do if i:lower():find(search.Text:lower()) then local button = v.Object:Clone() button.Bind:Destroy() button.MouseButton1Click:Connect(function() v:Toggle() end) button.MouseButton2Click:Connect(function() v.Object.Parent.Parent.Visible = true local frame = v.Object.Parent local highlight = Instance.new('Frame') highlight.Size = UDim2.fromScale(1, 1) highlight.BackgroundColor3 = Color3.new(1, 1, 1) highlight.BackgroundTransparency = 0.6 highlight.BorderSizePixel = 0 highlight.Parent = v.Object tween:Tween(highlight, TweenInfo.new(0.5), { BackgroundTransparency = 1 }) task.delay(0.5, highlight.Destroy, highlight) frame.CanvasPosition = Vector2.new(0, (v.Object.LayoutOrder * 40) - (math.min(frame.CanvasSize.Y.Offset, 600) / 2)) end) button.Parent = children task.spawn(function() repeat for _, v2 in {'Text', 'TextColor3', 'BackgroundColor3'} do button[v2] = v.Object[v2] end button.UIGradient.Color = v.Object.UIGradient.Color button.UIGradient.Enabled = v.Object.UIGradient.Enabled button.Dots.Dots.ImageColor3 = v.Object.Dots.Dots.ImageColor3 task.wait() until not button.Parent end) end end end) windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if self.ThreadFix then setthreadidentity(8) end children.CanvasSize = UDim2.fromOffset(0, windowlist.AbsoluteContentSize.Y / scale.Scale) searchbkg.Size = UDim2.fromOffset(220, math.min(37 + windowlist.AbsoluteContentSize.Y / scale.Scale, 437)) end) self.Legit.Icon = legiticon end function mainapi:CreateLegit() local legitapi = {Modules = {}} local window = Instance.new('Frame') window.Name = 'LegitGUI' window.Size = UDim2.fromOffset(700, 389) window.Position = UDim2.new(0.5, -350, 0.5, -194) window.BackgroundColor3 = uipallet.Main window.Visible = false window.Parent = scaledgui addBlur(window) addCorner(window) makeDraggable(window) local modal = Instance.new('TextButton') modal.BackgroundTransparency = 1 modal.Text = '' modal.Modal = true modal.Parent = window local icon = Instance.new('ImageLabel') icon.Name = 'Icon' icon.Size = UDim2.fromOffset(16, 16) icon.Position = UDim2.fromOffset(18, 13) icon.BackgroundTransparency = 1 icon.Image = getcustomasset('newvape/assets/new/legittab.png') icon.ImageColor3 = uipallet.Text icon.Parent = window local close = addCloseButton(window) local children = Instance.new('ScrollingFrame') children.Name = 'Children' children.Size = UDim2.fromOffset(684, 340) children.Position = UDim2.fromOffset(14, 41) children.BackgroundTransparency = 1 children.BorderSizePixel = 0 children.ScrollBarThickness = 2 children.ScrollBarImageTransparency = 0.75 children.CanvasSize = UDim2.new() children.Parent = window local windowlist = Instance.new('UIGridLayout') windowlist.SortOrder = Enum.SortOrder.LayoutOrder windowlist.FillDirectionMaxCells = 4 windowlist.CellSize = UDim2.fromOffset(163, 114) windowlist.CellPadding = UDim2.fromOffset(6, 5) windowlist.Parent = children legitapi.Window = window table.insert(mainapi.Windows, window) function legitapi:CreateModule(modulesettings) mainapi:Remove(modulesettings.Name) local moduleapi = { Enabled = false, Options = {}, Name = modulesettings.Name, Legit = true } local module = Instance.new('TextButton') module.Name = modulesettings.Name module.BackgroundColor3 = color.Light(uipallet.Main, 0.02) module.Text = '' module.AutoButtonColor = false module.Parent = children addTooltip(module, modulesettings.Tooltip) addCorner(module) local title = Instance.new('TextLabel') title.Name = 'Title' title.Size = UDim2.new(1, -16, 0, 20) title.Position = UDim2.fromOffset(16, 81) title.BackgroundTransparency = 1 title.Text = modulesettings.Name title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = color.Dark(uipallet.Text, 0.31) title.TextSize = 13 title.FontFace = uipallet.Font title.Parent = module local knob = Instance.new('Frame') knob.Name = 'Knob' knob.Size = UDim2.fromOffset(22, 12) knob.Position = UDim2.new(1, -57, 0, 14) knob.BackgroundColor3 = color.Light(uipallet.Main, 0.14) knob.Parent = module addCorner(knob, UDim.new(1, 0)) local knobmain = knob:Clone() knobmain.Size = UDim2.fromOffset(8, 8) knobmain.Position = UDim2.fromOffset(2, 2) knobmain.BackgroundColor3 = uipallet.Main knobmain.Parent = knob local dotsbutton = Instance.new('TextButton') dotsbutton.Name = 'Dots' dotsbutton.Size = UDim2.fromOffset(14, 24) dotsbutton.Position = UDim2.new(1, -27, 0, 8) dotsbutton.BackgroundTransparency = 1 dotsbutton.Text = '' dotsbutton.Parent = module local dots = Instance.new('ImageLabel') dots.Name = 'Dots' dots.Size = UDim2.fromOffset(2, 12) dots.Position = UDim2.fromOffset(6, 6) dots.BackgroundTransparency = 1 dots.Image = getcustomasset('newvape/assets/new/dots.png') dots.ImageColor3 = color.Light(uipallet.Main, 0.37) dots.Parent = dotsbutton local shadow = Instance.new('TextButton') shadow.Name = 'Shadow' shadow.Size = UDim2.new(1, 0, 1, -5) shadow.BackgroundColor3 = Color3.new() shadow.BackgroundTransparency = 1 shadow.AutoButtonColor = false shadow.ClipsDescendants = true shadow.Visible = false shadow.Text = '' shadow.Parent = window addCorner(shadow) local settingspane = Instance.new('TextButton') settingspane.Size = UDim2.new(0, 220, 1, 0) settingspane.Position = UDim2.fromScale(1, 0) settingspane.BackgroundColor3 = uipallet.Main settingspane.AutoButtonColor = false settingspane.Text = '' settingspane.Parent = shadow local settingstitle = Instance.new('TextLabel') settingstitle.Name = 'Title' settingstitle.Size = UDim2.new(1, -36, 0, 20) settingstitle.Position = UDim2.fromOffset(36, 12) settingstitle.BackgroundTransparency = 1 settingstitle.Text = modulesettings.Name settingstitle.TextXAlignment = Enum.TextXAlignment.Left settingstitle.TextColor3 = color.Dark(uipallet.Text, 0.16) settingstitle.TextSize = 13 settingstitle.FontFace = uipallet.Font settingstitle.Parent = settingspane local back = Instance.new('ImageButton') back.Name = 'Back' back.Size = UDim2.fromOffset(16, 16) back.Position = UDim2.fromOffset(11, 13) back.BackgroundTransparency = 1 back.Image = getcustomasset('newvape/assets/new/back.png') back.ImageColor3 = color.Light(uipallet.Main, 0.37) back.Parent = settingspane addCorner(settingspane) local settingschildren = Instance.new('ScrollingFrame') settingschildren.Name = 'Children' settingschildren.Size = UDim2.new(1, 0, 1, -45) settingschildren.Position = UDim2.fromOffset(0, 41) settingschildren.BackgroundColor3 = uipallet.Main settingschildren.BorderSizePixel = 0 settingschildren.ScrollBarThickness = 2 settingschildren.ScrollBarImageTransparency = 0.75 settingschildren.CanvasSize = UDim2.new() settingschildren.Parent = settingspane local settingswindowlist = Instance.new('UIListLayout') settingswindowlist.SortOrder = Enum.SortOrder.LayoutOrder settingswindowlist.HorizontalAlignment = Enum.HorizontalAlignment.Center settingswindowlist.Parent = settingschildren if modulesettings.Size then local modulechildren = Instance.new('Frame') modulechildren.Size = modulesettings.Size modulechildren.BackgroundTransparency = 1 modulechildren.Visible = false modulechildren.Parent = scaledgui makeDraggable(modulechildren, window) local objectstroke = Instance.new('UIStroke') objectstroke.Color = Color3.fromRGB(5, 134, 105) objectstroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border objectstroke.Thickness = 0 objectstroke.Parent = modulechildren moduleapi.Children = modulechildren end modulesettings.Function = modulesettings.Function or function() end addMaid(moduleapi) function moduleapi:Toggle() moduleapi.Enabled = not moduleapi.Enabled if moduleapi.Children then moduleapi.Children.Visible = moduleapi.Enabled end title.TextColor3 = moduleapi.Enabled and color.Light(uipallet.Text, 0.2) or color.Dark(uipallet.Text, 0.31) module.BackgroundColor3 = moduleapi.Enabled and color.Light(uipallet.Main, 0.05) or module.BackgroundColor3 tween:Tween(knob, uipallet.Tween, { BackgroundColor3 = moduleapi.Enabled and Color3.fromHSV(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) or color.Light(uipallet.Main, 0.14) }) tween:Tween(knobmain, uipallet.Tween, { Position = UDim2.fromOffset(moduleapi.Enabled and 12 or 2, 2) }) if not moduleapi.Enabled then for _, v in moduleapi.Connections do v:Disconnect() end table.clear(moduleapi.Connections) end task.spawn(modulesettings.Function, moduleapi.Enabled) end back.MouseEnter:Connect(function() back.ImageColor3 = uipallet.Text end) back.MouseLeave:Connect(function() back.ImageColor3 = color.Light(uipallet.Main, 0.37) end) back.MouseButton1Click:Connect(function() tween:Tween(shadow, uipallet.Tween, { BackgroundTransparency = 1 }) tween:Tween(settingspane, uipallet.Tween, { Position = UDim2.fromScale(1, 0) }) task.wait(0.2) shadow.Visible = false end) dotsbutton.MouseButton1Click:Connect(function() shadow.Visible = true tween:Tween(shadow, uipallet.Tween, { BackgroundTransparency = 0.5 }) tween:Tween(settingspane, uipallet.Tween, { Position = UDim2.new(1, -220, 0, 0) }) end) dotsbutton.MouseEnter:Connect(function() dots.ImageColor3 = uipallet.Text end) dotsbutton.MouseLeave:Connect(function() dots.ImageColor3 = color.Light(uipallet.Main, 0.37) end) module.MouseEnter:Connect(function() if not moduleapi.Enabled then module.BackgroundColor3 = color.Light(uipallet.Main, 0.05) end end) module.MouseLeave:Connect(function() if not moduleapi.Enabled then module.BackgroundColor3 = color.Light(uipallet.Main, 0.02) end end) module.MouseButton1Click:Connect(function() moduleapi:Toggle() end) module.MouseButton2Click:Connect(function() shadow.Visible = true tween:Tween(shadow, uipallet.Tween, { BackgroundTransparency = 0.5 }) tween:Tween(settingspane, uipallet.Tween, { Position = UDim2.new(1, -220, 0, 0) }) end) shadow.MouseButton1Click:Connect(function() tween:Tween(shadow, uipallet.Tween, { BackgroundTransparency = 1 }) tween:Tween(settingspane, uipallet.Tween, { Position = UDim2.fromScale(1, 0) }) task.wait(0.2) shadow.Visible = false end) settingswindowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if mainapi.ThreadFix then setthreadidentity(8) end settingschildren.CanvasSize = UDim2.fromOffset(0, settingswindowlist.AbsoluteContentSize.Y / scale.Scale) end) for i, v in components do moduleapi['Create'..i] = function(_, optionsettings) return v(optionsettings, settingschildren, moduleapi) end end moduleapi.Object = module legitapi.Modules[modulesettings.Name] = moduleapi local sorting = {} for _, v in legitapi.Modules do table.insert(sorting, v.Name) end table.sort(sorting) for i, v in sorting do legitapi.Modules[v].Object.LayoutOrder = i end return moduleapi end local function visibleCheck() for _, v in legitapi.Modules do if v.Children then local visible = clickgui.Visible for _, v2 in self.Windows do visible = visible or v2.Visible end v.Children.Visible = (not visible or window.Visible) and v.Enabled end end end close.MouseButton1Click:Connect(function() window.Visible = false clickgui.Visible = true end) self:Clean(clickgui:GetPropertyChangedSignal('Visible'):Connect(visibleCheck)) window:GetPropertyChangedSignal('Visible'):Connect(function() self:UpdateGUI(self.GUIColor.Hue, self.GUIColor.Sat, self.GUIColor.Value) visibleCheck() end) windowlist:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(function() if self.ThreadFix then setthreadidentity(8) end children.CanvasSize = UDim2.fromOffset(0, windowlist.AbsoluteContentSize.Y / scale.Scale) end) self.Legit = legitapi return legitapi end function mainapi:CreateNotification(title, text, duration, type) if not self.Notifications.Enabled then return end task.delay(0, function() if self.ThreadFix then setthreadidentity(8) end local i = #notifications:GetChildren() + 1 local notification = Instance.new('ImageLabel') notification.Name = 'Notification' notification.Size = UDim2.fromOffset(math.max(getfontsize(removeTags(text), 14, uipallet.Font).X + 80, 266), 75) notification.Position = UDim2.new(1, 0, 1, -(29 + (78 * i))) notification.ZIndex = 5 notification.BackgroundTransparency = 1 notification.Image = getcustomasset('newvape/assets/new/notification.png') notification.ScaleType = Enum.ScaleType.Slice notification.SliceCenter = Rect.new(7, 7, 9, 9) notification.Parent = notifications addBlur(notification, true) local iconshadow = Instance.new('ImageLabel') iconshadow.Name = 'Icon' iconshadow.Size = UDim2.fromOffset(60, 60) iconshadow.Position = UDim2.fromOffset(-5, -8) iconshadow.ZIndex = 5 iconshadow.BackgroundTransparency = 1 iconshadow.Image = getcustomasset('newvape/assets/new/'..(type or 'info')..'.png') iconshadow.ImageColor3 = Color3.new() iconshadow.ImageTransparency = 0.5 iconshadow.Parent = notification local icon = iconshadow:Clone() icon.Position = UDim2.fromOffset(-1, -1) icon.ImageColor3 = Color3.new(1, 1, 1) icon.ImageTransparency = 0 icon.Parent = iconshadow local titlelabel = Instance.new('TextLabel') titlelabel.Name = 'Title' titlelabel.Size = UDim2.new(1, -56, 0, 20) titlelabel.Position = UDim2.fromOffset(46, 16) titlelabel.ZIndex = 5 titlelabel.BackgroundTransparency = 1 titlelabel.Text = ""..title..'' titlelabel.TextXAlignment = Enum.TextXAlignment.Left titlelabel.TextYAlignment = Enum.TextYAlignment.Top titlelabel.TextColor3 = Color3.fromRGB(209, 209, 209) titlelabel.TextSize = 14 titlelabel.RichText = true titlelabel.FontFace = uipallet.FontSemiBold titlelabel.Parent = notification local textshadow = titlelabel:Clone() textshadow.Name = 'Text' textshadow.Position = UDim2.fromOffset(47, 44) textshadow.Text = removeTags(text) textshadow.TextColor3 = Color3.new() textshadow.TextTransparency = 0.5 textshadow.RichText = false textshadow.FontFace = uipallet.Font textshadow.Parent = notification local textlabel = textshadow:Clone() textlabel.Position = UDim2.fromOffset(-1, -1) textlabel.Text = text textlabel.TextColor3 = Color3.fromRGB(170, 170, 170) textlabel.TextTransparency = 0 textlabel.RichText = true textlabel.Parent = textshadow local progress = Instance.new('Frame') progress.Name = 'Progress' progress.Size = UDim2.new(1, -13, 0, 2) progress.Position = UDim2.new(0, 3, 1, -4) progress.ZIndex = 5 progress.BackgroundColor3 = type == 'alert' and Color3.fromRGB(250, 50, 56) or type == 'warning' and Color3.fromRGB(236, 129, 43) or Color3.fromRGB(220, 220, 220) progress.BorderSizePixel = 0 progress.Parent = notification if tween.Tween then tween:Tween(notification, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), { AnchorPoint = Vector2.new(1, 0) }, tween.tweenstwo) tween:Tween(progress, TweenInfo.new(duration, Enum.EasingStyle.Linear), { Size = UDim2.fromOffset(0, 2) }) end task.delay(duration, function() if tween.Tween then tween:Tween(notification, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), { AnchorPoint = Vector2.new(0, 0) }, tween.tweenstwo) end task.wait(0.2) notification:ClearAllChildren() notification:Destroy() end) end) end function mainapi:Load(skipgui, profile) if not skipgui then self.GUIColor:SetValue(nil, nil, nil, 4) end local guidata = {} local savecheck = true if isfile('newvape/profiles/'..game.GameId..'.gui.txt') then guidata = loadJson('newvape/profiles/'..game.GameId..'.gui.txt') if not guidata then guidata = {Categories = {}} self:CreateNotification('Vape', 'Failed to load GUI settings.', 10, 'alert') savecheck = false end if not skipgui then self.Keybind = guidata.Keybind for i, v in guidata.Categories do local object = self.Categories[i] if not object then continue end if object.Options and v.Options then self:LoadOptions(object, v.Options) end if v.Enabled then object.Button:Toggle() end if v.Pinned then object:Pin() end if v.Expanded and object.Expand then object:Expand() end if v.List and (#object.List > 0 or #v.List > 0) then object.List = v.List or {} object.ListEnabled = v.ListEnabled or {} object:ChangeValue() end if v.Position then object.Object.Position = UDim2.fromOffset(v.Position.X, v.Position.Y) end end end end self.Profile = profile or guidata.Profile or 'default' self.Profiles = guidata.Profiles or {{ Name = 'default', Bind = {} }} self.Categories.Profiles:ChangeValue() if self.ProfileLabel then self.ProfileLabel.Text = #self.Profile > 10 and self.Profile:sub(1, 10)..'...' or self.Profile self.ProfileLabel.Size = UDim2.fromOffset(getfontsize(self.ProfileLabel.Text, self.ProfileLabel.TextSize, self.ProfileLabel.Font).X + 16, 24) end if isfile('newvape/profiles/'..self.Profile..self.Place..'.txt') then local savedata = loadJson('newvape/profiles/'..self.Profile..self.Place..'.txt') if not savedata then savedata = {Categories = {}, Modules = {}, Legit = {}} self:CreateNotification('Vape', 'Failed to load '..self.Profile..' profile.', 10, 'alert') savecheck = false end for i, v in savedata.Categories do local object = self.Categories[i] if not object then continue end if object.Options and v.Options then self:LoadOptions(object, v.Options) end if v.Pinned ~= object.Pinned then object:Pin() end if v.Expanded ~= nil and v.Expanded ~= object.Expanded then object:Expand() end if object.Button and (v.Enabled or false) ~= object.Button.Enabled then object.Button:Toggle() end if v.List and (#object.List > 0 or #v.List > 0) then object.List = v.List or {} object.ListEnabled = v.ListEnabled or {} object:ChangeValue() end object.Object.Position = UDim2.fromOffset(v.Position.X, v.Position.Y) end for i, v in savedata.Modules do local object = self.Modules[i] if not object then continue end if object.Options and v.Options then self:LoadOptions(object, v.Options) end if v.Enabled ~= object.Enabled then if skipgui then if self.ToggleNotifications.Enabled then self:CreateNotification('Module Toggled', i.." has been "..(v.Enabled and "Enabled" or "Disabled").."!", 0.75) end end object:Toggle(true) end object:SetBind(v.Bind) object.Object.Bind.Visible = #v.Bind > 0 end for i, v in savedata.Legit do local object = self.Legit.Modules[i] if not object then continue end if object.Options and v.Options then self:LoadOptions(object, v.Options) end if object.Enabled ~= v.Enabled then object:Toggle() end if v.Position and object.Children then object.Children.Position = UDim2.fromOffset(v.Position.X, v.Position.Y) end end self:UpdateTextGUI(true) else self:Save() end if self.Downloader then self.Downloader:Destroy() self.Downloader = nil end self.Loaded = savecheck self.Categories.Main.Options.Bind:SetBind(self.Keybind) if inputService.TouchEnabled and #self.Keybind == 1 and self.Keybind[1] == 'RightShift' then local button = Instance.new('TextButton') button.Size = UDim2.fromOffset(32, 32) button.Position = UDim2.new(1, -90, 0, 4) button.BackgroundColor3 = Color3.new() button.BackgroundTransparency = 0.5 button.Text = '' button.Parent = gui local image = Instance.new('ImageLabel') image.Size = UDim2.fromOffset(26, 26) image.Position = UDim2.fromOffset(3, 3) image.BackgroundTransparency = 1 image.Image = getcustomasset('newvape/assets/new/vape.png') image.Parent = button local buttoncorner = Instance.new('UICorner') buttoncorner.Parent = button self.VapeButton = button button.MouseButton1Click:Connect(function() if self.ThreadFix then setthreadidentity(8) end for _, v in self.Windows do v.Visible = false end for _, mobileButton in self.Modules do if mobileButton.Bind.Button then mobileButton.Bind.Button.Visible = clickgui.Visible end end clickgui.Visible = not clickgui.Visible tooltip.Visible = false self:BlurCheck() end) end end function mainapi:LoadOptions(object, savedoptions) for i, v in savedoptions do local option = object.Options[i] if not option then continue end option:Load(v) end end function mainapi:Remove(obj) local tab = (self.Modules[obj] and self.Modules or self.Legit.Modules[obj] and self.Legit.Modules or self.Categories) if tab and tab[obj] then local newobj = tab[obj] if self.ThreadFix then setthreadidentity(8) end for _, v in {'Object', 'Children', 'Toggle', 'Button'} do local childobj = typeof(newobj[v]) == 'table' and newobj[v].Object or newobj[v] if typeof(childobj) == 'Instance' then childobj:Destroy() childobj:ClearAllChildren() end end loopClean(newobj) tab[obj] = nil end end function mainapi:Save(newprofile) if not self.Loaded then return end local guidata = { Categories = {}, Profile = newprofile or self.Profile, Profiles = self.Profiles, Keybind = self.Keybind } local savedata = { Modules = {}, Categories = {}, Legit = {} } for i, v in self.Categories do (v.Type ~= 'Category' and i ~= 'Main' and savedata or guidata).Categories[i] = { Enabled = i ~= 'Main' and v.Button.Enabled or nil, Expanded = v.Type ~= 'Overlay' and v.Expanded or nil, Pinned = v.Pinned, Position = {X = v.Object.Position.X.Offset, Y = v.Object.Position.Y.Offset}, Options = mainapi:SaveOptions(v, v.Options), List = v.List, ListEnabled = v.ListEnabled } end for i, v in self.Modules do savedata.Modules[i] = { Enabled = v.Enabled, Bind = v.Bind.Button and {Mobile = true, X = v.Bind.Button.Position.X.Offset, Y = v.Bind.Button.Position.Y.Offset} or v.Bind, Options = mainapi:SaveOptions(v, true) } end for i, v in self.Legit.Modules do savedata.Legit[i] = { Enabled = v.Enabled, Position = v.Children and {X = v.Children.Position.X.Offset, Y = v.Children.Position.Y.Offset} or nil, Options = mainapi:SaveOptions(v, v.Options) } end writefile('newvape/profiles/'..game.GameId..'.gui.txt', httpService:JSONEncode(guidata)) writefile('newvape/profiles/'..self.Profile..self.Place..'.txt', httpService:JSONEncode(savedata)) end function mainapi:SaveOptions(object, savedoptions) if not savedoptions then return end savedoptions = {} for _, v in object.Options do if not v.Save then continue end v:Save(savedoptions) end return savedoptions end function mainapi:Uninject() mainapi:Save() mainapi.Loaded = nil for _, v in self.Modules do if v.Enabled then v:Toggle() end end for _, v in self.Legit.Modules do if v.Enabled then v:Toggle() end end for _, v in self.Categories do if v.Type == 'Overlay' and v.Button.Enabled then v.Button:Toggle() end end for _, v in mainapi.Connections do pcall(function() v:Disconnect() end) end if mainapi.ThreadFix then setthreadidentity(8) clickgui.Visible = false mainapi:BlurCheck() end mainapi.gui:ClearAllChildren() mainapi.gui:Destroy() table.clear(mainapi.Libraries) loopClean(mainapi) shared.vape = nil shared.vapereload = nil shared.VapeIndependent = nil end gui = Instance.new('ScreenGui') gui.Name = randomString() gui.DisplayOrder = 9999999 gui.ZIndexBehavior = Enum.ZIndexBehavior.Global gui.IgnoreGuiInset = true gui.OnTopOfCoreBlur = true if mainapi.ThreadFix then gui.Parent = cloneref(game:GetService('CoreGui'))--(gethui and gethui()) or cloneref(game:GetService('CoreGui')) else gui.Parent = cloneref(game:GetService('Players')).LocalPlayer.PlayerGui gui.ResetOnSpawn = false end mainapi.gui = gui scaledgui = Instance.new('Frame') scaledgui.Name = 'ScaledGui' scaledgui.Size = UDim2.fromScale(1, 1) scaledgui.BackgroundTransparency = 1 scaledgui.Parent = gui clickgui = Instance.new('Frame') clickgui.Name = 'ClickGui' clickgui.Size = UDim2.fromScale(1, 1) clickgui.BackgroundTransparency = 1 clickgui.Visible = false clickgui.Parent = scaledgui local scarcitybanner = Instance.new('TextLabel') scarcitybanner.Size = UDim2.fromScale(1, 0.02) scarcitybanner.Position = UDim2.fromScale(0, 0.97) scarcitybanner.BackgroundTransparency = 1 scarcitybanner.Text = 'A new discord has been created, click the discord icon to join.' scarcitybanner.TextScaled = true scarcitybanner.TextColor3 = Color3.new(1, 1, 1) scarcitybanner.TextStrokeTransparency = 0.5 scarcitybanner.FontFace = uipallet.Font scarcitybanner.Parent = clickgui local modal = Instance.new('TextButton') modal.BackgroundTransparency = 1 modal.Modal = true modal.Text = '' modal.Parent = clickgui local cursor = Instance.new('ImageLabel') cursor.Size = UDim2.fromOffset(64, 64) cursor.BackgroundTransparency = 1 cursor.Visible = false cursor.Image = 'rbxasset://textures/Cursors/KeyboardMouse/ArrowFarCursor.png' cursor.Parent = gui notifications = Instance.new('Folder') notifications.Name = 'Notifications' notifications.Parent = scaledgui tooltip = Instance.new('TextLabel') tooltip.Name = 'Tooltip' tooltip.Position = UDim2.fromScale(-1, -1) tooltip.ZIndex = 5 tooltip.BackgroundColor3 = color.Dark(uipallet.Main, 0.02) tooltip.Visible = false tooltip.Text = '' tooltip.TextColor3 = color.Dark(uipallet.Text, 0.16) tooltip.TextSize = 12 tooltip.FontFace = uipallet.Font tooltip.Parent = scaledgui toolblur = addBlur(tooltip) addCorner(tooltip) local toolstrokebkg = Instance.new('Frame') toolstrokebkg.Size = UDim2.new(1, -2, 1, -2) toolstrokebkg.Position = UDim2.fromOffset(1, 1) toolstrokebkg.ZIndex = 6 toolstrokebkg.BackgroundTransparency = 1 toolstrokebkg.Parent = tooltip local toolstroke = Instance.new('UIStroke') toolstroke.Color = color.Light(uipallet.Main, 0.02) toolstroke.Parent = toolstrokebkg addCorner(toolstrokebkg, UDim.new(0, 4)) scale = Instance.new('UIScale') scale.Scale = math.max(gui.AbsoluteSize.X / 1920, 0.6) scale.Parent = scaledgui mainapi.guiscale = scale scaledgui.Size = UDim2.fromScale(1 / scale.Scale, 1 / scale.Scale) mainapi:Clean(gui:GetPropertyChangedSignal('AbsoluteSize'):Connect(function() if mainapi.Scale.Enabled then scale.Scale = math.max(gui.AbsoluteSize.X / 1920, 0.6) end end)) mainapi:Clean(scale:GetPropertyChangedSignal('Scale'):Connect(function() scaledgui.Size = UDim2.fromScale(1 / scale.Scale, 1 / scale.Scale) for _, v in scaledgui:GetDescendants() do if v:IsA('GuiObject') and v.Visible then v.Visible = false v.Visible = true end end end)) mainapi:Clean(clickgui:GetPropertyChangedSignal('Visible'):Connect(function() mainapi:UpdateGUI(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value, true) if clickgui.Visible and inputService.MouseEnabled then repeat local visibleCheck = clickgui.Visible for _, v in mainapi.Windows do visibleCheck = visibleCheck or v.Visible end if not visibleCheck then break end cursor.Visible = not inputService.MouseIconEnabled if cursor.Visible then local mouseLocation = inputService:GetMouseLocation() cursor.Position = UDim2.fromOffset(mouseLocation.X - 31, mouseLocation.Y - 32) end task.wait() until mainapi.Loaded == nil cursor.Visible = false end end)) mainapi:CreateGUI() mainapi.Categories.Main:CreateDivider() mainapi:CreateCategory({ Name = 'Combat', Icon = getcustomasset('newvape/assets/new/combaticon.png'), Size = UDim2.fromOffset(13, 14) }) mainapi:CreateCategory({ Name = 'Blatant', Icon = getcustomasset('newvape/assets/new/blatanticon.png'), Size = UDim2.fromOffset(14, 14) }) mainapi:CreateCategory({ Name = 'Render', Icon = getcustomasset('newvape/assets/new/rendericon.png'), Size = UDim2.fromOffset(15, 14) }) mainapi:CreateCategory({ Name = 'Utility', Icon = getcustomasset('newvape/assets/new/utilityicon.png'), Size = UDim2.fromOffset(15, 14) }) mainapi:CreateCategory({ Name = 'World', Icon = getcustomasset('newvape/assets/new/worldicon.png'), Size = UDim2.fromOffset(14, 14) }) mainapi:CreateCategory({ Name = 'Inventory', Icon = getcustomasset('newvape/assets/new/inventoryicon.png'), Size = UDim2.fromOffset(15, 14) }) mainapi:CreateCategory({ Name = 'Minigames', Icon = getcustomasset('newvape/assets/new/miniicon.png'), Size = UDim2.fromOffset(19, 12) }) mainapi.Categories.Main:CreateDivider('misc') --[[ Friends ]] local friends local friendscolor = { Hue = 1, Sat = 1, Value = 1 } local friendssettings = { Name = 'Friends', Icon = getcustomasset('newvape/assets/new/friendstab.png'), Size = UDim2.fromOffset(17, 16), Placeholder = 'Roblox username', Color = Color3.fromRGB(5, 134, 105), Function = function() friends.Update:Fire() friends.ColorUpdate:Fire(friendscolor.Hue, friendscolor.Sat, friendscolor.Value) end } friends = mainapi:CreateCategoryList(friendssettings) friends.Update = Instance.new('BindableEvent') friends.ColorUpdate = Instance.new('BindableEvent') friends:CreateToggle({ Name = 'Recolor visuals', Darker = true, Default = true, Function = function() friends.Update:Fire() friends.ColorUpdate:Fire(friendscolor.Hue, friendscolor.Sat, friendscolor.Value) end }) friendscolor = friends:CreateColorSlider({ Name = 'Friends color', Darker = true, Function = function(hue, sat, val) for _, v in friends.Object.Children:GetChildren() do local dot = v:FindFirstChild('Dot') if dot and dot.BackgroundColor3 ~= color.Light(uipallet.Main, 0.37) then dot.BackgroundColor3 = Color3.fromHSV(hue, sat, val) dot.Dot.BackgroundColor3 = dot.BackgroundColor3 end end friendssettings.Color = Color3.fromHSV(hue, sat, val) friends.ColorUpdate:Fire(hue, sat, val) end }) friends:CreateToggle({ Name = 'Use friends', Darker = true, Default = true, Function = function() friends.Update:Fire() friends.ColorUpdate:Fire(friendscolor.Hue, friendscolor.Sat, friendscolor.Value) end }) mainapi:Clean(friends.Update) mainapi:Clean(friends.ColorUpdate) --[[ Profiles ]] mainapi:CreateCategoryList({ Name = 'Profiles', Icon = getcustomasset('newvape/assets/new/profilesicon.png'), Size = UDim2.fromOffset(17, 10), Position = UDim2.fromOffset(12, 16), Placeholder = 'Type name', Profiles = true }) --[[ Targets ]] local targets targets = mainapi:CreateCategoryList({ Name = 'Targets', Icon = getcustomasset('newvape/assets/new/friendstab.png'), Size = UDim2.fromOffset(17, 16), Placeholder = 'Roblox username', Function = function() targets.Update:Fire() end }) targets.Update = Instance.new('BindableEvent') mainapi:Clean(targets.Update) mainapi:CreateLegit() mainapi:CreateSearch() mainapi.Categories.Main:CreateOverlayBar() mainapi.Categories.Main:CreateSettingsDivider() --[[ General Settings ]] local general = mainapi.Categories.Main:CreateSettingsPane({Name = 'General'}) mainapi.MultiKeybind = general:CreateToggle({ Name = 'Enable Multi-Keybinding', Tooltip = 'Allows multiple keys to be bound to a module (eg. G + H)' }) general:CreateButton({ Name = 'Reset current profile', Function = function() mainapi.Save = function() end if isfile('newvape/profiles/'..mainapi.Profile..mainapi.Place..'.txt') and delfile then delfile('newvape/profiles/'..mainapi.Profile..mainapi.Place..'.txt') end shared.vapereload = true if shared.VapeDeveloper then loadstring(readfile('newvape/loader.lua'), 'loader')() else loadstring(game:HttpGet('https://raw.githubusercontent.com/7GrandDadPGN/VapeV4ForRoblox/'..readfile('newvape/profiles/commit.txt')..'/loader.lua', true))() end end, Tooltip = 'This will set your profile to the default settings of Vape' }) general:CreateButton({ Name = 'Self destruct', Function = function() mainapi:Uninject() end, Tooltip = 'Removes vape from the current game' }) general:CreateButton({ Name = 'Reinject', Function = function() shared.vapereload = true if shared.VapeDeveloper then loadstring(readfile('newvape/loader.lua'), 'loader')() else loadstring(game:HttpGet('https://raw.githubusercontent.com/7GrandDadPGN/VapeV4ForRoblox/'..readfile('newvape/profiles/commit.txt')..'/loader.lua', true))() end end, Tooltip = 'Reloads vape for debugging purposes' }) --[[ Module Settings ]] local modules = mainapi.Categories.Main:CreateSettingsPane({Name = 'Modules'}) modules:CreateToggle({ Name = 'Teams by server', Tooltip = 'Ignore players on your team designated by the server', Default = true, Function = function() if mainapi.Libraries.entity and mainapi.Libraries.entity.Running then mainapi.Libraries.entity.refresh() end end }) modules:CreateToggle({ Name = 'Use team color', Tooltip = 'Uses the TeamColor property on players for render modules', Default = true, Function = function() if mainapi.Libraries.entity and mainapi.Libraries.entity.Running then mainapi.Libraries.entity.refresh() end end }) --[[ GUI Settings ]] local guipane = mainapi.Categories.Main:CreateSettingsPane({Name = 'GUI'}) mainapi.Blur = guipane:CreateToggle({ Name = 'Blur background', Function = function() mainapi:BlurCheck() end, Default = true, Tooltip = 'Blur the background of the GUI' }) guipane:CreateToggle({ Name = 'GUI bind indicator', Default = true, Tooltip = "Displays a message indicating your GUI upon injecting.\nI.E. 'Press RSHIFT to open GUI'" }) guipane:CreateToggle({ Name = 'Show tooltips', Function = function(enabled) tooltip.Visible = false toolblur.Visible = enabled end, Default = true, Tooltip = 'Toggles visibility of these' }) guipane:CreateToggle({ Name = 'Show legit mode', Function = function(enabled) clickgui.Search.Legit.Visible = enabled clickgui.Search.LegitDivider.Visible = enabled clickgui.Search.TextBox.Size = UDim2.new(1, enabled and -50 or -10, 0, 37) clickgui.Search.TextBox.Position = UDim2.fromOffset(enabled and 50 or 10, 0) end, Default = true, Tooltip = 'Shows the button to change to Legit Mode' }) local scaleslider = {Object = {}, Value = 1} mainapi.Scale = guipane:CreateToggle({ Name = 'Auto rescale', Default = true, Function = function(callback) scaleslider.Object.Visible = not callback if callback then scale.Scale = math.max(gui.AbsoluteSize.X / 1920, 0.6) else scale.Scale = scaleslider.Value end end, Tooltip = 'Automatically rescales the gui using the screens resolution' }) scaleslider = guipane:CreateSlider({ Name = 'Scale', Min = 0.1, Max = 2, Decimal = 10, Function = function(val, final) if final and not mainapi.Scale.Enabled then scale.Scale = val end end, Default = 1, Darker = true, Visible = false }) guipane:CreateDropdown({ Name = 'GUI Theme', List = inputService.TouchEnabled and {'new', 'old'} or {'new', 'old', 'rise'}, Function = function(val, mouse) if mouse then writefile('newvape/profiles/gui.txt', val) shared.vapereload = true if shared.VapeDeveloper then loadstring(readfile('newvape/loader.lua'), 'loader')() else loadstring(game:HttpGet('https://raw.githubusercontent.com/7GrandDadPGN/VapeV4ForRoblox/'..readfile('newvape/profiles/commit.txt')..'/loader.lua', true))() end end end, Tooltip = 'new - The newest vape theme to since v4.05\nold - The vape theme pre v4.05\nrise - Rise 6.0' }) mainapi.RainbowMode = guipane:CreateDropdown({ Name = 'Rainbow Mode', List = {'Normal', 'Gradient', 'Retro'}, Tooltip = 'Normal - Smooth color fade\nGradient - Gradient color fade\nRetro - Static color' }) mainapi.RainbowSpeed = guipane:CreateSlider({ Name = 'Rainbow speed', Min = 0.1, Max = 10, Decimal = 10, Default = 1, Tooltip = 'Adjusts the speed of rainbow values' }) mainapi.RainbowUpdateSpeed = guipane:CreateSlider({ Name = 'Rainbow update rate', Min = 1, Max = 144, Default = 60, Tooltip = 'Adjusts the update rate of rainbow values', Suffix = 'hz' }) guipane:CreateButton({ Name = 'Reset GUI positions', Function = function() for _, v in mainapi.Categories do v.Object.Position = UDim2.fromOffset(6, 42) end end, Tooltip = 'This will reset your GUI back to default' }) guipane:CreateButton({ Name = 'Sort GUI', Function = function() local priority = { GUICategory = 1, CombatCategory = 2, BlatantCategory = 3, RenderCategory = 4, UtilityCategory = 5, WorldCategory = 6, InventoryCategory = 7, MinigamesCategory = 8, FriendsCategory = 9, ProfilesCategory = 10 } local categories = {} for _, v in mainapi.Categories do if v.Type ~= 'Overlay' then table.insert(categories, v) end end table.sort(categories, function(a, b) return (priority[a.Object.Name] or 99) < (priority[b.Object.Name] or 99) end) local ind = 0 for _, v in categories do if v.Object.Visible then v.Object.Position = UDim2.fromOffset(6 + (ind % 8 * 230), 60 + (ind > 7 and 360 or 0)) ind += 1 end end end, Tooltip = 'Sorts GUI' }) --[[ Notification Settings ]] local notifpane = mainapi.Categories.Main:CreateSettingsPane({Name = 'Notifications'}) mainapi.Notifications = notifpane:CreateToggle({ Name = 'Notifications', Function = function(enabled) if mainapi.ToggleNotifications.Object then mainapi.ToggleNotifications.Object.Visible = enabled end end, Tooltip = 'Shows notifications', Default = true }) mainapi.ToggleNotifications = notifpane:CreateToggle({ Name = 'Toggle alert', Tooltip = 'Notifies you if a module is enabled/disabled.', Default = true, Darker = true }) mainapi.GUIColor = mainapi.Categories.Main:CreateGUISlider({ Name = 'GUI Theme', Function = function(h, s, v) mainapi:UpdateGUI(h, s, v, true) end }) mainapi.Categories.Main:CreateBind() --[[ Text GUI ]] local textgui = mainapi:CreateOverlay({ Name = 'Text GUI', Icon = getcustomasset('newvape/assets/new/textguiicon.png'), Size = UDim2.fromOffset(16, 12), Position = UDim2.fromOffset(12, 14), Function = function() mainapi:UpdateTextGUI() end }) local textguisort = textgui:CreateDropdown({ Name = 'Sort', List = {'Alphabetical', 'Length'}, Function = function() mainapi:UpdateTextGUI() end }) local textguifont = textgui:CreateFont({ Name = 'Font', Blacklist = 'Arial', Function = function() mainapi:UpdateTextGUI() end }) local textguicolor local textguicolordrop = textgui:CreateDropdown({ Name = 'Color Mode', List = {'Match GUI color', 'Custom color'}, Function = function(val) textguicolor.Object.Visible = val == 'Custom color' mainapi:UpdateTextGUI() end }) textguicolor = textgui:CreateColorSlider({ Name = 'Text GUI color', Function = function() mainapi:UpdateGUI(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) end, Darker = true, Visible = false }) local VapeTextScale = Instance.new('UIScale') VapeTextScale.Parent = textgui.Children local textguiscale = textgui:CreateSlider({ Name = 'Scale', Min = 0, Max = 2, Decimal = 10, Default = 1, Function = function(val) VapeTextScale.Scale = val mainapi:UpdateTextGUI() end }) local textguishadow = textgui:CreateToggle({ Name = 'Shadow', Tooltip = 'Renders shadowed text.', Function = function() mainapi:UpdateTextGUI() end }) local textguigradientv4 local textguigradient = textgui:CreateToggle({ Name = 'Gradient', Tooltip = 'Renders a gradient', Function = function(callback) textguigradientv4.Object.Visible = callback mainapi:UpdateTextGUI() end }) textguigradientv4 = textgui:CreateToggle({ Name = 'V4 Gradient', Function = function() mainapi:UpdateTextGUI() end, Darker = true, Visible = false }) local textguianimations = textgui:CreateToggle({ Name = 'Animations', Tooltip = 'Use animations on text gui', Function = function() mainapi:UpdateTextGUI() end }) local textguiwatermark = textgui:CreateToggle({ Name = 'Watermark', Tooltip = 'Renders a vape watermark', Function = function() mainapi:UpdateTextGUI() end }) local textguibackgroundtransparency = { Value = 0.5, Object = {Visible = {}} } local textguibackgroundtint = {Enabled = false} local textguibackground = textgui:CreateToggle({ Name = 'Render background', Function = function(callback) textguibackgroundtransparency.Object.Visible = callback textguibackgroundtint.Object.Visible = callback mainapi:UpdateTextGUI() end }) textguibackgroundtransparency = textgui:CreateSlider({ Name = 'Transparency', Min = 0, Max = 1, Default = 0.5, Decimal = 10, Function = function() mainapi:UpdateTextGUI() end, Darker = true, Visible = false }) textguibackgroundtint = textgui:CreateToggle({ Name = 'Tint', Function = function() mainapi:UpdateTextGUI() end, Darker = true, Visible = false }) local textguimoduleslist local textguimodules = textgui:CreateToggle({ Name = 'Hide modules', Tooltip = 'Allows you to blacklist certain modules from being shown.', Function = function(enabled) textguimoduleslist.Object.Visible = enabled mainapi:UpdateTextGUI() end }) textguimoduleslist = textgui:CreateTextList({ Name = 'Blacklist', Tooltip = 'Name of module to hide.', Icon = getcustomasset('newvape/assets/new/blockedicon.png'), Tab = getcustomasset('newvape/assets/new/blockedtab.png'), TabSize = UDim2.fromOffset(21, 16), Color = Color3.fromRGB(250, 50, 56), Function = function() mainapi:UpdateTextGUI() end, Visible = false, Darker = true }) local textguirender = textgui:CreateToggle({ Name = 'Hide render', Function = function() mainapi:UpdateTextGUI() end }) local textguibox local textguifontcustom local textguicolorcustomtoggle local textguicolorcustom local textguitext = textgui:CreateToggle({ Name = 'Add custom text', Function = function(enabled) textguibox.Object.Visible = enabled textguifontcustom.Object.Visible = enabled textguicolorcustomtoggle.Object.Visible = enabled textguicolorcustom.Object.Visible = textguicolorcustomtoggle.Enabled and enabled mainapi:UpdateTextGUI() end }) textguibox = textgui:CreateTextBox({ Name = 'Custom text', Function = function() mainapi:UpdateTextGUI() end, Darker = true, Visible = false }) textguifontcustom = textgui:CreateFont({ Name = 'Custom Font', Blacklist = 'Arial', Function = function() mainapi:UpdateTextGUI() end, Darker = true, Visible = false }) textguicolorcustomtoggle = textgui:CreateToggle({ Name = 'Set custom text color', Function = function(enabled) textguicolorcustom.Object.Visible = enabled mainapi:UpdateGUI(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) end, Darker = true, Visible = false }) textguicolorcustom = textgui:CreateColorSlider({ Name = 'Color of custom text', Function = function() mainapi:UpdateGUI(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value) end, Darker = true, Visible = false }) --[[ Text GUI Objects ]] local VapeLabels = {} local VapeLogo = Instance.new('ImageLabel') VapeLogo.Name = 'Logo' VapeLogo.Size = UDim2.fromOffset(80, 21) VapeLogo.Position = UDim2.new(1, -142, 0, 3) VapeLogo.BackgroundTransparency = 1 VapeLogo.BorderSizePixel = 0 VapeLogo.Visible = false VapeLogo.BackgroundColor3 = Color3.new() VapeLogo.Image = getcustomasset('newvape/assets/new/textvape.png') VapeLogo.Parent = textgui.Children local lastside = textgui.Children.AbsolutePosition.X > (gui.AbsoluteSize.X / 2) mainapi:Clean(textgui.Children:GetPropertyChangedSignal('AbsolutePosition'):Connect(function() if mainapi.ThreadFix then setthreadidentity(8) end local newside = textgui.Children.AbsolutePosition.X > (gui.AbsoluteSize.X / 2) if lastside ~= newside then lastside = newside mainapi:UpdateTextGUI() end end)) local VapeLogoV4 = Instance.new('ImageLabel') VapeLogoV4.Name = 'Logo2' VapeLogoV4.Size = UDim2.fromOffset(33, 18) VapeLogoV4.Position = UDim2.new(1, 1, 0, 1) VapeLogoV4.BackgroundColor3 = Color3.new() VapeLogoV4.BackgroundTransparency = 1 VapeLogoV4.BorderSizePixel = 0 VapeLogoV4.Image = getcustomasset('newvape/assets/new/textv4.png') VapeLogoV4.Parent = VapeLogo local VapeLogoShadow = VapeLogo:Clone() VapeLogoShadow.Position = UDim2.fromOffset(1, 1) VapeLogoShadow.ZIndex = 0 VapeLogoShadow.Visible = true VapeLogoShadow.ImageColor3 = Color3.new() VapeLogoShadow.ImageTransparency = 0.65 VapeLogoShadow.Parent = VapeLogo VapeLogoShadow.Logo2.ZIndex = 0 VapeLogoShadow.Logo2.ImageColor3 = Color3.new() VapeLogoShadow.Logo2.ImageTransparency = 0.65 local VapeLogoGradient = Instance.new('UIGradient') VapeLogoGradient.Rotation = 90 VapeLogoGradient.Parent = VapeLogo local VapeLogoGradient2 = Instance.new('UIGradient') VapeLogoGradient2.Rotation = 90 VapeLogoGradient2.Parent = VapeLogoV4 local VapeLabelCustom = Instance.new('TextLabel') VapeLabelCustom.Position = UDim2.fromOffset(5, 2) VapeLabelCustom.BackgroundTransparency = 1 VapeLabelCustom.BorderSizePixel = 0 VapeLabelCustom.Visible = false VapeLabelCustom.Text = '' VapeLabelCustom.TextSize = 25 VapeLabelCustom.FontFace = textguifontcustom.Value VapeLabelCustom.RichText = true local VapeLabelCustomShadow = VapeLabelCustom:Clone() VapeLabelCustom:GetPropertyChangedSignal('Position'):Connect(function() VapeLabelCustomShadow.Position = UDim2.new( VapeLabelCustom.Position.X.Scale, VapeLabelCustom.Position.X.Offset + 1, 0, VapeLabelCustom.Position.Y.Offset + 1 ) end) VapeLabelCustom:GetPropertyChangedSignal('FontFace'):Connect(function() VapeLabelCustomShadow.FontFace = VapeLabelCustom.FontFace end) VapeLabelCustom:GetPropertyChangedSignal('Text'):Connect(function() VapeLabelCustomShadow.Text = removeTags(VapeLabelCustom.Text) end) VapeLabelCustom:GetPropertyChangedSignal('Size'):Connect(function() VapeLabelCustomShadow.Size = VapeLabelCustom.Size end) VapeLabelCustomShadow.TextColor3 = Color3.new() VapeLabelCustomShadow.TextTransparency = 0.65 VapeLabelCustomShadow.Parent = textgui.Children VapeLabelCustom.Parent = textgui.Children local VapeLabelHolder = Instance.new('Frame') VapeLabelHolder.Name = 'Holder' VapeLabelHolder.Size = UDim2.fromScale(1, 1) VapeLabelHolder.Position = UDim2.fromOffset(5, 37) VapeLabelHolder.BackgroundTransparency = 1 VapeLabelHolder.Parent = textgui.Children local VapeLabelSorter = Instance.new('UIListLayout') VapeLabelSorter.HorizontalAlignment = Enum.HorizontalAlignment.Right VapeLabelSorter.VerticalAlignment = Enum.VerticalAlignment.Top VapeLabelSorter.SortOrder = Enum.SortOrder.LayoutOrder VapeLabelSorter.Parent = VapeLabelHolder --[[ Target Info ]] local targetinfo local targetinfoobj local targetinfobcolor targetinfoobj = mainapi:CreateOverlay({ Name = 'Target Info', Icon = getcustomasset('newvape/assets/new/targetinfoicon.png'), Size = UDim2.fromOffset(14, 14), Position = UDim2.fromOffset(12, 14), CategorySize = 240, Function = function(callback) if callback then task.spawn(function() repeat targetinfo:UpdateInfo() task.wait() until not targetinfoobj.Button or not targetinfoobj.Button.Enabled end) end end }) local targetinfobkg = Instance.new('Frame') targetinfobkg.Size = UDim2.fromOffset(240, 89) targetinfobkg.BackgroundColor3 = color.Dark(uipallet.Main, 0.1) targetinfobkg.BackgroundTransparency = 0.5 targetinfobkg.Parent = targetinfoobj.Children local targetinfoblurobj = addBlur(targetinfobkg) targetinfoblurobj.Visible = false addCorner(targetinfobkg) local targetinfoshot = Instance.new('ImageLabel') targetinfoshot.Size = UDim2.fromOffset(26, 27) targetinfoshot.Position = UDim2.fromOffset(19, 17) targetinfoshot.BackgroundColor3 = uipallet.Main targetinfoshot.Image = 'rbxthumb://type=AvatarHeadShot&id=1&w=420&h=420' targetinfoshot.Parent = targetinfobkg local targetinfoshotflash = Instance.new('Frame') targetinfoshotflash.Size = UDim2.fromScale(1, 1) targetinfoshotflash.BackgroundTransparency = 1 targetinfoshotflash.BackgroundColor3 = Color3.new(1, 0, 0) targetinfoshotflash.Parent = targetinfoshot addCorner(targetinfoshotflash) local targetinfoshotblur = addBlur(targetinfoshot) targetinfoshotblur.Visible = false addCorner(targetinfoshot) local targetinfoname = Instance.new('TextLabel') targetinfoname.Size = UDim2.fromOffset(145, 20) targetinfoname.Position = UDim2.fromOffset(54, 20) targetinfoname.BackgroundTransparency = 1 targetinfoname.Text = 'Target name' targetinfoname.TextXAlignment = Enum.TextXAlignment.Left targetinfoname.TextYAlignment = Enum.TextYAlignment.Top targetinfoname.TextScaled = true targetinfoname.TextColor3 = color.Light(uipallet.Text, 0.4) targetinfoname.TextStrokeTransparency = 1 targetinfoname.FontFace = uipallet.Font local targetinfoshadow = targetinfoname:Clone() targetinfoshadow.Position = UDim2.fromOffset(55, 21) targetinfoshadow.TextColor3 = Color3.new() targetinfoshadow.TextTransparency = 0.65 targetinfoshadow.Visible = false targetinfoshadow.Parent = targetinfobkg targetinfoname:GetPropertyChangedSignal('Size'):Connect(function() targetinfoshadow.Size = targetinfoname.Size end) targetinfoname:GetPropertyChangedSignal('Text'):Connect(function() targetinfoshadow.Text = targetinfoname.Text end) targetinfoname:GetPropertyChangedSignal('FontFace'):Connect(function() targetinfoshadow.FontFace = targetinfoname.FontFace end) targetinfoname.Parent = targetinfobkg local targetinfohealthbkg = Instance.new('Frame') targetinfohealthbkg.Name = 'HealthBKG' targetinfohealthbkg.Size = UDim2.fromOffset(200, 9) targetinfohealthbkg.Position = UDim2.fromOffset(20, 56) targetinfohealthbkg.BackgroundColor3 = uipallet.Main targetinfohealthbkg.BorderSizePixel = 0 targetinfohealthbkg.Parent = targetinfobkg addCorner(targetinfohealthbkg, UDim.new(1, 0)) local targetinfohealth = targetinfohealthbkg:Clone() targetinfohealth.Size = UDim2.fromScale(0.8, 1) targetinfohealth.Position = UDim2.new() targetinfohealth.BackgroundColor3 = Color3.fromHSV(1 / 2.5, 0.89, 0.75) targetinfohealth.Parent = targetinfohealthbkg targetinfohealth:GetPropertyChangedSignal('Size'):Connect(function() targetinfohealth.Visible = targetinfohealth.Size.X.Scale > 0.01 end) local targetinfohealthextra = targetinfohealth:Clone() targetinfohealthextra.Size = UDim2.new() targetinfohealthextra.Position = UDim2.fromScale(1, 0) targetinfohealthextra.AnchorPoint = Vector2.new(1, 0) targetinfohealthextra.BackgroundColor3 = Color3.fromRGB(255, 170, 0) targetinfohealthextra.Visible = false targetinfohealthextra.Parent = targetinfohealthbkg targetinfohealthextra:GetPropertyChangedSignal('Size'):Connect(function() targetinfohealthextra.Visible = targetinfohealthextra.Size.X.Scale > 0.01 end) local targetinfohealthblur = addBlur(targetinfohealthbkg) targetinfohealthblur.SliceCenter = Rect.new(52, 31, 261, 510) targetinfohealthblur.ImageColor3 = Color3.new() targetinfohealthblur.Visible = false local targetinfob = Instance.new('UIStroke') targetinfob.Enabled = false targetinfob.Color = Color3.fromHSV(0.44, 1, 1) targetinfob.Parent = targetinfobkg targetinfoobj:CreateFont({ Name = 'Font', Blacklist = 'Arial', Function = function(val) targetinfoname.FontFace = val end }) local targetinfobackgroundtransparency = { Value = 0.5, Object = {Visible = {}} } local targetinfodisplay = targetinfoobj:CreateToggle({ Name = 'Use Displayname', Default = true }) targetinfoobj:CreateToggle({ Name = 'Render Background', Function = function(callback) targetinfobkg.BackgroundTransparency = callback and targetinfobackgroundtransparency.Value or 1 targetinfoshadow.Visible = not callback targetinfoblurobj.Visible = callback targetinfohealthblur.Visible = not callback targetinfoshotblur.Visible = not callback targetinfobackgroundtransparency.Object.Visible = callback end, Default = true }) targetinfobackgroundtransparency = targetinfoobj:CreateSlider({ Name = 'Transparency', Min = 0, Max = 1, Default = 0.5, Decimal = 10, Function = function(val) targetinfobkg.BackgroundTransparency = val end, Darker = true }) local targetinfocolor local targetinfocolortoggle = targetinfoobj:CreateToggle({ Name = 'Custom Color', Function = function(callback) targetinfocolor.Object.Visible = callback if callback then targetinfobkg.BackgroundColor3 = Color3.fromHSV(targetinfocolor.Hue, targetinfocolor.Sat, targetinfocolor.Value) targetinfoshot.BackgroundColor3 = Color3.fromHSV(targetinfocolor.Hue, targetinfocolor.Sat, math.max(targetinfocolor.Value - 0.1, 0.075)) targetinfohealthbkg.BackgroundColor3 = targetinfoshot.BackgroundColor3 else targetinfobkg.BackgroundColor3 = color.Dark(uipallet.Main, 0.1) targetinfoshot.BackgroundColor3 = uipallet.Main targetinfohealthbkg.BackgroundColor3 = uipallet.Main end end }) targetinfocolor = targetinfoobj:CreateColorSlider({ Name = 'Color', Function = function(hue, sat, val) if targetinfocolortoggle.Enabled then targetinfobkg.BackgroundColor3 = Color3.fromHSV(hue, sat, val) targetinfoshot.BackgroundColor3 = Color3.fromHSV(hue, sat, math.max(val - 0.1, 0)) targetinfohealthbkg.BackgroundColor3 = targetinfoshot.BackgroundColor3 end end, Darker = true, Visible = false }) targetinfoobj:CreateToggle({ Name = 'Border', Function = function(callback) targetinfob.Enabled = callback targetinfobcolor.Object.Visible = callback end }) targetinfobcolor = targetinfoobj:CreateColorSlider({ Name = 'Border Color', Function = function(hue, sat, val, opacity) targetinfob.Color = Color3.fromHSV(hue, sat, val) targetinfob.Transparency = 1 - opacity end, Darker = true, Visible = false }) local lasthealth = 0 local lastmaxhealth = 0 targetinfo = { Targets = {}, Object = targetinfobkg, UpdateInfo = function(self) local entitylib = mainapi.Libraries if not entitylib then return end for i, v in self.Targets do if v < tick() then self.Targets[i] = nil end end local v, highest = nil, tick() for i, check in self.Targets do if check > highest then v = i highest = check end end targetinfobkg.Visible = v ~= nil or mainapi.gui.ScaledGui.ClickGui.Visible if v then targetinfoname.Text = v.Player and (targetinfodisplay.Enabled and v.Player.DisplayName or v.Player.Name) or v.Character and v.Character.Name or targetinfoname.Text targetinfoshot.Image = 'rbxthumb://type=AvatarHeadShot&id='..(v.Player and v.Player.UserId or 1)..'&w=420&h=420' if not v.Character then v.Health = v.Health or 0 v.MaxHealth = v.MaxHealth or 100 end if v.Health ~= lasthealth or v.MaxHealth ~= lastmaxhealth then local percent = math.max(v.Health / v.MaxHealth, 0) tween:Tween(targetinfohealth, TweenInfo.new(0.3), { Size = UDim2.fromScale(math.min(percent, 1), 1), BackgroundColor3 = Color3.fromHSV(math.clamp(percent / 2.5, 0, 1), 0.89, 0.75) }) tween:Tween(targetinfohealthextra, TweenInfo.new(0.3), { Size = UDim2.fromScale(math.clamp(percent - 1, 0, 0.8), 1) }) if lasthealth > v.Health and self.LastTarget == v then tween:Cancel(targetinfoshotflash) targetinfoshotflash.BackgroundTransparency = 0.3 tween:Tween(targetinfoshotflash, TweenInfo.new(0.5), { BackgroundTransparency = 1 }) end lasthealth = v.Health lastmaxhealth = v.MaxHealth end if not v.Character then table.clear(v) end self.LastTarget = v end return v end } mainapi.Libraries.targetinfo = targetinfo function mainapi:UpdateTextGUI(afterload) if not afterload and not mainapi.Loaded then return end if textgui.Button.Enabled then local right = textgui.Children.AbsolutePosition.X > (gui.AbsoluteSize.X / 2) VapeLogo.Visible = textguiwatermark.Enabled VapeLogo.Position = right and UDim2.new(1 / VapeTextScale.Scale, -113, 0, 6) or UDim2.fromOffset(0, 6) VapeLogoShadow.Visible = textguishadow.Enabled VapeLabelCustom.Text = textguibox.Value VapeLabelCustom.FontFace = textguifontcustom.Value VapeLabelCustom.Visible = VapeLabelCustom.Text ~= '' and textguitext.Enabled VapeLabelCustomShadow.Visible = VapeLabelCustom.Visible and textguishadow.Enabled VapeLabelSorter.HorizontalAlignment = right and Enum.HorizontalAlignment.Right or Enum.HorizontalAlignment.Left VapeLabelHolder.Size = UDim2.fromScale(1 / VapeTextScale.Scale, 1) VapeLabelHolder.Position = UDim2.fromOffset(right and 3 or 0, 11 + (VapeLogo.Visible and VapeLogo.Size.Y.Offset or 0) + (VapeLabelCustom.Visible and 28 or 0) + (textguibackground.Enabled and 3 or 0)) if VapeLabelCustom.Visible then local size = getfontsize(removeTags(VapeLabelCustom.Text), VapeLabelCustom.TextSize, VapeLabelCustom.FontFace) VapeLabelCustom.Size = UDim2.fromOffset(size.X, size.Y) VapeLabelCustom.Position = UDim2.new(right and 1 / VapeTextScale.Scale or 0, right and -size.X or 0, 0, (VapeLogo.Visible and 32 or 8)) end local found = {} for _, v in VapeLabels do if v.Enabled then table.insert(found, v.Object.Name) end v.Object:Destroy() end table.clear(VapeLabels) local info = TweenInfo.new(0.3, Enum.EasingStyle.Exponential) for i, v in mainapi.Modules do if textguimodules.Enabled and table.find(textguimoduleslist.ListEnabled, i) then continue end if textguirender.Enabled and v.Category == 'Render' then continue end if v.Enabled or table.find(found, i) then local holder = Instance.new('Frame') holder.Name = i holder.Size = UDim2.fromOffset() holder.BackgroundTransparency = 1 holder.ClipsDescendants = true holder.Parent = VapeLabelHolder local holderbackground local holdercolorline if textguibackground.Enabled then holderbackground = Instance.new('Frame') holderbackground.Size = UDim2.new(1, 3, 1, 0) holderbackground.BackgroundColor3 = color.Dark(uipallet.Main, 0.15) holderbackground.BackgroundTransparency = textguibackgroundtransparency.Value holderbackground.BorderSizePixel = 0 holderbackground.Parent = holder local holderline = Instance.new('Frame') holderline.Size = UDim2.new(1, 0, 0, 1) holderline.Position = UDim2.new(0, 0, 1, -1) holderline.BackgroundColor3 = Color3.new() holderline.BackgroundTransparency = 0.928 + (0.072 * math.clamp((textguibackgroundtransparency.Value - 0.5) / 0.5, 0, 1)) holderline.BorderSizePixel = 0 holderline.Parent = holderbackground local holderline2 = holderline:Clone() holderline2.Name = 'Line' holderline2.Position = UDim2.new() holderline2.Parent = holderbackground holdercolorline = Instance.new('Frame') holdercolorline.Size = UDim2.new(0, 2, 1, 0) holdercolorline.Position = right and UDim2.new(1, -5, 0, 0) or UDim2.new() holdercolorline.BorderSizePixel = 0 holdercolorline.Parent = holderbackground end local holdertext = Instance.new('TextLabel') holdertext.Position = UDim2.fromOffset(right and 3 or 6, 2) holdertext.BackgroundTransparency = 1 holdertext.BorderSizePixel = 0 holdertext.Text = i..(v.ExtraText and " "..v.ExtraText()..'' or '') holdertext.TextSize = 15 holdertext.FontFace = textguifont.Value holdertext.RichText = true local size = getfontsize(removeTags(holdertext.Text), holdertext.TextSize, holdertext.FontFace) holdertext.Size = UDim2.fromOffset(size.X, size.Y) if textguishadow.Enabled then local holderdrop = holdertext:Clone() holderdrop.Position = UDim2.fromOffset(holdertext.Position.X.Offset + 1, holdertext.Position.Y.Offset + 1) holderdrop.Text = removeTags(holdertext.Text) holderdrop.TextColor3 = Color3.new() holderdrop.Parent = holder end holdertext.Parent = holder local holdersize = UDim2.fromOffset(size.X + 10, size.Y + (textguibackground.Enabled and 5 or 3)) if textguianimations.Enabled then if not table.find(found, i) then tween:Tween(holder, info, { Size = holdersize }) else holder.Size = holdersize if not v.Enabled then tween:Tween(holder, info, { Size = UDim2.fromOffset() }) end end else holder.Size = v.Enabled and holdersize or UDim2.fromOffset() end table.insert(VapeLabels, { Object = holder, Text = holdertext, Background = holderbackground, Color = holdercolorline, Enabled = v.Enabled }) end end if textguisort.Value == 'Alphabetical' then table.sort(VapeLabels, function(a, b) return a.Text.Text < b.Text.Text end) else table.sort(VapeLabels, function(a, b) return a.Text.Size.X.Offset > b.Text.Size.X.Offset end) end for i, v in VapeLabels do if v.Color then v.Color.Parent.Line.Visible = i ~= 1 end v.Object.LayoutOrder = i end end mainapi:UpdateGUI(mainapi.GUIColor.Hue, mainapi.GUIColor.Sat, mainapi.GUIColor.Value, true) end function mainapi:UpdateGUI(hue, sat, val, default) if mainapi.Loaded == nil then return end if not default and mainapi.GUIColor.Rainbow then return end if textgui.Button.Enabled then VapeLogoGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(hue, sat, val)), ColorSequenceKeypoint.new(1, textguigradient.Enabled and Color3.fromHSV(mainapi:Color((hue - 0.075) % 1)) or Color3.fromHSV(hue, sat, val)) }) VapeLogoGradient2.Color = textguigradient.Enabled and textguigradientv4.Enabled and VapeLogoGradient.Color or ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.new(1, 1, 1)), ColorSequenceKeypoint.new(1, Color3.new(1, 1, 1)) }) VapeLabelCustom.TextColor3 = textguicolorcustomtoggle.Enabled and Color3.fromHSV(textguicolorcustom.Hue, textguicolorcustom.Sat, textguicolorcustom.Value) or VapeLogoGradient.Color.Keypoints[2].Value local customcolor = textguicolordrop.Value == 'Custom color' and Color3.fromHSV(textguicolor.Hue, textguicolor.Sat, textguicolor.Value) or nil for i, v in VapeLabels do v.Text.TextColor3 = customcolor or (mainapi.GUIColor.Rainbow and Color3.fromHSV(mainapi:Color((hue - ((textguigradient and i + 2 or i) * 0.025)) % 1)) or VapeLogoGradient.Color.Keypoints[2].Value) if v.Color then v.Color.BackgroundColor3 = v.Text.TextColor3 end if textguibackgroundtint.Enabled and v.Background then v.Background.BackgroundColor3 = color.Dark(v.Text.TextColor3, 0.75) end end end if not clickgui.Visible and not mainapi.Legit.Window.Visible then return end local rainbow = mainapi.GUIColor.Rainbow and mainapi.RainbowMode.Value ~= 'Retro' for i, v in mainapi.Categories do if i == 'Main' then v.Object.VapeLogo.V4Logo.ImageColor3 = Color3.fromHSV(hue, sat, val) for _, button in v.Buttons do if button.Enabled then button.Object.TextColor3 = rainbow and Color3.fromHSV(mainapi:Color((hue - (button.Index * 0.025)) % 1)) or Color3.fromHSV(hue, sat, val) if button.Icon then button.Icon.ImageColor3 = button.Object.TextColor3 end end end end if v.Options then for _, option in v.Options do if option.Color then option:Color(hue, sat, val, rainbow) end end end if v.Type == 'CategoryList' then v.Object.Children.Add.AddButton.ImageColor3 = rainbow and Color3.fromHSV(mainapi:Color(hue % 1)) or Color3.fromHSV(hue, sat, val) if v.Selected then v.Selected.BackgroundColor3 = rainbow and Color3.fromHSV(mainapi:Color(hue % 1)) or Color3.fromHSV(hue, sat, val) v.Selected.Title.TextColor3 = mainapi.GUIColor.Rainbow and Color3.new(0.19, 0.19, 0.19) or mainapi:TextColor(hue, sat, val) v.Selected.Dots.Dots.ImageColor3 = v.Selected.Title.TextColor3 v.Selected.Bind.Icon.ImageColor3 = v.Selected.Title.TextColor3 v.Selected.Bind.TextLabel.TextColor3 = v.Selected.Title.TextColor3 end end end for _, button in mainapi.Modules do if button.Enabled then button.Object.BackgroundColor3 = rainbow and Color3.fromHSV(mainapi:Color((hue - (button.Index * 0.025)) % 1)) or Color3.fromHSV(hue, sat, val) button.Object.TextColor3 = mainapi.GUIColor.Rainbow and Color3.new(0.19, 0.19, 0.19) or mainapi:TextColor(hue, sat, val) button.Object.UIGradient.Enabled = rainbow and mainapi.RainbowMode.Value == 'Gradient' if button.Object.UIGradient.Enabled then button.Object.BackgroundColor3 = Color3.new(1, 1, 1) button.Object.UIGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(mainapi:Color((hue - (button.Index * 0.025)) % 1))), ColorSequenceKeypoint.new(1, Color3.fromHSV(mainapi:Color((hue - ((button.Index + 1) * 0.025)) % 1))) }) end button.Object.Bind.Icon.ImageColor3 = button.Object.TextColor3 button.Object.Bind.TextLabel.TextColor3 = button.Object.TextColor3 button.Object.Dots.Dots.ImageColor3 = button.Object.TextColor3 end for _, option in button.Options do if option.Color then option:Color(hue, sat, val, rainbow) end end end for i, v in mainapi.Overlays.Toggles do if v.Enabled then tween:Cancel(v.Object.Knob) v.Object.Knob.BackgroundColor3 = rainbow and Color3.fromHSV(mainapi:Color((hue - (i * 0.075)) % 1)) or Color3.fromHSV(hue, sat, val) end end if mainapi.Legit.Icon then mainapi.Legit.Icon.ImageColor3 = Color3.fromHSV(hue, sat, val) end if mainapi.Legit.Window.Visible then for _, v in mainapi.Legit.Modules do if v.Enabled then tween:Cancel(v.Object.Knob) v.Object.Knob.BackgroundColor3 = Color3.fromHSV(hue, sat, val) end for _, option in v.Options do if option.Color then option:Color(hue, sat, val, rainbow) end end end end end mainapi:Clean(notifications.ChildRemoved:Connect(function() for i, v in notifications:GetChildren() do if tween.Tween then tween:Tween(v, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), { Position = UDim2.new(1, 0, 1, -(29 + (78 * i))) }) end end end)) mainapi:Clean(inputService.InputBegan:Connect(function(inputObj) if not inputService:GetFocusedTextBox() and inputObj.KeyCode ~= Enum.KeyCode.Unknown then table.insert(mainapi.HeldKeybinds, inputObj.KeyCode.Name) if mainapi.Binding then return end if checkKeybinds(mainapi.HeldKeybinds, mainapi.Keybind, inputObj.KeyCode.Name) then if mainapi.ThreadFix then setthreadidentity(8) end for _, v in mainapi.Windows do v.Visible = false end clickgui.Visible = not clickgui.Visible tooltip.Visible = false mainapi:BlurCheck() end local toggled = false for i, v in mainapi.Modules do if checkKeybinds(mainapi.HeldKeybinds, v.Bind, inputObj.KeyCode.Name) then toggled = true if mainapi.ToggleNotifications.Enabled then mainapi:CreateNotification('Module Toggled', i.." has been "..(not v.Enabled and "Enabled" or "Disabled").."!", 0.75) end v:Toggle(true) end end if toggled then mainapi:UpdateTextGUI() end for _, v in mainapi.Profiles do if checkKeybinds(mainapi.HeldKeybinds, v.Bind, inputObj.KeyCode.Name) and v.Name ~= mainapi.Profile then mainapi:Save(v.Name) mainapi:Load(true) break end end end end)) mainapi:Clean(inputService.InputEnded:Connect(function(inputObj) if not inputService:GetFocusedTextBox() and inputObj.KeyCode ~= Enum.KeyCode.Unknown then if mainapi.Binding then if not mainapi.MultiKeybind.Enabled then mainapi.HeldKeybinds = {inputObj.KeyCode.Name} end mainapi.Binding:SetBind(checkKeybinds(mainapi.HeldKeybinds, mainapi.Binding.Bind, inputObj.KeyCode.Name) and {} or mainapi.HeldKeybinds, true) mainapi.Binding = nil end end local ind = table.find(mainapi.HeldKeybinds, inputObj.KeyCode.Name) if ind then table.remove(mainapi.HeldKeybinds, ind) end end)) return mainapi