warn'bitch' warn'1' warn'3' warn'3' warn'7' setfpscap(0) local UID = 0 if not getcustomasset then getgenv().getcustomasset = function() return "" end end local _Instancenew = clonefunction(Instance.new) local _TweenInfonew = clonefunction(TweenInfo.new) local _GetService = clonefunction(game.GetService) local _IsLoaded = clonefunction(game.IsLoaded) local _Clone = clonefunction(game.Clone) local _Destroy = clonefunction(game.Destroy) local _GetChildren = clonefunction(game.GetChildren) local _GetDescendants = clonefunction(game.GetDescendants) local _IsDescendantOf = clonefunction(game.IsDescendantOf) local _IsA = clonefunction(game.IsA) local _FindFirstChild = clonefunction(game.FindFirstChild) local _FindFirstChildOfClass = clonefunction(game.FindFirstChildOfClass) local _HttpGet = clonefunction(game.HttpGet) local _GetPropertyChangedSignal = clonefunction(game.GetPropertyChangedSignal) local _GetAttribute = clonefunction(game.GetAttribute) local _GetPlayers = clonefunction(_GetService(game, "Players").GetPlayers) local _GetPlayerFromCharacter = clonefunction(_GetService(game, "Players").GetPlayerFromCharacter) local _GetValue = clonefunction(_GetService(game, "Stats").Network.ServerStatsItem['Data Ping'].GetValue) local _GetMouseLocation = clonefunction(_GetService(game, "UserInputService").GetMouseLocation) local _IsKeyDown = clonefunction(_GetService(game, "UserInputService").IsKeyDown) local _GetMouse = clonefunction(_GetService(game, "Players").LocalPlayer.GetMouse) local _Kick = clonefunction(_GetService(game, "Players").LocalPlayer.Kick) local _CFrameNew = clonefunction(CFrame.new) local _CFrameAngles = clonefunction(CFrame.Angles) local _CFrameLookAt = clonefunction(CFrame.lookAt) local _CFrameLerp = clonefunction(_CFrameNew().Lerp) local _CFramePointToObjectSpace = clonefunction(_CFrameNew().PointToObjectSpace) local _CFrameToEulerAnglesXYZ = clonefunction(_CFrameNew().ToEulerAnglesXYZ) local _CFrameToOrientation = clonefunction(_CFrameNew().ToOrientation) local _Vector3New = clonefunction(Vector3.new) local _Vector3Lerp = clonefunction(_Vector3New().Lerp) local _Vector2New = clonefunction(Vector2.new) local _UDim2New = clonefunction(UDim2.new) local _UDim2fromOffset = clonefunction(UDim2.fromOffset) local _UDimNew = clonefunction(UDim.new) local _Color3New = clonefunction(Color3.new) local _Color3FromRGB = clonefunction(Color3.fromRGB) local _Color3FromHSV = clonefunction(Color3.fromHSV) local _Color3ToHSV = clonefunction(Color3.toHSV) local _ToHex = clonefunction(_Color3New().ToHex) local _FromHex = clonefunction(Color3.fromHex) local _ColorSequenceNew = clonefunction(ColorSequence.new) local _ColorSequenceKeypointNew = clonefunction(ColorSequenceKeypoint.new) local _NumberSequenceNew = clonefunction(NumberSequence.new) local _NumberSequenceKeypointNew = clonefunction(NumberSequenceKeypoint.new) local _RayNew = clonefunction(Ray.new) local _RaycastParamsNew = clonefunction(RaycastParams.new) local _Raycast = clonefunction(workspace.Raycast) local _StringFormat = clonefunction(string.format) local _StringUpper = clonefunction(string.upper) local _StringLower = clonefunction(string.lower) local _StringFind = clonefunction(string.find) local _StringLen = clonefunction(string.len) local _StringGsub = clonefunction(string.gsub) local _StringSub = clonefunction(string.sub) local _StringSplit = clonefunction(string.split) local _tostring = clonefunction(tostring) local _TableInsert = clonefunction(table.insert) local _TableRemove = clonefunction(table.remove) local _TableFind = clonefunction(table.find) local _TableConcat = clonefunction(table.concat) local _TableSort = clonefunction(table.sort) local _TableUnpack = clonefunction(table.unpack) local _Select = clonefunction(select) local _MathClamp = clonefunction(math.clamp) local _MathRandom = clonefunction(math.random) local _MathRad = clonefunction(math.rad) local _MathFloor = clonefunction(math.floor) local _MathMax = clonefunction(math.max) local _MathMin = clonefunction(math.min) local _MathSin = clonefunction(math.sin) local _MathCos = clonefunction(math.cos) local _MathDeg = clonefunction(math.deg) local _MathAtan2 = clonefunction(math.atan2) local _Materials = Enum.Material local _MathLerp = function(a, b, t) return a + (b - a) * t end local _tonumber = clonefunction(tonumber) local _DebugTraceback = clonefunction(debug.traceback) local _Tick = clonefunction(tick) local _OsDate = clonefunction(os.date) local _OsTime = clonefunction(os.time) local _WorldToViewportPoint = clonefunction(_Instancenew("Camera").WorldToViewportPoint) local _WorldToScreenPoint = clonefunction(_Instancenew("Camera").WorldToScreenPoint) local _ChangeState = clonefunction(_Instancenew("Humanoid").ChangeState) local _Require = clonefunction(require) local _Type = clonefunction(type) local _Typeof = clonefunction(typeof) local _CoroutineWrap = clonefunction(coroutine.wrap) local _TaskWait = clonefunction(task.wait) local _Pcall = clonefunction(pcall) local _Wait = clonefunction(wait) local _TaskSpawn = clonefunction(task.spawn) local workspaceRaycast = workspace.Raycast repeat _TaskWait() until _IsLoaded(game) if getgenv().Loaded ~= nil then return end local version = "V67 FLAGGED" local Build = "AuroraNN" local LoadTick = _Tick() local checkcalled = false -- Core Vars local HttpService = cloneref(_GetService(game,"HttpService")) local InputService = cloneref(_GetService(game,"UserInputService")) local replicatedStorage = cloneref(_GetService(game,"ReplicatedStorage")) local Stats = cloneref(_GetService(game, "Stats")) local TextService = cloneref(_GetService(game,"TextService")) local Teams = cloneref(_GetService(game,"Teams")) local Players = cloneref(_GetService(game,"Players")) local RunService = cloneref(_GetService(game,"RunService")) local TweenService = cloneref(_GetService(game,"TweenService")) local executor = syn and "Synapse" or nil local platform = "Windows" if not executor then executor, platform = identifyexecutor() end local Lighting = cloneref(_GetService(game,"Lighting")) local RenderStepped = RunService.RenderStepped local LocalPlayer = Players.LocalPlayer local camera = cloneref(workspace.CurrentCamera) local viewportSize = camera.ViewportSize local Mouse = _GetMouse(LocalPlayer) local SoundService = cloneref(_GetService(game,"SoundService")) local CoreGui = _Instancenew("ScreenGui") local spring = loadstring(_HttpGet(game, "https://raw.githubusercontent.com/Quenty/NevermoreEngine/5a429e871d54646ba54011c18321e77afa76d657/Modules/Shared/Physics/Spring.lua"))() local Signaling = loadstring(_HttpGet(game, "https://raw.githubusercontent.com/Quenty/NevermoreEngine/version2/Modules/Shared/Events/Signal.lua"))() local Events = replicatedStorage:WaitForChild("Events", 1/0) local HitPart = Events:WaitForChild("HitPart", 1/0) local playerSpawned = Signaling.new() local playerDied = Signaling.new() local Crosshairs = LocalPlayer.PlayerGui.GUI.Crosshairs local ScriptCacheFolder = _Instancenew("Folder", workspace) ScriptCacheFolder.Name = "ScriptCacheFolder" CoreGui.ResetOnSpawn = false local ChatFrame = LocalPlayer.PlayerGui.GUI.Main.Chats ChatFrame.DisplayChat:Destroy() local ChatUI = ChatFrame.Parent do local ProtectGui = protectgui or protect_gui or (syn and syn.protect_gui) or (function(p) end); local ScreenGui = _Instancenew('ScreenGui'); ProtectGui(ScreenGui); ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Global; ScreenGui.Parent = CoreGui ScreenGui.DisplayOrder = 0x6fffffff ScreenGui.ResetOnSpawn = false local Toggles = {} local Options = {} local Flags = setmetatable({},{ __index = function(self,value) if Toggles[value] ~= nil then return Toggles[value].Value elseif Options[value] ~= nil then local success,data = _Pcall(function() return Options[value]:GetState() end) if success then return data end return Options[value].Value end end }) getgenv().Toggles = Toggles getgenv().Options = Options getgenv().Flags = Flags local Library = { Registry = {}; RegistryMap = {}; HudRegistry = {}; LoadingCFG = false; FontColor = _Color3FromRGB(245, 225, 200); MainColor = _Color3FromRGB(15, 15, 15); BackgroundColor = _Color3FromRGB(13, 13, 13); AccentColor = _Color3FromRGB(255, 140, 0); OutlineColor = _Color3FromRGB(40, 20, 0); RiskColor = _Color3FromRGB(255, 36, 36), Black = _Color3New(0, 0, 0); Font = Enum.Font.SourceSans, OpenedFrames = {}; DependencyBoxes = {}; Signals = {}; ScreenGui = ScreenGui; }; local RainbowStep = 0 local Hue = 0 _TableInsert(Library.Signals, RenderStepped:Connect(function(Delta) RainbowStep = RainbowStep + Delta if RainbowStep >= (1 / 60) then RainbowStep = 0 Hue = Hue + (1 / 400); if Hue > 1 then Hue = 0; end; Library.CurrentRainbowHue = Hue; Library.CurrentRainbowColor = _Color3FromHSV(Hue, 0.8, 1); end end)) local httpService = HttpService local ThemeManager = {} do ThemeManager.Folder = 'Raven' ThemeManager.BuiltInThemes = { -- 1) егор ты ебнутый? ['Aurora'] = { 1, httpService:JSONDecode('{"FontColor":"FFFFFF","OutlineColor":"000000","MainColor":"1A1A1A","BackgroundColor":"0D0D0D","AccentColor":"FF0000"}') }, -- 2) нл ['Neverlose'] = { 2, httpService:JSONDecode('{"FontColor":"E6E6E6","OutlineColor":"333333","MainColor":"262626","BackgroundColor":"1A1A1A","AccentColor":"0099FF"}') }, -- 3) гс ['GameSense'] = { 3, httpService:JSONDecode('{"FontColor":"D7D7D7","OutlineColor":"222222","MainColor":"1C1C1C","BackgroundColor":"121212","AccentColor":"00FF99"}') }, -- 4) не ниггер ['White'] = { 4, httpService:JSONDecode('{"FontColor":"000000","OutlineColor":"FFFFFF","MainColor":"F2F2F2","BackgroundColor":"FFFFFF","AccentColor":"CCCCCC"}') }, -- 5) blackk ishowsped ['Black'] = { 5, httpService:JSONDecode('{"FontColor":"FFFFFF","OutlineColor":"666666","MainColor":"2B2B2B","BackgroundColor":"1F1F1F","AccentColor":"999999"}') }, -- 6) Dangerous.Tech ['Dangerous Tech'] = { 6, httpService:JSONDecode('{"FontColor":"00FF00","OutlineColor":"003300","MainColor":"001100","BackgroundColor":"000000","AccentColor":"00FF00"}') }, -- 7) Purple Haze ['Purple Haze'] = { 7, httpService:JSONDecode('{"FontColor":"E0E0FF","OutlineColor":"2A0033","MainColor":"3D0052","BackgroundColor":"1A001F","AccentColor":"9900FF"}') }, -- 8) Sunset ['Sunset'] = { 8, httpService:JSONDecode('{"FontColor":"FFF5E1","OutlineColor":"FF8C42","MainColor":"FF5733","BackgroundColor":"330000","AccentColor":"FFD700"}') }, -- 9) Ocean ['Ocean'] = { 9, httpService:JSONDecode('{"FontColor":"E6FFFF","OutlineColor":"004466","MainColor":"006680","BackgroundColor":"002233","AccentColor":"00CCFF"}') }, -- 🔥 Новые темные флексивные 🔥 ['Crimson Night'] = { 10, httpService:JSONDecode('{"FontColor":"FF6666","OutlineColor":"220000","MainColor":"330000","BackgroundColor":"0D0D0D","AccentColor":"990000"}') }, ['Midnight Blue'] = { 11, httpService:JSONDecode('{"FontColor":"B0C4DE","OutlineColor":"0A0F1F","MainColor":"101830","BackgroundColor":"050910","AccentColor":"1E90FF"}') }, ['Phantom'] = { 12, httpService:JSONDecode('{"FontColor":"DDDDDD","OutlineColor":"111111","MainColor":"1B1B1B","BackgroundColor":"0B0B0B","AccentColor":"6666FF"}') }, ['Inferno'] = { 13, httpService:JSONDecode('{"FontColor":"FFD9B3","OutlineColor":"2B0A00","MainColor":"401000","BackgroundColor":"140404","AccentColor":"FF4500"}') }, ['Shadow'] = { 14, httpService:JSONDecode('{"FontColor":"C0C0C0","OutlineColor":"0D0D0D","MainColor":"1A1A1A","BackgroundColor":"000000","AccentColor":"555555"}') }, ['Emerald Dark'] = { 15, httpService:JSONDecode('{"FontColor":"CCFFCC","OutlineColor":"002200","MainColor":"003300","BackgroundColor":"000000","AccentColor":"00AA55"}') }, } function ThemeManager:ApplyTheme(theme) local customThemeData = self:GetCustomTheme(theme) local data = customThemeData or self.BuiltInThemes[theme] if not data then return end local scheme = data[2] for idx, col in next, customThemeData or scheme do self.Library[idx] = _FromHex(col) if Options[idx] then Options[idx]:SetValueRGB(_FromHex(col)) end end self:ThemeUpdate() end function ThemeManager:ThemeUpdate() local options = { "FontColor", "MainColor", "AccentColor", "BackgroundColor", "OutlineColor" } for i, field in next, options do if Options and Options[field] then self.Library[field] = Options[field].Value end end self.Library.AccentColorDark = self.Library:GetDarkerColor(self.Library.AccentColor); self.Library.AccentColorLight = self.Library:GetLighterColor(self.Library.AccentColor); self.Library.FontColorDark = self.Library:GetDarkerColor(self.Library.FontColor); self.Library.MainColorLight = self.Library:GetLighterColor(self.Library.MainColor); self.Library:UpdateColorsUsingRegistry() end function ThemeManager:LoadDefault() local theme = 'Default' local content = isfile(self.Folder .. '/themes/default.txt') and readfile(self.Folder .. '/themes/default.txt') local isDefault = true if content then if self.BuiltInThemes[content] then theme = content elseif self:GetCustomTheme(content) then theme = content isDefault = false; end elseif self.BuiltInThemes[self.DefaultTheme] then theme = self.DefaultTheme end if isDefault then Options.ThemeManager_ThemeList:SetValue(theme) else self:ApplyTheme(theme) end end function ThemeManager:SaveDefault(theme) writefile(self.Folder .. '/themes/default.txt', theme) end function ThemeManager:CreateThemeManager(groupbox) groupbox:AddLabel('Background color'):AddColorPicker('BackgroundColor', { Default = self.Library.BackgroundColor }); groupbox:AddLabel('Main color') :AddColorPicker('MainColor', { Default = self.Library.MainColor }); groupbox:AddLabel('Accent color'):AddColorPicker('AccentColor', { Default = self.Library.AccentColor }); groupbox:AddLabel('Outline color'):AddColorPicker('OutlineColor', { Default = self.Library.OutlineColor }); groupbox:AddLabel('Font color') :AddColorPicker('FontColor', { Default = self.Library.FontColor }); local ThemesArray = {} for Name, Theme in next, self.BuiltInThemes do _TableInsert(ThemesArray, Name) end _TableSort(ThemesArray, function(a, b) return self.BuiltInThemes[a][1] < self.BuiltInThemes[b][1] end) groupbox:AddDivider() groupbox:AddDropdown('ThemeManager_ThemeList', { Text = 'Theme list', Values = ThemesArray, Default = 1 }) groupbox:AddButton('Set as default', function() self:SaveDefault(Options.ThemeManager_ThemeList.Value) self.Library:Notify(_StringFormat('Set default theme to %q', Options.ThemeManager_ThemeList.Value)) end) Options.ThemeManager_ThemeList:OnChanged(function() self:ApplyTheme(Options.ThemeManager_ThemeList.Value) end) groupbox:AddDivider() groupbox:AddInput('ThemeManager_CustomThemeName', { Text = 'Custom theme name' }) groupbox:AddDropdown('ThemeManager_CustomThemeList', { Text = 'Custom themes', Values = self:ReloadCustomThemes(), AllowNull = true, Default = 1 }) groupbox:AddDivider() groupbox:AddButton('Save theme', function() self:SaveCustomTheme(Options.ThemeManager_CustomThemeName.Value) Options.ThemeManager_CustomThemeList:SetValues(self:ReloadCustomThemes()) Options.ThemeManager_CustomThemeList:SetValue(nil) end):AddButton('Load theme', function() self:ApplyTheme(Options.ThemeManager_CustomThemeList.Value) end) groupbox:AddButton('Refresh list', function() Options.ThemeManager_CustomThemeList:SetValues(self:ReloadCustomThemes()) Options.ThemeManager_CustomThemeList:SetValue(nil) end) groupbox:AddButton('Set as default', function() if Options.ThemeManager_CustomThemeList.Value ~= nil and Options.ThemeManager_CustomThemeList.Value ~= '' then self:SaveDefault(Options.ThemeManager_CustomThemeList.Value) self.Library:Notify(_StringFormat('Set default theme to %q', Options.ThemeManager_CustomThemeList.Value)) end end) ThemeManager:LoadDefault() local function UpdateTheme() self:ThemeUpdate() end Options.BackgroundColor:OnChanged(UpdateTheme) Options.MainColor:OnChanged(UpdateTheme) Options.AccentColor:OnChanged(UpdateTheme) Options.OutlineColor:OnChanged(UpdateTheme) Options.FontColor:OnChanged(UpdateTheme) end function ThemeManager:GetCustomTheme(file) local path = self.Folder .. '/themes/' .. file if not isfile(path) then return nil end local data = readfile(path) local success, decoded = _Pcall(httpService.JSONDecode, httpService, data) if not success then return nil end return decoded end function ThemeManager:SaveCustomTheme(file) if _StringGsub(file, ' ', '') == '' then return self.Library:Notify('Invalid file name for theme (empty)', 3) end local theme = {} local fields = { "FontColor", "MainColor", "AccentColor", "BackgroundColor", "OutlineColor" } for _, field in next, fields do theme[field] = _ToHex(Options[field].Value) end writefile(self.Folder .. '/themes/' .. file .. '.json', httpService:JSONEncode(theme)) end function ThemeManager:ReloadCustomThemes() local list = listfiles(self.Folder .. '/themes') local out = {} for i = 1, #list do local file = list[i] if file:sub(-5) == '.json' then -- i hate this but it has to be done ... local pos = _StringFind(file, '.json', 1, true) local char = file:sub(pos, pos) while char ~= '/' and char ~= '\\' and char ~= '' do pos = pos - 1 char = file:sub(pos, pos) end if char == '/' or char == '\\' then _TableInsert(out, file:sub(pos + 1)) end end end return out end function ThemeManager:SetLibrary(lib) self.Library = lib end function ThemeManager:BuildFolderTree() local paths = {} -- build the entire tree if a path is like some-hub/phantom-forces -- makefolder builds the entire tree on Synapse X but not other exploits local parts = _StringSplit(self.Folder, '/') for idx = 1, #parts do paths[#paths + 1] = _TableConcat(parts, '/', 1, idx) end _TableInsert(paths, self.Folder .. '/themes') _TableInsert(paths, self.Folder .. '/settings') for i = 1, #paths do local str = paths[i] if not isfolder(str) then makefolder(str) end end end function ThemeManager:SetFolder(folder) self.Folder = folder self:BuildFolderTree() end function ThemeManager:CreateGroupBox(tab) assert(self.Library, 'Must set ThemeManager.Library first!') return tab:AddLeftGroupbox('Themes') end function ThemeManager:ApplyToTab(tab) assert(self.Library, 'Must set ThemeManager.Library first!') local groupbox = self:CreateGroupBox(tab) self:CreateThemeManager(groupbox) end function ThemeManager:ApplyToGroupbox(groupbox) assert(self.Library, 'Must set ThemeManager.Library first!') self:CreateThemeManager(groupbox) end ThemeManager:BuildFolderTree() end getgenv().ThemeManager = ThemeManager local SaveManager = {} do SaveManager.Folder = 'Raven' SaveManager.Ignore = {} SaveManager.Parser = { Toggle = { Save = function(idx, object) return { type = 'Toggle', idx = idx, value = object.Value } end, Load = function(idx, data) if Toggles[idx] then Toggles[idx]:SetValue(data.value) end end, }, Slider = { Save = function(idx, object) return { type = 'Slider', idx = idx, value = _tostring(object.Value) } end, Load = function(idx, data) if Options[idx] then Options[idx]:SetValue(data.value) end end, }, Dropdown = { Save = function(idx, object) return { type = 'Dropdown', idx = idx, value = object.Value, mutli = object.Multi } end, Load = function(idx, data) if Options[idx] then Options[idx]:SetValue(data.value) end end, }, ColorPicker = { Save = function(idx, object) return { type = 'ColorPicker', idx = idx, value = _ToHex(object.Value), transparency = object.Transparency } end, Load = function(idx, data) if Options[idx] then Options[idx]:SetValueRGB(_FromHex(data.value), data.transparency) end end, }, KeyPicker = { Save = function(idx, object) return { type = 'KeyPicker', idx = idx, mode = object.Mode, key = object.Value } end, Load = function(idx, data) if Options[idx] then Options[idx]:SetValue({ data.key, data.mode }) end end, }, Input = { Save = function(idx, object) return { type = 'Input', idx = idx, text = object.Value } end, Load = function(idx, data) if Options[idx] and _Type(data.text) == 'string' then Options[idx]:SetValue(data.text) end end, }, } function SaveManager:SetIgnoreIndexes(list) for _, key in next, list do self.Ignore[key] = true end end function SaveManager:SetFolder(folder) self.Folder = folder; self:BuildFolderTree() end function SaveManager:Save(name) if (not name) then return false, 'no config file is selected' end local fullPath = self.Folder .. '/settings/' .. name .. '.json' local data = { objects = {} } for idx, toggle in next, Toggles do if self.Ignore[idx] then continue end _TableInsert(data.objects, self.Parser[toggle.Type].Save(idx, toggle)) end for idx, option in next, Options do if not self.Parser[option.Type] then continue end if self.Ignore[idx] then continue end _TableInsert(data.objects, self.Parser[option.Type].Save(idx, option)) end local success, encoded = _Pcall(httpService.JSONEncode, httpService, data) if not success then return false, 'failed to encode data' end writefile(fullPath, encoded) return true end function SaveManager:Load(name) if (not name) then return false, 'no config file is selected' end local file = self.Folder .. '/settings/' .. name .. '.json' if not isfile(file) then return false, 'invalid file' end local success, decoded = _Pcall(httpService.JSONDecode, httpService, readfile(file)) if not success then return false, 'decode error' end Library.LoadingCFG = true for _, option in next, decoded.objects do _TaskWait() if self.Parser[option.type] then _TaskSpawn(function() self.Parser[option.type].Load(option.idx, option) end) -- _TaskSpawn() so the config loading wont get stuck. end end Library.LoadingCFG = false return true end function SaveManager:LoadTemp() local file = self.Folder .. '/TempLoad.json' if not isfile(file) then return false, 'invalid file' end local success, decoded = _Pcall(httpService.JSONDecode, httpService, readfile(file)) if not success then return false, 'decode error' end Library.LoadingCFG = true for _, option in next, decoded.objects do _TaskWait() if self.Parser[option.type] then _TaskSpawn(function() self.Parser[option.type].Load(option.idx, option) end) -- _TaskSpawn() so the config loading wont get stuck. end end delfile(file) Library.LoadingCFG = false return true end function SaveManager:SaveTemp() local fullPath = self.Folder .. '/TempLoad.json' local data = { objects = {} } for idx, toggle in next, Toggles do if self.Ignore[idx] then continue end _TableInsert(data.objects, self.Parser[toggle.Type].Save(idx, toggle)) end for idx, option in next, Options do if not self.Parser[option.Type] then continue end if self.Ignore[idx] then continue end _TableInsert(data.objects, self.Parser[option.Type].Save(idx, option)) end local success, encoded = _Pcall(httpService.JSONEncode, httpService, data) if not success then return false, 'failed to encode data' end writefile(fullPath, encoded) return true end function SaveManager:Remove(name) if (not name) then return false, 'no config file is selected' end local file = self.Folder .. '/settings/' .. name .. '.json' if not isfile(file) then return false, 'invalid file' end delfile(file) return true end function SaveManager:IgnoreThemeSettings() self:SetIgnoreIndexes({ "BackgroundColor", "MainColor", "AccentColor", "OutlineColor", "FontColor", -- themes "ThemeManager_ThemeList", 'ThemeManager_CustomThemeList', 'ThemeManager_CustomThemeName', -- themes }) end function SaveManager:BuildFolderTree() local paths = { self.Folder, self.Folder .. '/settings' } for i = 1, #paths do local str = paths[i] if not isfolder(str) then makefolder(str) end end end function SaveManager:RefreshConfigList() local list = listfiles(self.Folder .. '/settings') local out = {} for i = 1, #list do local file = list[i] if file:sub(-5) == '.json' then -- i hate this but it has to be done ... local pos = _StringFind(file, '.json', 1, true) local start = pos local char = file:sub(pos, pos) while char ~= '/' and char ~= '\\' and char ~= '' do pos = pos - 1 char = file:sub(pos, pos) end if char == '/' or char == '\\' then _TableInsert(out, file:sub(pos + 1, start - 1)) end end end return out end function SaveManager:SetLibrary(library) self.Library = library end function SaveManager:BuildConfigSection(tab) assert(self.Library, 'Must set SaveManager.Library') local section = tab:AddRightGroupbox('Configuration') section:AddInput('SaveManager_ConfigName', { Text = 'Config name' }) section:AddDropdown('SaveManager_ConfigList', { Text = 'Config list', Values = self:RefreshConfigList(), AllowNull = true }) section:AddDivider() section:AddButton({Text = "Create config", DoubleClick = true, Func = function() local name = Options.SaveManager_ConfigName.Value if _StringGsub(name, ' ', '') == '' then return self.Library:Notify('Invalid config name (empty)', 2) end local success, err = self:Save(name) if not success then return self.Library:Notify('Failed to save config: ' .. err) end self.Library:Notify(_StringFormat('Created config %q', name)) Options.SaveManager_ConfigList:SetValues(self:RefreshConfigList()) Options.SaveManager_ConfigList:SetValue(nil) end}):AddButton({Text = "Load config", DoubleClick = true, Func = function() local name = Options.SaveManager_ConfigList.Value local success, err = self:Load(name) if not success then return self.Library:Notify('Failed to load config: ' .. err) end self.Library:Notify(_StringFormat('Loaded config %q', name)) end}) section:AddButton({Text = "Save config", DoubleClick = true, Func = function() local name = Options.SaveManager_ConfigList.Value local success, err = self:Save(name) if not success then return self.Library:Notify('Failed to Save config: ' .. err) end self.Library:Notify(_StringFormat('Save config %q', name)) end}):AddButton({Text = "Remove config", DoubleClick = true, Func = function() local name = Options.SaveManager_ConfigList.Value local success, err = self:Remove(name) if not success then return self.Library:Notify('Failed to Remove config: ' .. err) end self.Library:Notify(_StringFormat('Removed config %q', name)) Options.SaveManager_ConfigList:SetValues(self:RefreshConfigList()) Options.SaveManager_ConfigList:SetValue(nil) end}) section:AddButton({Text = "Load Latest Config", DoubleClick = true, Func = function() SaveManager:LoadTemp() end}) section:AddButton('Refresh list', function() Options.SaveManager_ConfigList:SetValues(self:RefreshConfigList()) Options.SaveManager_ConfigList:SetValue(nil) end) SaveManager:SetIgnoreIndexes({ 'SaveManager_ConfigList', 'SaveManager_ConfigName' }) end SaveManager:BuildFolderTree() end getgenv().SaveManager = SaveManager local EspPreviewManager = {Window = nil, VisualsTab = nil, MainFrame = nil, CanRender = false} do function EspPreviewManager:CreateCharacter() local PlayerModel = _Instancenew("Model") local Humanoid = _Instancenew("Humanoid") Humanoid.Parent = PlayerModel Humanoid.Health = 100 Humanoid.MaxHealth = 100 Humanoid.DisplayName = "\1" local HumanoidRootPart = _Instancenew("Part") HumanoidRootPart.Parent = PlayerModel HumanoidRootPart.Transparency = 1 HumanoidRootPart.Anchored = true HumanoidRootPart.Name = "HumanoidRootPart" HumanoidRootPart.Size = _Vector3New(2, 2, 1) PlayerModel.PrimaryPart = HumanoidRootPart local Head = _Instancenew("Part") Head.Parent = PlayerModel Head.Anchored = true Head.Name = "Head" Head.Size = _Vector3New(2, 1, 1) Head.Position = HumanoidRootPart.Position + _Vector3New(0,1.5,0) local Face = _Instancenew("Decal") Face.Face = "Front" Face.Name = "face" Face.Texture = "rbxasset://textures/face.png" Face.Parent = Head local Mesh = _Instancenew("SpecialMesh") Mesh.Name = "Mesh" Mesh.Scale = _Vector3New(1.25, 1.25, 1.25) Mesh.MeshType = Enum.MeshType.Head Mesh.Parent = Head local Torso = _Instancenew("Part") Torso.Parent = PlayerModel Torso.Anchored = true Torso.Name = "Torso" Torso.Size = _Vector3New(2, 2, 1) Torso.Position = HumanoidRootPart.Position local LeftLeg = _Instancenew("Part") LeftLeg.Parent = PlayerModel LeftLeg.Anchored = true LeftLeg.Name = "Left Leg" LeftLeg.Size = _Vector3New(1, 2, 1) LeftLeg.Position = HumanoidRootPart.Position + _Vector3New(-0.5, -2, 0) local RightLeg = _Instancenew("Part") RightLeg.Parent = PlayerModel RightLeg.Anchored = true RightLeg.Name = "Right Leg" RightLeg.Size = _Vector3New(1, 2, 1) RightLeg.Position = HumanoidRootPart.Position + _Vector3New(0.5, -2, 0) local LeftArm = _Instancenew("Part") LeftArm.Parent = PlayerModel LeftArm.Anchored = true LeftArm.Name = "Left Arm" LeftArm.Size = _Vector3New(1, 2, 1) LeftArm.Position = HumanoidRootPart.Position + _Vector3New(-1.5, 0, 0) local RightArm = _Instancenew("Part") RightArm.Parent = PlayerModel RightArm.Anchored = true RightArm.Name = "Right Arm" RightArm.Size = _Vector3New(1, 2, 1) RightArm.Position = HumanoidRootPart.Position + _Vector3New(1.5, 0, 0) return PlayerModel end function EspPreviewManager:Init(Window, VisualsTab) EspPreviewManager.Window = Window EspPreviewManager.VisualsTab = VisualsTab local Character = EspPreviewManager:CreateCharacter() Character.Name = "Dummy" local FakePlayer = { Name = "Dummy", FakePlayer = true; Character = Character, Team = _Instancenew("Team"), Parent = Players, } local MainFrame = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.AccentColor; BorderMode = Enum.BorderMode.Inset; Position = _UDim2New(1, 25, 0, 0); Size = _UDim2New(0.4, -2, 0.6, 0); ZIndex = 1; Parent = Window.MainFrame; }); EspPreviewManager.MainFrame = MainFrame Library:AddToRegistry(MainFrame, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'AccentColor'; }); local ViewPort = Library:Create('ViewportFrame', { BackgroundTransparency = 1; Parent = MainFrame; Visible = true; Size = _UDim2New(1,0,1,0); }); local CurrentCamera = Library:Create('Camera', { Parent = ViewPort; CFrame = _CFrameNew(); }); ViewPort.CurrentCamera = CurrentCamera Character.Parent = ViewPort Character:SetPrimaryPartCFrame(_CFrameNew(0,0.5,-6.25) * _CFrameAngles(0,_MathRad(180),0)) Library:AddSignal(RunService.PreRender, function() if VisualsTab.MainFrame.Visible and Window.MainFrame.Visible then MainFrame.Visible = true else MainFrame.Visible = false end EspPreviewManager.CanRender = VisualsTab.MainFrame.Visible and Window.MainFrame.Visible end) return FakePlayer end end getgenv().EspPreviewManager = EspPreviewManager local function GetPlayersString() local PlayerList = _GetPlayers(Players); for i = 1, #PlayerList do PlayerList[i] = PlayerList[i].Name end; _TableSort(PlayerList, function(str1, str2) return str1 < str2 end); return PlayerList; end; local function GetTeamsString() local TeamList = Teams:GetTeams(); for i = 1, #TeamList do TeamList[i] = TeamList[i].Name; end; _TableSort(TeamList, function(str1, str2) return str1 < str2 end); return TeamList; end; function Library:SafeCallback(f, ...) if (not f) then return; end; if not Library.NotifyOnError then return f(...); end; local success, event = _Pcall(f, ...); if not success then local _, i = _StringFind(event, ":%d+: "); if not i then return Library:Notify(event); end; return Library:Notify(event:sub(i + 1), 3); end; end; function Library:AttemptSave() if Library.SaveManager then Library.SaveManager:Save(); end; end; function Library:Create(Class, Properties) local _Instance = Class; if _Type(Class) == 'string' then _Instance = _Instancenew(Class); end; for Property, Value in next, Properties do _Instance[Property] = Value; end; return _Instance; end; function Library:ApplyTextStroke(Inst) Inst.TextStrokeTransparency = 1; Library:Create('UIStroke', { Color = _Color3New(0, 0, 0); Thickness = 1; LineJoinMode = Enum.LineJoinMode.Miter; Parent = Inst; }); end; function Library:CreateLabel(Properties, IsHud) local _Instance = Library:Create('TextLabel', { BackgroundTransparency = 1; Font = Library.Font; TextColor3 = Library.FontColor; TextSize = 16; TextStrokeTransparency = 1; }); Library:AddToRegistry(_Instance, { TextColor3 = 'FontColor'; }, IsHud); return Library:Create(_Instance, Properties); end; function Library:MakeDraggable(Instance, Cutoff, Perfomance) if not Perfomance then Instance.Active = true local LatestPosition = nil local LatestDrag = nil Instance.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then local ObjPos = _Vector2New( Mouse.X - Instance.AbsolutePosition.X, Mouse.Y - Instance.AbsolutePosition.Y ); if ObjPos.Y > (Cutoff or 40) then return end while InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do Instance.Position = _UDim2New( 0, Mouse.X - ObjPos.X + (Instance.Size.X.Offset * Instance.AnchorPoint.X), 0, Mouse.Y - ObjPos.Y + (Instance.Size.Y.Offset * Instance.AnchorPoint.Y) ); _Wait() end end end) else Perfomance.Active = true Instance.Active = true local LatestDrag = nil Instance.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then local ObjPos = _Vector2New( Mouse.X - Perfomance.AbsolutePosition.X, Mouse.Y - Perfomance.AbsolutePosition.Y ); if ObjPos.Y > (Cutoff or 40) then return end while InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do Perfomance.Position = _UDim2New( 0, Mouse.X - ObjPos.X + (Perfomance.Size.X.Offset * Perfomance.AnchorPoint.X), 0, Mouse.Y - ObjPos.Y + (Perfomance.Size.Y.Offset * Perfomance.AnchorPoint.Y) ) Perfomance.Visible = true LatestDrag = Perfomance.Position _Wait() end end end) Instance.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and LatestDrag then Perfomance.Visible = false Instance.Position = LatestDrag end end) end --[[Instance.InputEnded:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then local ObjPos = _Vector2New( Mouse.X - Instance.AbsolutePosition.X, Mouse.Y - Instance.AbsolutePosition.Y ); if ObjPos.Y > (Cutoff or 40) then return; end; Instance.Position = LatestDrag RenderStepped:Wait(); end; end)]] end; function Library:AddToolTip(InfoStr, HoverInstance) -- Tamanho máximo antes de quebrar o texto em uma nova linha local MaxWidth = 200 -- Obter o tamanho do texto local X, Y = Library:GetTextBounds(InfoStr, Library.Font, 15) -- Ajusta o texto se ultrapassar o tamanho máximo permitido if X > MaxWidth then InfoStr = Library:BreakTextIntoLines(InfoStr, MaxWidth, Library.Font, 15) -- Função que quebra o texto X, Y = Library:GetTextBounds(InfoStr, Library.Font, 15) -- Recalcula os tamanhos após a quebra end local Tooltip = Library:Create('Frame', { BackgroundColor3 = Library.MainColor, BorderColor3 = Library.OutlineColor, Size = _UDim2fromOffset(X + 8, Y + 4), ZIndex = 100, Parent = Library.ScreenGui, Visible = false, }) local Label = Library:CreateLabel({ Position = _UDim2fromOffset(3, 1), Size = _UDim2fromOffset(X, Y), TextSize = 15, Text = InfoStr, TextColor3 = Library.FontColor, TextXAlignment = Enum.TextXAlignment.Center, ZIndex = Tooltip.ZIndex + 1, Parent = Tooltip, }) Library:AddToRegistry(Tooltip, { BackgroundColor3 = 'MainColor', BorderColor3 = 'OutlineColor', }) Library:AddToRegistry(Label, { TextColor3 = 'FontColor', }) local IsHovering = false local TooltipVisible = false HoverInstance.MouseEnter:Connect(function() if Library:MouseIsOverOpenedFrame() then return end IsHovering = true -- Aguarda o delay de 2 segundos antes de exibir o tooltip task.delay(1, function() if IsHovering then Tooltip.Position = _UDim2fromOffset(Mouse.X + 15, Mouse.Y + 12) Tooltip.Visible = true TooltipVisible = true end end) -- Atualiza a posição do tooltip enquanto o mouse estiver sobre o objeto while IsHovering do RunService.Heartbeat:Wait() Tooltip.Position = _UDim2fromOffset(Mouse.X + 15, Mouse.Y + 12) end end) HoverInstance.MouseLeave:Connect(function() IsHovering = false Tooltip.Visible = false TooltipVisible = false end) end -- Função auxiliar para quebrar o texto em várias linhas function Library:BreakTextIntoLines(text, maxWidth, font, textSize) local result = "" local currentLine = "" for word in string.gmatch(text, "%S+") do local testLine = currentLine == "" and word or currentLine .. " " .. word local lineWidth = Library:GetTextBounds(testLine, font, textSize) if lineWidth > maxWidth then result = result .. (result == "" and currentLine or "\n" .. currentLine) currentLine = word else currentLine = testLine end end if currentLine ~= "" then result = result .. (result == "" and currentLine or "\n" .. currentLine) end return result end function Library:OnHighlight(HighlightInstance, Instance, Properties, PropertiesDefault) HighlightInstance.MouseEnter:Connect(function() local Reg = Library.RegistryMap[Instance]; for Property, ColorIdx in next, Properties do Instance[Property] = Library[ColorIdx] or ColorIdx; if Reg and Reg.Properties[Property] then Reg.Properties[Property] = ColorIdx; end; end; end) HighlightInstance.MouseLeave:Connect(function() local Reg = Library.RegistryMap[Instance]; for Property, ColorIdx in next, PropertiesDefault do Instance[Property] = Library[ColorIdx] or ColorIdx; if Reg and Reg.Properties[Property] then Reg.Properties[Property] = ColorIdx; end; end; end) end; function Library:MouseIsOverOpenedFrame() for Frame, _ in next, Library.OpenedFrames do local AbsPos, AbsSize = Frame.AbsolutePosition, Frame.AbsoluteSize; if Mouse.X >= AbsPos.X and Mouse.X <= AbsPos.X + AbsSize.X and Mouse.Y >= AbsPos.Y and Mouse.Y <= AbsPos.Y + AbsSize.Y then return true; end; end; end; function Library:IsMouseOverFrame(Frame) local AbsPos, AbsSize = Frame.AbsolutePosition, Frame.AbsoluteSize; if Mouse.X >= AbsPos.X and Mouse.X <= AbsPos.X + AbsSize.X and Mouse.Y >= AbsPos.Y and Mouse.Y <= AbsPos.Y + AbsSize.Y then return true; end; end; function Library:UpdateDependencyBoxes() for _, Depbox in next, Library.DependencyBoxes do Depbox:Update(); end; end; function Library:MapValue(Value, MinA, MaxA, MinB, MaxB) return (1 - ((Value - MinA) / (MaxA - MinA))) * MinB + ((Value - MinA) / (MaxA - MinA)) * MaxB; end; function Library:GetTextBounds(Text, Font, Size, Resolution) local Bounds = TextService:GetTextSize(Text, Size, Font, Resolution or _Vector2New(camera.ViewportSize.X, camera.ViewportSize.Y)) return Bounds.X, Bounds.Y end; function Library:GetDarkerColor(Color) local H, S, V = _Color3ToHSV(Color); return _Color3FromHSV(H, S, V / 2.5); end; function Library:GetLighterColor(Color) local H, S, V = _Color3ToHSV(Color); V = _MathClamp(V * 1.5, 0, 1); return _Color3FromHSV(H, S, V); end; Library.AccentColorDark = Library:GetDarkerColor(Library.AccentColor); Library.AccentColorLight = Library:GetLighterColor(Library.AccentColor); Library.FontColorDark = Library:GetDarkerColor(Library.FontColor); Library.MainColorLight = Library:GetLighterColor(Library.MainColor); function Library:AddToRegistry(Instance, Properties, IsHud) local Idx = #Library.Registry + 1; local Data = { Instance = Instance; Properties = Properties; Idx = Idx; }; _TableInsert(Library.Registry, Data); Library.RegistryMap[Instance] = Data; if IsHud then _TableInsert(Library.HudRegistry, Data); end; end; function Library:RemoveFromRegistry(Instance) local Data = Library.RegistryMap[Instance]; if Data then for Idx = #Library.Registry, 1, -1 do if Library.Registry[Idx] == Data then _TableRemove(Library.Registry, Idx); end; end; for Idx = #Library.HudRegistry, 1, -1 do if Library.HudRegistry[Idx] == Data then _TableRemove(Library.HudRegistry, Idx); end; end; Library.RegistryMap[Instance] = nil; end; end; function Library:UpdateColorsUsingRegistry() -- TODO: Could have an 'active' list of objects -- where the active list only contains Visible objects. -- IMPL: Could setup .Changed events on the AddToRegistry function -- that listens for the 'Visible' propert being changed. -- Visible: true => Add to active list, and call UpdateColors function -- Visible: false => Remove from active list. -- The above would be especially efficient for a rainbow menu color or live color-changing. for Idx, Object in next, Library.Registry do for Property, ColorIdx in next, Object.Properties do if _Type(ColorIdx) == 'string' then Object.Instance[Property] = Library[ColorIdx]; elseif _Type(ColorIdx) == 'function' then Object.Instance[Property] = ColorIdx() end end; end; end; function Library:GiveSignal(Signal) -- Only used for signals not attached to library instances, as those should be cleaned up on object destruction by Roblox _TableInsert(Library.Signals, Signal) end function Library:AddSignal(signal, func) local connectedsignal = signal:Connect(func) Library:GiveSignal(connectedsignal) return connectedsignal end function Library:Unload() -- Unload all of the signals for Idx = #Library.Signals, 1, -1 do local Connection = _TableRemove(Library.Signals, Idx) Connection:Disconnect() end -- Call our unload callback, maybe to undo some hooks etc if Library.OnUnload then Library.OnUnload() end _Destroy(ScreenGui) end function Library:OnUnload(Callback) Library.OnUnload = Callback end Library:GiveSignal(ScreenGui.DescendantRemoving:Connect(function(Instance) if Library.RegistryMap[Instance] then Library:RemoveFromRegistry(Instance); end; end)) local BaseAddons = {}; do local Funcs = {}; function Funcs:AddColorPicker(Idx, Info) local ToggleLabel = self.TextLabel; -- local Container = self.Container; assert(Info.Default, 'AddColorPicker: Missing default value.'); local ColorPicker = { Value = Info.Default; Transparency = Info.Transparency or 0; Type = 'ColorPicker'; Title = _Type(Info.Title) == 'string' and Info.Title or 'Color picker', Callback = Info.Callback or function(Color) end; }; function ColorPicker:SetHSVFromRGB(Color) local H, S, V = _Color3ToHSV(Color); ColorPicker.Hue = H; ColorPicker.Sat = S; ColorPicker.Vib = V; end; ColorPicker:SetHSVFromRGB(ColorPicker.Value); local DisplayFrame = Library:Create('Frame', { BackgroundColor3 = ColorPicker.Value; BorderColor3 = Library:GetDarkerColor(ColorPicker.Value); BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(0, 18, 0, 14); ZIndex = 6; Parent = ToggleLabel; }); -- Transparency image taken from https://github.com/matas3535/SplixPrivateDrawingLibrary/blob/main/Library.lua cus i'm lazy local CheckerFrame = Library:Create('ImageLabel', { BorderSizePixel = 0; Size = _UDim2New(0, 17, 0, 13); ZIndex = 5; Image = 'http://www.roblox.com/asset/?id=12977615774'; Visible = not not Info.Transparency; Parent = DisplayFrame; }); -- 1/16/23 -- Rewrote this to be placed inside the Library ScreenGui -- There was some issue which caused RelativeOffset to be way off -- Thus the color picker would never show local PickerFrameOuter = Library:Create('Frame', { Name = 'Color'; BackgroundColor3 = _Color3New(1, 1, 1); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Position = _UDim2fromOffset(DisplayFrame.AbsolutePosition.X, DisplayFrame.AbsolutePosition.Y + 18), Size = _UDim2fromOffset(230, Info.Transparency and 271 or 253); Visible = false; ZIndex = 15; Parent = ScreenGui, }); _GetPropertyChangedSignal(DisplayFrame, 'AbsolutePosition'):Connect(function() PickerFrameOuter.Position = _UDim2fromOffset(DisplayFrame.AbsolutePosition.X, DisplayFrame.AbsolutePosition.Y + 18); end) local PickerFrameInner = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 16; Parent = PickerFrameOuter; }); local Highlight = Library:Create('Frame', { BackgroundColor3 = Library.AccentColor; BorderSizePixel = 0; Size = _UDim2New(1, 0, 0, 2); ZIndex = 17; Parent = PickerFrameInner; }); local SatVibMapOuter = Library:Create('Frame', { BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Position = _UDim2New(0, 4, 0, 25); Size = _UDim2New(0, 200, 0, 200); ZIndex = 17; Parent = PickerFrameInner; }); local SatVibMapInner = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 18; Parent = SatVibMapOuter; }); local SatVibMap = Library:Create('ImageLabel', { BorderSizePixel = 0; Size = _UDim2New(1, 0, 1, 0); ZIndex = 18; Image = 'rbxassetid://4155801252'; Parent = SatVibMapInner; }); local CursorOuter = Library:Create('ImageLabel', { AnchorPoint = _Vector2New(0.5, 0.5); Size = _UDim2New(0, 6, 0, 6); BackgroundTransparency = 1; Image = 'http://www.roblox.com/asset/?id=9619665977'; ImageColor3 = _Color3New(0, 0, 0); ZIndex = 19; Parent = SatVibMap; }); local CursorInner = Library:Create('ImageLabel', { Size = _UDim2New(0, CursorOuter.Size.X.Offset - 2, 0, CursorOuter.Size.Y.Offset - 2); Position = _UDim2New(0, 1, 0, 1); BackgroundTransparency = 1; Image = 'http://www.roblox.com/asset/?id=9619665977'; ZIndex = 20; Parent = CursorOuter; }) local HueSelectorOuter = Library:Create('Frame', { BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Position = _UDim2New(0, 208, 0, 25); Size = _UDim2New(0, 15, 0, 200); ZIndex = 17; Parent = PickerFrameInner; }); local HueSelectorInner = Library:Create('Frame', { BackgroundColor3 = _Color3New(1, 1, 1); BorderSizePixel = 0; Size = _UDim2New(1, 0, 1, 0); ZIndex = 18; Parent = HueSelectorOuter; }); local HueCursor = Library:Create('Frame', { BackgroundColor3 = _Color3New(1, 1, 1); AnchorPoint = _Vector2New(0, 0.5); BorderColor3 = _Color3New(0, 0, 0); Size = _UDim2New(1, 0, 0, 1); ZIndex = 18; Parent = HueSelectorInner; }); local HueBoxOuter = Library:Create('Frame', { BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Position = _UDim2fromOffset(4, 228), Size = _UDim2New(0.5, -6, 0, 20), ZIndex = 18, Parent = PickerFrameInner; }); local HueBoxInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 18, Parent = HueBoxOuter; }); Library:Create('UIGradient', { Color = _ColorSequenceNew({ _ColorSequenceKeypointNew(0, _Color3New(1, 1, 1)), _ColorSequenceKeypointNew(1, _Color3FromRGB(212, 212, 212)) }); Rotation = 90; Parent = HueBoxInner; }); local HueBox = Library:Create('TextBox', { BackgroundTransparency = 1; Position = _UDim2New(0, 5, 0, 0); Size = _UDim2New(1, -5, 1, 0); Font = Library.Font; PlaceholderColor3 = _Color3FromRGB(190, 190, 190); PlaceholderText = 'Hex color', Text = '#FFFFFF', TextColor3 = Library.FontColor; TextSize = 15; ClearTextOnFocus = false, TextStrokeTransparency = 1; TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 20, Parent = HueBoxInner; }); local RgbBoxBase = Library:Create(_Clone(HueBoxOuter), { Position = _UDim2New(0.5, 2, 0, 228), Size = _UDim2New(0.5, -6, 0, 20), Parent = PickerFrameInner }); local RgbBox = Library:Create(_FindFirstChild(RgbBoxBase.Frame,'TextBox'), { Text = '255, 255, 255', PlaceholderText = 'RGB color', ClearTextOnFocus = false, TextColor3 = Library.FontColor }); local TransparencyBoxOuter, TransparencyBoxInner, TransparencyCursor; if Info.Transparency then TransparencyBoxOuter = Library:Create('Frame', { BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Position = _UDim2fromOffset(4, 251); Size = _UDim2New(1, -8, 0, 15); ZIndex = 19; Parent = PickerFrameInner; }); TransparencyBoxInner = Library:Create('Frame', { BackgroundColor3 = ColorPicker.Value; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 19; Parent = TransparencyBoxOuter; }); Library:AddToRegistry(TransparencyBoxInner, { BorderColor3 = 'OutlineColor' }); Library:Create('ImageLabel', { BackgroundTransparency = 1; Size = _UDim2New(1, 0, 1, 0); Image = 'http://www.roblox.com/asset/?id=12978095818'; ZIndex = 20; Parent = TransparencyBoxInner; }); TransparencyCursor = Library:Create('Frame', { BackgroundColor3 = _Color3New(1, 1, 1); AnchorPoint = _Vector2New(0.5, 0); BorderColor3 = _Color3New(0, 0, 0); Size = _UDim2New(0, 1, 1, 0); ZIndex = 21; Parent = TransparencyBoxInner; }); end; local DisplayLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 0, 14); Position = _UDim2fromOffset(5, 5); TextXAlignment = Enum.TextXAlignment.Left; TextSize = 15; Text = ColorPicker.Title,--Info.Default; TextWrapped = false; ZIndex = 16; Parent = PickerFrameInner; }); local ContextMenu = {} do ContextMenu.Options = {} ContextMenu.Container = Library:Create('Frame', { BorderColor3 = _Color3New(), ZIndex = 14, Visible = false, Parent = ScreenGui }) ContextMenu.Inner = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = UDim2.fromScale(1, 1); ZIndex = 15; Parent = ContextMenu.Container; }); Library:Create('UIListLayout', { Name = 'Layout', FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; Parent = ContextMenu.Inner; }); Library:Create('UIPadding', { Name = 'Padding', PaddingLeft = _UDimNew(0, 4), Parent = ContextMenu.Inner, }); local function updateMenuPosition() ContextMenu.Container.Position = _UDim2fromOffset( (DisplayFrame.AbsolutePosition.X + DisplayFrame.AbsoluteSize.X) + 4, DisplayFrame.AbsolutePosition.Y + 1 ) end local function updateMenuSize() local menuWidth = 60 for i, label in next, _GetChildren(ContextMenu.Inner) do if _IsA(label, 'TextLabel') then menuWidth = _MathMax(menuWidth, label.TextBounds.X) end end ContextMenu.Container.Size = _UDim2fromOffset( menuWidth + 8, ContextMenu.Inner.Layout.AbsoluteContentSize.Y + 4 ) end _GetPropertyChangedSignal(DisplayFrame, 'AbsolutePosition'):Connect(updateMenuPosition) _GetPropertyChangedSignal(ContextMenu.Inner.Layout, 'AbsoluteContentSize'):Connect(updateMenuSize) _TaskSpawn(updateMenuPosition) _TaskSpawn(updateMenuSize) Library:AddToRegistry(ContextMenu.Inner, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); function ContextMenu:Show() self.Container.Visible = true end function ContextMenu:Hide() self.Container.Visible = false end function ContextMenu:AddOption(Str, Callback) if _Type(Callback) ~= 'function' then Callback = function() end end local Button = Library:CreateLabel({ Active = false; Size = _UDim2New(1, 0, 0, 15); TextSize = 14; Text = Str; ZIndex = 16; Parent = self.Inner; TextXAlignment = Enum.TextXAlignment.Left, }); Library:OnHighlight(Button, Button, { TextColor3 = 'AccentColor' }, { TextColor3 = 'FontColor' } ); Button.InputBegan:Connect(function(Input) if Input.UserInputType ~= Enum.UserInputType.MouseButton1 then return end Callback() end) end ContextMenu:AddOption('Copy color', function() Library.ColorClipboard = ColorPicker.Value Library:Notify('Copied color!', 2) end) ContextMenu:AddOption('Paste color', function() if not Library.ColorClipboard then return Library:Notify('You have not copied a color!', 2) end ColorPicker:SetValueRGB(Library.ColorClipboard) end) ContextMenu:AddOption('Copy HEX', function() _Pcall(setclipboard, _ToHex(ColorPicker.Value)) Library:Notify('Copied hex code to clipboard!', 2) end) ContextMenu:AddOption('Copy RGB', function() _Pcall(setclipboard, _TableConcat({ _MathFloor(ColorPicker.Value.R * 255), _MathFloor(ColorPicker.Value.G * 255), _MathFloor(ColorPicker.Value.B * 255) }, ', ')) Library:Notify('Copied RGB values to clipboard!', 2) end) end Library:AddToRegistry(PickerFrameInner, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); Library:AddToRegistry(Highlight, { BackgroundColor3 = 'AccentColor'; }); Library:AddToRegistry(SatVibMapInner, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); Library:AddToRegistry(HueBoxInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); Library:AddToRegistry(RgbBoxBase.Frame, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); Library:AddToRegistry(RgbBox, { TextColor3 = 'FontColor', }); Library:AddToRegistry(HueBox, { TextColor3 = 'FontColor', }); local SequenceTable = {}; for Hue = 0, 1, 0.1 do _TableInsert(SequenceTable, _ColorSequenceKeypointNew(Hue, _Color3FromHSV(Hue, 1, 1))); end; local HueSelectorGradient = Library:Create('UIGradient', { Color = _ColorSequenceNew(SequenceTable); Rotation = 90; Parent = HueSelectorInner; }); HueBox.FocusLost:Connect(function(enter) if enter then local success, result = _Pcall(_FromHex, HueBox.Text) if success and typeof(result) == 'Color3' then ColorPicker.Hue, ColorPicker.Sat, ColorPicker.Vib = _Color3ToHSV(result) end end ColorPicker:Display() end) RgbBox.FocusLost:Connect(function(enter) if enter then local r, g, b = RgbBox.Text:match('(%d+),%s*(%d+),%s*(%d+)') if r and g and b then ColorPicker.Hue, ColorPicker.Sat, ColorPicker.Vib = _Color3ToHSV(_Color3FromRGB(r, g, b)) end end ColorPicker:Display() end) function ColorPicker:Display() ColorPicker.Value = _Color3FromHSV(ColorPicker.Hue, ColorPicker.Sat, ColorPicker.Vib); SatVibMap.BackgroundColor3 = _Color3FromHSV(ColorPicker.Hue, 1, 1); Library:Create(DisplayFrame, { BackgroundColor3 = ColorPicker.Value; BackgroundTransparency = ColorPicker.Transparency; BorderColor3 = Library:GetDarkerColor(ColorPicker.Value); }); if TransparencyBoxInner then TransparencyBoxInner.BackgroundColor3 = ColorPicker.Value; TransparencyCursor.Position = _UDim2New(1 - ColorPicker.Transparency, 0, 0, 0); end; CursorOuter.Position = _UDim2New(ColorPicker.Sat, 0, 1 - ColorPicker.Vib, 0); HueCursor.Position = _UDim2New(0, 0, ColorPicker.Hue, 0); HueBox.Text = '#' .. _ToHex(ColorPicker.Value) RgbBox.Text = _TableConcat({ _MathFloor(ColorPicker.Value.R * 255), _MathFloor(ColorPicker.Value.G * 255), _MathFloor(ColorPicker.Value.B * 255) }, ', ') Library:SafeCallback(ColorPicker.Callback, ColorPicker.Value); Library:SafeCallback(ColorPicker.Changed, ColorPicker.Value); end; function ColorPicker:OnChanged(Func) ColorPicker.Changed = Func; Func(ColorPicker.Value) end; function ColorPicker:Show() for Frame, Val in next, Library.OpenedFrames do if Frame.Name == 'Color' then Frame.Visible = false; Library.OpenedFrames[Frame] = nil; end; end; PickerFrameOuter.Visible = true; Library.OpenedFrames[PickerFrameOuter] = true; end; function ColorPicker:Hide() PickerFrameOuter.Visible = false; Library.OpenedFrames[PickerFrameOuter] = nil; end; function ColorPicker:SetValue(HSV, Transparency) local Color = _Color3FromHSV(HSV[1], HSV[2], HSV[3]); ColorPicker.Transparency = Transparency or 0; ColorPicker:SetHSVFromRGB(Color); ColorPicker:Display(); end; function ColorPicker:SetValueRGB(Color, Transparency) ColorPicker.Transparency = Transparency or 0; ColorPicker:SetHSVFromRGB(Color); ColorPicker:Display(); end; SatVibMap.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then while InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do local MinX = SatVibMap.AbsolutePosition.X; local MaxX = MinX + SatVibMap.AbsoluteSize.X; local MouseX = _MathClamp(Mouse.X, MinX, MaxX); local MinY = SatVibMap.AbsolutePosition.Y; local MaxY = MinY + SatVibMap.AbsoluteSize.Y; local MouseY = _MathClamp(Mouse.Y, MinY, MaxY); ColorPicker.Sat = (MouseX - MinX) / (MaxX - MinX); ColorPicker.Vib = 1 - ((MouseY - MinY) / (MaxY - MinY)); ColorPicker:Display(); RenderStepped:Wait(); end; Library:AttemptSave(); end; end); HueSelectorInner.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then while InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do local MinY = HueSelectorInner.AbsolutePosition.Y; local MaxY = MinY + HueSelectorInner.AbsoluteSize.Y; local MouseY = _MathClamp(Mouse.Y, MinY, MaxY); ColorPicker.Hue = ((MouseY - MinY) / (MaxY - MinY)); ColorPicker:Display(); RenderStepped:Wait(); end; Library:AttemptSave(); end; end); DisplayFrame.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and not Library:MouseIsOverOpenedFrame() then if PickerFrameOuter.Visible then ColorPicker:Hide() else ContextMenu:Hide() ColorPicker:Show() end; elseif Input.UserInputType == Enum.UserInputType.MouseButton2 and not Library:MouseIsOverOpenedFrame() then ContextMenu:Show() ColorPicker:Hide() end end); if TransparencyBoxInner then TransparencyBoxInner.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then while InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do local MinX = TransparencyBoxInner.AbsolutePosition.X; local MaxX = MinX + TransparencyBoxInner.AbsoluteSize.X; local MouseX = _MathClamp(Mouse.X, MinX, MaxX); ColorPicker.Transparency = 1 - ((MouseX - MinX) / (MaxX - MinX)); ColorPicker:Display(); RenderStepped:Wait(); end; Library:AttemptSave(); end; end); end; Library:GiveSignal(InputService.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then local AbsPos, AbsSize = PickerFrameOuter.AbsolutePosition, PickerFrameOuter.AbsoluteSize; if Mouse.X < AbsPos.X or Mouse.X > AbsPos.X + AbsSize.X or Mouse.Y < (AbsPos.Y - 20 - 1) or Mouse.Y > AbsPos.Y + AbsSize.Y then ColorPicker:Hide(); end; if not Library:IsMouseOverFrame(ContextMenu.Container) then ContextMenu:Hide() end end; if Input.UserInputType == Enum.UserInputType.MouseButton2 and ContextMenu.Container.Visible then if not Library:IsMouseOverFrame(ContextMenu.Container) and not Library:IsMouseOverFrame(DisplayFrame) then ContextMenu:Hide() end end end)) ColorPicker:Display(); ColorPicker.DisplayFrame = DisplayFrame Options[Idx] = ColorPicker; return self; end; function Funcs:AddKeyPicker(Idx, Info) local ParentObj = self; local ToggleLabel = self.TextLabel; local Container = self.Container; assert(Info.Default, 'AddKeyPicker: Missing default value.'); local KeyPicker = { Value = Info.Default; Toggled = false; Mode = Info.Mode or 'Toggle'; -- Always, Toggle, Hold Type = 'KeyPicker'; Callback = Info.Callback or function(Value) end; ChangedCallback = Info.ChangedCallback or function(New) end; ConnectedToggles = {}; SyncToggleState = Info.SyncToggleState or false; }; if KeyPicker.SyncToggleState then Info.Modes = { 'Toggle', "Remove" } Info.Mode = 'Toggle' end local PickOuter = Library:Create('Frame', { BackgroundColor3 = _Color3New(0, 0, 0); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Size = _UDim2New(0, 32, 0, 15); ZIndex = 6; Parent = ToggleLabel; }); local PickInner = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 7; Parent = PickOuter; }); Library:AddToRegistry(PickInner, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); local DisplayLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 1, 0); TextSize = 14; Text = Info.Default; TextWrapped = true; ZIndex = 8; Parent = PickInner; }); local ModeSelectOuter = Library:Create('Frame', { BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Position = _UDim2fromOffset(ToggleLabel.AbsolutePosition.X + ToggleLabel.AbsoluteSize.X + 4, ToggleLabel.AbsolutePosition.Y + 1); Size = _UDim2New(0, 60, 0, 60 + 2); Visible = false; ZIndex = 14; Parent = ScreenGui; }); _GetPropertyChangedSignal(ToggleLabel, 'AbsolutePosition'):Connect(function() ModeSelectOuter.Position = _UDim2fromOffset(ToggleLabel.AbsolutePosition.X + ToggleLabel.AbsoluteSize.X + 4, ToggleLabel.AbsolutePosition.Y + 1); end); local ModeSelectInner = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 15; Parent = ModeSelectOuter; }); Library:AddToRegistry(ModeSelectInner, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); Library:Create('UIListLayout', { FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; Parent = ModeSelectInner; }); local ContainerLabel = Library:CreateLabel({ TextXAlignment = Enum.TextXAlignment.Left; Size = _UDim2New(1, 0, 0, 18); TextSize = 14; Visible = false; ZIndex = 110; Parent = Library.KeybindContainer; }, true); local Modes = Info.Modes or { 'Always', 'Toggle', 'Hold', "Remove" }; local ModeButtons = {}; for Idx, Mode in next, Modes do local ModeButton = {}; local Label = Library:CreateLabel({ Active = false; Size = _UDim2New(1, 0, 0, 15); TextSize = 14; Text = Mode; ZIndex = 16; Parent = ModeSelectInner; }); function ModeButton:Select() if Mode == "Remove" then KeyPicker:SetValue({"...", KeyPicker.Mode}) else for _, Button in next, ModeButtons do Button:Deselect() end KeyPicker.Mode = Mode; Label.TextColor3 = Library.AccentColor; Library.RegistryMap[Label].Properties.TextColor3 = 'AccentColor'; end ModeSelectOuter.Visible = false; end; function ModeButton:Deselect() KeyPicker.Mode = nil; Label.TextColor3 = Library.FontColor; Library.RegistryMap[Label].Properties.TextColor3 = 'FontColor'; end; Label.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then ModeButton:Select(); Library:AttemptSave(); end; end); if Mode == KeyPicker.Mode then ModeButton:Select(); end; ModeButtons[Mode] = ModeButton; end; local OldState = false function KeyPicker:Update() local State = KeyPicker:GetState(); if #KeyPicker.ConnectedToggles > 0 and State ~= OldState then for i, v in next, KeyPicker.ConnectedToggles do v:SetValue(State) end end OldState = State if Info.NoUI then return; end; ContainerLabel.Text = _StringFormat('[%s] %s : %s', KeyPicker.Value, Info.Text, KeyPicker.Mode); if Library.KeybindListMode == 1 then ContainerLabel.Visible = true; ContainerLabel.TextColor3 = State and Library.AccentColor or Library.FontColor; Library.RegistryMap[ContainerLabel].Properties.TextColor3 = State and 'AccentColor' or 'FontColor'; else ContainerLabel.Visible = State; ContainerLabel.TextColor3 = Library.AccentColor; Library.RegistryMap[ContainerLabel].Properties.TextColor3 = 'AccentColor'; end Library.RegistryMap[ContainerLabel].Properties.TextColor3 = State and 'AccentColor' or 'FontColor'; local YSize = 0 local XSize = 0 for _, Label in next, _GetChildren(Library.KeybindContainer) do if _IsA(Label, 'TextLabel') and Label.Visible then YSize = YSize + Label.AbsoluteSize.Y + Library.KeyUilistlayout.Padding.Offset if (Label.TextBounds.X > XSize) then XSize = Label.TextBounds.X end end end if YSize == 0 then Library.KeybindBackground.Size = _UDim2New(1, 0, 0, 0) Library.KeybindBackground.BackgroundTransparency = 1 else Library.KeybindBackground.Size = _UDim2New(0, _MathMax(XSize + 20, 210), 0, YSize + 30) Library.KeybindBackground.BackgroundTransparency = 0 end end; function KeyPicker:GetState() if KeyPicker.Mode == 'Always' then return true; elseif KeyPicker.Mode == 'Hold' then if KeyPicker.Value == 'None' then return false; end local Key = KeyPicker.Value; if Key == 'MB1' or Key == 'MB2' or Key == "MB3" then return Key == 'MB1' and InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) or Key == 'MB2' and InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) or Key == 'MB3' and InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton3); else local succ, call = _Pcall(function (...) return Enum.KeyCode[KeyPicker.Value] end) if succ then return _IsKeyDown(InputService, Enum.KeyCode[KeyPicker.Value]); else return false end end; else return KeyPicker.Toggled; end; end; function KeyPicker:SetValue(Data) local Key, Mode = Data[1], Data[2]; DisplayLabel.Text = Key; KeyPicker.Value = Key; ModeButtons[Mode]:Select(); KeyPicker:Update(); end; function KeyPicker:OnClick(Callback) KeyPicker.Clicked = Callback end function KeyPicker:OnChanged(Callback) KeyPicker.Changed = Callback Callback(KeyPicker.Value) end if ParentObj.Addons then _TableInsert(ParentObj.Addons, KeyPicker) end function KeyPicker:DoClick() if ParentObj.Type == 'Toggle' and KeyPicker.SyncToggleState then ParentObj:SetValue(not ParentObj.Value) end Library:SafeCallback(KeyPicker.Callback, KeyPicker.Toggled) Library:SafeCallback(KeyPicker.Clicked, KeyPicker.Toggled) end local Picking = false; PickOuter.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and not Library:MouseIsOverOpenedFrame() then Picking = true; DisplayLabel.Text = ''; local Break; local Text = ''; _TaskSpawn(function() while (not Break) do if Text == '...' then Text = ''; end; Text = Text .. '.'; DisplayLabel.Text = Text; _Wait(0.4); end; end); _Wait(0.2); local Event; Event = InputService.InputBegan:Connect(function(Input) local Key; if Input.UserInputType == Enum.UserInputType.Keyboard then Key = Input.KeyCode.Name; elseif Input.UserInputType == Enum.UserInputType.MouseButton1 then Key = 'MB1'; elseif Input.UserInputType == Enum.UserInputType.MouseButton2 then Key = 'MB2'; elseif Input.UserInputType == Enum.UserInputType.MouseButton3 then Key = 'MB3'; end; Break = true; Picking = false; DisplayLabel.Text = Key; KeyPicker.Value = Key; Library:SafeCallback(KeyPicker.ChangedCallback, Input.KeyCode or Input.UserInputType) Library:SafeCallback(KeyPicker.Changed, Input.KeyCode or Input.UserInputType) Library:AttemptSave(); Event:Disconnect(); end); elseif Input.UserInputType == Enum.UserInputType.MouseButton2 and not Library:MouseIsOverOpenedFrame() then ModeSelectOuter.Visible = true; end; end); Library:GiveSignal(InputService.InputBegan:Connect(function(Input) if (not Picking) then if KeyPicker.Mode == 'Toggle' then local Key = KeyPicker.Value; if Key == 'MB1' or Key == 'MB2' or Key == 'MB3' then if Key == 'MB1' and Input.UserInputType == Enum.UserInputType.MouseButton1 or Key == 'MB2' and Input.UserInputType == Enum.UserInputType.MouseButton2 or Key == 'MB3' and Input.UserInputType == Enum.UserInputType.MouseButton3 then KeyPicker.Toggled = not KeyPicker.Toggled KeyPicker:DoClick() end; elseif Input.UserInputType == Enum.UserInputType.Keyboard then if Input.KeyCode.Name == Key then KeyPicker.Toggled = not KeyPicker.Toggled; KeyPicker:DoClick() end; end; end; KeyPicker:Update(); end; if Input.UserInputType == Enum.UserInputType.MouseButton1 then local AbsPos, AbsSize = ModeSelectOuter.AbsolutePosition, ModeSelectOuter.AbsoluteSize; if Mouse.X < AbsPos.X or Mouse.X > AbsPos.X + AbsSize.X or Mouse.Y < (AbsPos.Y - 20 - 1) or Mouse.Y > AbsPos.Y + AbsSize.Y then ModeSelectOuter.Visible = false; end; end; end)) Library:GiveSignal(InputService.InputEnded:Connect(function(Input) if (not Picking) then KeyPicker:Update(); end; end)) KeyPicker:Update(); Options[Idx] = KeyPicker; return self; end; BaseAddons.__index = Funcs; BaseAddons.__namecall = function(Table, Key, ...) return Funcs[Key](...); end; end; local BaseGroupbox = {}; do local Funcs = {}; function Funcs:AddBlank(Size) local Groupbox = self; local Container = Groupbox.Container; Library:Create('Frame', { BackgroundTransparency = 1; Size = _UDim2New(1, 0, 0, Size); ZIndex = 1; Parent = Container; }); end; function Funcs:AddLabel(Text, DoesWrap) local Label = {}; local Groupbox = self; local Container = Groupbox.Container; local TextLabel = Library:CreateLabel({ Size = _UDim2New(1, -4, 0, 15); TextSize = 15; Text = Text; TextWrapped = DoesWrap or false, TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 5; Parent = Container; }); if DoesWrap then local Y = _Select(2, Library:GetTextBounds(Text, Library.Font, 15, _Vector2New(TextLabel.AbsoluteSize.X, math.huge))) TextLabel.Size = _UDim2New(1, -4, 0, Y) else Library:Create('UIListLayout', { Padding = _UDimNew(0, 4); FillDirection = Enum.FillDirection.Horizontal; HorizontalAlignment = Enum.HorizontalAlignment.Right; SortOrder = Enum.SortOrder.LayoutOrder; Parent = TextLabel; }); end Label.TextLabel = TextLabel; Label.Container = Container; function Label:SetText(Text) TextLabel.Text = Text if DoesWrap then local Y = _Select(2, Library:GetTextBounds(Text, Library.Font, 15, _Vector2New(TextLabel.AbsoluteSize.X, math.huge))) TextLabel.Size = _UDim2New(1, -4, 0, Y) end Groupbox:Resize(); end if (not DoesWrap) then setmetatable(Label, BaseAddons); end Groupbox:AddBlank(5); Groupbox:Resize(); return Label; end; function Funcs:AddButton(...) -- TODO: Eventually redo this local Button = {}; local function ProcessButtonParams(Class, Obj, ...) local Props = _Select(1, ...) if _Type(Props) == 'table' then Obj.Text = Props.Text Obj.Func = Props.Func Obj.DoubleClick = Props.DoubleClick Obj.Tooltip = Props.Tooltip else Obj.Text = _Select(1, ...) Obj.Func = _Select(2, ...) end assert(_Type(Obj.Func) == 'function', 'AddButton: `Func` callback is missing.'); end ProcessButtonParams('Button', Button, ...) local Groupbox = self; local Container = Groupbox.Container; local function CreateBaseButton(Button) local Outer = Library:Create('Frame', { BackgroundColor3 = _Color3New(0, 0, 0); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Size = _UDim2New(1, -4, 0, 20); ZIndex = 5; }); local Inner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 6; Parent = Outer; }); local Label = Library:CreateLabel({ Size = _UDim2New(1, 0, 1, 0); TextSize = 15; Text = Button.Text; ZIndex = 6; Parent = Inner; }); Library:Create('UIGradient', { Color = _ColorSequenceNew({ _ColorSequenceKeypointNew(0, _Color3New(1, 1, 1)), _ColorSequenceKeypointNew(1, _Color3FromRGB(212, 212, 212)) }); Rotation = 90; Parent = Inner; }); Library:AddToRegistry(Outer, { BorderColor3 = 'Black'; }); Library:AddToRegistry(Inner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); Library:OnHighlight(Outer, Outer, { BorderColor3 = 'AccentColor', BorderSizePixel = 1 }, { BorderColor3 = 'Black', BorderSizePixel = 0 } ); return Outer, Inner, Label end local function InitEvents(Button) local function WaitForEvent(event, timeout, validator) local bindable = _Instancenew('BindableEvent') local connection = event:Once(function(...) if _Type(validator) == 'function' and validator(...) then bindable:Fire(true) else bindable:Fire(false) end end) task.delay(timeout, function() connection:disconnect() bindable:Fire(false) end) return bindable.Event:Wait() end local function ValidateClick(Input) if Library:MouseIsOverOpenedFrame() then return false end if Input.UserInputType ~= Enum.UserInputType.MouseButton1 then return false end return true end Button.Outer.InputBegan:Connect(function(Input) if not ValidateClick(Input) then return end if Button.Locked then return end if Button.DoubleClick then Library:RemoveFromRegistry(Button.Label) Library:AddToRegistry(Button.Label, { TextColor3 = 'AccentColor' }) Button.Label.TextColor3 = Library.AccentColor Button.Label.Text = 'Are you sure?' Button.Locked = true local clicked = WaitForEvent(Button.Outer.InputBegan, 1, ValidateClick) Library:RemoveFromRegistry(Button.Label) Library:AddToRegistry(Button.Label, { TextColor3 = 'FontColor' }) Button.Label.TextColor3 = Library.FontColor Button.Label.Text = Button.Text task.defer(rawset, Button, 'Locked', false) if clicked then Library:SafeCallback(Button.Func) end return end Library:SafeCallback(Button.Func); end) end Button.Outer, Button.Inner, Button.Label = CreateBaseButton(Button) Button.Outer.Parent = Container InitEvents(Button) function Button:AddTooltip(tooltip) if _Type(tooltip) == 'string' then Library:AddToolTip(tooltip, self.Outer) end return self end function Button:AddButton(...) local SubButton = {} ProcessButtonParams('SubButton', SubButton, ...) self.Outer.Size = _UDim2New(0.5, -2, 0, 20) SubButton.Outer, SubButton.Inner, SubButton.Label = CreateBaseButton(SubButton) SubButton.Outer.Position = _UDim2New(1, 3, 0, 0) SubButton.Outer.Size = _UDim2fromOffset(self.Outer.AbsoluteSize.X - 2, self.Outer.AbsoluteSize.Y) SubButton.Outer.Parent = self.Outer function SubButton:AddTooltip(tooltip) if _Type(tooltip) == 'string' then Library:AddToolTip(tooltip, self.Outer) end return SubButton end if _Type(SubButton.Tooltip) == 'string' then SubButton:AddTooltip(SubButton.Tooltip) end InitEvents(SubButton) return SubButton end if _Type(Button.Tooltip) == 'string' then Button:AddTooltip(Button.Tooltip) end Groupbox:AddBlank(5); Groupbox:Resize(); return Button; end; function Funcs:AddDivider() local Groupbox = self; local Container = self.Container local Divider = { Type = 'Divider', } Groupbox:AddBlank(2); local DividerOuter = Library:Create('Frame', { BackgroundColor3 = _Color3New(0, 0, 0); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Size = _UDim2New(1, -4, 0, 5); ZIndex = 5; Parent = Container; }); local DividerInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 6; Parent = DividerOuter; }); Library:AddToRegistry(DividerOuter, { BorderColor3 = 'Black'; }); Library:AddToRegistry(DividerInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); Groupbox:AddBlank(9); Groupbox:Resize(); end function Funcs:AddInput(Idx, Info) assert(Info.Text, 'AddInput: Missing `Text` string.') local Textbox = { Value = Info.Default or ''; Numeric = Info.Numeric or false; Finished = Info.Finished or false; Type = 'Input'; Callback = Info.Callback or function(Value) end; }; local Groupbox = self; local Container = Groupbox.Container; local InputLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 0, 15); TextSize = 15; Text = Info.Text; TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 5; Parent = Container; }); Groupbox:AddBlank(1); local TextBoxOuter = Library:Create('Frame', { BackgroundColor3 = _Color3New(0, 0, 0); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Size = _UDim2New(1, -4, 0, 18); ZIndex = 5; Parent = Container; }); local TextBoxInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 6; Parent = TextBoxOuter; }); Library:AddToRegistry(TextBoxInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); Library:OnHighlight(TextBoxOuter, TextBoxOuter, { BorderColor3 = 'AccentColor' }, { BorderColor3 = 'Black' } ); if _Type(Info.Tooltip) == 'string' then Library:AddToolTip(Info.Tooltip, TextBoxOuter) end Library:Create('UIGradient', { Color = _ColorSequenceNew({ _ColorSequenceKeypointNew(0, _Color3New(1, 1, 1)), _ColorSequenceKeypointNew(1, _Color3FromRGB(212, 212, 212)) }); Rotation = 90; Parent = TextBoxInner; }); local Container = Library:Create('Frame', { BackgroundTransparency = 1; ClipsDescendants = true; Position = _UDim2New(0, 5, 0, 0); Size = _UDim2New(1, -5, 1, 0); ZIndex = 7; Parent = TextBoxInner; }) local Box = Library:Create('TextBox', { BackgroundTransparency = 1; Position = _UDim2fromOffset(0, 0), Size = UDim2.fromScale(5, 1), Font = Library.Font; PlaceholderColor3 = _Color3FromRGB(190, 190, 190); PlaceholderText = Info.Placeholder or ''; Text = Info.Default or ''; TextColor3 = Library.FontColor; TextSize = 15; TextStrokeTransparency = 1; TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 7; Parent = Container; }); function Textbox:SetValue(Text) if Info.MaxLength and #Text > Info.MaxLength then Text = Text:sub(1, Info.MaxLength); end; if Textbox.Numeric then if (not _tonumber(Text)) and Text:len() > 0 then Text = Textbox.Value end end Textbox.Value = Text; Box.Text = Text; Library:SafeCallback(Textbox.Callback, Textbox.Value); Library:SafeCallback(Textbox.Changed, Textbox.Value); end; if Textbox.Finished then Box.FocusLost:Connect(function(enter) if not enter then return end Textbox:SetValue(Box.Text); Library:AttemptSave(); end) else _GetPropertyChangedSignal(Box,'Text'):Connect(function() Textbox:SetValue(Box.Text); Library:AttemptSave(); end); end -- https://devforum.roblox.com/t/how-to-make-textboxes-follow-current-cursor-position/1368429/6 -- thank you nicemike40 :) local function Update() local PADDING = 2 local reveal = Container.AbsoluteSize.X if not Box:IsFocused() or Box.TextBounds.X <= reveal - 2 * PADDING then -- we aren't focused, or we fit so be normal Box.Position = _UDim2New(0, PADDING, 0, 0) else -- we are focused and don't fit, so adjust position local cursor = Box.CursorPosition if cursor ~= -1 then -- calculate pixel width of text from start to cursor local subtext = _StringSub(Box.Text, 1, cursor-1) local width = TextService:GetTextSize(subtext, Box.TextSize, Box.Font, _Vector2New(math.huge, math.huge)).X -- check if we're inside the box with the cursor local currentCursorPos = Box.Position.X.Offset + width -- adjust if necessary if currentCursorPos < PADDING then Box.Position = _UDim2fromOffset(PADDING-width, 0) elseif currentCursorPos > reveal - PADDING - 1 then Box.Position = _UDim2fromOffset(reveal-width-PADDING-1, 0) end end end end _TaskSpawn(Update) _GetPropertyChangedSignal(Box, 'Text'):Connect(Update) _GetPropertyChangedSignal(Box, 'CursorPosition'):Connect(Update) Box.FocusLost:Connect(Update) Box.Focused:Connect(Update) Library:AddToRegistry(Box, { TextColor3 = 'FontColor'; }); function Textbox:OnChanged(Func) Textbox.Changed = Func; Func(Textbox.Value); end; Groupbox:AddBlank(5); Groupbox:Resize(); Options[Idx] = Textbox; return Textbox; end; function Funcs:AddToggle(Idx, Info) assert(Info.Text, 'AddInput: Missing `Text` string.') local Toggle = { Value = Info.Default or false; Type = 'Toggle'; Callback = Info.Callback or function(Value) end; Addons = {}, Risky = Info.Risky, }; local Groupbox = self; local Container = Groupbox.Container; local ToggleOuter = Library:Create('Frame', { BackgroundColor3 = _Color3New(0, 0, 0); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Size = _UDim2New(0, 13, 0, 13); ZIndex = 5; Parent = Container; }); Library:AddToRegistry(ToggleOuter, { BorderColor3 = 'Black'; }); local ToggleInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 6; Parent = ToggleOuter; }); Library:AddToRegistry(ToggleInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); local ToggleLabel = Library:CreateLabel({ Size = _UDim2New(0, 216, 1, 0); Position = _UDim2New(1, 6, 0, 0); TextSize = 15; Text = Info.Text; TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 6; Parent = ToggleInner; }); Library:Create('UIListLayout', { Padding = _UDimNew(0, 4); FillDirection = Enum.FillDirection.Horizontal; HorizontalAlignment = Enum.HorizontalAlignment.Right; SortOrder = Enum.SortOrder.LayoutOrder; Parent = ToggleLabel; }); local ToggleRegion = Library:Create('Frame', { BackgroundTransparency = 1; Size = _UDim2New(0, 170, 1, 0); ZIndex = 8; Parent = ToggleOuter; }); Library:OnHighlight(ToggleRegion, ToggleOuter, { BorderColor3 = 'AccentColor', BorderSizePixel = 1 }, { BorderColor3 = 'Black', BorderSizePixel = 0 } ); function Toggle:UpdateColors() Toggle:Display(); end; if _Type(Info.Tooltip) == 'string' then Library:AddToolTip(Info.Tooltip, ToggleRegion) end function Toggle:Display() ToggleInner.BackgroundColor3 = Toggle.Value and Library.AccentColor or Library.MainColor; ToggleInner.BorderColor3 = Toggle.Value and Library.AccentColorDark or Library.OutlineColor; Library.RegistryMap[ToggleInner].Properties.BackgroundColor3 = Toggle.Value and 'AccentColor' or 'MainColor'; Library.RegistryMap[ToggleInner].Properties.BorderColor3 = Toggle.Value and 'AccentColorDark' or 'OutlineColor'; end; function Toggle:OnChanged(Func) Toggle.Changed = Func; Func(Toggle.Value); end; function Toggle:SetValue(Bool) Bool = (not not Bool); Toggle.Value = Bool; Toggle:Display(); for _, Addon in next, Toggle.Addons do if Addon.Type == 'KeyPicker' and Addon.SyncToggleState then Addon.Toggled = Bool Addon:Update() end end Library:SafeCallback(Toggle.Callback, Toggle.Value); Library:SafeCallback(Toggle.Changed, Toggle.Value); Library:UpdateDependencyBoxes(); end; ToggleRegion.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and not Library:MouseIsOverOpenedFrame() then Toggle:SetValue(not Toggle.Value) -- Why was it not like this from the start? Library:AttemptSave(); end; end); if Toggle.Risky then Library:RemoveFromRegistry(ToggleLabel) ToggleLabel.TextColor3 = Library.RiskColor Library:AddToRegistry(ToggleLabel, { TextColor3 = 'RiskColor' }) end Toggle:Display(); Groupbox:AddBlank(Info.BlankSize or 5 + 2); Groupbox:Resize(); Toggle.TextLabel = ToggleLabel; Toggle.Container = Container; setmetatable(Toggle, BaseAddons); Toggles[Idx] = Toggle; Library:UpdateDependencyBoxes(); return Toggle; end; function Funcs:AddSlider(Idx, Info) assert(Info.Default, 'AddSlider: Missing default value.'); assert(Info.Text, 'AddSlider: Missing slider text.'); assert(Info.Min, 'AddSlider: Missing minimum value.'); assert(Info.Max, 'AddSlider: Missing maximum value.'); assert(Info.Rounding, 'AddSlider: Missing rounding value.'); local Slider = { Value = Info.Default; Min = Info.Min; Max = Info.Max; Rounding = Info.Rounding; MaxSize = 238; Type = 'Slider'; Callback = Info.Callback or function(Value) end; }; local Groupbox = self; local Container = Groupbox.Container; if not Info.Compact then local Label = Library:CreateLabel({ Size = _UDim2New(1, 0, 0, 10); TextSize = 15; Text = Info.Text; TextXAlignment = Enum.TextXAlignment.Left; TextYAlignment = Enum.TextYAlignment.Bottom; ZIndex = 5; Parent = Container; }); local DisplayLabelPlus = Library:CreateLabel({ Size = _UDim2New(0.05, 0, 0, 10); Position = _UDim2New(0.92, 0, 0, 0); TextYAlignment = Enum.TextYAlignment.Bottom; TextSize = 14; Text = '+'; ZIndex = 10; Parent = Label; }); local DisplayLabelMinus = Library:CreateLabel({ Size = _UDim2New(0.05, 0, 0, 10); Position = _UDim2New(0.88,0,0,0); TextYAlignment = Enum.TextYAlignment.Bottom; TextSize = 14; Text = '-'; ZIndex = 10; Parent = Label; }); Library:AddToRegistry(DisplayLabelPlus, { TextColor3 = 'FontColorDark'; }); Library:AddToRegistry(DisplayLabelMinus, { TextColor3 = 'FontColorDark'; }); Library:OnHighlight(DisplayLabelPlus, DisplayLabelPlus, { TextColor3 = 'AccentColor' }, { TextColor3 = 'FontColorDark' } ); Library:OnHighlight(DisplayLabelMinus, DisplayLabelMinus, { TextColor3 = 'AccentColor' }, { TextColor3 = 'FontColorDark' } ); DisplayLabelMinus.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and not Library:MouseIsOverOpenedFrame() then Slider:SetValue(Slider.Value - (Slider.Rounding == 0 and 1 or 1 / (10 ^ Slider.Rounding))) end end) DisplayLabelPlus.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and not Library:MouseIsOverOpenedFrame() then Slider:SetValue(Slider.Value + (Slider.Rounding == 0 and 1 or 1 / (10 ^ Slider.Rounding))) end end) Groupbox:AddBlank(3); end local SliderOuter = Library:Create('Frame', { BackgroundColor3 = _Color3New(0, 0, 0); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Size = _UDim2New(1, -4, 0, 12); ZIndex = 5; Parent = Container; }); Library:AddToRegistry(SliderOuter, { BorderColor3 = 'Black'; }); local SliderInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 6; Parent = SliderOuter; }); Library:AddToRegistry(SliderInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); local Fill = Library:Create('Frame', { BackgroundColor3 = Library.AccentColor; BorderColor3 = Library.AccentColorDark; Size = _UDim2New(0, 0, 1, 0); ZIndex = 7; Parent = SliderInner; }); Library:AddToRegistry(Fill, { BackgroundColor3 = 'AccentColor'; BorderColor3 = 'AccentColorDark'; }); local HideBorderRight = Library:Create('Frame', { BackgroundColor3 = Library.AccentColor; BorderSizePixel = 0; Position = _UDim2New(1, 0, 0, 0); Size = _UDim2New(0, 1, 1, 0); ZIndex = 8; Parent = Fill; }); Library:AddToRegistry(HideBorderRight, { BackgroundColor3 = 'AccentColor'; }); local DisplayLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 1, 0); TextSize = 13; Text = 'Infinite'; ZIndex = 9; Parent = SliderInner; }); Library:OnHighlight(SliderOuter, SliderOuter, { BorderColor3 = 'AccentColor', BorderSizePixel = 1 }, { BorderColor3 = 'Black', BorderSizePixel = 0 } ); if _Type(Info.Tooltip) == 'string' then Library:AddToolTip(Info.Tooltip, SliderOuter) end function Slider:UpdateColors() Fill.BackgroundColor3 = Library.AccentColor; Fill.BorderColor3 = Library.AccentColorDark; end; function Slider:Display() local Suffix = Info.Suffix or ''; if Info.Compact then DisplayLabel.Text = Info.Text .. ': ' .. Slider.Value .. Suffix elseif Info.HideMax then DisplayLabel.Text = _StringFormat('%s', Slider.Value .. Suffix) else DisplayLabel.Text = _StringFormat('%s', Slider.Value .. Suffix) end local X = math.ceil(Library:MapValue(Slider.Value, Slider.Min, Slider.Max, 0, Slider.MaxSize)); Fill.Size = _UDim2New(0, X, 1, 0); HideBorderRight.Visible = not (X == Slider.MaxSize or X == 0); end; function Slider:OnChanged(Func) Slider.Changed = Func; Func(Slider.Value); end; local function Round(Value) if Slider.Rounding == 0 then return _MathFloor(Value); end; return _tonumber(_StringFormat('%.' .. Slider.Rounding .. 'f', Value)) end; function Slider:GetValueFromXOffset(X) return Round(Library:MapValue(X, 0, Slider.MaxSize, Slider.Min, Slider.Max)); end; function Slider:SetValue(Str) local Num = _tonumber(Str); if (not Num) then return; end; if Num < Slider.Min then Num = Slider.Min end if Num > Slider.Max then Num = Slider.Max end Num = _MathClamp(Num, Slider.Min, Slider.Max); Slider.Value = Num; Slider:Display(); Library:SafeCallback(Slider.Callback, Slider.Value); Library:SafeCallback(Slider.Changed, Slider.Value); end; SliderInner.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and not Library:MouseIsOverOpenedFrame() then local mPos = Mouse.X; local gPos = Fill.Size.X.Offset; local Diff = mPos - (Fill.AbsolutePosition.X + gPos); while InputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do local nMPos = Mouse.X; local nX = _MathClamp(gPos + (nMPos - mPos) + Diff, 0, Slider.MaxSize); local nValue = Slider:GetValueFromXOffset(nX); local OldValue = Slider.Value; Slider.Value = nValue; Slider:Display(); if nValue ~= OldValue then Library:SafeCallback(Slider.Callback, Slider.Value); Library:SafeCallback(Slider.Changed, Slider.Value); end; RenderStepped:Wait(); end; Library:AttemptSave(); end; end); Slider:Display(); Groupbox:AddBlank(Info.BlankSize or 6); Groupbox:Resize(); Options[Idx] = Slider; return Slider; end; function Funcs:AddDropdown(Idx, Info) if Info.SpecialType == 'Player' then Info.Values = GetPlayersString(); Info.AllowNull = true; elseif Info.SpecialType == 'Team' then Info.Values = GetTeamsString(); Info.AllowNull = true; end; assert(Info.Values, 'AddDropdown: Missing dropdown value list.'); assert(Info.AllowNull or Info.Default, 'AddDropdown: Missing default value. Pass `AllowNull` as true if this was intentional.') if (not Info.Text) then Info.Compact = true; end local Dropdown = { Values = Info.Values; Value = Info.Multi and {}; Multi = Info.Multi; Type = 'Dropdown'; SpecialType = Info.SpecialType; -- can be either 'Player' or 'Team' Callback = Info.Callback or function(Value) end; }; local Groupbox = self; local Container = Groupbox.Container; local RelativeOffset = 0; if not Info.Compact then local DropdownLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 0, 10); TextSize = 15; Text = Info.Text; TextXAlignment = Enum.TextXAlignment.Left; TextYAlignment = Enum.TextYAlignment.Bottom; ZIndex = 5; Parent = Container; }); Groupbox:AddBlank(3); end for _, Element in next, _GetChildren(Container) do if not _IsA(Element, 'UIListLayout') then RelativeOffset = RelativeOffset + Element.Size.Y.Offset; end; end; local DropdownOuter = Library:Create('Frame', { BackgroundColor3 = _Color3New(0, 0, 0); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Size = _UDim2New(1, -4, 0, 18); ZIndex = 5; Parent = Container; }); Library:AddToRegistry(DropdownOuter, { BorderColor3 = 'Black'; }); local DropdownInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 6; Parent = DropdownOuter; }); Library:AddToRegistry(DropdownInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); Library:Create('UIGradient', { Color = _ColorSequenceNew({ _ColorSequenceKeypointNew(0, _Color3New(1, 1, 1)), _ColorSequenceKeypointNew(1, _Color3FromRGB(212, 212, 212)) }); Rotation = 90; Parent = DropdownInner; }); local DropdownArrow = Library:CreateLabel({ AnchorPoint = _Vector2New(0, 0.5); BackgroundTransparency = 1; Position = _UDim2New(1, -16, 0.5, 0); Size = _UDim2New(0, 12, 0, 12); TextSize = 14; Text = "+"; ZIndex = 8; Parent = DropdownInner; }); local ItemList = Library:CreateLabel({ Position = _UDim2New(0, 5, 0, 0); Size = _UDim2New(1, -5, 1, 0); TextSize = 15; Text = '--'; TextXAlignment = Enum.TextXAlignment.Left; TextWrapped = true; ZIndex = 7; Parent = DropdownInner; }); Library:OnHighlight(DropdownOuter, DropdownOuter, { BorderColor3 = 'AccentColor', BorderSizePixel = 1 }, { BorderColor3 = 'Black', BorderSizePixel = 0 } ); if _Type(Info.Tooltip) == 'string' then Library:AddToolTip(Info.Tooltip, DropdownOuter) end local MAX_DROPDOWN_ITEMS = 8; local ListOuter = Library:Create('Frame', { BackgroundColor3 = _Color3New(0, 0, 0); BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; ZIndex = 20; Visible = false; Parent = ScreenGui; }); local function RecalculateListPosition() ListOuter.Position = _UDim2fromOffset(DropdownOuter.AbsolutePosition.X, DropdownOuter.AbsolutePosition.Y + DropdownOuter.Size.Y.Offset + 1); end; local function RecalculateListSize(YSize) ListOuter.Size = _UDim2fromOffset(DropdownOuter.AbsoluteSize.X, YSize or (MAX_DROPDOWN_ITEMS * 20 + 2)) end; RecalculateListPosition(); RecalculateListSize(); _GetPropertyChangedSignal(DropdownOuter, 'AbsolutePosition'):Connect(RecalculateListPosition); local ListInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; BorderSizePixel = 0; Size = _UDim2New(1, 0, 1, 0); ZIndex = 21; Parent = ListOuter; }); Library:AddToRegistry(ListInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); local Scrolling = Library:Create('ScrollingFrame', { BackgroundTransparency = 1; BorderSizePixel = 0; CanvasSize = _UDim2New(0, 0, 0, 0); Size = _UDim2New(1, 0, 1, 0); ZIndex = 21; Parent = ListInner; TopImage = 'rbxasset://textures/ui/Scroll/scroll-middle.png', BottomImage = 'rbxasset://textures/ui/Scroll/scroll-middle.png', ScrollBarThickness = 3, ScrollBarImageColor3 = Library.AccentColor, }); Library:AddToRegistry(Scrolling, { ScrollBarImageColor3 = 'AccentColor' }) Library:Create('UIListLayout', { Padding = _UDimNew(0, 0); FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; HorizontalAlignment = Enum.HorizontalAlignment.Center; Parent = Scrolling; }); function Dropdown:Display() local Values = Dropdown.Values; local Str = ''; if Info.Multi then for Idx, Value in next, Values do if Dropdown.Value[Value] then Str = Str .. Value .. ', '; end; end; Str = Str:sub(1, #Str - 2); else Str = Dropdown.Value or ''; end; ItemList.Text = (Str == '' and '--' or Str); end; function Dropdown:GetActiveValues() if Info.Multi then local T = {}; for Value, Bool in next, Dropdown.Value do _TableInsert(T, Value); end; return T; else return Dropdown.Value and 1 or 0; end; end; function Dropdown:BuildDropdownList() local Values = Dropdown.Values; local Buttons = {}; for _, Element in next, _GetChildren(Scrolling) do if not _IsA(Element, 'UIListLayout') then _Destroy(Element); end; end; local Count = 0; for Idx, Value in next, Values do local Table = {}; Count = Count + 1; local Button = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Middle; Size = _UDim2New(1, -5, 0, 20); ZIndex = 23; Active = true, Parent = Scrolling; }); Library:AddToRegistry(Button, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); local ButtonLabel = Library:CreateLabel({ Active = false; Size = _UDim2New(1, -6, 1, 0); Position = _UDim2New(0, 6, 0, 0); TextSize = 15; Text = Value; TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 25; Parent = Button; }); Library:OnHighlight(Button, Button, { BorderColor3 = 'AccentColor', ZIndex = 24 }, { BorderColor3 = 'OutlineColor', ZIndex = 23 } ); local Selected; if Info.Multi then Selected = Dropdown.Value[Value]; else Selected = Dropdown.Value == Value; end; function Table:UpdateButton() if Info.Multi then Selected = Dropdown.Value[Value]; else Selected = Dropdown.Value == Value; end; ButtonLabel.TextColor3 = Selected and Library.AccentColor or Library.FontColor; Library.RegistryMap[ButtonLabel].Properties.TextColor3 = Selected and 'AccentColor' or 'FontColor'; end; ButtonLabel.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then local Try = not Selected; if Dropdown:GetActiveValues() == 1 and (not Try) and (not Info.AllowNull) then else if Info.Multi then Selected = Try; if Selected then Dropdown.Value[Value] = true; else Dropdown.Value[Value] = nil; end; else Selected = Try; if Selected then Dropdown.Value = Value; else Dropdown.Value = nil; end; for _, OtherButton in next, Buttons do OtherButton:UpdateButton(); end; end; Table:UpdateButton(); Dropdown:Display(); Library:SafeCallback(Dropdown.Callback, Dropdown.Value); Library:SafeCallback(Dropdown.Changed, Dropdown.Value); Library:AttemptSave(); end; end; end); Table:UpdateButton(); Dropdown:Display(); Buttons[Button] = Table; end; Scrolling.CanvasSize = _UDim2fromOffset(0, (Count * 20) + 1); local Y = _MathClamp(Count * 20, 0, MAX_DROPDOWN_ITEMS * 20) + 1; RecalculateListSize(Y); end; function Dropdown:SetValues(NewValues) if NewValues then Dropdown.Values = NewValues; end; Dropdown:BuildDropdownList(); end; function Dropdown:OpenDropdown() ListOuter.Visible = true; Library.OpenedFrames[ListOuter] = true; DropdownArrow.Text = "-"; end; function Dropdown:CloseDropdown() ListOuter.Visible = false; Library.OpenedFrames[ListOuter] = nil; DropdownArrow.Text = "+"; end; function Dropdown:OnChanged(Func) Dropdown.Changed = Func; Func(Dropdown.Value); end; function Dropdown:SetValue(Val) if Dropdown.Multi then local nTable = {}; for Value, Bool in next, Val do if _TableFind(Dropdown.Values, Value) then nTable[Value] = true end; end; Dropdown.Value = nTable; else if (not Val) then Dropdown.Value = nil; elseif _TableFind(Dropdown.Values, Val) then Dropdown.Value = Val; end; end; Dropdown:BuildDropdownList(); Library:SafeCallback(Dropdown.Callback, Dropdown.Value); Library:SafeCallback(Dropdown.Changed, Dropdown.Value); end; DropdownOuter.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and not Library:MouseIsOverOpenedFrame() then if ListOuter.Visible then Dropdown:CloseDropdown(); else Dropdown:OpenDropdown(); end; end; end); InputService.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then local AbsPos, AbsSize = ListOuter.AbsolutePosition, ListOuter.AbsoluteSize; if Mouse.X < AbsPos.X or Mouse.X > AbsPos.X + AbsSize.X or Mouse.Y < (AbsPos.Y - 20 - 1) or Mouse.Y > AbsPos.Y + AbsSize.Y then Dropdown:CloseDropdown(); end; end; end); Dropdown:BuildDropdownList(); Dropdown:Display(); local Defaults = {} if _Type(Info.Default) == 'string' then local Idx = _TableFind(Dropdown.Values, Info.Default) if Idx then _TableInsert(Defaults, Idx) end elseif _Type(Info.Default) == 'table' then for _, Value in next, Info.Default do local Idx = _TableFind(Dropdown.Values, Value) if Idx then _TableInsert(Defaults, Idx) end end elseif _Type(Info.Default) == 'number' and Dropdown.Values[Info.Default] ~= nil then _TableInsert(Defaults, Info.Default) end if next(Defaults) then for i = 1, #Defaults do local Index = Defaults[i] if Info.Multi then Dropdown.Value[Dropdown.Values[Index]] = true else Dropdown.Value = Dropdown.Values[Index]; end if (not Info.Multi) then break end end Dropdown:BuildDropdownList(); Dropdown:Display(); end Groupbox:AddBlank(Info.BlankSize or 5); Groupbox:Resize(); Options[Idx] = Dropdown; return Dropdown; end; function Funcs:AddDependencyBox() local Depbox = { Dependencies = {}; }; local Groupbox = self; local Container = Groupbox.Container; local Holder = Library:Create('Frame', { BackgroundTransparency = 1; Size = _UDim2New(1, 0, 0, 0); Visible = false; Parent = Container; }); local Frame = Library:Create('Frame', { BackgroundTransparency = 1; Size = _UDim2New(1, 0, 1, 0); Visible = true; Parent = Holder; }); local Layout = Library:Create('UIListLayout', { FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; Parent = Frame; }); function Depbox:Resize() Holder.Size = _UDim2New(1, 0, 0, Layout.AbsoluteContentSize.Y); Groupbox:Resize(); end; _GetPropertyChangedSignal(Layout, 'AbsoluteContentSize'):Connect(function() Depbox:Resize(); end); _GetPropertyChangedSignal(Holder, 'Visible'):Connect(function() Depbox:Resize(); end); local IsNotHidden = true function Depbox:Update() for _, Dependency in next, Depbox.Dependencies do local Elem = Dependency[1]; local Value = Dependency[2]; if Elem.Type == 'Toggle' and Elem.Value ~= Value then Holder.Visible = false; Depbox:Resize(); return; end; end; if IsNotHidden then Holder.Visible = true; Depbox:Resize(); end end; function Depbox:SetupDependencies(Dependencies) for _, Dependency in next, Dependencies do assert(_Type(Dependency) == 'table', 'SetupDependencies: Dependency is not of _Type `table`.'); assert(Dependency[1], 'SetupDependencies: Dependency is missing element argument.'); assert(Dependency[2] ~= nil, 'SetupDependencies: Dependency is missing value argument.'); end; Depbox.Dependencies = Dependencies; Depbox:Update(); end; function Depbox:Show() Holder.Visible = true IsNotHidden = true end function Depbox:Hide() Holder.Visible = false IsNotHidden = false end Depbox.Container = Frame; setmetatable(Depbox, BaseGroupbox); _TableInsert(Library.DependencyBoxes, Depbox); return Depbox; end; BaseGroupbox.__index = Funcs; BaseGroupbox.__namecall = function(Table, Key, ...) return Funcs[Key](...); end; end; do Library.NotificationArea = Library:Create('Frame', { BackgroundTransparency = 1; Position = _UDim2New(0, 0, 0, 40); Size = _UDim2New(0, 300, 0, 200); ZIndex = 100; Parent = ScreenGui; }); Library:Create('UIListLayout', { Padding = _UDimNew(0, 4); FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; Parent = Library.NotificationArea; }); Library.NotificationAreaCenter = Library:Create('Frame', { BackgroundTransparency = 1; AnchorPoint = _Vector2New(0.5,0); Position = _UDim2New(0.5, 0, 0.75, 0); Size = _UDim2New(0, 300, 0, 200); ZIndex = 100; Parent = ScreenGui; }); Library:Create('UIListLayout', { Padding = _UDimNew(0, 4); FillDirection = Enum.FillDirection.Vertical; HorizontalAlignment = Enum.HorizontalAlignment.Center; SortOrder = Enum.SortOrder.LayoutOrder; Parent = Library.NotificationAreaCenter; }); local WatermarkOuter = Library:Create('Frame', { BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Position = _UDim2New(0, 10, 0, 10); Size = _UDim2New(0, 213, 0, 21); ZIndex = 200; Visible = false; Parent = ScreenGui; }); local WatermarkInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderSizePixel = 1; Size = _UDim2New(1, 0, 1, 0); ZIndex = 201; Parent = WatermarkOuter; }); Library:AddToRegistry(WatermarkInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); local InnerFrame = Library:Create('Frame', { BackgroundColor3 = _Color3New(1, 1, 1); BorderSizePixel = 0; BackgroundTransparency = 1; Position = _UDim2New(0, 1, 0, 1); Size = _UDim2New(1, -2, 1, -2); ZIndex = 202; Parent = WatermarkInner; }); local FrameLine = Library:Create('Frame', { BorderColor3 = Library.AccentColor; BackgroundColor3 = Library.AccentColor; BorderSizePixel = 0; Position = _UDim2New(0, -1, 1, 0); Size = _UDim2New(1, 1, 0, 2); ZIndex = 202; Parent = WatermarkInner; }); Library:AddToRegistry(FrameLine, { BorderColor3 = 'AccentColor'; BackgroundColor3 = "AccentColor"; }); -- local WatermarkImage = Library:Create('ImageLabel', { -- Size = _UDim2New(0, 13, 0, 13); -- Position = _UDim2New(0, 5, 0.5, 0); -- AnchorPoint = _Vector2New(0, 0.5); -- Image = "rbxassetid://140198300701593"; -- BackgroundTransparency = 1; -- ZIndex = 203; -- Parent = InnerFrame; -- }); local WatermarkLabel = Library:CreateLabel({ Position = _UDim2New(0, 17, 0, 0); Size = _UDim2New(1, -28, 1, 0); TextSize = 15; RichText = true; TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 203; Parent = InnerFrame; }); Library.Watermark = WatermarkOuter; Library.WatermarkText = WatermarkLabel; Library:MakeDraggable(Library.Watermark); local KeybindOuter = Library:Create('Frame', { BorderSizePixel = 0; Position = _UDim2New(0, 10, 0.5, 0); Size = _UDim2New(0, 210, 0, 20); Visible = false; ZIndex = 100; Parent = ScreenGui; }); local KeybindInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 7); ZIndex = 101; Parent = KeybindOuter; }); local KeybindBackground = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 0, 0); Position = _UDim2New(0, 0, 0, 0); ZIndex = -1; Parent = KeybindOuter; }); Library:AddToRegistry(KeybindInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }, true); Library:AddToRegistry(KeybindBackground, { BorderColor3 = 'OutlineColor'; BackgroundColor3 = "MainColor"; }); local FrameLine2 = Library:Create('Frame', { BorderColor3 = Library.AccentColor; BackgroundColor3 = Library.AccentColor; BorderSizePixel = 0; Position = _UDim2New(0, 0, 0, 24); Size = _UDim2New(1, 0, 0, 2); ZIndex = 202; Parent = KeybindInner; }); Library:AddToRegistry(FrameLine2, { BorderColor3 = 'AccentColor'; BackgroundColor3 = "AccentColor"; }); local KeybindLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 0, 20); Position = _UDim2fromOffset(5, 2), TextXAlignment = Enum.TextXAlignment.Center, Text = 'Keybinds'; ZIndex = 104; Parent = KeybindInner; }); local KeybindContainer = Library:Create('Frame', { BackgroundTransparency = 1; Size = _UDim2New(1, 0, 1, -20); Position = _UDim2New(0, 0, 0, 30); ZIndex = 1; Parent = KeybindInner; }); local KeyListLayout = Library:Create('UIListLayout', { FillDirection = Enum.FillDirection.Vertical; HorizontalAlignment = Enum.HorizontalAlignment.Left; SortOrder = Enum.SortOrder.LayoutOrder; Padding = _UDimNew(0, 5); Parent = KeybindContainer; }); Library:Create('UIPadding', { PaddingLeft = _UDimNew(0, 5), Parent = KeybindContainer, }) Library.KeybindListMode = 1 Library.KeybindBackground = KeybindBackground; Library.KeyUilistlayout = KeyListLayout; Library.KeybindFrame = KeybindOuter; Library.KeybindContainer = KeybindContainer; Library:MakeDraggable(KeybindOuter); local SpecListOuter = Library:Create('Frame', { BorderSizePixel = 0; Position = _UDim2New(1, -220, 0.3, 0); Size = _UDim2New(0, 210, 0, 20); Visible = false; ZIndex = 100; Parent = ScreenGui; }); local SpecListInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 7); ZIndex = 101; Parent = SpecListOuter; }); local SpecListBackground = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 0, 0); Position = _UDim2New(0, 0, 0, 0); ZIndex = -1; Parent = SpecListOuter; }); Library:AddToRegistry(SpecListInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }, true); Library:AddToRegistry(SpecListBackground, { BorderColor3 = 'OutlineColor'; BackgroundColor3 = 'MainColor'; }); local FrameLine3 = Library:Create('Frame', { BorderColor3 = Library.AccentColor; BackgroundColor3 = Library.AccentColor; BorderSizePixel = 0; Position = _UDim2New(0, 0, 0, 24); Size = _UDim2New(1, 0, 0, 2); ZIndex = 202; Parent = SpecListInner; }); Library:AddToRegistry(FrameLine3, { BorderColor3 = 'AccentColor'; BackgroundColor3 = "AccentColor"; }); local SpecListLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 0, 20); Position = _UDim2fromOffset(5, 2), TextXAlignment = Enum.TextXAlignment.Center, Text = 'Spectators List'; ZIndex = 104; Parent = SpecListInner; }); local SpecListContainer = Library:Create('Frame', { BackgroundTransparency = 1; Size = _UDim2New(1, 0, 1, -20); Position = _UDim2New(0, 0, 0, 30); ZIndex = 1; Parent = SpecListInner; }); local ListLayout = Library:Create('UIListLayout', { FillDirection = Enum.FillDirection.Vertical; HorizontalAlignment = Enum.HorizontalAlignment.Left; SortOrder = Enum.SortOrder.LayoutOrder; Padding = _UDimNew(0, 5); Parent = SpecListContainer; }); Library:Create('UIPadding', { PaddingLeft = _UDimNew(0, 5), Parent = SpecListContainer, }) Library.SpecUIlistlayout = ListLayout; Library.SpecListBG = SpecListBackground; Library.SpecListFrame = SpecListOuter; Library.SpecListContainer = SpecListContainer; Library:MakeDraggable(SpecListOuter); end; local PlayersContainerLabels = {} function Library:UpdateSpecList(Players) local YSize = 0 local XSize = 0 for i, v in next, PlayersContainerLabels do v.Visible = false Library.RegistryMap[v].Properties.TextColor3 = 'FontColor' end for i, v in next, Players do if not PlayersContainerLabels[v] then PlayersContainerLabels[v] = Library:CreateLabel({ TextXAlignment = Enum.TextXAlignment.Center; Size = _UDim2New(1, 0, 0, 18); TextSize = 14; Visible = false; ZIndex = 110; TextColor3 = Library.FontColor; Text = v; Parent = Library.SpecListContainer; }, true); Library.RegistryMap[PlayersContainerLabels[v]].Properties.TextColor3 = 'FontColor' end PlayersContainerLabels[v].Visible = true end for _, Label in next, _GetChildren(Library.SpecListContainer) do if _IsA(Label, 'TextLabel') and Label.Visible then YSize = YSize + Label.AbsoluteSize.Y + Library.SpecUIlistlayout.Padding.Offset if (Label.TextBounds.X > XSize) then XSize = Label.TextBounds.X end end end if Toggles.Spectator_List.Value then if YSize == 0 then Library.SpecListBG.Size = _UDim2New(1, 0, 0, 0) Library.SpecListBG.BackgroundTransparency = 1 if Toggles.Speclist_dynamic.Value then if getgenv().ToggleMenu == true then Library.SpecListFrame.Visible = true else Library.SpecListFrame.Visible = false end end else Library.SpecListBG.Size = _UDim2New(0, _MathMax(XSize + 20, 210), 0, YSize + 30) Library.SpecListBG.BackgroundTransparency = 0 Library.SpecListFrame.Visible = true end end end function Library:SetSpecListVisibility(Bool) Library.SpecListFrame.Visible = Bool; end function Library:SetWatermarkVisibility(Bool) Library.Watermark.Visible = Bool; end; function Library:SetKeyListVisibility(Bool) Library.KeybindFrame.Visible = Bool; end; local function removeHtmlTags(str) return _StringGsub(str, "<.->", "") end function Library:SetWatermark(Text) local X, Y = Library:GetTextBounds(removeHtmlTags(Text), Library.Font, 15); Library.Watermark.Size = _UDim2New(0, X + 18, 0, (Y * 1.5) + 0); Library.WatermarkText.Text = Text; end; function Library:Notify(Text, Time, Parent) local XSize, YSize = Library:GetTextBounds(Text, Library.Font, 15); YSize = (YSize * 1.5) + 3 local NotifyOuter = Library:Create('Frame', { Position = _UDim2New(0, 100, 0, 10); BorderColor3 = _Color3New(0,0,0); Size = _UDim2New(0, 0, 0, YSize); ClipsDescendants = true; ZIndex = 100; Parent = Library.NotificationArea; }); if _StringLower(_tostring(Parent)) == "center" then NotifyOuter.Parent = Library.NotificationAreaCenter end local NotifyInner = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 1, 0); ZIndex = 101; Parent = NotifyOuter; }); Library:AddToRegistry(NotifyInner, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }, true); local InnerFrame = Library:Create('Frame', { BackgroundColor3 = _Color3New(1, 1, 1); BorderSizePixel = 0; Position = _UDim2New(0, 1, 0, 1); Size = _UDim2New(1, -2, 1, -2); ZIndex = 102; Parent = NotifyInner; }); local Gradient = Library:Create('UIGradient', { Color = _ColorSequenceNew({ _ColorSequenceKeypointNew(0, Library:GetDarkerColor(Library.MainColor)), _ColorSequenceKeypointNew(1, Library.MainColor), }); Rotation = -90; Parent = InnerFrame; }); Library:AddToRegistry(Gradient, { Color = function() return _ColorSequenceNew({ _ColorSequenceKeypointNew(0, Library:GetDarkerColor(Library.MainColor)), _ColorSequenceKeypointNew(1, Library.MainColor), }); end }); local NotifyLabel = Library:CreateLabel({ Position = _UDim2New(0, 3, 0, 1); Size = _UDim2New(1, -4, 1, -1); Text = Text; TextXAlignment = Enum.TextXAlignment.Left; TextSize = 15; ZIndex = 103; Parent = InnerFrame; }); local TopColor = Library:Create('Frame', { BackgroundColor3 = Library.AccentColor; BorderSizePixel = 0; Position = _UDim2New(0, 1, 0, 1); Size = _UDim2New(1, -2, 0, 2); ZIndex = 104; Parent = NotifyOuter; }); Library:AddToRegistry(TopColor, { BackgroundColor3 = 'AccentColor'; }, true); _Pcall(NotifyOuter.TweenSize, NotifyOuter, _UDim2New(0, XSize + 12, 0, YSize), 'Out', 'Quad', 0.5, true); _TaskSpawn(function() _Wait(Time or 5); _Pcall(NotifyOuter.TweenSize, NotifyOuter, _UDim2New(0, 0, 0, YSize), 'Out', 'Quad', 0.5, true); _Wait(0.5) _Destroy(NotifyOuter); end); end; function Library:CreateWindow(...) local Arguments = { ... } local Config = { AnchorPoint = Vector2.zero } if _Type(...) == 'table' then Config = ...; else Config.Title = Arguments[1] Config.AutoShow = Arguments[2] or false; end if _Type(Config.Title) ~= 'string' then Config.Title = 'No title' end if _Type(Config.TabPadding) ~= 'number' then Config.TabPadding = 0 end if _Type(Config.MenuFadeTime) ~= 'number' then Config.MenuFadeTime = 0.2 end if typeof(Config.Position) ~= 'UDim2' then Config.Position = _UDim2fromOffset(175, 50) end if typeof(Config.Size) ~= 'UDim2' then Config.Size = _UDim2fromOffset(801, 600) end if typeof(Config.Color) ~= 'Color3' then Config.Color = Library.FontColor end if Config.Center then Config.AnchorPoint = _Vector2New(0.5, 0.5) Config.Position = UDim2.fromScale(0.5, 0.5) end local Window = { Tabs = {}; TabButtons = {}; }; local Outer = Library:Create('Frame', { AnchorPoint = Config.AnchorPoint, BackgroundColor3 = Library.OutlineColor; BorderSizePixel = 0; BorderMode = Enum.BorderMode.Outline; Position = Config.Position, Size = Config.Size, Visible = false; ZIndex = 1; Parent = ScreenGui; }); Window.MainFrame = Outer local Outer2 = Library:Create('Frame', { AnchorPoint = Config.AnchorPoint, BackgroundColor3 = Library.MainColor; BorderSizePixel = 0; BorderMode = Enum.BorderMode.Inset; Position = Config.Position, Size = Config.Size, Visible = false; ZIndex = 0; Parent = ScreenGui; }); Library:MakeDraggable(Outer, 25, Outer2); local Inner = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; -- sirex: why is it Library.Background :WHAT: BorderColor3 = Library.OutlineColor; BorderSizePixel = 1; BorderMode = Enum.BorderMode.Outline; Position = _UDim2New(0, 1, 0, 1); Size = _UDim2New(1, -2, 1, -2); ZIndex = 1; Parent = Outer; }); local WindowGlow = Library:Create('ImageLabel', { ImageColor3 = Library.AccentColor; BackgroundTransparency = 1; AnchorPoint = _Vector2New(0.5, 0.5); Size = _UDim2New(0, 849, 0, 650); Position = _UDim2New(0.5, 0, 0.5, 0); BorderSizePixel = 0; Visible = false; ZIndex = -90; Image = "rbxassetid://73863974528152"; Parent = Outer; }); Library:AddToRegistry(Inner, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); Library:AddToRegistry(Outer, { BackgroundColor3 = 'OutlineColor'; }); Library:AddToRegistry(WindowGlow, { ImageColor3 = 'AccentColor'; }); Library:AddToRegistry(Outer2, { BackgroundColor3 = 'OutlineColor'; }); local WindowLabel = Library:CreateLabel({---- window name Position = _UDim2New(0.5, 0, 0, 0); RichText = true; Size = _UDim2New(0, 0, 0, 25); TextColor3 = Config.Color; Text = Config.Title or ''; TextXAlignment = Enum.TextXAlignment.Center; ZIndex = 1; TextSize = 18, Parent = Inner; }); local MainSectionOuter = Library:Create('Frame', { BackgroundColor3 = _Color3FromRGB(255, 0, 0); BorderSizePixel = 0; Position = _UDim2New(0, 8, 0, 25); Size = _UDim2New(1, -16, 1, -33); ZIndex = 1; Parent = Inner; }); --[[Library:AddToRegistry(MainSectionOuter, { BackgroundColor3 = 'BackgroundColor'; });]] local MainSectionInner = Library:Create('Frame', { BackgroundColor3 = _Color3FromRGB(255, 0, 0); BorderSizePixel = 0; Position = _UDim2New(0, 0, 0, 0); Size = _UDim2New(1, 0, 1, 0); ZIndex = 1; Parent = MainSectionOuter; }); --[[[Library:AddToRegistry(MainSectionInner, { BackgroundColor3 = 'BackgroundColor'; });]] local TabArea = Library:Create('Frame', { BackgroundTransparency = 0; BorderSizePixel = 1; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Outline; Position = _UDim2New(0, 0, 0, 0); Size = _UDim2New(1, 0, 0, 28); ZIndex = 1; Parent = MainSectionInner; }); Library:AddToRegistry(TabArea, { BorderColor3 = 'OutlineColor'; }); local TabListLayout = Library:Create('UIListLayout', { Padding = _UDimNew(0, Config.TabPadding); FillDirection = Enum.FillDirection.Horizontal; HorizontalAlignment = Enum.HorizontalAlignment.Center; SortOrder = Enum.SortOrder.LayoutOrder; Parent = TabArea; }); local TabContainer = Library:Create('Frame', { AnchorPoint = _Vector2New(0.5, 0.5); BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.OutlineColor; Position = _UDim2New(0.5, 0, 0.5, 14); Size = _UDim2New(1, 0, 1, -30); ZIndex = 2; Parent = MainSectionInner; }); Library:AddToRegistry(TabContainer, { BackgroundColor3 = 'MainColor'; BorderColor3 = 'OutlineColor'; }); Library.WindowGlow = WindowGlow function Library:SetGlowVis(Bool) Library.WindowGlow.Visible = Bool; end; function Window:SetWindowTitle(Title) WindowLabel.Text = Title; end; function Window:AddTab(Name) local Tab = { Groupboxes = {}; Tabboxes = {}; }; -- local TabButtonWidth = Library:GetTextBounds(Name, Library.Font, 16); local TabButton = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.OutlineColor; BorderSizePixel = 1; Size = _UDim2New(0, 8, 1, 0); ZIndex = 1; Parent = TabArea; }); _TableInsert(Window.TabButtons, TabButton) for i, v in next, Window.TabButtons do v.Size = _UDim2New(1/#Window.TabButtons, -Config.TabPadding, 1, 0) end Library:AddToRegistry(TabButton, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); local TabButtonLabel = Library:CreateLabel({ Position = _UDim2New(0, 0, 0, 0); Size = _UDim2New(1, 0, 1, -1); Text = Name; ZIndex = 1; TextSize = 14; Parent = TabButton; }); Library:AddToRegistry(TabButtonLabel, { TextColor3 = 'FontColorDark'; }); local Blocker = Library:Create('Frame', { BackgroundColor3 = Library.MainColor; BorderSizePixel = 0; Position = _UDim2New(0, 0, 1, 0); Size = _UDim2New(1, 0, 0, 2); BackgroundTransparency = 1; ZIndex = 3; Parent = TabButton; }); Library:AddToRegistry(Blocker, { BackgroundColor3 = 'MainColor'; }); local TabFrame = Library:Create('Frame', { Name = 'TabFrame', BackgroundTransparency = 1; Position = _UDim2New(0, 0, 0, 0); Size = _UDim2New(1, 0, 1, 0); Visible = false; ZIndex = 2; Parent = TabContainer; }); Tab.MainFrame = TabFrame local LeftSide = Library:Create('ScrollingFrame', { BackgroundTransparency = 1; BorderSizePixel = 0; Position = _UDim2New(0, 8 - 1, 0, 8 - 1); Size = _UDim2New(0.33525, -12 + 2, 0, 507 + 12); CanvasSize = _UDim2New(0, 0, 0, 0); BottomImage = ''; TopImage = ''; ScrollBarThickness = 0; ZIndex = 2; Parent = TabFrame; }); local CenterSide = Library:Create('ScrollingFrame', { BackgroundTransparency = 1; BorderSizePixel = 0; Position = _UDim2New(0.3325, 4 + 1, 0, 8 - 1); Size = _UDim2New(0.33525, -12 + 2, 0, 507 + 12); CanvasSize = _UDim2New(0, 0, 0, 0); BottomImage = ''; TopImage = ''; ScrollBarThickness = 0; ZIndex = 2; Parent = TabFrame; }); local RightSide = Library:Create('ScrollingFrame', { BackgroundTransparency = 1; BorderSizePixel = 0; Position = _UDim2New(0.664, 4 + 1, 0, 8 - 1); Size = _UDim2New(0.33525, -12 + 2, 0, 507 + 12); CanvasSize = _UDim2New(0, 0, 0, 0); BottomImage = ''; TopImage = ''; ScrollBarThickness = 0; ZIndex = 2; Parent = TabFrame; }); Library:Create('UIListLayout', { Padding = _UDimNew(0, 8); FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; HorizontalAlignment = Enum.HorizontalAlignment.Center; Parent = LeftSide; }); Library:Create('UIListLayout', { Padding = _UDimNew(0, 8); FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; HorizontalAlignment = Enum.HorizontalAlignment.Center; Parent = RightSide; }); Library:Create('UIListLayout', { Padding = _UDimNew(0, 8); FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; HorizontalAlignment = Enum.HorizontalAlignment.Center; Parent = CenterSide; }); for _, Side in next, { LeftSide, RightSide, CenterSide } do _GetPropertyChangedSignal(Side:WaitForChild('UIListLayout'), 'AbsoluteContentSize'):Connect(function() Side.CanvasSize = _UDim2fromOffset(0, Side.UIListLayout.AbsoluteContentSize.Y); end); end; function Tab:ShowTab() ------ showing tab for _, Tab in next, Window.Tabs do Tab:HideTab(); end; Blocker.BackgroundTransparency = 0; TabButton.BackgroundColor3 = Library.MainColor; Library.RegistryMap[TabButton].Properties.BackgroundColor3 = 'MainColor'; TabButtonLabel.TextColor3 = Library.AccentColor; Library.RegistryMap[TabButtonLabel].Properties.TextColor3 = 'AccentColor'; TabFrame.Visible = true; end; function Tab:HideTab() Blocker.BackgroundTransparency = 1; TabButton.BackgroundColor3 = Library.BackgroundColor; Library.RegistryMap[TabButton].Properties.BackgroundColor3 = 'BackgroundColor'; TabButtonLabel.TextColor3 = Library.FontColorDark Library.RegistryMap[TabButtonLabel].Properties.TextColor3 = 'FontColorDark'; TabFrame.Visible = false; end; function Tab:SetLayoutOrder(Position) TabButton.LayoutOrder = Position; TabListLayout:ApplyLayout(); end; function Tab:AddGroupbox(Info) local Groupbox = {}; local BoxOuter = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.BorderColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 0, 507 + 2); ZIndex = 2; Parent = Info.Side == 1 and LeftSide or Info.Side == 3 and CenterSide or RightSide; }); Library:AddToRegistry(BoxOuter, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); local BoxInner = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; -- BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, -2, 1, -2); Position = _UDim2New(0, 1, 0, 1); ZIndex = 4; Parent = BoxOuter; }); Library:AddToRegistry(BoxInner, { BackgroundColor3 = 'BackgroundColor'; }); local Highlight = Library:Create('Frame', { BackgroundColor3 = _Color3FromRGB(255,255,255); BackgroundTransparency = 0.9; BorderSizePixel = 0; Position = _UDim2New(0, 4, 0, 32 - 4); Size = _UDim2New(0.96, 0, 0, 1); ZIndex = 5; Parent = BoxInner; }); local GroupboxLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 0, 18); Position = _UDim2New(0, 6, 0, 5); TextColor3 = Library.AccentColor; TextSize = 14; Text = Info.Name; TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 5; Parent = BoxInner; }); Library:AddToRegistry(GroupboxLabel, { TextColor3 = 'AccentColor'; }); local Container = Library:Create('Frame', { BackgroundTransparency = 1; Position = _UDim2New(0, 4, 0, 40-4); Size = _UDim2New(1, -4, 2, -40); ZIndex = 1; Parent = BoxInner; }); Library:Create('UIListLayout', { FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; Parent = Container; }); function Groupbox:Resize() local Size = 0; for _, Element in next, _GetChildren(Groupbox.Container) do if (not _IsA(Element, 'UIListLayout')) and Element.Visible then Size = Size + Element.Size.Y.Offset; end; end; BoxOuter.Size = _UDim2New(1, 0, 0, 20 + Size + 2 + 22 - 4); end; Groupbox.Container = Container; setmetatable(Groupbox, BaseGroupbox); Groupbox:AddBlank(3); Groupbox:Resize(); Tab.Groupboxes[Info.Name] = Groupbox; return Groupbox; end; function Tab:AddLeftGroupbox(Name) return Tab:AddGroupbox({ Side = 1; Name = Name; }); end; function Tab:AddCenterGroupbox(Name) return Tab:AddGroupbox({ Side = 3; Name = Name; }); end; function Tab:AddRightGroupbox(Name) return Tab:AddGroupbox({ Side = 2; Name = Name; }); end; function Tab:AddTabbox(Info) local Tabbox = { Tabs = {}; }; local BoxOuter = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = Library.OutlineColor; BorderMode = Enum.BorderMode.Inset; Size = _UDim2New(1, 0, 0, 509); ZIndex = 2; Parent = Info.Side == 1 and LeftSide or Info.Side == 3 and CenterSide or RightSide; }); Library:AddToRegistry(BoxOuter, { BackgroundColor3 = 'BackgroundColor'; BorderColor3 = 'OutlineColor'; }); local BoxInner = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = _Color3New(0, 0, 0); -- BorderMode = Enum.BorderMode.Inset; BorderSizePixel = 0; Size = _UDim2New(1, -2, 1, -2); Position = _UDim2New(0, 1, 0, 1); ZIndex = 4; Parent = BoxOuter; }); Library:AddToRegistry(BoxInner, { BackgroundColor3 = 'BackgroundColor'; }); local TabboxTitle = Library:CreateLabel({ Size = _UDim2New(1, 0, 0, 18); Position = _UDim2New(0, 6, 0, 5); TextColor3 = Library.AccentColor; TextSize = 14; Text = Info.Title or "Tabbox Title"; TextXAlignment = Enum.TextXAlignment.Left; ZIndex = 5; Parent = BoxInner; }); Library:AddToRegistry(TabboxTitle, { TextColor3 = 'AccentColor'; }); local Highlight = Library:Create('Frame', { BackgroundColor3 = _Color3FromRGB(255,255,255); BackgroundTransparency = 0.9; BorderSizePixel = 0; Position = _UDim2New(0, 4, 0, 28); Size = _UDim2New(0.96, 0, 0, 1); ZIndex = 10; Parent = BoxInner; }); local TabboxButtons = Library:Create('Frame', { BackgroundTransparency = 1; Position = _UDim2New(0, 0, 0, 35 - 4); Size = _UDim2New(1, 0, 0, 18); ZIndex = 5; Parent = BoxInner; }); Library:Create('UIListLayout', { FillDirection = Enum.FillDirection.Horizontal; HorizontalAlignment = Enum.HorizontalAlignment.Left; SortOrder = Enum.SortOrder.LayoutOrder; Parent = TabboxButtons; }); function Tabbox:AddTab(Name) local Tab = {}; local TextSizeX, _ = Library:GetTextBounds(Name, Library.Font, 14); local Button = Library:Create('Frame', { BackgroundColor3 = Library.BackgroundColor; BorderColor3 = _Color3New(0, 0, 0); BorderSizePixel = 0; Size = _UDim2New(0, TextSizeX + 10, 1, 0); ZIndex = 6; Parent = TabboxButtons; }); Library:AddToRegistry(Button, { BackgroundColor3 = 'BackgroundColor'; }); local ButtonLabel = Library:CreateLabel({ Size = _UDim2New(1, 0, 1, 0); TextSize = 14; Text = Name; TextXAlignment = Enum.TextXAlignment.Center; ZIndex = 7; Parent = Button; }); Library:AddToRegistry(ButtonLabel, { TextColor3 = 'FontColorDark'; }); local Underline = Library:Create('Frame', { BackgroundColor3 = Library.AccentColor; BorderSizePixel = 0; Position = _UDim2New(0.5, -TextSizeX / 2, 1, -1); Size = _UDim2New(0, TextSizeX, 0, 2); Visible = false; ZIndex = 9; Parent = Button; }); Library:AddToRegistry(Underline, { BackgroundColor3 = 'AccentColor'; }); local Container = Library:Create('Frame', { BackgroundTransparency = 1; Position = _UDim2New(0, 4, 0, 60 - 4); Size = _UDim2New(1, -4, 1, -40); ZIndex = 1; Visible = false; Parent = BoxInner; }); Library:Create('UIListLayout', { FillDirection = Enum.FillDirection.Vertical; SortOrder = Enum.SortOrder.LayoutOrder; Parent = Container; }); function Tab:Show() for _, Tab in next, Tabbox.Tabs do Tab:Hide(); end; Container.Visible = true; Underline.Visible = true; ButtonLabel.TextColor3 = Library.FontColor Library.RegistryMap[ButtonLabel].Properties.TextColor3 = 'FontColor'; Tab:Resize(); end; function Tab:Hide() Container.Visible = false; Underline.Visible = false; ButtonLabel.TextColor3 = Library.FontColorDark Library.RegistryMap[ButtonLabel].Properties.TextColor3 = 'FontColorDark'; end; function Tab:Resize() local TabCount = 0; if (not Container.Visible) then return; end; local Size = 0; for _, Element in next, _GetChildren(Tab.Container) do if (not _IsA(Element, 'UIListLayout')) and Element.Visible then Size = Size + Element.Size.Y.Offset; end; end; BoxOuter.Size = _UDim2New(1, 0, 0, 20 + Size + 2 + 40 - 4); end; Button.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 and not Library:MouseIsOverOpenedFrame() then Tab:Show(); Tab:Resize(); end; end); Tab.Container = Container; Tabbox.Tabs[Name] = Tab; setmetatable(Tab, BaseGroupbox); Tab:AddBlank(3); Tab:Resize(); -- Show first tab (number is 2 cus of the UIListLayout that also sits in that instance) if #_GetChildren(TabboxButtons) == 2 then Tab:Show(); end; return Tab; end; Tab.Tabboxes[Info.Name or ''] = Tabbox; return Tabbox; end; function Tab:AddLeftTabbox(Title) return Tab:AddTabbox({ Title = Title, Side = 1; }); end; function Tab:AddCenterTabbox(Title) return Tab:AddTabbox({ Title = Title, Side = 3; }); end; function Tab:AddRightTabbox(Title) return Tab:AddTabbox({ Title = Title, Side = 2; }); end; TabButton.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then Tab:ShowTab(); end; end); -- This was the first tab added, so we show it by default. if #_GetChildren(TabContainer) == 1 then Tab:ShowTab(); end; Window.Tabs[Name] = Tab; return Tab; end; local ModalElement = Library:Create('TextButton', { BackgroundTransparency = 1; Size = _UDim2New(0, 0, 0, 0); Visible = true; Text = ''; Modal = false; Parent = ScreenGui; }); local TransparencyCache = {}; local ConnectionCache = {}; local Toggled = false; local Fading = false; getgenv().ToggleMenu = Toggled function Library:Toggle() if Fading then return; end; local FadeTime = Config.MenuFadeTime; Fading = true; Toggled = (not Toggled); ModalElement.Modal = Toggled; getgenv().ToggleMenu = Toggled if Toggled then -- A bit scuffed, but if we're going from not toggled -> toggled we want to show the frame immediately so that the fade is visible. Outer.Visible = true; _TaskSpawn(function() -- TODO: add cursor fade? local State = InputService.MouseIconEnabled; local State2 = InputService.MouseBehavior; local Cursor = Drawing.new('Triangle'); Cursor.Thickness = 1; Cursor.Filled = true; Cursor.Visible = true; local CursorOutline = Drawing.new('Triangle'); CursorOutline.Thickness = 1; CursorOutline.Filled = false; CursorOutline.ZIndex = 2 CursorOutline.Color = _Color3New(0, 0, 0); CursorOutline.Visible = true; local BoxFill = Drawing.new("Square") BoxFill.Thickness = 1; BoxFill.Filled = true; BoxFill.Color = _Color3New(0, 0, 0); BoxFill.Visible = true; BoxFill.Size = _Vector2New(6,6) local BoxFill2 = Drawing.new("Square") BoxFill2.Thickness = 1; BoxFill2.Filled = true; BoxFill2.Color = _Color3New(0, 0, 0); BoxFill2.Visible = true; BoxFill2.Size = _Vector2New(10,4) local BoxFill3 = Drawing.new("Square") BoxFill3.Thickness = 1; BoxFill3.Filled = true; BoxFill3.Color = _Color3New(0, 0, 0); BoxFill3.Visible = true; BoxFill3.Size = _Vector2New(4,5) local BoxFill4 = Drawing.new("Square") BoxFill4.Thickness = 1; BoxFill4.Filled = true; BoxFill4.Color = _Color3New(0, 0, 0); BoxFill4.Visible = true; BoxFill4.Size = _Vector2New(4,4) while Toggled and not Library.Unloaded do InputService.MouseIconEnabled = false; InputService.MouseBehavior = Enum.MouseBehavior.Default local mPos = _GetMouseLocation(InputService); Cursor.Color = Library.AccentColor; BoxFill.Color = Library.AccentColor BoxFill.Position = mPos + _Vector2New(3,3) BoxFill2.Color = Library.AccentColor BoxFill2.Position = mPos + _Vector2New(3,5) BoxFill3.Color = Library.AccentColor BoxFill3.Position = mPos + _Vector2New(5,8) BoxFill4.Color = Library.AccentColor BoxFill4.Position = mPos + _Vector2New(7,7) local outerA = _Vector2New(mPos.X, mPos.Y) local outerB = _Vector2New(mPos.X + 16, mPos.Y + 6) local outerC = _Vector2New(mPos.X + 6, mPos.Y + 16) CursorOutline.PointA = outerA CursorOutline.PointB = outerB CursorOutline.PointC = outerC local centroid = (outerA + outerB + outerC) / 3 Cursor.PointA = (centroid + (outerA - centroid) * 0.7) Cursor.PointB = (centroid + (outerB - centroid) * 0.7) + _Vector2New(2,1) Cursor.PointC = (centroid + (outerC - centroid) * 0.7) + _Vector2New(1,2) RenderStepped:Wait(); end; InputService.MouseIconEnabled = State; InputService.MouseBehavior = State2 Cursor:Remove(); CursorOutline:Remove(); BoxFill:Remove() BoxFill2:Remove() BoxFill3:Remove() BoxFill4:Remove() end); else for Frame, Val in next, Library.OpenedFrames do Frame.Visible = false; Library.OpenedFrames[Frame] = nil; end; end; Outer.Visible = Toggled; Fading = false; end Library:GiveSignal(InputService.InputBegan:Connect(function(Input, Processed) if _Type(Library.ToggleKeybind) == 'table' and Library.ToggleKeybind.Type == 'KeyPicker' then if Input.UserInputType == Enum.UserInputType.Keyboard and Input.KeyCode.Name == Library.ToggleKeybind.Value then _TaskSpawn(Library.Toggle) end elseif Input.KeyCode == Enum.KeyCode.RightControl or (Input.KeyCode == Enum.KeyCode.RightShift and (not Processed)) then _TaskSpawn(Library.Toggle) end end)) if Config.AutoShow then _TaskSpawn(Library.Toggle) end Window.Holder = Outer; return Window; end; local function OnPlayerChange() local PlayerList = GetPlayersString(); for _, Value in next, Options do if Value.Type == 'Dropdown' and Value.SpecialType == 'Player' then Value:SetValues(PlayerList); end; end; end; Library:AddSignal(Players.PlayerAdded, OnPlayerChange) Library:AddSignal(Players.PlayerRemoving, OnPlayerChange) getgenv().Library = Library local function ConnectKeyPickerToToggle(toggle, keypicker) local Toggle = Toggles[toggle] local Keypicker = Options[keypicker] if Toggle and Keypicker and Keypicker.ConnectedToggles then _TableInsert(Keypicker.ConnectedToggles, Toggle) end end getgenv().ConnectKeyPickerToToggle = ConnectKeyPickerToToggle end local Library = getgenv().Library local ThemeManager = getgenv().ThemeManager local SaveManager = getgenv().SaveManager local EspPreviewManager = getgenv().EspPreviewManager local Toggles = getgenv().Toggles local Options = getgenv().Options local Flags = getgenv().Flags local RavenENV = { Watermark = { ["Fps"] = 1; ["StoredFps"] = 1; ["Ping"] = 0; ["Delta"] = 1; ["RefreshRate"] = _Tick(); }, Utility = {}, Cache = { Client = getsenv(_FindFirstChild(LocalPlayer, "PlayerGui").Client), HitModifiers = { ["Head"] = 4, ["FakeHead"] = 4, ["HeadHB"] = 4, ["UpperTorso"] = 1, ["LowerTorso"] = 1.25, ["LeftUpperArm"] = 1, ["LeftLowerArm"] = 1, ["LeftHand"] = 1, ["RightUpperArm"] = 1, ["RightLowerArm"] = 1, ["RightHand"] = 1, ["LeftUpperLeg"] = 0.75, ["LeftLowerLeg"] = 0.75, ["LeftFoot"] = 0.75, ["RightUpperLeg"] = 0.75, ["RightLowerLeg"] = 0.75, ["RightFoot"] = 0.75, ["ForwardTrack"] = 1, ["BackTrack"] = 1, }, hitgroups = { ["Head"] = {"Head"}, ["Chest"] = {"UpperTorso"}, ["Pelvis"] = {"LowerTorso"}, ["Arms"] = {"LeftLowerArm", "RightLowerArm", "LeftUpperArm", "RightUpperArm"}, ["Legs"] = {"LeftLowerLeg", "LeftUpperLeg", "RightLowerLeg", "RightUpperLeg"}, ["Feet"] = {"LeftFoot", "RightFoot"} }, TracerTextures = { ["None"] = "rbxassetid://0", ["Lighting"] = "rbxassetid://7216850022", ["Laser"] = "rbxassetid://7136858729", ["Twisted Energy"] = "rbxassetid://7071778278", ["Anime Lazer"] = "rbxassetid://17441065350", ["Interstellar"] = "rbxassetid://128372145766358", ["Arrow"] = "rbxassetid://1274378728", ["Minecraft"] = "rbxassetid://152410036", ["Alien Energy Ray"] = "rbxassetid://6091341618", ["Energy Ray"] = "rbxassetid://13832105797", ["Matrix"] = "rbxassetid://15097610754", ["Cartoony Eletric"] = "rbxassetid://18722421816" }, MaterialNames = (function() local tbl = {} for i, v in next, Enum.Material:GetEnumItems() do _TableInsert(tbl, v.Name) end return tbl end)(), }, RageBot = { Target = { TargetPosition = nil, Origin = nil, CryptedPosition = nil, HitName = nil, TargetPlayer = nil, Damage = nil, DamageMultiplayer = nil, Hit = nil }, }, Visuals = {}, Movement = {}, AntiAim = {}, Calculations = {}, PlayerModule = {}, Misc = {}, Esp = {}, } local Watermark = RavenENV.Watermark local RageBot = RavenENV.RageBot local Cache = RavenENV.Cache local AntiAim = RavenENV.AntiAim local PlayerModule = RavenENV.PlayerModule local Visuals = RavenENV.Visuals local Utility = RavenENV.Utility local Movement = RavenENV.Movement local Misc = RavenENV.Misc local Calculations = RavenENV.Calculations local Esp = RavenENV.Esp local Window = Library:CreateWindow({ Title = "Aurora.pw", Center = true, AutoShow = true, TabPadding = 0, MenuFadeTime = 0 }) local forcefieldAnimations = {["Off"] = "rbxassetid://0",["Web"] = "rbxassetid://301464986",["Scan"] = "rbxassetid://5843010904",["Swirl"] = "rbxassetid://8133639623",["Checkerboard"] = "rbxassetid://5790215150",["Christmas"] = "rbxassetid://6853532738",["Player"] = "rbxassetid://4494641460",["Shield"] = "rbxassetid://361073795",["Dots"] = "rbxassetid://5830615971",["Bubbles"] = "rbxassetid://1461576423",["Matrix"] = "rbxassetid://10713189068",["Groove"] = "rbxassetid://10785404176",["Cloud"] = "rbxassetid://5176277457",["Sky"] = "rbxassetid://1494603972",["Smudge"] = "rbxassetid://6096634060",["Scrapes"] = "rbxassetid://6248583558",["Galaxy"] = "rbxassetid://1120738433",["Stars"] = "rbxassetid://598201818",["Rainbow"] = "rbxassetid://10037165803", ["Triangular"]="rbxassetid://4504368932", ["Wall"] = "rbxassetid://4271279"} local forcefieldAnimationsDropDown = {} for i, v in next, forcefieldAnimations do forcefieldAnimationsDropDown[1 + #forcefieldAnimationsDropDown] = i end local ChrModels = game:GetObjects("rbxassetid://15837369190")[1] local AllCharacters = {} for i,v in pairs(ChrModels:GetChildren()) do table.insert(AllCharacters, v.Name) end local function ChangeCharacter(model) local character = LocalPlayer.Character if not character then return end for _, v in ipairs(_GetChildren(character)) do if _IsA(v, "Accessory") then _Destroy(v) end end for _, part in ipairs(_GetDescendants(character)) do if _IsA(part, "BasePart") then local newPart = _FindFirstChild(model, part.Name, true) if newPart and _IsA(newPart, "BasePart") then part.Color = newPart.Color part.Transparency = newPart.Transparency local colorVal = _Instancenew("Color3Value") colorVal.Name = "OriginalColor" colorVal.Value = part.Color colorVal.Parent = part local materialVal = _Instancenew("StringValue") materialVal.Name = "OriginalMaterial" materialVal.Value = part.Material.Name materialVal.Parent = part end end end local head = _FindFirstChild(character, "Head") local newHead = _FindFirstChild(model, "Head") if head and newHead then local headDecal = _FindFirstChildOfClass(head, "Decal") local newHeadDecal = _FindFirstChildOfClass(newHead, "Decal") if headDecal and newHeadDecal then headDecal.Texture = newHeadDecal.Texture end end local function copyClothing(className) local old = _FindFirstChildOfClass(character, className) if old then _Destroy(old) end local new = _FindFirstChildOfClass(model, className) if new then local clone = _Clone(new) clone.Parent = character local value = _Instancenew("StringValue") value.Name = "OriginalTexture" value.Value = clone[className .. "Template"] value.Parent = clone end end copyClothing("Shirt") copyClothing("Pants") for _, accessory in ipairs(_GetChildren(model)) do if accessory:IsA("Accessory") then local cloned = _Clone(accessory) local handle = _FindFirstChild(cloned, "Handle") if handle then for _, weld in ipairs(_GetChildren(handle)) do if _IsA(weld, "Weld") and weld.Part1 then local match = _FindFirstChild(character, weld.Part1.Name) if match then weld.Part1 = match end end end local colorVal = _Instancenew("Color3Value") colorVal.Name = "OriginalColor" colorVal.Value = handle.Color colorVal.Parent = handle local materialVal = _Instancenew("StringValue") materialVal.Name = "OriginalMaterial" materialVal.Value = handle.Material.Name materialVal.Parent = handle end cloned.Parent = character end end end local function ChangeCharacterToUserIdAvatar(userId) local model = Players:CreateHumanoidModelFromUserId(userId) for _, descendant in ipairs(_GetDescendants(model)) do if _IsA(descendant, "ParticleEmitter") or _IsA(descendant, "Trail") or _IsA(descendant, "Beam") or _IsA(descendant, "Fire") or _IsA(descendant, "Sparkles") or _IsA(descendant,"Smoke") or _IsA(descendant, "Highlight") then _Destroy(descendant) end end if _FindFirstChild(model, "FullOutline") then _Destroy(model.FullOutline) end model.Name = "TargetCharacter" model:WaitForChild("Humanoid") ChangeCharacter(model) _Destroy(model) end do local RageTab = Window:AddTab("Rage") local MiscTab = Window:AddTab("Misc") local VisualsTab = Window:AddTab("Visuals") local SettingsTab = Window:AddTab("Settings") -- local RageBotGroup = RageTab:AddLeftGroupbox("Main") local TrackingGroup = RageTab:AddLeftGroupbox("Tracking") local RageBotSettingsGroup = RageTab:AddCenterGroupbox("Rage Settings") local AntiHitTabbox = RageTab:AddRightTabbox("Anti-hit") local AntiAimGroup = AntiHitTabbox:AddTab("Anti-aim") local FakeLagsGroup = AntiHitTabbox:AddTab("Fake-Lags") local MovementGroup = MiscTab:AddRightGroupbox("Movement") local AnotherGroup = MiscTab:AddCenterGroupbox("Other") local ExploitsGroup = MiscTab:AddLeftGroupbox("Exploit") RageBotGroup:AddToggle("RageBot_Enabled", {Text = "Enable"}) :AddKeyPicker("RageBotKeyBind", {Default = '...', SyncToggleState = false, Mode = "Toggle", Text = "Rage Bot", NoUI = false}) RageBotGroup:AddToggle("RageBot_AutoWall", {Text = "Auto-shot"}) :AddKeyPicker("AutoWallKeyBind", {Default = '...', SyncToggleState = false, Mode = "Toggle", Text = "Авто прострел", NoUI = false}) RageBotGroup:AddToggle("RageBot_HitScan", {Text = "Auto-shot hitscan"}) ConnectKeyPickerToToggle("RageBot_Enabled", "RageBotKeyBind") ConnectKeyPickerToToggle("RageBot_AutoWall", "AutoWallKeyBind") RageBotGroup:AddToggle("RageBot_Prediction", {Text = "Pred Bullet"}) RageBotGroup:AddToggle("RageBot_FakeShoot", {Text = "Fake-Shoot"}) RageBotGroup:AddToggle("RageBot_AutoPeek", {Text = "Auto-Peak"}) :AddKeyPicker("RageBot_AutoPeekKeyBind", {Default = '...', SyncToggleState = false, Mode = "Toggle", Text = "Авто-пик", NoUI = false}) ConnectKeyPickerToToggle("RageBot_AutoPeek", "RageBot_AutoPeekKeyBind") RageBotGroup:AddToggle("RageBot_FireRate", {Text = "Rapid-Fire"}) RageBotGroup:AddToggle("RageBot_Auto_Scope", {Text = "Auto-scope"}) RageBotGroup:AddToggle("RageBot_Double_Scope", {Text = "Double-Scope"}) RageBotGroup:AddToggle("RageBot_MultiTarget", {Text = "Multi Target"}) RageBotGroup:AddToggle("RageBot_Preparation", {Text = "Before round time(idk)"}) RageBotGroup:AddToggle("RageBot_AtTargets", {Text = "dont use"}) TrackingGroup:AddToggle("ForwardTrack_Enabled", {Text = "Enable ForwardTrack"}) TrackingGroup:AddToggle("ForwardTrack_Ignore_Walls", {Text = "Ignore walls"}) TrackingGroup:AddSlider("ForwardTrack_Ticks", {Text = 'ForwardTrack ticks', Default = 150, Min = 1, Max = 4000, Rounding = 0, Compact = false}) TrackingGroup:AddSlider("ForwardTrack_Steps_to_Scan", {Text = 'Steps to scan', Default = 14, Min = 1, Max = 100, Rounding = 0, Compact = false}) TrackingGroup:AddToggle("BackTrack_Enabled", {Text = "Enable BackTrack"}) TrackingGroup:AddSlider("BackTrack_Ticks", {Text = 'BackTrack Ticks' ,Default = 150, Min = 1, Max = 1000, Rounding = 0, Compact = false}) TrackingGroup:AddToggle("Camera_Resolver", {Text = "Resolver Camera"}) RageBotSettingsGroup:AddDropdown("RageBot_TargetParts", {Text = "Main hitboxes", Values = {"Head", "Chest", "Pelvis", "Arms", "Legs", "Feet"}, Multi = true, Default = 1}) RageBotSettingsGroup:AddDropdown("RageBot_HitScan_Points", {Text = "HitScan points", Values = {"Up", "Down", "Left", "Right", "Forward", "Backward", "Towards"}, Multi = true, Default = 1}) RageBotSettingsGroup:AddSlider("RageBot_HitScan_Modifier", {Text = 'HitScan modifier', Default = 1, Min = 1, Max = 100, Rounding = 0, Compact = false}) RageBotSettingsGroup:AddDropdown("RageBot_Origins", {Text = "Start shot", Values = {"Camera", "Head", "Flash"}, Multi = false, Default = 1}) RageBotSettingsGroup:AddSlider("RageBot_HitScan_MaximumPoints", {Text = 'HitScan Maximum points', Default = 1, Min = 1, Max = 64, Rounding = 0, Compact = false}) RageBotSettingsGroup:AddSlider("RageBot_MinDmg", {Text = 'Min.Damage', Default = 50, Min = 1, Max = 100, Rounding = 0, Compact = false}) RageBotSettingsGroup:AddSlider("RageBot_MaxWalls", {Text = 'walls for Auto-shooting', Default = 4, Min = 1, Max = 25, Rounding = 0, Compact = false}) RageBotSettingsGroup:AddSlider("RageBot_FireRateValue", {Text = 'RapidFire ticks', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) RageBotSettingsGroup:AddSlider("RageBot_FOV", {Text = 'FOV', Default = 180, Min = 1, Max = 180, Rounding = 0, Compact = false}) RageBotSettingsGroup:AddSlider("RageBot_PenModded", {Text = 'do not use', Default = 1, Min = 1, Max = 1000, Rounding = 0, Compact = false}) RageBotSettingsGroup:AddSlider("RageBot_PingMultiPlayer", {Text = "Ping correction", Default = 0, Min = -250, Max = 250, Rounding = 0, Compact = false}) --аа AntiAimGroup:AddToggle("AntiAim_Enabled", {Text = "Enable"}) AntiAimGroup:AddDropdown("AntiAim_Pitch", { Text = "Pitch", Values = {"None","Upwards", "Glitch", "Zero","Downwards","Random"}, Default = "Downwards", AllowNull = false}) AntiAimGroup:AddSlider("AntiAimSpin_Yaw", {Text = "Yaw", Default = 25, Min = 0, Max = 180, Rounding = 0, Compact = false}) AntiAimGroup:AddDropdown("AntiAim_YawBase", {Text = "Yaw Base", Values = {"Spin", "Targets", "Camera", "Random"}, Default = "Camera", AllowNull = false}) AntiAimGroup:AddSlider("AntiAimSpin_Speed", {Text = "Speed rotation", Default = 25, Min = 1, Max = 180, Rounding = 0, Compact = false}) AntiAimGroup:AddDivider() AntiAimGroup:AddToggle("AntiAim_In_Gravity", {Text = "Gravity"}) AntiAimGroup:AddSlider("AntiAim_In_Gravity_BaseSpin", {Text = "Base spin", Default = 25, Min = 1, Max = 180, Rounding = 0, Compact = false}) AntiAimGroup:AddSlider("AntiAim_In_Gravity_MaximumSpin", {Text = "Max spin", Default = 25, Min = 1, Max = 180, Rounding = 0, Compact = false}) AntiAimGroup:AddSlider("AntiAim_In_Gravity_Speed", {Text = "speed", Default = 3, Min = 1, Max = 50, Rounding = 0, Compact = false}) AntiAimGroup:AddDivider() AntiAimGroup:AddToggle("AntiAim_СFrame_Manipulation", {Text = "Enable CFrame manipulation"}) AntiAimGroup:AddSlider("AntiAim_СFrame_Manipulation_X", {Text = "X", Default = 0, Min = -100, Max = 100, Rounding = 0, Compact = false}) AntiAimGroup:AddSlider("AntiAim_СFrame_Manipulation_Y", {Text = "Y", Default = 0, Min = -100, Max = 100, Rounding = 0, Compact = false}) AntiAimGroup:AddSlider("AntiAim_СFrame_Manipulation_Z", {Text = "Z", Default = 0, Min = -100, Max = 100, Rounding = 0, Compact = false}) AntiAimGroup:AddSlider("AntiAim_СFrame_Manipulation_X_Angles", {Text = "Angless X", Default = 0, Min = -360, Max = 360, Rounding = 0, Compact = false}) AntiAimGroup:AddSlider("AntiAim_СFrame_Manipulation_Y_Angles", {Text = "Angless Y", Default = 0, Min = -360, Max = 360, Rounding = 0, Compact = false}) AntiAimGroup:AddSlider("AntiAim_СFrame_Manipulation_Z_Angles", {Text = "Angless Z", Default = 0, Min = -360, Max = 360, Rounding = 0, Compact = false}) --фейк лаги FakeLagsGroup:AddToggle("FakeLags_Enabled", {Text = "Enable"}) FakeLagsGroup:AddToggle("FakeLags_PreventReplication", {Text = "protection of replication (idk)"}) :AddKeyPicker("PreventReplicaKeyBind", {Default = '...', SyncToggleState = false, Mode = "Toggle", Text = "protection of replication (idk)", NoUI = false}) FakeLagsGroup:AddSlider("FakeLags_Ticks", {Text = "Ticks", Default = 0, Min = 0, Max = 2048, Rounding = 0, Compact = false}) FakeLagsGroup:AddSlider("FakeLags_Limit", {Text = "Limit", Default = 0, Min = 0, Max = 256, Rounding = 0, Compact = false}) ConnectKeyPickerToToggle("FakeLags_PreventReplication", "PreventReplicaKeyBind") AnotherGroup:AddToggle("KillAll_Enabled", {Text = "Kill all(Enemies"}) :AddKeyPicker("KillAllKeyBind", {Default = '...', SyncToggleState = false, Mode = "Toggle", Text = "Kill all(Enemies)", NoUI = false}) ConnectKeyPickerToToggle("KillAll_Enabled", "KillAllKeyBind") AnotherGroup:AddSlider("KillAll_PingMultiPlayer", {Text = "idk", Default = 0, Min = -250, Max = 250, Rounding = 0, Compact = false}) AnotherGroup:AddDivider() AnotherGroup:AddToggle("HitSounds_Enabled", {Text = "Enable Hitsounds"}) AnotherGroup:AddDropdown("HitSounds_Ids", {Text = "Select Hitsounds", Values = {'Neverlose','Skeet', 'Rust', 'Monster kill', 'Fatality', 'TF2', 'TF2 Pan', 'Beautiful', 'Minecraft', 'Minecraft XP', 'Cod', 'Ray', 'Matchine gun', 'Retro loud', 'CSGO', 'Slap', 'Squash', 'Supersmash', 'Killingspree', 'Godlike', 'Ownage', 'Ultrakill', '1', 'MCOOF', 'Quek', 'Epic', 'Osu', 'Bell', 'Rocket', 'Vine Boom', 'Pow', 'Bag', 'Baimware', 'Overwatch', 'Pop', 'Win', 'Denied', 'Lessgo', 'Headshot', 'Bruh', 'Percussion', 'Space', 'Electro', 'Vortex', 'Retro', 'Osu Mint', 'Snap'}, Default = "Downwards", AllowNull = false}) AnotherGroup:AddSlider("HitSounds_Volume", {Text = "Volume Hitsounds", Default = 100, Min = 1, Max = 100, Rounding = 0, Compact = false}) AnotherGroup:AddToggle("KillSounds_Enabled", {Text = "Enable KillSounds"}) AnotherGroup:AddDropdown("KillSounds_Ids", {Text = "Select KillSounds", Values = {'Neverlose','Skeet', 'Rust', 'Fatality', 'Monster kill', 'TF2', 'TF2 Pan', 'Beautiful', 'Minecraft', 'Minecraft XP', 'Cod', 'Ray', 'Matchine gun', 'Retro loud', 'CSGO', 'Slap', 'Squash', 'Supersmash', 'Killingspree', 'Godlike', 'Ownage', 'Ultrakill', '1', 'MCOOF', 'Quek', 'Epic', 'Osu', 'Bell', 'Rocket', 'Vine Boom', 'Pow', 'Bag', 'Baimware', 'Overwatch', 'Pop', 'Win', 'Denied', 'Lessgo', 'Headshot', 'Bruh', 'Percussion', 'Space', 'Electro', 'Vortex', 'Retro', 'Osu Mint', 'Snap'}, Default = "Downwards", AllowNull = false}) AnotherGroup:AddSlider("KillSounds_Volume", {Text = "Volume KillSounds", Default = 100, Min = 1, Max = 100, Rounding = 0, Compact = false}) local allweapons = {} if game:GetService("ReplicatedStorage"):FindFirstChild("Weapons") then for i, v in next, (game:GetService("ReplicatedStorage").Weapons:GetChildren()) do if (v:FindFirstChild("Primary") or v:FindFirstChild("Secondary")) and not v:FindFirstChild("Melee") then allweapons[1 + #allweapons] = v.Name end end end ExploitsGroup:AddToggle("Spawn_Weapons", {Text = "Give weapon"}) ExploitsGroup:AddDropdown("Spawn_Weapons_Primary", {Text = "Select main weapon", Values = allweapons, Default = "Downwards", AllowNull = false}) ExploitsGroup:AddDropdown("Spawn_Weapons_Secondary", {Text = "Select secondary weapon", Values = allweapons, Default = "Downwards", AllowNull = false}) ExploitsGroup:AddToggle("Anti_Camera_Resolver", {Text = "Anti-resolver camera"}) ExploitsGroup:AddToggle("Break_Aura", {Text = "break aura"}) ExploitsGroup:AddToggle("Damage_Modifier", {Text = "Damage hack"}) ExploitsGroup:AddSlider("Damage_ModifierValue", {Text = "Damage value multiply", Default = 100, Min = 1, Max = 100, Rounding = 0, Compact = false}) ExploitsGroup:AddToggle("Chat_Dead", {Text = "Show dead message"}) ExploitsGroup:AddToggle("Remove_Killers", {Text = "idk"}) ExploitsGroup:AddDivider() ExploitsGroup:AddToggle("Inf_Ammo", {Text = "inf.Ammo"}) ExploitsGroup:AddToggle("Instance_Equip", {Text = "Instance_Equip"}) ExploitsGroup:AddToggle("Instant_Reload", {Text = "Instantly reload"}) ExploitsGroup:AddToggle("Fully_Automatic", {Text = "Fully Automatic"}) ExploitsGroup:AddToggle("Remove_Spread", {Text = "No-spread"}) MovementGroup:AddToggle("Movement_SlideWalk", {Text = "Movement_SlideWalk"}) MovementGroup:AddToggle("Movement_SpeedHack", {Text = "Movement_SpeedHack"}) MovementGroup:AddToggle("Movement_AutoHop", {Text = "Movement_AutoHop"}) MovementGroup:AddDropdown("Movement_SpeedHackMethod", {Text = "Movement_SpeedHackMethod", Values = {"Velocity", "CFrame"}, Default = "Downwards", AllowNull = false}) MovementGroup:AddSlider("Movement_Speed", {Text = "Movement_Speed", Default = 25, Min = 0, Max = 150, Rounding = 0, Compact = false}) MovementGroup:AddToggle("Movement_OverrideSpeedHack", {Text = "Movement_OverrideSpeedHack"}) :AddKeyPicker("OverrideSpeedHackKeyBind", {Default = '...', SyncToggleState = false, Mode = "Toggle", Text = "Переопределение скорости", NoUI = false}) MovementGroup:AddSlider("Movement_OverrideSpeed", {Text = "Movement_OverrideSpeed", Default = 25, Min = 0, Max = 150, Rounding = 0, Compact = false}) MovementGroup:AddToggle("Movement_SlideWalk", {Text = "Movement_SlideWalk"}) MovementGroup:AddToggle("Movement_SpeedHack", {Text = "Movement_SpeedHack"}) MovementGroup:AddToggle("Movement_AutoHop", {Text = "Movement_AutoHop"}) MovementGroup:AddDropdown("Movement_SpeedHackMethod", {Text = "Movement_SpeedHackMethod", Values = {"Velocity", "CFrame"}, Default = "Downwards", AllowNull = false}) MovementGroup:AddSlider("Movement_Speed", {Text = "Movement_Speed", Default = 25, Min = 0, Max = 150, Rounding = 0, Compact = false}) MovementGroup:AddToggle("Movement_OverrideSpeedHack", {Text = "Movement_OverrideSpeedHack"}) :AddKeyPicker("OverrideSpeedHackKeyBind", {Default = '...', SyncToggleState = false, Mode = "Toggle", Text = "Movement_OverrideSpeedHack", NoUI = false}) MovementGroup:AddSlider("Movement_OverrideSpeed", {Text = "Movement_OverrideSpeed", Default = 25, Min = 0, Max = 150, Rounding = 0, Compact = false}) ConnectKeyPickerToToggle("Movement_OverrideSpeedHack", "OverrideSpeedHackKeyBind") local Worldtabbox = VisualsTab:AddRightTabbox("World") local LightTab = Worldtabbox:AddTab("light") local ParticlesTab = Worldtabbox:AddTab("Particle") local LocalTabbox = VisualsTab:AddCenterTabbox("Local") local CameraTab = LocalTabbox:AddTab("Camera") local ArmsTab = LocalTabbox:AddTab("Hands") local BulletsTab = LocalTabbox:AddTab("Bullet") local CharacterTab = LocalTabbox:AddTab("Character") local CrosshairTab = LocalTabbox:AddTab("crosshair") local EspTabbox = VisualsTab:AddLeftTabbox("Esp") local EnemiesTab = EspTabbox:AddTab("Enemies") local TeamTab = EspTabbox:AddTab("Team") local EspSettingsTab = EspTabbox:AddTab("Settings") CharacterTab:AddToggle("Character_Changer", {Text = "Character changer", Default = false, Callback = function(v) if v then if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Gun") then if Flags["Character_Changer_Character"] == "Custom" then ChangeCharacterToUserIdAvatar(Flags["Character_Changer_Character_Custom"]) else ChangeCharacter(ChrModels:FindFirstChild(Flags["Character_Changer_Character"])) end end end end}) CharacterTab:AddDropdown('Character_Changer_Character', { Values = {"Custom", _TableUnpack(AllCharacters)}, Default = 1, Multi = false, Text = 'Персонаж', Callback = function(Value) if Flags["Character_Changer"] then if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Gun") then if Flags["Character_Changer_Character"] == "Custom" then ChangeCharacterToUserIdAvatar(Flags["Character_Changer_Character_Custom"]) else ChangeCharacter(ChrModels:FindFirstChild(Flags["Character_Changer_Character"])) end end end end }) CharacterTab:AddInput('Character_Changer_Character_Custom', {Default = '1831554653', Numeric = false, Finished = false, Text = 'ID игрока', Placeholder = 'ID player', Callback = function(Value) if Flags["Character_Changer"] and Flags["Character_Changer_Character"] == "Custom" then if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Gun") then ChangeCharacterToUserIdAvatar(Value) end end end}) CharacterTab:AddToggle("Accessory_Enabled", {Text = ".", Default = false}) CharacterTab:AddSlider('Accessory_Distance', {Text = '.', Min = 0, Max = 100, Rounding = 0, Default = 6}) CharacterTab:AddSlider('Accessory_Height', {Text = '.', Min = 0, Max = 100, Rounding = 0, Default = 0}) CharacterTab:AddToggle("Accessory_Spin_ItSelf", {Text = ".", Default = false}) CharacterTab:AddSlider('Accessory_Spin_Speed', {Text = '.', Min = 0, Max = 360, Rounding = 0, Default = 144}) CharacterTab:AddSlider('Accessory_Rotation_Speed', {Text = '.', Min = 0, Max = 360, Rounding = 0, Default = 144}) CharacterTab:AddInput('Accessory_ID', {Default = '17899556174', Numeric = false, Finished = false, Text = 'ID BiTCH', Placeholder = '.'}) CharacterTab:AddToggle("Accessory_Highlight_Enabled", {Text = "HighLight", Default = false}) :AddColorPicker("Accessory_Highlight_FillColor", {Default = _Color3FromRGB(255,255,255), Title = 'Color', Transparency = 0}) :AddColorPicker("Accessory_Highlight_OutlineColor", {Default = _Color3FromRGB(255,255,255), Title = 'color outline', Transparency = 0}) CharacterTab:AddSlider("Accessory_Highlight_FillTransparency", {Text = 'Fill Transparency', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) CharacterTab:AddSlider("Accessory_Highlight_OutlineTransparency", {Text = 'Fill Transparency', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) ArmsTab:AddToggle("Model_Changer_Weapon", {Text = "Chams Gun", Default = false}) :AddColorPicker("Model_Changer_Color", {Default = _Color3FromRGB(255,255,255), Title = 'color', Transparency = 0}) ArmsTab:AddDropdown('Model_Changer_Material', {Text = 'Materials Chams Gun', Values = {"Ghost", "Flat", "Custom", "Reflective", "Metallic"}, Default = 1}) ArmsTab:AddDropdown('Model_Changer_Texture', {Text = 'texture chams gun', Values = forcefieldAnimationsDropDown, Default = 1}) ArmsTab:AddSlider('Model_Changer_Transperency', {Text = 'transparency', Min = 0, Max = 100, Rounding = 0, Default = 1}) ArmsTab:AddSlider('Model_Changer_Reflectance', {Text = 'Reflectance', Min = 0, Max = 100, Rounding = 0, Default = 1}) ArmsTab:AddDivider() ArmsTab:AddToggle('Arms_Changer', {Text = 'Arms Changer'}) :AddColorPicker("Arms_Changer_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Arms Color', Transparency = 0}) :AddColorPicker("Arms_Changer_Color2", {Default = _Color3FromRGB(255,255,255), Title = 'Arms Colo2', Transparency = 0}) ArmsTab:AddDropdown('Arms_Changer_Material', {Text = 'Materials arms', Values = {"Ghost", "Flat", "Custom", "Reflective", "Metallic"}, Default = 1}) ArmsTab:AddSlider('Arms_Transparency1', {Text = 'Arms transparency', Min = 0, Max = 100, Rounding = 0, Default = 1}) ArmsTab:AddSlider('Arms_Transparency2', {Text = 'Arms transparency2', Min = 0, Max = 100, Rounding = 0, Default = 1}) ArmsTab:AddSlider('Arms_Reflective', {Text = 'Arms Reflective', Min = 0, Max = 100, Rounding = 0, Default = 1}) ArmsTab:AddSlider('Arms_Reflective_Sleeve', {Text = 'Arms Reflective Sleeve', Min = 0, Max = 100, Rounding = 0, Default = 1}) ArmsTab:AddDropdown('Arms_Changer_Texture', {Text = 'Arms Texture', Values = forcefieldAnimationsDropDown, Default = 1}) EnemiesTab:AddToggle("Enemy_Boxes", {Text = "Boxes", Default = false}):AddColorPicker("Enemy_Boxes_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Color', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Boxes_Filled", {Text = "Filled Boxes", Default = false}):AddColorPicker("Enemy_Boxes_Filled_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddSlider("Enemy_Boxes_Filled_Transperency", {Text = 'Transparency', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) EnemiesTab:AddToggle("Enemy_Health_Bar", {Text = "Hp-bar", Default = false}):AddColorPicker("Enemy_Health_Bar_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}):AddColorPicker("Enemy_Health_Bar_Color2", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Health_Bar_Gradient", {Text = "gradient hp-bar", Default = false}) EnemiesTab:AddToggle("Enemy_Health_Number", {Text = "hp number", Default = false}) EnemiesTab:AddSlider("Enemy_Max_HP_Visibility_Cap", {Text = 'Maz visibility ca[', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) EnemiesTab:AddToggle("Enemy_Held_Weapon", {Text = "weapon held", Default = false}):AddColorPicker("Enemy_Held_Weapon_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Distance", {Text = "Distance", Default = false}):AddColorPicker("Enemy_Distance_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Name", {Text = "Name", Default = false}):AddColorPicker("Enemy_Name_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Armor", {Text = "Armor", Default = false}):AddColorPicker("Enemy_Armor_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Bomb", {Text = "Bomb", Default = false}):AddColorPicker("Enemy_Bomb_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Cash", {Text = "Cash", Default = false}):AddColorPicker("Enemy_Cash_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Snap_Lines", {Text = "Snap lines", Default = false}):AddColorPicker("Enemy_Snap_Lines_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddSlider("Enemy_Snap_Lines_Transperency", {Text = 'SnapLines transparency', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) EnemiesTab:AddToggle("Enemy_Chamses", {Text = "Chams", Default = false}):AddColorPicker("Enemy_Chamses_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}):AddColorPicker("Enemy_Chamses_Color2", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddSlider("Enemy_Chamses_Transperency1", {Text = 'Transperency 1', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) EnemiesTab:AddSlider("Enemy_Chamses_Transperency2", {Text = 'Transperency 2', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) EnemiesTab:AddToggle("Enemy_Skeletons", {Text = "Skeletons", Default = false}):AddColorPicker("Enemy_Skeletons_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddToggle("Enemy_Out_of_View_Arrows", {Text = "Out of View Arrows", Default = false}):AddColorPicker("Enemy_Out_of_View_Arrows_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EnemiesTab:AddSlider("Enemy_Arrow_Size", {Text = 'Arrow Size', Default = 16, Min = 4, Max = 30, Rounding = 0, Compact = false}) EnemiesTab:AddSlider("Enemy_Arrow_Distance", {Text = 'Arrows Distance', Default = 100, Min = 10, Max = 100, Rounding = 0, Compact = false}) EnemiesTab:AddToggle("Enemy_Dynamic_Arrow_Size", {Text = "Dynamic Arrow size", Default = false}) TeamTab:AddToggle("Team_Boxes", {Text = "Boxes", Default = false}):AddColorPicker("Team_Boxes_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddToggle("Team_Boxes_Filled", {Text = "Filled boxes", Default = false}):AddColorPicker("Team_Boxes_Filled_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddSlider("Team_Boxes_Filled_Transperency", {Text = 'Transparency', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) TeamTab:AddToggle("Team_Health_Bar", {Text = "Health Bar", Default = false}):AddColorPicker("Team_Health_Bar_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}):AddColorPicker("Team_Health_Bar_Color2", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddToggle("Team_Health_Bar_Gradient", {Text = "Health bar Gradient", Default = false}) TeamTab:AddToggle("Team_Health_Number", {Text = "Heatlh Value", Default = false}) TeamTab:AddSlider("Team_Max_HP_Visibility_Cap", {Text = 'Max HP Visibility Cap', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) TeamTab:AddToggle("Team_Held_Weapon", {Text = "Held Weapon", Default = false}):AddColorPicker("Team_Held_Weapon_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddToggle("Team_Distance", {Text = "Distance", Default = false}):AddColorPicker("Team_Distance_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddToggle("Team_Name", {Text = "Name", Default = false}):AddColorPicker("Team_Name_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddToggle("Team_Armor", {Text = "Armor", Default = false}):AddColorPicker("Team_Armor_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddToggle("Team_Bomb", {Text = "Bomb", Default = false}):AddColorPicker("Team_Bomb_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddToggle("Team_Cash", {Text = "Cash", Default = false}):AddColorPicker("Team_Cash_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddToggle("Team_Snap_Lines", {Text = "Snap Lines", Default = false}):AddColorPicker("Team_Snap_Lines_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddSlider("Team_Snap_Lines_Transperency", {Text = 'Snap Lines Transperency', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) TeamTab:AddToggle("Team_Chamses", {Text = "Chams", Default = false}):AddColorPicker("Team_Chamses_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}):AddColorPicker("Team_Chamses_Color2", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) TeamTab:AddSlider("Team_Chamses_Transperency1", {Text = 'Transperency 1', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) TeamTab:AddSlider("Team_Chamses_Transperency2", {Text = 'Transperency 2', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) TeamTab:AddToggle("Team_Skeletons", {Text = "Skeletons", Default = false}):AddColorPicker("Team_Skeletons_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) EspSettingsTab:AddSlider("Esp_Settings_TextSize", {Text = 'TextSize', Default = 13, Min = 8, Max = 24, Rounding = 0, Compact = false}) EspSettingsTab:AddDropdown("Esp_Settings_TextCase", {Text = "TextCase", Values = {"Normal", "UPPERCASE", "lowercase"}, Default = 1, Multi = false}) EspSettingsTab:AddDropdown("Esp_Settings_TextFont", {Text = "TextFont", Values = {"Plex", "Monospace", "UI", "System"}, Default = 1, Multi = false}) EspSettingsTab:AddSlider("Esp_Settings_FlagTextSize", {Text = 'FlagTextSize', Default = 13, Min = 8, Max = 24, Rounding = 0, Compact = false}) EspSettingsTab:AddDropdown("Esp_Settings_FlagTextCase", {Text = "FlagTextCase", Values = {"Normal", "UPPERCASE", "lowercase"}, Default = 1, Multi = false}) EspSettingsTab:AddDropdown("Esp_Settings_FlagTextFont", {Text = "FlagTextFont", Values = {"Plex", "Monospace", "UI", "System"}, Default = 1, Multi = false}) CameraTab:AddToggle("ThirdPerson_Enabled", {Text = "ThirdPerson", Default = false, Callback = function(v) if v then RunService:BindToRenderStep("ts", 1, function() LocalPlayer.CameraMaxZoomDistance = Flags["ThirdPerson_Distance"] LocalPlayer.CameraMinZoomDistance = Flags["ThirdPerson_Distance"] end) else RunService:UnbindFromRenderStep("ts") for v = 1, 5 do _Wait() LocalPlayer.CameraMaxZoomDistance = 0; LocalPlayer.CameraMinZoomDistance = 0 end end end}):AddKeyPicker("ThirdPersonKeybind", {Default = '...', SyncToggleState = false, Mode = "Toggle", Text = "Третье лицо", NoUI = false}) CameraTab:AddToggle("ThirdPerson_RemoveArms", {Text = "ThirdPerson RemoveArms"}) CameraTab:AddSlider("ThirdPerson_Distance", {Text = 'Distance', Default = 5, Min = 1, Max = 10, Rounding = 0, Compact = false}) CameraTab:AddSlider("Camera_FieldOfView", {Text = 'FieldOfView', Default = 80, Min = 60, Max = 120, Rounding = 0, Compact = false}) CameraTab:AddDivider() CameraTab:AddToggle("ViewModel", {Text = "ViewModel", Default = false}) CameraTab:AddSlider('X', {Text = 'Angles X', Default = 180, Min = 1, Max = 360, Rounding = 0, Compact = false}) CameraTab:AddSlider('Y', {Text = 'Angles Y', Default = 180, Min = 1, Max = 360, Rounding = 0, Compact = false}) CameraTab:AddSlider('X', {Text = 'Angles X', Default = 180, Min = 1, Max = 360, Rounding = 0, Compact = false}) CameraTab:AddSlider('X1', {Text = 'CFrame X', Default = 180, Min = 1, Max = 360, Rounding = 0, Compact = false}) CameraTab:AddSlider('Y2', {Text = 'CFrame Y', Default = 180, Min = 1, Max = 360, Rounding = 0, Compact = false}) CameraTab:AddSlider('Z3', {Text = 'CFrame Z', Default = 180, Min = 1, Max = 360, Rounding = 0, Compact = false}) CameraTab:AddDivider() CameraTab:AddToggle("Remove_Scope", {Text = "Remove Scope", Default = false, Callback = function(v) for i, v in next, (LocalPlayer.PlayerGui.GUI.Crosshairs:GetChildren()) do if v.Name:match("Frame") then v.BackgroundTransparency = v and 1 or 0 elseif v.Name:match("Scope") then v.ImageTransparency = v and 1 or 0 end end end}) CameraTab:AddToggle("Remove_Flash", {Text = "Delete Flashbang", Default = false, Callback = function(v) LocalPlayer.PlayerGui.Blnd.Blind.Visible = not v end}) CameraTab:AddToggle("Remove_Recoil", {Text = "delete camera recoil", Default = false}) ConnectKeyPickerToToggle("ThirdPerson_Enabled", "ThirdPersonKeybind") LightTab:AddToggle("Ambience_Enabled", {Text = "Ambience", Default = false}):AddColorPicker("Ambience_Color", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) LightTab:AddToggle("Force_Time", {Text = "Force time", Default = false}) LightTab:AddSlider("Force_TimeValue", {Text = 'Time value', Default = 0, Min = 0, Max = 24, Rounding = 0, Compact = false}) LightTab:AddToggle("Custom_Saturation", {Text = "Custom saturation", Default = false}):AddColorPicker("Custom_SaturationColor", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) LightTab:AddSlider("Custom_SaturationValue", {Text = 'Saturation Value', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) LightTab:AddToggle("Custom_Bloom", {Text = "Bloom", Default = false}) LightTab:AddSlider("Custom_BloomIntensity", {Text = 'Intensity', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) LightTab:AddSlider("Custom_BloomSize", {Text = 'Size', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) LightTab:AddSlider("Custom_BloomThreshold", {Text = 'Threshold', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) LightTab:AddToggle("Custom_Atmosphere", {Text = "Custom Atmosphere", Default = false}):AddColorPicker("Atmosphere_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}):AddColorPicker("Atmosphere_Color2", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) LightTab:AddSlider("Custom_AtmosphereDensity", {Text = 'Density', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) LightTab:AddSlider("Custom_AtmosphereGlare", {Text = 'Glare', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) LightTab:AddSlider("Custom_AtmosphereHaze", {Text = 'Haze', Default = 0, Min = 0, Max = 100, Rounding = 0, Compact = false}) ParticlesTab:AddToggle("Particles_Enabled", {Text = "Enabled", Default = false}):AddColorPicker("Particles_Color", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) ParticlesTab:AddDropdown("Particles_Texture", {Text = "Texture", Values = {"Random", "Snow", "Rain"}, Default = 1, Multi = false}) ParticlesTab:AddSlider("Particles_LifeTime", {Text = 'LifeTime', Default = 1, Min = 1, Max = 10, Rounding = 0, Compact = false}) ParticlesTab:AddSlider("Particles_Speed", {Text = 'Speed', Default = 25, Min = 1, Max = 100, Rounding = 0, Compact = false}) BulletsTab:AddToggle("BulletTracerEnabled", {Text = "Bullet Tracer"}):AddColorPicker("BulletTracerColor", {Default = _Color3FromRGB(255,0,0), Title = 'Цвет трассера', Transparency = 0.25}) BulletsTab:AddToggle("BulletTracerEnemyEnabled", {Text = "EnemyBulletTracer"}):AddColorPicker("BulletTracerColor1", {Default = _Color3FromRGB(255,0,0), Title = 'Цвет трассера', Transparency = 0.25}) BulletsTab:AddToggle("BulletTracerSecondBeam", {Text = "Second beam"}):AddColorPicker("BulletTracerSecondBeamColor", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет второго луча', Transparency = 0.5}) BulletsTab:AddSlider("BulletTracerLifetime", {Text = "Life time", Default = 2, Min = 0, Max = 10, Rounding = 1, Compact = false}) BulletsTab:AddSlider("BulletTracerFadetime", {Text = "Fade time", Default = 2, Min = 0, Max = 10, Rounding = 1, Compact = false}) BulletsTab:AddSlider("BulletTracerWidth", {Text = "Width", Default = 2, Min = 0.1, Max = 50, Rounding = 1, Compact = false}) BulletsTab:AddSlider("BulletTracerBrightness", {Text = "Brightness", Min = 1, Max = 10, Default = 1, Rounding = 0, Compact = false}) BulletsTab:AddSlider("BulletTracerLightEmission", {Text = "Light Emission", Min = 0, Max = 1, Default = 1, Rounding = 1, Compact = false}) BulletsTab:AddSlider("BulletTracerLightInfluence", {Text = "Light influence", Min = 0, Max = 1, Default = 0, Rounding = 1, Compact = false}) BulletsTab:AddSlider("BulletTracerTextureSpeed", {Text = "Texture speed", Min = 1, Max = 5, Default = 1, Rounding = 1, Compact = false}) BulletsTab:AddSlider("BulletTracerTextureLength", {Text = "Texture Length", Min = 1, Max = 10, Default = 1, Rounding = 0, Compact = false}) BulletsTab:AddToggle("BulletTracerFaceCamera", {Text = "Into face", Default = true}) BulletsTab:AddDropdown("BulletTracerTexture", {Text = "Texture", Values = (function() local tbl = {} for i,v in next,Cache.TracerTextures do _TableInsert(tbl,i) end return tbl end)(), Default = 12, Multi = false}) BulletsTab:AddDivider() BulletsTab:AddToggle("BulletImpactEnabled", {Text = "Impact bullet"}):AddColorPicker("BulletImpactColor", {Default = _Color3FromRGB(255,255,255), Title = "Цвет удара", Transparency = 0.15}):AddColorPicker("BulletImpactColor2", {Default = _Color3FromRGB(255,255,255), Title = "Цвет удара", Transparency = 0.15}) BulletsTab:AddSlider("BulletImpactSize", {Text = "Size", Default = 2, Min = 0.1, Max = 10, Rounding = 1, Compact = false}) BulletsTab:AddSlider("BulletImpactLifetime", {Text = "Life time", Default = 2, Min = 0, Max = 10, Rounding = 1, Compact = false}) BulletsTab:AddDropdown("BulletImpactMaterial", {Text = "Material", Values = Cache.MaterialNames, Default = 1, Multi = false}) CrosshairTab:AddToggle("Custom_Crosshair", {Text = "Custom Crosshair", Default = false}):AddColorPicker("Custom_Crosshair_Color1", {Default = _Color3FromRGB(255,255,255), Title = 'Цвет', Transparency = 0}) CrosshairTab:AddToggle("Impulse_Crosshair", {Text = "Иmpulse crosshair", Default = false}) CrosshairTab:AddToggle("Crosshair_Outlines", {Text = "Outline crosshair", Default = false}) CrosshairTab:AddSlider("Cycle_Speed", {Text = "Cycle speed", Default = 2, Min = 0, Max = 10, Rounding = 1, Compact = false}) CrosshairTab:AddSlider("Minimum_Speed", {Text = "Minimum Speed", Default = 10, Min = 0, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Maximum_Speed", {Text = "Maximum Speed", Default = 10, Min = 0, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Minimum_Length", {Text = "Minius Length", Default = 10, Min = 0, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Maximum_Length", {Text = "Maximum Length", Default = 10, Min = 0, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Crosshair_Width", {Text = "Width crosshair", Default = 10, Min = 0, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Crosshair_Length", {Text = "Length crosshair", Default = 10, Min = 0, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Crosshair_Width_Gap", {Text = "Width Gap crosshair", Default = 5, Min = 0, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Crosshair_Length_Gap", {Text = "Length Gap crosshair", Default = 5, Min = 0, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Crosshair_Thickness", {Text = "thikness crosshair", Default = 2, Min = 1, Max = 100, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Crosshair_Rotation", {Text = "Rotation crosshair", Default = 0, Min = 0, Max = 360, Rounding = 0, Compact = false}) CrosshairTab:AddSlider("Crosshair_Rotation_Speed", {Text = "Crosshair rotation speed", Default = 0, Min = -360, Max = 360, Rounding = 0, Compact = false}) local WatermarkGroup = SettingsTab:AddCenterGroupbox("Watermark") WatermarkGroup:AddToggle("Watermark", { Text = "Watermark", Callback = function (v) Library:SetWatermarkVisibility(v) end}) local MenuGroup = SettingsTab:AddCenterGroupbox("Menu") MenuGroup:AddLabel("Menu bind"):AddKeyPicker("MenuKeybind", { Default = "End", NoUI = true, Text = "Menu keybind" }) MenuGroup:AddToggle("UIGlow", { Text = "UI Glow", Callback = function (v) Library:SetGlowVis(v) end}); local KeybindListGroup = SettingsTab:AddCenterGroupbox("Keybind List") KeybindListGroup:AddToggle("KeyBindList", { Text = "Key Bind List", Callback = function (v) Library:SetKeyListVisibility(v) end}) KeybindListGroup:AddDropdown("KeyBindListMode", {Text = "Mode",Values = {"Highlight", "State"},Default = 2,Multi = false, Callback = function(v) Library.KeybindListMode = v == "Highlight" and 1 or 2 end}) Library:SetWatermarkVisibility(false) Library:SetKeyListVisibility(false) Library:SetSpecListVisibility(false) Toggles["Watermark"]:SetValue(true) Toggles["UIGlow"]:SetValue(true) -- Options["KeyBindListMode"]:SetValue("State") Library.ToggleKeybind = Options.MenuKeybind ThemeManager:SetFolder("Aurora") SaveManager:SetFolder("Aurora/CounterBlox") ThemeManager:SetLibrary(Library) SaveManager:SetLibrary(Library) SaveManager:IgnoreThemeSettings() SaveManager:BuildConfigSection(SettingsTab) ThemeManager:ApplyToTab(SettingsTab) getgenv().PreviewPlayer = EspPreviewManager:Init(Window, VisualsTab) end do --Funcs do -- Player Spawned Signal local function apply(plr) plr.CharacterAdded:Connect(function(character) repeat _TaskWait() until plr.Status.Alive.Value playerSpawned:Fire(plr, _Tick()) local hum = character:WaitForChild("Humanoid") local sig; sig = hum.HealthChanged:Connect(function(newHealth) if newHealth == newHealth and newHealth <= 0 then sig:Disconnect() sig = nil playerDied:Fire(plr, _Tick()) end end) end) end for i,v in next, _GetPlayers(Players) do apply(v) end Players.PlayerAdded:Connect(apply) end do -- PlayerModule PlayerModule.storage = {} local function refreshEnemyType(data) data.enemy = replicatedStorage.gametype.Value == "deathmatch" or (data.player ~= LocalPlayer and data.player.Team ~= LocalPlayer.Team) end _GetPropertyChangedSignal(LocalPlayer, "Team"):Connect(function() for player,data in next, PlayerModule.storage do refreshEnemyType(data) end end) function PlayerModule.add(player) local data = {} data.player = player data.lastVelocity = _Vector3New() data.velocity = _Vector3New() data.character = nil data.god = false data.currentPosition = _Vector3New() data.lastPosition = _Vector3New() data.lastcameracf = _CFrameNew() data.camcf = _CFrameNew() data.updates = {} data.enemy = replicatedStorage.gametype.Value == "deathmatch" or (player ~= LocalPlayer and player.Team ~= LocalPlayer.Team) _GetPropertyChangedSignal(player, "Team"):Connect(function() refreshEnemyType(data) end) data.step = RunService.Stepped:Connect(function(delta) local char = player.Character data.character = char data.humanoid = char and _FindFirstChild(char, "Humanoid") data.head = char and _FindFirstChild(char, "Head") data.rootpart = char and _FindFirstChild(char, "HumanoidRootPart") data.god = data.humanoid and data.humanoid.Health ~= data.humanoid.Health data.alive = (char and data.humanoid and data.humanoid.Parent and data.humanoid.Health > 0 and data.humanoid.Health == data.humanoid.Health and data.rootpart and player.Status.Alive.Value) if data.god or data.alive then data.protected = char and _FindFirstChildOfClass(char, "ForceField") ~= nil if data.currentPosition then data.lastPosition = data.currentPosition end data.currentPosition = data.rootpart and data.rootpart.Position if data.camcf then data.lastcameracf = data.camcf end data.camcf = _FindFirstChild(player, "CameraCF") and _FindFirstChild(player, "CameraCF").Value or _CFrameNew() _TableInsert(data.updates, 1, {position = data.currentPosition, velocity = data.velocity, time = _Tick()}) local samples = 5 local totalDelta = 0 local totalDistance = _Vector3New() for i = 2, _MathMin(samples, #data.updates) do local now = data.updates[i] local prev = data.updates[i - 1] totalDelta = totalDelta + (now.time - prev.time) totalDistance = totalDistance + (now.position - prev.position) end data.velocity = totalDistance / totalDelta else table.clear(data.updates) data.protected = false data.character = nil data.alive = false data.lastVelocity = _Vector3New() data.velocity = _Vector3New() data.currentPosition = _Vector3New() data.lastPosition = _Vector3New() data.humanoid = nil data.head = nil data.rootpart = nil end end) PlayerModule.storage[player] = data end function PlayerModule.remove(player) if PlayerModule.storage[player] then PlayerModule.storage[player].step:Disconnect() table.clear(PlayerModule.storage[player]) PlayerModule.storage[player] = nil end end function PlayerModule:unload() for player,data in next, PlayerModule.storage do PlayerModule.remove(player) end table.clear(PlayerModule) PlayerModule = {} end for i,v in next, _GetPlayers(Players) do if v ~= LocalPlayer then PlayerModule.add(v) end end Players.PlayerAdded:Connect(PlayerModule.add) Players.PlayerRemoving:Connect(PlayerModule.remove) end do -- Calculations function Calculations:truncateNumber(number, decimalPlaces) local d = 10^decimalPlaces return _MathFloor(number*d)/d end function Calculations:map(x, start0, stop0, start1, stop1) return (x - start0)/(stop0 - start0)*(stop1 - start1) + start1 end function Calculations:safeUnit(vec, epsilon) local magnitude = vec.magnitude if magnitude > (epsilon or 1e-10) then return vec/magnitude end return typeof(vec) == "Vector2" and _Vector2New() or _Vector3New() end --Vector3s function Calculations:angleBetweenVector3(vec1, vec2) local angle = _MathAtan2(vec1:Cross(vec2).magnitude, vec1:Dot(vec2)) if angle < 0 then angle = tau - angle end return angle end function Calculations:pitchYawToLookVec(pitch, yaw) local cx = _MathCos(pitch) return _Vector3New(-cx*_MathSin(yaw), _MathSin(pitch), -cx*_MathCos(yaw)) end function Calculations:lookVecToPitchYaw(lookVec) local x, y, z = lookVec.x, lookVec.y, lookVec.z return _MathAtan2(y, (x*x + z*z)^0.5), _MathAtan2(-x, -z) end --Vector2s function Calculations:angleBetweenVector2(vec1, vec2) local ang = math.acos(Calculations:safeUnit(vec1):Dot(Calculations:safeUnit(vec2))) if ang < 0 then ang = tau - ang end return ang end function Calculations:rotationMatrix(vec, angle) local mag = vec.Magnitude vec = Calculations:safeUnit(vec) local co, si = _MathCos(angle), _MathSin(angle) local x, y = vec.x, vec.y return Calculations:safeUnit(_Vector2New(x*co - y*si, x*si + y*co))*mag end function Calculations:normalizeAngle(angle) return ((angle + pi) % (2*pi)) - pi end do local fov local viewportX, viewportY local frustumYScale local frustumXScale local rScaleX, rScaleY local function refresh() viewportSize = camera.ViewportSize fov = camera.FieldOfView * math.pi/180 viewportX, viewportY = viewportSize.x, viewportSize.y frustumYScale = math.tan(fov/2) frustumXScale = viewportX/viewportY * frustumYScale rScaleX = (1 + frustumXScale*frustumXScale)^0.5 rScaleY = (1 + frustumYScale*frustumYScale)^0.5 end RunService.Stepped:Connect(refresh) function Calculations:worldToViewportPoint(worldPosition, clampEdge, clampOffset) local projectedPosition = _CFramePointToObjectSpace(camera.CFrame, worldPosition) local pX, pY, pZ = projectedPosition.x, projectedPosition.y, -projectedPosition.z local screenX = viewportX * (0.5 + pX/(2*pZ*frustumXScale)) local screenY = viewportY * (0.5 - pY/(2*pZ*frustumYScale)) local onScreen = pZ > 0 and screenX >= 0 and screenX <= viewportX and screenY >= 0 and screenY <= viewportY if not clampEdge then return _Vector3New(screenX, screenY, pZ), onScreen end if onScreen then return _Vector3New(screenX, screenY, pZ), true end local widthEdge, heightEdge = pX < 0 and clampOffset or viewportX - clampOffset, -pY < 0 and clampOffset or viewportY - clampOffset local m = 0.5*(pY*viewportX + pX*viewportY) local newY = (m - pY*widthEdge)/pX if newY > clampOffset and newY < (viewportY - clampOffset) then return _Vector3New(widthEdge, newY, pZ), false else local newX = (m - pX*heightEdge)/pY return _Vector3New(newX, heightEdge, pZ), false end end function Calculations:spherePoint(worldPosition, radius) local projectedPosition = _CFramePointToObjectSpace(camera.CFrame, worldPosition) local pX, pY, pZ = projectedPosition.x, projectedPosition.y, -projectedPosition.z local rX = rScaleX*radius local rY = rScaleY*radius return -pZ*frustumXScale < pX+rX and pX-rX < pZ*frustumXScale and -pZ*frustumYScale < pY+rY and pY-rY < pZ*frustumYScale and pZ > -radius end end end do --Utility Utility.chammedobjects = { ["Clothing"] = {}, ["Arms"] = {}, ["Weapon Objects"] = {}, ["Colored Arms"] = {}, ["Colored Weapons"] = {}, ["Original"] = {} } Utility.materials = { ["Ghost"] = _Materials.ForceField, ["Flat"] = _Materials.Neon, ["Custom"] = _Materials.SmoothPlastic, ["Reflective"] = _Materials.Glass, ["Metallic"] = _Materials.Glass } local IsPlayerAlive = function(Player) if Player and _FindFirstChild(Player, "Humanoid") and _FindFirstChild(Player, "Humanoid").Health > 0 then return true else return false end end Utility.IsPlayerAlive = IsPlayerAlive function Utility.CryptPosition(Pos) local X = (((Pos.X - 74312) * 4) + 1325) * 13 local Y = ((Pos.Y + 3183421) * 4) - 4201428 local Z = ((Pos.Z * 41) - 581357) * 2 return _Vector3New(X,Y,Z) end function Utility.IsHitBox(Name) if Cache.HitModifiers[Name] ~= nil then return true end return false end function Utility.UpdAmmo() local equipped = Cache.Client.equipped local ammo = 0 local primm = Cache.Client.vars.ammocount local secondary = Cache.Client.vars.ammocount2 if equipped == "primary" and primm >= 1 then ammo = primm - 1; Cache.Client.vars.ammocount = ammo elseif equipped == "secondary" and secondary >= 1 then ammo = secondary - 1; Cache.Client.vars.ammocount2 = ammo; end if ammo == 0 and _FindFirstChild(Cache.Client.fgun, "Melee") == nil then Cache.Client.autoreload() end Cache.Client.countammo() end function Utility.FakeShoot(Params) local client = Cache and Cache.Client if not client then return end local anim1 = debug.getupvalue(client.reloadwep, 9) local anim2 = debug.getupvalue(client.usethatgun, 5) local fgun = client.fgun local gun = _FindFirstChild(LocalPlayer.Character, "Gun") local arms = _FindFirstChild(camera, "Arms") if anim1 and Cache.Client.fgun ~= "none" then anim1:Play() replicatedStorage.Events.ReplicateAnimation:FireServer("Fire") if gun then local s = _FindFirstChild(gun, "SShoot") or _FindFirstChild(gun, "Shoot") or _FindFirstChild(gun, "Shoot1") if s then local snd = _Instancenew("Sound", camera) snd.SoundId = s.Value snd.PlayOnRemove = true _Destroy(snd) local flash = _FindFirstChild(gun, "Flash") local armsFlash = arms and _FindFirstChild(arms, "Flash") if flash and armsFlash then client.createparticle("muzzle", armsFlash) Events.RemoteEvent:FireServer({ "createparticle", "muzzle", flash }) if Params then for _, v in next, Params do client.hitobject(v["Hit"], v["Enter"], v["Normal"], client.fgun, false) client.hitobject(v["Hit"], v["Exit"], -v["Normal"], client.fgun, false) end end end end end end if anim2 then anim2:Play() end Utility.UpdAmmo() _CoroutineWrap(function() local updateads = client.updateads if not updateads or _Typeof(fgun) ~= "Instance" or not _IsA(fgun, "Folder") then return end local ads = _Select(2, _Pcall(debug.getupvalue, updateads, 1)) local auto = _FindFirstChild(fgun, "Auto") local unzoom = false if auto and _IsA(auto, "BoolValue") and not auto.Value and ads then _Pcall(debug.setupvalue, updateads, 1, false) _Pcall(updateads) unzoom = true end local rate = 0.1 local fr = _FindFirstChild(fgun, "FireRate") if fr and _IsA(fr, "NumberValue") then rate = fr.Value end local start = _Tick() while true do _TaskWait(0.016666666666666666) if fgun ~= client.fgun then return elseif not (_Tick() - start < rate) then break end end if unzoom then _Pcall(debug.setupvalue, updateads, 1, true) client.doublezoom = client.doublezoom _Pcall(updateads) end end)() end function Utility.DecryptPosition(pos) return _Vector3New(((pos.X / 13 - 1325) / 4) + 74312, ((pos.Y + 4201432) / 4) - 3183421, (pos.Z / 2 + 581357) / 41) end function Utility.CreateTracer(To,From,Color,Transparency,Width,Lifetime,Texture,TextureLength,TextureSpeed,FaceCamera,LightEmission,LightInfluence,Brightness,Beam_2,Color2,Transparency2) local part1 = _Instancenew("Part", workspace.Ray_Ignore) local part2 = _Instancenew("Part", workspace.Ray_Ignore) local beam = _Instancenew("Beam", part1) local beam2 = _Instancenew("Beam", part1) local attachment1 = _Instancenew("Attachment", part1) local attachment2 = _Instancenew("Attachment", part2) part1.Transparency = 1 part1.Position = To part1.CanCollide = false part1.Anchored = true part2.Position = From part2.Transparency = 1 part2.CanCollide = false part2.Anchored = true beam.Color = _ColorSequenceNew({_ColorSequenceKeypointNew(0, Color), _ColorSequenceKeypointNew(1, Color)}) beam.Transparency = _NumberSequenceNew({_NumberSequenceKeypointNew(0, Transparency), _NumberSequenceKeypointNew(1, Transparency)}) beam.Width0 = 0.0275*Width beam.Width1 = 0.0275*Width beam.FaceCamera = FaceCamera beam.Texture = Cache.TracerTextures[Texture] beam.TextureLength = TextureLength beam.TextureSpeed = TextureSpeed beam.LightEmission = LightEmission beam.LightInfluence = LightInfluence beam.Brightness = Brightness beam.Attachment0 = attachment1 beam.Attachment1 = attachment2 if Beam_2 then beam2.Color = _ColorSequenceNew({_ColorSequenceKeypointNew(0, Color2), _ColorSequenceKeypointNew(1, Color2)}) beam2.Transparency = _NumberSequenceNew({_NumberSequenceKeypointNew(0, Transparency2), _NumberSequenceKeypointNew(1, Transparency2)}) beam2.Width0 = 0.0125*Width beam2.Width1 = 0.0125*Width beam2.Brightness = Brightness beam2.FaceCamera = FaceCamera beam2.LightEmission = LightEmission beam2.LightInfluence = LightInfluence beam2.TextureLength = TextureLength beam2.TextureSpeed = TextureSpeed beam2.Texture = Cache.TracerTextures[Texture] beam2.Attachment0 = attachment1 beam2.Attachment1 = attachment2 else _Destroy(beam2) end _TaskSpawn(function() _TaskWait(Lifetime) local duration = Flags["BulletTracerFadetime"] local originalWidth0beam1 = beam.Width0 local originalWidth1beam1 = beam.Width1 local originalWidth0beam2 = beam2 and beam2.Width0 or 0 local originalWidth1beam2 = beam2 and beam2.Width1 or 0 local passed = 0 while passed < duration do local ratio = 1 - (passed / duration) beam.Width0 = originalWidth0beam1 * ratio beam.Width1 = originalWidth1beam1 * ratio if beam2 then beam2.Width0 = originalWidth0beam2 * ratio beam2.Width1 = originalWidth1beam2 * ratio end passed = passed + _TaskWait() end _Destroy(part1) _Destroy(part2) end) end function Utility.saveViewmodel() Utility.chammedobjects["Weapon Objects"] = {} Utility.chammedobjects["Arms"] = {} Utility.chammedobjects["Clothing"] = {} Utility.chammedobjects["Original"] = {} if LocalPlayer.Status.Alive.Value == false then return end if camera:FindFirstChild("Arms") then for i, v in next, (camera.Arms:GetChildren()) do if v:IsA("Model") and v:FindFirstChild("Right Arm") and v:FindFirstChild("Left Arm") then table.insert(Utility.chammedobjects["Arms"], v["Right Arm"]) table.insert(Utility.chammedobjects["Arms"], v["Left Arm"]) table.insert(Utility.chammedobjects["Clothing"], v["Right Arm"]:FindFirstChild("RGlove") or v["Right Arm"]:FindFirstChild("Glove")) table.insert(Utility.chammedobjects["Clothing"], v["Left Arm"]:FindFirstChild("LGlove") or v["Left Arm"]:FindFirstChild("Glove")) table.insert(Utility.chammedobjects["Clothing"], v["Right Arm"]:FindFirstChild("Sleeve")) table.insert(Utility.chammedobjects["Clothing"], v["Left Arm"]:FindFirstChild("Sleeve")) elseif (v:IsA("BasePart") or v:IsA("MeshPart") or v:IsA("SpecialMesh") or v:IsA("SurfaceAppearance")) and v.Transparency == 0 or v.Name == "HumanoidRootPart" then if v.Name == "HumanoidRootPart" then v.Transparency = 1 else table.insert(Utility.chammedobjects["Weapon Objects"], v) if v:FindFirstChild("SurfaceAppearance") then table.insert(Utility.chammedobjects["Weapon Objects"], v:FindFirstChild("SurfaceAppearance")) end end end end else return end for idx, objects in next, ({Utility.chammedobjects["Arms"], Utility.chammedobjects["Clothing"], Utility.chammedobjects["Weapon Objects"]}) do for i, v in next, (objects) do if v:IsA("BasePart") or v:IsA("MeshPart") or v:IsA("SpecialMesh") then local property = { Color = v.Color, Material = v.Material, Reflectance = v.Reflectance, Transparency = v.Transparency } if v:IsA("MeshPart") then property.TextureID = v.TextureID elseif v:IsA("SpecialMesh") then property.TextureId = v.TextureId end Utility.chammedobjects["Original"][v] = property if v:FindFirstChildOfClass("MeshPart") or v:FindFirstChildOfClass("SpecialMesh") then local HiddenMesh = v:FindFirstChildOfClass("MeshPart") or v:FindFirstChildOfClass("SpecialMesh") if HiddenMesh:IsA("MeshPart") then Utility.chammedobjects["Original"][HiddenMesh] = { TextureID = HiddenMesh.TextureID } else Utility.chammedobjects["Original"][HiddenMesh] = { TextureId = HiddenMesh.TextureId, VertexColor = HiddenMesh.VertexColor } end end elseif v:IsA("SurfaceAppearance") then Utility.chammedobjects["Original"][v] = { Parent = v.Parent } end end end end function Utility.updateWeaponChams() for i, v in next, (Utility.chammedobjects["Colored Weapons"]) do local originalproperties = Utility.chammedobjects["Original"][v] if originalproperties then for i2, v2 in next, (originalproperties) do v[i2] = v2 end end end Utility.chammedobjects["Colored Weapons"] = {} if Flags["Model_Changer_Weapon"] then local Animation = "" local thing = Utility.chammedobjects["Colored Weapons"] if Flags["Model_Changer_Material"] == "Ghost" then Animation = forcefieldAnimations[Flags["Model_Changer_Texture"]] end for i, v in next, (Utility.chammedobjects["Weapon Objects"]) do if v:IsA("Part") or v:IsA("MeshPart") or v:IsA("SpecialMesh") then thing[1 + #thing] = v v.Transparency = Flags["Model_Changer_Transperency"]/100 if v.Name ~= "Dot" then v.Color = Flags["Model_Changer_Color"] v.Material = Utility.materials[Flags["Model_Changer_Material"]] v.Reflectance = Flags["Model_Changer_Reflectance"]/100 if v:IsA("MeshPart") then v.TextureID = Animation end if v:IsA("SpecialMesh") then v.TextureId = Animation end local HiddenMesh = v:FindFirstChildOfClass("MeshPart") or v:FindFirstChildOfClass("SpecialMesh") if HiddenMesh ~= nil then if HiddenMesh:IsA("MeshPart") then HiddenMesh.TextureID = Animation HiddenMesh.Color = v.Color HiddenMesh.Material = v.Material HiddenMesh.Reflectance = v.Reflectance else HiddenMesh.TextureId = Animation HiddenMesh.VertexColor = _Vector3New(v.Color.r, v.Color.g, v.Color.b) end thing[1 + #thing] = HiddenMesh end end elseif v:IsA("SurfaceAppearance") then thing[1 + #thing] = v v.Parent = nil end end end end function Utility.updateArmChams() for i, v in next, (Utility.chammedobjects["Colored Arms"]) do local originalproperties = Utility.chammedobjects["Original"][v] if originalproperties then for i2, v2 in next, (originalproperties) do v[i2] = v2 end end end Utility.chammedobjects["Colored Arms"] = {} if Flags["Arms_Changer"] then local thing = Utility.chammedobjects["Colored Arms"] local Animation = "" if Flags["Arms_Changer_Material"] == "Ghost" then Animation = forcefieldAnimations[Flags["Arms_Changer_Texture"]] end for idx, objects in next, ({Utility.chammedobjects["Arms"], Utility.chammedobjects["Clothing"]}) do for i, v in next, (objects) do if v:IsA("BasePart") or v:IsA("MeshPart") or v:IsA("SpecialMesh") then v.Color = Flags["Arms_Changer_Color".. idx] v.Transparency = Flags["Arms_Transparency".. idx]/100 v.Material = Utility.materials[Flags["Arms_Changer_Material"]] thing[1 + #thing] = v v.Reflectance = idx == 1 and Flags["Arms_Reflective"]/100 or Flags["Arms_Reflective_Sleeve"]/100 if v:IsA("SpecialMesh") then v.VertexColor = _Vector3New(v.Color.r, v.Color.g, v.Color.b) if v:IsA("MeshPart") then v.TextureID = Animation else v.TextureId = Animation end end if v:FindFirstChildOfClass("MeshPart") or v:FindFirstChildOfClass("SpecialMesh") then local HiddenMesh = v:FindFirstChildOfClass("MeshPart") or v:FindFirstChildOfClass("SpecialMesh") thing[1 + #thing] = HiddenMesh if HiddenMesh:IsA("MeshPart") then HiddenMesh.TextureID = Animation else HiddenMesh.VertexColor = _Vector3New(v.Color.r, v.Color.g, v.Color.b) HiddenMesh.TextureId = Animation end end end end end end end local haltLocalChams = false camera.ChildAdded:Connect(function() haltLocalChams = true _TaskWait(0.1) Utility.saveViewmodel() haltLocalChams = false end) local everyOther = 0 RunService.Stepped:Connect(function() if haltLocalChams == true then return end everyOther = everyOther + 1 if everyOther > 4 then Utility.updateArmChams() everyOther = 0 end Utility.updateWeaponChams() end) function Utility.CreateImpact(To,Rotation,Color,Transparency,Material,Size,Lifetime) local impact = _Instancenew("Part", workspace.Ray_Ignore) impact.Transparency = Transparency impact.Color = Color impact.Size = _Vector3New(Size/2,Size/2,Size/2) impact.Position = To impact.Rotation = Rotation.Rotation or Rotation or _Vector3New() impact.CanCollide = false impact.Anchored = true impact.Material = Enum.Material[Material] _TaskSpawn(function() _TaskWait(Lifetime) for i=Transparency, 1.05, 0.05 do _TaskWait() impact.Transparency = i end _Destroy(impact) end) end end do --RageBot local LastShoot = _Tick() local CalculateDamageModifier = function(from, to, weapon, ignored) local Ignore = table.clone(ignored) local maxPen = weapon.Penetration.Value * 0.01 local maxWalls = Flags.RageBot_AutoWall and Flags.RageBot_MaxWalls or 0 local penModded = Flags.RageBot_PenModded local penPassed, walls = 0, 0 local realDir = to - from local dist = realDir.Magnitude local range = weapon.Range.Value * 0.0625 local dir = realDir.Unit * _MathMin(dist, range) local unit = realDir.Unit local enterParam = _RaycastParamsNew() enterParam.FilterType = Enum.RaycastFilterType.Blacklist enterParam.IgnoreWater = true enterParam.FilterDescendantsInstances = Ignore local exitParam = _RaycastParamsNew() exitParam.FilterType = Enum.RaycastFilterType.Whitelist local matMod = { [Enum.Material.DiamondPlate] = 3, [Enum.Material.CorrodedMetal] = 2, [Enum.Material.Metal] = 2, [Enum.Material.Concrete] = 2, [Enum.Material.Brick] = 2, [Enum.Material.Wood] = 0.1, [Enum.Material.WoodPlanks] = 0.1 } while true do local hit = workspaceRaycast(workspace, from, dir, enterParam) if not hit then return true, (1 - penPassed / maxPen), walls > 0 end local wall, pos, mat = hit.Instance, hit.Position, hit.Instance.Material Ignore[#Ignore + 1] = wall if wall.Name == "nowallbang" then return end local mod = matMod[mat] or 1 if wall.Name == "Grate" or _FindFirstChild(wall.Parent, "Humanoid") then mod = 0.1 local hum = _FindFirstChild(wall.Parent, "Humanoid") if hum then Ignore[#Ignore + 1] = wall.Parent end end if wall.Transparency == 1 or not wall.CanCollide or wall.Name == "Glass" or wall.Name == "Cardboard" or wall.Parent.Name == "Hitboxes" then mod = 0 end local partMod = _FindFirstChild(wall, "PartModifier") if partMod then mod = _tonumber(partMod.Value) end if mod >= 100 then return end if mod > 0 then mod /= penModded local maxDepth = (maxPen - penPassed) / mod local depth = _MathMin(maxDepth, (pos - to).Magnitude) if depth <= 0 then return end exitParam.FilterDescendantsInstances = { wall } local exit = workspaceRaycast(workspace, pos + unit * depth, -unit * depth, exitParam) if not exit then return end penPassed += (depth - exit.Distance) * mod walls += 1 end if penPassed >= maxPen or walls >= maxWalls then break end enterParam.FilterDescendantsInstances = Ignore end end Utility.AutoWall = CalculateDamageModifier local prepWaitUntil2 = 0 RunService.RenderStepped:Connect(function() if not Flags["KillAll_Enabled"] then return end local char = LocalPlayer.Character local now = _Tick() local MultiPlayer = Flags["KillAll_PingMultiPlayer"] / 1000 if workspace.Status.Preparation.Value then if prepWaitUntil2 == 0 then local ping = game.Stats.PerformanceStats.Ping:GetValue() local latency = ping / 1000 prepWaitUntil2 = now + 6 - latency - MultiPlayer end if now < prepWaitUntil2 then killedeveryone = false return end else prepWaitUntil2 = 0 end if not Utility.IsPlayerAlive(char) then return end local weapon = Cache.Client.fgun if not weapon or weapon == "none" then return end for _, p in next, PlayerModule.storage do if p.alive and not p.god then HitPart:FireServer( p.head, {X = 0/0, Y = 0/0, Z = 0/0}, "Banana", 1, _FindFirstChild(LocalPlayer.Character, "Gun"), nil, math.huge, false, false, _Vector3New(), 1, _Vector3New(), true ) end end end) local prepWaitUntil = 0 RunService.RenderStepped:Connect(function() local char = LocalPlayer.Character local now = _Tick() local MultiPlayer = Flags["RageBot_PingMultiPlayer"] / 1000 if workspace.Status.Preparation.Value and not Flags.RageBot_Preparation then if prepWaitUntil == 0 then local ping = game.Stats.PerformanceStats.Ping:GetValue() local latency = ping / 1000 prepWaitUntil = now + 6 - latency - MultiPlayer end if now < prepWaitUntil then return end else prepWaitUntil = 0 end if not Flags.RageBot_Enabled or not Utility.IsPlayerAlive(char) then RageBot.Target.TargetPosition = nil RageBot.Target.CryptedPosition = nil RageBot.Target.Hit = nil RageBot.Target.HitName = nil RageBot.Target.TargetPlayer = nil RageBot.Target.Origin = nil return end local weapon = Cache.Client.fgun if not weapon then return end local weaponData = _FindFirstChild(replicatedStorage.Weapons, weapon.Name) if weaponData and _FindFirstChild(weaponData, "Melee") then return end local camCF = camera.CFrame local camPos, camLook = camCF.Position, camCF.LookVector local origin = (Flags.RageBot_Origins == "Camera" and camPos) or (Flags.RageBot_Origins == "Head" and char:FindFirstChild("Head") and char.Head.Position) or (char:FindFirstChild("Gun") and char.Gun:FindFirstChild("Flash") and char.Gun.Flash.Position) if not origin then return end local enemiesFound = false local useFov, maxFov = Flags.RageBot_FOV ~= 180, Flags.RageBot_FOV for _, p in next, PlayerModule.storage do if not (p.alive and p.enemy) or p.protected or p.god then continue end local root = p.character and p.character:FindFirstChild("HumanoidRootPart") if useFov and (not root or _MathDeg(math.acos(camLook:Dot((root.Position - camPos).Unit))) * 2 >= maxFov) then continue end local targetChar = p.player.Character if not targetChar then continue end if workspace.Status.Preparation.Value and Flags.RageBot_Preparation then continue end enemiesFound = true local fireRate = Flags.RageBot_FireRate and (Flags.RageBot_FireRateValue / 100) or (weapon.FireRate and weapon.FireRate.Value or 0.1) if now - LastShoot < fireRate then continue end RageBot.Target.TargetPosition = nil RageBot.Target.CryptedPosition = nil RageBot.Target.Hit = nil RageBot.Target.HitName = nil RageBot.Target.TargetPlayer = nil RageBot.Target.Origin = nil local ammo = Cache.Client.equipped == "primary" and Cache.Client.vars.ammocount or Cache.Client.equipped == "secondary" and Cache.Client.vars.ammocount2 if ammo and ammo <= 0 then Cache.Client.autoreload() continue end RageBot.Target.TargetPlayer = targetChar local ignore = {camera, workspace.Ray_Ignore, workspace.Debris, workspace.Map.Clips, workspace.Map.SpawnPoints, char, targetChar} local scan, valid = {}, {} for partGroup in next, Flags.RageBot_TargetParts do for _, name in next, Cache.hitgroups[partGroup] do local p = _FindFirstChild(targetChar, name) if p then scan[#scan+1], valid[p.Name] = {p, p.Position}, {p, p.Position} end end end if Flags.ForwardTrack_Enabled and p.velocity.Magnitude > 0.01 then local param = RaycastParams.new() param.IgnoreWater = true param.FilterType = Enum.RaycastFilterType.Whitelist param.FilterDescendantsInstances = Flags.ForwardTrack_Ignore_Walls and {} or {workspace.Map} local ping = game.Stats.PerformanceStats.Ping:GetValue() * 2 local extrapolate = p.velocity * ((Flags.ForwardTrack_Ticks + ping) / 1000) local steps, target = Flags.ForwardTrack_Steps_to_Scan, p.head if target then for step = 1, steps do local offset = extrapolate * (step / steps) local data = valid["Head"] if data then local inst, center = data[1], data[2] local hit = workspaceRaycast(workspace, center, offset, param) scan[#scan + 1] = {inst, hit and hit.Position or center + offset, "Extrapolated", step} end end end end if Flags.Camera_Resolver then local cam = p.player.CameraCF.Value.p if cam == cam and cam ~= _Vector3New() and p.camcf ~= p.lastcameracf and (cam - p.rootpart.CFrame.p).Magnitude > 8 then local ref = scan[1][1] scan[#scan+1], valid[ref.Name] = {ref, cam}, {ref, cam} end end local origins = { {origin} } local base = _CFrameNew(origin, origin + camera.CFrame.LookVector.unit) local factor = Flags.RageBot_HitScan_Modifier if Flags.RageBot_HitScan then local hsPoints = Flags.RageBot_HitScan_Points if hsPoints.Up then origins[#origins+1] = {(base * _CFrameNew(0, factor, 0)).p} end if hsPoints.Down then origins[#origins+1] = {(base * _CFrameNew(0, -factor, 0)).p} end if hsPoints.Left then origins[#origins+1] = {(base * _CFrameNew(-factor, 0, 0)).p} end if hsPoints.Right then origins[#origins+1] = {(base * _CFrameNew(factor, 0, 0)).p} end if hsPoints.Backward then origins[#origins+1] = {(base * _CFrameNew(0, 0, factor)).p} end if hsPoints.Forward then origins[#origins+1] = {(base * _CFrameNew(0, 0, -factor)).p} end if hsPoints.Towards then origins[#origins+1] = {(base + (_CFrameNew(origin, p.currentPosition).LookVector.Unit * factor)).p} end end if Flags.RageBot_AutoPeek then local _, peekHit = workspace:FindPartOnRayWithWhitelist(_RayNew(origin, camera.CFrame.LookVector.unit * 21), {workspace.Map}, true) if peekHit then origins[#origins+1] = {peekHit - camera.CFrame.LookVector.unit, true} end end local scanGroups = {} do local groups = _MathMin(#origins, 8) local pointsPerGroup = _MathFloor(Flags.RageBot_HitScan_MaximumPoints / groups) for i = 1, groups do local originIndex = #origins > 1 and _MathRandom(#origins) or 1 local o = origins[originIndex] local groupPoints = {} for j = 1, _MathMin(#scan, pointsPerGroup) do local pointIndex = #scan > 1 and _MathRandom(#scan) or 1 groupPoints[#groupPoints+1] = scan[pointIndex] _TableRemove(scan, pointIndex) end _TableRemove(origins, originIndex) scanGroups[#scanGroups+1] = {origins = {o}, points = groupPoints} end end local baseDmg, armorPen, rangeMod = weapon.DMG.Value, weapon.ArmorPenetration.Value * 0.01, weapon.RangeModifier.Value local kev, helm = _FindFirstChild(targetChar, "Kevlar"), _FindFirstChild(targetChar, "Helmet") local minDmg, scans, mods = Flags.RageBot_MinDmg, {}, Cache.HitModifiers for _, group in next, scanGroups do for _, originData in next, group.origins do local from, autopeek = originData[1], originData[2] for _, point in next, group.points do local part, pos = point[1], point[2] local mod = mods[part.Name] if mod then local can, dmod, wallbang, params = CalculateDamageModifier(from, pos, weapon, ignore) if can and dmod then local dmg = baseDmg * mod * dmod if kev and (not _StringFind(part.Name, "Head") or helm) then dmg *= armorPen end dmg *= _MathClamp((rangeMod / 100) ^ ((from - pos).Magnitude / 34.7), 0.45, 1) if dmg > minDmg then scans[#scans+1] = { to = pos, from = from, instance = part, autopeek = autopeek, wallbang = wallbang, damagemodifier = dmod, damage = dmg, params = params } end end end end end end if #scans == 0 then continue end if #scans > 1 then _TableSort(scans, function(a, b) return a.damage > b.damage end) end local best = scans[1] if not best then continue end RageBot.Target.TargetPosition = best.instance.Position RageBot.Target.CryptedPosition = Utility.CryptPosition(best.instance.Position) RageBot.Target.HitName = best.instance.Name RageBot.Target.Hit = best.instance RageBot.Target.Origin = best.from HitPart:FireServer( best.instance, Flags.RageBot_Prediction and {X = 0/0, Y = 0/0, Z = 0/0} or RageBot.Target.CryptedPosition, weapon.Name, 0, _FindFirstChild(LocalPlayer.Character, "Gun"), nil, 1, false, best.wallbang, _Vector3New(), 0, _Vector3New(), true ) if best.autopeek then char.HumanoidRootPart.Position = best.from end if Flags.RageBot_FakeShoot then Utility.FakeShoot(best.params) end if Flags.RageBot_Auto_Scope then if Cache.Client.equipped ~= "none" and Cache.Client.equipped ~= "equipment3" and Cache.Client.gun ~= "none" and Cache.Client.gun and Cache.Client.gun:FindFirstChild("Scoped") then debug.setupvalue(Cache.Client.updateads, 1, true) Cache.Client.doublezoom = Flags.RageBot_Double_Scope Cache.Client.updateads() end end LastShoot = now --guys rate my bloxsense paste i real skid end if not enemiesFound then RageBot.Target.TargetPosition = nil RageBot.Target.CryptedPosition = nil RageBot.Target.Hit = nil RageBot.Target.HitName = nil RageBot.Target.TargetPlayer = nil end end) end do --AntiAims function AntiAim.PitchControl() local pitchMode = Flags["AntiAim_Pitch"] local angle = 0 if pitchMode == "Upwards" then angle = 1 elseif pitchMode == "Downwards" then angle = -1 elseif pitchMode == "Zero" then angle = 0 elseif pitchMode == "Random" then angle = _MathRandom(-10, 10) / 10 elseif pitchMode == "Glitch" then angle = 0/0 else return end local isClimbing = LocalPlayer.Character and _FindFirstChild(LocalPlayer.Character, "Climbing") ~= nil Events.ControlTurn:FireServer(angle, isClimbing) end function AntiAim.GetTargetPart() local closest = math.huge local target = nil for _, plr in ipairs(_GetPlayers(Players)) do if plr ~= LocalPlayer and plr.Team ~= LocalPlayer.Team then local char = plr.Character local hrp = char and _FindFirstChild(char, "HumanoidRootPart") local hum = char and _FindFirstChild(char, "Humanoid") if hrp and hum and hum.Health > 0 then local screenPos, onScreen = camera:WorldToViewportPoint(hrp.Position) if onScreen then local dist = (_Vector2New(screenPos.X, screenPos.Y) - _Vector2New(Mouse.X, Mouse.Y)).Magnitude if dist < closest then closest = dist target = hrp end end end end end return target end function AntiAim.YawControl() local char = LocalPlayer.Character local Root = char and _FindFirstChild(char, "HumanoidRootPart") if not Root then return end char.Humanoid.AutoRotate = false local CamLook = camera.CFrame.LookVector local baseYaw = -_MathAtan2(CamLook.Z, CamLook.X) + _MathRad(-90) local yawBase = Flags["AntiAim_YawBase"] local spinSpeed = Flags["AntiAimSpin_Speed"]*36 or 30 local yawOffset = Flags["AntiAimSpin_Yaw"] or 0 local offset = _MathRad(-yawOffset) if yawBase == "Spin" then baseYaw = baseYaw + _MathRad(_Tick() * spinSpeed % 360) elseif yawBase == "Random" then baseYaw = baseYaw + _MathRad(_MathRandom(0, 360)) end local cf = _CFrameNew(Root.Position) * _CFrameAngles(0, baseYaw + offset, 0) if yawBase == "Targets" then local targetPart = AntiAim.GetTargetPart() if targetPart then local direction = (targetPart.Position - Root.Position).Unit local lookAt = _CFrameNew(Root.Position, _Vector3New(targetPart.Position.X, Root.Position.Y, targetPart.Position.Z)) cf = lookAt * _CFrameAngles(0, offset, 0) end end Root.CFrame = cf end RunService.RenderStepped:Connect(function() if not Flags["AntiAim_Enabled"] then return end local char = LocalPlayer.Character if not Utility.IsPlayerAlive(char) then if char and _FindFirstChild(char, "Humanoid") then char.Humanoid.AutoRotate = true end return end AntiAim.PitchControl() AntiAim.YawControl() end) end do --Movement function Movement.GetCharacter() local character = LocalPlayer.Character if not character then return nil end local root = _FindFirstChild(character, "HumanoidRootPart") local humanoid = _FindFirstChild(character, "Humanoid") if not Utility.IsPlayerAlive(character) then return nil end if not root or not humanoid then return nil end return character, root, humanoid end function Movement.GetYRotation(cframe) local _, y = _CFrameToOrientation(cframe) return _CFrameNew(cframe.Position) * _CFrameAngles(0, y, 0) end function Movement.GetMoveDirection() local dir = Vector3.zero if _IsKeyDown(InputService, Enum.KeyCode.W) then dir += _Vector3New(0, 0, -1) end if _IsKeyDown(InputService, Enum.KeyCode.S) then dir += _Vector3New(0, 0, 1) end if _IsKeyDown(InputService, Enum.KeyCode.A) then dir += _Vector3New(-1, 0, 0) end if _IsKeyDown(InputService, Enum.KeyCode.D) then dir += _Vector3New(1, 0, 0) end return dir.Magnitude > 0 and dir.Unit or nil end RunService.Stepped:Connect(function() local character, root, humanoid = Movement.GetCharacter() if not character then return end if not Flags["Movement_SpeedHack"] then return end if _IsKeyDown(InputService, Enum.KeyCode.Space) then humanoid.Jump = true end local moveDir = Movement.GetMoveDirection() if not moveDir then return end local camCF = camera.CFrame local forward = Movement.GetYRotation(camCF):VectorToWorldSpace(moveDir) local Speed = Flags["Movement_OverrideSpeedHack"] and Flags["Movement_OverrideSpeed"] or Flags["Movement_Speed"] if Flags["Movement_SpeedHackMethod"] == "Velocity" then local velocity = forward * Speed root.Velocity = _Vector3New(velocity.X, root.Velocity.Y, velocity.Z) elseif Flags["Movement_SpeedHackMethod"] == "CFrame" then local offset = forward * (Speed / 50) root.CFrame += _Vector3New(offset.X, 0, offset.Z) end end) end Esp.chamsFolder = _Instancenew("Folder", CoreGui) Esp.espObjects = {} Esp.allDrawingObjects = {} Esp.droppedWeaponStorage = {} Esp.imagecache = {} function Esp.createDrawing(type, prop) local obj = Drawing.new(type) if prop then for index,value in next, prop do obj[index] = value end end _TableInsert(Esp.allDrawingObjects, obj) return obj end do --esp and chams Esp.gradentHealthBarSegments = 16 Esp.defaultProp = { outlineBox = { Visible = false, Transparency = 0.7, Color = _Color3FromRGB(10, 10, 10), Thickness = 3, Filled = false }, box = { Visible = false, Transparency = 1, Color = _Color3FromRGB(255, 255, 255), Thickness = 1, Filled = false }, boxFilled = { Visible = false, Transparency = 0.1, Color = _Color3FromRGB(255, 255, 255), Filled = true }, healthBarOutline = { Visible = false, Transparency = 0.7, Color = _Color3FromRGB(10, 10, 10), Thickness = 1, Filled = true }, healthBarOutlineOutline = { Visible = false, Transparency = 0.7, Color = _Color3FromRGB(10, 10, 10), Thickness = 1, Filled = false }, healthBar = { Visible = false, Transparency = 1, Color = _Color3FromRGB(0, 255, 0), Thickness = 1, Filled = true }, nameTag = { Visible = false, Size = 13, Font = Drawing.Fonts.Plex, Color = _Color3FromRGB(255, 255, 255), Transparency = 1, Center = true, Outline = true }, heldWeapon = { Visible = false, Size = 13, Font = 2, Color = _Color3FromRGB(255, 255, 255), Transparency = 1, Center = true, Outline = true }, healthNumber = { Visible = false, Size = 13, Font = Drawing.Fonts.Plex, Color = _Color3FromRGB(255, 255, 255), Transparency = 1, Center = true, Outline = true }, distanceTag = { Visible = false, Size = 13, Font = 2, Color = _Color3FromRGB(255, 255, 255), Transparency = 1, Center = true, Outline = true }, oofArrow = { Visible = false, Filled = true, Color = _Color3FromRGB(255, 0, 255), Thickness = 2, Transparency = 1 }, oofArrowOutline = { Visible = false, Filled = false, Color = _Color3FromRGB(255, 255, 255), Thickness = 4, Transparency = 0.9, }, cameraCircle = { Visible = false, Thickness = 1, Radius = 3, Transparency = 1, Filled = false }, snapLine = { Thickness = 1, Color = _Color3FromRGB(255, 255, 255), Transparency = 1, Visible = false }, flags = { Visible = false, Size = 13, Font = Drawing.Fonts.Plex, Color = _Color3FromRGB(255, 255, 255), Transparency = 1, Center = true, Outline = true }, } function Esp.initializeDrawingObjects(onScreen, offScreen, general) onScreen.outlineBox = { object = Esp.createDrawing("Square", Esp.defaultProp.outlineBox), originalTransparency = Esp.defaultProp.outlineBox.Transparency } onScreen.box = { object = Esp.createDrawing("Square", Esp.defaultProp.box), originalTransparency = Esp.defaultProp.box.Transparency } onScreen.boxFilled = { object = Esp.createDrawing("Square", Esp.defaultProp.boxFilled), originalTransparency = Esp.defaultProp.boxFilled.Transparency } onScreen.healthBarOutline = { object = Esp.createDrawing("Square", Esp.defaultProp.healthBarOutline), originalTransparency = Esp.defaultProp.healthBarOutline.Transparency } onScreen.healthBarOutlineOutline = { object = Esp.createDrawing("Square", Esp.defaultProp.healthBarOutlineOutline), originalTransparency = Esp.defaultProp.healthBarOutline.Transparency } onScreen.healthBar = { object = Esp.createDrawing("Square", Esp.defaultProp.healthBar), originalTransparency = Esp.defaultProp.healthBar.Transparency } for i = 1, Esp.gradentHealthBarSegments do onScreen["healthBarSegment" .. i] = { object = Esp.createDrawing("Square", Esp.defaultProp.healthBar), originalTransparency = Esp.defaultProp.healthBar.Transparency } end onScreen.nameTag = { object = Esp.createDrawing("Text", Esp.defaultProp.nameTag), originalTransparency = Esp.defaultProp.nameTag.Transparency } onScreen.heldWeapon = { object = Esp.createDrawing("Text", Esp.defaultProp.heldWeapon), originalTransparency = Esp.defaultProp.heldWeapon.Transparency } onScreen.healthNumber = { object = Esp.createDrawing("Text", Esp.defaultProp.healthNumber), originalTransparency = Esp.defaultProp.healthNumber.Transparency } onScreen.distanceTag = { object = Esp.createDrawing("Text", Esp.defaultProp.distanceTag), originalTransparency = Esp.defaultProp.distanceTag.Transparency } onScreen.armorTag = { object = Esp.createDrawing("Text", Esp.defaultProp.flags), originalTransparency = Esp.defaultProp.flags.Transparency } onScreen.bombTag = { object = Esp.createDrawing("Text", Esp.defaultProp.flags), originalTransparency = Esp.defaultProp.flags.Transparency } onScreen.moneyTag = { object = Esp.createDrawing("Text", Esp.defaultProp.flags), originalTransparency = Esp.defaultProp.flags.Transparency } offScreen.oofArrow = { object = Esp.createDrawing("Triangle", Esp.defaultProp.oofArrow), originalTransparency = Esp.defaultProp.oofArrow.Transparency } offScreen.oofArrowOutline = { object = Esp.createDrawing("Triangle", Esp.defaultProp.oofArrowOutline), originalTransparency = Esp.defaultProp.oofArrowOutline.Transparency } onScreen.cameraCircle = { object = Esp.createDrawing("Circle", Esp.defaultProp.cameraCircle), originalTransparency = Esp.defaultProp.cameraCircle.Transparency } general.snapLine = { object = Esp.createDrawing("Line", Esp.defaultProp.snapLine), originalTransparency = Esp.defaultProp.snapLine.Transparency } end function Esp.getBoundingBox(rootCf, headCf, rootSize, headSize, hipHeight, cacheTable) if cacheTable and rootCf then cacheTable.rootCf = rootCf cacheTable.headCf = headCf cacheTable.rootSize = rootSize cacheTable.headSize = headSize cacheTable.hipHeight = hipHeight elseif not rootCf then rootCf = cacheTable.rootCf headCf = cacheTable.headCf rootSize = cacheTable.rootSize headSize = cacheTable.headSize hipHeight = cacheTable.hipHeight end local th = headCf * _Vector3New(0, headSize.y*0.5 + 0.5, 0) local bf = rootCf * _Vector3New(0, -(rootSize.y*0.5 + hipHeight + 0.5), 0) local td = (th - rootCf.p).Magnitude local bd = (rootCf.p - bf).Magnitude local up = rootCf.UpVector local tp = rootCf.p + up*td local bp = rootCf.p - up*bd local top = Calculations:worldToViewportPoint(tp) local bottom = Calculations:worldToViewportPoint(bp) local width = math.abs(top.x - bottom.x) local height = _MathMax(math.abs(top.y - bottom.y), width / 1.75) local size = _Vector2New(_MathFloor(_MathMax(height / 1.7, width * 2.5)), _MathFloor(height)) local pos = _Vector2New(_MathFloor((bottom.x - size.x + top.x) / 2), _MathFloor(_MathMin(top.y, bottom.y))) return Rect.new(pos, pos + size) end function Esp.applyEsp(player) repeat _TaskWait() until PlayerModule.storage[player] _TaskWait(1) local this = {} this.drawingObjects = { drawOnScreen = {}, drawOffScreen = {}, drawGeneral = {}, stoppedRenderingOnScreen = true, stoppedRenderingOffScreen = true, lastData = { headPos = nil, torsoCf = nil, health = nil, maxHealth = nil }, } this.transparencyEvent = _Instancenew("BindableEvent") this.healthPercentageSpring = spring.new() this.healthPercentageSpring.s = 24 this.timePassed = 0 this.chamsObjects = {} this.skeletons = {} this.chamsTransConnections = {} this.updatechams = false this.transConnections = {} this.theirpInfo = PlayerModule.storage[player] Esp.initializeDrawingObjects(this.drawingObjects.drawOnScreen, this.drawingObjects.drawOffScreen, this.drawingObjects.drawGeneral) for i,v in next, this.drawingObjects.drawOnScreen do _TableInsert(this.transConnections, this.transparencyEvent.Event:Connect(function(transparency) v.object.Transparency = v.originalTransparency * (1 - transparency) end)) end for i,v in next, this.drawingObjects.drawOffScreen do _TableInsert(this.transConnections, this.transparencyEvent.Event:Connect(function(transparency) v.object.Transparency = v.originalTransparency * (1 - transparency) end)) end for i,v in next, this.drawingObjects.drawGeneral do _TableInsert(this.transConnections, this.transparencyEvent.Event:Connect(function(transparency) v.object.Transparency = v.originalTransparency * (1 - transparency) end)) end function this.chamsremoved(character) for i = #this.chamsObjects, 1, -1 do local object = _TableRemove(this.chamsObjects, i) if object then _Destroy(object) object = nil end end for i = #this.skeletons, 1, -1 do local v = _TableRemove(this.skeletons, i) if v then v.step:Disconnect() v.step = nil v.line:Remove() v.line = nil v.weld = nil end end end local transparencyFix = function() local character = player.Character if not character then return end local pInfo = PlayerModule.storage[player] if not pInfo then return end local section = (this and this.theirpInfo and this.theirpInfo.enemy) and "Enemy_" or "Team_" local chamsEnabled = Flags[section .. "Chamses"] local targetTransparency = chamsEnabled and 1 or 0 for _, accessory in ipairs(_GetChildren(character)) do if _IsA(accessory, "Accessory") then for _, part in ipairs(_GetChildren(accessory)) do if _IsA(part, "BasePart") then part.Transparency = targetTransparency end end end end end function this.chamsadded(character) repeat _TaskWait() until character ~= nil local humanoid = character:WaitForChild("Humanoid", 1/0) local humanoidRootPart = character:WaitForChild("HumanoidRootPart", 1/0) if humanoid.Health <= 0 then return end local pInfo = PlayerModule.storage[player] if not pInfo then repeat pInfo = PlayerModule.storage[player] _TaskWait() until pInfo end --what the dog doing local section = this and this.theirpInfo and this.theirpInfo.enemy and "Enemy_" or "Team_" humanoidRootPart.AncestryChanged:Connect(function(child, new) if new == nil then this.chamsremoved() end end) local yeah = _Tick() local loop loop = RunService.Stepped:Connect(function() if _Tick() - yeah > 5 then loop:Disconnect() loop = nil end transparencyFix() end) for i,v in next, _GetChildren(character) do if _IsA(v,"MeshPart") or _IsA(v,"BasePart") and _FindFirstChildOfClass(v, "Motor6D") and (v.Transparency ~= 1 or v.Name == "Head") then if v.Name == "BackC4" then return end local weld = _FindFirstChildOfClass(v, "Motor6D") if weld.Part0 == character.HumanoidRootPart or weld.Part1 == character.HumanoidRootPart then else if weld and weld.Part0 and weld.Part1 then local data = {} data.weld = weld data.line = Esp.createDrawing("Line", { Thickness = 1, Color = Flags[section.. "Skeletons_Color1"], Visible = false, Transparency = 0.5 }) local hasBeenHidden = false data.step = RunService.Stepped:Connect(function() local section = this and this.theirpInfo and this.theirpInfo.enemy and "Enemy_" or "Team_" if Flags[section.. "Skeletons"] then hasBeenHidden = false local p0, v0 = Calculations:worldToViewportPoint(data.weld.Part0.Position) local p1, v1 = Calculations:worldToViewportPoint(data.weld.Part1.Position) if v0 and v1 then data.line.From = _Vector2New(_MathFloor(p0.x), _MathFloor(p0.y)) data.line.To = _Vector2New(_MathFloor(p1.x), _MathFloor(p1.y)) data.line.Color = Flags[section.. "Skeletons_Color1"] data.line.Visible = true else data.line.Visible = false end else if hasBeenHidden ~= true then data.line.Visible = false hasBeenHidden = true end end end) _TableInsert(this.skeletons, data) end end end if _IsA(v,"BasePart") and v.Name ~= "HumanoidRootPart" and v.Name ~= "Gun" and v.Name ~= "BackC4" and v.Name ~= "HeadHB" and v.Name ~= "Head" then local isHead = v.Name == "FakeHead" local inner = _Instancenew(isHead and "CylinderHandleAdornment" or "BoxHandleAdornment") local outline = _Clone(inner) inner.Name = "inner" inner.AlwaysOnTop = true inner.Color3 = Flags[section.. "Chamses_Color1"] inner.Transparency = Flags[section.. "Chamses_Transperency1"]/10 inner.Visible = Flags[section.. "Chamses"] inner.ZIndex = 2 inner.Adornee = v inner.Parent = Esp.chamsFolder outline.Name = "outer" outline.AlwaysOnTop = false outline.Color3 = Flags[section.. "Chamses_Color2"] outline.Transparency = Flags[section.. "Chamses_Transperency2"]/10 outline.Visible = inner.Visible outline.ZIndex = -1 outline.Adornee = v outline.Parent = Esp.chamsFolder if isHead then inner.CFrame = _CFrameAngles(math.pi / 2, 0, 0) inner.Radius = v.Size.x * 0.58 + 0.001 inner.Height = v.Size.y + 0.17 outline.CFrame = inner.CFrame outline.Radius = v.Size.x * 0.58 + 0.15 outline.Height = v.Size.y + 0.32 else inner.Size = v.Size + _Vector3New(0.001, 0.001, 0.001) outline.Size = v.Size + _Vector3New(0.15, 0.15, 0.15) end _TableInsert(this.chamsObjects, inner) _TableInsert(this.chamsObjects, outline) end end end local lastFlags = {} function this.updateChams() if not this or not this.theirpInfo then return end local isEnemy = this.theirpInfo.enemy local section = isEnemy and "Enemy_" or "Team_" local chamsEnabled = Flags[section .. "Chamses"] local color1 = Flags[section .. "Chamses_Color1"] local color2 = Flags[section .. "Chamses_Color2"] local transparency1 = Flags[section .. "Chamses_Transperency1"] local transparency2 = Flags[section .. "Chamses_Transperency2"] local flagKey = section .. "_chamsHash" local currentHash = _tostring(chamsEnabled) .. _tostring(color1) .. _tostring(color2) .. transparency1 .. transparency2 if lastFlags[flagKey] == currentHash then return end lastFlags[flagKey] = currentHash local chams = this.chamsObjects if chams then for _, v in next, chams do v.Visible = chamsEnabled if v.Name == "inner" then v.Color3 = color1 v.Transparency = chamsEnabled and transparency1 / 10 or 1 elseif v.Name == "outer" then v.Color3 = color2 v.Transparency = chamsEnabled and transparency2 / 10 or 1 end end transparencyFix() end end function this.renderOnScreen(info) if info.pInfo then this.drawingObjects.lastData.pInfo = info.pInfo else info.pInfo = this.drawingObjects.lastData.pInfo end local health = info.health local maxHealth = info.maxHealth local section = ((this and this.theirpInfo and this.theirpInfo.enemy and "Enemy_") or "Team_") local boundingRect = info.boundingRect local drawOnScreen = this.drawingObjects.drawOnScreen local boxOutline = drawOnScreen.outlineBox.object local box = drawOnScreen.box.object local boxFilled = drawOnScreen.boxFilled.object local healthBar = drawOnScreen.healthBar.object local healthBarOutline = drawOnScreen.healthBarOutline.object local healthBarOutlineOutline = drawOnScreen.healthBarOutlineOutline.object local healthNumber = drawOnScreen.healthNumber.object local heldWeapon = drawOnScreen.heldWeapon.object local distanceTag = drawOnScreen.distanceTag.object local nameTag = drawOnScreen.nameTag.object local armorTag = drawOnScreen.armorTag.object local moneyTag = drawOnScreen.moneyTag.object local bombTag = drawOnScreen.bombTag.object local fakeindicator = 0 local flagoffset = 0 local textCase = Flags["Esp_Settings_TextCase"] local textSize = Flags["Esp_Settings_TextSize"] local textFont = Drawing.Fonts[Flags["Esp_Settings_TextFont"]] local textFlagCase = Flags["Esp_Settings_FlagTextCase"] local textFlagSize = Flags["Esp_Settings_FlagTextSize"] local textFlagFont = Drawing.Fonts[Flags["Esp_Settings_FlagTextFont"]] this.healthPercentageSpring.t = info.pInfo.god == true and 0 or health/maxHealth if info.pInfo.character and _FindFirstChild(info.pInfo.character, "EquippedTool") then this.drawingObjects.lastData.weapon = textCase == "lowercase" and info.pInfo.character.EquippedTool.Value:lower() or textCase == "UPPERCASE" and info.pInfo.character.EquippedTool.Value:upper() or info.pInfo.character.EquippedTool.Value end if Flags[section.. "Boxes"] then box.Position = boundingRect.Min box.Size = boundingRect.Max - boundingRect.Min boxOutline.Position = box.Position boxOutline.Size = box.Size box.Color = Flags[section.. "Boxes_Color1"] boxFilled.Color = Flags[section.. "Boxes_Filled_Color1"] boxFilled.Transparency = 1 - Flags[section.. "Boxes_Filled_Transperency"]/10 if Flags[section.. "Boxes_Filled"] then boxFilled.Position = box.Position + _Vector2New(_MathFloor(box.Thickness / 2) + 1, _MathFloor(box.Thickness / 2) + 1) boxFilled.Size = box.Size - _Vector2New(box.Thickness + 1, box.Thickness + 1) boxFilled.Visible = true else boxFilled.Visible = false end box.Visible = true boxOutline.Visible = true else box.Visible = false boxFilled.Visible = false boxOutline.Visible = false end if Flags[section.. "Health_Bar"] then local hpMax = Flags[section.. "Health_Bar_Color1"] local hpLow = Flags[section.. "Health_Bar_Color2"] local healthPercentage = this.healthPercentageSpring.p local fullSize = boundingRect.Height local chunk = fullSize * healthPercentage healthBar.Size = _Vector2New(2, chunk) healthBar.Position = boundingRect.Min + _Vector2New(-5, fullSize - chunk) healthBarOutline.Size = _Vector2New(4, fullSize + 2) healthBarOutline.Position = boundingRect.Min + _Vector2New(-6, -1) healthBarOutlineOutline.Size = healthBarOutline.Size healthBarOutlineOutline.Position = healthBarOutline.Position healthBar.Color = hpLow:Lerp(hpMax, healthPercentage) local isGradient = Flags[section.. "Health_Bar_Gradient"] healthBar.Visible = not isGradient healthBarOutline.Visible = true healthBarOutlineOutline.Visible = true if isGradient then local sizePerSegment = math.ceil(fullSize / Esp.gradentHealthBarSegments) local maxSegments = fullSize / sizePerSegment + 1 local minSegments = chunk / sizePerSegment + 1 local skipped = maxSegments - minSegments local healthPos = healthBar.Position local healthSizeX = healthBar.Size.x local healthSizeY = healthBar.Size.y for i = 1, Esp.gradentHealthBarSegments do local segment = drawOnScreen["healthBarSegment" .. i].object local projectedPosMin = _Vector2New(0, (i-1) * sizePerSegment) local ProjectedPosMax = projectedPosMin + _Vector2New(0, sizePerSegment) if projectedPosMin.y > chunk then segment.Visible = false else segment.Visible = true segment.Position = healthPos + projectedPosMin segment.Size = _Vector2New(healthSizeX, ProjectedPosMax.y - healthSizeY > 0 and sizePerSegment - (ProjectedPosMax.y - healthSizeY) or sizePerSegment) segment.Color = hpMax:Lerp(hpLow, (i + skipped)/maxSegments) end end else if drawOnScreen["healthBarSegment1"].object.Visible == true then for i = 1, Esp.gradentHealthBarSegments do drawOnScreen["healthBarSegment" .. i].object.Visible = false end end end else healthBar.Visible = false healthBarOutline.Visible = false healthBarOutlineOutline.Visible = false if drawOnScreen["healthBarSegment1"].object.Visible == true then for i = 1, Esp.gradentHealthBarSegments do drawOnScreen["healthBarSegment" .. i].object.Visible = false end end end if Flags[section.. "Health_Bar"] and ((Flags[section.. "Health_Number"] and health <= Flags[section.. "Max_HP_Visibility_Cap"]) or info.pInfo.god) then local godded = info.pInfo.god healthNumber.Text = godded and "God" or _tostring(_MathFloor((this.healthPercentageSpring.p * maxHealth) + 0.5)) local offset = godded and 0 or (2 * this.healthPercentageSpring.p) - 1 healthNumber.Position = godded and boundingRect.Min + _Vector2New(-5 - healthBar.Size.x - (healthNumber.TextBounds.X/2), (boundingRect.Height*0.5) - healthNumber.TextBounds.Y/2 + (offset * (healthNumber.Size/4)) - (offset * 1)) or healthBar.Position + _Vector2New(-healthBar.Size.x - (healthNumber.TextBounds.X/2) - 1, -healthNumber.TextBounds.Y/2) + _Vector2New(0, (offset * (healthNumber.Size + 1) * 0.25)) healthNumber.Color = _Color3New(1, 1, 1) healthNumber.Visible = true else healthNumber.Visible = false end local theOffsetBullshit = 0 if Flags[section.. "Held_Weapon"] then heldWeapon.Text = this.drawingObjects.lastData.weapon heldWeapon.Size = textSize heldWeapon.Font = textFont heldWeapon.Position = boundingRect.Min + _Vector2New(_MathFloor(boundingRect.Width / 2), boundingRect.Height + 2) heldWeapon.Color = Flags[section.. "Held_Weapon_Color1"] heldWeapon.Visible = true theOffsetBullshit = theOffsetBullshit + textSize else heldWeapon.Visible = false end if Flags[section.. "Distance"] then distanceTag.Text = Calculations:truncateNumber((this.drawingObjects.lastData.headCf.p - camera.CFrame.p).Magnitude, 1) .. (textCase == "lowercase" and " st" or textCase == "UPPERCASE" and " ST" or " st") distanceTag.Position = boundingRect.Min + _Vector2New(_MathFloor(boundingRect.Width / 2), boundingRect.Height + theOffsetBullshit + 2) distanceTag.Size = textSize distanceTag.Font = textFont distanceTag.Color = Flags[section.. "Distance_Color1"] distanceTag.Visible = true else distanceTag.Visible = false end if Flags[section.. "Name"] then nameTag.Color = Flags[section.. "Name_Color1"] nameTag.Text = textCase == "lowercase" and player.Name:lower() or textCase == "UPPERCASE" and player.Name:upper() or player.Name nameTag.Position = boundingRect.Min + _Vector2New(_MathFloor(boundingRect.Width / 2), -2 - nameTag.TextBounds.y) nameTag.Size = textSize nameTag.Font = textFont nameTag.Visible = true else nameTag.Visible = false end if Flags[section.. "Armor"] then armorTag.Color = Flags[section.. "Armor_Color1"] local str = "" if _FindFirstChild(player, "Helmet") then str = str .. "H" end if _FindFirstChild(player, "Kevlar") then str = str .. "K" end local rawText = str local rawTextSplit = _StringSplit(rawText:lower(), "") if rawTextSplit[1] then rawTextSplit[1] = rawTextSplit[1]:upper() for i, char in next, rawTextSplit do if ((char == " " or char == "-") and i < #rawTextSplit) then rawTextSplit[i + 1] = rawTextSplit[i + 1]:upper() end end end local fixedText = _TableConcat(rawTextSplit) armorTag.Text = textFlagCase == "lowercase" and str:lower() or textFlagCase == "UPPERCASE" and str:upper() or fixedText armorTag.Position = boundingRect.Min + _Vector2New(_MathFloor(boundingRect.Width) + (armorTag.TextBounds.X / 2) + 2, -3) if str ~= "" then flagoffset = flagoffset + armorTag.TextBounds.Y end armorTag.Visible = true armorTag.Font = textFlagFont armorTag.Size = textFlagSize else armorTag.Visible = false end if Flags[section.. "Cash"] then moneyTag.Color = Flags[section.. "Cash_Color1"] moneyTag.Text = _tostring(player.Cash.Value) .. "$" moneyTag.Font = textFlagFont moneyTag.Size = textFlagSize moneyTag.Position = boundingRect.Min + _Vector2New(_MathFloor(boundingRect.Width) + (moneyTag.TextBounds.X / 2) + 2, -3 + flagoffset) flagoffset = flagoffset + moneyTag.TextBounds.Y moneyTag.Visible = true else moneyTag.Visible = false end if _FindFirstChild(workspace,"Status") and _FindFirstChild(workspace.Status,"HasBomb") and workspace.Status.HasBomb.Value == player.Name then this.drawingObjects.lastData.hadBomb = true else this.drawingObjects.lastData.hadBomb = false end if Flags[section.. "Bomb"] and this.drawingObjects.lastData.hadBomb then bombTag.Color = Flags[section.. "Bomb_Color1"] bombTag.Text = textFlagCase == "lowercase" and "bomb" or textFlagCase == "UPPERCASE" and "BOMB" or "Bomb" bombTag.Position = boundingRect.Min + _Vector2New(_MathFloor(boundingRect.Width) + (bombTag.TextBounds.X / 2) + 2, -3 + flagoffset) flagoffset = flagoffset + bombTag.TextBounds.Y bombTag.Visible = true else bombTag.Visible = false end this.updateChams() this.drawingObjects.stoppedRenderingOnScreen = false if not this.drawingObjects.stoppedRenderingOffScreen then this.drawingObjects.stoppedRenderingOffScreen = true for i,v in next, this.drawingObjects.drawOffScreen do v.object.Visible = false end end end function this.renderOffScreen(info) local pos = CFrame.lookAt(camera.CFrame.p, camera.CFrame.p + camera.CFrame.LookVector * _Vector3New(1, 0, 1)):PointToObjectSpace(info.position) if not (executor == "ScriptWare" and platform == "Mac") then local oofArrow = this.drawingObjects.drawOffScreen.oofArrow.object local oofArrowOutline = this.drawingObjects.drawOffScreen.oofArrowOutline.object if Flags["Enemy_Out_of_View_Arrows"] and this and this.theirpInfo and this.theirpInfo.enemy then local angle = _MathAtan2(pos.z, pos.x) local cx, sy = _MathCos(angle), _MathSin(angle) local cx1, sy1 = _MathCos(angle + math.pi/2), _MathSin(angle + math.pi/2) local cx2, sy2 = _MathCos(angle + math.pi/2*3), _MathSin(angle + math.pi/2*3) local viewport = camera.ViewportSize local bigger = _MathMax(viewport.x, viewport.y) local smaller = _MathMin(viewport.x, viewport.y) local arrowSize = _MathClamp(Flags["Enemy_Dynamic_Arrow_Size"] and Calculations:map((info.position - camera.CFrame.p).Magnitude, 1, 100, 30, 10) or Flags["Enemy_Arrow_Size"], 4, 1/0) local arrowPercentage = Flags["Enemy_Arrow_Distance"] local arrowOrigin = viewport/2 + (_Vector2New(cx, sy) * _Vector2New(bigger * arrowPercentage/200, smaller * arrowPercentage/200)) oofArrow.PointA = arrowOrigin + _Vector2New(arrowSize*2 * cx, arrowSize*2 * sy) oofArrow.PointB = arrowOrigin + _Vector2New(arrowSize * cx1, arrowSize * sy1) oofArrow.PointC = arrowOrigin + _Vector2New(arrowSize * cx2, arrowSize * sy2) oofArrow.Color = Flags["Enemy_Out_of_View_Arrows_Color1"] oofArrowOutline.PointA = oofArrow.PointA oofArrowOutline.PointB = oofArrow.PointB oofArrowOutline.PointC = oofArrow.PointC oofArrowOutline.Color = _Color3New(_MathMax(0, Flags["Enemy_Out_of_View_Arrows_Color1"].r * 0.5), _MathMax(0, Flags["Enemy_Out_of_View_Arrows_Color1"].g * 0.5), _MathMax(0, Flags["Enemy_Out_of_View_Arrows_Color1"].b * 0.5)) local trans = ((_MathCos(_Tick() * 2 * math.pi) * (0.75 - (0.25 * (_MathCos(_Tick() * 2 * math.pi))))) / 2) + 0.75 this.drawingObjects.drawOffScreen.oofArrow.originalTransparency = trans this.drawingObjects.drawOffScreen.oofArrowOutline.originalTransparency = trans oofArrow.Transparency = trans oofArrowOutline.Transparency = trans oofArrow.Visible = true oofArrowOutline.Visible = true else oofArrowOutline.Visible = false oofArrow.Visible = false end end this.drawingObjects.stoppedRenderingOffScreen = false if not this.drawingObjects.stoppedRenderingOnScreen then this.drawingObjects.stoppedRenderingOnScreen = true for i,v in next, this.drawingObjects.drawOnScreen do v.object.Visible = false end end end function this.renderGeneral(info) local snapLine = this.drawingObjects.drawGeneral.snapLine.object local pos, onScreen = Calculations:worldToViewportPoint(info.position, false, 50) if not onScreen then local angle local centerX, centerY = viewportSize.x/2, viewportSize.y/2 if pos.z > 0 then angle = _MathAtan2(pos.y - centerY, pos.x - centerX) else angle = _MathAtan2(centerY - pos.y, centerX - pos.x) end local x = _MathCos(angle) local y = _MathSin(angle) local slope = y/x local xEdge, yEdge = viewportSize.x, viewportSize.y if y < 0 then yEdge = 0 end if x < 0 then xEdge = 0 end local newY = slope*xEdge + centerY - slope*centerX if newY > 0 and newY < viewportSize.y then pos = _Vector2New(xEdge, newY) else pos = _Vector2New((yEdge - centerY + slope*centerX)/slope, yEdge) end end local section = this and this.theirpInfo and this.theirpInfo.enemy and "Enemy_" or "Team_" if Flags[section.. "Snap_Lines"] then local trans = (1 - (Flags[section.. "Snap_Lines_Transperency"])/10) * (onScreen and 1 or 0.5) snapLine.From = _Vector2New(_MathFloor(viewportSize.x / 2), _MathFloor(viewportSize.y - 50)) snapLine.To = _Vector2New(pos.x, pos.y) snapLine.Transparency = trans snapLine.Color = Flags[section.. "Snap_Lines_Color1"] snapLine.Visible = true else snapLine.Visible = false end end function this.onSpawned() local pInfo = PlayerModule.storage[player] repeat _TaskWait() until pInfo and pInfo.alive if this.step then this.step:Disconnect() this.step = nil end this.transparencyEvent:Fire(0) this.fadefinished = true this.step = RunService.Stepped:Connect(function(upTime, deltaTime) if pInfo and (pInfo.alive or pInfo.god) then local section = pInfo.enemy and "Enemy_" or "Team_" local health, maxHealth = pInfo.humanoid.Health, pInfo.humanoid.MaxHealth this.drawingObjects.lastData.health = health this.drawingObjects.lastData.maxHealth = maxHealth this.timePassed = 0 local onScreen = Calculations:spherePoint(pInfo.head.Position, 4) if onScreen then this.renderOnScreen({ boundingRect = Esp.getBoundingBox(pInfo.rootpart.CFrame, pInfo.head.CFrame, pInfo.rootpart.Size, pInfo.head.Size, pInfo.humanoid.HipHeight, this.drawingObjects.lastData), pInfo = pInfo, health = health, maxHealth = maxHealth }) else this.renderOffScreen({ position = pInfo.currentPosition }) end this.renderGeneral({ position = pInfo.currentPosition, pInfo = pInfo }) else if this and this.onDied then this.onDied() end end end) end function this.onDied() local pInfo = PlayerModule.storage[player] if this.step then this.step:Disconnect() this.step = nil end this.fadefinished = false this.timePassed = 0 this.step = RunService.Stepped:Connect(function(upTime, deltaTime) if not this.timePassed then this.timePassed = 1 end this.timePassed = this.timePassed + (deltaTime * 4) if this.timePassed >= 1 then if this.step then this.step:Disconnect() end for i,v in next, this.drawingObjects.drawOnScreen do v.object.Visible = false end for i,v in next, this.drawingObjects.drawOffScreen do v.object.Visible = false end for i,v in next, this.drawingObjects.drawGeneral do v.object.Visible = false end this.drawingObjects.stoppedRenderingOffScreen = true this.drawingObjects.stoppedRenderingOnScreen = true for i = #this.chamsTransConnections, 1, -1 do local con = _TableRemove(this.chamsTransConnections, i) if con then con:Disconnect() con = nil end end for i = #this.chamsObjects, 1, -1 do local object = _TableRemove(this.chamsObjects, i) if object then _Destroy(object) object = nil end end if this.step then this.step:Disconnect() this.step = nil end this.transparencyEvent:Fire(0) this.fadefinished = true else this.transparencyEvent:Fire(Calculations:map(this.timePassed, 0, 1, 0, 1)) if this.drawingObjects.lastData.headCf then local onScreen = Calculations:spherePoint(this.drawingObjects.lastData.headCf.p, 4) if onScreen then this.renderOnScreen({ boundingRect = Esp.getBoundingBox(nil, nil, nil, nil, nil, this.drawingObjects.lastData), health = 0, maxHealth = this.drawingObjects.lastData.maxHealth }) else this.renderOffScreen({ position = this.drawingObjects.lastData.headCf.p }) end this.renderGeneral({ position = this.drawingObjects.lastData.headCf.p }) else if not this.drawingObjects.stoppedRenderingOnScreen then this.drawingObjects.stoppedRenderingOnScreen = true for i,v in next, this.drawingObjects.drawOnScreen do v.object.Visible = false end end if not this.drawingObjects.stoppedRenderingOffScreen then this.drawingObjects.stoppedRenderingOffScreen = true for i,v in next, this.drawingObjects.drawOffScreen do v.object.Visible = false end end for i,v in next, this.drawingObjects.drawGeneral do v.object.Visible = false end end end end) end if player.Character and _FindFirstChild(player.Character, "HumanoidRootPart") then this.onSpawned() this.chamsadded(player.Character) end Esp.espObjects[player] = this end function Esp.removeEsp(player) local this = Esp.espObjects[player] if this then if this.step then this.step:Disconnect() end for i,v in next, this.drawingObjects.drawOnScreen do v.object:Remove() v.object = nil table.clear(v) end for i,v in next, this.drawingObjects.drawOffScreen do v.object:Remove() v.object = nil table.clear(v) end for i,v in next, this.drawingObjects.drawGeneral do v.object:Remove() v.object = nil table.clear(v) end for i = #this.chamsTransConnections, 1, -1 do local con = _TableRemove(this.chamsTransConnections, i) if con then con:Disconnect() con = nil end end for i = #this.transConnections, 1, -1 do local con = _TableRemove(this.transConnections, i) if con then con:Disconnect() con = nil end end _Destroy(this.transparencyEvent) this.healthPercentageSpring = nil table.clear(this) Esp.espObjects[player] = nil this = nil end end playerSpawned:Connect(function(plr, tick) local this = Esp.espObjects[plr] if this then this.chamsadded(plr.Character) this.onSpawned() end end) end for i,v in next, _GetPlayers(Players) do if v ~= LocalPlayer then _TaskSpawn(Esp.applyEsp, v) end end Players.PlayerAdded:Connect(Esp.applyEsp) Players.PlayerRemoving:Connect(Esp.removeEsp) do --Visuals do --Camera RunService.RenderStepped:Connect(function() if not Utility.IsPlayerAlive(LocalPlayer.Character) then return end if Crosshairs.Scope.Visible ~= true then camera.FieldOfView = Flags["Camera_FieldOfView"] end end) end Visuals.defaultlighting = { -- fuck it ["de_dust2"] = { Ambient = Color3.fromRGB(90, 74, 62), OutdoorAmbient = Color3.fromRGB(165, 156, 140), ClockTime = 13 }, ["de_seaside"] = { Ambient = Color3.fromRGB(211, 237, 255), OutdoorAmbient = Color3.fromRGB(180, 180, 180), ClockTime = 14 }, ["de_train"] = { Ambient = Color3.fromRGB(130, 118, 95), OutdoorAmbient = Color3.fromRGB(163, 161, 146), ClockTime = 9.5 }, ["de_mirage"] = { Ambient = Color3.fromRGB(214, 214, 214), OutdoorAmbient = Color3.fromRGB(165, 156, 140), ClockTime = 15 }, ["de_cache"] = { Ambient = Color3.fromRGB(214, 214, 214), OutdoorAmbient = Color3.fromRGB(165, 156, 140), ClockTime = 14 }, ["de_nuke"] = { Ambient = Color3.fromRGB(90, 74, 62), OutdoorAmbient = Color3.fromRGB(165, 156, 140), ClockTime = 13 }, ["de_vertigo"] = { Ambient = Color3.fromRGB(255, 255, 255), OutdoorAmbient = Color3.fromRGB(255, 255, 255), ClockTime = 15 }, ["de_inferno"] = { Ambient = Color3.fromRGB(130, 118, 95), OutdoorAmbient = Color3.fromRGB(163, 161, 146), ClockTime = 9.5 }, ["de_aztec"] = { Ambient = Color3.fromRGB(149, 175, 179), OutdoorAmbient = Color3.fromRGB(149, 159, 191), ClockTime = 15 } } Visuals.crosshair = {} Visuals.crosshair.drawingObjects = {} Visuals.crosshair.drawingObjects.outlines = {} for i = 1, 4 do Visuals.crosshair.drawingObjects.outlines[i] = Esp.createDrawing("Line", { Thickness = 3, Color = Color3.fromRGB(0, 0, 0), Transparency = 1, Visible = true }) end Visuals.crosshair.drawingObjects.objects = {} for i = 1, 4 do Visuals.crosshair.drawingObjects.objects[i] = Esp.createDrawing("Line", { Thickness = 1, Color = Color3.fromRGB(255, 255, 255), Transparency = 1, Visible = true }) end Visuals.crosshair.currentaddedrotation = 0 Visuals.crosshair.currentrotation = 0 function Visuals.updateGUI(upTime, deltaTime) if Flags["Custom_Crosshair"] then local crosshairColor = Flags["Custom_Crosshair_Color1"] local crosshairTrans = 0 local crosshairThickness = Flags["Crosshair_Thickness"] local crosshairOutline = Flags["Crosshair_Outlines"] for _, frame in next, LocalPlayer.PlayerGui.GUI.Crosshairs.Crosshair:GetChildren() do if not frame:IsA("ImageLabel") then frame.BackgroundTransparency = 1 end end local screenPos = camera.ViewportSize / 2 for i, v in next, Visuals.crosshair.drawingObjects.objects do v.Visible = Flags["Custom_Crosshair"] v.Color = crosshairColor v.Thickness = crosshairThickness v.Transparency = LocalPlayer.PlayerGui.GUI.Crosshairs.Scope.Visible and 0 or 1 - crosshairTrans local outline = Visuals.crosshair.drawingObjects.outlines[i] outline.Visible = v.Visible and crosshairOutline or false outline.Thickness = v.Thickness + 2 end local baseWidth = Flags["Crosshair_Width"] local baseLength = Flags["Crosshair_Length"] local baseWidthGap = Flags["Crosshair_Width_Gap"] local baseLengthGap = Flags["Crosshair_Length_Gap"] local baseRotation = Flags["Crosshair_Rotation"] local baseRotationSpeed = Flags["Crosshair_Rotation_Speed"] local animEnabled = Flags["Impulse_Crosshair"] local minSpeed = Flags["Minimum_Speed"] local maxSpeed = Flags["Maximum_Speed"] local minScale = Flags["Minimum_Length"] local maxScale = Flags["Maximum_Length"] local cycleSpeed = Flags["Cycle_Speed"] local time = tick() * cycleSpeed local lerpFactor = (math.sin(time) + 1) / 2 local animatedSpeed = animEnabled and (minSpeed + (maxSpeed - minSpeed) * lerpFactor) or baseRotationSpeed local animatedScale = animEnabled and (minScale + (maxScale - minScale) * lerpFactor) or 1 local width = baseWidth * animatedScale local length = baseLength * animatedScale local widthgap = baseWidthGap * animatedScale local lengthgap = baseLengthGap * animatedScale Visuals.crosshair.currentaddedrotation += (animatedSpeed * deltaTime) Visuals.crosshair.currentrotation = math.rad(baseRotation + Visuals.crosshair.currentaddedrotation) local outlineOffset = 1 local dir1 = _Vector2New(math.sin(Visuals.crosshair.currentrotation), math.cos(Visuals.crosshair.currentrotation)) local from1 = dir1 * lengthgap local to1 = from1 + dir1 * length local outfrom1 = from1 - dir1.Unit * outlineOffset local outto1 = to1 + dir1.Unit * outlineOffset local dir2 = _Vector2New(math.sin(Visuals.crosshair.currentrotation + math.pi / 2), math.cos(Visuals.crosshair.currentrotation + math.pi / 2)) local from2 = dir2 * widthgap local to2 = from2 + dir2 * width local outfrom2 = from2 - dir2.Unit * outlineOffset local outto2 = to2 + dir2.Unit * outlineOffset local a, a1 = Visuals.crosshair.drawingObjects.objects[1], Visuals.crosshair.drawingObjects.outlines[1] a.From = screenPos - from1 a.To = screenPos - to1 a1.From = screenPos - outfrom1 a1.To = screenPos - outto1 local b, b1 = Visuals.crosshair.drawingObjects.objects[2], Visuals.crosshair.drawingObjects.outlines[2] b.From = screenPos + from1 b.To = screenPos + to1 b1.From = screenPos + outfrom1 b1.To = screenPos + outto1 local c, c1 = Visuals.crosshair.drawingObjects.objects[3], Visuals.crosshair.drawingObjects.outlines[3] c.From = screenPos - from2 c.To = screenPos - to2 c1.From = screenPos - outfrom2 c1.To = screenPos - outto2 local d, d1 = Visuals.crosshair.drawingObjects.objects[4], Visuals.crosshair.drawingObjects.outlines[4] d.From = screenPos + from2 d.To = screenPos + to2 d1.From = screenPos + outfrom2 d1.To = screenPos + outto2 else for i, v in next, Visuals.crosshair.drawingObjects.objects do v.Visible = false Visuals.crosshair.drawingObjects.outlines[i].Visible = false end end end Visuals.updaterGUI = RunService.Stepped:Connect(Visuals.updateGUI) Toggles["Custom_Crosshair"]:OnChanged(function() if not Flags["Custom_Crosshair"] and not Flags["ThirdPerson_Enabled"] then for _, frame in next, LocalPlayer.PlayerGui.GUI.Crosshairs.Crosshair:GetChildren() do if frame:IsA("ImageLabel") then else frame.BackgroundTransparency = 0 end end end end) local textures = { "rbxassetid://304777684", "rbxassetid://419625073" } local model, handle, highlight = nil, nil, nil local angle, spin = 0, 0 local lastAssetId = 0 function Visuals.destroyAccessory() if model then pcall(function() model:Destroy() end) model = nil end if handle then pcall(function() handle:Destroy() end) handle = nil end highlight = nil end function Visuals.applyHighlight() if highlight then pcall(function() highlight:Destroy() end) highlight = nil end if not handle or not handle:IsA("BasePart") or not handle:IsDescendantOf(workspace) then return end local h = Instance.new("Highlight") h.Name = "AccessoryHighlight" h.Adornee = handle h.Enabled = Flags.Accessory_Highlight_Enabled h.FillColor = Flags.Accessory_Highlight_FillColor h.OutlineColor = Flags.Accessory_Highlight_OutlineColor h.FillTransparency = Flags.Accessory_Highlight_FillTransparency/10 h.OutlineTransparency = Flags.Accessory_Highlight_OutlineTransparency/10 h.Parent = handle highlight = h end function Visuals.loadAccessory() Visuals.destroyAccessory() local rawId = Flags.Accessory_ID local assetId = tonumber(rawId) if not assetId or assetId <= 0 then return end local success, asset = pcall(function() return game:GetObjects("rbxassetid://" .. assetId)[1] end) if not success or typeof(asset) ~= "Instance" then return end local part = asset:FindFirstChild("Handle", true) if not part or not part:IsA("BasePart") then return end part.Anchored = true part.CanCollide = false part.Transparency = 0 part.Parent = workspace model = asset handle = part Visuals.applyHighlight() end RunService.RenderStepped:Connect(function(dt) local currentId = tonumber(Flags.Accessory_ID) if currentId ~= lastAssetId then lastAssetId = currentId or 0 Visuals.loadAccessory() end if not Flags.Accessory_Enabled then if handle then handle.Transparency = 1 end if highlight then highlight.Enabled = false end return end if not handle or not handle:IsDescendantOf(workspace) then Visuals.loadAccessory() return end local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") if not root then return end handle.Transparency = 0 if highlight then highlight.Enabled = Flags.Accessory_Highlight_Enabled highlight.FillColor = Flags.Accessory_Highlight_FillColor highlight.OutlineColor = Flags.Accessory_Highlight_OutlineColor highlight.FillTransparency = Flags.Accessory_Highlight_FillTransparency/10 highlight.OutlineTransparency = Flags.Accessory_Highlight_OutlineTransparency/10 end angle += Flags.Accessory_Rotation_Speed * dt spin += Flags.Accessory_Spin_Speed * dt local orbit = Vector3.new( math.cos(math.rad(angle)) * Flags.Accessory_Distance, Flags.Accessory_Height, math.sin(math.rad(angle)) * Flags.Accessory_Distance ) handle.Position = root.Position + orbit handle.Orientation = Flags.Accessory_Spin_ItSelf and Vector3.new(0, spin % 360, 0) or Vector3.zero end) local Bdm = _Instancenew("Part") Bdm.Anchored = true Bdm.Transparency = 1 Bdm.Size = _Vector3New(100, 1, 100) Bdm.Parent = ScriptCacheFolder local Particles = _Instancenew("ParticleEmitter") Particles.Texture = "rbxassetid://304777684" Particles.Lifetime = NumberRange.new(Flags["Particles_LifeTime"]) Particles.Rate = 300 Particles.Speed = NumberRange.new(Flags["Particles_Speed"]) Particles.EmissionDirection = "Bottom" Particles.LightInfluence = 25 Particles.Size = _NumberSequenceNew({_NumberSequenceKeypointNew(0, 0.5), _NumberSequenceKeypointNew(1, 0.5)}) Particles.Parent = Bdm RunService.RenderStepped:Connect(function() if Utility.IsPlayerAlive(LocalPlayer.Character) then Bdm.Position = workspace.CurrentCamera.CFrame.Position + _Vector3New(0, 40, 0) Particles.Enabled = Flags["Particles_Enabled"] Particles.Color = _ColorSequenceNew(Flags["Particles_Color"]) if Flags["Particles_Texture"] == "Random" then Particles.Texture = textures[_MathRandom(1, #textures)] elseif Flags["Particles_Texture"] == "Snow" then Particles.Texture = "rbxassetid://304777684" else Particles.Texture = "rbxassetid://419625073" end Particles.Lifetime = NumberRange.new(Flags["Particles_LifeTime"]) Particles.Speed = NumberRange.new(Flags["Particles_Speed"]) end end) _Instancenew("BloomEffect", camera) local customAtmosphere = _Instancenew("Atmosphere", Lighting) local updateWorldColorStop = _Tick() function Visuals.updateworldcolor() if _FindFirstChild(Lighting, "Atmosphere") then if Lighting.Atmosphere ~= customAtmosphere then _Destroy(Lighting.Atmosphere) end end if _Tick() - updateWorldColorStop < 1/20 then return end updateWorldColorStop = _Tick() if Flags["Ambience_Enabled"] then Lighting.OutdoorAmbient = Flags["Ambience_Color"] Lighting.Ambient = Flags["Ambience_Color"] else if _FindFirstChild(workspace, "Map") and _FindFirstChild(workspace.Map, "Origin") then if Visuals.defaultlighting[workspace.Map.Origin.Value] ~= nil then for i, v in next, (Visuals.defaultlighting[workspace.Map.Origin.Value]) do Lighting[i] = v end end else Lighting.OutdoorAmbient = Color3.new(0.647059, 0.611765, 0.54902) Lighting.Ambient = Color3.new(0.509804, 0.462745, 0.372549) end end if Flags["Force_Time"] then Lighting.ClockTime = Flags["Force_TimeValue"] else Lighting.ClockTime = 9 end if Flags["Custom_Saturation"] then camera.ColorCorrection.TintColor = Flags["Custom_SaturationColor"] camera.ColorCorrection.Saturation = Flags["Custom_SaturationValue"] / 100 else camera.ColorCorrection.Saturation = 0 camera.ColorCorrection.TintColor = Color3.new(1, 1, 1) end camera.Bloom.Enabled = Flags["Custom_Bloom"] if Flags["Custom_Bloom"] then camera.Bloom.Intensity = Flags["Custom_BloomIntensity"] / 100 camera.Bloom.Size = Flags["Custom_BloomSize"] * 14 / 25 camera.Bloom.Threshold = Flags["Custom_BloomThreshold"] / 400 else camera.Bloom.Intensity = 0 camera.Bloom.Size = 0 camera.Bloom.Threshold = 0 end if Flags["Custom_Atmosphere"] then customAtmosphere.Color = Flags["Atmosphere_Color1"] customAtmosphere.Decay = Flags["Atmosphere_Color2"] customAtmosphere.Density = Flags["Custom_AtmosphereDensity"] / 100 customAtmosphere.Glare = Flags["Custom_AtmosphereGlare"] / 10 customAtmosphere.Haze = Flags["Custom_AtmosphereHaze"] / 10 else customAtmosphere.Density = 0 customAtmosphere.Glare = 0 customAtmosphere.Haze = 0 end --[[if Menu["Visuals"]["Misc"]["Custom Brightness"]["Toggle"]["Enabled"] then if Menu["Visuals"]["Misc"]["Brightness Mode"]["Value"] == "Fullbright" then Lighting.Brightness = 1 Lighting.GlobalShadows = false else Lighting.Brightness = 0 end else Lighting.GlobalShadows = true Lighting.Brightness = 1 end]] end RunService.Stepped:Connect(Visuals.updateworldcolor) end do --Misc Misc.hitsound = _Instancenew("Sound", camera) Misc.olddamage = 0 Misc.killsound = _Instancenew("Sound", camera) Misc.oldkills = 0 Misc.fakehrp = nil Misc.realhrp = nil Misc.lasthrpCf = _CFrameNew() Misc.hrpfix = nil Misc.lastreplicationtick = _Tick() function Misc.setupfakehrp(char) local oldhrp = char:WaitForChild("HumanoidRootPart", 1/0) Misc.realhrp = oldhrp Misc.lasthrpCf = Misc.realhrp.CFrame Misc.fakehrp = _Clone(oldhrp) Misc.realhrp.Name = "___" Misc.fakehrp.Name = "HumanoidRootPart" Misc.fakehrp.Parent = char cache.replace(Misc.realhrp, Misc.fakehrp) Misc.fakehrp.CFrame = Misc.lasthrpCf Misc.realhrp.CFrame = Misc.lasthrpCf end RunService.Stepped:Connect(function(delta) local char = LocalPlayer.Character if not Misc.realhrp or not Misc.fakehrp or not char then return end Misc.realhrp.CFrame = Misc.lasthrpCf Misc.realhrp.AssemblyLinearVelocity = _Vector3New() end) function Misc.removefakehrp() if Misc.fakehrp == nil then return end Misc.fakehrp.Name = "___" Misc.realhrp.CFrame = Misc.fakehrp.CFrame Misc.realhrp.Name = "HumanoidRootPart" _Destroy(Misc.fakehrp) Misc.fakehrp = nil Misc.realhrp = nil end LocalPlayer.CharacterRemoving:Connect(Misc.removefakehrp) RunService.Stepped:Connect(function() local delayedcf if not Misc.fakehrp or not Misc.realhrp or not LocalPlayer.Character then return end local fakehrp = Misc.fakehrp if fakehrp then delayedcf = fakehrp.CFrame if Flags["AntiAim_Enabled"] and Flags["AntiAim_In_Gravity"] then local velocity = fakehrp.Velocity.Magnitude local baseSpin = _MathRad(Flags["AntiAim_In_Gravity_BaseSpin"]) local maxSpin = _MathRad(Flags["AntiAim_In_Gravity_MaximumSpin"]) local spinSpeed = Flags["AntiAim_In_Gravity_Speed"] local speedFactor = _MathClamp(velocity / 16, 0, 1) local t = _Tick() local spinRange = baseSpin + (maxSpin - baseSpin) * speedFactor local x = _MathSin(t * spinSpeed) * spinRange local y = _MathCos(t * spinSpeed * 0.6) * spinRange local z = _MathSin(t * spinSpeed * 0.3) * spinRange local spinRotation = _CFrameAngles(x, y, z) delayedcf = delayedcf * spinRotation end if Flags["AntiAim_СFrame_Manipulation"] then delayedcf = delayedcf + _Vector3New(Flags["AntiAim_СFrame_Manipulation_X"], Flags["AntiAim_СFrame_Manipulation_Y"], Flags["AntiAim_СFrame_Manipulation_Z"]) delayedcf = delayedcf * _CFrameAngles(_MathRad(Flags["AntiAim_СFrame_Manipulation_X_Angles"]), _MathRad(Flags["AntiAim_СFrame_Manipulation_Y_Angles"]), _MathRad(Flags["AntiAim_СFrame_Manipulation_Z_Angles"]) ) end if Flags["FakeLags_Enabled"] then _TaskWait(Flags["FakeLags_Ticks"]/1000) local limit = Flags["FakeLags_Limit"] / 64 local timesincelastrefresh = _Tick() - Misc.lastreplicationtick if timesincelastrefresh < limit then return end end if Flags["FakeLags_PreventReplication"] then return end Misc.lasthrpCf = delayedcf Misc.lastreplicationtick = _Tick() end if _FindFirstChild(LocalPlayer.Character, "HeadHB") and _FindFirstChild(LocalPlayer.Character, "FakeHead") then if not _FindFirstChild(LocalPlayer.Character.HeadHB,"Weld") and not _FindFirstChild(LocalPlayer.Character.FakeHead, "Weld") then LocalPlayer.Character.FakeHead.AssemblyLinearVelocity = _Vector3New(0, 0, 0) LocalPlayer.Character.HeadHB.AssemblyLinearVelocity = _Vector3New(0, 0, 0) LocalPlayer.Character.FakeHead.CFrame = LocalPlayer.Character.Head.CFrame LocalPlayer.Character.HeadHB.CFrame = LocalPlayer.Character.Head.CFrame end end end) RunService.Heartbeat:Connect(function() if Flags["Inf_Ammo"] then LocalPlayer.PlayerGui.GUI.AmmoGUI.AmmoClip.Text = 't.me/zefersuwav' LocalPlayer.PlayerGui.GUI.AmmoGUI.AmmoReserve.Text = 't.me/zeferuswav' LocalPlayer.PlayerGui.GUI.AmmoGUI.AmmoClip.TextColor3 = _Color3FromRGB(255, 255, 255) Cache.Client.vars.ammocount = 133333337 Cache.Client.vars.primarystored = 133333337 Cache.Client.vars.ammocount2 = 133333337 Cache.Client.vars.secondarystored = 133333337 end end) function Misc.hitplayer() if LocalPlayer.Additionals.TotalDamage.Value > Misc.olddamage then if Flags["HitSounds_Enabled"] then local hitsoundID = Flags["HitSounds_Ids"] if hitsoundID == 'Skeet' then hitsoundID = '5447626464' elseif hitsoundID == 'Overwatch' then hitsoundID = '18410058858' elseif hitsoundID == 'Rust' then hitsoundID = '5043539486' elseif hitsoundID == 'Minecraft' then hitsoundID = '7273736372' elseif hitsoundID == 'Minecraft XP' then hitsoundID = '1053296915' elseif hitsoundID == 'Retro loud' then hitsoundID = '3976061026' elseif hitsoundID == 'Matchine gun' then hitsoundID = '17705555617' elseif hitsoundID == 'Ray' then hitsoundID = '131179973' elseif hitsoundID == 'Cod' then hitsoundID = '160432334' elseif hitsoundID == 'Beautiful' then hitsoundID = '5709456554' elseif hitsoundID == 'Killingspree' then hitsoundID = '937898383' elseif hitsoundID == 'Squash' then hitsoundID = '3466981613' elseif hitsoundID == 'Supersmash' then hitsoundID = '2039907664' elseif hitsoundID == 'CSGO' then hitsoundID = '7269900245' elseif hitsoundID == 'Slap' then hitsoundID = '4888372697' elseif hitsoundID == 'MCOOF' then hitsoundID = '5869422451' elseif hitsoundID == 'Quek' then hitsoundID = '4868633804' elseif hitsoundID == 'Epic' then hitsoundID = '7344303740' elseif hitsoundID == 'Osu' then hitsoundID = '7149919358' elseif hitsoundID == 'TF2 Pan' then hitsoundID = '3431749479' elseif hitsoundID == '1' then hitsoundID = '7349055654' elseif hitsoundID == 'Godlike' then hitsoundID = '7463103082' elseif hitsoundID == 'Ownage' then hitsoundID = '6887181639' elseif hitsoundID == 'Ultrakill' then hitsoundID = '937885646' elseif hitsoundID == 'Win' then hitsoundID = '341542437' elseif hitsoundID == 'Denied' then hitsoundID = '7356986865' elseif hitsoundID == 'Lessgo' then hitsoundID = '6782594987' elseif hitsoundID == 'Headshot' then hitsoundID = '5764885927' elseif hitsoundID == 'Bruh' then hitsoundID = '535690488' elseif hitsoundID == 'Bag' then hitsoundID = '364942410' elseif hitsoundID == 'Baimware' then hitsoundID = '6607339542' elseif hitsoundID == 'Neverlose' then hitsoundID = '6607204501' elseif hitsoundID == 'Pop' then hitsoundID = '105543133746827' elseif hitsoundID == 'Space' then hitsoundID = '3466982899' elseif hitsoundID == 'Electro' then hitsoundID = '3458224686' elseif hitsoundID == 'TF2' then hitsoundID = '3455144981' elseif hitsoundID == 'Percussion' then hitsoundID = '3466985670' elseif hitsoundID == 'Osu Mint' then hitsoundID = '81883450827543' elseif hitsoundID == 'Rocket' then hitsoundID = '9087976483' elseif hitsoundID == 'Vine Boom' then hitsoundID = '9088081730' elseif hitsoundID == 'Snap' then hitsoundID = '93172144688075' elseif hitsoundID == 'Vortex' then hitsoundID = '3466980212' elseif hitsoundID == 'Pow' then hitsoundID = '3516546035' elseif hitsoundID == 'Bell' then hitsoundID = '97724019712141' elseif hitsoundID == 'Retro' then hitsoundID = '3466984142' elseif hitsoundID == 'Fatality' then hitsoundID = '115982072912004' elseif hitsoundID == 'Beepo' then hitsoundID = '3466987025' end Misc.hitsound.SoundId = "rbxassetid://" .. hitsoundID Misc.hitsound.Volume = Flags["HitSounds_Volume"] / 10 Misc.hitsound:Play() end end Misc.olddamage = LocalPlayer.Additionals.TotalDamage.Value end LocalPlayer.Additionals.TotalDamage.Changed:Connect(Misc.hitplayer) function Misc.killplayer() if LocalPlayer.Status.Kills.Value > Misc.oldkills then if Flags["KillSounds_Enabled"] then local killsoundID = Flags["KillSounds_Ids"] if killsoundID == 'Skeet' then killsoundID = '5447626464' elseif killsoundID == 'Overwatch' then killsoundID = '18410058858' elseif killsoundID == 'Rust' then killsoundID = '5043539486' elseif killsoundID == 'Monster kill' then killsoundID = '130772284' elseif killsoundID == 'Minecraft' then killsoundID = '7273736372' elseif killsoundID == 'Minecraft XP' then killsoundID = '1053296915' elseif killsoundID == 'Retro loud' then killsoundID = '3976061026' elseif killsoundID == 'Matchine gun' then killsoundID = '17705555617' elseif killsoundID == 'Ray' then killsoundID = '131179973' elseif killsoundID == 'Cod' then killsoundID = '160432334' elseif killsoundID == 'Beautiful' then killsoundID = '5709456554' elseif killsoundID == 'Killingspree' then killsoundID = '937898383' elseif killsoundID == 'Squash' then killsoundID = '3466981613' elseif killsoundID == 'Supersmash' then killsoundID = '2039907664' elseif killsoundID == 'CSGO' then killsoundID = '7269900245' elseif killsoundID == 'Slap' then killsoundID = '4888372697' elseif killsoundID == 'MCOOF' then killsoundID = '5869422451' elseif killsoundID == 'Quek' then killsoundID = '4868633804' elseif killsoundID == 'Epic' then killsoundID = '7344303740' elseif killsoundID == 'Osu' then killsoundID = '7149919358' elseif killsoundID == 'TF2 Pan' then killsoundID = '3431749479' elseif killsoundID == '1' then killsoundID = '7349055654' elseif killsoundID == 'Godlike' then killsoundID = '7463103082' elseif killsoundID == 'Ownage' then killsoundID = '6887181639' elseif killsoundID == 'Ultrakill' then killsoundID = '937885646' elseif killsoundID == 'Win' then killsoundID = '341542437' elseif killsoundID == 'Denied' then killsoundID = '7356986865' elseif killsoundID == 'Lessgo' then killsoundID = '6782594987' elseif killsoundID == 'Headshot' then killsoundID = '5764885927' elseif killsoundID == 'Bruh' then killsoundID = '535690488' elseif killsoundID == 'Bag' then killsoundID = '364942410' elseif killsoundID == 'Baimware' then killsoundID = '6607339542' elseif killsoundID == 'Neverlose' then killsoundID = '6607204501' elseif killsoundID == 'Pop' then killsoundID = '105543133746827' elseif killsoundID == 'Space' then killsoundID = '3466982899' elseif killsoundID == 'Electro' then killsoundID = '3458224686' elseif killsoundID == 'TF2' then killsoundID = '3455144981' elseif killsoundID == 'Percussion' then killsoundID = '3466985670' elseif killsoundID == 'Osu Mint' then killsoundID = '81883450827543' elseif killsoundID == 'Rocket' then killsoundID = '9087976483' elseif killsoundID == 'Vine Boom' then killsoundID = '9088081730' elseif killsoundID == 'Snap' then killsoundID = '93172144688075' elseif killsoundID == 'Vortex' then killsoundID = '3466980212' elseif killsoundID == 'Pow' then killsoundID = '3516546035' elseif killsoundID == 'Bell' then killsoundID = '97724019712141' elseif killsoundID == 'Retro' then killsoundID = '3466984142' elseif killsoundID == 'Fatality' then killsoundID = '115982072912004' elseif killsoundID == 'Beepo' then killsoundID = '3466987025' end Misc.killsound.SoundId = "rbxassetid://" .. killsoundID Misc.killsound.Volume = Flags["KillSounds_Volume"] / 10 Misc.killsound:Play() end end Misc.oldkills = localPlayer.Status.Kills.Value end LocalPlayer.Status.Kills.Changed:Connect(Misc.killplayer) function Misc.GiveSecondaryWeapon(name) Cache.Client.special2 = false Cache.Client.special = false Cache.Client.secondary = name Cache.Client.secondaryowner = LocalPlayer.Name Cache.Client.secondaryskin = "Stock" Cache.Client.secondarystattrak = nil Cache.Client.vars.ammocount2 = math.huge Cache.Client.vars.secondarystored = math.huge Cache.Client.equipped = "secondary" Cache.Client.gun = game.ReplicatedStorage.Weapons[Cache.Client.secondary] Cache.Client.fgun = game.ReplicatedStorage.Weapons[Cache.Client.secondary] Cache.Client.changeto(2) Cache.Client.updateInventory() Cache.Client.usethatgun(Cache.Client.secondaryowner) end function Misc.GivePrimaryWeapon(name) Cache.Client.special = false Cache.Client.realgun = name Cache.Client.primary = name Cache.Client.primaryowner = LocalPlayer.Name Cache.Client.primaryskin = "Stock" Cache.Client.primarystattrak = nil Cache.Client.vars.ammocount1 = math.huge Cache.Client.vars.primarystored = math.huge Cache.Client.equipped = "primary" Cache.Client.gun = game.ReplicatedStorage.Weapons[Cache.Client.primary] Cache.Client.fgun = game.ReplicatedStorage.Weapons[Cache.Client.primary] Cache.Client.changeto(1) Cache.Client.updateInventory() Cache.Client.usethatgun(Cache.Client.primaryowner) end function Misc.CreateGunModel(GunName) local gun = replicatedStorage.Weapons[GunName] local weaponinhand = gun.Model:clone() weaponinhand.Parent = LocalPlayer.Character local gunweld = _Instancenew("Motor6D") gunweld.Parent = weaponinhand gunweld.Part0 = LocalPlayer.Character["RightHand"] gunweld.Part1 = weaponinhand gunweld.Name = "GunWeld" weaponinhand.Name = "Gun" if gun.Name == "DualBerettas" then local weaponinhand2 = gun.Model2:clone() weaponinhand2.Parent = LocalPlayer.Character local gunweld = _Instancenew("Motor6D") gunweld.Parent = weaponinhand2 gunweld.Part0 = LocalPlayer.Character["LeftHand"] gunweld.Part1 = weaponinhand2 gunweld.Name = "GunWeld" weaponinhand2.Name = "Gun2" end local string = _Instancenew("StringValue") string.Parent = weaponinhand string.Name = "AnimateValue" if gun.Name == "MP7" then gunweld.C0 = _CFrameNew(0.15, 0, 0.15) end if gun.Name == "Negev" then gunweld.C0 = _CFrameNew(-0.15, 0, 0.3) end if gun.Name == "Bizon" then gunweld.C0 = _CFrameNew(0.3, -0.45, 0.15) * _CFrameAngles(_MathRad(-45), _MathRad(50), _MathRad(200)) end if gun.Name == "T Knife" or gun.Name == "CT Knife" then gunweld.C1 = _CFrameAngles(0, 0, _MathRad(180)) end if gun.Name == "Scout" or gun.Name == "AWP" or gun.Name == "G3SG1" then gunweld.Part0 = LocalPlayer.Character["LeftHand"] gunweld.C0 = _CFrameNew(0.5, -0.6, -0.5) * _CFrameAngles(_MathRad(155), _MathRad(0), _MathRad(-75)) end end RunService.RenderStepped:Connect(function() if not Utility.IsPlayerAlive(LocalPlayer.Character) then return end local SecondaryToGive = Flags["Spawn_Weapons_Secondary"] local PrimaryToGive = Flags["Spawn_Weapons_Primary"] if PrimaryToGive then if PrimaryToGive ~= Cache.Client.primary and Flags["Spawn_Weapons"] then Misc.GivePrimaryWeapon(PrimaryToGive) end if Cache.Client.equipped == "primary" and not _FindFirstChild(LocalPlayer.Character, "Gun") and Flags["Spawn_Weapons"] then Misc.CreateGunModel(PrimaryToGive) elseif _FindFirstChild(LocalPlayer.Character, "Gun") and not Cache.Client.equipped == "primary" then _Destroy(_FindFirstChild(LocalPlayer.Character, "Gun")) end end if SecondaryToGive then if SecondaryToGive ~= Cache.Client.secondary and Flags["Spawn_Weapons"] then Misc.GiveSecondaryWeapon(SecondaryToGive) end if Cache.Client.equipped == "secondary" and not _FindFirstChild(LocalPlayer.Character, "Gun") and Flags["Spawn_Weapons"] then Misc.CreateGunModel(SecondaryToGive) elseif _FindFirstChild(LocalPlayer.Character, "Gun") and not Cache.Client.equipped == "secondary" then _Destroy(_FindFirstChild(LocalPlayer.Character, "Gun")) end end end) local ActiveTweens = {} local function ToggleTweenPlayback(tween, isVisible) if not tween or not tween.PlaybackState then return end if isVisible and tween.PlaybackState == Enum.PlaybackState.Playing then tween:Pause() elseif not isVisible and tween.PlaybackState == Enum.PlaybackState.Paused then tween:Play() end end local function StartFadeOut(label) if not label or ActiveTweens[label] then return end ActiveTweens[label] = {} local fadeTween = TweenService:Create(label, TweenInfo.new(1), { TextTransparency = 1, TextStrokeTransparency = 1 }) local connections = ActiveTweens[label] table.insert(connections, ChatUI.GlobalChat:GetPropertyChangedSignal("Visible"):Connect(function() ToggleTweenPlayback(fadeTween, ChatUI.GlobalChat.Visible) end)) table.insert(connections, ChatUI.TeamChat:GetPropertyChangedSignal("Visible"):Connect(function() ToggleTweenPlayback(fadeTween, ChatUI.TeamChat.Visible) end)) table.insert(connections, fadeTween:GetPropertyChangedSignal("PlaybackState"):Connect(function() if fadeTween.PlaybackState == Enum.PlaybackState.Completed then for _, conn in ipairs(connections) do conn:Disconnect() end ActiveTweens[label] = nil end end)) fadeTween:Play() end local function ShiftChatLines() for _, child in ipairs(ChatFrame:GetChildren()) do if child:IsA("TextLabel") and child.Name:sub(1, 4) == "Line" then local index = tonumber(child.Name:sub(5)) if index then local newIndex = index + 1 child.Name = "Line" .. newIndex child.LayoutOrder = -newIndex if newIndex >= 37 then ActiveTweens[child] = nil child:Destroy() end end end end local layout = ChatFrame:FindFirstChildWhichIsA("UIListLayout") if layout then local contentHeight = layout.AbsoluteContentSize.Y local scrollAmount = math.max(0, contentHeight - ChatFrame.AbsoluteSize.Y) ChatFrame.CanvasSize = UDim2.new(0, 0, 0, contentHeight) if scrollAmount - ChatFrame.CanvasPosition.Y < 50 then ChatFrame.CanvasPosition = Vector2.new(0, scrollAmount) end end end local function MeasureTextHeight(text, width, font, size) local tempLabel = Instance.new("TextLabel") tempLabel.Size = UDim2.new(0, width, 0, 1000) tempLabel.TextWrapped = true tempLabel.RichText = true tempLabel.Font = font tempLabel.TextSize = size tempLabel.Text = text tempLabel.Parent = ChatFrame local height = math.ceil(tempLabel.TextBounds.Y) + 4 tempLabel:Destroy() return height end local function AddMessage(name, message, nameColor, textColor, tags, tagColors) ShiftChatLines() local label = Instance.new("TextLabel") label.Name = "Line1" label.BackgroundTransparency = 1 label.BorderSizePixel = 0 label.TextWrapped = true label.RichText = true label.Font = Enum.Font.ArialBold label.TextSize = 14 label.AutomaticSize = Enum.AutomaticSize.Y label.TextXAlignment = Enum.TextXAlignment.Left label.TextYAlignment = Enum.TextYAlignment.Top label.TextColor3 = textColor label.TextStrokeColor3 = Color3.new(0, 0, 0) label.TextStrokeTransparency = 0 label.Parent = ChatFrame local content = "" for i, tag in ipairs(tags) do local color = tagColors[i] local hex = string.format("#%02X%02X%02X", color.R * 255, color.G * 255, color.B * 255) content = content .. string.format("%s ", hex, tag) end if name then local hex = string.format("#%02X%02X%02X", nameColor.R * 255, nameColor.G * 255, nameColor.B * 255) content = content .. string.format("%s: ", hex, name) end content = content .. message label.Text = content local height = MeasureTextHeight(content, 493, label.Font, label.TextSize) label.Size = UDim2.new(0, 493, 0, height) label.LayoutOrder = 0 task.delay(15, StartFadeOut, label) return label end local function HandlePlayerChat(player, message, isTeam, isRadio) local status = player:FindFirstChild("Status") if not status then return end local team = status:FindFirstChild("Team") and status.Team.Value local alive = status:FindFirstChild("Alive") and status.Alive.Value local myTeam = LocalPlayer.Status.Team.Value local myAlive = LocalPlayer.Status.Alive.Value local isSpectator = team == "Spectator" local amSpectator = myTeam == "Spectator" local isCompetitive = replicatedStorage.gametype.Value == "competitive" local isVisible = isTeam or isRadio or (alive and (player == LocalPlayer or alive)) or (isCompetitive or not myAlive) if not Flags["Chat_Dead"] and not isVisible then return end local colorSettings = ChatUI.Color local tags, tagColors = {}, {} if isTeam and not isRadio then table.insert(tags, "(TEAM)") table.insert(tagColors, colorSettings.TeamValueColor.Value) end if not alive and not isSpectator then table.insert(tags, "*DEAD*") table.insert(tagColors, colorSettings.DeadColor.Value) end if isSpectator then table.insert(tags, "(SPECTATOR)") table.insert(tagColors, colorSettings.SpectatorColor.Value) end if isRadio then table.insert(tags, "*RADIO*") table.insert(tagColors, Color3.fromRGB(80, 120, 120)) end local nameColor = team == "T" and BrickColor.new("Bright yellow").Color or team == "CT" and BrickColor.new("Bright blue").Color or Color3.new(1, 1, 1) if ChatUI.Visible then ShiftChatLines() AddMessage(player.Name, message, nameColor, Color3.new(1, 1, 1), tags, tagColors) end end Events.PlayerChatted.OnClientEvent:Connect(function(senderName, message, isTeam, isRadio) local sender = Players:FindFirstChild(senderName) if sender then HandlePlayerChat(sender, message, isTeam, isRadio) end end) Events.SendMsg.OnClientEvent:Connect(function(message, color) if message and typeof(message) == "string" and message ~= "" then if not (message:find(" has joined the server.") and message:find(LocalPlayer.Name)) then ShiftChatLines() AddMessage(nil, message, nil, color or Color3.new(1, 1, 1), {}, {}) end end end) LocalPlayer.CharacterAdded:Connect(function(char) repeat task.wait(1.8) until char:FindFirstChild("Gun") SelfObj = {} if Flags["Character_Changer"] then if Flags["Character_Changer_Character"] == "Custom" then ChangeCharacterToUserIdAvatar(Flags["Character_Changer_Character_Custom"]) else ChangeCharacter(ChrModels:FindFirstChild(Flags["Character_Changer_Character"])) end end end) workspace.ChildAdded:Connect(function(obj) if obj.Name == "Map" then wait(5) if Flags["Remove_Killers"] then if workspace.Map:FindFirstChild("Clips") and workspace.Map:FindFirstChild("Killers") then for _,v in pairs(workspace.Map.Clips:GetChildren()) do v:Destroy() end for _,v in pairs(workspace.Map.Killers:GetChildren()) do v:Destroy() end end end end end) end end do -- Hooks local fakeanim = _Instancenew("Animation") fakeanim.AnimationId = "rbxassetid://0" local oldNamecall; oldNamecall = hookmetamethod(game, "__namecall", function(self, ...) local args = {...} local method = getnamecallmethod() if method == "FireServer" then if self.Name == Events.ControlTurn.Name then local pitchMode = Flags["AntiAim_Pitch"] local extend = Flags["AntiAim_ExtendPitch"] if Flags["AntiAim_Enabled"] then local angle = 0 if pitchMode == "None" then angle = args[1] elseif pitchMode == "Upwards" then angle = 1 elseif pitchMode == "Downwards" then angle = -1 elseif pitchMode == "Zero" then angle = 0 elseif pitchMode == "Glitch" then angle = 0/0 elseif pitchMode == "Random" then angle = _MathRandom(-10, 10) / 10 end args[1] = angle return oldNamecall(self, _TableUnpack(args)) end elseif self.Name == "ReplicateCameraUDP" and Flags["Anti_Camera_Resolver"] then args[1] = _CFrameNew() return oldNamecall(self, _TableUnpack(args)) elseif self.Name == HitPart.Name then local a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26 = ... if not Flags["KillAll_Enabled"] then _TaskSpawn(function() if Flags["BulletTracerEnabled"] then local hitpos = RageBot.Target.TargetPosition ~= nil and RageBot.Target.TargetPosition or Utility.DecryptPosition(a2) local origin = RageBot.Target.Origin ~= nil and RageBot.Target.Origin or LocalPlayer.Character.Gun.Flash.Position if _FindFirstChild(LocalPlayer.Character.Gun, "Flash") then Utility.CreateTracer(hitpos, origin, Flags["BulletTracerColor"], Options["BulletTracerColor"].Transparency, Flags["BulletTracerWidth"], Flags["BulletTracerLifetime"], Flags["BulletTracerTexture"], Flags["BulletTracerTextureLength"], Flags["BulletTracerTextureSpeed"], Flags["BulletTracerFaceCamera"], Flags["BulletTracerLightEmission"], Flags["BulletTracerLightInfluence"], Flags["BulletTracerBrightness"], Flags["BulletTracerSecondBeam"], Flags["BulletTracerSecondBeamColor"], Options["BulletTracerSecondBeamColor"].Transparency) end end if Flags["BulletImpactEnabled"] then local hitplayer = _GetPlayerFromCharacter(Players, a1.Parent) local hitpos = RageBot.Target.TargetPosition ~= nil and RageBot.Target.TargetPosition or Utility.DecryptPosition(a2) if hitplayer and PlayerModule.storage[hitplayer].enemy then Utility.CreateImpact(hitpos,a1,Flags["BulletImpactColor2"],Options["BulletImpactColor"].Transparency,Flags["BulletImpactMaterial"],Flags["BulletImpactSize"],Flags["BulletImpactLifetime"]) else Utility.CreateImpact(hitpos,a1,Flags["BulletImpactColor"],Options["BulletImpactColor"].Transparency,Flags["BulletImpactMaterial"],Flags["BulletImpactSize"],Flags["BulletImpactLifetime"]) end end end) if Flags["Damage_Modifier"] then a7 = Flags["Damage_ModifierValue"] end end oldNamecall(self, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26) if Flags["Break_Aura"] then oldNamecall(self, a1, a2, "Multimeter", a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26) end return end elseif method == "FindPartOnRayWithIgnoreList" then local passed = false for i, v in next, args[2] do if v.ClassName == "Accessory" then passed = true end end if passed then if Flags["Remove_Spread"] and not _FindFirstChild(Cache.Client.fgun, "Melee") then args[1] = _RayNew(camera.CFrame.p, camera.CFrame.lookVector * Cache.Client.gun.Range.Value * 0.0625) end local enterParam = _RaycastParamsNew() enterParam.FilterType = Enum.RaycastFilterType.Blacklist enterParam.IgnoreWater = true enterParam.FilterDescendantsInstances = args[2] local resultOfDepressionAndLonliness = workspaceRaycast(workspace, args[1].Origin, args[1].Direction, enterParam) return resultOfDepressionAndLonliness and resultOfDepressionAndLonliness.Instance or nil, resultOfDepressionAndLonliness and resultOfDepressionAndLonliness.Position or (args[1].Origin + args[1].Direction), resultOfDepressionAndLonliness and resultOfDepressionAndLonliness.Normal or _Vector3New(), resultOfDepressionAndLonliness and resultOfDepressionAndLonliness.Material or nil end elseif method == "SetPrimaryPartCFrame" then local arms = args[1] if self.Name == "Arms" and LocalPlayer.Character then if Flags["ViewModel"] then arms = arms * _CFrameAngles(_MathRad(Flags["ViewModel_X"]-180), _MathRad(Flags["ViewModel_Y"]-180), _MathRad(Flags["ViewModel_Z"]-180)) arms = arms * _CFrameNew(_Vector3New(_MathRad(Flags["ViewModel_X1"]-180),_MathRad(Flags["ViewModel_Y2"]-180),_MathRad(Flags["ViewModel_Z3"]-180))) end if Flags["ThirdPerson_RemoveArms"] and Flags["ThirdPerson_Enabled"] then arms = arms * _CFrameNew(11212121210000, 1001212121200, 1012121212000) end if Flags["RageBot_AtTargets"] and RageBot.Target.TargetPosition then arms = _CFrameLookAt(arms.Position, RageBot.Target.TargetPosition) end end return oldNamecall(self, arms, _Select(2, ...)) elseif method == "LoadAnimation" then if Flags["Movement_SlideWalk"] and (args[1].Name == "RunAnim" or args[1].Name == "JumpAnim") then args[1] = fakeanim return oldNamecall(self, _TableUnpack(args)) end end return oldNamecall(self, ...) end) local oldIndex; oldIndex = hookmetamethod(game, "__index", function(self, k) if k == "Velocity" and self.Parent == LocalPlayer.Character and Misc.fakehrp then return oldIndex(Misc.fakehrp, k) end return oldIndex(self, k) end) local oldNIndex; oldNIndex = hookmetamethod(game, "__newindex", function(self, k, v) if self == workspace.CurrentCamera and k == "CFrame" then if Flags["Remove_Recoil"] and tostring(getcallingscript()) == "Client" then return end end if Flags["Remove_Scope"] and self.Name == "Blur" and self.Parent.Name == "Scope" then v = 0 end return oldNIndex(self, k, v) end) local visualizeshit = require(game.ReplicatedStorage.VisualizeModule) local createtrailcloned = visualizeshit.createtrail visualizeshit.createtrail = function(p1, p2, p3) local originPos = p1.Position local character = LocalPlayer.Character local hrp = character and character:FindFirstChild("HumanoidRootPart") if not (character and hrp) then return createtrailcloned(p1, p2, p3) end if originPos then local distance = (originPos - camera.CFrame.Position).Magnitude if distance <= 15 then else if Flags["BulletTracerEnemyEnabled"] then Utility.CreateTracer(p2, originPos, Flags["BulletTracerColor1"], Options["BulletTracerColor1"].Transparency, Flags["BulletTracerWidth"], Flags["BulletTracerLifetime"], Flags["BulletTracerTexture"], Flags["BulletTracerTextureLength"], Flags["BulletTracerTextureSpeed"], Flags["BulletTracerFaceCamera"], Flags["BulletTracerLightEmission"], Flags["BulletTracerLightInfluence"], Flags["BulletTracerBrightness"], Flags["BulletTracerSecondBeam"], Flags["BulletTracerSecondBeamColor"], Options["BulletTracerSecondBeamColor"].Transparency) end end end return createtrailcloned(p1, p2, p3) end end do -- Signals ! RunService.RenderStepped:Connect(function() if (_Tick()-Watermark["RefreshRate"]) >= 1 then Watermark["Fps"] = Watermark["StoredFps"] Watermark["StoredFps"] = 0 Watermark["RefreshRate"] = _Tick() end Watermark["StoredFps"] = Watermark["StoredFps"] + 1 Watermark["Delta"] = dlt _Pcall(function() Watermark["Ping"] = _GetValue(Stats.Network.ServerStatsItem["Data Ping"]) end) end) RunService.PreRender:Connect(function() if Flags["Watermark"] then local sec,min,hrs = _OsDate("*t",_OsTime())["sec"],_OsDate("*t",_OsTime())["min"],_OsDate("*t",_OsTime())["hour"] local seconds = _StringLen(sec) == 2 and sec or "0"..sec local minutes = _StringLen(min) == 2 and min or "0"..min local hours = _StringLen(hrs) == 2 and hrs or "0"..hrs local daysOfWeek = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" } local monthsOfYear = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" } local currentTime = _OsDate("*t") local dayOfWeek = daysOfWeek[currentTime.wday] local month = monthsOfYear[currentTime.month] local day = currentTime.day local dateStr = dayOfWeek..", "..month.." "..day local hex = "#".._StringUpper(_tostring(_ToHex(Library.AccentColor))) local hex2 = "#".._StringUpper(_tostring(_ToHex(Library.FontColor))) local hex3 = "#".._StringUpper(_tostring(_ToHex(Library.OutlineColor))) local fps = _tostring(_MathFloor(Watermark["Fps"])) local ping2 = _tostring(_MathFloor(Watermark["Ping"])) local Time = hours..":"..minutes local Date = dayOfWeek..", "..month.." "..day local versionColor = "#".._StringUpper(_tostring(_ToHex(Library.AccentColor))) local version = 'v'..version..'' local str = 't.me/zeferuswav '..version..' '..fps..' fps 〡 '..ping2..' ms 〡 '..Time..' 〡 '..Date..' 〡 '..Build..' 〡 UID: '.. '/t.me/zeferuswav' Library:SetWatermark(str) end end) end CoreGui.Parent = gethui() or cloneref(LocalPlayer.PlayerGui) -- CoreGui.Parent = cloneref(LocalPlayer.PlayerGui) Library:Notify("".._tostring(_Tick() - LoadTick)) getgenv().Loaded = true