1 | --[[ |
2 | |
3 | ██╗░░░░░██╗░░░██╗███╗░░██╗░█████╗░██████╗░░░░██╗░░░██╗██╗██████╗░ |
4 | ██║░░░░░██║░░░██║████╗░██║██╔══██╗██╔══██╗░░░██║░░░██║██║██╔══██╗ |
5 | ██║░░░░░██║░░░██║██╔██╗██║███████║██████╔╝░░░╚██╗░██╔╝██║██████╔╝ |
6 | ██║░░░░░██║░░░██║██║╚████║██╔══██║██╔══██╗░░░░╚████╔╝░██║██╔═══╝░ |
7 | ███████╗╚██████╔╝██║░╚███║██║░░██║██║░░██║██╗░░╚██╔╝░░██║██║░░░░░ |
8 | ╚══════╝░╚═════╝░╚═╝░░╚══╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░░╚═╝░░░╚═╝╚═╝░░░░░ |
9 | |
10 | Last updated 18/03/24 |
11 | ]] |
12 | |
13 | if isfile("menu_plex.font") then |
14 | delfile("menu_plex.font") |
15 | end |
16 | |
17 | writefile("ProggyClean.ttf", game:HttpGet("https://github.com/f1nobe7650/other/raw/main/ProggyClean.ttf")) |
18 | |
19 | -- // Custom Font |
20 | do |
21 | getsynasset = getcustomasset or getsynasset |
22 | Font = setreadonly(Font, false); |
23 | function Font:Register(Name, Weight, Style, Asset) |
24 | if not isfile(Name .. ".font") then |
25 | if not isfile(Asset.Id) then |
26 | writefile(Asset.Id, Asset.Font); |
27 | end; |
28 | -- |
29 | local Data = { |
30 | name = Name, |
31 | faces = {{ |
32 | name = "Regular", |
33 | weight = Weight, |
34 | style = Style, |
35 | assetId = getsynasset(Asset.Id); |
36 | }} |
37 | }; |
38 | -- |
39 | writefile(Name .. ".font", game:GetService("HttpService"):JSONEncode(Data)); |
40 | return getsynasset(Name .. ".font"); |
41 | else |
42 | warn("Font already registered"); |
43 | end; |
44 | end; |
45 | -- |
46 | function Font:GetRegistry(Name) |
47 | if isfile(Name .. ".font") then |
48 | return getsynasset(Name .. ".font"); |
49 | end; |
50 | end; |
51 | |
52 | Font:Register("menu_plex", 400, "normal", {Id = "ProggyClean.ttf", Font = ""}); |
53 | end |
54 | |
55 | if not LPH_OBFUSCATED then |
56 | getfenv().LPH_NO_VIRTUALIZE = function(...) return (...) end; |
57 | end |
58 | |
59 | local font = Enum.Font.Ubuntu; |
60 | local Library = {}; |
61 | local Library = { |
62 | Open = true; |
63 | Folders = { |
64 | main = "test"; |
65 | configs = "test/Configs"; |
66 | }; |
67 | Accent = Color3.fromRGB(132,108,188); |
68 | Pages = {}; |
69 | Sections = {}; |
70 | Flags = {}; |
71 | UnNamedFlags = 0; |
72 | ThemeObjects = {}; |
73 | Instances = {}; |
74 | Holder = nil; |
75 | PageHolder = nil; |
76 | Gradient = nil; |
77 | UIGradient = nil; |
78 | CopiedColor = Color3.new(1,1,1); |
79 | CopiedAlpha = 0; |
80 | AllowedCharacters = { |
81 | [1] = ' ', |
82 | [2] = '!', |
83 | [3] = '"', |
84 | [4] = '#', |
85 | [5] = '$', |
86 | [6] = '%', |
87 | [7] = '&', |
88 | [8] = "'", |
89 | [9] = '(', |
90 | [10] = ')', |
91 | [11] = '*', |
92 | [12] = '+', |
93 | [13] = ',', |
94 | [14] = '-', |
95 | [15] = '.', |
96 | [16] = '/', |
97 | [17] = '0', |
98 | [18] = '1', |
99 | [19] = '2', |
100 | [20] = '3', |
101 | [21] = '4', |
102 | [22] = '5', |
103 | [23] = '6', |
104 | [24] = '7', |
105 | [25] = '8', |
106 | [26] = '9', |
107 | [27] = ':', |
108 | [28] = ';', |
109 | [29] = '<', |
110 | [30] = '=', |
111 | [31] = '>', |
112 | [32] = '?', |
113 | [33] = '@', |
114 | [34] = 'A', |
115 | [35] = 'B', |
116 | [36] = 'C', |
117 | [37] = 'D', |
118 | [38] = 'E', |
119 | [39] = 'F', |
120 | [40] = 'G', |
121 | [41] = 'H', |
122 | [42] = 'I', |
123 | [43] = 'J', |
124 | [44] = 'K', |
125 | [45] = 'L', |
126 | [46] = 'M', |
127 | [47] = 'N', |
128 | [48] = 'O', |
129 | [49] = 'P', |
130 | [50] = 'Q', |
131 | [51] = 'R', |
132 | [52] = 'S', |
133 | [53] = 'T', |
134 | [54] = 'U', |
135 | [55] = 'V', |
136 | [56] = 'W', |
137 | [57] = 'X', |
138 | [58] = 'Y', |
139 | [59] = 'Z', |
140 | [60] = '[', |
141 | [61] = "\\", |
142 | [62] = ']', |
143 | [63] = '^', |
144 | [64] = '_', |
145 | [65] = '`', |
146 | [66] = 'a', |
147 | [67] = 'b', |
148 | [68] = 'c', |
149 | [69] = 'd', |
150 | [70] = 'e', |
151 | [71] = 'f', |
152 | [72] = 'g', |
153 | [73] = 'h', |
154 | [74] = 'i', |
155 | [75] = 'j', |
156 | [76] = 'k', |
157 | [77] = 'l', |
158 | [78] = 'm', |
159 | [79] = 'n', |
160 | [80] = 'o', |
161 | [81] = 'p', |
162 | [82] = 'q', |
163 | [83] = 'r', |
164 | [84] = 's', |
165 | [85] = 't', |
166 | [86] = 'u', |
167 | [87] = 'v', |
168 | [88] = 'w', |
169 | [89] = 'x', |
170 | [90] = 'y', |
171 | [91] = 'z', |
172 | [92] = '{', |
173 | [93] = '|', |
174 | [94] = '}', |
175 | [95] = '~' |
176 | }; |
177 | ShiftCharacters = { |
178 | ["1"] = "!", |
179 | ["2"] = "@", |
180 | ["3"] = "#", |
181 | ["4"] = "$", |
182 | ["5"] = "%", |
183 | ["6"] = "^", |
184 | ["7"] = "&", |
185 | ["8"] = "*", |
186 | ["9"] = "(", |
187 | ["0"] = ")", |
188 | ["-"] = "_", |
189 | ["="] = "+", |
190 | ["["] = "{", |
191 | ["\\"] = "|", |
192 | [";"] = ":", |
193 | ["'"] = "\"", |
194 | [","] = "<", |
195 | ["."] = ">", |
196 | ["/"] = "?", |
197 | ["`"] = "~" |
198 | }; |
199 | Keys = { |
200 | [Enum.KeyCode.LeftShift] = "LShift", |
201 | [Enum.KeyCode.RightShift] = "RShift", |
202 | [Enum.KeyCode.LeftControl] = "LCtrl", |
203 | [Enum.KeyCode.RightControl] = "RCtrl", |
204 | [Enum.KeyCode.LeftAlt] = "LAlt", |
205 | [Enum.KeyCode.RightAlt] = "RAlt", |
206 | [Enum.KeyCode.CapsLock] = "Caps", |
207 | [Enum.KeyCode.One] = "1", |
208 | [Enum.KeyCode.Two] = "2", |
209 | [Enum.KeyCode.Three] = "3", |
210 | [Enum.KeyCode.Four] = "4", |
211 | [Enum.KeyCode.Five] = "5", |
212 | [Enum.KeyCode.Six] = "6", |
213 | [Enum.KeyCode.Seven] = "7", |
214 | [Enum.KeyCode.Eight] = "8", |
215 | [Enum.KeyCode.Nine] = "9", |
216 | [Enum.KeyCode.Zero] = "0", |
217 | [Enum.KeyCode.KeypadOne] = "Num1", |
218 | [Enum.KeyCode.KeypadTwo] = "Num2", |
219 | [Enum.KeyCode.KeypadThree] = "Num3", |
220 | [Enum.KeyCode.KeypadFour] = "Num4", |
221 | [Enum.KeyCode.KeypadFive] = "Num5", |
222 | [Enum.KeyCode.KeypadSix] = "Num6", |
223 | [Enum.KeyCode.KeypadSeven] = "Num7", |
224 | [Enum.KeyCode.KeypadEight] = "Num8", |
225 | [Enum.KeyCode.KeypadNine] = "Num9", |
226 | [Enum.KeyCode.KeypadZero] = "Num0", |
227 | [Enum.KeyCode.Minus] = "-", |
228 | [Enum.KeyCode.Equals] = "=", |
229 | [Enum.KeyCode.Tilde] = "~", |
230 | [Enum.KeyCode.LeftBracket] = "[", |
231 | [Enum.KeyCode.RightBracket] = "]", |
232 | [Enum.KeyCode.RightParenthesis] = ")", |
233 | [Enum.KeyCode.LeftParenthesis] = "(", |
234 | [Enum.KeyCode.Semicolon] = ",", |
235 | [Enum.KeyCode.Quote] = "'", |
236 | [Enum.KeyCode.BackSlash] = "\\", |
237 | [Enum.KeyCode.Comma] = ",", |
238 | [Enum.KeyCode.Period] = ".", |
239 | [Enum.KeyCode.Slash] = "/", |
240 | [Enum.KeyCode.Asterisk] = "*", |
241 | [Enum.KeyCode.Plus] = "+", |
242 | [Enum.KeyCode.Period] = ".", |
243 | [Enum.KeyCode.Backquote] = "`", |
244 | [Enum.UserInputType.MouseButton1] = "MB1", |
245 | [Enum.UserInputType.MouseButton2] = "MB2", |
246 | [Enum.UserInputType.MouseButton3] = "MB3" |
247 | }; |
248 | Connections = {}; |
249 | Font = Enum.Font.Ubuntu; |
250 | FontSize = 12; |
251 | Notifs = {}; |
252 | KeyList = nil; |
253 | UIKey = Enum.KeyCode.End; |
254 | ScreenGUI = nil; |
255 | } |
256 | |
257 | local InputService = game:GetService("UserInputService"); |
258 | local TeleportService = game:GetService("TeleportService"); |
259 | local RunService = game:GetService("RunService"); |
260 | local Workspace = game:GetService("Workspace"); |
261 | local Lighting = game:GetService("Lighting"); |
262 | local Players = game:GetService("Players"); |
263 | local HttpService = game:GetService("HttpService"); |
264 | local StarterGui = game:GetService("StarterGui"); |
265 | local ReplicatedStorage = game:GetService("ReplicatedStorage"); |
266 | local TweenService = game:GetService("TweenService"); |
267 | local VirtualUser = game:GetService("VirtualUser"); |
268 | local PathFindingService = game:GetService("PathfindingService"); |
269 | |
270 | local utility = { |
271 | Circle = nil, |
272 | bodyParts = {}, |
273 | target = nil, |
274 | angle = 0, |
275 | drawings = {}, |
276 | folders = {} |
277 | }; |
278 | local framework = {connections = {}}; |
279 | local Flags = {}; |
280 | local flags = Library.Flags; |
281 | local ESP = {}; |
282 | local IgnoreList = {}; |
283 | local HitReg = {}; |
284 | local loadingTime = tick() |
285 | local Visuals = { |
286 | ["Drawings"] = {}, |
287 | ["Bases"] = {}, |
288 | ["Base"] = {}, |
289 | ["Settings"] = { |
290 | ["Line"] = { |
291 | Thickness = 1, |
292 | Color = Color3.fromRGB(0, 255, 0) |
293 | }, |
294 | ["Text"] = { |
295 | Size = 13, |
296 | Center = true, |
297 | Outline = true, |
298 | Font = Drawing.Fonts.Plex, |
299 | Color = Color3.fromRGB(255, 255, 255) |
300 | }, |
301 | ["Square"] = { |
302 | Thickness = 1, |
303 | Color = Color3.fromRGB(255, 255, 255), |
304 | Filled = false, |
305 | }, |
306 | ["Triangle"] = { |
307 | Color = Color3.fromRGB(255, 255, 255), |
308 | Filled = true, |
309 | Visible = false, |
310 | Thickness = 1, |
311 | }, |
312 | ["Image"] = { |
313 | Transparency = 1, |
314 | Data = game:HttpGet("https://raw.githubusercontent.com/portallol/luna/main/Gradient.png") |
315 | } |
316 | }, |
317 | } |
318 | local NovaPart = game:GetObjects("rbxassetid://14745759584")[1]; NovaPart.Parent = ReplicatedStorage; |
319 | local Nova = NovaPart.Attachment; |
320 | local Sparkles = game:GetObjects("rbxassetid://16883621036")[1]; Sparkles.Parent = ReplicatedStorage; |
321 | local SparklesEffect = Sparkles.LevelParticle; |
322 | local sfx = {["Bameware"] = "16910460773",["Skeet"] = "4753603610",["Bonk"] = "3765689841",["Lazer Beam"] = "130791043",["Windows XP Error"] = "160715357",["TF2 Hitsound"] = "3455144981",["TF2 Critical"] = "296102734",["TF2 Bat"] = "3333907347",['Bow Hit'] = "1053296915",['Bow'] = "3442683707",['OSU'] = "7147454322",['Minecraft Hit'] = "4018616850",['Steve'] = "5869422451",['1nn'] = "7349055654",['Rust'] = "3744371091",["TF2 Pan"] = "3431749479",["Neverlose"] = "8679627751",["Mario"] = "5709456554",}; |
323 | local sfx_names = {"Bameware", "Skeet", "Bonk", "Lazer Beam", "Windows XP Error", "TF2 Hitsound", "TF2 Critical", "TF2 Bat", "Bow Hit", "Bow", "OSU", "Minecraft Hit", "Steve", "1nn", "Rust", "TF2 Pan", "Neverlose", "Mario"}; |
324 | local LocalPlayer = Players.LocalPlayer; |
325 | local Mouse = LocalPlayer:GetMouse(); |
326 | local Camera = Workspace.Camera; |
327 | local viewportSize = game.Workspace.Camera.ViewportSize; |
328 | local hitmodule = game:GetObjects("rbxassetid://7255773215")[1]; hitmodule.Parent = ReplicatedStorage; |
329 | local Offset = game:GetService("GuiService"):GetGuiInset().Y; |
330 | local Math = loadstring(game:HttpGet("https://raw.githubusercontent.com/f1nobe7650/Lynx/main/Math.lua"))(); |
331 | local NotifiactionSGui = Instance.new("ScreenGui", game.CoreGui); NotifiactionSGui.Enabled = true |
332 | local Remote = ReplicatedStorage.MainEvent |
333 | local NewVector2 = Vector2.new; |
334 | local NewVector3 = Vector3.new; |
335 | local NewCFrame = CFrame.new; |
336 | local Angle = CFrame.Angles; |
337 | local NewHex = Color3.fromHex; |
338 | local Floor = math.floor; |
339 | local Random = math.random; |
340 | local Find = table.find; |
341 | local Round = math.round; |
342 | local Cos = math.cos; |
343 | local Sin = math.sin; |
344 | local Rad = math.rad; |
345 | local Clamp = math.clamp; |
346 | local Ceil = math.ceil; |
347 | local Pi = math.pi; |
348 | local Sqrt = math.sqrt; |
349 | local Lighting_Save = {["ColorShift_Bottom"] = Lighting.ColorShift_Bottom, ["Ambient"]=Lighting.Ambient, ["OutdoorAmbient"]=Lighting.OutdoorAmbient, ["ColorShift_Top"]=Lighting.ColorShift_Top, ["FogColor"]=Lighting.FogColor, ["FogEnd"]=Lighting.FogEnd, ["FogStart"]=Lighting.FogStart, ["ClockTime"]=Lighting.ClockTime, ["Brightness"]=Lighting.Brightness} |
350 | local bodyClone = game:GetObjects("rbxassetid://8246626421")[1]; bodyClone.Humanoid:Destroy(); bodyClone.Head.Face:Destroy(); bodyClone.Parent = game.Workspace; bodyClone.HumanoidRootPart.Velocity = Vector3.new(); bodyClone.HumanoidRootPart.CFrame = NewCFrame(9999,9999,9999); bodyClone.HumanoidRootPart.Transparency = 1; bodyClone.HumanoidRootPart.CanCollide = false |
351 | local visualizeChams = Instance.new("Highlight"); visualizeChams.Enabled = true; visualizeChams.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop; visualizeChams.FillColor = Color3.fromRGB(102, 60, 153); visualizeChams.OutlineColor = Color3.fromRGB(0, 0, 0); visualizeChams.Adornee = bodyClone; visualizeChams.OutlineTransparency = 0.2; visualizeChams.FillTransparency = 0.5; visualizeChams.Parent = game.CoreGui |
352 | local targetHighlight = Instance.new("Highlight", game.CoreGui); targetHighlight.Enabled = true; targetHighlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop; targetHighlight.FillColor = Color3.fromRGB(0,0,0); targetHighlight.OutlineColor = Color3.fromRGB(255,255,255); targetHighlight.OutlineTransparency = 0.5; targetHighlight.FillTransparency = 0; |
353 | local IgnoreList = {}; |
354 | local Tween = {}; |
355 | local crosshair_Lines = {}; |
356 | local crosshair_Outlines = {}; |
357 | local C_Desync = {Enabled = false, OldPosition = nil, PredictedPosition = nil}; |
358 | local connections = {}; |
359 | local highlights = {}; |
360 | local Dropdowns = {}; |
361 | local Pickers = {}; |
362 | local VisValues = {}; |
363 | local Typing = false; |
364 | local aimAssistTarget; |
365 | local checks; |
366 | local prediction; |
367 | local partClosest; |
368 | local antiCheattick = 0; |
369 | local CursorSize = 0; |
370 | local statsTick = 0; |
371 | local crosshair_LineAmount = 4; |
372 | local crosshair_SpinAngle = 0; |
373 | local crosshair_tick = 0; |
374 | local buying = false; |
375 | local PlaceHolderUI = Instance.new("ScreenGui", game.CoreGui); |
376 | PlaceHolderUI.Enabled = false |
377 | local Path = |
378 | "https://raw.githubusercontent.com/fortniteisveryepic/assets/main/" |
379 | local images = { |
380 | ["[AK47]"] = game:HttpGet(Path.. "ak.png"), |
381 | ["[AR]"] = game:HttpGet(Path.. "ar.png"), |
382 | ["[AUG]"] = game:HttpGet(Path.. "aug.png"), |
383 | ["[Double-Barrel SG]"] = game:HttpGet(Path.. "db.png"), |
384 | ["[DrumGun]"] = game:HttpGet(Path.. "drumgun.png"), |
385 | ["[Flamethrower]"] = game:HttpGet(Path.. "flame.png"), |
386 | ["[Glock]"] = game:HttpGet(Path.. "glock.png"), |
387 | ["[LMG]"] = game:HttpGet(Path.. "lmg.png"), |
388 | ["[P90]"]= game:HttpGet(Path.. "p90.png"), |
389 | ["[Revolver]"] = game:HttpGet(Path.. "rev.png"), |
390 | ["[SMG]"] = game:HttpGet(Path.. "smg.png"), |
391 | ["[Shotgun]"] = game:HttpGet(Path.. "shotgun.png"), |
392 | ["[SilencerAR]"] = game:HttpGet(Path.. "ar.png"), |
393 | ["[TacticalShotgun]"] = game:HttpGet(Path.. "tac.png"), |
394 | ["[Knife]"] = game:HttpGet(Path.. "knife.png"), |
395 | ["[Rifle]"] = game:HttpGet(Path.. "rifle.png") |
396 | } |
397 | local Languages = { |
398 | A = {English = "A", Arabic = "أ", Albanian = "A", Japanese = "あ", Spanish = "A", Russian = "А", Chinese = "阿", Urdu = "ا", French = "A", Portuguese = "A", Hindi = "अ"}, |
399 | B = {English = "B", Arabic = "ب", Albanian = "B", Japanese = "い", Spanish = "B", Russian = "Б", Chinese = "波", Urdu = "ب", French = "B", Portuguese = "B", Hindi = "ब"}, |
400 | C = {English = "C", Arabic = "ت", Albanian = "C", Japanese = "う", Spanish = "C", Russian = "Ц", Chinese = "西", Urdu = "س", French = "C", Portuguese = "C", Hindi = "स"}, |
401 | D = {English = "D", Arabic = "د", Albanian = "D", Japanese = "え", Spanish = "D", Russian = "Д", Chinese = "德", Urdu = "ڈ", French = "D", Portuguese = "D", Hindi = "ड"}, |
402 | E = {English = "E", Arabic = "إ", Albanian = "E", Japanese = "お", Spanish = "E", Russian = "Е", Chinese = "俄", Urdu = "اے", French = "E", Portuguese = "E", Hindi = "ए"}, |
403 | F = {English = "F", Arabic = "ف", Albanian = "F", Japanese = "か", Spanish = "F", Russian = "Ф", Chinese = "夫", Urdu = "ف", French = "F", Portuguese = "F", Hindi = "फ"}, |
404 | G = {English = "G", Arabic = "ج", Albanian = "G", Japanese = "き", Spanish = "G", Russian = "Г", Chinese = "吉", Urdu = "ج", French = "G", Portuguese = "G", Hindi = "ग"}, |
405 | H = {English = "H", Arabic = "ح", Albanian = "H", Japanese = "く", Spanish = "H", Russian = "Х", Chinese = "艾尺", Urdu = "ح", French = "H", Portuguese = "H", Hindi = "ह"}, |
406 | I = {English = "I", Arabic = "ي", Albanian = "I", Japanese = "け", Spanish = "I", Russian = "И", Chinese = "伊", Urdu = "آئی", French = "I", Portuguese = "I", Hindi = "इ"}, |
407 | J = {English = "J", Arabic = "ج", Albanian = "J", Japanese = "こ", Spanish = "J", Russian = "Й", Chinese = "杰", Urdu = "جے", French = "J", Portuguese = "J", Hindi = "ज"}, |
408 | K = {English = "K", Arabic = "ك", Albanian = "K", Japanese = "さ", Spanish = "K", Russian = "К", Chinese = "开", Urdu = "کے", French = "K", Portuguese = "K", Hindi = "क"}, |
409 | L = {English = "L", Arabic = "ل", Albanian = "L", Japanese = "し", Spanish = "L", Russian = "Л", Chinese = "艾勒", Urdu = "ل", French = "L", Portuguese = "L", Hindi = "ल"}, |
410 | M = {English = "M", Arabic = "م", Albanian = "M", Japanese = "す", Spanish = "M", Russian = "М", Chinese = "艾马", Urdu = "م", French = "M", Portuguese = "M", Hindi = "म"}, |
411 | N = {English = "N", Arabic = "ن", Albanian = "N", Japanese = "せ", Spanish = "N", Russian = "Н", Chinese = "艾娜", Urdu = "ن", French = "N", Portuguese = "N", Hindi = "न"}, |
412 | O = {English = "O", Arabic = "أو", Albanian = "O", Japanese = "そ", Spanish = "O", Russian = "О", Chinese = "哦", Urdu = "او", French = "O", Portuguese = "O", Hindi = "ओ"}, |
413 | P = {English = "P", Arabic = "ب", Albanian = "P", Japanese = "た", Spanish = "P", Russian = "П", Chinese = "屁", Urdu = "پ", French = "P", Portuguese = "P", Hindi = "प"}, |
414 | Q = {English = "Q", Arabic = "ق", Albanian = "Q", Japanese = "ち", Spanish = "Q", Russian = "К", Chinese = "丘", Urdu = "ق", French = "Q", Portuguese = "Q", Hindi = "क्यू"}, |
415 | R = {English = "R", Arabic = "ر", Albanian = "R", Japanese = "つ", Spanish = "R", Russian = "Р", Chinese = "艾儿", Urdu = "ر", French = "R", Portuguese = "R", Hindi = "र"}, |
416 | S = {English = "S", Arabic = "س", Albanian = "S", Japanese = "て", Spanish = "S", Russian = "С", Chinese = "艾丝", Urdu = "س", French = "S", Portuguese = "S", Hindi = "एस"}, |
417 | T = {English = "T", Arabic = "ت", Albanian = "T", Japanese = "と", Spanish = "T", Russian = "Т", Chinese = "提", Urdu = "ٹ", French = "T", Portuguese = "T", Hindi = "ट"}, |
418 | U = {English = "U", Arabic = "أو", Albanian = "U", Japanese = "な", Spanish = "U", Russian = "У", Chinese = "优", Urdu = "یو", French = "U", Portuguese = "U", Hindi = "यू"}, |
419 | V = {English = "V", Arabic = "ف", Albanian = "V", Japanese = "に", Spanish = "V", Russian = "В", Chinese = "维", Urdu = "وی", French = "V", Portuguese = "V", Hindi = "व"}, |
420 | W = {English = "W", Arabic = "و", Albanian = "W", Japanese = "ぬ", Spanish = "W", Russian = "В", Chinese = "豆贝尔维", Urdu = "ڈبلیو", French = "W", Portuguese = "W", Hindi = "डब्ल्यू"}, |
421 | X = {English = "X", Arabic = "إكس", Albanian = "X", Japanese = "ね", Spanish = "X", Russian = "Х", Chinese = "艾克斯", Urdu = "اکس", French = "X", Portuguese = "X", Hindi = "एक्स"}, |
422 | Y = {English = "Y", Arabic = "ي", Albanian = "Y", Japanese = "の", Spanish = "Y", Russian = "У", Chinese = "伊儿", Urdu = "وائی", French = "Y", Portuguese = "Y", Hindi = "वाई"}, |
423 | Z = {English = "Z", Arabic = "ز", Albanian = "Z", Japanese = "は", Spanish = "Z", Russian = "З", Chinese = "贼德", Urdu = "زیڈ", French = "Z", Portuguese = "Z", Hindi = "जेड"} |
424 | } |
425 | local utx = {} |
426 | local Messages = {} |
427 | local drawingCache = {} |
428 | |
429 | utility.folders["Part Chams"] = Instance.new("Folder", Workspace); |
430 | utility.folders["Hit Chams"] = Instance.new("Folder", Workspace); |
431 | Library.__index = Library; |
432 | Library.Pages.__index = Library.Pages; |
433 | Library.Sections.__index = Library.Sections; |
434 | |
435 | -- // Functions |
436 | do |
437 | -- // Library Functions |
438 | do |
439 | function Library:Connection(Signal, Callback) |
440 | local Con = Signal:Connect(Callback) |
441 | return Con |
442 | end |
443 | -- |
444 | function Library:updateNotifsPositions(position) |
445 | for i, v in pairs(Library.Notifs) do |
446 | local Position = position == "Middle" and NewVector2(viewportSize.X/2 - (v["Objects"][3].TextBounds.X + 4)/2,600) or NewVector2(20, 20) |
447 | game:GetService("TweenService"):Create(v.Container, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = UDim2.new(0,Position.X,0,Position.Y + (i * 25))}):Play() |
448 | end |
449 | end |
450 | -- |
451 | function Library:Notification(message, duration, color, position) |
452 | local notification = {Container = nil, Objects = {}} |
453 | -- |
454 | local NotifContainer = Instance.new('Frame', NotifiactionSGui) |
455 | local Background = Instance.new('Frame', NotifContainer) |
456 | local Outline = Instance.new('Frame', Background) |
457 | local UIStroke = Instance.new('UIStroke', Outline) |
458 | local TextLabel = Instance.new('TextLabel', Background) |
459 | local Accemt = Instance.new('Frame', Background) |
460 | local Progress = Instance.new('Frame', Background) |
461 | -- |
462 | local Position = position == "Middle" and NewVector2(viewportSize.X/2 - (TextLabel.TextBounds.X + 4)/2, 600) or NewVector2(20, 20) |
463 | -- |
464 | NotifContainer.Name = "NotifContainer" |
465 | NotifContainer.Position = UDim2.new(0,Position.X, 0, Position.Y) |
466 | NotifContainer.Size = UDim2.new(0,TextLabel.TextBounds.X + 4,0,20) |
467 | NotifContainer.BackgroundColor3 = Color3.new(1,1,1) |
468 | NotifContainer.BackgroundTransparency = 1 |
469 | NotifContainer.BorderSizePixel = 0 |
470 | NotifContainer.BorderColor3 = Color3.new(0,0,0) |
471 | NotifContainer.ZIndex = 99999999 |
472 | notification.Container = NotifContainer |
473 | -- |
474 | Background.Name = "Background" |
475 | Background.Size = UDim2.new(1,0,1,0) |
476 | Background.BackgroundColor3 = Color3.new(0.0588,0.0588,0.0784) |
477 | Background.BorderColor3 = Color3.new(0.1373,0.1373,0.1569) |
478 | table.insert(notification.Objects, Background) |
479 | -- |
480 | Outline.Name = "Outline" |
481 | Outline.Position = UDim2.new(0,-1,0,-1) |
482 | Outline.Size = UDim2.new(1,2,1,2) |
483 | Outline.BackgroundColor3 = Color3.new(1,1,1) |
484 | Outline.BackgroundTransparency = 1 |
485 | Outline.BorderSizePixel = 0 |
486 | Outline.BorderColor3 = Color3.new(0,0,0) |
487 | table.insert(notification.Objects, Outline) |
488 | -- |
489 | TextLabel.Name = "TextLabel" |
490 | TextLabel.Position = UDim2.new(0,1,0,0) |
491 | TextLabel.Size = UDim2.new(1,0,1,0) |
492 | TextLabel.BackgroundColor3 = Color3.new(1,1,1) |
493 | TextLabel.BackgroundTransparency = 1 |
494 | TextLabel.BorderSizePixel = 0 |
495 | TextLabel.BorderColor3 = Color3.new(0,0,0) |
496 | TextLabel.Text = message |
497 | TextLabel.TextColor3 = Color3.new(0.9216,0.9216,0.9216) |
498 | TextLabel.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
499 | TextLabel.TextSize = Library.FontSize |
500 | TextLabel.AutomaticSize = Enum.AutomaticSize.X |
501 | TextLabel.TextXAlignment = Enum.TextXAlignment.Left |
502 | table.insert(notification.Objects, TextLabel) |
503 | -- |
504 | Accemt.Name = "Accemt" |
505 | Accemt.Size = UDim2.new(1,0,0,1) |
506 | Accemt.BackgroundColor3 = Library.Accent |
507 | Accemt.BorderSizePixel = 0 |
508 | Accemt.BorderColor3 = Color3.new(0,0,0) |
509 | table.insert(notification.Objects, Accemt) |
510 | -- |
511 | Progress.Name = "Progress" |
512 | Progress.Position = UDim2.new(0,0,1,-1) |
513 | Progress.Size = UDim2.new(0,0,0,1) |
514 | Progress.BackgroundColor3 = Color3.new(1,0,0) |
515 | Progress.BorderSizePixel = 0 |
516 | Progress.BorderColor3 = Color3.new(0,0,0) |
517 | table.insert(notification.Objects, Progress) |
518 | |
519 | if color ~= nil then |
520 | Progress.BackgroundColor3 = color |
521 | Accemt.BackgroundColor3 = color |
522 | end |
523 | |
524 | function notification:remove() |
525 | table.remove(Library.Notifs, table.find(Library.Notifs, notification)) |
526 | Library:updateNotifsPositions(position) |
527 | notification.Container:Destroy() |
528 | end |
529 | |
530 | task.spawn(function() |
531 | Background.AnchorPoint = NewVector2(1,0) |
532 | local Tween1 = game:GetService("TweenService"):Create(Background, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {AnchorPoint = NewVector2(0,0)}):Play() |
533 | local Tween2 = game:GetService("TweenService"):Create(Progress, TweenInfo.new(duration or 5, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {Size = UDim2.new(1,0,0,1)}):Play() |
534 | game:GetService("TweenService"):Create(Progress, TweenInfo.new(duration or 5, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {BackgroundColor3 = Color3.new(0,1,0)}):Play() |
535 | task.wait(duration) |
536 | game:GetService("TweenService"):Create(Background, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {AnchorPoint = NewVector2(1,0)}):Play() |
537 | for i,v in next, notification.Objects do |
538 | game:GetService("TweenService"):Create(v, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() |
539 | end |
540 | game:GetService("TweenService"):Create(TextLabel, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() |
541 | game:GetService("TweenService"):Create(UIStroke, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Transparency = 1}):Play() |
542 | end) |
543 | |
544 | task.delay(0.25 + duration + 0.25, function() |
545 | notification:remove() |
546 | end) |
547 | |
548 | table.insert(Library.Notifs, notification) |
549 | NotifContainer.Position = UDim2.new(0,Position.X,0,Position.Y + (table.find(Library.Notifs, notification) * 25)) |
550 | NotifContainer.Size = UDim2.new(0,TextLabel.TextBounds.X + 4,0,18) |
551 | Library:updateNotifsPositions(position) |
552 | |
553 | return notification |
554 | end |
555 | -- |
556 | function Library:Disconnect(Connection) |
557 | Connection:Disconnect() |
558 | end |
559 | -- |
560 | function Library:Round(Number, Float) |
561 | return Float * math.floor(Number / Float) |
562 | end |
563 | -- |
564 | function Library.NextFlag() |
565 | Library.UnNamedFlags = Library.UnNamedFlags + 1 |
566 | return string.format("%.14g", Library.UnNamedFlags) |
567 | end |
568 | -- |
569 | function Library:GetConfig() |
570 | local Config = "" |
571 | for Index, Value in pairs(self.Flags) do |
572 | if |
573 | Index ~= "ConfigConfig_List" |
574 | and Index ~= "ConfigConfig_Load" |
575 | and Index ~= "ConfigConfig_Save" |
576 | then |
577 | local Value2 = Value |
578 | local Final = "" |
579 | -- |
580 | if typeof(Value2) == "Color3" then |
581 | local hue, sat, val = Value2:ToHSV() |
582 | -- |
583 | Final = ("rgb(%s,%s,%s,%s)"):format(hue, sat, val, 1) |
584 | elseif typeof(Value2) == "table" and Value2.Color and Value2.Transparency then |
585 | local hue, sat, val = Value2.Color:ToHSV() |
586 | -- |
587 | Final = ("rgb(%s,%s,%s,%s)"):format(hue, sat, val, Value2.Transparency) |
588 | elseif typeof(Value2) == "table" and Value.Mode then |
589 | local Values = Value.current |
590 | -- |
591 | Final = ("key(%s,%s,%s)"):format(Values[1] or "nil", Values[2] or "nil", Value.Mode) |
592 | elseif Value2 ~= nil then |
593 | if typeof(Value2) == "boolean" then |
594 | Value2 = ("bool(%s)"):format(tostring(Value2)) |
595 | elseif typeof(Value2) == "table" then |
596 | local New = "table(" |
597 | -- |
598 | for Index2, Value3 in pairs(Value2) do |
599 | New = New .. Value3 .. "," |
600 | end |
601 | -- |
602 | if New:sub(#New) == "," then |
603 | New = New:sub(0, #New - 1) |
604 | end |
605 | -- |
606 | Value2 = New .. ")" |
607 | elseif typeof(Value2) == "string" then |
608 | Value2 = ("string(%s)"):format(Value2) |
609 | elseif typeof(Value2) == "number" then |
610 | Value2 = ("number(%s)"):format(Value2) |
611 | end |
612 | -- |
613 | Final = Value2 |
614 | end |
615 | -- |
616 | Config = Config .. Index .. ": " .. tostring(Final) .. "\n" |
617 | end |
618 | end |
619 | -- |
620 | return Config |
621 | end |
622 | -- |
623 | function Library:LoadConfig(Config) |
624 | for i = 1, 10 do |
625 | local Table = string.split(Config, "\n") |
626 | local Table2 = {} |
627 | for Index, Value in pairs(Table) do |
628 | local Table3 = string.split(Value, ":") |
629 | -- |
630 | if Table3[1] ~= "ConfigConfig_List" and #Table3 >= 2 then |
631 | local Value = Table3[2]:sub(2, #Table3[2]) |
632 | -- |
633 | if Value:sub(1, 3) == "rgb" then |
634 | local Table4 = string.split(Value:sub(5, #Value - 1), ",") |
635 | -- |
636 | Value = Table4 |
637 | elseif Value:sub(1, 3) == "key" then |
638 | local Table4 = string.split(Value:sub(5, #Value - 1), ",") |
639 | -- |
640 | if Table4[1] == "nil" and Table4[2] == "nil" then |
641 | Table4[1] = nil |
642 | Table4[2] = nil |
643 | end |
644 | -- |
645 | Value = Table4 |
646 | elseif Value:sub(1, 4) == "bool" then |
647 | local Bool = Value:sub(6, #Value - 1) |
648 | -- |
649 | Value = Bool == "true" |
650 | elseif Value:sub(1, 5) == "table" then |
651 | local Table4 = string.split(Value:sub(7, #Value - 1), ",") |
652 | -- |
653 | Value = Table4 |
654 | elseif Value:sub(1, 6) == "string" then |
655 | local String = Value:sub(8, #Value - 1) |
656 | -- |
657 | Value = String |
658 | elseif Value:sub(1, 6) == "number" then |
659 | local Number = tonumber(Value:sub(8, #Value - 1)) |
660 | -- |
661 | Value = Number |
662 | end |
663 | -- |
664 | Table2[Table3[1]] = Value |
665 | end |
666 | end |
667 | -- |
668 | for i, v in pairs(Table2) do |
669 | if Flags[i] then |
670 | if typeof(Flags[i]) == "table" then |
671 | Flags[i]:Set(v) |
672 | else |
673 | Flags[i](v) |
674 | end |
675 | end |
676 | end |
677 | end |
678 | end |
679 | -- |
680 | function Library:SetOpen(bool) |
681 | if typeof(bool) == 'boolean' then |
682 | Library.Open = bool; |
683 | Library.Holder.Visible = bool; |
684 | end |
685 | end; |
686 | -- |
687 | function Library:ChangeAccent(Color) |
688 | Library.Accent = Color |
689 | |
690 | for obj, theme in next, Library.ThemeObjects do |
691 | if theme:IsA("Frame") or theme:IsA("TextButton") then |
692 | theme.BackgroundColor3 = Color |
693 | elseif theme:IsA("TextLabel") then |
694 | theme.TextColor3 = Color |
695 | elseif theme:IsA("TextButton") and theme.BackgroundTransparency == 1 then |
696 | theme.TextColor3 = Color |
697 | end |
698 | end |
699 | end |
700 | -- |
701 | function Library:IsMouseOverFrame(Frame) |
702 | local AbsPos, AbsSize = Frame.AbsolutePosition, Frame.AbsoluteSize; |
703 | |
704 | if Mouse.X >= AbsPos.X and Mouse.X <= AbsPos.X + AbsSize.X |
705 | and Mouse.Y >= AbsPos.Y and Mouse.Y <= AbsPos.Y + AbsSize.Y then |
706 | |
707 | return true; |
708 | end; |
709 | end; |
710 | -- |
711 | function Library:KeybindList() |
712 | local KeyList = {Keybinds = {}}; |
713 | Library.KeyList = KeyList |
714 | -- |
715 | local KeyOutline = Instance.new('Frame', PlaceHolderUI) |
716 | local KeyInline = Instance.new('Frame', KeyOutline) |
717 | local KeyAccent = Instance.new('Frame', KeyInline) |
718 | local KeyHolder = Instance.new('Frame', KeyInline) |
719 | local UIListLayout = Instance.new('UIListLayout', KeyHolder) |
720 | local KeyTitle = Instance.new('TextLabel', KeyInline) |
721 | local LineThing = Instance.new('Frame', KeyInline) |
722 | -- |
723 | KeyOutline.Name = "KeyOutline" |
724 | KeyOutline.Position = UDim2.new(0.01,0,0.5,0) |
725 | KeyOutline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
726 | KeyOutline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
727 | KeyOutline.AnchorPoint = NewVector2(0.009999999776482582,0.5) |
728 | KeyOutline.AutomaticSize = Enum.AutomaticSize.XY |
729 | -- |
730 | KeyInline.Name = "KeyInline" |
731 | KeyInline.Position = UDim2.new(0,1,0,1) |
732 | KeyInline.Size = UDim2.new(0,-2,0,-2) |
733 | KeyInline.BackgroundColor3 = Color3.new(0.0745,0.0745,0.0745) |
734 | KeyInline.BorderSizePixel = 0 |
735 | KeyInline.BorderColor3 = Color3.new(0,0,0) |
736 | KeyInline.AutomaticSize = Enum.AutomaticSize.XY |
737 | -- |
738 | KeyAccent.Name = "KeyAccent" |
739 | KeyAccent.Size = UDim2.new(1,0,0,1) |
740 | KeyAccent.BackgroundColor3 = Library.Accent |
741 | KeyAccent.BorderSizePixel = 0 |
742 | KeyAccent.BorderColor3 = Color3.new(0,0,0) |
743 | -- |
744 | KeyHolder.Name = "KeyHolder" |
745 | KeyHolder.Position = UDim2.new(0,0,0,22) |
746 | KeyHolder.BackgroundColor3 = Color3.new(1,1,1) |
747 | KeyHolder.BackgroundTransparency = 1 |
748 | KeyHolder.BorderSizePixel = 0 |
749 | KeyHolder.BorderColor3 = Color3.new(0,0,0) |
750 | KeyHolder.AutomaticSize = Enum.AutomaticSize.XY |
751 | -- |
752 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
753 | -- |
754 | KeyTitle.Name = "KeyTitle" |
755 | KeyTitle.Size = UDim2.new(1,0,0,20) |
756 | KeyTitle.BackgroundColor3 = Color3.new(1,1,1) |
757 | KeyTitle.BackgroundTransparency = 1 |
758 | KeyTitle.BorderSizePixel = 0 |
759 | KeyTitle.BorderColor3 = Color3.new(0,0,0) |
760 | KeyTitle.Text = "Keybinds" |
761 | KeyTitle.TextColor3 = Color3.new(1,1,1) |
762 | KeyTitle.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
763 | KeyTitle.TextSize = 12 |
764 | KeyTitle.TextStrokeTransparency = 0 |
765 | -- |
766 | LineThing.Name = "LineThing" |
767 | LineThing.Position = UDim2.new(0,0,0,20) |
768 | LineThing.Size = UDim2.new(1,0,0,1) |
769 | LineThing.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
770 | LineThing.BorderSizePixel = 0 |
771 | LineThing.BorderColor3 = Color3.new(0,0,0) |
772 | -- Functions |
773 | function KeyList:SetVisible(State) |
774 | KeyOutline.Visible = State; |
775 | end; |
776 | -- |
777 | function KeyList:NewKey(Name, Key, Mode) |
778 | local KeyValue = {} |
779 | -- |
780 | local NewValue = Instance.new('TextLabel', KeyHolder) |
781 | -- |
782 | NewValue.Name = "NewValue" |
783 | NewValue.Size = UDim2.new(0,0,0,15) |
784 | NewValue.BackgroundColor3 = Color3.new(1,1,1) |
785 | NewValue.BackgroundTransparency = 1 |
786 | NewValue.BorderSizePixel = 0 |
787 | NewValue.BorderColor3 = Color3.new(0,0,0) |
788 | NewValue.Text = tostring(" ["..Key.."] " .. Name .. " (" .. Mode ..") ") |
789 | NewValue.TextColor3 = Color3.new(1,1,1) |
790 | NewValue.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
791 | NewValue.TextSize = 12 |
792 | NewValue.AutomaticSize = Enum.AutomaticSize.X |
793 | NewValue.TextXAlignment = Enum.TextXAlignment.Left |
794 | NewValue.Visible = false |
795 | -- |
796 | function KeyValue:SetVisible(State) |
797 | NewValue.Visible = State; |
798 | end; |
799 | -- |
800 | function KeyValue:Update(NewName, NewKey, NewMode) |
801 | NewValue.Text = tostring(" ["..NewName.."] " .. NewKey .. " (" .. NewMode ..") ") |
802 | end; |
803 | return KeyValue |
804 | end; |
805 | return KeyList |
806 | end |
807 | end |
808 | -- // Color Picker Functions |
809 | do |
810 | function Library:NewPicker(name, default, defaultalpha, parent, count, flag, callback) |
811 | -- // Instances |
812 | local Icon = Instance.new('TextButton', parent) |
813 | local IconInline = Instance.new('Frame', Icon) |
814 | local ColorWindow = Instance.new('Frame', parent) |
815 | local WindowInline = Instance.new('Frame', ColorWindow) |
816 | local Color = Instance.new('TextButton', WindowInline) |
817 | local Sat = Instance.new('ImageLabel', Color) |
818 | local Val = Instance.new('ImageLabel', Color) |
819 | local Pointer = Instance.new('Frame', Color) |
820 | local Container = Instance.new('Frame', Color) |
821 | local ColorOutline = Instance.new('Frame', Color) |
822 | local UIStroke = Instance.new('UIStroke', ColorOutline) |
823 | local Hue = Instance.new('ImageButton', Color) |
824 | local HueOutline = Instance.new('Frame', Hue) |
825 | local UIStroke2 = Instance.new('UIStroke', HueOutline) |
826 | local Alpha = Instance.new('ImageButton', Color) |
827 | local AlphaOutline = Instance.new('Frame', Alpha) |
828 | local UIStroke3 = Instance.new('UIStroke', AlphaOutline) |
829 | local HueSlide = Instance.new('Frame', Hue) |
830 | local AlphaSlide = Instance.new('Frame', Alpha) |
831 | local ModeOutline = Instance.new('Frame', parent) |
832 | local ModeInline = Instance.new('Frame', ModeOutline) |
833 | local UIListLayout = Instance.new('UIListLayout', ModeInline) |
834 | local Hold = Instance.new('TextButton', ModeInline) |
835 | local Toggle = Instance.new('TextButton', ModeInline) |
836 | -- |
837 | Icon.Name = "Icon" |
838 | Icon.Position = UDim2.new(1, - (count * 20) - (count * 6),0.5,0) |
839 | Icon.Size = UDim2.new(0,20,0,10) |
840 | Icon.BackgroundColor3 = Color3.fromRGB(45,45,45) |
841 | Icon.BorderColor3 = Color3.fromRGB(10,10,10) |
842 | Icon.AnchorPoint = NewVector2(1,0.5) |
843 | Icon.AutoButtonColor = false |
844 | Icon.Text = "" |
845 | -- |
846 | IconInline.Name = "IconInline" |
847 | IconInline.Position = UDim2.new(0,1,0,1) |
848 | IconInline.Size = UDim2.new(1,-2,1,-2) |
849 | IconInline.BackgroundColor3 = default |
850 | IconInline.BorderSizePixel = 0 |
851 | -- |
852 | ColorWindow.Name = "ColorWindow" |
853 | ColorWindow.Position = UDim2.new(1,-2,1,2) |
854 | ColorWindow.Size = UDim2.new(0,206,0,170) |
855 | ColorWindow.BackgroundColor3 = Color3.fromRGB(45,45,45) |
856 | ColorWindow.BorderColor3 = Color3.fromRGB(10,10,10) |
857 | ColorWindow.AnchorPoint = NewVector2(1,0) |
858 | ColorWindow.ZIndex = 100 |
859 | ColorWindow.Visible = false |
860 | -- |
861 | WindowInline.Name = "WindowInline" |
862 | WindowInline.Position = UDim2.new(0,1,0,1) |
863 | WindowInline.Size = UDim2.new(1,-2,1,-2) |
864 | WindowInline.BackgroundColor3 = Color3.fromRGB(20,20,20) |
865 | WindowInline.BorderSizePixel = 0; |
866 | WindowInline.ZIndex = 100 |
867 | -- |
868 | Color.Name = "Color" |
869 | Color.Position = UDim2.new(0,8,0,10) |
870 | Color.Size = UDim2.new(0,150,0,150) |
871 | Color.BackgroundColor3 = default |
872 | Color.BorderColor3 = Color3.new(0,0,0) |
873 | Color.Text = "" |
874 | Color.TextColor3 = Color3.new(0,0,0) |
875 | Color.AutoButtonColor = false |
876 | Color.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
877 | Color.TextSize = 14 |
878 | Color.ZIndex = 100 |
879 | -- |
880 | Sat.Name = "Sat" |
881 | Sat.Size = UDim2.new(1,0,1,0) |
882 | Sat.BackgroundColor3 = Color3.new(1,1,1) |
883 | Sat.BackgroundTransparency = 1 |
884 | Sat.BorderSizePixel = 0 |
885 | Sat.BorderColor3 = Color3.new(0,0,0) |
886 | Sat.Image = "http://www.roblox.com/asset/?id=14684562507" |
887 | Sat.ZIndex = 100 |
888 | -- |
889 | Val.Name = "Val" |
890 | Val.Size = UDim2.new(1,0,1,0) |
891 | Val.BackgroundColor3 = Color3.new(1,1,1) |
892 | Val.BackgroundTransparency = 1 |
893 | Val.BorderSizePixel = 0 |
894 | Val.BorderColor3 = Color3.new(0,0,0) |
895 | Val.Image = "http://www.roblox.com/asset/?id=14684563800" |
896 | Val.ZIndex = 100 |
897 | -- |
898 | Pointer.Name = "Pointer" |
899 | Pointer.Position = UDim2.new(1,0,1,0) |
900 | Pointer.Size = UDim2.new(0,1,0,1) |
901 | Pointer.BackgroundColor3 = Color3.new(1,1,1) |
902 | Pointer.BorderColor3 = Color3.new(0,0,0) |
903 | Pointer.ZIndex = 100 |
904 | -- |
905 | Container.Name = "Container" |
906 | Container.Position = UDim2.new(0,-2,1,5) |
907 | Container.Size = UDim2.new(0,189,0,55) |
908 | Container.BackgroundColor3 = Color3.new(1,1,1) |
909 | Container.BackgroundTransparency = 1 |
910 | Container.BorderColor3 = Color3.new(0,0,0) |
911 | Container.ZIndex = 100 |
912 | -- |
913 | ColorOutline.Name = "ColorOutline" |
914 | ColorOutline.Position = UDim2.new(0,-1,0,-1) |
915 | ColorOutline.Size = UDim2.new(1,2,1,2) |
916 | ColorOutline.BackgroundColor3 = Color3.new(1,1,1) |
917 | ColorOutline.BackgroundTransparency = 1 |
918 | ColorOutline.BorderSizePixel = 0 |
919 | ColorOutline.BorderColor3 = Color3.new(0,0,0) |
920 | ColorOutline.ZIndex = 100 |
921 | -- |
922 | UIStroke.Color = Color3.fromRGB(45,45,45) |
923 | -- |
924 | Hue.Name = "Hue" |
925 | Hue.Position = UDim2.new(1,10,0,0) |
926 | Hue.Size = UDim2.new(0,10,1,0) |
927 | Hue.BackgroundColor3 = Color3.new(1,1,1) |
928 | Hue.BorderColor3 = Color3.new(0,0,0) |
929 | Hue.Image = "http://www.roblox.com/asset/?id=14684557999" |
930 | Hue.AutoButtonColor = false |
931 | Hue.ZIndex = 100 |
932 | -- |
933 | HueOutline.Name = "HueOutline" |
934 | HueOutline.Position = UDim2.new(0,-1,0,-1) |
935 | HueOutline.Size = UDim2.new(1,2,1,2) |
936 | HueOutline.BackgroundColor3 = Color3.new(1,1,1) |
937 | HueOutline.BackgroundTransparency = 1 |
938 | HueOutline.BorderSizePixel = 0 |
939 | HueOutline.BorderColor3 = Color3.new(0,0,0) |
940 | HueOutline.ZIndex = 100 |
941 | -- |
942 | UIStroke2.Color = Color3.fromRGB(45,45,45) |
943 | -- |
944 | Alpha.Name = "Alpha" |
945 | Alpha.Position = UDim2.new(1,30,0,0) |
946 | Alpha.Size = UDim2.new(0,10,1,0) |
947 | Alpha.BackgroundColor3 = Color3.new(1,1,1) |
948 | Alpha.BorderColor3 = Color3.new(0,0,0) |
949 | Alpha.Image = "http://www.roblox.com/asset/?id=14684560169" |
950 | Alpha.AutoButtonColor = false |
951 | Alpha.ZIndex = 100 |
952 | -- |
953 | AlphaOutline.Name = "AlphaOutline" |
954 | AlphaOutline.Position = UDim2.new(0,-1,0,-1) |
955 | AlphaOutline.Size = UDim2.new(1,2,1,2) |
956 | AlphaOutline.BackgroundColor3 = Color3.new(1,1,1) |
957 | AlphaOutline.BackgroundTransparency = 1 |
958 | AlphaOutline.BorderSizePixel = 0 |
959 | AlphaOutline.BorderColor3 = Color3.new(0,0,0) |
960 | AlphaOutline.ZIndex = 100 |
961 | -- |
962 | UIStroke3.Color = Color3.fromRGB(45,45,45) |
963 | -- |
964 | HueSlide.Name = "HueSlide" |
965 | HueSlide.Size = UDim2.new(1,0,0,3) |
966 | HueSlide.BackgroundColor3 = Color3.new(1,1,1) |
967 | HueSlide.BorderColor3 = Color3.new(0,0,0) |
968 | -- |
969 | AlphaSlide.Name = "AlphaSlide" |
970 | AlphaSlide.Size = UDim2.new(1,0,0,3) |
971 | AlphaSlide.BackgroundColor3 = Color3.new(1,1,1) |
972 | AlphaSlide.BorderColor3 = Color3.new(0,0,0) |
973 | AlphaSlide.ZIndex = 100 |
974 | -- |
975 | ModeOutline.Name = "ModeOutline" |
976 | ModeOutline.Position = UDim2.new(1,65,0.5,0) |
977 | ModeOutline.Size = UDim2.new(0,60,0,12) |
978 | ModeOutline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
979 | ModeOutline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
980 | ModeOutline.AnchorPoint = NewVector2(1,0.5) |
981 | ModeOutline.AutomaticSize = Enum.AutomaticSize.Y |
982 | ModeOutline.Visible = false |
983 | ModeOutline.ZIndex = 1020000010 |
984 | -- |
985 | ModeInline.Name = "ModeInline" |
986 | ModeInline.Position = UDim2.new(0,1,0,1) |
987 | ModeInline.Size = UDim2.new(1,-2,1,-2) |
988 | ModeInline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
989 | ModeInline.BorderSizePixel = 0 |
990 | ModeInline.BorderColor3 = Color3.new(0,0,0) |
991 | ModeInline.ZIndex = 100 |
992 | -- |
993 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
994 | -- |
995 | Hold.Name = "Hold" |
996 | Hold.Size = UDim2.new(1,0,0,15) |
997 | Hold.BackgroundColor3 = Color3.new(1,1,1) |
998 | Hold.BackgroundTransparency = 1 |
999 | Hold.BorderSizePixel = 0 |
1000 | Hold.BorderColor3 = Color3.new(0,0,0) |
1001 | Hold.Text = "Copy" |
1002 | Hold.TextColor3 = Color3.fromRGB(145,145,145) |
1003 | Hold.AutoButtonColor = false |
1004 | Hold.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1005 | Hold.TextSize = Library.FontSize |
1006 | Hold.TextStrokeTransparency = 0 |
1007 | Hold.ZIndex = 100 |
1008 | -- |
1009 | Toggle.Name = "Toggle" |
1010 | Toggle.Size = UDim2.new(1,0,0,15) |
1011 | Toggle.BackgroundColor3 = Color3.new(1,1,1) |
1012 | Toggle.BackgroundTransparency = 1 |
1013 | Toggle.BorderSizePixel = 0 |
1014 | Toggle.BorderColor3 = Color3.new(0,0,0) |
1015 | Toggle.Text = "Paste" |
1016 | Toggle.TextColor3 = Color3.fromRGB(145,145,145) |
1017 | Toggle.AutoButtonColor = false |
1018 | Toggle.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1019 | Toggle.TextSize = Library.FontSize |
1020 | Toggle.TextStrokeTransparency = 0 |
1021 | Toggle.ZIndex = 100 |
1022 | |
1023 | Library:Connection(Icon.MouseEnter, function() |
1024 | Icon.BorderColor3 = Library.Accent |
1025 | end) |
1026 | -- |
1027 | Library:Connection(Icon.MouseLeave, function() |
1028 | Icon.BorderColor3 = Color3.fromRGB(10,10,10) |
1029 | end) |
1030 | |
1031 | -- // Connections |
1032 | local mouseover = false |
1033 | local hue, sat, val = default:ToHSV() |
1034 | local hsv = default:ToHSV() |
1035 | local alpha = defaultalpha |
1036 | local oldcolor = hsv |
1037 | local slidingsaturation = false |
1038 | local slidinghue = false |
1039 | local slidingalpha = false |
1040 | |
1041 | local function update() |
1042 | local real_pos = game:GetService("UserInputService"):GetMouseLocation() |
1043 | local mouse_position = NewVector2(real_pos.X, real_pos.Y - 40) |
1044 | local relative_palette = (mouse_position - Color.AbsolutePosition) |
1045 | local relative_hue = (mouse_position - Hue.AbsolutePosition) |
1046 | local relative_opacity = (mouse_position - Alpha.AbsolutePosition) |
1047 | -- |
1048 | if slidingsaturation then |
1049 | sat = math.clamp(1 - relative_palette.X / Color.AbsoluteSize.X, 0, 1) |
1050 | val = math.clamp(1 - relative_palette.Y / Color.AbsoluteSize.Y, 0, 1) |
1051 | end |
1052 | -- |
1053 | if slidinghue then |
1054 | hue = math.clamp(relative_hue.Y / Hue.AbsoluteSize.Y, 0, 1) |
1055 | end |
1056 | -- |
1057 | if slidingalpha then |
1058 | alpha = math.clamp(relative_opacity.Y / Alpha.AbsoluteSize.Y, 0, 1) |
1059 | end |
1060 | -- edited by finobe (yes these fucking alphas crash on roexec? nice executor for $8 a week :[ ) |
1061 | hsv = Color3.fromHSV(hue, sat, val) |
1062 | Pointer.Position = UDim2.new(math.clamp(1 - sat, 0.005, 0.995), 0, math.clamp(1 - val, 0.005, 0.995), 0) |
1063 | Color.BackgroundColor3 = Color3.fromHSV(hue, 1, 1) |
1064 | Alpha.BackgroundColor3 = Color3.fromHSV(hue, 1, 1) |
1065 | IconInline.BackgroundColor3 = hsv |
1066 | |
1067 | HueSlide.Position = UDim2.new(0,0,math.clamp(hue, 0.005, 0.995),0) |
1068 | AlphaSlide.Position = UDim2.new(0,0,math.clamp(alpha, 0.005, 0.995),0) |
1069 | |
1070 | if flag then |
1071 | Library.Flags[flag] = {} |
1072 | Library.Flags[flag]["Color"] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255) |
1073 | Library.Flags[flag]["Transparency"] = alpha |
1074 | end |
1075 | |
1076 | callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255), alpha) |
1077 | end |
1078 | |
1079 | local function set(color, a) |
1080 | if type(color) == "table" then |
1081 | a = color[4] |
1082 | color = Color3.fromHSV(color[1], color[2], color[3]) |
1083 | end |
1084 | if type(color) == "string" then |
1085 | color = Color3.fromHex(color) |
1086 | end |
1087 | |
1088 | local oldcolor = hsv |
1089 | local oldalpha = alpha |
1090 | |
1091 | hue, sat, val = color:ToHSV() |
1092 | alpha = a or 1 |
1093 | hsv = Color3.fromHSV(hue, sat, val) |
1094 | |
1095 | if hsv ~= oldcolor then |
1096 | IconInline.BackgroundColor3 = hsv |
1097 | Color.BackgroundColor3 = Color3.fromHSV(hue, 1, 1) |
1098 | Pointer.Position = UDim2.new(math.clamp(1 - sat, 0.005, 0.995), 0, math.clamp(1 - val, 0.005, 0.995), 0) |
1099 | Alpha.BackgroundColor3 = Color3.fromHSV(hue, 1, 1) |
1100 | HueSlide.Position = UDim2.new(0,0,math.clamp(hue, 0.005, 0.995),0) |
1101 | AlphaSlide.Position = UDim2.new(0,0,math.clamp(alpha, 0.005, 0.995),0) |
1102 | |
1103 | if flag then |
1104 | Library.Flags[flag] = {} |
1105 | Library.Flags[flag]["Color"] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255) |
1106 | Library.Flags[flag]["Transparency"] = alpha |
1107 | end |
1108 | |
1109 | callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255), alpha) |
1110 | end |
1111 | end |
1112 | |
1113 | Flags[flag] = set |
1114 | |
1115 | set(default, defaultalpha) |
1116 | |
1117 | Sat.InputBegan:Connect(function(input) |
1118 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
1119 | slidingsaturation = true |
1120 | update() |
1121 | end |
1122 | end) |
1123 | |
1124 | Sat.InputEnded:Connect(function(input) |
1125 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
1126 | slidingsaturation = false |
1127 | update() |
1128 | end |
1129 | end) |
1130 | |
1131 | Hue.InputBegan:Connect(function(input) |
1132 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
1133 | slidinghue = true |
1134 | update() |
1135 | end |
1136 | end) |
1137 | |
1138 | Hue.InputEnded:Connect(function(input) |
1139 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
1140 | slidinghue = false |
1141 | update() |
1142 | end |
1143 | end) |
1144 | |
1145 | Alpha.InputBegan:Connect(function(input) |
1146 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
1147 | slidingalpha = true |
1148 | update() |
1149 | end |
1150 | end) |
1151 | |
1152 | Alpha.InputEnded:Connect(function(input) |
1153 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
1154 | slidingalpha = false |
1155 | update() |
1156 | end |
1157 | end) |
1158 | |
1159 | Library:Connection(game:GetService("UserInputService").InputChanged, function(input) |
1160 | if input.UserInputType == Enum.UserInputType.MouseMovement then |
1161 | if slidingalpha then |
1162 | update() |
1163 | end |
1164 | |
1165 | if slidinghue then |
1166 | update() |
1167 | end |
1168 | |
1169 | if slidingsaturation then |
1170 | update() |
1171 | end |
1172 | end |
1173 | end) |
1174 | |
1175 | Icon.MouseButton1Down:Connect(function() |
1176 | ColorWindow.Visible = not ColorWindow.Visible |
1177 | parent.ZIndex = ColorWindow.Visible and 5 or 1 |
1178 | |
1179 | if slidinghue then |
1180 | slidinghue = false |
1181 | end |
1182 | |
1183 | if slidingsaturation then |
1184 | slidingsaturation = false |
1185 | end |
1186 | |
1187 | if slidingalpha then |
1188 | slidingalpha = false |
1189 | end |
1190 | end) |
1191 | |
1192 | Library:Connection(Icon.MouseButton2Down, function() |
1193 | ModeOutline.Visible = not ModeOutline.Visible |
1194 | end) |
1195 | -- |
1196 | Library:Connection(Hold.MouseButton1Down, function() |
1197 | Library.CopiedColor = hsv |
1198 | Library.CopiedAlpha = alpha |
1199 | end) |
1200 | -- |
1201 | Library:Connection(Toggle.MouseButton1Down, function() |
1202 | set(Library.CopiedColor or Color3.new(1,1,1), Library.CopiedAlpha or 0) |
1203 | end) |
1204 | -- |
1205 | Library:Connection(game:GetService("UserInputService").InputBegan, function(Input) |
1206 | if ModeOutline.Visible and Input.UserInputType == Enum.UserInputType.MouseButton1 then |
1207 | if not Library:IsMouseOverFrame(Icon) then |
1208 | ModeOutline.Visible = false |
1209 | end |
1210 | end |
1211 | end) |
1212 | |
1213 | local colorpickertypes = {} |
1214 | |
1215 | function colorpickertypes:Set(color, newalpha) |
1216 | set(color, newalpha) |
1217 | end |
1218 | |
1219 | Library:Connection(game:GetService("UserInputService").InputBegan, function(Input) |
1220 | if ColorWindow.Visible and Input.UserInputType == Enum.UserInputType.MouseButton1 then |
1221 | if not Library:IsMouseOverFrame(ColorWindow) and not Library:IsMouseOverFrame(Icon) then |
1222 | ColorWindow.Visible = false |
1223 | parent.ZIndex = 1 |
1224 | end |
1225 | end |
1226 | end) |
1227 | |
1228 | return colorpickertypes, ColorWindow |
1229 | end |
1230 | end |
1231 | -- // Doc Functions |
1232 | do |
1233 | local Pages = Library.Pages; |
1234 | local Sections = Library.Sections; |
1235 | function Library:Window(Options) |
1236 | local Window = { |
1237 | Pages = {}; |
1238 | Sections = {}; |
1239 | Elements = {}; |
1240 | Dragging = { false, UDim2.new(0, 0, 0, 0) }; |
1241 | Size = Options.Size or Options.size or UDim2.new(0, 550,0, 600); |
1242 | }; |
1243 | -- |
1244 | local ScreenGui = Instance.new('ScreenGui', game.CoreGui) |
1245 | local Outline = Instance.new('Frame', ScreenGui) |
1246 | local Inline = Instance.new('Frame', Outline) |
1247 | local Accent = Instance.new('Frame', Inline) |
1248 | local HolderOutline = Instance.new('Frame', Inline) |
1249 | local HolderInline = Instance.new('Frame', HolderOutline) |
1250 | local Tabs = Instance.new('Frame', HolderInline) |
1251 | local UIListLayout = Instance.new('UIListLayout', Tabs) |
1252 | local DragButton = Instance.new('TextButton', Outline) |
1253 | local KeybindList = Library:KeybindList() |
1254 | -- |
1255 | ScreenGui.DisplayOrder = 2 |
1256 | -- |
1257 | Outline.Name = "Outline" |
1258 | Outline.Position = UDim2.new(0.5,0,0.5,0) |
1259 | Outline.Size = Window.Size |
1260 | Outline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
1261 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
1262 | Outline.AnchorPoint = Vector2.new(0.5,0.5) |
1263 | Library.Holder = Outline |
1264 | -- |
1265 | Inline.Name = "Inline" |
1266 | Inline.Position = UDim2.new(0,1,0,1) |
1267 | Inline.Size = UDim2.new(1,-2,1,-2) |
1268 | Inline.BackgroundColor3 = Color3.new(0.0784,0.0784,0.0784) |
1269 | Inline.BorderSizePixel = 0 |
1270 | Inline.BorderColor3 = Color3.new(0,0,0) |
1271 | -- |
1272 | Accent.Name = "Accent" |
1273 | Accent.Size = UDim2.new(1,0,0,1) |
1274 | Accent.BackgroundColor3 = Library.Accent |
1275 | Accent.BorderSizePixel = 0 |
1276 | Accent.BorderColor3 = Color3.new(0,0,0) |
1277 | table.insert(Library.ThemeObjects, Accent) |
1278 | -- |
1279 | HolderOutline.Name = "HolderOutline" |
1280 | HolderOutline.Position = UDim2.new(0,7,0,11) |
1281 | HolderOutline.Size = UDim2.new(1,-14,1,-18) |
1282 | HolderOutline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
1283 | HolderOutline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
1284 | -- |
1285 | HolderInline.Name = "HolderInline" |
1286 | HolderInline.Position = UDim2.new(0,1,0,1) |
1287 | HolderInline.Size = UDim2.new(1,-2,1,-2) |
1288 | HolderInline.BackgroundColor3 = Color3.new(0.0784,0.0784,0.0784) |
1289 | HolderInline.BorderSizePixel = 0 |
1290 | HolderInline.BorderColor3 = Color3.new(0,0,0) |
1291 | -- |
1292 | Tabs.Name = "Tabs" |
1293 | Tabs.Size = UDim2.new(1,0,0,22) |
1294 | Tabs.BackgroundColor3 = Color3.new(1,1,1) |
1295 | Tabs.BackgroundTransparency = 1 |
1296 | Tabs.BorderSizePixel = 0 |
1297 | Tabs.BorderColor3 = Color3.new(0,0,0) |
1298 | -- |
1299 | UIListLayout.FillDirection = Enum.FillDirection.Horizontal |
1300 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
1301 | -- |
1302 | DragButton.Name = "DragButton" |
1303 | DragButton.Size = UDim2.new(1,0,0,10) |
1304 | DragButton.BackgroundColor3 = Color3.new(1,1,1) |
1305 | DragButton.BackgroundTransparency = 1 |
1306 | DragButton.BorderSizePixel = 0 |
1307 | DragButton.BorderColor3 = Color3.new(0,0,0) |
1308 | DragButton.Text = "" |
1309 | DragButton.TextColor3 = Color3.new(0,0,0) |
1310 | DragButton.AutoButtonColor = false |
1311 | DragButton.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1312 | DragButton.TextSize = 14 |
1313 | |
1314 | |
1315 | |
1316 | -- // Elements |
1317 | Window.Elements = { |
1318 | TabHolder = Tabs, |
1319 | Holder = HolderInline |
1320 | } |
1321 | |
1322 | -- // Dragging |
1323 | Library:Connection(DragButton.MouseButton1Down, function() |
1324 | local Location = game:GetService("UserInputService"):GetMouseLocation() |
1325 | Window.Dragging[1] = true |
1326 | Window.Dragging[2] = UDim2.new(0, Location.X - Outline.AbsolutePosition.X, 0, Location.Y - Outline.AbsolutePosition.Y) |
1327 | end) |
1328 | Library:Connection(game:GetService("UserInputService").InputEnded, function(Input) |
1329 | if Input.UserInputType == Enum.UserInputType.MouseButton1 and Window.Dragging[1] then |
1330 | local Location = game:GetService("UserInputService"):GetMouseLocation() |
1331 | Window.Dragging[1] = false |
1332 | Window.Dragging[2] = UDim2.new(0, 0, 0, 0) |
1333 | end |
1334 | end) |
1335 | Library:Connection(game:GetService("UserInputService").InputChanged, function(Input) |
1336 | local Location = game:GetService("UserInputService"):GetMouseLocation() |
1337 | local ActualLocation = nil |
1338 | |
1339 | -- Dragging |
1340 | if Window.Dragging[1] then |
1341 | Outline.Position = UDim2.new( |
1342 | 0, |
1343 | Location.X - Window.Dragging[2].X.Offset + (Outline.Size.X.Offset * Outline.AnchorPoint.X), |
1344 | 0, |
1345 | Location.Y - Window.Dragging[2].Y.Offset + (Outline.Size.Y.Offset * Outline.AnchorPoint.Y) |
1346 | ) |
1347 | end |
1348 | end) |
1349 | Library:Connection(game:GetService("UserInputService").InputBegan, function(Input) |
1350 | if Input.KeyCode == Library.UIKey then |
1351 | Library:SetOpen(not Library.Open) |
1352 | end |
1353 | end) |
1354 | |
1355 | -- // Functions |
1356 | function Window:UpdateTabs() |
1357 | for Index, Page in pairs(Window.Pages) do |
1358 | Page.Elements.Button.Size = UDim2.new(1/#Window.Pages,0,1,0) |
1359 | Page:Turn(Page.Open) |
1360 | end |
1361 | end |
1362 | |
1363 | -- // Returns |
1364 | Library.Holder = Outline |
1365 | return setmetatable(Window, Library) |
1366 | end |
1367 | -- |
1368 | function Library:Page(Properties) |
1369 | if not Properties then |
1370 | Properties = {} |
1371 | end |
1372 | -- |
1373 | local Page = { |
1374 | Name = Properties.Name or "Page", |
1375 | Window = self, |
1376 | Open = false, |
1377 | Sections = {}, |
1378 | Elements = {}, |
1379 | Weapons = {}, |
1380 | Icons = Properties.Weapons or Properties.weapons or false, |
1381 | } |
1382 | -- |
1383 | local TabButton = Instance.new('TextButton', Page.Window.Elements.TabHolder) |
1384 | local TabAccent = Instance.new('Frame', TabButton) |
1385 | local TabLine = Instance.new('Frame', TabButton) |
1386 | local WeaponOutline = Instance.new("Frame", Page.Window.Elements.Holder) |
1387 | local WeaponInline = Instance.new("Frame", WeaponOutline) |
1388 | local UIListLayout3 = Instance.new("UIListLayout", WeaponInline) |
1389 | local Left = Instance.new('Frame', Page.Window.Elements.Holder) |
1390 | local Right = Instance.new('Frame', Page.Window.Elements.Holder) |
1391 | local UIListLayout = Instance.new('UIListLayout', Left) |
1392 | local UIListLayout_2 = Instance.new('UIListLayout', Right) |
1393 | Left.Name = "Left" |
1394 | Left.Position = UDim2.new(0,5,0,35) |
1395 | Left.Size = UDim2.new(0.485,-3,1,-40) |
1396 | Left.BackgroundColor3 = Color3.new(1,1,1) |
1397 | Left.BorderSizePixel = 0 |
1398 | Left.BackgroundTransparency = 1 |
1399 | Left.BorderColor3 = Color3.new(0,0,0) |
1400 | Left.Visible = false |
1401 | Left.ZIndex = 3 |
1402 | -- |
1403 | Right.Name = "Right" |
1404 | Right.Position = UDim2.new(1,-5,0,35) |
1405 | Right.Size = UDim2.new(0.485,-3,1,-40) |
1406 | Right.BackgroundColor3 = Color3.new(1,1,1) |
1407 | Right.BorderSizePixel = 0 |
1408 | Right.BorderColor3 = Color3.new(0,0,0) |
1409 | Right.AnchorPoint = Vector2.new(1,0) |
1410 | Right.Visible = false |
1411 | Right.BackgroundTransparency = 1 |
1412 | -- |
1413 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
1414 | UIListLayout.Padding = UDim.new(0,12) |
1415 | -- |
1416 | UIListLayout_2.SortOrder = Enum.SortOrder.LayoutOrder |
1417 | UIListLayout_2.Padding = UDim.new(0,12) |
1418 | -- |
1419 | TabButton.Name = "TabButton" |
1420 | TabButton.Size = UDim2.new(0.25,0,1,0) |
1421 | TabButton.BackgroundColor3 = Color3.new(1,1,1) |
1422 | TabButton.BackgroundTransparency = 1 |
1423 | TabButton.BorderSizePixel = 0 |
1424 | TabButton.BorderColor3 = Color3.new(0,0,0) |
1425 | TabButton.Text = Page.Name |
1426 | TabButton.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
1427 | TabButton.AutoButtonColor = false |
1428 | TabButton.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1429 | TabButton.TextSize = Library.FontSize |
1430 | TabButton.TextStrokeTransparency = 0 |
1431 | TabButton.LineHeight = 1.1 |
1432 | -- |
1433 | TabAccent.Name = "TabAccent" |
1434 | TabAccent.Size = UDim2.new(1,0,0,1) |
1435 | TabAccent.BackgroundColor3 = Library.Accent |
1436 | TabAccent.BorderSizePixel = 0 |
1437 | TabAccent.BorderColor3 = Color3.new(0,0,0) |
1438 | TabAccent.Visible = false |
1439 | table.insert(Library.ThemeObjects, TabAccent) |
1440 | -- |
1441 | TabLine.Name = "TabLine" |
1442 | TabLine.Position = UDim2.new(0,0,1,-1) |
1443 | TabLine.Size = UDim2.new(1,0,0,1) |
1444 | TabLine.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
1445 | TabLine.BorderSizePixel = 0 |
1446 | TabLine.BorderColor3 = Color3.new(0,0,0) |
1447 | |
1448 | WeaponOutline.Name = "WeaponOutline" |
1449 | WeaponOutline.BackgroundColor3 = Color3.fromRGB(45, 45, 45) |
1450 | WeaponOutline.BorderColor3 = Color3.fromRGB(10, 10, 10) |
1451 | WeaponOutline.Position = UDim2.new(0, 5, 0, 25) |
1452 | WeaponOutline.Size = UDim2.new(1, -10, 0, 40) |
1453 | WeaponOutline.Visible = false |
1454 | |
1455 | WeaponInline.Name = "WeaponInline" |
1456 | WeaponInline.BackgroundColor3 = Color3.fromRGB(20, 20, 20) |
1457 | WeaponInline.BorderColor3 = Color3.fromRGB(0, 0, 0) |
1458 | WeaponInline.BorderSizePixel = 0 |
1459 | WeaponInline.Position = UDim2.new(0, 1, 0, 1) |
1460 | WeaponInline.Size = UDim2.new(1, -2, 1, -2) |
1461 | |
1462 | UIListLayout3.FillDirection = Enum.FillDirection.Horizontal |
1463 | UIListLayout3.SortOrder = Enum.SortOrder.LayoutOrder |
1464 | |
1465 | function Page:Turn(bool) |
1466 | Page.Open = bool |
1467 | if not Page.Icons then |
1468 | Left.Visible = Page.Open |
1469 | Right.Visible = Page.Open |
1470 | else |
1471 | WeaponOutline.Visible = Page.Open |
1472 | for Index, Weapon in pairs(Page.Weapons) do |
1473 | Weapon:Turn(Weapon.Open) |
1474 | end |
1475 | end |
1476 | TabAccent.Visible = Page.Open |
1477 | TabLine.Visible = not Page.Open |
1478 | TabButton.TextColor3 = Page.Open and Color3.fromRGB(255,255,255) or Color3.fromRGB(145,145,145) |
1479 | end |
1480 | -- |
1481 | Library:Connection(TabButton.MouseButton1Down, function() |
1482 | if not Page.Open then |
1483 | Page:Turn(true) |
1484 | for _, Pages in pairs(Page.Window.Pages) do |
1485 | if Pages.Open and Pages ~= Page then |
1486 | Pages:Turn(false) |
1487 | end |
1488 | end |
1489 | end |
1490 | end) |
1491 | -- |
1492 | Library:Connection(TabButton.MouseEnter, function() |
1493 | if not Page.Open then |
1494 | TabButton.TextColor3 = Library.Accent |
1495 | end |
1496 | end) |
1497 | -- |
1498 | Library:Connection(TabButton.MouseLeave, function() |
1499 | if not Page.Open then |
1500 | TabButton.TextColor3 = Color3.fromRGB(145,145,145) |
1501 | end |
1502 | end) |
1503 | |
1504 | -- // Functions |
1505 | function Page:UpdateWeapons() |
1506 | for Index, Weapon in pairs(Page.Weapons) do |
1507 | Weapon.Elements.Button.Size = UDim2.new(1/#Page.Weapons,0,1,0) |
1508 | Weapon:Turn(Weapon.Open) |
1509 | end |
1510 | end |
1511 | |
1512 | -- // Elements |
1513 | Page.Elements = { |
1514 | Left = Page.Icons and nil or Left, |
1515 | Right = Page.Icons and nil or Right, |
1516 | Button = TabButton, |
1517 | WeaponOutline = WeaponOutline, |
1518 | WeaponInline = WeaponInline, |
1519 | } |
1520 | |
1521 | -- // Drawings |
1522 | if #Page.Window.Pages == 0 then |
1523 | Page:Turn(true) |
1524 | end |
1525 | Page.Window.Pages[#Page.Window.Pages + 1] = Page |
1526 | Page.Window:UpdateTabs() |
1527 | return setmetatable(Page, Library.Pages) |
1528 | end |
1529 | -- |
1530 | function Pages:Weapon(Properties) |
1531 | if not Properties then |
1532 | Properties = {} |
1533 | end |
1534 | -- |
1535 | local Weapon = { |
1536 | Icon = Properties.Icon or Properties.icon or "rbxassetid://11127408662", |
1537 | Window = self, |
1538 | Open = false, |
1539 | Sections = {}, |
1540 | Elements = {}, |
1541 | } |
1542 | -- |
1543 | --Weapon.Window.Elements.WeaponOutline.Visible = true |
1544 | |
1545 | local Left = Instance.new('Frame', Weapon.Window.Window.Elements.Holder) |
1546 | local Right = Instance.new('Frame', Weapon.Window.Window.Elements.Holder) |
1547 | local UIListLayout = Instance.new('UIListLayout', Left) |
1548 | local UIListLayout_2 = Instance.new('UIListLayout', Right) |
1549 | local New = Instance.new("ImageButton") |
1550 | -- |
1551 | New.Name = "New" |
1552 | New.Parent = Weapon.Window.Elements.WeaponInline |
1553 | New.BackgroundColor3 = Color3.fromRGB(255, 255, 255) |
1554 | New.BackgroundTransparency = 1.000 |
1555 | New.BorderColor3 = Color3.fromRGB(0, 0, 0) |
1556 | New.BorderSizePixel = 0 |
1557 | New.Size = UDim2.new(0.200000003, 0, 1, 0) |
1558 | New.Image = Weapon.Icon |
1559 | New.ScaleType = Enum.ScaleType.Fit |
1560 | -- |
1561 | Left.Name = "Left" |
1562 | Left.Position = UDim2.new(0,5,0,75) |
1563 | Left.Size = UDim2.new(0.485,-3,1, -80) |
1564 | Left.BackgroundColor3 = Color3.new(1,1,1) |
1565 | Left.BorderSizePixel = 0 |
1566 | Left.BackgroundTransparency = 1 |
1567 | Left.BorderColor3 = Color3.new(0,0,0) |
1568 | Left.Visible = false |
1569 | Left.ZIndex = 3 |
1570 | -- |
1571 | Right.Name = "Right" |
1572 | Right.Position = UDim2.new(1,-5,0,75) |
1573 | Right.Size = UDim2.new(0.485,-3,1, -80) |
1574 | Right.BackgroundColor3 = Color3.new(1,1,1) |
1575 | Right.BorderSizePixel = 0 |
1576 | Right.BorderColor3 = Color3.new(0,0,0) |
1577 | Right.AnchorPoint = Vector2.new(1,0) |
1578 | Right.Visible = false |
1579 | Right.BackgroundTransparency = 1 |
1580 | -- |
1581 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
1582 | UIListLayout.Padding = UDim.new(0,12) |
1583 | -- |
1584 | UIListLayout_2.SortOrder = Enum.SortOrder.LayoutOrder |
1585 | UIListLayout_2.Padding = UDim.new(0,12) |
1586 | |
1587 | function Weapon:Turn(bool) |
1588 | Weapon.Open = bool |
1589 | Left.Visible = Weapon.Open and Weapon.Window.Open |
1590 | Right.Visible = Weapon.Open and Weapon.Window.Open |
1591 | New.ImageColor3 = Weapon.Open and Color3.new(1,1,1) or Color3.fromRGB(145,145,145) |
1592 | end |
1593 | -- |
1594 | Library:Connection(New.MouseButton1Down, function() |
1595 | if not Weapon.Open then |
1596 | Weapon:Turn(true) |
1597 | for _, Weapons in pairs(Weapon.Window.Weapons) do |
1598 | if Weapons.Open and Weapons ~= Weapon then |
1599 | Weapons:Turn(false) |
1600 | end |
1601 | end |
1602 | end |
1603 | end) |
1604 | -- |
1605 | |
1606 | -- // Elements |
1607 | Weapon.Elements = { |
1608 | Left = Left, |
1609 | Right = Right, |
1610 | Button = New |
1611 | } |
1612 | |
1613 | -- // Drawings |
1614 | if #Weapon.Window.Weapons == 0 then |
1615 | Weapon:Turn(true) |
1616 | end |
1617 | Weapon.Window.Weapons[#Weapon.Window.Weapons + 1] = Weapon |
1618 | Weapon.Window:UpdateWeapons() |
1619 | return setmetatable(Weapon, Library.Pages) |
1620 | end |
1621 | -- |
1622 | function Pages:Section(Properties) |
1623 | if not Properties then |
1624 | Properties = {} |
1625 | end |
1626 | -- |
1627 | local Section = { |
1628 | Name = Properties.Name or "Section", |
1629 | Page = self, |
1630 | Side = (Properties.side or Properties.Side or "left"):lower(), |
1631 | ZIndex = Properties.ZIndex or 1, -- Idfk why |
1632 | Elements = {}, |
1633 | Content = {}, |
1634 | } |
1635 | -- |
1636 | local SectionOutline = Instance.new('Frame', Section.Side == "left" and Section.Page.Elements.Left or Section.Side == "right" and Section.Page.Elements.Right) |
1637 | local SectionInline = Instance.new('Frame', SectionOutline) |
1638 | local Container = Instance.new('Frame', SectionInline) |
1639 | local UIListLayout = Instance.new('UIListLayout', Container) |
1640 | local Space = Instance.new('Frame', Container) |
1641 | local SectionAccent = Instance.new('Frame', SectionInline) |
1642 | local Title = Instance.new('TextLabel', SectionOutline) |
1643 | local TextBorder = Instance.new('Frame', SectionOutline) |
1644 | -- |
1645 | SectionOutline.Name = "SectionOutline" |
1646 | SectionOutline.Size = UDim2.new(1,0,0,20) |
1647 | SectionOutline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
1648 | SectionOutline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
1649 | SectionOutline.AutomaticSize = Enum.AutomaticSize.Y |
1650 | SectionOutline.ZIndex = Section.ZIndex |
1651 | -- |
1652 | |
1653 | -- |
1654 | SectionInline.Name = "SectionInline" |
1655 | SectionInline.Position = UDim2.new(0,1,0,1) |
1656 | SectionInline.Size = UDim2.new(1,-2,1,-2) |
1657 | SectionInline.BackgroundColor3 = Color3.new(0.0784,0.0784,0.0784) |
1658 | SectionInline.BorderSizePixel = 0 |
1659 | SectionInline.BorderColor3 = Color3.new(0,0,0) |
1660 | -- |
1661 | Container.Name = "Container" |
1662 | Container.Position = UDim2.new(0,7,0,10) |
1663 | Container.Size = UDim2.new(1,-14,1,-10) |
1664 | Container.BackgroundColor3 = Color3.new(1,1,1) |
1665 | Container.BackgroundTransparency = 1 |
1666 | Container.BorderSizePixel = 0 |
1667 | Container.BorderColor3 = Color3.new(0,0,0) |
1668 | Container.AutomaticSize = Enum.AutomaticSize.Y |
1669 | -- |
1670 | Space.Name = "Space" |
1671 | Space.Position = UDim2.new(0,0,1,0) |
1672 | Space.Size = UDim2.new(1,0,0,1) |
1673 | Space.BackgroundColor3 = Color3.new(1,1,1) |
1674 | Space.BackgroundTransparency = 1 |
1675 | Space.BorderSizePixel = 0 |
1676 | Space.BorderColor3 = Color3.new(0,0,0) |
1677 | Space.LayoutOrder = 1000 |
1678 | -- |
1679 | SectionAccent.Name = "SectionAccent" |
1680 | SectionAccent.Size = UDim2.new(1,0,0,1) |
1681 | SectionAccent.BackgroundColor3 = Library.Accent |
1682 | SectionAccent.BorderSizePixel = 0 |
1683 | SectionAccent.BorderColor3 = Color3.new(0,0,0) |
1684 | table.insert(Library.ThemeObjects, SectionAccent) |
1685 | table.insert(Library.ThemeObjects, SectionAccent) |
1686 | -- |
1687 | Title.Name = "Title" |
1688 | Title.Position = UDim2.new(0,10,0,-8) |
1689 | Title.Size = UDim2.new(0,100,0,16) |
1690 | Title.BackgroundColor3 = Color3.new(1,1,1) |
1691 | Title.BackgroundTransparency = 1 |
1692 | Title.BorderSizePixel = 0 |
1693 | Title.BorderColor3 = Color3.new(0,0,0) |
1694 | Title.TextColor3 = Color3.new(1,1,1) |
1695 | Title.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1696 | Title.TextSize = Library.FontSize |
1697 | Title.ZIndex = 3 |
1698 | Title.TextXAlignment = Enum.TextXAlignment.Left |
1699 | Title.Text = Section.Name |
1700 | Title.TextStrokeTransparency = 0 |
1701 | -- |
1702 | TextBorder.Name = "TextBorder" |
1703 | TextBorder.Position = UDim2.new(0,6,0,-2) |
1704 | TextBorder.Size = UDim2.new(0,Title.TextBounds.X + 8,0,4) |
1705 | TextBorder.BackgroundColor3 = Color3.new(0.0784,0.0784,0.0784) |
1706 | TextBorder.BorderSizePixel = 0 |
1707 | TextBorder.BorderColor3 = Color3.new(0,0,0) |
1708 | -- |
1709 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
1710 | UIListLayout.Padding = UDim.new(0,10) |
1711 | |
1712 | -- // Elements |
1713 | Section.Elements = { |
1714 | SectionContent = Container; |
1715 | SectionHolder = SectionOutline; |
1716 | } |
1717 | |
1718 | -- // Returning |
1719 | Section.Page.Sections[#Section.Page.Sections + 1] = Section |
1720 | wait(0.01) |
1721 | TextBorder.Size = UDim2.new(0,Title.TextBounds.X + 8,0,4) |
1722 | return setmetatable(Section, Library.Sections) |
1723 | end |
1724 | -- |
1725 | function Sections:Toggle(Properties) |
1726 | if not Properties then |
1727 | Properties = {} |
1728 | end |
1729 | -- |
1730 | local Toggle = { |
1731 | Window = self.Window, |
1732 | Page = self.Page, |
1733 | Section = self, |
1734 | Risk = Properties.Risk or false, |
1735 | Name = Properties.Name or "Toggle", |
1736 | State = ( |
1737 | Properties.state |
1738 | or Properties.State |
1739 | or Properties.def |
1740 | or Properties.Def |
1741 | or Properties.default |
1742 | or Properties.Default |
1743 | or false |
1744 | ), |
1745 | Callback = ( |
1746 | Properties.callback |
1747 | or Properties.Callback |
1748 | or Properties.callBack |
1749 | or Properties.CallBack |
1750 | or function() end |
1751 | ), |
1752 | Flag = ( |
1753 | Properties.flag |
1754 | or Properties.Flag |
1755 | or Properties.pointer |
1756 | or Properties.Pointer |
1757 | or Library.NextFlag() |
1758 | ), |
1759 | Toggled = false, |
1760 | Colorpickers = 0, |
1761 | } |
1762 | -- |
1763 | local NewToggle = Instance.new('TextButton', Toggle.Section.Elements.SectionContent) |
1764 | local Outline = Instance.new('Frame', NewToggle) |
1765 | local Inline = Instance.new('Frame', Outline) |
1766 | local Title = Instance.new('TextLabel', NewToggle) |
1767 | -- |
1768 | NewToggle.Name = "NewToggle" |
1769 | NewToggle.Size = UDim2.new(1,0,0,10) |
1770 | NewToggle.BackgroundColor3 = Color3.new(1,1,1) |
1771 | NewToggle.BackgroundTransparency = 1 |
1772 | NewToggle.BorderSizePixel = 0 |
1773 | NewToggle.BorderColor3 = Color3.new(0,0,0) |
1774 | NewToggle.Text = "" |
1775 | NewToggle.TextColor3 = Color3.new(0,0,0) |
1776 | NewToggle.AutoButtonColor = false |
1777 | NewToggle.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1778 | NewToggle.TextSize = 14 |
1779 | -- |
1780 | Outline.Name = "Outline" |
1781 | Outline.Size = UDim2.new(0,10,0,10) |
1782 | Outline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
1783 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
1784 | -- |
1785 | Inline.Name = "Inline" |
1786 | Inline.Position = UDim2.new(0,1,0,1) |
1787 | Inline.Size = UDim2.new(1,-2,1,-2) |
1788 | Inline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
1789 | Inline.BorderSizePixel = 0 |
1790 | Inline.BorderColor3 = Color3.new(0,0,0) |
1791 | -- |
1792 | --[[local inputText = string.upper(Toggle.Name) |
1793 | local targetLanguage = "Chinese" -- // English, Arabic, Albanian, Japanese, Spanish, Russian, Chinese, Urdu, French, Portuguese, Hindi |
1794 | local translatedText = utility:TranslateString(inputText, targetLanguage)]] |
1795 | -- |
1796 | Title.Name = "Title" |
1797 | Title.Position = UDim2.new(0,15,0,0) |
1798 | Title.Size = UDim2.new(1,0,0,10) |
1799 | Title.BackgroundColor3 = Color3.new(1,1,1) |
1800 | Title.BackgroundTransparency = 1 |
1801 | Title.BorderSizePixel = 0 |
1802 | Title.BorderColor3 = Color3.new(0,0,0) |
1803 | Title.TextColor3 = Toggle.Risk and Color3.fromRGB(158, 158, 24) or Color3.new(0.5686,0.5686,0.5686) |
1804 | Title.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1805 | Title.TextSize = Library.FontSize |
1806 | Title.TextXAlignment = Enum.TextXAlignment.Left |
1807 | Title.Text = Toggle.Name |
1808 | Title.TextStrokeTransparency = 0 |
1809 | |
1810 | -- // Functions |
1811 | local function SetState() |
1812 | Toggle.Toggled = not Toggle.Toggled |
1813 | if Toggle.Toggled then |
1814 | table.insert(Library.ThemeObjects, Inline) |
1815 | Inline.BackgroundColor3 = Library.Accent |
1816 | if Toggle.Risk then |
1817 | Title.TextColor3 = Color3.fromRGB(227, 227, 34) |
1818 | else |
1819 | Title.TextColor3 = Color3.fromRGB(255,255,255) |
1820 | end |
1821 | else |
1822 | table.remove(Library.ThemeObjects, table.find(Library.ThemeObjects, Inline)) |
1823 | Inline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
1824 | if Toggle.Risk then |
1825 | Title.TextColor3 = Color3.fromRGB(158, 158, 24) |
1826 | else |
1827 | Title.TextColor3 = Color3.fromRGB(145,145,145) |
1828 | end |
1829 | end |
1830 | Library.Flags[Toggle.Flag] = Toggle.Toggled |
1831 | Toggle.Callback(Toggle.Toggled) |
1832 | end |
1833 | -- |
1834 | Library:Connection(NewToggle.MouseButton1Down, SetState) |
1835 | Library:Connection(NewToggle.MouseEnter, function() |
1836 | if not Toggle.Toggled then |
1837 | table.insert(Library.ThemeObjects, Title) |
1838 | Title.TextColor3 = Library.Accent |
1839 | end |
1840 | end) |
1841 | -- |
1842 | Library:Connection(NewToggle.MouseLeave, function() |
1843 | if not Toggle.Toggled then |
1844 | table.remove(Library.ThemeObjects, table.find(Library.ThemeObjects, Title)) |
1845 | if Toggle.Risk then |
1846 | Title.TextColor3 = Color3.fromRGB(158, 158, 24) |
1847 | else |
1848 | Title.TextColor3 = Color3.fromRGB(145,145,145) |
1849 | end |
1850 | else |
1851 | table.remove(Library.ThemeObjects, table.find(Library.ThemeObjects, Title)) |
1852 | end |
1853 | end) |
1854 | |
1855 | function Toggle:Keybind(Properties) |
1856 | local Properties = Properties or {} |
1857 | local Keybind = { |
1858 | Section = self, |
1859 | State = ( |
1860 | Properties.state |
1861 | or Properties.State |
1862 | or Properties.def |
1863 | or Properties.Def |
1864 | or Properties.default |
1865 | or Properties.Default |
1866 | or nil |
1867 | ), |
1868 | Mode = (Properties.mode or Properties.Mode or "Toggle"), |
1869 | Callback = ( |
1870 | Properties.callback |
1871 | or Properties.Callback |
1872 | or Properties.callBack |
1873 | or Properties.CallBack |
1874 | or function() end |
1875 | ), |
1876 | Flag = ( |
1877 | Properties.flag |
1878 | or Properties.Flag |
1879 | or Properties.pointer |
1880 | or Properties.Pointer |
1881 | or Library.NextFlag() |
1882 | ), |
1883 | Name = Properties.name or Properties.Name or "Keybind", |
1884 | Binding = nil, |
1885 | } |
1886 | local Key |
1887 | local State = false |
1888 | -- |
1889 | local Outline = Instance.new('TextButton', NewToggle) |
1890 | local Inline = Instance.new('Frame', Outline) |
1891 | local Value = Instance.new('TextLabel', Inline) |
1892 | local ModeOutline = Instance.new('Frame', NewToggle) |
1893 | local ModeInline = Instance.new('Frame', ModeOutline) |
1894 | local UIListLayout = Instance.new('UIListLayout', ModeInline) |
1895 | local Hold = Instance.new('TextButton', ModeInline) |
1896 | local Toggle = Instance.new('TextButton', ModeInline) |
1897 | local Always = Instance.new('TextButton', ModeInline) |
1898 | local ListValue = Library.KeyList:NewKey(tostring(Keybind.State):gsub("Enum.KeyCode.", ""), Title.Text, Keybind.Mode) |
1899 | -- |
1900 | Outline.Name = "Outline" |
1901 | Outline.Position = UDim2.new(1,0,0.5,0) |
1902 | Outline.Size = UDim2.new(0,40,0,12) |
1903 | Outline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
1904 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
1905 | Outline.AnchorPoint = NewVector2(1,0.5) |
1906 | Outline.Text = "" |
1907 | Outline.AutoButtonColor = false |
1908 | -- |
1909 | Inline.Name = "Inline" |
1910 | Inline.Position = UDim2.new(0,1,0,1) |
1911 | Inline.Size = UDim2.new(1,-2,1,-2) |
1912 | Inline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
1913 | Inline.BorderSizePixel = 0 |
1914 | Inline.BorderColor3 = Color3.new(0,0,0) |
1915 | -- |
1916 | Value.Name = "Value" |
1917 | Value.Size = UDim2.new(1,0,1,0) |
1918 | Value.BackgroundColor3 = Color3.new(1,1,1) |
1919 | Value.BackgroundTransparency = 1 |
1920 | Value.BorderSizePixel = 0 |
1921 | Value.BorderColor3 = Color3.new(0,0,0) |
1922 | Value.Text = "MB2" |
1923 | Value.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
1924 | Value.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1925 | Value.TextSize = Library.FontSize |
1926 | Value.TextStrokeTransparency = 0 |
1927 | -- |
1928 | ModeOutline.Name = "ModeOutline" |
1929 | ModeOutline.Position = UDim2.new(1,65,0.5,0) |
1930 | ModeOutline.Size = UDim2.new(0,60,0,12) |
1931 | ModeOutline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
1932 | ModeOutline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
1933 | ModeOutline.AnchorPoint = NewVector2(1,0.5) |
1934 | ModeOutline.AutomaticSize = Enum.AutomaticSize.Y |
1935 | ModeOutline.Visible = false |
1936 | -- |
1937 | ModeInline.Name = "ModeInline" |
1938 | ModeInline.Position = UDim2.new(0,1,0,1) |
1939 | ModeInline.Size = UDim2.new(1,-2,1,-2) |
1940 | ModeInline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
1941 | ModeInline.BorderSizePixel = 0 |
1942 | ModeInline.BorderColor3 = Color3.new(0,0,0) |
1943 | -- |
1944 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
1945 | -- |
1946 | Hold.Name = "Hold" |
1947 | Hold.Size = UDim2.new(1,0,0,15) |
1948 | Hold.BackgroundColor3 = Color3.new(1,1,1) |
1949 | Hold.BackgroundTransparency = 1 |
1950 | Hold.BorderSizePixel = 0 |
1951 | Hold.BorderColor3 = Color3.new(0,0,0) |
1952 | Hold.Text = "Hold" |
1953 | Hold.TextColor3 = Keybind.Mode == "Hold" and Color3.new(1,1,1) or Color3.new(0.5686,0.5686,0.5686) |
1954 | Hold.AutoButtonColor = false |
1955 | Hold.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1956 | Hold.TextSize = Library.FontSize |
1957 | Hold.TextStrokeTransparency = 0 |
1958 | -- |
1959 | Toggle.Name = "Toggle" |
1960 | Toggle.Size = UDim2.new(1,0,0,15) |
1961 | Toggle.BackgroundColor3 = Color3.new(1,1,1) |
1962 | Toggle.BackgroundTransparency = 1 |
1963 | Toggle.BorderSizePixel = 0 |
1964 | Toggle.BorderColor3 = Color3.new(0,0,0) |
1965 | Toggle.Text = "Toggle" |
1966 | Toggle.TextColor3 = Keybind.Mode == "Toggle" and Color3.new(1,1,1) or Color3.new(0.5686,0.5686,0.5686) |
1967 | Toggle.AutoButtonColor = false |
1968 | Toggle.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1969 | Toggle.TextSize = Library.FontSize |
1970 | Toggle.TextStrokeTransparency = 0 |
1971 | -- |
1972 | Always.Name = "Always" |
1973 | Always.Size = UDim2.new(1,0,0,15) |
1974 | Always.BackgroundColor3 = Color3.new(1,1,1) |
1975 | Always.BackgroundTransparency = 1 |
1976 | Always.BorderSizePixel = 0 |
1977 | Always.BorderColor3 = Color3.new(0,0,0) |
1978 | Always.Text = "Always" |
1979 | Always.TextColor3 = Keybind.Mode == "Always" and Color3.new(1,1,1) or Color3.new(0.5686,0.5686,0.5686) |
1980 | Always.AutoButtonColor = false |
1981 | Always.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
1982 | Always.TextSize = Library.FontSize |
1983 | Always.TextStrokeTransparency = 0 |
1984 | |
1985 | -- // Functions |
1986 | local function set(newkey) |
1987 | if string.find(tostring(newkey), "Enum") then |
1988 | if c then |
1989 | c:Disconnect() |
1990 | if Keybind.Flag then |
1991 | Library.Flags[Keybind.Flag] = false |
1992 | end |
1993 | Keybind.Callback(false) |
1994 | end |
1995 | if tostring(newkey):find("Enum.KeyCode.") then |
1996 | newkey = Enum.KeyCode[tostring(newkey):gsub("Enum.KeyCode.", "")] |
1997 | elseif tostring(newkey):find("Enum.UserInputType.") then |
1998 | newkey = Enum.UserInputType[tostring(newkey):gsub("Enum.UserInputType.", "")] |
1999 | end |
2000 | if newkey == Enum.KeyCode.Backspace then |
2001 | Key = nil |
2002 | |
2003 | local text = "None" |
2004 | |
2005 | Value.Text = text |
2006 | ListValue:Update(text, Keybind.Name, Keybind.Mode) |
2007 | elseif newkey ~= nil then |
2008 | Key = newkey |
2009 | |
2010 | local text = (Library.Keys[newkey] or tostring(newkey):gsub("Enum.KeyCode.", "")) |
2011 | |
2012 | Value.Text = text |
2013 | ListValue:Update(text, Keybind.Name, Keybind.Mode) |
2014 | end |
2015 | |
2016 | Library.Flags[Keybind.Flag .. "_KEY"] = newkey |
2017 | elseif table.find({ "Always", "Toggle", "Hold" }, newkey) then |
2018 | Library.Flags[Keybind.Flag .. "_KEY STATE"] = newkey |
2019 | Keybind.Mode = newkey |
2020 | ListValue:Update((Library.Keys[Key] or tostring(Key):gsub("Enum.KeyCode.", "")), Keybind.Name, Keybind.Mode) |
2021 | if Keybind.Mode == "Always" then |
2022 | State = true |
2023 | if Keybind.Flag then |
2024 | Library.Flags[Keybind.Flag] = State |
2025 | end |
2026 | Keybind.Callback(true) |
2027 | ListValue:SetVisible(true) |
2028 | end |
2029 | else |
2030 | State = newkey |
2031 | if Keybind.Flag then |
2032 | Library.Flags[Keybind.Flag] = newkey |
2033 | end |
2034 | Keybind.Callback(newkey) |
2035 | end |
2036 | end |
2037 | -- |
2038 | set(Keybind.State) |
2039 | set(Keybind.Mode) |
2040 | Outline.MouseButton1Click:Connect(function() |
2041 | if not Keybind.Binding then |
2042 | |
2043 | Value.Text = "..." |
2044 | |
2045 | Keybind.Binding = Library:Connection( |
2046 | game:GetService("UserInputService").InputBegan, |
2047 | function(input, gpe) |
2048 | set( |
2049 | input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode |
2050 | or input.UserInputType |
2051 | ) |
2052 | Library:Disconnect(Keybind.Binding) |
2053 | task.wait() |
2054 | Keybind.Binding = nil |
2055 | end |
2056 | ) |
2057 | end |
2058 | end) |
2059 | -- |
2060 | local HoldLoop; |
2061 | Library:Connection(game:GetService("UserInputService").InputBegan, function(inp, Typing) |
2062 | if Typing then return end |
2063 | |
2064 | if HoldLoop then |
2065 | HoldLoop:Disconnect() |
2066 | end |
2067 | -- |
2068 | if (inp.KeyCode == Key or inp.UserInputType == Key) and not Keybind.Binding then |
2069 | if Keybind.Mode == "Hold" then |
2070 | if Keybind.Flag then |
2071 | Library.Flags[Keybind.Flag] = true |
2072 | end |
2073 | HoldLoop = Library:Connection(game:GetService("RunService").RenderStepped, function() |
2074 | if Keybind.Callback then |
2075 | Keybind.Callback(true) |
2076 | end |
2077 | end) |
2078 | ListValue:SetVisible(true) |
2079 | elseif Keybind.Mode == "Toggle" then |
2080 | State = not State |
2081 | if Keybind.Flag then |
2082 | Library.Flags[Keybind.Flag] = State |
2083 | end |
2084 | Keybind.Callback(State) |
2085 | ListValue:SetVisible(State) |
2086 | end |
2087 | end |
2088 | end) |
2089 | -- |
2090 | Library:Connection(game:GetService("UserInputService").InputEnded, function(inp, Typing) |
2091 | if Typing then return end |
2092 | if Keybind.Mode == "Hold" then |
2093 | if Key ~= "" or Key ~= nil then |
2094 | if inp.KeyCode == Key or inp.UserInputType == Key then |
2095 | if c then |
2096 | c:Disconnect() |
2097 | if Keybind.Flag then |
2098 | Library.Flags[Keybind.Flag] = false |
2099 | end |
2100 | if Keybind.Callback then |
2101 | Keybind.Callback(false) |
2102 | end |
2103 | ListValue:SetVisible(false) |
2104 | end |
2105 | end |
2106 | end |
2107 | end |
2108 | end) |
2109 | Library:Connection(Outline.MouseEnter, function() |
2110 | Outline.BorderColor3 = Library.Accent |
2111 | end) |
2112 | -- |
2113 | Library:Connection(Outline.MouseLeave, function() |
2114 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
2115 | end) |
2116 | -- |
2117 | Library:Connection(Outline.MouseButton2Down, function() |
2118 | ModeOutline.Visible = not ModeOutline.Visible |
2119 | end) |
2120 | -- |
2121 | Library:Connection(Hold.MouseButton1Down, function() |
2122 | set("Hold") |
2123 | Hold.TextColor3 = Color3.new(1,1,1) |
2124 | Toggle.TextColor3 = Color3.fromRGB(145,145,145) |
2125 | Always.TextColor3 = Color3.fromRGB(145,145,145) |
2126 | end) |
2127 | -- |
2128 | Library:Connection(Toggle.MouseButton1Down, function() |
2129 | set("Toggle") |
2130 | Hold.TextColor3 = Color3.fromRGB(145,145,145) |
2131 | Toggle.TextColor3 = Color3.new(1,1,1) |
2132 | Always.TextColor3 = Color3.fromRGB(145,145,145) |
2133 | end) |
2134 | -- |
2135 | Library:Connection(Always.MouseButton1Down, function() |
2136 | set("Always") |
2137 | Hold.TextColor3 = Color3.fromRGB(145,145,145) |
2138 | Toggle.TextColor3 = Color3.fromRGB(145,145,145) |
2139 | Always.TextColor3 = Color3.new(1,1,1) |
2140 | end) |
2141 | -- |
2142 | Library:Connection(game:GetService("UserInputService").InputBegan, function(Input) |
2143 | if ModeOutline.Visible and Input.UserInputType == Enum.UserInputType.MouseButton1 then |
2144 | if not Library:IsMouseOverFrame(ModeOutline) then |
2145 | ModeOutline.Visible = false |
2146 | end |
2147 | end |
2148 | end) |
2149 | -- |
2150 | Library.Flags[Keybind.Flag .. "_KEY"] = Keybind.State |
2151 | Library.Flags[Keybind.Flag .. "_KEY STATE"] = Keybind.Mode |
2152 | Flags[Keybind.Flag] = set |
2153 | Flags[Keybind.Flag .. "_KEY"] = set |
2154 | Flags[Keybind.Flag .. "_KEY STATE"] = set |
2155 | -- |
2156 | function Keybind:Set(key) |
2157 | set(key) |
2158 | end |
2159 | |
2160 | -- // Returning |
2161 | return Keybind |
2162 | end |
2163 | |
2164 | function Toggle:Colorpicker(Properties) |
2165 | local Properties = Properties or {} |
2166 | local Colorpicker = { |
2167 | State = ( |
2168 | Properties.state |
2169 | or Properties.State |
2170 | or Properties.def |
2171 | or Properties.Def |
2172 | or Properties.default |
2173 | or Properties.Default |
2174 | or Color3.fromRGB(255, 0, 0) |
2175 | ), |
2176 | Alpha = ( |
2177 | Properties.alpha |
2178 | or Properties.Alpha |
2179 | or Properties.transparency |
2180 | or Properties.Transparency |
2181 | or 1 |
2182 | ), |
2183 | Callback = ( |
2184 | Properties.callback |
2185 | or Properties.Callback |
2186 | or Properties.callBack |
2187 | or Properties.CallBack |
2188 | or function() end |
2189 | ), |
2190 | Flag = ( |
2191 | Properties.flag |
2192 | or Properties.Flag |
2193 | or Properties.pointer |
2194 | or Properties.Pointer |
2195 | or Library.NextFlag() |
2196 | ), |
2197 | } |
2198 | -- // Functions |
2199 | Toggle.Colorpickers = Toggle.Colorpickers + 1 |
2200 | local colorpickertypes = Library:NewPicker( |
2201 | "", |
2202 | Colorpicker.State, |
2203 | Colorpicker.Alpha, |
2204 | NewToggle, |
2205 | Toggle.Colorpickers - 1, |
2206 | Colorpicker.Flag, |
2207 | Colorpicker.Callback |
2208 | ) |
2209 | |
2210 | function Colorpicker:Set(color) |
2211 | colorpickertypes:set(color) |
2212 | end |
2213 | |
2214 | -- // Returning |
2215 | return Colorpicker |
2216 | end |
2217 | |
2218 | -- // Misc Functions |
2219 | function Toggle.Set(bool) |
2220 | bool = type(bool) == "boolean" and bool or false |
2221 | if Toggle.Toggled ~= bool then |
2222 | SetState() |
2223 | end |
2224 | end |
2225 | Toggle.Set(Toggle.State) |
2226 | Library.Flags[Toggle.Flag] = Toggle.State |
2227 | Flags[Toggle.Flag] = Toggle.Set |
2228 | |
2229 | -- // Returning |
2230 | return Toggle |
2231 | end |
2232 | -- |
2233 | function Sections:Slider(Properties) |
2234 | if not Properties then |
2235 | Properties = {} |
2236 | end |
2237 | -- |
2238 | local Slider = { |
2239 | Window = self.Window, |
2240 | Page = self.Page, |
2241 | Section = self, |
2242 | Name = Properties.Name or nil, |
2243 | Min = (Properties.min or Properties.Min or Properties.minimum or Properties.Minimum or 0), |
2244 | State = ( |
2245 | Properties.state |
2246 | or Properties.State |
2247 | or Properties.def |
2248 | or Properties.Def |
2249 | or Properties.default |
2250 | or Properties.Default |
2251 | or 10 |
2252 | ), |
2253 | Max = (Properties.max or Properties.Max or Properties.maximum or Properties.Maximum or 100), |
2254 | Sub = ( |
2255 | Properties.suffix |
2256 | or Properties.Suffix |
2257 | or Properties.ending |
2258 | or Properties.Ending |
2259 | or Properties.prefix |
2260 | or Properties.Prefix |
2261 | or Properties.measurement |
2262 | or Properties.Measurement |
2263 | or "" |
2264 | ), |
2265 | Decimals = (Properties.decimals or Properties.Decimals or 1), |
2266 | Callback = ( |
2267 | Properties.callback |
2268 | or Properties.Callback |
2269 | or Properties.callBack |
2270 | or Properties.CallBack |
2271 | or function() end |
2272 | ), |
2273 | Flag = ( |
2274 | Properties.flag |
2275 | or Properties.Flag |
2276 | or Properties.pointer |
2277 | or Properties.Pointer |
2278 | or Library.NextFlag() |
2279 | ), |
2280 | Disabled = (Properties.Disabled or Properties.disable or nil), |
2281 | } |
2282 | local TextValue = ("[value]" .. Slider.Sub) |
2283 | -- |
2284 | local NewSlider = Instance.new('TextButton', Slider.Section.Elements.SectionContent) |
2285 | local Outline = Instance.new('Frame', NewSlider) |
2286 | local Inline = Instance.new('Frame', Outline) |
2287 | local Accent = Instance.new('TextButton', Inline) |
2288 | local Add = Instance.new('TextButton', Outline) |
2289 | local Subtract = Instance.new('TextButton', Outline) |
2290 | local Title = Instance.new('TextLabel', NewSlider) |
2291 | local Value = Instance.new('TextLabel', NewSlider) |
2292 | -- |
2293 | NewSlider.Name = "NewSlider" |
2294 | NewSlider.Size = UDim2.new(1,0,0,22) |
2295 | NewSlider.BackgroundColor3 = Color3.new(1,1,1) |
2296 | NewSlider.BackgroundTransparency = 1 |
2297 | NewSlider.BorderSizePixel = 0 |
2298 | NewSlider.BorderColor3 = Color3.new(0,0,0) |
2299 | NewSlider.Text = "" |
2300 | NewSlider.TextColor3 = Color3.new(0,0,0) |
2301 | NewSlider.AutoButtonColor = false |
2302 | NewSlider.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2303 | NewSlider.TextSize = 14 |
2304 | -- |
2305 | Outline.Name = "Outline" |
2306 | Outline.Position = UDim2.new(0,15,1,0) |
2307 | Outline.Size = UDim2.new(1,-30,0,7) |
2308 | Outline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
2309 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
2310 | Outline.AnchorPoint = NewVector2(0,1) |
2311 | -- |
2312 | Inline.Name = "Inline" |
2313 | Inline.Position = UDim2.new(0,1,0,1) |
2314 | Inline.Size = UDim2.new(1,-2,1,-2) |
2315 | Inline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
2316 | Inline.BorderSizePixel = 0 |
2317 | Inline.BorderColor3 = Color3.new(0,0,0) |
2318 | -- |
2319 | Accent.Name = "Accent" |
2320 | Accent.Size = UDim2.new(0,0,1,0) |
2321 | Accent.BackgroundColor3 = Library.Accent |
2322 | Accent.BorderSizePixel = 0 |
2323 | Accent.BorderColor3 = Color3.new(0,0,0) |
2324 | Accent.Text = "" |
2325 | Accent.TextColor3 = Color3.new(0,0,0) |
2326 | Accent.AutoButtonColor = false |
2327 | Accent.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2328 | Accent.TextSize = 14 |
2329 | table.insert(Library.ThemeObjects, Accent) |
2330 | table.insert(Library.ThemeObjects, Accent) |
2331 | -- |
2332 | Add.Name = "Add" |
2333 | Add.Position = UDim2.new(1,5,0.5,0) |
2334 | Add.Size = UDim2.new(0,10,0,10) |
2335 | Add.BackgroundColor3 = Color3.new(1,1,1) |
2336 | Add.BackgroundTransparency = 1 |
2337 | Add.BorderSizePixel = 0 |
2338 | Add.BorderColor3 = Color3.new(0,0,0) |
2339 | Add.AnchorPoint = NewVector2(0,0.5) |
2340 | Add.Text = "+" |
2341 | Add.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2342 | Add.AutoButtonColor = false |
2343 | Add.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2344 | Add.TextSize = Library.FontSize |
2345 | Add.TextStrokeTransparency = 0 |
2346 | -- |
2347 | Subtract.Name = "Subtract" |
2348 | Subtract.Position = UDim2.new(0,-15,0.5,0) |
2349 | Subtract.Size = UDim2.new(0,10,0,10) |
2350 | Subtract.BackgroundColor3 = Color3.new(1,1,1) |
2351 | Subtract.BackgroundTransparency = 1 |
2352 | Subtract.BorderSizePixel = 0 |
2353 | Subtract.BorderColor3 = Color3.new(0,0,0) |
2354 | Subtract.AnchorPoint = NewVector2(0,0.5) |
2355 | Subtract.Text = "-" |
2356 | Subtract.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2357 | Subtract.AutoButtonColor = false |
2358 | Subtract.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2359 | Subtract.TextSize = Library.FontSize |
2360 | Subtract.TextStrokeTransparency = 0 |
2361 | -- |
2362 | Title.Name = "Title" |
2363 | Title.Position = UDim2.new(0,15,0,0) |
2364 | Title.Size = UDim2.new(1,0,0,10) |
2365 | Title.BackgroundColor3 = Color3.new(1,1,1) |
2366 | Title.BackgroundTransparency = 1 |
2367 | Title.BorderSizePixel = 0 |
2368 | Title.BorderColor3 = Color3.new(0,0,0) |
2369 | Title.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2370 | Title.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2371 | Title.TextSize = Library.FontSize |
2372 | Title.TextXAlignment = Enum.TextXAlignment.Left |
2373 | Title.Text = Slider.Name |
2374 | Title.TextStrokeTransparency = 0 |
2375 | -- |
2376 | Value.Name = "Value" |
2377 | Value.Position = UDim2.new(0,15,0,0) |
2378 | Value.Size = UDim2.new(1,-30,0,10) |
2379 | Value.BackgroundColor3 = Color3.new(1,1,1) |
2380 | Value.BackgroundTransparency = 1 |
2381 | Value.BorderSizePixel = 0 |
2382 | Value.BorderColor3 = Color3.new(0,0,0) |
2383 | Value.TextColor3 = Color3.new(1,1,1) |
2384 | Value.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2385 | Value.TextSize = Library.FontSize |
2386 | Value.TextXAlignment = Enum.TextXAlignment.Right |
2387 | Value.TextStrokeTransparency = 0 |
2388 | |
2389 | -- // Functions |
2390 | local Sliding = false |
2391 | local Val = Slider.State |
2392 | local function Set(value) |
2393 | value = math.clamp(Library:Round(value, Slider.Decimals), Slider.Min, Slider.Max) |
2394 | |
2395 | local sizeX = ((value - Slider.Min) / (Slider.Max - Slider.Min)) |
2396 | Accent.Size = UDim2.new(sizeX, 0, 1, 0) |
2397 | --Value.Text = TextValue:gsub("%[value%]", string.format("%.14g", value)) |
2398 | if Slider.Disabled and value == Slider.Min then |
2399 | Value.Text = Slider.Disabled |
2400 | else |
2401 | Value.Text = TextValue:gsub("%[value%]", string.format("%.14g", value)) |
2402 | end |
2403 | Val = value |
2404 | |
2405 | Library.Flags[Slider.Flag] = value |
2406 | Slider.Callback(value) |
2407 | end |
2408 | -- |
2409 | local function Slide(input) |
2410 | local sizeX = (input.Position.X - Outline.AbsolutePosition.X) / Outline.AbsoluteSize.X |
2411 | local value = ((Slider.Max - Slider.Min) * sizeX) + Slider.Min |
2412 | Set(value) |
2413 | end |
2414 | -- |
2415 | Library:Connection(NewSlider.InputBegan, function(input) |
2416 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
2417 | Sliding = true |
2418 | Slide(input) |
2419 | end |
2420 | end) |
2421 | Library:Connection(NewSlider.InputEnded, function(input) |
2422 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
2423 | Sliding = false |
2424 | end |
2425 | end) |
2426 | Library:Connection(Accent.InputBegan, function(input) |
2427 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
2428 | Sliding = true |
2429 | Slide(input) |
2430 | end |
2431 | end) |
2432 | Library:Connection(Accent.InputEnded, function(input) |
2433 | if input.UserInputType == Enum.UserInputType.MouseButton1 then |
2434 | Sliding = false |
2435 | end |
2436 | end) |
2437 | Library:Connection(game:GetService("UserInputService").InputChanged, function(input) |
2438 | if input.UserInputType == Enum.UserInputType.MouseMovement then |
2439 | if Sliding then |
2440 | Slide(input) |
2441 | end |
2442 | end |
2443 | end) |
2444 | Library:Connection(NewSlider.MouseEnter, function() |
2445 | table.insert(Library.ThemeObjects, Title) |
2446 | Title.TextColor3 = Library.Accent |
2447 | end) |
2448 | -- |
2449 | Library:Connection(NewSlider.MouseLeave, function() |
2450 | table.remove(Library.ThemeObjects, table.find(Library.ThemeObjects, Title)) |
2451 | Title.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2452 | end) |
2453 | -- |
2454 | Library:Connection(Add.MouseButton1Down, function() |
2455 | Set(Val + 1) |
2456 | end) |
2457 | -- |
2458 | Library:Connection(Subtract.MouseButton1Down, function() |
2459 | Set(Val - 1) |
2460 | end) |
2461 | -- |
2462 | function Slider:Set(Value) |
2463 | Set(Value) |
2464 | end |
2465 | -- |
2466 | function Slider:SetVisible(Bool) |
2467 | NewSlider.Visible = Bool |
2468 | end |
2469 | -- |
2470 | Flags[Slider.Flag] = Set |
2471 | Library.Flags[Slider.Flag] = Slider.State |
2472 | Set(Slider.State) |
2473 | |
2474 | -- // Returning |
2475 | return Slider |
2476 | end |
2477 | -- |
2478 | function Sections:Dropdown(Properties) |
2479 | local Properties = Properties or {}; |
2480 | local Dropdown = { |
2481 | Window = self.Window, |
2482 | Page = self.Page, |
2483 | Section = self, |
2484 | Open = false, |
2485 | Name = Properties.Name or Properties.name or nil, |
2486 | Options = (Properties.options or Properties.Options or Properties.values or Properties.Values or { |
2487 | "1", |
2488 | "2", |
2489 | "3", |
2490 | }), |
2491 | Max = (Properties.Max or Properties.max or nil), |
2492 | State = ( |
2493 | Properties.state |
2494 | or Properties.State |
2495 | or Properties.def |
2496 | or Properties.Def |
2497 | or Properties.default |
2498 | or Properties.Default |
2499 | or nil |
2500 | ), |
2501 | Callback = ( |
2502 | Properties.callback |
2503 | or Properties.Callback |
2504 | or Properties.callBack |
2505 | or Properties.CallBack |
2506 | or function() end |
2507 | ), |
2508 | Flag = ( |
2509 | Properties.flag |
2510 | or Properties.Flag |
2511 | or Properties.pointer |
2512 | or Properties.Pointer |
2513 | or Library.NextFlag() |
2514 | ), |
2515 | OptionInsts = {}, |
2516 | } |
2517 | -- |
2518 | local NewDrop = Instance.new('Frame', Dropdown.Section.Elements.SectionContent) |
2519 | local Outline = Instance.new('TextButton', NewDrop) |
2520 | local Inline = Instance.new('Frame', Outline) |
2521 | local Value = Instance.new('TextLabel', Inline) |
2522 | local Icon = Instance.new('TextLabel', Inline) |
2523 | local Title = Instance.new('TextLabel', NewDrop) |
2524 | local ContainerOutline = Instance.new('Frame', NewDrop) |
2525 | local ContainerInline = Instance.new('Frame', ContainerOutline) |
2526 | local UIListLayout = Instance.new('UIListLayout', ContainerInline) |
2527 | -- |
2528 | NewDrop.Name = "NewDrop" |
2529 | NewDrop.Size = UDim2.new(1,0,0,30) |
2530 | NewDrop.BackgroundColor3 = Color3.new(1,1,1) |
2531 | NewDrop.BackgroundTransparency = 1 |
2532 | NewDrop.BorderSizePixel = 0 |
2533 | NewDrop.BorderColor3 = Color3.new(0,0,0) |
2534 | -- |
2535 | Outline.Name = "Outline" |
2536 | Outline.Position = UDim2.new(0,15,1,0) |
2537 | Outline.Size = UDim2.new(1,-30,0,16) |
2538 | Outline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
2539 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
2540 | Outline.AnchorPoint = NewVector2(0,1) |
2541 | Outline.Text = "" |
2542 | Outline.AutoButtonColor = false |
2543 | -- |
2544 | Inline.Name = "Inline" |
2545 | Inline.Position = UDim2.new(0,1,0,1) |
2546 | Inline.Size = UDim2.new(1,-2,1,-2) |
2547 | Inline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
2548 | Inline.BorderSizePixel = 0 |
2549 | Inline.BorderColor3 = Color3.new(0,0,0) |
2550 | -- |
2551 | Value.Name = "Value" |
2552 | Value.Position = UDim2.new(0,2,0,0) |
2553 | Value.Size = UDim2.new(1,-30,1,0) |
2554 | Value.BackgroundColor3 = Color3.new(1,1,1) |
2555 | Value.BackgroundTransparency = 1 |
2556 | Value.BorderSizePixel = 0 |
2557 | Value.BorderColor3 = Color3.new(0,0,0) |
2558 | Value.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2559 | Value.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2560 | Value.TextSize = Library.FontSize |
2561 | Value.TextXAlignment = Enum.TextXAlignment.Left |
2562 | Value.TextStrokeTransparency = 0 |
2563 | Value.TextWrapped = true |
2564 | -- |
2565 | Icon.Name = "Icon" |
2566 | Icon.Position = UDim2.new(0,-5,0,0) |
2567 | Icon.Size = UDim2.new(1,0,1,0) |
2568 | Icon.BackgroundColor3 = Color3.new(1,1,1) |
2569 | Icon.BackgroundTransparency = 1 |
2570 | Icon.BorderSizePixel = 0 |
2571 | Icon.BorderColor3 = Color3.new(0,0,0) |
2572 | Icon.Text = "+" |
2573 | Icon.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2574 | Icon.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2575 | Icon.TextSize = Library.FontSize |
2576 | Icon.TextXAlignment = Enum.TextXAlignment.Right |
2577 | Icon.TextStrokeTransparency = 0 |
2578 | -- |
2579 | Title.Name = "Title" |
2580 | Title.Position = UDim2.new(0,15,0,0) |
2581 | Title.Size = UDim2.new(1,0,0,10) |
2582 | Title.BackgroundColor3 = Color3.new(1,1,1) |
2583 | Title.BackgroundTransparency = 1 |
2584 | Title.BorderSizePixel = 0 |
2585 | Title.BorderColor3 = Color3.new(0,0,0) |
2586 | Title.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2587 | Title.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2588 | Title.TextSize = Library.FontSize |
2589 | Title.TextXAlignment = Enum.TextXAlignment.Left |
2590 | Title.TextStrokeTransparency = 0 |
2591 | Title.Text = Dropdown.Name |
2592 | -- |
2593 | ContainerOutline.Name = "ContainerOutline" |
2594 | ContainerOutline.Position = UDim2.new(0,15,1,2) |
2595 | ContainerOutline.Size = UDim2.new(1,-30,0,10) |
2596 | ContainerOutline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
2597 | ContainerOutline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
2598 | ContainerOutline.Visible = false |
2599 | ContainerOutline.AutomaticSize = Enum.AutomaticSize.Y |
2600 | ContainerOutline.ZIndex = 5 |
2601 | -- |
2602 | ContainerInline.Name = "ContainerInline" |
2603 | ContainerInline.Position = UDim2.new(0,1,0,1) |
2604 | ContainerInline.Size = UDim2.new(1,-2,1,-2) |
2605 | ContainerInline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
2606 | ContainerInline.BorderSizePixel = 0 |
2607 | ContainerInline.BorderColor3 = Color3.new(0,0,0) |
2608 | ContainerInline.ZIndex = 6; |
2609 | -- |
2610 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
2611 | |
2612 | -- // Connections |
2613 | Library:Connection(Outline.MouseButton1Down, function() |
2614 | ContainerOutline.Visible = not ContainerOutline.Visible |
2615 | if ContainerOutline.Visible then |
2616 | NewDrop.ZIndex = 2 |
2617 | Icon.Text = "-" |
2618 | else |
2619 | NewDrop.ZIndex = 1 |
2620 | Icon.Text = "+" |
2621 | end |
2622 | end) |
2623 | Library:Connection(game:GetService("UserInputService").InputBegan, function(Input) |
2624 | if ContainerOutline.Visible and Input.UserInputType == Enum.UserInputType.MouseButton1 then |
2625 | if not Library:IsMouseOverFrame(ContainerOutline) and not Library:IsMouseOverFrame(NewDrop) then |
2626 | ContainerOutline.Visible = false |
2627 | NewDrop.ZIndex = 1 |
2628 | Icon.Text = "+" |
2629 | end |
2630 | end |
2631 | end) |
2632 | Library:Connection(NewDrop.MouseEnter, function() |
2633 | Outline.BorderColor3 = Library.Accent |
2634 | table.insert(Library.ThemeObjects, Title) |
2635 | Title.TextColor3 = Library.Accent |
2636 | end) |
2637 | -- |
2638 | Library:Connection(NewDrop.MouseLeave, function() |
2639 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
2640 | table.remove(Library.ThemeObjects, table.find(Library.ThemeObjects, Title)) |
2641 | Title.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2642 | end) |
2643 | -- |
2644 | local chosen = Dropdown.Max and {} or nil |
2645 | -- |
2646 | local function handleoptionclick(option, button, text) |
2647 | button.MouseButton1Down:Connect(function() |
2648 | if Dropdown.Max then |
2649 | if table.find(chosen, option) then |
2650 | table.remove(chosen, table.find(chosen, option)) |
2651 | |
2652 | local textchosen = {} |
2653 | local cutobject = false |
2654 | |
2655 | for _, opt in next, chosen do |
2656 | table.insert(textchosen, opt) |
2657 | end |
2658 | |
2659 | Value.Text = #chosen == 0 and "" or table.concat(textchosen, ",") .. (cutobject and ", ..." or "") |
2660 | |
2661 | text.TextColor3 = Color3.fromRGB(145,145,145) |
2662 | |
2663 | Library.Flags[Dropdown.Flag] = chosen |
2664 | Dropdown.Callback(chosen) |
2665 | else |
2666 | if #chosen == Dropdown.Max then |
2667 | Dropdown.OptionInsts[chosen[1]].text.TextColor3 = Color3.fromRGB(145,145,145) |
2668 | table.remove(chosen, 1) |
2669 | end |
2670 | |
2671 | table.insert(chosen, option) |
2672 | |
2673 | local textchosen = {} |
2674 | local cutobject = false |
2675 | |
2676 | for _, opt in next, chosen do |
2677 | table.insert(textchosen, opt) |
2678 | end |
2679 | |
2680 | Value.Text = #chosen == 0 and "" or table.concat(textchosen, ",") .. (cutobject and ", ..." or "") |
2681 | |
2682 | text.TextColor3 = Color3.fromRGB(255,255,255) |
2683 | |
2684 | Library.Flags[Dropdown.Flag] = chosen |
2685 | Dropdown.Callback(chosen) |
2686 | end |
2687 | else |
2688 | for opt, tbl in next, Dropdown.OptionInsts do |
2689 | if opt ~= option then |
2690 | tbl.text.TextColor3 = Color3.fromRGB(145,145,145) |
2691 | end |
2692 | end |
2693 | chosen = option |
2694 | Value.Text = option |
2695 | text.TextColor3 = Color3.fromRGB(255,255,255) |
2696 | Library.Flags[Dropdown.Flag] = option |
2697 | Dropdown.Callback(option) |
2698 | end |
2699 | end) |
2700 | end |
2701 | -- |
2702 | local function createoptions(tbl) |
2703 | for _, option in next, tbl do |
2704 | Dropdown.OptionInsts[option] = {} |
2705 | local NewOption = Instance.new('TextButton', ContainerInline) |
2706 | local OptionName = Instance.new('TextLabel', NewOption) |
2707 | NewOption.Name = "NewOption" |
2708 | NewOption.Size = UDim2.new(1,0,0,15) |
2709 | NewOption.BackgroundColor3 = Color3.new(1,1,1) |
2710 | NewOption.BackgroundTransparency = 1 |
2711 | NewOption.BorderSizePixel = 0 |
2712 | NewOption.BorderColor3 = Color3.new(0,0,0) |
2713 | NewOption.Text = "" |
2714 | NewOption.TextColor3 = Color3.new(0,0,0) |
2715 | NewOption.AutoButtonColor = false |
2716 | NewOption.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2717 | NewOption.TextSize = 14 |
2718 | NewOption.ZIndex = 7; |
2719 | Dropdown.OptionInsts[option].button = NewOption |
2720 | -- |
2721 | OptionName.Name = "OptionName" |
2722 | OptionName.Position = UDim2.new(0,2,0,0) |
2723 | OptionName.Size = UDim2.new(1,0,1,0) |
2724 | OptionName.BackgroundColor3 = Color3.new(1,1,1) |
2725 | OptionName.BackgroundTransparency = 1 |
2726 | OptionName.BorderSizePixel = 0 |
2727 | OptionName.BorderColor3 = Color3.new(0,0,0) |
2728 | OptionName.Text = option |
2729 | OptionName.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2730 | OptionName.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2731 | OptionName.TextSize = Library.FontSize |
2732 | OptionName.TextXAlignment = Enum.TextXAlignment.Left |
2733 | OptionName.TextStrokeTransparency = 0 |
2734 | OptionName.ZIndex = 8; |
2735 | Dropdown.OptionInsts[option].text = OptionName |
2736 | |
2737 | handleoptionclick(option, NewOption, OptionName) |
2738 | end |
2739 | end |
2740 | createoptions(Dropdown.Options) |
2741 | -- |
2742 | local set |
2743 | set = function(option) |
2744 | if Dropdown.Max then |
2745 | table.clear(chosen) |
2746 | option = type(option) == "table" and option or {} |
2747 | |
2748 | for opt, tbl in next, Dropdown.OptionInsts do |
2749 | if not table.find(option, opt) then |
2750 | tbl.text.TextColor3 = Color3.fromRGB(145,145,145) |
2751 | end |
2752 | end |
2753 | |
2754 | for i, opt in next, option do |
2755 | if table.find(Dropdown.Options, opt) and #chosen < Dropdown.Max then |
2756 | table.insert(chosen, opt) |
2757 | Dropdown.OptionInsts[opt].text.TextColor3 = Color3.fromRGB(255,255,255) |
2758 | end |
2759 | end |
2760 | |
2761 | local textchosen = {} |
2762 | local cutobject = false |
2763 | |
2764 | for _, opt in next, chosen do |
2765 | table.insert(textchosen, opt) |
2766 | end |
2767 | |
2768 | Value.Text = #chosen == 0 and "" or table.concat(textchosen, ",") .. (cutobject and ", ..." or "") |
2769 | |
2770 | Library.Flags[Dropdown.Flag] = chosen |
2771 | Dropdown.Callback(chosen) |
2772 | end |
2773 | end |
2774 | -- |
2775 | function Dropdown:Set(option) |
2776 | if Dropdown.Max then |
2777 | set(option) |
2778 | else |
2779 | for opt, tbl in next, Dropdown.OptionInsts do |
2780 | if opt ~= option then |
2781 | tbl.text.TextColor3 = Color3.fromRGB(145,145,145) |
2782 | end |
2783 | end |
2784 | if table.find(Dropdown.Options, option) then |
2785 | chosen = option |
2786 | Value.Text = option |
2787 | Dropdown.OptionInsts[option].text.TextColor3 = Color3.fromRGB(255,255,255) |
2788 | Library.Flags[Dropdown.Flag] = chosen |
2789 | Dropdown.Callback(chosen) |
2790 | else |
2791 | chosen = nil |
2792 | Value.Text = "" |
2793 | Library.Flags[Dropdown.Flag] = chosen |
2794 | Dropdown.Callback(chosen) |
2795 | end |
2796 | end |
2797 | end |
2798 | -- |
2799 | function Dropdown:Refresh(tbl) |
2800 | for _, opt in next, Dropdown.OptionInsts do |
2801 | coroutine.wrap(function() |
2802 | opt.button:Destroy() |
2803 | end)() |
2804 | end |
2805 | table.clear(Dropdown.OptionInsts) |
2806 | |
2807 | createoptions(tbl) |
2808 | |
2809 | if Dropdown.Max then |
2810 | table.clear(chosen) |
2811 | else |
2812 | chosen = nil |
2813 | end |
2814 | |
2815 | Library.Flags[Dropdown.Flag] = chosen |
2816 | Dropdown.Callback(chosen) |
2817 | end |
2818 | |
2819 | -- // Returning |
2820 | if Dropdown.Max then |
2821 | Flags[Dropdown.Flag] = set |
2822 | else |
2823 | Flags[Dropdown.Flag] = Dropdown |
2824 | end |
2825 | Dropdown:Set(Dropdown.State) |
2826 | function Dropdown:SetVisible(Bool) |
2827 | NewDrop.Visible = Bool |
2828 | end |
2829 | return Dropdown |
2830 | end |
2831 | -- |
2832 | function Sections:Keybind(Properties) |
2833 | local Properties = Properties or {} |
2834 | local Keybind = { |
2835 | Section = self, |
2836 | Name = Properties.name or Properties.Name or "Keybind", |
2837 | State = ( |
2838 | Properties.state |
2839 | or Properties.State |
2840 | or Properties.def |
2841 | or Properties.Def |
2842 | or Properties.default |
2843 | or Properties.Default |
2844 | or nil |
2845 | ), |
2846 | Mode = (Properties.mode or Properties.Mode or "Toggle"), |
2847 | UseKey = (Properties.UseKey or false), |
2848 | Ignore = (Properties.ignore or Properties.Ignore or false), |
2849 | Callback = ( |
2850 | Properties.callback |
2851 | or Properties.Callback |
2852 | or Properties.callBack |
2853 | or Properties.CallBack |
2854 | or function() end |
2855 | ), |
2856 | Flag = ( |
2857 | Properties.flag |
2858 | or Properties.Flag |
2859 | or Properties.pointer |
2860 | or Properties.Pointer |
2861 | or Library.NextFlag() |
2862 | ), |
2863 | Binding = nil, |
2864 | } |
2865 | local Key |
2866 | local State = false |
2867 | -- |
2868 | local NewKey = Instance.new('Frame', Keybind.Section.Elements.SectionContent) |
2869 | local Outline = Instance.new('TextButton', NewKey) |
2870 | local Inline = Instance.new('Frame', Outline) |
2871 | local Value = Instance.new('TextLabel', Inline) |
2872 | local Title = Instance.new('TextLabel', NewKey) |
2873 | local ModeOutline = Instance.new('Frame', NewKey) |
2874 | local ModeInline = Instance.new('Frame', ModeOutline) |
2875 | local UIListLayout = Instance.new('UIListLayout', ModeInline) |
2876 | local Hold = Instance.new('TextButton', ModeInline) |
2877 | local Toggle = Instance.new('TextButton', ModeInline) |
2878 | local Always = Instance.new('TextButton', ModeInline) |
2879 | local ListValue = Library.KeyList:NewKey(tostring(Keybind.State):gsub("Enum.KeyCode.", ""), Keybind.Name, Keybind.Mode) |
2880 | -- |
2881 | NewKey.Name = "NewKey" |
2882 | NewKey.Size = UDim2.new(1,0,0,12) |
2883 | NewKey.BackgroundColor3 = Color3.new(1,1,1) |
2884 | NewKey.BackgroundTransparency = 1 |
2885 | NewKey.BorderSizePixel = 0 |
2886 | NewKey.BorderColor3 = Color3.new(0,0,0) |
2887 | -- |
2888 | Outline.Name = "Outline" |
2889 | Outline.Position = UDim2.new(1,0,0.5,0) |
2890 | Outline.Size = UDim2.new(0,40,0,12) |
2891 | Outline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
2892 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
2893 | Outline.AnchorPoint = NewVector2(1,0.5) |
2894 | Outline.Text = "" |
2895 | Outline.AutoButtonColor = false |
2896 | -- |
2897 | Inline.Name = "Inline" |
2898 | Inline.Position = UDim2.new(0,1,0,1) |
2899 | Inline.Size = UDim2.new(1,-2,1,-2) |
2900 | Inline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
2901 | Inline.BorderSizePixel = 0 |
2902 | Inline.BorderColor3 = Color3.new(0,0,0) |
2903 | -- |
2904 | Value.Name = "Value" |
2905 | Value.Size = UDim2.new(1,0,1,0) |
2906 | Value.BackgroundColor3 = Color3.new(1,1,1) |
2907 | Value.BackgroundTransparency = 1 |
2908 | Value.BorderSizePixel = 0 |
2909 | Value.BorderColor3 = Color3.new(0,0,0) |
2910 | Value.Text = "MB2" |
2911 | Value.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2912 | Value.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2913 | Value.TextSize = Library.FontSize |
2914 | Value.TextStrokeTransparency = 0 |
2915 | -- |
2916 | Title.Name = "Title" |
2917 | Title.Position = UDim2.new(0,15,0,0) |
2918 | Title.Size = UDim2.new(1,0,0,10) |
2919 | Title.BackgroundColor3 = Color3.new(1,1,1) |
2920 | Title.BackgroundTransparency = 1 |
2921 | Title.BorderSizePixel = 0 |
2922 | Title.BorderColor3 = Color3.new(0,0,0) |
2923 | Title.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
2924 | Title.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2925 | Title.TextSize = Library.FontSize |
2926 | Title.TextXAlignment = Enum.TextXAlignment.Left |
2927 | Title.Text = Keybind.Name |
2928 | Title.TextStrokeTransparency = 0 |
2929 | -- |
2930 | ModeOutline.Name = "ModeOutline" |
2931 | ModeOutline.Position = UDim2.new(1,65,0.5,0) |
2932 | ModeOutline.Size = UDim2.new(0,60,0,12) |
2933 | ModeOutline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
2934 | ModeOutline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
2935 | ModeOutline.AnchorPoint = NewVector2(1,0.5) |
2936 | ModeOutline.AutomaticSize = Enum.AutomaticSize.Y |
2937 | ModeOutline.Visible = false |
2938 | -- |
2939 | ModeInline.Name = "ModeInline" |
2940 | ModeInline.Position = UDim2.new(0,1,0,1) |
2941 | ModeInline.Size = UDim2.new(1,-2,1,-2) |
2942 | ModeInline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
2943 | ModeInline.BorderSizePixel = 0 |
2944 | ModeInline.BorderColor3 = Color3.new(0,0,0) |
2945 | -- |
2946 | UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder |
2947 | -- |
2948 | Hold.Name = "Hold" |
2949 | Hold.Size = UDim2.new(1,0,0,15) |
2950 | Hold.BackgroundColor3 = Color3.new(1,1,1) |
2951 | Hold.BackgroundTransparency = 1 |
2952 | Hold.BorderSizePixel = 0 |
2953 | Hold.BorderColor3 = Color3.new(0,0,0) |
2954 | Hold.Text = "Hold" |
2955 | Hold.TextColor3 = Keybind.Mode == "Hold" and Color3.new(1,1,1) or Color3.new(0.5686,0.5686,0.5686) |
2956 | Hold.AutoButtonColor = false |
2957 | Hold.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2958 | Hold.TextSize = Library.FontSize |
2959 | Hold.TextStrokeTransparency = 0 |
2960 | -- |
2961 | Toggle.Name = "Toggle" |
2962 | Toggle.Size = UDim2.new(1,0,0,15) |
2963 | Toggle.BackgroundColor3 = Color3.new(1,1,1) |
2964 | Toggle.BackgroundTransparency = 1 |
2965 | Toggle.BorderSizePixel = 0 |
2966 | Toggle.BorderColor3 = Color3.new(0,0,0) |
2967 | Toggle.Text = "Toggle" |
2968 | Toggle.TextColor3 = Keybind.Mode == "Toggle" and Color3.new(1,1,1) or Color3.new(0.5686,0.5686,0.5686) |
2969 | Toggle.AutoButtonColor = false |
2970 | Toggle.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2971 | Toggle.TextSize = Library.FontSize |
2972 | Toggle.TextStrokeTransparency = 0 |
2973 | -- |
2974 | Always.Name = "Always" |
2975 | Always.Size = UDim2.new(1,0,0,15) |
2976 | Always.BackgroundColor3 = Color3.new(1,1,1) |
2977 | Always.BackgroundTransparency = 1 |
2978 | Always.BorderSizePixel = 0 |
2979 | Always.BorderColor3 = Color3.new(0,0,0) |
2980 | Always.Text = "Always" |
2981 | Always.TextColor3 = Keybind.Mode == "Always" and Color3.new(1,1,1) or Color3.new(0.5686,0.5686,0.5686) |
2982 | Always.AutoButtonColor = false |
2983 | Always.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
2984 | Always.TextSize = Library.FontSize |
2985 | Always.TextStrokeTransparency = 0 |
2986 | |
2987 | -- // Functions |
2988 | local function set(newkey) |
2989 | if string.find(tostring(newkey), "Enum") then |
2990 | if c then |
2991 | c:Disconnect() |
2992 | if Keybind.Flag then |
2993 | Library.Flags[Keybind.Flag] = false |
2994 | end |
2995 | Keybind.Callback(false) |
2996 | end |
2997 | if tostring(newkey):find("Enum.KeyCode.") then |
2998 | newkey = Enum.KeyCode[tostring(newkey):gsub("Enum.KeyCode.", "")] |
2999 | elseif tostring(newkey):find("Enum.UserInputType.") then |
3000 | newkey = Enum.UserInputType[tostring(newkey):gsub("Enum.UserInputType.", "")] |
3001 | end |
3002 | if newkey == Enum.KeyCode.Backspace then |
3003 | Key = nil |
3004 | if Keybind.UseKey then |
3005 | if Keybind.Flag then |
3006 | Library.Flags[Keybind.Flag] = Key |
3007 | end |
3008 | Keybind.Callback(Key) |
3009 | end |
3010 | local text = "None" |
3011 | |
3012 | Value.Text = text |
3013 | ListValue:Update(text, Keybind.Name, Keybind.Mode) |
3014 | elseif newkey ~= nil then |
3015 | Key = newkey |
3016 | if Keybind.UseKey then |
3017 | if Keybind.Flag then |
3018 | Library.Flags[Keybind.Flag] = Key |
3019 | end |
3020 | Keybind.Callback(Key) |
3021 | end |
3022 | local text = (Library.Keys[newkey] or tostring(newkey):gsub("Enum.KeyCode.", "")) |
3023 | |
3024 | Value.Text = text |
3025 | ListValue:Update(text, Keybind.Name, Keybind.Mode) |
3026 | end |
3027 | |
3028 | Library.Flags[Keybind.Flag .. "_KEY"] = newkey |
3029 | elseif table.find({ "Always", "Toggle", "Hold" }, newkey) then |
3030 | if not Keybind.UseKey then |
3031 | Library.Flags[Keybind.Flag .. "_KEY STATE"] = newkey |
3032 | Keybind.Mode = newkey |
3033 | ListValue:Update((Library.Keys[Key] or tostring(Key):gsub("Enum.KeyCode.", "")), Toggle.Name, Keybind.Mode) |
3034 | if Keybind.Mode == "Always" then |
3035 | State = true |
3036 | if Keybind.Flag then |
3037 | Library.Flags[Keybind.Flag] = State |
3038 | end |
3039 | Keybind.Callback(true) |
3040 | ListValue:SetVisible(true) |
3041 | end |
3042 | end |
3043 | else |
3044 | State = newkey |
3045 | if Keybind.Flag then |
3046 | Library.Flags[Keybind.Flag] = newkey |
3047 | end |
3048 | Keybind.Callback(newkey) |
3049 | end |
3050 | end |
3051 | -- |
3052 | set(Keybind.State) |
3053 | set(Keybind.Mode) |
3054 | Outline.MouseButton1Click:Connect(function() |
3055 | if not Keybind.Binding then |
3056 | |
3057 | Value.Text = "..." |
3058 | |
3059 | Keybind.Binding = Library:Connection( |
3060 | game:GetService("UserInputService").InputBegan, |
3061 | function(input, gpe) |
3062 | set( |
3063 | input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode |
3064 | or input.UserInputType |
3065 | ) |
3066 | Library:Disconnect(Keybind.Binding) |
3067 | task.wait() |
3068 | Keybind.Binding = nil |
3069 | end |
3070 | ) |
3071 | end |
3072 | end) |
3073 | -- |
3074 | Library:Connection(game:GetService("UserInputService").InputBegan, function(inp, Chatting) |
3075 | if not Chatting then |
3076 | if (inp.KeyCode == Key or inp.UserInputType == Key) and not Keybind.Binding and not Keybind.UseKey then |
3077 | if Keybind.Mode == "Hold" then |
3078 | if Keybind.Flag then |
3079 | Library.Flags[Keybind.Flag] = true |
3080 | end |
3081 | c = Library:Connection(game:GetService("RunService").RenderStepped, function() |
3082 | if Keybind.Callback then |
3083 | Keybind.Callback(true) |
3084 | end |
3085 | end) |
3086 | ListValue:SetVisible(true) |
3087 | elseif Keybind.Mode == "Toggle" then |
3088 | State = not State |
3089 | if Keybind.Flag then |
3090 | Library.Flags[Keybind.Flag] = State |
3091 | end |
3092 | Keybind.Callback(State) |
3093 | ListValue:SetVisible(State) |
3094 | end |
3095 | end |
3096 | end |
3097 | end) |
3098 | -- |
3099 | Library:Connection(game:GetService("UserInputService").InputEnded, function(inp, Chatting) |
3100 | if not Chatting then |
3101 | if Keybind.Mode == "Hold" and not Keybind.UseKey then |
3102 | if Key ~= "" or Key ~= nil then |
3103 | if inp.KeyCode == Key or inp.UserInputType == Key then |
3104 | if c then |
3105 | c:Disconnect() |
3106 | if Keybind.Flag then |
3107 | Library.Flags[Keybind.Flag] = false |
3108 | end |
3109 | if Keybind.Callback then |
3110 | Keybind.Callback(false) |
3111 | end |
3112 | ListValue:SetVisible(false) |
3113 | end |
3114 | end |
3115 | end |
3116 | end |
3117 | end |
3118 | end) |
3119 | Library:Connection(Outline.MouseEnter, function() |
3120 | Outline.BorderColor3 = Library.Accent |
3121 | end) |
3122 | -- |
3123 | Library:Connection(Outline.MouseLeave, function() |
3124 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
3125 | end) |
3126 | -- |
3127 | Library:Connection(Outline.MouseButton2Down, function() |
3128 | ModeOutline.Visible = not ModeOutline.Visible |
3129 | end) |
3130 | -- |
3131 | Library:Connection(NewKey.MouseEnter, function() |
3132 | table.insert(Library.ThemeObjects, Title) |
3133 | Title.TextColor3 = Library.Accent |
3134 | end) |
3135 | -- |
3136 | Library:Connection(NewKey.MouseLeave, function() |
3137 | table.remove(Library.ThemeObjects, table.find(Library.ThemeObjects, Title)) |
3138 | Title.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
3139 | end) |
3140 | -- |
3141 | Library:Connection(Hold.MouseButton1Down, function() |
3142 | set("Hold") |
3143 | Hold.TextColor3 = Color3.new(1,1,1) |
3144 | Toggle.TextColor3 = Color3.fromRGB(145,145,145) |
3145 | Always.TextColor3 = Color3.fromRGB(145,145,145) |
3146 | end) |
3147 | -- |
3148 | Library:Connection(Toggle.MouseButton1Down, function() |
3149 | set("Toggle") |
3150 | Hold.TextColor3 = Color3.fromRGB(145,145,145) |
3151 | Toggle.TextColor3 = Color3.new(1,1,1) |
3152 | Always.TextColor3 = Color3.fromRGB(145,145,145) |
3153 | end) |
3154 | -- |
3155 | Library:Connection(Always.MouseButton1Down, function() |
3156 | set("Always") |
3157 | Hold.TextColor3 = Color3.fromRGB(145,145,145) |
3158 | Toggle.TextColor3 = Color3.fromRGB(145,145,145) |
3159 | Always.TextColor3 = Color3.new(1,1,1) |
3160 | end) |
3161 | -- |
3162 | Library:Connection(game:GetService("UserInputService").InputBegan, function(Input, Chatting) |
3163 | if ModeOutline.Visible and Input.UserInputType == Enum.UserInputType.MouseButton1 then |
3164 | if not Library:IsMouseOverFrame(ModeOutline) then |
3165 | ModeOutline.Visible = false |
3166 | end |
3167 | end |
3168 | end) |
3169 | -- |
3170 | Library.Flags[Keybind.Flag .. "_KEY"] = Keybind.State |
3171 | Library.Flags[Keybind.Flag .. "_KEY STATE"] = Keybind.Mode |
3172 | Flags[Keybind.Flag] = set |
3173 | Flags[Keybind.Flag .. "_KEY"] = set |
3174 | Flags[Keybind.Flag .. "_KEY STATE"] = set |
3175 | -- |
3176 | function Keybind:Set(key) |
3177 | set(key) |
3178 | end |
3179 | |
3180 | -- // Returning |
3181 | return Keybind |
3182 | end |
3183 | -- |
3184 | function Sections:Colorpicker(Properties) |
3185 | local Properties = Properties or {} |
3186 | local Colorpicker = { |
3187 | Window = self.Window, |
3188 | Page = self.Page, |
3189 | Section = self, |
3190 | Name = (Properties.Name or "Colorpicker"), |
3191 | State = ( |
3192 | Properties.state |
3193 | or Properties.State |
3194 | or Properties.def |
3195 | or Properties.Def |
3196 | or Properties.default |
3197 | or Properties.Default |
3198 | or Color3.fromRGB(255, 0, 0) |
3199 | ), |
3200 | Alpha = ( |
3201 | Properties.alpha |
3202 | or Properties.Alpha |
3203 | or Properties.transparency |
3204 | or Properties.Transparency |
3205 | or 1 |
3206 | ), |
3207 | Callback = ( |
3208 | Properties.callback |
3209 | or Properties.Callback |
3210 | or Properties.callBack |
3211 | or Properties.CallBack |
3212 | or function() end |
3213 | ), |
3214 | Flag = ( |
3215 | Properties.flag |
3216 | or Properties.Flag |
3217 | or Properties.pointer |
3218 | or Properties.Pointer |
3219 | or Library.NextFlag() |
3220 | ), |
3221 | Colorpickers = 0, |
3222 | } |
3223 | -- |
3224 | local NewToggle = Instance.new('Frame', Colorpicker.Section.Elements.SectionContent) |
3225 | local TextLabel = Instance.new('TextLabel', NewToggle) |
3226 | -- |
3227 | NewToggle.Name = "NewToggle" |
3228 | NewToggle.Size = UDim2.new(1,0,0,10) |
3229 | NewToggle.BackgroundColor3 = Color3.new(1,1,1) |
3230 | NewToggle.BackgroundTransparency = 1 |
3231 | NewToggle.BorderSizePixel = 0 |
3232 | NewToggle.BorderColor3 = Color3.new(0,0,0) |
3233 | -- |
3234 | TextLabel.Position = UDim2.new(0,15,0,0) |
3235 | TextLabel.Size = UDim2.new(0,100,1,0) |
3236 | TextLabel.BackgroundColor3 = Color3.new(1,1,1) |
3237 | TextLabel.BackgroundTransparency = 1 |
3238 | TextLabel.BorderSizePixel = 0 |
3239 | TextLabel.BorderColor3 = Color3.new(0,0,0) |
3240 | TextLabel.Text = Colorpicker.Name |
3241 | TextLabel.TextColor3 = Color3.fromRGB(145, 145, 145) |
3242 | TextLabel.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
3243 | TextLabel.TextSize = Library.FontSize |
3244 | TextLabel.TextXAlignment = Enum.TextXAlignment.Left |
3245 | TextLabel.TextStrokeTransparency = 0 |
3246 | |
3247 | Library:Connection(NewToggle.MouseEnter, function() |
3248 | table.insert(Library.ThemeObjects, TextLabel) |
3249 | TextLabel.TextColor3 = Library.Accent |
3250 | end) |
3251 | -- |
3252 | Library:Connection(NewToggle.MouseLeave, function() |
3253 | table.remove(Library.ThemeObjects, table.find(Library.ThemeObjects, TextLabel)) |
3254 | TextLabel.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
3255 | end) |
3256 | |
3257 | -- // Functions |
3258 | Colorpicker.Colorpickers = Colorpicker.Colorpickers + 1 |
3259 | local colorpickertypes = Library:NewPicker( |
3260 | Colorpicker.Name, |
3261 | Colorpicker.State, |
3262 | Colorpicker.Alpha, |
3263 | NewToggle, |
3264 | Colorpicker.Colorpickers - 1, |
3265 | Colorpicker.Flag, |
3266 | Colorpicker.Callback |
3267 | ) |
3268 | |
3269 | function Colorpicker:Set(color) |
3270 | colorpickertypes:set(color, false, true) |
3271 | end |
3272 | |
3273 | -- // Returning |
3274 | return Colorpicker |
3275 | end |
3276 | -- |
3277 | function Sections:Textbox(Properties) |
3278 | local Properties = Properties or {} |
3279 | local Textbox = { |
3280 | Window = self.Window, |
3281 | Page = self.Page, |
3282 | Section = self, |
3283 | Name = (Properties.Name or Properties.name or "textbox"), |
3284 | Placeholder = ( |
3285 | Properties.placeholder |
3286 | or Properties.Placeholder |
3287 | or Properties.holder |
3288 | or Properties.Holder |
3289 | or "" |
3290 | ), |
3291 | State = ( |
3292 | Properties.state |
3293 | or Properties.State |
3294 | or Properties.def |
3295 | or Properties.Def |
3296 | or Properties.default |
3297 | or Properties.Default |
3298 | or "" |
3299 | ), |
3300 | Callback = ( |
3301 | Properties.callback |
3302 | or Properties.Callback |
3303 | or Properties.callBack |
3304 | or Properties.CallBack |
3305 | or function() end |
3306 | ), |
3307 | Flag = ( |
3308 | Properties.flag |
3309 | or Properties.Flag |
3310 | or Properties.pointer |
3311 | or Properties.Pointer |
3312 | or Library.NextFlag() |
3313 | ), |
3314 | } |
3315 | -- |
3316 | local NewDrop = Instance.new('Frame', Textbox.Section.Elements.SectionContent) |
3317 | local Outline = Instance.new('TextButton', NewDrop) |
3318 | local Inline = Instance.new('Frame', Outline) |
3319 | local Value = Instance.new('TextBox', Inline) |
3320 | local Title = Instance.new('TextLabel', NewDrop) |
3321 | -- |
3322 | NewDrop.Name = "NewDrop" |
3323 | NewDrop.Size = UDim2.new(1,0,0,30) |
3324 | NewDrop.BackgroundColor3 = Color3.new(1,1,1) |
3325 | NewDrop.BackgroundTransparency = 1 |
3326 | NewDrop.BorderSizePixel = 0 |
3327 | NewDrop.BorderColor3 = Color3.new(0,0,0) |
3328 | -- |
3329 | Outline.Name = "Outline" |
3330 | Outline.Position = UDim2.new(0,15,1,0) |
3331 | Outline.Size = UDim2.new(1,-30,0,16) |
3332 | Outline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
3333 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
3334 | Outline.AnchorPoint = NewVector2(0,1) |
3335 | Outline.Text = "" |
3336 | Outline.AutoButtonColor = false |
3337 | -- |
3338 | Inline.Name = "Inline" |
3339 | Inline.Position = UDim2.new(0,1,0,1) |
3340 | Inline.Size = UDim2.new(1,-2,1,-2) |
3341 | Inline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
3342 | Inline.BorderSizePixel = 0 |
3343 | Inline.BorderColor3 = Color3.new(0,0,0) |
3344 | -- |
3345 | Value.Name = "Value" |
3346 | Value.Position = UDim2.new(0,2,0,0) |
3347 | Value.Size = UDim2.new(1,0,1,0) |
3348 | Value.BackgroundColor3 = Color3.new(1,1,1) |
3349 | Value.BackgroundTransparency = 1 |
3350 | Value.BorderSizePixel = 0 |
3351 | Value.BorderColor3 = Color3.new(0,0,0) |
3352 | Value.TextColor3 = Color3.fromRGB(145,145,145) |
3353 | Value.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
3354 | Value.TextSize = Library.FontSize |
3355 | Value.TextXAlignment = Enum.TextXAlignment.Left |
3356 | Value.TextStrokeTransparency = 0 |
3357 | Value.TextWrapped = true |
3358 | Value.Text = Textbox.State |
3359 | Value.ClearTextOnFocus = false |
3360 | -- |
3361 | Title.Name = "Title" |
3362 | Title.Position = UDim2.new(0,15,0,0) |
3363 | Title.Size = UDim2.new(1,0,0,10) |
3364 | Title.BackgroundColor3 = Color3.new(1,1,1) |
3365 | Title.BackgroundTransparency = 1 |
3366 | Title.BorderSizePixel = 0 |
3367 | Title.BorderColor3 = Color3.new(0,0,0) |
3368 | Title.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
3369 | Title.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
3370 | Title.TextSize = Library.FontSize |
3371 | Title.TextXAlignment = Enum.TextXAlignment.Left |
3372 | Title.TextStrokeTransparency = 0 |
3373 | Title.Text = Textbox.Name |
3374 | |
3375 | -- // Connections |
3376 | Library:Connection(NewDrop.MouseEnter, function() |
3377 | Outline.BorderColor3 = Library.Accent |
3378 | table.insert(Library.ThemeObjects, Title) |
3379 | Title.TextColor3 = Library.Accent |
3380 | end) |
3381 | -- |
3382 | Library:Connection(NewDrop.MouseLeave, function() |
3383 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
3384 | table.remove(Library.ThemeObjects, table.find(Library.ThemeObjects, Title)) |
3385 | Title.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
3386 | end) |
3387 | Value.FocusLost:Connect(function() |
3388 | Textbox.Callback(Value.Text) |
3389 | Library.Flags[Textbox.Flag] = Value.Text |
3390 | end) |
3391 | -- |
3392 | local function set(str) |
3393 | Value.Text = str |
3394 | Library.Flags[Textbox.Flag] = str |
3395 | Textbox.Callback(str) |
3396 | end |
3397 | |
3398 | -- // Return |
3399 | Flags[Textbox.Flag] = set |
3400 | return Textbox |
3401 | end |
3402 | -- |
3403 | function Sections:Button(Properties) |
3404 | local Properties = Properties or {} |
3405 | local Button = { |
3406 | Window = self.Window, |
3407 | Page = self.Page, |
3408 | Section = self, |
3409 | Name = Properties.Name or "button", |
3410 | Callback = ( |
3411 | Properties.callback |
3412 | or Properties.Callback |
3413 | or Properties.callBack |
3414 | or Properties.CallBack |
3415 | or function() end |
3416 | ), |
3417 | } |
3418 | -- |
3419 | local NewButton = Instance.new('TextButton', Button.Section.Elements.SectionContent) |
3420 | local Outline = Instance.new('Frame', NewButton) |
3421 | local Inline = Instance.new('Frame', Outline) |
3422 | local Value = Instance.new('TextLabel', Inline) |
3423 | -- |
3424 | NewButton.Name = "NewButton" |
3425 | NewButton.Size = UDim2.new(1,0,0,14) |
3426 | NewButton.BackgroundColor3 = Color3.new(1,1,1) |
3427 | NewButton.BackgroundTransparency = 1 |
3428 | NewButton.BorderSizePixel = 0 |
3429 | NewButton.BorderColor3 = Color3.new(0,0,0) |
3430 | NewButton.Text = "" |
3431 | NewButton.TextColor3 = Color3.new(0,0,0) |
3432 | NewButton.AutoButtonColor = false |
3433 | NewButton.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
3434 | NewButton.TextSize = 14 |
3435 | -- |
3436 | Outline.Name = "Outline" |
3437 | Outline.Position = UDim2.new(0,15,1,0) |
3438 | Outline.Size = UDim2.new(1,-30,0,14) |
3439 | Outline.BackgroundColor3 = Color3.new(0.1765,0.1765,0.1765) |
3440 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
3441 | Outline.AnchorPoint = NewVector2(0,1) |
3442 | -- |
3443 | Inline.Name = "Inline" |
3444 | Inline.Position = UDim2.new(0,1,0,1) |
3445 | Inline.Size = UDim2.new(1,-2,1,-2) |
3446 | Inline.BackgroundColor3 = Color3.new(0.1294,0.1294,0.1294) |
3447 | Inline.BorderSizePixel = 0 |
3448 | Inline.BorderColor3 = Color3.new(0,0,0) |
3449 | -- |
3450 | Value.Name = "Value" |
3451 | Value.Size = UDim2.new(1,0,1,0) |
3452 | Value.BackgroundColor3 = Color3.new(1,1,1) |
3453 | Value.BackgroundTransparency = 1 |
3454 | Value.BorderSizePixel = 0 |
3455 | Value.BorderColor3 = Color3.new(0,0,0) |
3456 | Value.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
3457 | Value.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
3458 | Value.TextSize = Library.FontSize |
3459 | Value.Text = Button.Name |
3460 | Value.TextStrokeTransparency = 0 |
3461 | |
3462 | Library:Connection(NewButton.MouseEnter, function() |
3463 | Outline.BorderColor3 = Library.Accent |
3464 | end) |
3465 | -- |
3466 | Library:Connection(NewButton.MouseLeave, function() |
3467 | Outline.BorderColor3 = Color3.new(0.0392,0.0392,0.0392) |
3468 | end) |
3469 | -- |
3470 | Library:Connection(NewButton.MouseButton1Down, function() |
3471 | Button.Callback() |
3472 | Value.TextColor3 = Library.Accent |
3473 | end) |
3474 | -- |
3475 | Library:Connection(NewButton.MouseButton1Up, function() |
3476 | Value.TextColor3 = Color3.new(0.5686,0.5686,0.5686) |
3477 | end) |
3478 | end |
3479 | -- |
3480 | function Sections:Label(Properties) -- fuck finobe |
3481 | local Properties = Properties or {} |
3482 | local Label = { |
3483 | Window = self.Window, |
3484 | Page = self.Page, |
3485 | Section = self, |
3486 | Name = Properties.Name or "label", |
3487 | Centered = Properties.Centered or false, |
3488 | } |
3489 | local NewButton = Instance.new('TextLabel', Label.Section.Elements.SectionContent) -- ya im lazy |
3490 | -- |
3491 | NewButton.Name = "NewButton" |
3492 | NewButton.Size = UDim2.new(1,0,0,12) |
3493 | NewButton.BackgroundColor3 = Color3.new(1,1,1) |
3494 | NewButton.BackgroundTransparency = 1 |
3495 | NewButton.BorderSizePixel = 0 |
3496 | NewButton.BorderColor3 = Color3.new(0,0,0) |
3497 | NewButton.Text = Label.Name |
3498 | NewButton.TextColor3 = Color3.fromRGB(255,255,255) |
3499 | NewButton.FontFace = Font.new(Font:GetRegistry("menu_plex")) |
3500 | NewButton.TextSize = Library.FontSize |
3501 | NewButton.TextXAlignment = Label.Centered and Enum.TextXAlignment.Center or Enum.TextXAlignment.Left |
3502 | NewButton.TextStrokeTransparency = 0 |
3503 | NewButton.TextStrokeColor3 = Color3.new(0,0,0) |
3504 | end |
3505 | end |
3506 | -- // Base Functions |
3507 | do |
3508 | -- // Utility Functions |
3509 | do |
3510 | function utility:ValidateClient(Player) |
3511 | return Player and Player.Character and Player.Character:FindFirstChild("Humanoid") and true or false |
3512 | end |
3513 | -- |
3514 | function utility:getPlayerInformation(Player) |
3515 | local Object = Player.Character |
3516 | local Humanoid = (Object and Object:FindFirstChildOfClass("Humanoid")) |
3517 | local RootPart = (Humanoid and Humanoid.RootPart) |
3518 | -- |
3519 | return Object, Humanoid, RootPart |
3520 | end |
3521 | -- |
3522 | function utility:safeUnit(unit) |
3523 | if unit.Magnitude > 1e-8 then |
3524 | return unit |
3525 | end |
3526 | -- |
3527 | return Vector3.zero |
3528 | end |
3529 | local devdevdevdev = print("devdevdevdev") |
3530 | function utility:CreateBeam(Origin, End, Color1, FaceCamera, Width, TextureSpeed, Brightness) |
3531 | local BeamPart = Instance.new("Part", Workspace) |
3532 | BeamPart.Name = "BeamPart" |
3533 | BeamPart.Transparency = 1 |
3534 | -- |
3535 | local Part = Instance.new("Part", BeamPart) |
3536 | Part.Size = NewVector3(1, 1, 1) |
3537 | Part.Transparency = 1 |
3538 | Part.CanCollide = false |
3539 | Part.CFrame = typeof(Origin) == "CFrame" and Origin or NewCFrame(Origin) |
3540 | Part.Anchored = true |
3541 | local Attachment = Instance.new("Attachment", Part) |
3542 | local Part2 = Instance.new("Part", BeamPart) |
3543 | Part2.Size = NewVector3(1, 1, 1) |
3544 | Part2.Transparency = 1 |
3545 | Part2.CanCollide = false |
3546 | Part2.CFrame = typeof(End) == "CFrame" and End or NewCFrame(End) |
3547 | Part2.Anchored = true |
3548 | Part2.Color = Color3.fromRGB(255, 255, 255) |
3549 | local Attachment2 = Instance.new("Attachment", Part2) |
3550 | local Beam = Instance.new("Beam", Part) |
3551 | Beam.FaceCamera = FaceCamera |
3552 | Beam.Color = ColorSequence.new{ |
3553 | ColorSequenceKeypoint.new(0.00, Color1), |
3554 | ColorSequenceKeypoint.new(1, Color1), |
3555 | } |
3556 | Beam.Attachment0 = Attachment |
3557 | Beam.Attachment1 = Attachment2 |
3558 | Beam.Transparency = NumberSequence.new{ |
3559 | NumberSequenceKeypoint.new(0, 0), |
3560 | NumberSequenceKeypoint.new(1, 0), |
3561 | } |
3562 | Beam.LightEmission = Brightness |
3563 | Beam.LightInfluence = 1 |
3564 | Beam.Width0 = Width |
3565 | Beam.Width1 = Width |
3566 | Beam.Texture = "rbxassetid://7151778302" |
3567 | Beam.LightEmission = 1 |
3568 | Beam.LightInfluence = 1 |
3569 | Beam.TextureMode = Enum.TextureMode.Wrap |
3570 | Beam.TextureLength = 3 |
3571 | Beam.TextureSpeed = TextureSpeed |
3572 | delay(flags["Tracers Life Time"], function() |
3573 | task.spawn(function() |
3574 | for i = 0, 100 do |
3575 | task.wait(0.01) |
3576 | Beam.Transparency = NumberSequence.new{ |
3577 | NumberSequenceKeypoint.new(0, i/100), |
3578 | NumberSequenceKeypoint.new(1, i/100), |
3579 | } |
3580 | end |
3581 | -- |
3582 | Part:Destroy() |
3583 | Part2:Destroy() |
3584 | BeamPart:Destroy() |
3585 | end) |
3586 | end) |
3587 | end |
3588 | -- |
3589 | function utility:generateAngles(numLines) |
3590 | local angles = {} |
3591 | local angleIncrement = 2 * math.pi / numLines |
3592 | |
3593 | for i = 1, numLines do |
3594 | local angle = (i - 1) * angleIncrement |
3595 | table.insert(angles, angle) |
3596 | end |
3597 | |
3598 | return angles |
3599 | end |
3600 | -- |
3601 | function utility:Shift(Number) |
3602 | return math.acos(math.cos(Number * math.pi)) / math.pi |
3603 | end |
3604 | -- |
3605 | function utility:checkMessage(tbl) |
3606 | local msg = tbl[math.random(1, #tbl)] |
3607 | |
3608 | if msg == oldMsg then |
3609 | return utility:checkMessage(tbl) |
3610 | else |
3611 | oldMsg = msg |
3612 | return msg |
3613 | end |
3614 | end |
3615 | -- |
3616 | function utility:calculateAimViewerEndPoint() |
3617 | if utility.target and utility.target.Character and flags["Aim Viewer Bypass"] then |
3618 | local part = (flags["Jump Prediction"] and utility.target.Character.Humanoid.FloorMaterial == Enum.Material.Air and "RightFoot") or (flags["Nearest Part"] and partClosest) or flags["Single Hit Part"] |
3619 | local yOffset = utility.target.Character.Humanoid.FloorMaterial == Enum.Material.Air and flags["Manual Offset Value"] or 0 |
3620 | -- |
3621 | if (checks == true) then |
3622 | if flags["Resolver"] then |
3623 | local endpoint = utility.target.Character[tostring(part)].Position + offset + NewVector3(0, yOffset, 0) |
3624 | Remote:FireServer("UpdateMousePos", endpoint) |
3625 | else |
3626 | local endpoint = utility.target.Character[tostring(part)].Position + (utility.target.Character.HumanoidRootPart.Velocity * prediction) + NewVector3(0, yOffset, 0) |
3627 | Remote:FireServer("UpdateMousePos", endpoint) |
3628 | end |
3629 | end |
3630 | end |
3631 | end |
3632 | -- |
3633 | function utility:getHeld() |
3634 | if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildWhichIsA("Tool") and LocalPlayer.Character then |
3635 | return LocalPlayer.Character:FindFirstChildWhichIsA("Tool") or nil; |
3636 | end |
3637 | end |
3638 | -- |
3639 | function utility:TranslateString(inputString, targetLanguage) |
3640 | local translatedString = "" |
3641 | for i = 1, #inputString do |
3642 | local char = inputString:sub(i, i) |
3643 | local translation = Languages[char] and Languages[char][targetLanguage] |
3644 | translatedString = translatedString .. (translation or char) |
3645 | end |
3646 | return translatedString |
3647 | end |
3648 | -- |
3649 | function utility:GetComponents(Player) |
3650 | if utility:ValidateClient(Player) then |
3651 | return Player.Character, Player.Character:FindFirstChild("HumanoidRootPart"), Player.Character:FindFirstChild("Humanoid") |
3652 | end |
3653 | end |
3654 | -- |
3655 | function utility:getClosestPlayerToCursor(Radius) |
3656 | local shortestDistance = Radius or math.huge |
3657 | |
3658 | local closestPlayer |
3659 | for i, v in pairs(Players:GetPlayers()) do |
3660 | if v ~= LocalPlayer and utility:ValidateClient(v) and v.Character:FindFirstChild("HumanoidRootPart") then |
3661 | local pos, OnScreen = Camera:WorldToViewportPoint(v.Character.HumanoidRootPart.Position) |
3662 | local magnitude = (NewVector2(pos.X, pos.Y) - NewVector2(Mouse.X, Mouse.Y)).magnitude |
3663 | if magnitude < shortestDistance and OnScreen then |
3664 | closestPlayer = v |
3665 | shortestDistance = magnitude |
3666 | end |
3667 | end |
3668 | end |
3669 | return closestPlayer |
3670 | end |
3671 | -- |
3672 | function utility:RecalculateVelocity(Player) |
3673 | if utility:ValidateClient(Player) then |
3674 | local Character, RootPart, Humanoid = utility:GetComponents(Player) |
3675 | |
3676 | local currentPosition = RootPart.Position |
3677 | local currentTime = tick() |
3678 | |
3679 | task.wait() |
3680 | |
3681 | local newPosition = RootPart.Position |
3682 | local newTime = tick() |
3683 | |
3684 | local distanceTraveled = (newPosition - currentPosition) |
3685 | |
3686 | local timeInterval = newTime - currentTime |
3687 | local velocity = distanceTraveled / timeInterval |
3688 | currentPosition = newPosition |
3689 | currentTime = newTime |
3690 | return velocity |
3691 | end |
3692 | end |
3693 | -- |
3694 | function utility:drawObject(type, prop) |
3695 | local obj = Drawing.new(type) |
3696 | -- |
3697 | if prop then |
3698 | for i,v in next, prop do |
3699 | obj[i] = v; |
3700 | end |
3701 | end |
3702 | return obj |
3703 | end |
3704 | -- |
3705 | function utility:characterClone(Player, Color, Material, Transparency, Parent) |
3706 | for i,v in pairs(Player.Character:GetChildren()) do |
3707 | if table.find(utility.bodyParts, v.Name) and v:IsA("MeshPart") and v.Name ~= "HumanoidRootPart" then |
3708 | if v.Name == "UpperTorso" or v.Name == "LowerTorso" then |
3709 | local ClonedPart = Instance.new("Part") |
3710 | ClonedPart.Anchored = true |
3711 | ClonedPart.CanCollide = false |
3712 | ClonedPart.Position = v.Position |
3713 | ClonedPart.Parent = Parent |
3714 | ClonedPart.Material = Enum.Material[Material] |
3715 | ClonedPart.Transparency = Transparency |
3716 | ClonedPart.Color = Color |
3717 | ClonedPart.Size = v.Size + Vector3.new(0.01,0.01,0.01) |
3718 | ClonedPart.Name = v.Name |
3719 | ClonedPart.Rotation = v.Rotation |
3720 | ClonedPart.Shape = "Block" |
3721 | else |
3722 | local ClonedPart = Instance.new("MeshPart") |
3723 | ClonedPart.Anchored = true |
3724 | ClonedPart.CanCollide = false |
3725 | ClonedPart.Position = v.Position |
3726 | ClonedPart.Parent = Parent |
3727 | ClonedPart.Material = Enum.Material[Material] |
3728 | ClonedPart.Transparency = Transparency |
3729 | ClonedPart.Color = Color |
3730 | ClonedPart.Size = v.Size + Vector3.new(0.01,0.01,0.01) |
3731 | ClonedPart.Name = v.Name |
3732 | ClonedPart.Rotation = v.Rotation |
3733 | ClonedPart.MeshId = v.MeshId |
3734 | end |
3735 | end |
3736 | end |
3737 | end |
3738 | -- |
3739 | function utility:Remove(Player) |
3740 | if connections[Player] then |
3741 | connections[Player]:Disconnect(); |
3742 | end |
3743 | -- |
3744 | if highlights[Player] then |
3745 | highlights[Player].Parent = nil; |
3746 | end |
3747 | end |
3748 | -- |
3749 | function utility:AngleToEdge(angle, inset) -- credits to whoever made this Im just porting over my old arrows 😭 |
3750 | local pos |
3751 | local ox = Cos(angle) |
3752 | local oy = Sin(angle) |
3753 | local slope = oy / ox |
3754 | -- |
3755 | local h_edge = viewportSize.x - inset |
3756 | local v_edge = viewportSize.y - inset |
3757 | if oy < 0 then |
3758 | v_edge = inset |
3759 | end |
3760 | if ox < 0 then |
3761 | h_edge = inset |
3762 | end |
3763 | local y = (slope * h_edge) + (viewportSize.y / 2) - slope * (viewportSize.x / 2) |
3764 | if y > 0 and y < viewportSize.y - inset then |
3765 | pos = NewVector2(h_edge, y) |
3766 | else |
3767 | pos = NewVector2( |
3768 | (v_edge - viewportSize.y / 2 + slope * (viewportSize.x / 2)) / slope, |
3769 | v_edge |
3770 | ) |
3771 | end |
3772 | return pos |
3773 | end |
3774 | -- |
3775 | function utility:Map(N, OldMin, OldMax, Min, Max) -- I love my 1 line funcs I use once ♥😻 |
3776 | return (N - OldMin) / (OldMax - OldMin) * (Max - Min) + Min |
3777 | end |
3778 | -- |
3779 | function utility:getRotate(Vec, Rads) -- I didnt make this math credits to whoever can code cool maths! |
3780 | local vec = Vec.Unit |
3781 | local sin = math.sin(Rads) |
3782 | local cos = math.cos(Rads) |
3783 | local x = (cos * vec.x) - (sin * vec.y) |
3784 | local y = (sin * vec.x) + (cos * vec.y) |
3785 | -- |
3786 | return NewVector2(x, y).Unit * Vec.Magnitude |
3787 | end |
3788 | -- |
3789 | function utility:BoxCalculation(TorsoSize) |
3790 | local UpCalculation = NewCFrame(TorsoSize) |
3791 | local VTop = TorsoSize + (UpCalculation.UpVector * 1.8) + Camera.CFrame.UpVector; |
3792 | local VBottom = TorsoSize - (UpCalculation.UpVector * 2.5) - Camera.CFrame.UpVector; |
3793 | |
3794 | local Top, TopIsRendered = Camera:WorldToViewportPoint(VTop); |
3795 | local Bottom, BottomIsRendered = Camera:WorldToViewportPoint(VBottom); |
3796 | |
3797 | local Width = math.max(math.floor(math.abs(Top.x - Bottom.x)), 3); |
3798 | local Height = math.max(math.floor(math.max(math.abs(Bottom.y - Top.y), Width / 2)), 3); |
3799 | local BoxSize = NewVector2(math.floor(math.max(Height / 1.5, Width)), Height); |
3800 | local BoxPosition = NewVector2(math.floor(Top.x * 0.5 + Bottom.x * 0.5 - BoxSize.x * 0.5), math.floor(math.min(Top.y, Bottom.y))); |
3801 | |
3802 | return BoxSize, BoxPosition; |
3803 | end |
3804 | -- |
3805 | local LastRayIgnoreUpdate, RayIgnoreList = 0, {} |
3806 | -- |
3807 | function utility:checkRay(Instance, Distance, Position, Unit) |
3808 | local Pass = true; |
3809 | local Model = Instance.Character; |
3810 | |
3811 | if Distance > 999 then return false; end |
3812 | |
3813 | if not Model then return false end |
3814 | |
3815 | local _Ray = Ray.new(Position, Unit * Distance) |
3816 | if tick() - LastRayIgnoreUpdate > 3 then |
3817 | LastRayIgnoreUpdate = tick() |
3818 | |
3819 | table.clear(RayIgnoreList) |
3820 | |
3821 | table.insert(RayIgnoreList, LocalPlayer.Character) |
3822 | if utility:getHeld() then |
3823 | table.insert(RayIgnoreList, utility:getHeld().Handle) |
3824 | end |
3825 | table.insert(RayIgnoreList, Camera) |
3826 | |
3827 | if Mouse.TargetFilter then table.insert(RayIgnoreList, Mouse.TargetFilter) end |
3828 | |
3829 | if #IgnoreList > 64 then |
3830 | while #IgnoreList > 64 do |
3831 | table.remove(IgnoreList, 1) |
3832 | end |
3833 | end |
3834 | |
3835 | for i, v in pairs(IgnoreList) do table.insert(RayIgnoreList, v) end |
3836 | end |
3837 | |
3838 | local Hit = workspace:FindPartOnRayWithIgnoreList(_Ray, RayIgnoreList) |
3839 | |
3840 | if Hit and not Hit:IsDescendantOf(Model) then |
3841 | Pass = false; |
3842 | if Hit.Transparency >= .3 or not Hit.CanCollide and Hit.ClassName ~= Terrain then |
3843 | table.insert(IgnoreList, Hit) |
3844 | end |
3845 | end |
3846 | |
3847 | return Pass; |
3848 | end |
3849 | -- |
3850 | function utility:GetOrigin() |
3851 | local Tool = utility:getHeld() |
3852 | -- |
3853 | return (Tool ~= "None" and Tool.Handle.Position) or Camera.CFrame.Position |
3854 | end |
3855 | -- |
3856 | function utility:Lerp(Value, MinColor, MaxColor) |
3857 | if Value <= 0 then return MaxColor end |
3858 | if Value >= 100 then return MinColor end |
3859 | -- |
3860 | return Color3.new( |
3861 | MaxColor.R + (MinColor.R - MaxColor.R) * Value, |
3862 | MaxColor.G + (MinColor.G - MaxColor.G) * Value, |
3863 | MaxColor.B + (MinColor.B - MaxColor.B) * Value |
3864 | ) |
3865 | end |
3866 | end |
3867 | |
3868 | -- // Framework Functions |
3869 | do |
3870 | function framework:selectTarget() |
3871 | local deathLoop; |
3872 | local deathLoopRestore; |
3873 | local espTarget = false; |
3874 | -- |
3875 | if flags["Target Auto Select"] then return end |
3876 | if flags["Silent Enabled"] then |
3877 | if flags["Silent_Bind"] then |
3878 | utility.target = utility:getClosestPlayerToCursor(math.huge); |
3879 | -- |
3880 | if (flags["Target Esp"] and flags["PlayerESP_Enabled"] == false) then |
3881 | Visuals:Create({Player = utility.target}) |
3882 | espTarget = true |
3883 | end |
3884 | -- |
3885 | if flags["Notify"] then |
3886 | Library:Notification("Locked onto: " .. utility.target.Name .. "", 3, Library.Accent, flags["Notification Position"]) |
3887 | end |
3888 | -- |
3889 | if (flags["Back Track Enabled"] and flags["Back Track Method"] == "Follow") then |
3890 | utility:characterClone(utility.target, flags["Back Track Settings"].Color, flags["Back Track Material"], flags["Back Track Settings"].Transparency, utility.folders["Part Chams"]) |
3891 | end |
3892 | -- |
3893 | if flags["Spectate"] then |
3894 | Camera.CameraSubject = utility.target.Character.Humanoid |
3895 | end |
3896 | else |
3897 | -- What the fuck why does this break? I dont know dont ask me >:( |
3898 | LocalPlayer.Character.Humanoid.AutoRotate = true; |
3899 | Camera.CameraSubject = LocalPlayer.Character.Humanoid; |
3900 | utility.folders["Part Chams"]:ClearAllChildren(); |
3901 | -- |
3902 | if (Visuals.Bases[utility.target] and flags["PlayerESP_Enabled"] == false) then |
3903 | Visuals.Bases[utility.target]:Remove() |
3904 | end |
3905 | -- |
3906 | if utility.target then |
3907 | utility:Remove(utility.target); |
3908 | end |
3909 | -- |
3910 | utility.drawings["Tracer"].Visible = false; |
3911 | utility.target = nil; |
3912 | end |
3913 | end |
3914 | end |
3915 | -- |
3916 | function framework:aimAssist() |
3917 | local Enabled = flags["Aim Assist"] and flags["Aim Assist Bind"] |
3918 | if not Enabled then return end |
3919 | -- |
3920 | local endPosition; |
3921 | local fovCheck; |
3922 | local Resolver, Prediction = flags["Resolver"], flags["Aim Assist Manual Prediction Value"] or 0.1413 |
3923 | local Target = utility.target or aimAssistTarget |
3924 | local Part = (flags["Aim Assist Jump Prediction"] and Target.Character.Humanoid.FloorMaterial == Enum.Material.Air and "RightFoot") or flags["Aim Assist Single Hit Part"] |
3925 | local characterOffset = Resolver and framework:calculateResolverOffset(Target) * Prediction or Target.Character.HumanoidRootPart.Velocity * Prediction |
3926 | local yOffset = Target.Character.Humanoid.FloorMaterial == Enum.Material.Air and flags["Aim Assist Manual Offset Value"] or 0 |
3927 | local Checks = framework:getChecks(Target, table.find(flags["Aim Assist Checks"], "Friend Check"), table.find(flags["Aim Assist Checks"], "Wall Check"), table.find(flags["Aim Assist Checks"], "Knocked Check"), table.find(flags["Aim Assist Checks"], "Grabbed Check")); |
3928 | -- |
3929 | local characterPosition = Target.Character[Part].Position + characterOffset + NewVector3(0, yOffset, 0) |
3930 | -- |
3931 | local Position = Camera:WorldToViewportPoint(Target.Character.PrimaryPart.Position) |
3932 | local Magnitude = (NewVector2(Position.X, Position.Y) - NewVector2(Mouse.X, Mouse.Y)).magnitude |
3933 | -- |
3934 | if utility.drawings["Aim Assist FOV"].Visible then |
3935 | fovCheck = Magnitude < utility.drawings["Aim Assist FOV"].Radius |
3936 | else |
3937 | fovCheck = true |
3938 | end |
3939 | -- |
3940 | if Checks and fovCheck then |
3941 | fovCheck = Magnitude |
3942 | -- |
3943 | if flags["Aim Assist Method"] == "Use Mouse" then |
3944 | endPosition, OnScreen = Camera:WorldToScreenPoint(characterPosition) |
3945 | -- |
3946 | if OnScreen then |
3947 | mousemoverel(NewVector2(endPosition.X - Mouse.X, endPosition.Y - Mouse.Y).X / (flags["Horizontal Smoothness"] + 1), NewVector2(endPosition.X - Mouse.X, endPosition.Y - Mouse.Y).Y / (flags["Vertical Smoothness"] + 1)) |
3948 | end |
3949 | else |
3950 | Camera.CFrame = Camera.CFrame:Lerp(NewCFrame(Camera.CFrame.p, characterPosition), (100 - flags["Smoothness"]) / 100) |
3951 | end |
3952 | end |
3953 | end |
3954 | -- |
3955 | function framework:desyncInit() -- thanks wendigo for this or whoever made it |
3956 | local Root = LocalPlayer.Character.HumanoidRootPart |
3957 | local rootVel = Root.Velocity; |
3958 | local rootAng = Random(-180, 180) |
3959 | local rootOffset do |
3960 | local X = Random(-128^2, 128^2); |
3961 | local Y = Random(0, 128^2); |
3962 | local Z = Random(-128^2, 128^2); |
3963 | |
3964 | rootOffset = NewVector3(X, -Y, Z); |
3965 | end; |
3966 | |
3967 | LocalPlayer.Character.HumanoidRootPart.CFrame *= Angle(0, Rad(rootAng), 0); |
3968 | LocalPlayer.Character.HumanoidRootPart.Velocity = rootOffset; |
3969 | |
3970 | RunService.RenderStepped:Wait(); |
3971 | |
3972 | LocalPlayer.Character.HumanoidRootPart.CFrame *= Angle(0, Rad(-rootAng), 0); |
3973 | LocalPlayer.Character.HumanoidRootPart.Velocity = rootVel; |
3974 | end |
3975 | -- |
3976 | function framework:autoReload() |
3977 | local Tool = utility:getHeld() |
3978 | if flags["Auto Reload"] then |
3979 | if Tool.Ammo.Value == 0 then |
3980 | Remote:FireServer("Reload", Tool) |
3981 | end |
3982 | end |
3983 | end |
3984 | -- |
3985 | function framework:worldVisuals() |
3986 | if flags["Master Switch"] then |
3987 | if flags["Clock Time Enabled"] and Lighting.ClockTime ~= flags["Clock Time"] then |
3988 | Lighting.ClockTime = flags["Clock Time"] |
3989 | end |
3990 | -- |
3991 | if flags["Color Shift Bottom"] and Lighting.ColorShift_Bottom ~= flags["Color Shift Bottom Color"] then |
3992 | Lighting.ColorShift_Bottom = flags["Color Shift Bottom Color"].Color |
3993 | end |
3994 | |
3995 | if flags["Ambient"] and Lighting.Ambient ~= flags["Ambience Color"] then |
3996 | Lighting.Ambient = flags["Ambience Color"].Color |
3997 | end |
3998 | -- |
3999 | if flags["Outdoor Ambience"] and Lighting.OutdoorAmbient ~= flags["Outdoor Ambience color"] then |
4000 | Lighting.OutdoorAmbient = flags["Outdoor Ambience color"].Color |
4001 | end |
4002 | -- |
4003 | if flags["Brightness Enabled"] and Lighting.Brightness ~= flags["Brightness"] then |
4004 | Lighting.Brightness = flags["Brightness"] |
4005 | end |
4006 | -- |
4007 | if flags["Color Shift Top"] and Lighting.ColorShift_Top ~= flags["Color Shift Top Color"] then |
4008 | Lighting.ColorShift_Top = flags["Color Shift Top Color"].Color |
4009 | end |
4010 | -- |
4011 | if flags["Fog"] and Lighting.FogColor ~= flags["Fog Color"] then |
4012 | Lighting.FogColor = flags["Fog Color"].Color |
4013 | end |
4014 | end |
4015 | end |
4016 | -- |
4017 | function framework:cframeSpeed() |
4018 | if flags["Speed Enabled"] and flags["Speed Key"] then |
4019 | local Character = LocalPlayer.Character |
4020 | local Move_Direction = Character.Humanoid.MoveDirection |
4021 | -- |
4022 | Character.HumanoidRootPart.CFrame = Character.HumanoidRootPart.CFrame + (Move_Direction * (flags["Speed"] / 25)) |
4023 | end |
4024 | end |
4025 | -- |
4026 | function framework:chatSpam(Type, Repeat, Emojis, Symbols) |
4027 | local message = "" |
4028 | -- tp, rp, emojis, symbols |
4029 | for i = 1, Repeat and math.random(2, 5) or 1 do |
4030 | for i = 1, math.random(1, 5) do |
4031 | local index = math.random(0, 1) == 0 and "symbols" or "emojis" |
4032 | |
4033 | if index == "symbols" and Symbols then |
4034 | message ..= tostring(utx[index][math.random(1, #utx[index])]) |
4035 | elseif index == "emojis" and Emojis then |
4036 | message ..= tostring(utx[index][math.random(1, #utx[index])]) |
4037 | end |
4038 | end |
4039 | |
4040 | message ..= utility:checkMessage(Messages[Type]) |
4041 | |
4042 | for i = 1, math.random(1, 5) do |
4043 | local index = math.random(0, 1) == 0 and "symbols" or "emojis" |
4044 | |
4045 | if index == "symbols" and Symbols then |
4046 | message ..= tostring(utx[index][math.random(1, #utx[index])]) |
4047 | elseif index == "emojis" and Emojis then |
4048 | message ..= tostring(utx[index][math.random(1, #utx[index])]) |
4049 | end |
4050 | end |
4051 | |
4052 | message ..= " " |
4053 | end |
4054 | |
4055 | return message |
4056 | end |
4057 | -- |
4058 | function framework:fly(delta) |
4059 | if flags["Fly Enabled"] and flags["Fly Key"] then |
4060 | LocalPlayer.Character.HumanoidRootPart.Velocity = Vector3.zero; |
4061 | local x = 0 |
4062 | local y = 0 |
4063 | local z = 0 |
4064 | -- |
4065 | if not Typing then |
4066 | if InputService:IsKeyDown(Enum.KeyCode.W) then |
4067 | z -= 1 |
4068 | end |
4069 | -- |
4070 | if InputService:IsKeyDown(Enum.KeyCode.S) then |
4071 | z += 1 |
4072 | end |
4073 | -- |
4074 | if InputService:IsKeyDown(Enum.KeyCode.D) then |
4075 | x += 1 |
4076 | end |
4077 | -- |
4078 | if InputService:IsKeyDown(Enum.KeyCode.A) then |
4079 | x -= 1 |
4080 | end |
4081 | -- |
4082 | if InputService:IsKeyDown(Enum.KeyCode.Space) then |
4083 | y += 1 |
4084 | end |
4085 | -- |
4086 | if InputService:IsKeyDown(Enum.KeyCode.LeftShift) then |
4087 | y -= 1 |
4088 | end |
4089 | end |
4090 | -- |
4091 | local direction = utility:safeUnit(Camera.CFrame:VectorToWorldSpace(NewVector3(x, 0, z)).Unit) |
4092 | LocalPlayer.Character.HumanoidRootPart.CFrame += (direction + NewVector3(0, y, 0)) * (flags["Fly Speed"] / 10) * (delta * 60) |
4093 | end |
4094 | end |
4095 | -- |
4096 | function framework:selectPrediction() |
4097 | local Prediction; |
4098 | |
4099 | local Predictions = { |
4100 | 0.113, |
4101 | 0.115, |
4102 | 0.117, |
4103 | 0.11923283912031938191231281632312637123821763333312731833, |
4104 | 0.121316378910319876472890149871624, |
4105 | 0.124521314351673817351423414, |
4106 | 0.131314253678192031927365421456789331, |
4107 | 0.1355991245213413214231231123121, |
4108 | 0.138312341526738912, |
4109 | 0.146432786576847627781237813281381382038198391293, |
4110 | 0.1512783311111111111111111111111111111111111, |
4111 | 0.15132132132132132555555555555555, |
4112 | } |
4113 | |
4114 | if flags["Auto Prediction"] then |
4115 | for i = 1, #Predictions do |
4116 | if game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValue() <= i * 10 then |
4117 | Prediction = Predictions[i] |
4118 | end |
4119 | end |
4120 | end |
4121 | |
4122 | return Prediction or tonumber(flags["Manual Prediction Value"]) or 0.1413 |
4123 | end |
4124 | -- |
4125 | function framework:calculateResolverOffset(player) |
4126 | local Offset; |
4127 | local Prediction = framework:selectPrediction() |
4128 | -- |
4129 | if flags["Resolver"] then |
4130 | if flags["Resolver Method"] == "Recalculate Velocity" then |
4131 | Offset = utility:RecalculateVelocity(player) * Prediction |
4132 | elseif flags["Resolver Method"] == "Suppress Velocity" then |
4133 | Offset = Vector3.new(player.Character.HumanoidRootPart.Velocity.X, 0, player.Character.HumanoidRootPart.Velocity.Z) * Prediction |
4134 | elseif flags["Resolver Method"] == "Move Direction" then |
4135 | Offset = player.Character.Humanoid.MoveDirection * 19.64285714289 * Prediction |
4136 | end |
4137 | end |
4138 | -- |
4139 | return Offset |
4140 | end |
4141 | -- |
4142 | function framework:calculateNearestPart(Player, List) |
4143 | local shortestDistance = math.huge |
4144 | local closestPart |
4145 | if Player and Player.Character and Player.Character:FindFirstChild("Humanoid") and Player.Character:FindFirstChild("Head") and Player.Character.Humanoid.Health ~= 0 and Player.Character:FindFirstChild("HumanoidRootPart") then |
4146 | for i, v in pairs(Player.Character:GetChildren()) do |
4147 | if v:IsA("BasePart") then |
4148 | local pos = Camera:WorldToViewportPoint(v.Position) |
4149 | local magnitude = (NewVector2(pos.X, pos.Y) - NewVector2(Mouse.X, Mouse.Y+36)).magnitude |
4150 | if magnitude < shortestDistance and table.find(List, v.Name) then |
4151 | closestPart = v |
4152 | shortestDistance = magnitude |
4153 | end |
4154 | end |
4155 | end |
4156 | return closestPart |
4157 | end |
4158 | end |
4159 | -- |
4160 | local autoSelectTick = 0; |
4161 | function framework:autoSelect() |
4162 | if autoSelectTick - tick() < flags["Auto Select Delay"]/1000 then |
4163 | autoSelectTick = tick() |
4164 | local closestPlayer |
4165 | local shortestDistance = math.huge -- Start with a very large distance |
4166 | for _, player in next, Players:GetPlayers() do |
4167 | if player.Character and player.Character:FindFirstChild("HumanoidRootPart") and player ~= game.Players.LocalPlayer and framework:getChecks(player, table.find(flags["Silent Checks"], "Friend Check"), table.find(flags["Silent Checks"], "Wall Check"), table.find(flags["Silent Checks"], "Knocked Check"), table.find(flags["Silent Checks"], "Grabbed Check")) then |
4168 | local distance = (LocalPlayer.Character.HumanoidRootPart.Position - player.Character.HumanoidRootPart.Position).magnitude |
4169 | if distance < shortestDistance then |
4170 | utility.target = player |
4171 | shortestDistance = distance |
4172 | end |
4173 | end |
4174 | end |
4175 | end |
4176 | end |
4177 | -- |
4178 | function framework:getChecks(Player, Friend, Wall, Knocked, Grabbed, ToolHeld) |
4179 | local Checks = true |
4180 | -- |
4181 | if Friend and LocalPlayer:IsFriendsWith(Player.UserId) then Checks = false end |
4182 | if Wall then Checks = utility:checkRay(Player, (Camera.CFrame.Position - Player.Character.Head.Position).Magnitude, Camera.CFrame.Position, (Player.Character.Head.Position - Camera.CFrame.Position).unit) end |
4183 | if Knocked and Player.Character.BodyEffects["K.O"].Value == true then Checks = false end |
4184 | if Grabbed and Player.Character:FindFirstChild("GRABBING_CONSTRAINT") then Checks = false end |
4185 | if ToolHeld and not (LocalPlayer.Character and LocalPlayer.Character:FindFirstChildWhichIsA("Tool")) then Checks = false end |
4186 | -- |
4187 | return Checks |
4188 | end |
4189 | end |
4190 | |
4191 | -- // Esp Functions |
4192 | do |
4193 | -- functions for drawing the mf esp :money_face: |
4194 | function Visuals:Draw(Type, Properties) |
4195 | local Drawing = Drawing.new(Type) |
4196 | -- |
4197 | for Property, Value in pairs(Properties) do |
4198 | Drawing[Property] = Value |
4199 | end |
4200 | -- |
4201 | table.insert(Visuals.Drawings, Drawing) |
4202 | -- |
4203 | return Drawing |
4204 | end |
4205 | -- |
4206 | function Visuals:Create(Properties) |
4207 | if Properties then |
4208 | if Properties.Player then |
4209 | local Self = setmetatable({ |
4210 | Player = Properties.Player, |
4211 | Info = { |
4212 | Tick = tick(), |
4213 | gunTick = tick() |
4214 | }, |
4215 | Renders = { |
4216 | Weapon = Visuals:Draw("Text", {Text = "Weapon", Visible = false, Size = 13, Center = true, Color = NewHex("#ffffff"), Outline = true, OutlineColor = NewHex("#000000"), Font = Drawing.Fonts.Plex}), |
4217 | --Distance = Visuals:Draw("Text", {Text = "Distance", Visible = false, Size = 13, Center = true, Color = NewHex("#ffffff"), Outline = true, OutlineColor = NewHex("#000000"), Font = Drawing.Fonts.Plex}), |
4218 | HealthOutline = Visuals:Draw("Square", {Thickness = 1, Visible = false, Filled = true, Color = NewHex("#000000")}), |
4219 | Health = Visuals:Draw("Square", {Thickness = 1, Visible = false, Filled = true, Color = NewHex("#09ff00")}), |
4220 | HealthText = Visuals:Draw("Text", {Text = "100", Visible = false, Size = 13, Center = true, Color = NewHex("#09ff00"), Outline = true, OutlineColor = NewHex("#000000"), Font = 2}), |
4221 | Box = Visuals:Draw("Square", {Thickness = 1, Visible = false, Filled = false, Color = NewHex("#000000")}), |
4222 | BoxFill = Visuals:Draw("Square", {Thickness = 1, Visible = false, Filled = true, Color = NewHex("#000000")}), |
4223 | BoxOutline = Visuals:Draw("Square", {Thickness = 2, Visible = false, Filled = false, Color = NewHex("#000000")}), |
4224 | BoxInline = Visuals:Draw("Square", {Thickness = 1, Visible = false, Filled = false, Color = NewHex("#C30B00")}), |
4225 | Name = Visuals:Draw("Text", {Text = "Name", Visible = false, Size = 13, Center = true, Color = NewHex("#ffffff"), Outline = true, OutlineColor = NewHex("#000000"), Font = Drawing.Fonts.Plex}), |
4226 | Flag = Visuals:Draw("Text", {Text = "Flag", Visible = false, Size = 13, Center = false, Color = NewHex("#ffffff"), Outline = true, OutlineColor = NewHex("#000000"), Font = Drawing.Fonts.Plex}), |
4227 | Tool = Visuals:Draw("Text", {Text = "Tool", Visible = false, Size = 13, Center = false, Color = NewHex("#ffffff"), Outline = true, OutlineColor = NewHex("#000000"), Font = Drawing.Fonts.Plex}), |
4228 | ArmorBarOutline = Visuals:Draw("Square", {Thickness = 1, Visible = false, Filled = true, Color = NewHex("#000000")}), |
4229 | ArmorBar = Visuals:Draw("Square", {Thickness = 1, Visible = false, Filled = true, Color = NewHex("#09ff00")}), |
4230 | Arrow = Visuals:Draw("Triangle", {Visible = false, Color = NewHex("#ffffff")}), |
4231 | ArrowOutline = Visuals:Draw("Triangle", {Visible = false, Color = NewHex("#ffffff")}), |
4232 | ArmorBarText = Visuals:Draw("Text", {Text = "100", Visible = false, Size = 13, Center = true, Color = NewHex("#09ff00"), Outline = true, OutlineColor = NewHex("#000000"), Font = 2}), |
4233 | GunIcon = Visuals:Draw("Image", {Data = "", Transparency = 1, Visible = false, Size = NewVector2(129,55)}), |
4234 | Corners = {}, |
4235 | }, |
4236 | Highlight = Instance.new("Highlight", game.CoreGui), |
4237 | }, {__index = Visuals.Base}) |
4238 | -- |
4239 | do -- // Corner Boxes |
4240 | for Index = 9, 16 do |
4241 | Self.Renders.Corners[Index] = Visuals:Draw("Line", {Thickness = 3, Color = NewHex("#000000")}) |
4242 | end |
4243 | -- |
4244 | for Index = 1, 8 do |
4245 | Self.Renders.Corners[Index] = Visuals:Draw("Line", {Thickness = 0, Color = NewHex("#1A66FF")}) |
4246 | end |
4247 | end |
4248 | -- |
4249 | Self.Highlight.Parent = game.CoreGui |
4250 | -- |
4251 | Visuals.Bases[Properties.Player] = Self |
4252 | -- |
4253 | return Self |
4254 | end |
4255 | end |
4256 | end |
4257 | -- |
4258 | function Visuals.Base:Opacity(State) |
4259 | local Self = self |
4260 | -- |
4261 | if Self then |
4262 | local Renders = rawget(Self, "Renders") |
4263 | -- |
4264 | for Index, Drawing in pairs(Renders) do |
4265 | if Index ~= "Corners" then |
4266 | Drawing.Visible = State -- what |
4267 | end |
4268 | end |
4269 | -- |
4270 | for Index = 1, 16 do |
4271 | Self.Renders.Corners[Index].Visible = State |
4272 | end |
4273 | -- |
4274 | if not State then |
4275 | Self.Info.RootPosition = nil |
4276 | Self.Info.Health = nil |
4277 | Self.Info.MaxHealth = nil |
4278 | end |
4279 | end |
4280 | end |
4281 | -- |
4282 | function Visuals.Base:Remove() |
4283 | local Self = self |
4284 | -- |
4285 | if Self then |
4286 | setmetatable(Self, {}) |
4287 | -- |
4288 | Visuals.Bases[Self.Player] = nil |
4289 | -- |
4290 | Self.Object = nil |
4291 | -- |
4292 | for Index, Drawing in pairs(Self.Renders) do |
4293 | if Index ~= "Corners" then |
4294 | Drawing:Remove() |
4295 | end |
4296 | end |
4297 | -- |
4298 | for Index = 1, 16 do |
4299 | Self.Renders.Corners[Index]:Remove() |
4300 | end |
4301 | -- |
4302 | Self.Highlight.Parent = nil; |
4303 | Self.Highlight = nil; |
4304 | -- |
4305 | Self.Renders = nil |
4306 | Self = nil |
4307 | end |
4308 | end |
4309 | -- |
4310 | function Visuals.Base:Update() |
4311 | local Self = self |
4312 | local Add = 0; |
4313 | -- |
4314 | if Self then |
4315 | local Renders = rawget(Self, "Renders") |
4316 | local Player = rawget(Self, "Player") |
4317 | local Info = rawget(Self, "Info") |
4318 | local Highlights = rawget(Self, "Highlight") |
4319 | local Parent = Player.Parent |
4320 | -- |
4321 | if (Player and Parent and Parent ~= nil) or (Info.RootPosition and Info.Health and Info.MaxHealth) then |
4322 | if Player then |
4323 | local Object, Humanoid, RootPart = utility:getPlayerInformation(Player) |
4324 | local TransparencyMultplier = 1 |
4325 | -- |
4326 | if Object and Object.Parent and (Humanoid and RootPart) then |
4327 | local Health, MaxHealth = Humanoid.Health, Humanoid.MaxHealth |
4328 | -- |
4329 | if Health > 0 then |
4330 | Info.Pass = true |
4331 | Info.RootPosition = RootPart.Position |
4332 | Info.Health = Health |
4333 | Info.MaxHealth = MaxHealth |
4334 | Info.ArmorValue = Object:FindFirstChild("BodyEffects") and Object["BodyEffects"]:FindFirstChild("Armor") and Object["BodyEffects"]:FindFirstChild("Armor").Value |
4335 | Info.ToolHeld = (Object:FindFirstChildOfClass("Tool") and Object:FindFirstChildOfClass("Tool").Name) or "None" |
4336 | else |
4337 | Info.Pass = false |
4338 | end |
4339 | else |
4340 | Info.Pass = false |
4341 | end |
4342 | -- |
4343 | if Info.Pass then |
4344 | Info.Tick = tick() |
4345 | else |
4346 | local FadeTime = (250 / (2 * 100)) |
4347 | local Value = Info.Tick - tick() |
4348 | -- |
4349 | if Value <= FadeTime then |
4350 | TransparencyMultplier = Clamp((Value + FadeTime) * 1 / FadeTime, 0, 1) |
4351 | else |
4352 | Info.RootPosition = nil |
4353 | Info.Health = nil |
4354 | Info.MaxHealth = nil |
4355 | end |
4356 | end |
4357 | -- |
4358 | if Info.RootPosition and Info.Health and Info.MaxHealth and (Object and Humanoid and RootPart) then |
4359 | local DistanceToPlayer = (Camera.CFrame.Position - Info.RootPosition).Magnitude |
4360 | local Position, OnScreen = Camera:WorldToViewportPoint(Info.RootPosition) |
4361 | -- |
4362 | local Size, BoxSize, BoxPosition, BoxCenter, TL, BL, TR, BR |
4363 | -- |
4364 | if OnScreen then |
4365 | local MaxDistance = tonumber(flags["ESP Distance"]) |
4366 | -- |
4367 | if DistanceToPlayer <= MaxDistance then |
4368 | BoxSize, BoxPosition = utility:BoxCalculation(Info.RootPosition) |
4369 | -- |
4370 | if (flags["PlayerESP_Box"] == true and flags["PlayerESP_Box_Type"] == "Corner") then -- // Corner Boxes |
4371 | BoxCenter = Math:RoundVector(NewVector2(BoxPosition.X + BoxSize.X / 2, BoxPosition.Y + BoxSize.Y / 2)); |
4372 | TL = Math:RoundVector(NewVector2(BoxCenter.X - BoxSize.X / 2, BoxCenter.Y - BoxSize.Y / 2)); |
4373 | BL = Math:RoundVector(NewVector2(BoxCenter.X - BoxSize.X / 2, BoxCenter.Y + BoxSize.Y / 2)); |
4374 | TR = Math:RoundVector(NewVector2(BoxCenter.X + BoxSize.X / 2, BoxCenter.Y - BoxSize.Y / 2)); |
4375 | BR = Math:RoundVector(NewVector2(BoxCenter.X + BoxSize.X / 2, BoxCenter.Y + BoxSize.Y / 2)); |
4376 | end |
4377 | end |
4378 | end |
4379 | -- |
4380 | if (BoxSize and BoxPosition) then |
4381 | local GeneralOpacity = ((1 - 0.2) * TransparencyMultplier) |
4382 | -- |
4383 | for Index, Drawing in pairs(Renders) do |
4384 | if Index ~= "Corners" then |
4385 | if Drawing.Visible then |
4386 | Drawing.Visible = false |
4387 | end |
4388 | end |
4389 | end |
4390 | -- |
4391 | Highlights.Enabled = false |
4392 | -- |
4393 | for Index = 1, 16 do |
4394 | if Renders.Corners[Index].Visible then |
4395 | Renders.Corners[Index].Visible = false |
4396 | end |
4397 | end |
4398 | -- |
4399 | if Player ~= LocalPlayer then |
4400 | do -- // Name |
4401 | if flags["PlayerESP_Name"] then |
4402 | local Name = Renders.Name |
4403 | -- |
4404 | Name.Text = Player.Name |
4405 | Name.Position = NewVector2(BoxSize.X / 2 + BoxPosition.X, BoxPosition.Y - 16) |
4406 | Name.Visible = true |
4407 | Name.Transparency = GeneralOpacity |
4408 | Name.Color = flags["PlayerESP_Name_Color"].Color |
4409 | end |
4410 | end |
4411 | -- |
4412 | do -- // Highlights |
4413 | if flags["PlayerESP_Highlights"] then |
4414 | Highlights.Enabled = true |
4415 | Highlights.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop |
4416 | Highlights.FillColor = flags["PlayerESP_HighlightFillSettings"].Color |
4417 | Highlights.OutlineColor = flags["PlayerESP_HighlightOutlineSettings"].Color |
4418 | Highlights.Adornee = Object |
4419 | Highlights.OutlineTransparency = flags["PlayerESP_HighlightOutlineSettings"].Transparency |
4420 | Highlights.FillTransparency = flags["PlayerESP_HighlightOutlineSettings"].Transparency |
4421 | end |
4422 | end |
4423 | -- |
4424 | do -- // Corner Boxes |
4425 | if flags["PlayerESP_Box"] then |
4426 | if flags["PlayerESP_Box_Type"] == "Corner" then |
4427 | local BoxCorners, BoxColor1, BoxColor2 = Renders.Corners, flags["PlayerESP_Box_Color1"].Color, flags["PlayerESP_Box_Color2"].Color |
4428 | -- // Inlines |
4429 | do |
4430 | BoxCorners[1].Visible = true |
4431 | BoxCorners[1].From = TL |
4432 | BoxCorners[1].To = BoxCorners[1].From + NewVector2(0, BoxSize.X / 3) |
4433 | BoxCorners[1].Color = BoxColor1 |
4434 | -- |
4435 | BoxCorners[2].Visible = true |
4436 | BoxCorners[2].From = TL + NewVector2(1, 0) |
4437 | BoxCorners[2].To = BoxCorners[2].From + NewVector2(BoxSize.X / 3, 0) |
4438 | BoxCorners[2].Color = BoxColor1 |
4439 | -- |
4440 | BoxCorners[3].Visible = true |
4441 | BoxCorners[3].From = TR |
4442 | BoxCorners[3].To = BoxCorners[3].From + NewVector2(-BoxSize.X / 3, 0) |
4443 | BoxCorners[3].Color = BoxColor1 |
4444 | -- |
4445 | BoxCorners[4].Visible = true |
4446 | BoxCorners[4].From = TR |
4447 | BoxCorners[4].To = BoxCorners[4].From + NewVector2(0, BoxSize.X / 3) |
4448 | BoxCorners[4].Color = BoxColor1 |
4449 | -- |
4450 | BoxCorners[5].Visible = true |
4451 | BoxCorners[5].From = BR + NewVector2(0, 1) |
4452 | BoxCorners[5].To = BoxCorners[5].From + NewVector2(0, -BoxSize.X / 3) |
4453 | BoxCorners[5].Color = BoxColor1 |
4454 | -- |
4455 | BoxCorners[6].Visible = true |
4456 | BoxCorners[6].From = BR |
4457 | BoxCorners[6].To = BoxCorners[6].From + NewVector2(-BoxSize.X / 3, 0) |
4458 | BoxCorners[6].Color = BoxColor1 |
4459 | -- |
4460 | BoxCorners[7].Visible = true |
4461 | BoxCorners[7].From = BL + NewVector2(0, 1) |
4462 | BoxCorners[7].To = BoxCorners[7].From + NewVector2(0, -BoxSize.X / 3) |
4463 | BoxCorners[7].Color = BoxColor1 |
4464 | -- |
4465 | BoxCorners[8].Visible = true |
4466 | BoxCorners[8].From = BL |
4467 | BoxCorners[8].To = BoxCorners[8].From + NewVector2(BoxSize.X / 3, 0) |
4468 | BoxCorners[8].Color = BoxColor1 |
4469 | end |
4470 | -- // Outlines |
4471 | do |
4472 | BoxCorners[9].Visible = true |
4473 | BoxCorners[9].From = BoxCorners[1].From + NewVector2(0, -1) |
4474 | BoxCorners[9].To = BoxCorners[1].To + NewVector2(0, 1) |
4475 | BoxCorners[9].Color = BoxColor2 |
4476 | -- |
4477 | BoxCorners[10].Visible = true |
4478 | BoxCorners[10].From = BoxCorners[2].From |
4479 | BoxCorners[10].To = BoxCorners[2].To + NewVector2(1, 0) |
4480 | BoxCorners[10].Color = BoxColor2 |
4481 | -- |
4482 | BoxCorners[11].Visible = true |
4483 | BoxCorners[11].From = BoxCorners[3].From + NewVector2(2, 0) |
4484 | BoxCorners[11].To = BoxCorners[3].To + NewVector2(-1, 0) |
4485 | BoxCorners[11].Color = BoxColor2 |
4486 | -- |
4487 | BoxCorners[12].Visible = true |
4488 | BoxCorners[12].From = BoxCorners[4].From |
4489 | BoxCorners[12].To = BoxCorners[4].To + NewVector2(0, 1) |
4490 | BoxCorners[12].Color = BoxColor2 |
4491 | -- |
4492 | BoxCorners[13].Visible = true |
4493 | BoxCorners[13].From = BoxCorners[5].From |
4494 | BoxCorners[13].To = BoxCorners[5].To + NewVector2(0, -1) |
4495 | BoxCorners[13].Color = BoxColor2 |
4496 | -- |
4497 | BoxCorners[14].Visible = true |
4498 | BoxCorners[14].From = BoxCorners[6].From + NewVector2(2, 0) |
4499 | BoxCorners[14].To = BoxCorners[6].To + NewVector2(-1, 0) |
4500 | BoxCorners[14].Color = BoxColor2 |
4501 | -- |
4502 | BoxCorners[15].Visible = true |
4503 | BoxCorners[15].From = BoxCorners[7].From |
4504 | BoxCorners[15].To = BoxCorners[7].To + NewVector2(0, -1) |
4505 | BoxCorners[15].Color = BoxColor2 |
4506 | -- |
4507 | BoxCorners[16].Visible = true |
4508 | BoxCorners[16].From = BoxCorners[8].From + NewVector2(-1, 0) |
4509 | BoxCorners[16].To = BoxCorners[8].To + NewVector2(1, 0) |
4510 | BoxCorners[16].Color = BoxColor2 |
4511 | end |
4512 | -- |
4513 | for Index = 1, 16 do |
4514 | BoxCorners[Index].Transparency = GeneralOpacity |
4515 | end |
4516 | else |
4517 | local Box = Renders.BoxInline |
4518 | local BoxOutline = Renders.BoxOutline |
4519 | -- |
4520 | Box.Size = BoxSize |
4521 | Box.Position = BoxPosition |
4522 | Box.Transparency = GeneralOpacity |
4523 | Box.Color = flags["PlayerESP_Box_Color1"].Color |
4524 | Box.Visible = true |
4525 | -- |
4526 | BoxOutline.Size = BoxSize |
4527 | BoxOutline.Position = BoxPosition |
4528 | BoxOutline.Transparency = GeneralOpacity |
4529 | BoxOutline.Color = flags["PlayerESP_Box_Color2"].Color |
4530 | BoxOutline.Visible = true |
4531 | end |
4532 | end |
4533 | -- |
4534 | if flags["PlayerESP_BoxFill"] then |
4535 | local BoxFill = Renders.BoxFill |
4536 | -- |
4537 | BoxFill.Size = BoxSize |
4538 | BoxFill.Position = BoxPosition |
4539 | BoxFill.Transparency = TransparencyMultplier - flags["PlayerESP_BoxFill_Color"].Transparency |
4540 | BoxFill.Color = flags["PlayerESP_BoxFill_Color"].Color |
4541 | BoxFill.Visible = true |
4542 | end |
4543 | end |
4544 | -- |
4545 | do -- // HeatlhBar |
4546 | if flags["PlayerESP_HealthBar"] then |
4547 | local ArmorColor = flags["PlayerESP_ArmorBarColor"].Color |
4548 | local HealthSize = (Floor(BoxSize.Y * (Info.Health / Info.MaxHealth))) |
4549 | local Color = utility:Lerp(Info.Health / Info.MaxHealth, flags["PlayerESP_HealthBar_Color_Higher"].Color, flags["PlayerESP_HealthBar_Color_Low"].Color) |
4550 | local Height = ((BoxPosition.Y + BoxSize.Y) - HealthSize) |
4551 | -- |
4552 | -- // Bars |
4553 | local HealthBarInline, HealthBarOutline, HealthBarValue = Renders.Health, Renders.HealthOutline, Renders.HealthText |
4554 | local HealthBarTransparency = GeneralOpacity |
4555 | -- |
4556 | HealthBarInline.Color = Color |
4557 | HealthBarInline.Size = NewVector2(2, HealthSize) |
4558 | HealthBarInline.Position = NewVector2(BoxPosition.X - 5, Height) |
4559 | HealthBarInline.Visible = true |
4560 | HealthBarInline.Transparency = HealthBarTransparency |
4561 | -- |
4562 | HealthBarOutline.Size = NewVector2(4, BoxSize.Y + 2) |
4563 | HealthBarOutline.Position = NewVector2(BoxPosition.X - 6, BoxPosition.Y - 1) |
4564 | HealthBarOutline.Visible = true |
4565 | HealthBarOutline.Transparency = HealthBarTransparency |
4566 | -- |
4567 | do -- // Value |
4568 | if flags["PlayerESP_HealthNumber"] then |
4569 | local Text = Floor(Info.Health), BoxSize.Y |
4570 | local ArmorText = Renders.ArmorBarText |
4571 | local HealthNumberPosition = NewVector2((BoxPosition.X + 1), BoxPosition.Y + BoxSize.Y) |
4572 | local Offset = flags["PlayerESP_ArmorBar"] and 23 or 18 |
4573 | -- |
4574 | HealthBarValue.Text = Text |
4575 | HealthBarValue.Color = Color |
4576 | HealthBarValue.Position = NewVector2(HealthNumberPosition.X - Offset, HealthNumberPosition.Y - (Info.Health / Info.MaxHealth) * BoxSize.Y) |
4577 | HealthBarValue.Visible = true |
4578 | HealthBarValue.Transparency = HealthBarTransparency |
4579 | -- |
4580 | if flags["PlayerESP_ArmorBar"] then |
4581 | ArmorText.Text = tostring(Info.ArmorValue) |
4582 | ArmorText.Color = ArmorColor |
4583 | ArmorText.Position = NewVector2(HealthNumberPosition.X - Offset, HealthNumberPosition.Y - (Info.ArmorValue / 200) * BoxSize.Y) |
4584 | ArmorText.Visible = true |
4585 | ArmorText.Transparency = HealthBarTransparency |
4586 | end |
4587 | end |
4588 | end |
4589 | -- |
4590 | do |
4591 | if flags["PlayerESP_ArmorBar"] then |
4592 | local ArmorBar, ArmorBarOutline = Renders.ArmorBar, Renders.ArmorBarOutline |
4593 | -- |
4594 | local ArmorSize = (Floor(BoxSize.Y * (Info.ArmorValue / 200))) |
4595 | local ArmorHeight = ((BoxPosition.Y + BoxSize.Y) - ArmorSize) |
4596 | -- |
4597 | ArmorBar.Color = ArmorColor |
4598 | ArmorBar.Size = NewVector2(2, ArmorSize) |
4599 | ArmorBar.Position = NewVector2(BoxPosition.X - 10, ArmorHeight) |
4600 | ArmorBar.Visible = true |
4601 | ArmorBar.Transparency = HealthBarTransparency |
4602 | -- |
4603 | ArmorBarOutline.Size = NewVector2(4, BoxSize.Y + 2) |
4604 | ArmorBarOutline.Position = NewVector2(BoxPosition.X - 11, BoxPosition.Y - 1) |
4605 | ArmorBarOutline.Visible = true |
4606 | ArmorBarOutline.Transparency = HealthBarTransparency |
4607 | end |
4608 | end |
4609 | end |
4610 | end |
4611 | -- |
4612 | do -- // Gun Icons |
4613 | if flags["PlayerESP_GunIcons"] and Info.ToolHeld ~= "None" and images[Info.ToolHeld] ~= nil then |
4614 | local Gun = Renders.GunIcon |
4615 | -- |
4616 | if tick() - Info.gunTick > 0.2 then |
4617 | Info.gunTick = tick() |
4618 | Gun.Data = images[Info.ToolHeld] |
4619 | end |
4620 | Gun.Visible = true |
4621 | Gun.Size = NewVector2(51.9, 22.3) |
4622 | Gun.Position = BoxPosition + NewVector2(BoxSize.X / 2, (BoxSize.Y + 2)) - NewVector2(Gun.Size.X/2, 0) |
4623 | Add += 22.3 |
4624 | else |
4625 | Add = 0 |
4626 | end |
4627 | end |
4628 | -- |
4629 | do -- // Weapon |
4630 | if flags["PlayerESP_Weapon"] then |
4631 | local Weapon = Renders.Weapon |
4632 | -- |
4633 | Weapon.Text = Info.ToolHeld |
4634 | Weapon.Position = BoxPosition + NewVector2(BoxSize.X / 2, (BoxSize.Y + 2) + Add) |
4635 | Weapon.Color = flags["PlayerESP_Weapon_Color"].Color |
4636 | Weapon.Transparency = GeneralOpacity |
4637 | Weapon.Visible = true |
4638 | end |
4639 | end |
4640 | -- |
4641 | do -- // Flag |
4642 | if flags["PlayerESP_Flags"] then |
4643 | local Flag = Renders.Flag |
4644 | local FlagStr = "" |
4645 | -- |
4646 | if Find(flags["PlayerESP_Flag_Options"], "Distance") then |
4647 | FlagStr ..= ("%sm\n"):format(Round(DistanceToPlayer)) |
4648 | end |
4649 | -- |
4650 | if Find(flags["PlayerESP_Flag_Options"], "Knocked") and Player.Character.BodyEffects then |
4651 | FlagStr ..= ("%s\n"):format(tostring(Object.BodyEffects["K.O"].Value and "KNOCKED" or "")) |
4652 | end |
4653 | -- |
4654 | Flag.Text = FlagStr |
4655 | Flag.Position = NewVector2(BoxSize.X + BoxPosition.X + 3, BoxPosition.Y - 2) |
4656 | Flag.Visible = true |
4657 | Flag.Color = flags["PlayerESP_FlagsColor"].Color |
4658 | Flag.Transparency = GeneralOpacity |
4659 | end |
4660 | end |
4661 | else |
4662 | do -- // Name |
4663 | if flags["Self_PlayerESP_Name"] then |
4664 | local Name = Renders.Name |
4665 | -- |
4666 | Name.Text = Player.Name |
4667 | Name.Position = NewVector2(BoxSize.X / 2 + BoxPosition.X, BoxPosition.Y - 16) |
4668 | Name.Visible = true |
4669 | Name.Transparency = GeneralOpacity |
4670 | Name.Color = flags["Self_PlayerESP_Name_Color"].Color |
4671 | end |
4672 | end |
4673 | -- |
4674 | do -- // Highlights |
4675 | if flags["Self_PlayerESP_Highlights"] then |
4676 | Highlights.Enabled = true |
4677 | Highlights.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop |
4678 | Highlights.FillColor = flags["Self_PlayerESP_HighlightFillSettings"].Color |
4679 | Highlights.OutlineColor = flags["Self_PlayerESP_HighlightOutlineSettings"].Color |
4680 | Highlights.Adornee = Object |
4681 | Highlights.OutlineTransparency = flags["Self_PlayerESP_HighlightOutlineSettings"].Transparency |
4682 | Highlights.FillTransparency = flags["Self_PlayerESP_HighlightOutlineSettings"].Transparency |
4683 | end |
4684 | end |
4685 | -- |
4686 | do -- // Corner Boxes |
4687 | if flags["Self_PlayerESP_Box"] then |
4688 | local Box = Renders.BoxInline |
4689 | local BoxOutline = Renders.BoxOutline |
4690 | -- |
4691 | Box.Size = BoxSize |
4692 | Box.Position = BoxPosition |
4693 | Box.Transparency = GeneralOpacity |
4694 | Box.Color = flags["Self_PlayerESP_Box_Color1"].Color |
4695 | Box.Visible = true |
4696 | -- |
4697 | BoxOutline.Size = BoxSize |
4698 | BoxOutline.Position = BoxPosition |
4699 | BoxOutline.Transparency = GeneralOpacity |
4700 | BoxOutline.Color = flags["Self_PlayerESP_Box_Color2"].Color |
4701 | BoxOutline.Visible = true |
4702 | end |
4703 | -- |
4704 | if flags["Self_PlayerESP_Box"] then |
4705 | local BoxFill = Renders.BoxFill |
4706 | -- |
4707 | BoxFill.Size = BoxSize |
4708 | BoxFill.Position = BoxPosition |
4709 | BoxFill.Transparency = TransparencyMultplier - flags["Self_PlayerESP_BoxFill_Color"].Transparency |
4710 | BoxFill.Color = flags["Self_PlayerESP_BoxFill_Color"].Color |
4711 | BoxFill.Visible = true |
4712 | end |
4713 | end |
4714 | -- |
4715 | do -- // HeatlhBar |
4716 | if flags["Self_PlayerESP_HealthBar"] then |
4717 | local ArmorColor = flags["Self_PlayerESP_ArmorBarColor"].Color |
4718 | local HealthSize = (Floor(BoxSize.Y * (Info.Health / Info.MaxHealth))) |
4719 | local Color = utility:Lerp(Info.Health / Info.MaxHealth, flags["Self_PlayerESP_HealthBar_Color_Higher"].Color, flags["Self_PlayerESP_HealthBar_Color_Low"].Color) |
4720 | local Height = ((BoxPosition.Y + BoxSize.Y) - HealthSize) |
4721 | -- |
4722 | -- // Bars |
4723 | local HealthBarInline, HealthBarOutline, HealthBarValue = Renders.Health, Renders.HealthOutline, Renders.HealthText |
4724 | local HealthBarTransparency = GeneralOpacity |
4725 | -- |
4726 | HealthBarInline.Color = Color |
4727 | HealthBarInline.Size = NewVector2(2, HealthSize) |
4728 | HealthBarInline.Position = NewVector2(BoxPosition.X - 5, Height) |
4729 | HealthBarInline.Visible = true |
4730 | HealthBarInline.Transparency = HealthBarTransparency |
4731 | -- |
4732 | HealthBarOutline.Size = NewVector2(4, BoxSize.Y + 2) |
4733 | HealthBarOutline.Position = NewVector2(BoxPosition.X - 6, BoxPosition.Y - 1) |
4734 | HealthBarOutline.Visible = true |
4735 | HealthBarOutline.Transparency = HealthBarTransparency |
4736 | -- |
4737 | do -- // Value |
4738 | if flags["Self_PlayerESP_HealthNumber"] then |
4739 | local Text = Floor(Info.Health), BoxSize.Y |
4740 | local ArmorText = Renders.ArmorBarText |
4741 | local HealthNumberPosition = NewVector2((BoxPosition.X + 1), BoxPosition.Y + BoxSize.Y) |
4742 | local Offset = flags["Self_PlayerESP_ArmorBar"] and 23 or 18 |
4743 | -- |
4744 | HealthBarValue.Text = Text |
4745 | HealthBarValue.Color = Color |
4746 | HealthBarValue.Position = NewVector2(HealthNumberPosition.X - Offset, HealthNumberPosition.Y - (Info.Health / Info.MaxHealth) * BoxSize.Y) |
4747 | HealthBarValue.Visible = true |
4748 | HealthBarValue.Transparency = HealthBarTransparency |
4749 | -- |
4750 | if flags["Self_PlayerESP_ArmorBar"] then |
4751 | ArmorText.Text = tostring(Info.ArmorValue) |
4752 | ArmorText.Color = ArmorColor |
4753 | ArmorText.Position = NewVector2(HealthNumberPosition.X - Offset, HealthNumberPosition.Y - (Info.ArmorValue / 200) * BoxSize.Y) |
4754 | ArmorText.Visible = true |
4755 | ArmorText.Transparency = HealthBarTransparency |
4756 | end |
4757 | end |
4758 | end |
4759 | -- |
4760 | do |
4761 | if flags["Self_PlayerESP_ArmorBar"] then |
4762 | local ArmorBar, ArmorBarOutline = Renders.ArmorBar, Renders.ArmorBarOutline |
4763 | -- |
4764 | local ArmorSize = (Floor(BoxSize.Y * (Info.ArmorValue / 200))) |
4765 | local ArmorHeight = ((BoxPosition.Y + BoxSize.Y) - ArmorSize) |
4766 | -- |
4767 | ArmorBar.Color = ArmorColor |
4768 | ArmorBar.Size = NewVector2(2, ArmorSize) |
4769 | ArmorBar.Position = NewVector2(BoxPosition.X - 10, ArmorHeight) |
4770 | ArmorBar.Visible = true |
4771 | ArmorBar.Transparency = HealthBarTransparency |
4772 | -- |
4773 | ArmorBarOutline.Size = NewVector2(4, BoxSize.Y + 2) |
4774 | ArmorBarOutline.Position = NewVector2(BoxPosition.X - 11, BoxPosition.Y - 1) |
4775 | ArmorBarOutline.Visible = true |
4776 | ArmorBarOutline.Transparency = HealthBarTransparency |
4777 | end |
4778 | end |
4779 | end |
4780 | end |
4781 | -- |
4782 | do -- // Gun Icons |
4783 | if flags["Self_PlayerESP_GunIcons"] and Info.ToolHeld ~= "None" and images[Info.ToolHeld] ~= nil then |
4784 | local Gun = Renders.GunIcon |
4785 | -- |
4786 | if tick() - Info.gunTick > 0.75 then |
4787 | Info.gunTick = tick() |
4788 | Gun.Data = images[Info.ToolHeld] |
4789 | end |
4790 | Gun.Visible = true |
4791 | Gun.Size = NewVector2(51.9, 22.3) |
4792 | Gun.Position = BoxPosition + NewVector2(BoxSize.X / 2, (BoxSize.Y + 2)) - NewVector2(Gun.Size.X/2, 0) |
4793 | Add += 22.3 |
4794 | else |
4795 | Add = 0 |
4796 | end |
4797 | end |
4798 | -- |
4799 | do -- // Weapon |
4800 | if flags["Self_PlayerESP_Weapon"] then |
4801 | local Weapon = Renders.Weapon |
4802 | -- |
4803 | Weapon.Text = Info.ToolHeld |
4804 | Weapon.Position = BoxPosition + NewVector2(BoxSize.X / 2, (BoxSize.Y + 2) + Add) |
4805 | Weapon.Color = flags["Self_PlayerESP_Weapon_Color"].Color |
4806 | Weapon.Transparency = GeneralOpacity |
4807 | Weapon.Visible = true |
4808 | end |
4809 | end |
4810 | -- |
4811 | do -- // Flag |
4812 | if flags["Self_PlayerESP_Flags"] then |
4813 | local Flag = Renders.Flag |
4814 | local FlagStr = "" |
4815 | -- |
4816 | if Find(flags["Self_PlayerESP_Flag_Options"], "Distance") then |
4817 | FlagStr ..= ("%sm\n"):format(Round(DistanceToPlayer)) |
4818 | end |
4819 | -- |
4820 | if Find(flags["Self_PlayerESP_Flag_Options"], "Knocked") and Player.Character.BodyEffects then |
4821 | FlagStr ..= ("%s\n"):format(tostring(Object.BodyEffects["K.O"].Value and "KNOCKED" or "")) |
4822 | end |
4823 | -- |
4824 | Flag.Text = FlagStr |
4825 | Flag.Position = NewVector2(BoxSize.X + BoxPosition.X + 3, BoxPosition.Y - 2) |
4826 | Flag.Visible = true |
4827 | Flag.Color = flags["Self_PlayerESP_FlagsColor"].Color |
4828 | Flag.Transparency = GeneralOpacity |
4829 | end |
4830 | end |
4831 | end |
4832 | return |
4833 | end |
4834 | end |
4835 | end |
4836 | -- |
4837 | return Self:Opacity(false) |
4838 | end |
4839 | -- |
4840 | return Self:Remove() |
4841 | end |
4842 | end |
4843 | -- |
4844 | function Visuals:Unload() |
4845 | for Index, Base in pairs(Visuals.Bases) do |
4846 | Base:Remove() |
4847 | end |
4848 | end |
4849 | end |
4850 | |
4851 | -- // Creations + Setting Stuff |
4852 | do |
4853 | utility.drawings["Tracer"] = utility:drawObject("Line", {}) |
4854 | utility.drawings["Aim Assist FOV"] = utility:drawObject("Circle", {Visible = false, Radius = 8, Color = Color3.fromRGB(0,0,0), Filled = false}) |
4855 | utility.drawings["Sub"] = utility:drawObject("Text", {Outline = true, Text = "lunar", Color = Color3.new(1, 1, 1)}) |
4856 | utility.drawings["Domain"] = utility:drawObject("Text", {Outline = true, Text = ".vip", Color = Color3.fromRGB(132, 108, 188)}) |
4857 | -- |
4858 | for i,v in pairs(bodyClone:GetDescendants()) do |
4859 | if v:IsA("BasePart") and v.Name ~= "HumanoidRootPart" then |
4860 | v.CanCollide = false |
4861 | v.Transparency = 0 |
4862 | end |
4863 | end |
4864 | |
4865 | -- drawing lines for crosshair |
4866 | do |
4867 | for Index = 1, 4 do |
4868 | local line = utility:drawObject("Line",{ |
4869 | Visible = false, |
4870 | Color = Color3.fromRGB(255,255,255), |
4871 | Thickness = 1, |
4872 | ZIndex = 2, |
4873 | Transparency = 1 |
4874 | }) |
4875 | -- |
4876 | crosshair_Lines[Index] = line |
4877 | -- |
4878 | local line_1 = utility:drawObject("Line",{ |
4879 | Visible = false, |
4880 | Color = Color3.fromRGB(0, 0, 0), |
4881 | Thickness = 2.5, |
4882 | ZIndex = 1, |
4883 | Transparency = 1 |
4884 | }) |
4885 | -- |
4886 | crosshair_Outlines[Index] = line_1 |
4887 | end |
4888 | end |
4889 | |
4890 | -- // Chat spam framework |
4891 | do |
4892 | Messages = { |
4893 | ["Scottish"] = { |
4894 | "You Grandma Still Wears Shin Pads To Work 🤣🤣", |
4895 | "Melon Head", |
4896 | "Your Ma Is A Bin Man 🤣🤣", |
4897 | "Taped You Like I Did To Your Ma", |
4898 | "Fore Headed Mong", |
4899 | "Such A Fruit", |
4900 | "YoUr A BoOt", |
4901 | "keep Trying You Jobby", |
4902 | }, |
4903 | ["Lunar"] = { |
4904 | "Owned By Lunar", |
4905 | "Lunar Lunar Lunar RAHHHHH", |
4906 | "Slammed by Lunar", |
4907 | "YOU GOT SLAMMED BY LUNAR", |
4908 | "SEEMS LIKE YOU NEED LUNAR GG/LUNARVIP", |
4909 | "GG/LUNARVIP GG/LUNARVIP GG/LUNARVIP", |
4910 | "GG/LUNARVIP <-- THIS WILL LET YOU COPE WITH YOUR ISSUES", |
4911 | "WHAT YOU CANT BEAT LUNAR?", |
4912 | "PRO TIP: BUY LUNAR", |
4913 | }, |
4914 | } |
4915 | utx = { |
4916 | ["symbols"] = { |
4917 | "~", |
4918 | "!", |
4919 | "@", |
4920 | "#", |
4921 | "$", |
4922 | "%", |
4923 | "^", |
4924 | "&", |
4925 | "*", |
4926 | "(", |
4927 | ")", |
4928 | "_", |
4929 | "+", |
4930 | "{", |
4931 | "}", |
4932 | "|", |
4933 | ":", |
4934 | '"', |
4935 | "<", |
4936 | ">", |
4937 | "?", |
4938 | ".", |
4939 | ",", |
4940 | "/", |
4941 | "'", |
4942 | }, |
4943 | ["emojis"] = { |
4944 | "😎", |
4945 | "🤣", |
4946 | "👀", |
4947 | "🙄", |
4948 | "🔥", |
4949 | "😅", |
4950 | "😂", |
4951 | "😹", |
4952 | "😛", |
4953 | "🤩", |
4954 | "🌈", |
4955 | "😎", |
4956 | "🤠", |
4957 | "😔", |
4958 | "🤡", |
4959 | "💤", |
4960 | "🚶", |
4961 | "🙀", |
4962 | "😂", |
4963 | "📈", |
4964 | "🤏", |
4965 | "🌈", |
4966 | "😎", |
4967 | "🤠", |
4968 | "😔", |
4969 | }, |
4970 | } |
4971 | end |
4972 | end |
4973 | |
4974 | -- // Hit Reg |
4975 | do |
4976 | function HitReg:HitMarker(Gap, Color, Time) |
4977 | local Lines = {} |
4978 | local Hitmarker = true |
4979 | -- |
4980 | for i = 1, 4 do |
4981 | Lines[i] = utility:drawObject("Line", {Color = Color, Visible = true, Transparency = 1, Thickness = 1}) |
4982 | end |
4983 | -- |
4984 | local function setMarkerPos() |
4985 | Lines[1].From = NewVector2(Mouse.X + Gap, (Mouse.Y + Offset) + Gap) |
4986 | Lines[1].To = NewVector2(Mouse.X + (Gap * 2.5), (Mouse.Y + Offset) + (Gap * 2.5)) |
4987 | -- |
4988 | Lines[2].From = NewVector2(Mouse.X + Gap, (Mouse.Y + Offset) - Gap) |
4989 | Lines[2].To = NewVector2(Mouse.X + (Gap * 2.5), (Mouse.Y + Offset) - (Gap * 2.5)) |
4990 | -- |
4991 | Lines[3].From = NewVector2(Mouse.X - Gap, (Mouse.Y + Offset) + Gap) |
4992 | Lines[3].To = NewVector2(Mouse.X - (Gap * 2.5), (Mouse.Y + Offset) + (Gap * 2.5)) |
4993 | -- |
4994 | Lines[4].From = NewVector2(Mouse.X - Gap, (Mouse.Y + Offset) - Gap) |
4995 | Lines[4].To = NewVector2(Mouse.X - (Gap * 2.5), (Mouse.Y + Offset) - (Gap * 2.5)) |
4996 | end |
4997 | -- |
4998 | delay(Time, function() |
4999 | for i = Time, 0, -0.1 do |
5000 | task.wait() |
5001 | for _, Value in next, Lines do |
5002 | Value.Transparency = i |
5003 | end |
5004 | setMarkerPos() |
5005 | end |
5006 | -- |
5007 | for _, Value in next, Lines do |
5008 | Value:Remove() |
5009 | end |
5010 | -- |
5011 | Hitmarker = false |
5012 | end) |
5013 | end |
5014 | -- |
5015 | function HitReg:HitMarker3D(Gap, Color, Time, Hit) |
5016 | local Lines = {} |
5017 | local Hitmarker = true |
5018 | -- |
5019 | for i = 1, 4 do |
5020 | Lines[i] = utility:drawObject("Line", {Color = Color, Visible = true, Transparency = 1, Thickness = 1}) |
5021 | end |
5022 | -- |
5023 | task.spawn(function() |
5024 | while Hitmarker do |
5025 | local Position3D, OnScreen = Camera:WorldToViewportPoint(Hit) |
5026 | -- |
5027 | Lines[1].From = NewVector2(Position3D.X + Gap, Position3D.Y + Gap) |
5028 | Lines[1].To = NewVector2(Position3D.X + (Gap * 2.5), Position3D.Y + (Gap * 2.5)) |
5029 | -- |
5030 | Lines[2].From = NewVector2(Position3D.X + Gap, Position3D.Y - Gap) |
5031 | Lines[2].To = NewVector2(Position3D.X + (Gap * 2.5), Position3D.Y - (Gap * 2.5)) |
5032 | -- |
5033 | Lines[3].From = NewVector2(Position3D.X - Gap, Position3D.Y + Gap) |
5034 | Lines[3].To = NewVector2(Position3D.X - (Gap * 2.5), Position3D.Y + (Gap * 2.5)) |
5035 | -- |
5036 | Lines[4].From = NewVector2(Position3D.X - Gap, Position3D.Y - Gap) |
5037 | Lines[4].To = NewVector2(Position3D.X - (Gap * 2.5), Position3D.Y - (Gap * 2.5)) |
5038 | -- |
5039 | for _, Value in next, Lines do |
5040 | Value.Visible = OnScreen |
5041 | end |
5042 | -- |
5043 | task.wait() |
5044 | end |
5045 | end) |
5046 | -- |
5047 | delay(Time, function() |
5048 | for i = Time, 0, -0.1 do |
5049 | task.wait() |
5050 | for _, Value in next, Lines do |
5051 | Value.Transparency = i |
5052 | end |
5053 | end |
5054 | -- |
5055 | for _, Value in next, Lines do |
5056 | Value:Remove() |
5057 | end |
5058 | -- |
5059 | Hitmarker = false |
5060 | end) |
5061 | end |
5062 | -- |
5063 | function HitReg:HitEffect(Type, Character) |
5064 | local function convert(color) |
5065 | return color.r/5, color.g/5, color.b/5 |
5066 | end |
5067 | -- |
5068 | local function Weld(x,y) |
5069 | local W = Instance.new("Weld") |
5070 | W.Part0 = x |
5071 | W.Part1 = y |
5072 | local CJ = NewCFrame(x.Position) |
5073 | local C0 = x.CFrame:inverse()*CJ |
5074 | local C1 = y.CFrame:inverse()*CJ |
5075 | W.C0 = C0 |
5076 | W.C1 = C1 |
5077 | W.Parent = x |
5078 | end |
5079 | -- |
5080 | if Type == "Confetti" then |
5081 | task.spawn(function() |
5082 | local Confetti_Amount = 20000 |
5083 | local RootPart = Character.HumanoidRootPart |
5084 | local ConfettiClone = hitmodule:Clone() |
5085 | ConfettiClone.RainbowParticles.Rate = Confetti_Amount |
5086 | ConfettiClone.Parent = workspace |
5087 | ConfettiClone.CanCollide = false |
5088 | ConfettiClone.CFrame = RootPart.CFrame |
5089 | -- |
5090 | for i = Confetti_Amount, 0 , -(Confetti_Amount/50) do |
5091 | task.wait() |
5092 | ConfettiClone.RainbowParticles.Rate = i |
5093 | end |
5094 | -- |
5095 | delay(5, function() |
5096 | ConfettiClone:Destroy() |
5097 | end) |
5098 | end) |
5099 | elseif Type == "Nova" then |
5100 | local Effect = Nova:Clone() |
5101 | Effect.Parent = Character.HumanoidRootPart |
5102 | -- |
5103 | for i,v in pairs(Effect:GetChildren()) do |
5104 | v.Rate = 0 |
5105 | v.Color = ColorSequence.new({ColorSequenceKeypoint.new(0, Color3.new(0, 0, 0)), ColorSequenceKeypoint.new(0.5, Color3.new(convert(flags["Hit Effect Settings"].Color))),ColorSequenceKeypoint.new(1, Color3.new(0, 0, 0)),}) |
5106 | v:Emit() |
5107 | end |
5108 | -- |
5109 | delay(2, function() |
5110 | Effect:Destroy() |
5111 | end) |
5112 | else |
5113 | local Clone = SparklesEffect:Clone() |
5114 | Clone.Parent = Character.HumanoidRootPart |
5115 | Clone.LockedToPart = false |
5116 | Clone.Acceleration = Vector3.new(0,-100,0) |
5117 | -- |
5118 | Clone:Emit(15) |
5119 | -- |
5120 | delay(5, function() Clone:Destroy() end) |
5121 | end |
5122 | end |
5123 | -- |
5124 | function HitReg:HitSound(Id, Volume, Pitch) |
5125 | local Sound = Instance.new("Sound", game:GetService("SoundService")); local PitchSound = Instance.new("PitchShiftSoundEffect", Sound) |
5126 | -- |
5127 | Sound.SoundId = "rbxassetid://".. Id .."" |
5128 | --[[writefile("song.mp3", game:HttpGet("https://lunar.feet.media/osiris/cmwr7ecb.mp3")) |
5129 | Sound.SoundId = getcustomasset("song.mp3")]] |
5130 | Sound.Volume = Volume |
5131 | PitchSound.Octave = Pitch |
5132 | Sound.PlayOnRemove = true |
5133 | Sound:Destroy() |
5134 | end |
5135 | end |
5136 | |
5137 | for i,v in pairs(LocalPlayer.Character:GetChildren()) do |
5138 | if v:IsA("BasePart") then |
5139 | table.insert(utility.bodyParts, v.Name) |
5140 | end |
5141 | end |
5142 | |
5143 | -- // Tweens |
5144 | do |
5145 | Tween.EasingStyles = { |
5146 | [Enum.EasingStyle.Linear] = { |
5147 | [Enum.EasingDirection.In] = function(Delta) |
5148 | return Delta |
5149 | end, |
5150 | [Enum.EasingDirection.Out] = function(Delta) |
5151 | return Delta |
5152 | end, |
5153 | [Enum.EasingDirection.InOut] = function(Delta) |
5154 | return Delta |
5155 | end |
5156 | }, |
5157 | [Enum.EasingStyle.Cubic] = { |
5158 | [Enum.EasingDirection.In] = function(Delta) |
5159 | return Delta ^ 3 |
5160 | end, |
5161 | [Enum.EasingDirection.Out] = function(Delta) |
5162 | return ((Delta - 1) ^ 3) + 1 |
5163 | end, |
5164 | [Enum.EasingDirection.InOut] = function(Delta) |
5165 | if 0 <= Delta and Delta <= 0.5 then |
5166 | return (4 * Delta ^ 3) |
5167 | elseif 0.5 <= Delta and Delta <= 1 then |
5168 | return (4 * (Delta - 1) ^ 3) + 1 |
5169 | end |
5170 | end |
5171 | }, |
5172 | [Enum.EasingStyle.Quad] = { |
5173 | [Enum.EasingDirection.In] = function(Delta) |
5174 | return Delta ^ 2 |
5175 | end, |
5176 | [Enum.EasingDirection.Out] = function(Delta) |
5177 | return (-(Delta - 1) ^ 2) + 1 |
5178 | end, |
5179 | [Enum.EasingDirection.InOut] = function(Delta) |
5180 | if 0 <= Delta and Delta <= 0.5 then |
5181 | return (2 * Delta ^ 2) |
5182 | elseif 0.5 <= Delta and Delta <= 1 then |
5183 | return -(2 * (Delta - 1) ^ 2) + 1 |
5184 | end |
5185 | end |
5186 | }, |
5187 | [Enum.EasingStyle.Quart] = { |
5188 | [Enum.EasingDirection.In] = function(Delta) |
5189 | return Delta ^ 4 |
5190 | end, |
5191 | [Enum.EasingDirection.Out] = function(Delta) |
5192 | return (-(Delta - 1) ^ 4) + 1 |
5193 | end, |
5194 | [Enum.EasingDirection.InOut] = function(Delta) |
5195 | if 0 <= Delta and Delta <= 0.5 then |
5196 | return (8 * Delta ^ 4) |
5197 | elseif 0.5 <= Delta and Delta <= 1 then |
5198 | return -(8 * (Delta - 1) ^ 4) + 1 |
5199 | end |
5200 | end |
5201 | }, |
5202 | [Enum.EasingStyle.Quint] = { |
5203 | [Enum.EasingDirection.In] = function(Delta) |
5204 | return Delta ^ 5 |
5205 | end, |
5206 | [Enum.EasingDirection.Out] = function(Delta) |
5207 | return ((Delta - 1) ^ 5) + 1 |
5208 | end, |
5209 | [Enum.EasingDirection.InOut] = function(Delta) |
5210 | if 0 <= Delta and Delta <= 0.5 then |
5211 | return (16 * Delta ^ 5) |
5212 | elseif 0.5 <= Delta and Delta <= 1 then |
5213 | return (16 * (Delta - 1) ^ 5) + 1 |
5214 | end |
5215 | end |
5216 | }, |
5217 | [Enum.EasingStyle.Sine] = { |
5218 | [Enum.EasingDirection.In] = function(Delta) |
5219 | return Sin(((Pi / 2) * Delta) - (Pi / 2)) + 1 |
5220 | end, |
5221 | [Enum.EasingDirection.Out] = function(Delta) |
5222 | return Sin((Pi / 2) * Delta) |
5223 | end, |
5224 | [Enum.EasingDirection.InOut] = function(Delta) |
5225 | return (0.5 * Sin((Pi * Delta) - (Pi / 2))) + 0.5 |
5226 | end |
5227 | }, |
5228 | [Enum.EasingStyle.Exponential] = { |
5229 | [Enum.EasingDirection.In] = function(Delta) |
5230 | return (2 ^ ((10 * Delta) - 10)) - 0.001 |
5231 | end, |
5232 | [Enum.EasingDirection.Out] = function(Delta) |
5233 | return 1.001 * (-2 ^ -(10 * Delta)) + 1 |
5234 | end, |
5235 | [Enum.EasingDirection.InOut] = function(Delta) |
5236 | if 0 <= Delta and Delta <= 0.5 then |
5237 | return 0.5 * (2 ^ ((20 * Delta) - 10)) - 0.0005 |
5238 | elseif 0.5 <= Delta and Delta <= 1 then |
5239 | return 0.50025 * (-2 ^ (-(20 * Delta) + 10)) + 1 |
5240 | end |
5241 | end |
5242 | }, |
5243 | [Enum.EasingStyle.Back] = { |
5244 | [Enum.EasingDirection.In] = function(Delta) |
5245 | return (Delta * Delta) * (Delta * (1.70158 + 1) - 1.70158) |
5246 | end, |
5247 | [Enum.EasingDirection.Out] = function(Delta) |
5248 | return ((Delta - 1) ^ 2) * ((Delta - 1) * (1.70158 + 1) + 1.70158) + 1 |
5249 | end, |
5250 | [Enum.EasingDirection.InOut] = function(Delta) |
5251 | if 0 <= Delta and Delta <= 0.5 then |
5252 | return (2 * (Delta * Delta)) * ((2 * Delta) * (2.5949095 + 1) - 2.5949095) |
5253 | elseif 0.5 <= Delta and Delta <= 1 then |
5254 | return (0.5 * ((2 * Delta) - 2) ^ 2) * (((2 * Delta) - 2) * (2.5949095 + 1) + 2.5949095) + 1 |
5255 | end |
5256 | end |
5257 | }, |
5258 | [Enum.EasingStyle.Bounce] = { |
5259 | [Enum.EasingDirection.In] = function(Delta) |
5260 | if 0 <= Delta and Delta <= (1 / 2.75) then |
5261 | return 7.5625 * (Delta * Delta) |
5262 | elseif (1 / 2.75) <= Delta and Delta <= (2 / 2.75) then |
5263 | return 7.5625 * (Delta - (1.5 / 2.75)) ^ 2 + 0.75 |
5264 | elseif (2 / 2.75) <= Delta and Delta <= (2.5 / 2.75) then |
5265 | return 7.5625 * (Delta - (2.25 / 2.75)) ^ 2 + 0.9375 |
5266 | elseif (2.5 / 2.75) <= Delta and Delta <= 1 then |
5267 | return 7.5625 * (Delta - (2.625 / 2.75)) ^ 2 + 0.984375 |
5268 | end |
5269 | end, |
5270 | [Enum.EasingDirection.Out] = function(Delta) |
5271 | if 0 <= Delta and Delta <= (0.25 / 2.75) then |
5272 | return -7.5625 * (1 - Delta - (2.625 / 2.75)) ^ 2 + 0.015625 |
5273 | elseif (0.25 / 2.75) <= Delta and Delta <= (0.75 / 2.75) then |
5274 | return -7.5625 * (1 - Delta - (2.25 / 2.75)) ^ 2 + 0.0625 |
5275 | elseif (0.75 / 2.75) <= Delta and Delta <= (1.75 / 2.75) then |
5276 | return -7.5625 * (1 - Delta - (1.5 / 2.75)) ^ 2 + 0.25 |
5277 | elseif (1.75 / 2.75) <= Delta and Delta <= 1 then |
5278 | return 1 - 7.5625 * (1 - Delta) ^ 2 |
5279 | end |
5280 | end, |
5281 | [Enum.EasingDirection.InOut] = function(Delta) |
5282 | if 0 <= Delta and Delta <= (0.125 / 2.75) then |
5283 | return 0.5 * (-7.5625 * (1 - (2 * Delta) - (2.625 / 2.75)) ^ 2 + 0.015625) |
5284 | elseif (0.125 / 2.75) <= Delta and Delta <= (0.375 / 2.75) then |
5285 | return 0.5 * (-7.5625 * (1 - (2 * Delta) - (2.25 / 2.75)) ^ 2 + 0.0625) |
5286 | elseif (0.375 / 2.75) <= Delta and Delta <= (0.875 / 2.75) then |
5287 | return 0.5 * (-7.5625 * (1 - (2 * Delta) - (1.5 / 2.75)) ^ 2 + 0.25) |
5288 | elseif (0.875 / 2.75) <= Delta and Delta <= 0.5 then |
5289 | return 0.5 * (1 - 7.5625 * (1 - (2 * Delta)) ^ 2) |
5290 | elseif 0.5 <= Delta and Delta <= (1.875 / 2.75) then |
5291 | return 0.5 + 3.78125 * ((2 * Delta) - 1) ^ 2 |
5292 | elseif (1.875 / 2.75) <= Delta and Delta <= (2.375 / 2.75) then |
5293 | return 3.78125 * ((2 * Delta) - (4.25 / 2.75)) ^ 2 + 0.875 |
5294 | elseif (2.375 / 2.75) <= Delta and Delta <= (2.625 / 2.75) then |
5295 | return 3.78125 * ((2 * Delta) - (5 / 2.75)) ^ 2 + 0.96875 |
5296 | elseif (2.625 / 2.75) <= Delta and Delta <= 1 then |
5297 | return 3.78125 * ((2 * Delta) - (5.375 / 2.75)) ^ 2 + 0.9921875 |
5298 | end |
5299 | end |
5300 | }, |
5301 | [Enum.EasingStyle.Elastic] = { |
5302 | [Enum.EasingDirection.In] = function(Delta) |
5303 | return (-2 ^ (10 * (Delta - 1))) * Sin(((2 * Pi) * (Delta - 1 - (0.3 / 4))) / 0.3) |
5304 | end, |
5305 | [Enum.EasingDirection.Out] = function(Delta) |
5306 | return (2 ^ (-10 * Delta)) * Sin(((2 * Pi) * (Delta - (0.3 / 4))) / 0.3) + 1 |
5307 | end, |
5308 | [Enum.EasingDirection.InOut] = function(Delta) |
5309 | if 0 <= Delta and Delta <= 0.5 then |
5310 | return -0.5 * (2 ^ ((20 * Delta) - 10)) * Sin(((2 * Pi) * ((2 * Delta) - 1.1125)) / 0.45) |
5311 | elseif 0.5 <= Delta and Delta <= 1 then |
5312 | return 0.5 * (2 ^ ((-20 * Delta) + 10)) * Sin(((2 * Pi) * ((2 * Delta) - 1.1125)) / 0.45) + 1 |
5313 | end |
5314 | end |
5315 | }, |
5316 | [Enum.EasingStyle.Circular] = { |
5317 | [Enum.EasingDirection.In] = function(Delta) |
5318 | return -Sqrt(1 - Delta ^ 2) + 1 |
5319 | end, |
5320 | [Enum.EasingDirection.Out] = function(Delta) |
5321 | return Sqrt(-(Delta - 1) ^ 2 + 1) |
5322 | end, |
5323 | [Enum.EasingDirection.InOut] = function(Delta) |
5324 | if 0 <= Delta and Delta <= 0.5 then |
5325 | return -Sqrt(-Delta ^ 2 + 0.25) + 0.5 |
5326 | elseif 0.5 <= Delta and Delta <= 1 then |
5327 | return Sqrt(-(Delta - 1) ^ 2 + 0.25) + 0.5 |
5328 | end |
5329 | end |
5330 | } |
5331 | } |
5332 | end |
5333 | end |
5334 | end |
5335 | -- |
5336 | local crosshair_lineOffsets = utility:generateAngles(4); |
5337 | local Window = Library:Window({Size = UDim2.new(0,580,0,600)}) do |
5338 | -- // Rage |
5339 | local aiming = Window:Page({Name = "Rage", Weapons = true}) do |
5340 | local Settings = aiming:Weapon({Icon = "rbxassetid://6031280882"}) |
5341 | local Visuals = aiming:Weapon({Icon = "rbxassetid://7300480952"}) |
5342 | -- |
5343 | local mainTarget = Settings:Section({Name = "Main", Size = 330}) do |
5344 | mainTarget:Toggle({Name = "Enabled", Flag = "Silent Enabled", Risk = true}) |
5345 | mainTarget:Keybind({Name = "Key", Flag = "Silent_Bind", Mode = "Toggle", callback = function() |
5346 | framework:selectTarget(); |
5347 | bodyClone:SetPrimaryPartCFrame(NewCFrame(9959,9999,9990)) |
5348 | end}) |
5349 | end |
5350 | -- |
5351 | local targetSettings = Settings:Section({Name = "Settings", Size = 330}) do |
5352 | targetSettings:Toggle({Name = "Look At", Flag = "Look At"}) |
5353 | targetSettings:Toggle({Name = "Auto Shoot", Flag = "Auto Shoot"}) |
5354 | targetSettings:Toggle({Name = "Spectate", Flag = "Spectate"}) |
5355 | targetSettings:Toggle({Name = "Notify", Flag = "Notify"}) |
5356 | targetSettings:Toggle({Name = "Aim Viewer Bypass", Flag = "Aim Viewer Bypass"}) |
5357 | end |
5358 | -- |
5359 | local targetMethods = Settings:Section({Name = "Methods", Size = 330}) do |
5360 | targetMethods:Toggle({Name = "Resolver", Flag = "Resolver"}) |
5361 | targetMethods:Dropdown({Name = "Resolver Method", Flag = "Resolver Method", Options = {"Recalculate Velocity", "Suppress Velocity", "Move Direction"}, Default = "Recalculate Velocity"}) |
5362 | end |
5363 | -- |
5364 | local targetPrediction = Settings:Section({Name = "Prediction", Size = 330, Side = "Right"}) do |
5365 | targetPrediction:Toggle({Name = "Auto Prediction", Flag = "Auto Prediction"}) |
5366 | targetPrediction:Textbox({Name = "Prediction", Flag = "Manual Prediction Value", Placeholder = "Prediction"}) |
5367 | targetPrediction:Dropdown({Name = "Hit-Part", Flag = "Single Hit Part", Options = utility.bodyParts, Default = "HumanoidRootPart"}) |
5368 | targetPrediction:Toggle({Name = "Nearest Part", Flag = "Nearest Part"}) |
5369 | targetPrediction:Dropdown({Name = "Closest Hit Part", Flag = "Closest Hit Part", Options = utility.bodyParts, Default = {"HumanoidRootPart"}, Max = 9e9}) |
5370 | targetPrediction:Toggle({Name = "Jump Prediction", Flag = "Jump Prediction"}) |
5371 | targetPrediction:Textbox({Name = "Jump Prediction", Flag = "Manual Offset Value", Placeholder = "Jump Offset"}) |
5372 | targetPrediction:Dropdown({Name = "Air Hit-Part", Flag = "Air Hit Part", Options = utility.bodyParts, Default = "RightFoot"}) |
5373 | end |
5374 | -- |
5375 | local targetChecks = Settings:Section({Name = "Checks", Size = 330, Side = "Right"}) do |
5376 | targetChecks:Dropdown({Name = "Checks", Flag = "Silent Checks", Options = {"Knocked Check", "Wall Check", "Friend Check", "Grabbed Check"}, Max = 9e9}) |
5377 | end |
5378 | -- |
5379 | local targetAutoSelect = Settings:Section({Name = "Auto Select", Size = 330, Side = "Right"}) do |
5380 | targetAutoSelect:Toggle({Name = "Enabled", Flag = "Target Auto Select"}) |
5381 | targetAutoSelect:Slider({Name = "Delay", Suffix = "ms", Flag = 'Auto Select Delay', Min = 0, Max = 1000, Default = 100, Decimals = 1}) |
5382 | end |
5383 | -- |
5384 | local targetStrafe = Settings:Section({Name = "Target Strafe", Size = 330, Side = "Left"}) do |
5385 | targetStrafe:Toggle({Name = "Enabled", Flag = "Target Strafe Enabled", Risk = true}) |
5386 | targetStrafe:Slider({Name = "Radius", Flag = 'Target Strafe Distance', Min = -15, Max = 15, Default = 10, Decimals = 1}) |
5387 | targetStrafe:Slider({Name = "Speed", Flag = 'Target Strafe Speed', Min = -15, Max = 15, Default = 10, Decimals = 1}) |
5388 | targetStrafe:Slider({Name = "Height", Flag = 'Target Strafe Height', Min = -15, Max = 15, Default = 0, Decimals = 1}) |
5389 | end |
5390 | -- |
5391 | local targetVisuals = Visuals:Section({Name = "Visuals", Size = 330, Side = "Left"}) do |
5392 | local line1 = targetVisuals:Toggle({Name = "Line", Flag = "Line Enabled"}) |
5393 | line1:Colorpicker({Default = Color3.fromRGB(255,0,0), Flag = "Line Settings"}); |
5394 | targetVisuals:Slider({Name = "Thickness", Flag = 'Line Thickness', Min = 0, Max = 2, Default = 1, Decimals = 0.01, Callback = function(Int) |
5395 | utility.drawings["Tracer"].Thickness = Int |
5396 | end}) |
5397 | local highlight = targetVisuals:Toggle({Name = "Highlight", Flag = "Highlight Enabled"}) |
5398 | highlight:Colorpicker({Default = Color3.fromRGB(0,255,0), Alpha = 0.5, Flag = "Highlight Fill Color"}); |
5399 | highlight:Colorpicker({Default = Color3.fromRGB(0,125,0), Flag = "Highlight Outline Color"}); |
5400 | local backtrack = targetVisuals:Toggle({Name = "Backtrack", Flag = "Back Track Enabled"}) |
5401 | backtrack:Colorpicker({Default = Color3.fromRGB(255, 0, 0), alpha = 0.65, Flag = "Back Track Settings"}); |
5402 | targetVisuals:Dropdown({Name = "Method", Flag = "Back Track Method", Options = {"Clone", "Follow"}, Default = "Follow"}) |
5403 | targetVisuals:Dropdown({Name = "Material", Flag = "Back Track Material", Options = {"Neon", "Plastic", "ForceField"}, Default = "Neon"}) |
5404 | targetVisuals:Slider({Name = "Delay", Flag = 'Back Track Delay', Min = 0, Max = 1, Default = 1, Decimals = 0.05}) |
5405 | targetVisuals:Toggle({Name = "Target Esp", Flag = "Target Esp"}) |
5406 | end |
5407 | end |
5408 | -- // Legit |
5409 | local legit = Window:Page({Name = "Legit"}) do |
5410 | local Vertical; |
5411 | local Horizontal; |
5412 | local Smoothness; |
5413 | -- |
5414 | local aimAssist = legit:Section({Name = "Aim Assist", Size = 330}) do |
5415 | aimAssist:Toggle({Name = "Enabled", Flag = "Aim Assist"}):Keybind({Name = "Aim Assist", Flag = "Aim Assist Bind", Mode = "Toggle", Callback = function() |
5416 | aimAssistTarget = utility.target or utility:getClosestPlayerToCursor(math.huge) |
5417 | end}) -- portal is a fuckin g |
5418 | local Vertical = aimAssist:Slider({Name = "Horizontal Smoothness", Flag = "Horizontal Smoothness", Min = 0, Max = 100, Default = 20, Decimals = 1}) |
5419 | Vertical:SetVisible(false) |
5420 | local Horizontal = aimAssist:Slider({Name = "Vertical Smoothness", Flag = 'Vertical Smoothness', Min = 0, Max = 100, Default = 20, Decimals = 1}) |
5421 | Horizontal:SetVisible(false) |
5422 | local Smoothness = aimAssist:Slider({Name = "Smoothness", Flag = 'Smoothness', Min = 0, Max = 100, Default = 50, Decimals = 1}) |
5423 | aimAssist:Dropdown({Name = "Method", Flag = "Aim Assist Method", Options = {"Use Mouse", "Use Camera"}, Default = "Use Camera", Callback = function(Option) |
5424 | if Option == "Use Mouse" then |
5425 | Vertical:SetVisible(true) |
5426 | Horizontal:SetVisible(true) |
5427 | Smoothness:SetVisible(false) |
5428 | else |
5429 | Vertical:SetVisible(false) |
5430 | Horizontal:SetVisible(false) |
5431 | Smoothness:SetVisible(true) |
5432 | end |
5433 | end}) |
5434 | end |
5435 | -- |
5436 | local aimAssist_Settings = legit:Section({Name = "Settings", Size = 330}) do |
5437 | aimAssist_Settings:Dropdown({Name = "Hit-Part", Flag = "Aim Assist Single Hit Part", Options = utility.bodyParts, Default = "HumanoidRootPart"}) |
5438 | aimAssist_Settings:Toggle({Name = "Jump Prediction", Flag = "Aim Assist Jump Prediction"}) |
5439 | aimAssist_Settings:Textbox({Name = "Prediction", Flag = "Aim Assist Manual Prediction Value", Placeholder = "Prediction"}) |
5440 | aimAssist_Settings:Textbox({Name = "Jump Offset", Flag = "Aim Assist Manual Offset Value", Placeholder = "Jump Offset"}) |
5441 | end |
5442 | -- |
5443 | local aimAssistFov = legit:Section({Name = "Field Of View", Size = 330}) do |
5444 | aimAssistFov:Toggle({Name = "Enabled", Flag = "Aim Assist Field Of View", Callback = function(Bool) |
5445 | utility.drawings["Aim Assist FOV"].Visible = Bool |
5446 | end}):Colorpicker({Default = Color3.fromRGB(255, 0, 0), alpha = 0.65, Flag = "Field Of View Color", Callback = function() |
5447 | utility.drawings["Aim Assist FOV"].Color = flags["Field Of View Color"].Color |
5448 | utility.drawings["Aim Assist FOV"].Transparency = 1 - flags["Field Of View Color"].Transparency |
5449 | end}); |
5450 | aimAssistFov:Slider({Name = "Radius", Flag = 'Aim Assist Field Of View Radius', Min = 0.1, Max = 500, Default = 50, Decimals = 0.1, Callback = function(Int) |
5451 | utility.drawings["Aim Assist FOV"].Radius = Int |
5452 | end}) |
5453 | aimAssistFov:Toggle({Name = "Enabled", Flag = "Aim Assist Field Of View Filled", Callback = function(Bool) |
5454 | utility.drawings["Aim Assist FOV"].Filled = Bool |
5455 | end}) |
5456 | aimAssistFov:Slider({Name = "Thickness", Flag = 'Aim Assist Field Of View Thickness', Min = 0.1, Max = 3, Default = 1, Decimals = 0.01, Callback = function(Int) |
5457 | utility.drawings["Aim Assist FOV"].Thickness = Int |
5458 | end}) |
5459 | end |
5460 | -- |
5461 | local aimAssistChecks = legit:Section({Name = "Checks", Size = 330}) do |
5462 | aimAssistChecks:Dropdown({Name = "Checks", Flag = "Aim Assist Checks", Options = {"Knocked Check", "Wall Check", "Friend Check", "Grabbed Check"}, Max = 9e9}) |
5463 | end |
5464 | end |
5465 | -- // Esp |
5466 | local esp = Window:Page({Name = "Visuals", Weapons = true}) do |
5467 | local ESP = esp:Weapon({Icon = "rbxassetid://6034281935"}) |
5468 | local World = esp:Weapon({Icon = "rbxassetid://16997762295"}) |
5469 | -- |
5470 | local playerEsp = ESP:Section({Name = "Player Esp", Size = 330, Side = "Left"}) do |
5471 | playerEsp:Toggle({Name = "Enabled", Flag = "PlayerESP_Enabled", Callback = function(Bool) |
5472 | if Bool then |
5473 | for i,v in next, Players:GetPlayers() do |
5474 | if v ~= LocalPlayer and not Visuals.Bases[v] then |
5475 | Visuals:Create({Player = v}) |
5476 | end |
5477 | end |
5478 | else |
5479 | Visuals:Unload() |
5480 | end |
5481 | end}) |
5482 | playerEsp:Slider({Name = "Distance", Flag = 'ESP Distance', Min = 0, Max = 5000, Default = 5000, Decimals = 5}) |
5483 | local box = playerEsp:Toggle({Name = "Boxes", Flag = "PlayerESP_Box"}) |
5484 | box:Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "PlayerESP_Box_Color1"}); |
5485 | box:Colorpicker({Default = Color3.fromRGB(0, 0, 0), Flag = "PlayerESP_Box_Color2"}); |
5486 | playerEsp:Toggle({Name = "Box-Fill", Flag = "PlayerESP_BoxFill"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Transparency = 0.7, Flag = "PlayerESP_BoxFill_Color"}); |
5487 | playerEsp:Dropdown({Name = "Box Type", Flag = "PlayerESP_Box_Type", Options = {"Bounding", "Corner"}, Default = "Bounding"}) |
5488 | playerEsp:Toggle({Name = "Name", Flag = "PlayerESP_Name"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "PlayerESP_Name_Color"}); |
5489 | playerEsp:Toggle({Name = "Weapons", Flag = "PlayerESP_Weapon"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "PlayerESP_Weapon_Color"}); |
5490 | playerEsp:Toggle({Name = "Flags", Flag = "PlayerESP_Flags"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "PlayerESP_FlagsColor"}); |
5491 | playerEsp:Dropdown({Name = "Flags", Flag = "PlayerESP_Flag_Options", Options = {"Distance", "Knocked"}, Max = 9e9}) |
5492 | playerEsp:Toggle({Name = "Gun Icons", Flag = "PlayerESP_GunIcons"}) |
5493 | local highlight = playerEsp:Toggle({Name = "Chams", Flag = "PlayerESP_Highlights"}) |
5494 | highlight:Colorpicker({Default = Color3.fromHex("#7D0DC3"), Transparency = 0.7, Flag = "PlayerESP_HighlightFillSettings"}); |
5495 | highlight:Colorpicker({Default = Color3.new(0,0,0), Flag = "PlayerESP_HighlightOutlineSettings"}); |
5496 | end |
5497 | -- |
5498 | local Properties = ESP:Section({Name = "Properties", Size = 330, Side = "Left"}) |
5499 | local health = Properties:Toggle({Name = "Health Bar", Flag = "PlayerESP_HealthBar"}) |
5500 | health:Colorpicker({Default = Color3.fromRGB(0,255,0), Flag = "PlayerESP_HealthBar_Color_Higher"}); |
5501 | health:Colorpicker({Default = Color3.fromRGB(255,0,0), Flag = "PlayerESP_HealthBar_Color_Low"}); |
5502 | Properties:Toggle({Name = "Health Number", Flag = "PlayerESP_HealthNumber"}) |
5503 | Properties:Toggle({Name = "Armor Bar", Flag = "PlayerESP_ArmorBar"}):Colorpicker({Default = Color3.fromRGB(0,0,255), Flag = "PlayerESP_ArmorBarColor"}); |
5504 | -- |
5505 | local selfEsp = ESP:Section({Name = "Self Esp", Size = 330, Side = "Right"}) do |
5506 | selfEsp:Toggle({Name = "Enabled", Flag = "Self_PlayerESP_Enabled", Callback = function(Bool) |
5507 | if Bool then |
5508 | Visuals:Create({Player = LocalPlayer}) |
5509 | else |
5510 | Visuals.Bases[LocalPlayer]:Remove() |
5511 | end |
5512 | end}) |
5513 | selfEsp:Slider({Name = "Distance", Flag = 'Self_ESP Distance', Min = 0, Max = 5000, Default = 5000, Decimals = 5}) |
5514 | local box = selfEsp:Toggle({Name = "Boxes", Flag = "Self_PlayerESP_Box"}) |
5515 | selfEsp:Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Self_PlayerESP_Box_Color1"}); |
5516 | selfEsp:Colorpicker({Default = Color3.fromRGB(0, 0, 0), Flag = "Self_PlayerESP_Box_Color2"}); |
5517 | selfEsp:Toggle({Name = "Box-Fill", Flag = "Self_PlayerESP_BoxFill"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Transparency = 0.7, Flag = "Self_PlayerESP_BoxFill_Color"}); |
5518 | selfEsp:Toggle({Name = "Name", Flag = "Self_PlayerESP_Name"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Self_PlayerESP_Name_Color"}); |
5519 | selfEsp:Toggle({Name = "Weapons", Flag = "Self_PlayerESP_Weapon"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Self_PlayerESP_Weapon_Color"}); |
5520 | selfEsp:Toggle({Name = "Flags", Flag = "Self_PlayerESP_Flags"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Self_PlayerESP_FlagsColor"}); |
5521 | selfEsp:Dropdown({Name = "Flags", Flag = "Self_PlayerESP_Flag_Options", Options = {"Distance", "Knocked"}, Max = 9e9}) |
5522 | selfEsp:Toggle({Name = "Gun Icons", Flag = "Self_PlayerESP_GunIcons"}) |
5523 | local highlight = selfEsp:Toggle({Name = "Chams", Flag = "Self_PlayerESP_Highlights"}) |
5524 | highlight:Colorpicker({Default = Color3.fromHex("#7D0DC3"), Transparency = 0.7, Flag = "Self_PlayerESP_HighlightFillSettings"}); |
5525 | highlight:Colorpicker({Default = Color3.new(0,0,0), Flag = "Self_PlayerESP_HighlightOutlineSettings"}); |
5526 | end |
5527 | -- |
5528 | local selfEspProperties = ESP:Section({Name = "Properties", Size = 330, Side = "Right"}) do |
5529 | local health = selfEspProperties:Toggle({Name = "Health Bar", Flag = "Self_PlayerESP_HealthBar"}) |
5530 | health:Colorpicker({Default = Color3.fromRGB(0,255,0), Flag = "Self_PlayerESP_HealthBar_Color_Higher"}); |
5531 | health:Colorpicker({Default = Color3.fromRGB(255,0,0), Flag = "Self_PlayerESP_HealthBar_Color_Low"}); |
5532 | selfEspProperties:Toggle({Name = "Health Number", Flag = "Self_PlayerESP_HealthNumber"}) |
5533 | selfEspProperties:Toggle({Name = "Armor Bar", Flag = "Self_PlayerESP_ArmorBar"}):Colorpicker({Default = Color3.fromRGB(0,0,255), Flag = "Self_PlayerESP_ArmorBarColor"}); |
5534 | end |
5535 | -- seperate here |
5536 | local worldVisuals = World:Section({Name = "Lighting", Size = 330, Side = "Left"}) do |
5537 | worldVisuals:Toggle({Name = "Master Switch", Flag = "Master Switch", Callback = function() |
5538 | for i,v in pairs(Lighting_Save) do |
5539 | Lighting[i] = v |
5540 | end |
5541 | end}) |
5542 | worldVisuals:Toggle({Name = "Clock Time", Flag = "Clock Time Enabled"}) |
5543 | worldVisuals:Slider({Name = "Clock Time", Flag = 'Clock Time', Min = 0, Max = 24, Default = 12, Decimals = 0.1}) |
5544 | worldVisuals:Toggle({Name = "Color Shift Bottom", Flag = "Color Shift Bottom"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Color Shift Bottom Color"}); |
5545 | worldVisuals:Toggle({Name = "Ambient", Flag = "Ambient"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Ambience Color"}); |
5546 | worldVisuals:Toggle({Name = "Outdoor Ambience", Flag = "Outdoor Ambience"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Outdoor Ambience color"}); |
5547 | worldVisuals:Toggle({Name = "Brightness", Flag = "Brightness Enabled"}) |
5548 | worldVisuals:Slider({Name = "Brightness", Flag = 'Brightness', Min = 0, Max = 20, Default = 3, Decimals = 1}) |
5549 | worldVisuals:Toggle({Name = "Color Shift Top", Flag = "Color Shift Top"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Color Shift Top Color"}); |
5550 | worldVisuals:Toggle({Name = "Fog", Flag = "Fog"}):Colorpicker({Default = Color3.fromRGB(255, 255, 255), Flag = "Fog Color"}); |
5551 | end |
5552 | -- |
5553 | local bulletTracers = World:Section({Name = "Bullet Modification", Size = 330, Side = "Left"}) do |
5554 | bulletTracers:Toggle({Name = "Bullet Tracers", Flag = "Bullet Tracers"}):Colorpicker({Default = Color3.new(1,1,1), Flag = "Bullet Tracers Color"}); |
5555 | bulletTracers:Slider({Name = "Lifetime", Flag = 'Tracers Life Time', Min = 0, Max = 10, Default = 2, Decimals = 0.1}) |
5556 | bulletTracers:Toggle({Name = "Face Camera", Flag = "Face Camera", Default = true}) |
5557 | bulletTracers:Slider({Name = "Brightness", Flag = 'Bullet Brightness', Min = 0, Max = 20, Default = 6, Decimals = 1}) |
5558 | bulletTracers:Slider({Name = "Speed", Flag = 'Bullet Speed', Min = 0, Max = 20, Default = 3, Decimals = 0.01}) |
5559 | bulletTracers:Slider({Name = "Size", Flag = 'Bullet Size', Min = 1, Max = 20, Default = 1, Decimals = 0.01}) |
5560 | bulletTracers:Toggle({Name = "Bullet Impacts", Flag = "Bullet Impacts"}):Colorpicker({Default = Color3.new(1,1,1), Alpha = 0, Flag = "Bullet Impacts Color"}); |
5561 | bulletTracers:Slider({Name = "Size", Flag = 'Impact Size', Min = 0.01, Max = 5, Default = 0.25, Decimals = 0.01}) |
5562 | end |
5563 | -- |
5564 | local crosshairSection = World:Section({Name = "Crosshair", Size = 330, Side = "Right"}) do |
5565 | crosshairSection:Toggle({Name = "Crosshair", Flag = "Crosshair", Callback = function() |
5566 | for i = 1, #crosshair_Lines do |
5567 | crosshair_Lines[i].Visible = false; |
5568 | end |
5569 | -- |
5570 | for i = 1, #crosshair_Outlines do |
5571 | crosshair_Outlines[i].Visible = false; |
5572 | end |
5573 | end}):Colorpicker({Default = Color3.fromRGB(255,255,255), Flag = "Crosshair Color", Callback = function() |
5574 | for i = 1, #crosshair_Lines do |
5575 | crosshair_Lines[i].Color = flags["Crosshair Color"].Color; |
5576 | crosshair_Lines[i].Transparency = flags["Crosshair Color"].Transparency; |
5577 | end |
5578 | end}); |
5579 | crosshairSection:Toggle({Name = "Always Rotating", Flag = "Crosshair Always Rotating"}) |
5580 | crosshairSection:Slider({Name = "Speed", Flag = 'Crosshair Speed', Min = 0, Max = 24, Default = 12, Decimals = 0.1}) |
5581 | crosshairSection:Slider({Name = "Gap Size", Flag = 'Crosshair Gap Size', Min = 0, Max = 30, Default = 12, Decimals = 1}) |
5582 | crosshairSection:Slider({Name = "Length", Flag = 'Crosshair Length', Min = 0, Max = 30, Default = 12, Decimals = 1}) |
5583 | crosshairSection:Slider({Name = "Thickness", Flag = 'Crosshair Thickness', Min = 0.1, Max = 5, Default = 1.5, Decimals = 0.1, Callback = function(Int) |
5584 | for i = 1, #crosshair_Lines do |
5585 | crosshair_Lines[i].Thickness = Int; |
5586 | crosshair_Outlines[i].Thickness = Int; |
5587 | end |
5588 | end}) |
5589 | crosshairSection:Slider({Name = "Sides", Flag = 'Crosshair Sides', Min = 1, Max = 10, Default = 4, Decimals = 1, callback = function(Int) |
5590 | crosshair_LineAmount = Int |
5591 | -- |
5592 | crosshair_lineOffsets = utility:generateAngles(Int) |
5593 | -- |
5594 | for i = 1, #crosshair_Lines do |
5595 | crosshair_Lines[i]:Remove(); |
5596 | crosshair_Lines[i] = nil; |
5597 | end |
5598 | -- |
5599 | for i = 1, #crosshair_Outlines do |
5600 | crosshair_Outlines[i]:Remove(); |
5601 | crosshair_Outlines[i] = nil; |
5602 | end |
5603 | -- |
5604 | do |
5605 | for Index = 1, Int do |
5606 | local line = utility:drawObject("Line",{ |
5607 | Visible = false, |
5608 | Color = flags["Crosshair Color"].Color, |
5609 | Thickness = flags["Crosshair Thickness"], |
5610 | ZIndex = 2, |
5611 | Transparency = 1 |
5612 | }) |
5613 | -- |
5614 | crosshair_Lines[Index] = line |
5615 | -- |
5616 | local line_1 = utility:drawObject("Line",{ |
5617 | Visible = false, |
5618 | Color = Color3.fromRGB(0, 0, 0), |
5619 | Thickness = flags["Crosshair Thickness"] * 2.5, |
5620 | ZIndex = 1, |
5621 | Transparency = 1 |
5622 | }) |
5623 | -- |
5624 | crosshair_Outlines[Index] = line_1 |
5625 | end |
5626 | end |
5627 | end}) |
5628 | crosshairSection:Dropdown({Name = "Sizing Easing Style", Flag = "Crosshair Sizing Easing Style", Options = {"Off", "Linear", "Cubic", "Quad", "Quart", "Quint", "Sine", "Exponential", "Back", "Bounce", "Elastic", "Circular"}, Default = "Off"}) |
5629 | crosshairSection:Dropdown({Name = "Speed Easing Style", Flag = "Crosshair Speed Easing Style", Options = {"Off", "Linear", "Cubic", "Quad", "Quart", "Quint", "Sine", "Exponential", "Back", "Bounce", "Elastic", "Circular"}, Default = "Off"}) |
5630 | crosshairSection:Toggle({Name = "Show Text", Flag = "Script Name", Callback = function(Bool) |
5631 | local sub = utility.drawings["Sub"] |
5632 | local domain = utility.drawings["Domain"] |
5633 | -- |
5634 | sub.Visible = Bool |
5635 | domain.Visible = Bool |
5636 | end}) |
5637 | crosshairSection:Toggle({Name = "Pulse", Flag = "Pulse"}) |
5638 | crosshairSection:Toggle({Name = "Attach to target", Flag = "Attach to target"}) |
5639 | end |
5640 | -- |
5641 | local ingameCrosshair = World:Section({Name = "In-Game Crosshair", Size = 330, Side = "Right"}) do |
5642 | ingameCrosshair:Toggle({Name = "Spinning", Flag = "In-Game Crosshair Spin", Callback = function() |
5643 | game:GetService("Players").LocalPlayer.PlayerGui.MainScreenGui.Aim.Rotation = 0 |
5644 | end}) |
5645 | ingameCrosshair:Slider({Name = "Speed", Flag = 'In-Game Crosshair Spin Speed', Min = 0, Max = 30, Default = 1, Decimals = 1}) |
5646 | ingameCrosshair:Toggle({Name = "Dont Show", Flag = "In-Game Crosshair Invisible"}) |
5647 | end |
5648 | end |
5649 | -- // Visuals |
5650 | local misc = Window:Page({Name = "Misc", Weapons = true}) do |
5651 | local Movement = misc:Weapon({Icon = "rbxassetid://6034509993"}) |
5652 | local Exploits = misc:Weapon({Icon = "rbxassetid://16997954488"}) |
5653 | local movementSection = Movement:Section({Name = "General", Size = 330}) do |
5654 | movementSection:Toggle({Name = "Speed", Flag = "Speed Enabled"}):Keybind({Name = "Speed", Flag = "Speed Key", Mode = "Toggle", Callback = function() |
5655 | if Chatting then return end |
5656 | end}) |
5657 | movementSection:Slider({Name = "Speed", Flag = 'Speed', Min = 0, Max = 100, Default = 20, Decimals = 1}) |
5658 | movementSection:Toggle({Name = "Fly", Flag = "Fly Enabled"}):Keybind({Name = "Fly", Flag = "Fly Key", Mode = "Toggle", Callback = function() |
5659 | if Chatting then return end |
5660 | LocalPlayer.Character.HumanoidRootPart.Anchored = false; |
5661 | end}) |
5662 | movementSection:Slider({Name = "Fly", Flag = 'Fly Speed', Min = 0, Max = 100, Default = 20, Decimals = 1}) |
5663 | end |
5664 | -- |
5665 | local hitEffects = Movement:Section({Name = "Hit Effects", Size = 330, Side = "Right"}) do |
5666 | hitEffects:Toggle({Name = "Hit Marker", Flag = "Hit Marker"}):Colorpicker({Default = Color3.fromRGB(255,255,255), Flag = "Hit Marker Settings"}); |
5667 | hitEffects:Toggle({Name = "3D Hit Marker", Flag = "3D Hit Marker"}):Colorpicker({Default = Color3.fromRGB(255,255,255), Flag = "3D Hit Marker Settings"}); |
5668 | hitEffects:Slider({Name = "Fading Time", Flag = 'Hit Markers Time', Min = 0.1, Max = 10.0, Default = 5.0, Decimals = 0.1}) |
5669 | hitEffects:Toggle({Name = "Hit Sounds", Flag = "Hit Sounds"}) |
5670 | hitEffects:Dropdown({Name = "Hit Sounds", Flag = "Hit Sounds Sound", Options = sfx_names, Default = "Neverlose"}) |
5671 | hitEffects:Slider({Name = "Volume", Flag = 'Hit Sounds Volume', Min = 0.1, Max = 10.0, Default = 5.0, Decimals = 0.1}) |
5672 | hitEffects:Slider({Name = "Pitch", Flag = 'Hit Sounds Pitch', Min = 0.1, Max = 10.0, Default = 1.0, Decimals = 0.1}) |
5673 | hitEffects:Toggle({Name = "Hit Effects", Flag = "Hit Effects"}):Colorpicker({Default = Color3.fromRGB(255,255,255), Flag = "Hit Effect Settings"}); |
5674 | hitEffects:Dropdown({Name = "Hit Effects", Flag = "Hit Effects Option", Options = {"Confetti", "Nova", "Sparkle"}, Default = "Confetti"}) |
5675 | hitEffects:Toggle({Name = "Hit Chams", Flag = "Hit Chams"}):Colorpicker({Default = Color3.fromRGB(255, 0, 0), Transparency = 0.8, Flag = "Hit Chams Settings"}); |
5676 | hitEffects:Dropdown({Name = "Material", Flag = "Hit Chams Material", Options = {"ForceField", "Neon", "Plastic"}, Default = "Neon"}) |
5677 | hitEffects:Slider({Name = "Fading Time", Flag = 'Hit Chams Fading Time', Min = 0.1, Max = 10.0, Default = 5.0, Decimals = 0.1}) |
5678 | hitEffects:Toggle({Name = "Hit-Logs", Flag = "Hit Notify"}) |
5679 | end |
5680 | -- |
5681 | local chatSpam = Movement:Section({Name = "Chat Spam", Size = 330, Side = "Left"}) do |
5682 | chatSpam:Toggle({Name = "Enabled", Flag = "Chat Spam"}) |
5683 | chatSpam:Dropdown({Name = "Type", Flag = "Chat Spam Type", Options = {"Lunar", "Scottish"}, Default = "Lunar"}) |
5684 | chatSpam:Slider({Name = "Delay", Flag = 'Chat Spam Delay', Suffix = "s", Min = 0.1, Max = 10.0, Default = 5.0, Decimals = 0.1}) |
5685 | chatSpam:Toggle({Name = "Emojis", Flag = "Emojis"}) |
5686 | chatSpam:Toggle({Name = "Symbols", Flag = "Symbol"}) |
5687 | chatSpam:Toggle({Name = "Repeat", Flag = "Repeat"}) |
5688 | end |
5689 | -- |
5690 | local characterMods = Movement:Section({Name = "Character", Size = 330, Side = "Left"}) do |
5691 | characterMods:Toggle({Name = "Remove Chairs", Flag = "Remove Chairs", Callback = function(Bool) |
5692 | for i,v in pairs(Workspace:GetDescendants()) do |
5693 | if v:IsA("Seat") then |
5694 | v.Disabled = Bool |
5695 | end |
5696 | end |
5697 | end}) |
5698 | characterMods:Toggle({Name = "No Slow", Flag = "No Slow"}) |
5699 | characterMods:Toggle({Name = "Auto Reload", Flag = "Auto Reload"}) |
5700 | characterMods:Toggle({Name = "Auto Armor", Flag = "Auto Armor"}) |
5701 | characterMods:Toggle({Name = "Anti Void Kill", Flag = "Anti Void Kill", Callback = function(Bool) |
5702 | Workspace.FallenPartsDestroyHeight = Bool and -50000 or -500 |
5703 | end}) |
5704 | end |
5705 | -- |
5706 | local cframeDesync = Exploits:Section({Name = "Desync", Size = 330, Side = "Left"}) do |
5707 | local customSliders, strafeSliders, randomSliders = {}, {}, {} |
5708 | cframeDesync:Toggle({Name = "Enabled", Flag = "Desync"}):Keybind({Name = "Desync Key", Flag = "Desync Key", Mode = "Toggle", Callback = function() |
5709 | if flags["Desync Key"] == false and C_Desync["OldPosition"] then |
5710 | LocalPlayer.Character.HumanoidRootPart.CFrame = C_Desync["OldPosition"] |
5711 | C_Desync["OldPosition"] = nil |
5712 | end |
5713 | end}) |
5714 | local Vis = cframeDesync:Toggle({Name = "Visualize", Flag = "Desync Visualize"}); Vis:Colorpicker({Default = Color3.fromRGB(0,0,0), Flag = "Desync Visualize Outline", Alpha = 0}); Vis:Colorpicker({Default = Color3.fromHex("#7D0DC3"), Flag = "Desync Visualize Fill", Alpha = 0.7}); |
5715 | cframeDesync:Toggle({Name = "Attach onto target", Flag = "Attach Target"}); |
5716 | cframeDesync:Dropdown({Name = "Type", Flag = "Desync Type", Options = {"Custom", "Random", "Target Strafe", "Roll"}, Default = "Target Strafe", Callback = function(Option) |
5717 | if #customSliders ~= 0 then |
5718 | for _,v in pairs(customSliders) do v:SetVisible(Option == "Custom" and true or false) end; for _,v in pairs(strafeSliders) do v:SetVisible(Option == "Target Strafe" and true or false) end; for _,v in pairs(randomSliders) do v:SetVisible(Option == "Random" and true or false) end |
5719 | end |
5720 | end}) |
5721 | -- // Dropdown Sliders |
5722 | do |
5723 | local _ = cframeDesync:Slider({Name = "Position X", Flag = 'Desync X', Min = -15, Max = 15, Default = 0, Decimals = 1, Suffix = "m"}) table.insert(customSliders, _) |
5724 | local _ = cframeDesync:Slider({Name = "Position Y", Flag = 'Desync Y', Min = -15, Max = 15, Default = 0, Decimals = 1, Suffix = "m"}) table.insert(customSliders, _) |
5725 | local _ = cframeDesync:Slider({Name = "Position Z", Flag = 'Desync Z', Min = -15, Max = 15, Default = 0, Decimals = 1, Suffix = "m"}) table.insert(customSliders, _) |
5726 | -- |
5727 | local _ = cframeDesync:Slider({Name = "Rotation X", Flag = 'Rotation X', Min = -180, Max = 180, Default = 0, Decimals = 1, Suffix = "°"}) table.insert(customSliders, _) |
5728 | local _ = cframeDesync:Slider({Name = "Rotation Y", Flag = 'Rotation Y', Min = -180, Max = 180, Default = 0, Decimals = 1, Suffix = "°"}) table.insert(customSliders, _) |
5729 | local _ = cframeDesync:Slider({Name = "Rotation Z", Flag = 'Rotation Z', Min = -180, Max = 180, Default = 0, Decimals = 1, Suffix = "°"}) table.insert(customSliders, _) |
5730 | -- |
5731 | local _ = cframeDesync:Slider({Name = "Radius", Flag = 'Desync Strafe Radius', Min = -15, Max = 15, Default = 10, Decimals = 1, Suffix = "m"}) table.insert(strafeSliders, _) |
5732 | local _ = cframeDesync:Slider({Name = "Speed", Flag = 'Desync Strafe Speed', Min = -15, Max = 15, Default = 10, Decimals = 1, Suffix = "m/s"}) table.insert(strafeSliders, _) |
5733 | local _ = cframeDesync:Slider({Name = "Height", Flag = 'Desync Strafe Height', Min = -15, Max = 15, Default = 0, Decimals = 1, Suffix = "m"}) table.insert(strafeSliders, _) |
5734 | -- |
5735 | local _ = cframeDesync:Slider({Name = "Random Range", Flag = 'Desync Random Range', Min = 0, Max = 50, Default = 0, Decimals = 1, Suffix = "st"}) table.insert(randomSliders, _) |
5736 | -- |
5737 | for _,v in pairs(customSliders) do v:SetVisible(false) end |
5738 | for _,v in pairs(strafeSliders) do v:SetVisible(true) end |
5739 | for _,v in pairs(randomSliders) do v:SetVisible(false) end |
5740 | end |
5741 | end |
5742 | -- |
5743 | local invisDesync = Exploits:Section({Name = "Exploits", Size = 330, Side = "Right"}) do |
5744 | local loop; |
5745 | invisDesync:Toggle({Name = "Invis Desync", Flag = "Invis Desync"}):Keybind({Name = "Invisible Desync", Flag = "Invis Desync Key", Mode = "Toggle", Callback = function() |
5746 | if flags["Invis Desync"] and flags["Invis Desync Key"] then |
5747 | if flags["Invis Desync Key"] then |
5748 | setfflag("S2PhysicsSenderRate", 2) |
5749 | loop = RunService.Heartbeat.Connect(RunService.Heartbeat, framework.desyncInit); |
5750 | end |
5751 | else |
5752 | -- skibidi sigma rizz |
5753 | if loop then |
5754 | loop:Disconnect() |
5755 | loop = nil |
5756 | setfflag("S2PhysicsSenderRate", 15) |
5757 | end |
5758 | end |
5759 | end}) |
5760 | -- |
5761 | invisDesync:Toggle({Name = "Destroy Cheaters", Flag = "Destroy Cheaters"}):Keybind({Name = "Destroy Cheaters", Flag = "Destroy Cheaters Key", Mode = "Toggle"}) |
5762 | flags["Destroy Cheaters Key"] = true |
5763 | end |
5764 | -- |
5765 | local fastFlags = Exploits:Section({Name = "Fast Flags", Size = 330, Side = "Right"}) do |
5766 | fastFlags:Toggle({Name = "Enabled", Flag = "Fast Flags", Callback = function() |
5767 | setfflag("S2PhysicsSenderRate", 15) |
5768 | end}) |
5769 | fastFlags:Slider({Name = "Amount", Flag = 'Fast Flags Amount', Min = 1, Max = 15, Default = 2, Decimals = 0.01}) |
5770 | -- |
5771 | fastFlags:Toggle({Name = "Network Desync", Flag = "Network Desync", Callback = function() |
5772 | sethiddenproperty(LocalPlayer.Character.HumanoidRootPart, "NetworkIsSleeping", false) |
5773 | end}) |
5774 | fastFlags:Slider({Name = "Delay", Flag = 'Network Delay', Suffix = "s", Min = 0.01, Max = 15, Default = 2, Decimals = 0.01}) |
5775 | end |
5776 | end |
5777 | -- // Settings |
5778 | local Config = Window:Page({Name = "Settings"}) do |
5779 | local Menu = Config:Section({Name = "Menu", Size = 120}) |
5780 | local Cfgs = Config:Section({Name = "Configs", Size = 200, Side = "Right"}) |
5781 | -- |
5782 | local abc = false |
5783 | Menu:Keybind({Name = "Menu key", Flag = "MenuKey", Default = Enum.KeyCode.End, Mode = "Toggle", Callback = function() abc = not abc Library:SetOpen(abc) end}) |
5784 | Menu:Dropdown({Name = "Notification Position", Flag = "Notification Position", Options = {"Top Left", "Middle"}, Default = "Top Left"}) |
5785 | Menu:Label({Centered = true, Name = "Credits: \nPortal : User Interface"}) |
5786 | -- |
5787 | local CFGList = Cfgs:Dropdown({Name = "Cfg List", Flag = "SettingConfigurationList", Options = {}}) |
5788 | Cfgs:Textbox({Flag = "SettingsConfigurationName", Placeholder = "Config name"}) |
5789 | -- |
5790 | local CurrentList = {}; |
5791 | if not isfolder("Lunar") then |
5792 | makefolder("Lunar") |
5793 | end |
5794 | if not isfolder("Lunar/Configs") then |
5795 | makefolder("Lunar/Configs") |
5796 | end |
5797 | local function UpdateConfigList() |
5798 | local List = {}; |
5799 | for idx, file in ipairs(listfiles("Lunar/Configs")) do |
5800 | local FileName = file:gsub("Lunar/Configs\\", ""):gsub(".cfg", "") |
5801 | List[#List + 1] = FileName; |
5802 | end; |
5803 | |
5804 | local IsNew = #List ~= #CurrentList |
5805 | if not IsNew then |
5806 | for idx, file in ipairs(List) do |
5807 | if file ~= CurrentList[idx] then |
5808 | IsNew = true; |
5809 | break; |
5810 | end; |
5811 | end; |
5812 | end; |
5813 | |
5814 | if IsNew then |
5815 | CurrentList = List; |
5816 | CFGList:Refresh(CurrentList); |
5817 | end; |
5818 | end; |
5819 | -- |
5820 | Cfgs:Button({Name = "Create", Callback = function() |
5821 | local ConfigName = flags.SettingsConfigurationName; |
5822 | if ConfigName == "" or isfile("Lunar/Configs/" .. ConfigName .. ".cfg") then |
5823 | return; |
5824 | end; |
5825 | writefile("Lunar/Configs/" .. ConfigName .. ".cfg", Library:GetConfig()); |
5826 | UpdateConfigList(); |
5827 | end}) |
5828 | Cfgs:Button({Name = "Save", Callback = function() |
5829 | local SelectedConfig = flags.SettingConfigurationList; |
5830 | if SelectedConfig then |
5831 | writefile("Lunar/Configs/" .. SelectedConfig .. ".cfg", Library:GetConfig()) |
5832 | end; |
5833 | end}) |
5834 | Cfgs:Button({Name = "Load", Callback = function() |
5835 | local SelectedConfig = flags.SettingConfigurationList; |
5836 | if SelectedConfig then |
5837 | Library:LoadConfig(readfile("Lunar/Configs/" .. SelectedConfig .. ".cfg")) |
5838 | end |
5839 | end}) |
5840 | Cfgs:Button({Name = "Delete", Callback = function() |
5841 | local SelectedConfig = flags.SettingConfigurationList; |
5842 | if SelectedConfig then |
5843 | delfile("Lunar/Configs/" .. SelectedConfig .. ".cfg") |
5844 | end |
5845 | UpdateConfigList(); |
5846 | end}) |
5847 | Cfgs:Button({Name = "Refresh", Callback = function() |
5848 | UpdateConfigList(); |
5849 | end}) |
5850 | Cfgs:Toggle({Name = "Keybind List", Flag = "Keybind List", Callback = function(Bool) |
5851 | PlaceHolderUI.Enabled = Bool |
5852 | end}) |
5853 | UpdateConfigList(); |
5854 | end |
5855 | end |
5856 | |
5857 | -- // Framework |
5858 | do |
5859 | getgenv().offset = nil; |
5860 | local Origin; |
5861 | local Position, OnScreen, PreviousGun, PreviousAmmo, Sine, Radians = nil, nil, nil, nil, 0, 1; |
5862 | local NetworkTick, Networking = 0, false; |
5863 | local chatTick = 0; |
5864 | -- // Loops |
5865 | do |
5866 | framework["connections"]["Main Loop"] = RunService.Heartbeat:Connect(LPH_NO_VIRTUALIZE(function(Fps) |
5867 | -- // Framework Calls |
5868 | do |
5869 | framework:aimAssist() |
5870 | framework:worldVisuals() |
5871 | end |
5872 | --// Auto Armor |
5873 | do |
5874 | if flags["Auto Armor"] then |
5875 | if LocalPlayer.Character.BodyEffects.Armor.Value < 100 then |
5876 | local Pos = LocalPlayer.Character.HumanoidRootPart.CFrame |
5877 | LocalPlayer.Character.HumanoidRootPart.CFrame = workspace.Ignored.Shop["[High-Medium Armor] - $2440"].Head.CFrame |
5878 | fireclickdetector(workspace.Ignored.Shop["[High-Medium Armor] - $2440"].ClickDetector) |
5879 | RunService.RenderStepped:Wait() |
5880 | LocalPlayer.Character.HumanoidRootPart.CFrame = Pos |
5881 | end |
5882 | end |
5883 | end |
5884 | -- // No Slow Down |
5885 | do |
5886 | if flags["No Slow"] then |
5887 | if LocalPlayer.Character.BodyEffects.Reload.Value then |
5888 | LocalPlayer.Character.BodyEffects.Reload.Value = false |
5889 | end |
5890 | -- |
5891 | local Slowdowns = LocalPlayer.Character.BodyEffects.Movement:FindFirstChild('NoJumping') or LocalPlayer.Character.BodyEffects.Movement:FindFirstChild('NoWalkSpeed') or LocalPlayer.Character.BodyEffects.Movement:FindFirstChild('ReduceWalk') |
5892 | if Slowdowns then |
5893 | Slowdowns:Destroy() |
5894 | end |
5895 | end |
5896 | end |
5897 | -- // Target Framework |
5898 | do |
5899 | if utility.target and utility:ValidateClient(utility.target) and flags["Silent_Bind"] then |
5900 | Position, OnScreen = Camera:WorldToViewportPoint(utility.target.Character.HumanoidRootPart.Position); |
5901 | prediction = framework:selectPrediction() |
5902 | -- |
5903 | if flags["Target Auto Select"] then |
5904 | framework:autoSelect() |
5905 | end |
5906 | -- |
5907 | if flags["Resolver"] then |
5908 | offset = framework:calculateResolverOffset(utility.target); |
5909 | end |
5910 | -- |
5911 | if flags["Highlight Enabled"] then |
5912 | targetHighlight.Enabled = true |
5913 | targetHighlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop |
5914 | targetHighlight.FillColor = flags["Highlight Fill Color"].Color |
5915 | targetHighlight.OutlineColor = flags["Highlight Outline Color"].Color |
5916 | targetHighlight.Adornee = utility.target.Character |
5917 | targetHighlight.OutlineTransparency = flags["Highlight Outline Color"].Transparency |
5918 | targetHighlight.FillTransparency = flags["Highlight Fill Color"].Transparency |
5919 | else |
5920 | targetHighlight.Enabled = false |
5921 | end |
5922 | -- |
5923 | if flags["Nearest Part"] then |
5924 | partClosest = framework:calculateNearestPart(utility.target, flags["Closest Hit Part"]).Name |
5925 | end |
5926 | -- |
5927 | checks = framework:getChecks(utility.target, table.find(flags["Silent Checks"], "Friend Check"), table.find(flags["Silent Checks"], "Wall Check"), table.find(flags["Silent Checks"], "Knocked Check"), table.find(flags["Silent Checks"], "Grabbed Check")); |
5928 | -- |
5929 | if flags["Line Enabled"] then |
5930 | utility.drawings["Tracer"].Visible = OnScreen and true or false |
5931 | utility.drawings["Tracer"].From = NewVector2(Mouse.X, Mouse.Y + Offset) |
5932 | utility.drawings["Tracer"].To = NewVector2(Position.X, Position.Y) |
5933 | utility.drawings["Tracer"].Color = flags["Line Settings"].Color |
5934 | utility.drawings["Tracer"].Transparency = flags["Line Settings"].Transparency |
5935 | end |
5936 | -- |
5937 | if flags["Target Strafe Enabled"] then |
5938 | utility.angle = utility.angle + flags["Target Strafe Speed"] |
5939 | local strafe = utility.target.Character.HumanoidRootPart.CFrame * CFrame.Angles(0, math.rad(utility.angle), 0) * NewCFrame(0, flags["Target Strafe Height"], flags["Target Strafe Distance"]) |
5940 | -- |
5941 | LocalPlayer.Character.HumanoidRootPart.CFrame = strafe |
5942 | end |
5943 | -- |
5944 | if flags["Back Track Enabled"] and flags["Back Track Method"] == "Follow" then |
5945 | for _, Part in pairs(utility.folders["Part Chams"]:GetChildren()) do |
5946 | if Part:IsA("BasePart") and table.find(utility.bodyParts, Part.Name) then |
5947 | Part.Position = utility.target.Character[Part.Name].Position + utility.target.Character.HumanoidRootPart.Velocity * 0.1413 |
5948 | Part.Rotation = utility.target.Character[Part.Name].Rotation |
5949 | end |
5950 | end |
5951 | end |
5952 | -- |
5953 | if flags["Look At"] then |
5954 | LocalPlayer.Character.Humanoid.AutoRotate = false; |
5955 | local OldCframe = LocalPlayer.Character.PrimaryPart; |
5956 | local NearestRoot = utility.target.Character.HumanoidRootPart |
5957 | local NearestPos = NewCFrame(LocalPlayer.Character.PrimaryPart.Position, Vector3.new(NearestRoot.Position.X, OldCframe.Position.Y, NearestRoot.Position.Z)); |
5958 | LocalPlayer.Character:SetPrimaryPartCFrame(NearestPos); |
5959 | end |
5960 | -- |
5961 | if flags["Auto Shoot"] then |
5962 | local Tool = utility:getHeld(); |
5963 | if Tool then |
5964 | Tool:Activate() |
5965 | end |
5966 | end |
5967 | else |
5968 | -- |
5969 | if (utility.drawings["Tracer"].Visible == true) then |
5970 | utility.drawings["Tracer"].Visible = false |
5971 | end |
5972 | -- |
5973 | targetHighlight.Enabled = false |
5974 | end |
5975 | end |
5976 | -- // Anti Cheat Bypass |
5977 | do |
5978 | if tick() - antiCheattick > 1 and LocalPlayer.Character then |
5979 | antiCheattick = tick() |
5980 | -- |
5981 | for _, Script in pairs(LocalPlayer.Character:GetChildren()) do |
5982 | if Script:IsA("Script") and Script.Name ~= "Health" and Script.Name ~= "Sound" and Script:FindFirstChild("LocalScript") then |
5983 | Script:Destroy() |
5984 | end |
5985 | end |
5986 | end |
5987 | end |
5988 | -- // Movement |
5989 | do |
5990 | if LocalPlayer.Character and not (flags["Desync"] and flags["Desync Key"]) then |
5991 | framework:cframeSpeed() |
5992 | framework:fly(Fps) |
5993 | end |
5994 | end |
5995 | -- // Physics and Network shits |
5996 | do |
5997 | if flags["Fast Flags"] and getfflag("S2PhysicsSenderRate") ~= flags["Fast Flags Amount"] then |
5998 | setfflag("S2PhysicsSenderRate", flags["Fast Flags Amount"]) |
5999 | end |
6000 | -- |
6001 | if flags["Network Desync"] then |
6002 | if tick() - NetworkTick > flags["Network Delay"] then |
6003 | NetworkTick = tick() |
6004 | Networking = not Networking |
6005 | sethiddenproperty(LocalPlayer.Character.HumanoidRootPart, "NetworkIsSleeping", Networking) |
6006 | end |
6007 | end |
6008 | end |
6009 | -- // Chat Spam |
6010 | do |
6011 | if flags["Chat Spam"] then |
6012 | if tick() - chatTick > flags["Chat Spam Delay"] then |
6013 | chatTick = tick() |
6014 | local Message = framework:chatSpam(flags["Chat Spam Type"], flags["Repeat"], flags["Emojis"], flags["Symbol"]) |
6015 | ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(Message, "All") |
6016 | end |
6017 | end |
6018 | end |
6019 | end)) |
6020 | framework["connections"]["Desync"] = RunService.Heartbeat:Connect(LPH_NO_VIRTUALIZE(function(delta) |
6021 | -- // Desync |
6022 | do |
6023 | if ((flags["Desync"] and flags["Desync Key"]) or (flags["Destroy Cheaters"] and flags["Destroy Cheaters Key"]) and LocalPlayer.Character) then |
6024 | C_Desync["OldPosition"] = LocalPlayer.Character.HumanoidRootPart.CFrame |
6025 | local Origin = (flags["Attach Target"] and checks and utility.target and utility.target.Character and utility.target.Character.HumanoidRootPart) or LocalPlayer.Character.HumanoidRootPart |
6026 | local randomRange = flags["Desync Random Range"] |
6027 | Radians += flags["Desync Strafe Speed"] |
6028 | local calculatedPositions = { |
6029 | ["Random"] = (NewCFrame(Origin.Position) + Vector3.new(Random(-randomRange, randomRange), Random(-randomRange, randomRange), Random(-randomRange, randomRange))) * CFrame.Angles(Rad(Random(-180, 180)), Rad(Random(-180, 180)), Rad(Random(-180, 180))), |
6030 | ["Roll"] = Origin.CFrame * NewCFrame(0, -4 ,0) * CFrame.Angles(0, Rad(Random(1, 360)), Rad(-180)), |
6031 | ["Target Strafe"] = Origin.CFrame * CFrame.Angles(0, Rad(Radians), 0) * NewCFrame(0, flags["Desync Strafe Height"], flags["Desync Strafe Radius"]), |
6032 | ["Custom"] = Origin.CFrame * NewCFrame(flags["Desync X"], flags["Desync Y"], flags["Desync Z"]) * CFrame.Angles(Rad(flags["Rotation X"]), Rad(flags["Rotation Y"]), Rad(flags["Rotation Z"])), |
6033 | ["Destroy Cheaters"] = Origin.CFrame * NewCFrame(9e9, 0/0, math.huge) |
6034 | } |
6035 | -- |
6036 | C_Desync["PredictedPosition"] = flags["Destroy Cheaters"] and flags["Destroy Cheaters Key"] and calculatedPositions["Destroy Cheaters"] or calculatedPositions[flags["Desync Type"]] |
6037 | -- |
6038 | LocalPlayer.Character.HumanoidRootPart.CFrame = C_Desync["PredictedPosition"] |
6039 | -- |
6040 | if flags["Desync Visualize"] then |
6041 | bodyClone:SetPrimaryPartCFrame(LocalPlayer.Character.HumanoidRootPart.CFrame) |
6042 | visualizeChams.FillColor = flags["Desync Visualize Fill"].Color; |
6043 | visualizeChams.FillTransparency = flags["Desync Visualize Fill"].Transparency; |
6044 | visualizeChams.OutlineColor = flags["Desync Visualize Outline"].Color; |
6045 | visualizeChams.OutlineTransparency = flags["Desync Visualize Outline"].Transparency; |
6046 | end |
6047 | -- |
6048 | game:GetService("RunService").RenderStepped:Wait() |
6049 | -- |
6050 | LocalPlayer.Character.HumanoidRootPart.CFrame = C_Desync["OldPosition"] |
6051 | -- |
6052 | framework:cframeSpeed() |
6053 | framework:fly(delta) |
6054 | else |
6055 | bodyClone:SetPrimaryPartCFrame(NewCFrame(9999,9999,9999)) |
6056 | end |
6057 | end |
6058 | end)) |
6059 | framework["connections"]["ESP Loop"] = RunService.RenderStepped:Connect(LPH_NO_VIRTUALIZE(function(Fps) |
6060 | for Index, Base in pairs(Visuals.Bases) do |
6061 | Base:Update() |
6062 | end |
6063 | -- // Crosshair Visuals |
6064 | do |
6065 | crosshair_SpinAngle = flags["Crosshair Always Rotating"] and crosshair_SpinAngle + math.rad((flags["Crosshair Speed"] * 10) * Fps) or 0; |
6066 | -- // Crosshair |
6067 | do |
6068 | if flags["Crosshair"] then |
6069 | local Radius = flags["Crosshair Length"] * 5 |
6070 | local Gap = flags["Crosshair Gap Size"] |
6071 | -- |
6072 | if flags["Attach to target"] and utility.target ~= nil and utility.target.Character and OnScreen then |
6073 | Origin = NewVector2(Position.X, Position.Y) |
6074 | else |
6075 | Origin = NewVector2(Mouse.X, Mouse.Y + Offset) |
6076 | end |
6077 | -- |
6078 | CursorSize += 0.025 |
6079 | -- |
6080 | local SmoothAngle = flags["Crosshair Speed Easing Style"] ~= "Off" and Tween.EasingStyles[Enum.EasingStyle[flags["Crosshair Speed Easing Style"]]][Enum.EasingDirection.InOut](utility:Shift(crosshair_SpinAngle)) * (Pi * Pi/2) or crosshair_SpinAngle |
6081 | local Dynamic = Cos(CursorSize) |
6082 | local SmoothSize = flags["Crosshair Sizing Easing Style"] ~= "Off" and ((Radius / 2) * (Tween.EasingStyles[Enum.EasingStyle[flags["Crosshair Sizing Easing Style"]]][Enum.EasingDirection.In](utility:Shift(Dynamic)))) or 0 |
6083 | local localRadius = Radius - SmoothSize |
6084 | -- |
6085 | for i = 1, #crosshair_Lines do |
6086 | local Positions = NewVector2(Cos(SmoothAngle + crosshair_lineOffsets[i]), (Sin(SmoothAngle + crosshair_lineOffsets[i]))) |
6087 | -- |
6088 | crosshair_Lines[i].From = Origin + NewVector2(Positions.X, Positions.Y) * Gap |
6089 | crosshair_Lines[i].To = crosshair_Lines[i].From + NewVector2(Positions.X, Positions.Y) * localRadius |
6090 | -- |
6091 | crosshair_Outlines[i].From = Origin + NewVector2(Positions.X, Positions.Y) * (Gap - 1) |
6092 | crosshair_Outlines[i].To = crosshair_Lines[i].From + NewVector2(Positions.X, Positions.Y) * (localRadius + 1) |
6093 | -- |
6094 | crosshair_Lines[i].Visible = true |
6095 | crosshair_Outlines[i].Visible = true |
6096 | end |
6097 | end |
6098 | end |
6099 | -- // Crosshair Text |
6100 | do |
6101 | if flags["Script Name"] then |
6102 | local sub = utility.drawings["Sub"] |
6103 | local domain = utility.drawings["Domain"] |
6104 | -- |
6105 | local yOffset = flags["Crosshair"] and ((flags["Crosshair Length"] * 5) + flags["Crosshair Gap Size"]) or 30 |
6106 | -- |
6107 | local textOrigin; |
6108 | if flags["Attach to target"] and utility.target ~= nil and utility.target.Character and OnScreen then |
6109 | textOrigin = NewVector2(Position.X - 23, Position.Y + yOffset) |
6110 | else |
6111 | textOrigin = NewVector2(Mouse.X - 23, Mouse.Y + Offset + yOffset) |
6112 | end |
6113 | -- |
6114 | sub.Visible = true |
6115 | domain.Visible = true |
6116 | -- |
6117 | sub.Position = textOrigin |
6118 | domain.Position = sub.Position + NewVector2(sub.TextBounds.X, 0) |
6119 | end |
6120 | -- |
6121 | if flags["Pulse"] and flags["Script Name"] then |
6122 | local sub = utility.drawings["Sub"] |
6123 | -- |
6124 | Sine = flags["Pulse"] and math.abs(math.sin(tick() * 4)) or 1 |
6125 | sub.Transparency = Sine |
6126 | end |
6127 | end |
6128 | -- // In-Game Crosshair Shit |
6129 | do |
6130 | if flags["In-Game Crosshair Spin"] and not flags["In-Game Crosshair Invisible"] then |
6131 | LocalPlayer.PlayerGui.MainScreenGui.Aim.Rotation += flags["In-Game Crosshair Spin Speed"] |
6132 | end |
6133 | -- |
6134 | if flags["In-Game Crosshair Invisible"] and LocalPlayer.PlayerGui.MainScreenGui.Aim.Visible == true then |
6135 | Players.LocalPlayer.PlayerGui.MainScreenGui.Aim.Visible = false |
6136 | end |
6137 | end |
6138 | end |
6139 | -- // Hit Detection |
6140 | do |
6141 | local Gun = LocalPlayer.Character:FindFirstChildWhichIsA("Tool") |
6142 | local Connection = framework["connections"]["Hit Detection"] |
6143 | |
6144 | if Gun ~= PreviousGun and Connection then |
6145 | PreviousGun = Gun |
6146 | PreviousAmmo = 999 |
6147 | Connection:Disconnect() |
6148 | framework["connections"]["Hit Detection"] = nil |
6149 | end |
6150 | |
6151 | if not framework["connections"]["Hit Detection"] and Gun and Gun.Ammo.Value then |
6152 | framework["connections"]["Hit Detection"] = Gun.Ammo:GetPropertyChangedSignal("Value"):Connect(function() |
6153 | local CurrentAmmo = Gun.Ammo.Value |
6154 | if CurrentAmmo < PreviousAmmo then |
6155 | local ChildrenAdded = 0; |
6156 | local ChildAdded; |
6157 | local IgnoreList = {LocalPlayer.Character, Gun.Handle}; |
6158 | ChildAdded = Workspace.Ignored.Siren.Radius.ChildAdded:Connect(function(Object) |
6159 | if Object.Name == "BULLET_RAYS" then |
6160 | ChildrenAdded += 1; |
6161 | if (table.find({"[Double-Barrel SG]", "[TacticalShotgun]", "[Shotgun]"}, Gun.Name) and ChildrenAdded <= 5) or (ChildrenAdded == 1) then |
6162 | local Pos = Object.CFrame.Position |
6163 | local LookVector = Object.CFrame.LookVector |
6164 | -- |
6165 | local RayCastParams = RaycastParams.new() |
6166 | RayCastParams.FilterType = Enum.RaycastFilterType.Exclude |
6167 | RayCastParams.IgnoreWater = true |
6168 | RayCastParams.FilterDescendantsInstances = IgnoreList |
6169 | local Ray = Workspace:Raycast(Pos, LookVector * 1000, RayCastParams) |
6170 | if not Ray then return end |
6171 | local HitPosition = Ray.Position |
6172 | local HitInstance = Ray.Instance |
6173 | -- |
6174 | delay(0.001, function() |
6175 | if flags["Bullet Tracers"] then |
6176 | Object:Destroy() |
6177 | utility:CreateBeam(Pos, HitPosition, flags["Bullet Tracers Color"].Color, flags["Face Camera"], flags["Bullet Size"], flags["Bullet Speed"], flags["Bullet Brightness"]) |
6178 | end |
6179 | -- |
6180 | if flags["Bullet Impacts"] then |
6181 | local Impact = Instance.new("Part") |
6182 | Impact.Anchored = true |
6183 | Impact.CanCollide = false |
6184 | Impact.Parent = game.Workspace |
6185 | Impact.Material = "Neon" |
6186 | Impact.Shape = Enum.PartType.Block |
6187 | Impact.Transparency = flags["Bullet Impacts Color"].Transparency |
6188 | Impact.Color = flags["Bullet Impacts Color"].Color |
6189 | Impact.Size = NewVector3(flags["Impact Size"], flags["Impact Size"], flags["Impact Size"]) |
6190 | Impact.CFrame = NewCFrame(HitPosition) |
6191 | delay(3, function() |
6192 | Impact:Destroy() |
6193 | end) |
6194 | end |
6195 | -- |
6196 | if HitInstance then |
6197 | local InstanceHit = HitInstance:FindFirstAncestorOfClass('Model') |
6198 | if not InstanceHit then return end |
6199 | |
6200 | if InstanceHit:FindFirstChild("Humanoid") and InstanceHit:FindFirstChild("HumanoidRootPart") then |
6201 | if flags["Hit Sounds"] then |
6202 | HitReg:HitSound(sfx[flags["Hit Sounds Sound"]], flags["Hit Sounds Volume"], flags["Hit Sounds Pitch"]) |
6203 | end |
6204 | -- |
6205 | if flags["Hit Chams"] then |
6206 | local Model = Instance.new("Model", utility.folders["Hit Chams"]) |
6207 | utility:characterClone(Players[InstanceHit.Name], flags["Hit Chams Settings"].Color, flags["Hit Chams Material"], flags["Hit Chams Settings"].Transparency, Model); |
6208 | delay(flags["Hit Chams Fading Time"], function() |
6209 | Model:Destroy() |
6210 | end) |
6211 | end |
6212 | -- |
6213 | if flags["Hit Notify"] then |
6214 | local Text = string.format("You Hit %s in the %s!", Players[InstanceHit.Name].Name, HitInstance.Name) |
6215 | Library:Notification(Text, 3, Library.Accent, flags["Notification Position"]) |
6216 | end |
6217 | -- |
6218 | if flags["Hit Marker"] then |
6219 | HitReg:HitMarker(4, flags["Hit Marker Settings"].Color, flags["Hit Markers Time"]) |
6220 | end |
6221 | -- |
6222 | if flags["3D Hit Marker"] then |
6223 | HitReg:HitMarker3D(4, flags["3D Hit Marker Settings"].Color, flags["Hit Markers Time"], HitPosition) |
6224 | end |
6225 | -- |
6226 | if flags["Hit Effects"] then |
6227 | HitReg:HitEffect(flags["Hit Effects Option"], Players[InstanceHit.Name].Character) |
6228 | end |
6229 | end |
6230 | end |
6231 | ChildAdded:Disconnect() |
6232 | end) |
6233 | end |
6234 | else |
6235 | ChildAdded:Disconnect() |
6236 | end |
6237 | end) |
6238 | end |
6239 | PreviousAmmo = CurrentAmmo |
6240 | end) |
6241 | end |
6242 | end |
6243 | end)) |
6244 | framework["connections"]["Typing Check"] = InputService.InputBegan:Connect(function(_, Chatting) |
6245 | Typing = Chatting |
6246 | end) |
6247 | framework["connections"]["Text"] = InputService.InputChanged:Connect(function(_) |
6248 | if utility.drawings["Aim Assist FOV"].Visible then |
6249 | utility.drawings["Aim Assist FOV"].Position = NewVector2(Mouse.X, Mouse.Y + Offset) |
6250 | end |
6251 | end) |
6252 | framework["connections"]["ESP Player Find Loop"] = Players.PlayerAdded:Connect(LPH_NO_VIRTUALIZE(function(Player) |
6253 | if flags["PlayerESP_Enabled"] then |
6254 | Visuals:Create({Player = Player}) |
6255 | end |
6256 | end)) |
6257 | end |
6258 | -- // Gun Handling |
6259 | do |
6260 | local function Aimbot() |
6261 | utility:calculateAimViewerEndPoint() |
6262 | end |
6263 | -- |
6264 | local function Ammo() |
6265 | framework:autoReload() |
6266 | end |
6267 | -- |
6268 | framework["connections"]["Anti Aim Viewer"] = {} |
6269 | framework["connections"]["auto reload >_< :3"] = {} |
6270 | for i, v in pairs(LocalPlayer.Backpack:GetChildren()) do |
6271 | if v:IsA("Tool") and v:FindFirstChild("Ammo") then |
6272 | if not framework["connections"]["Anti Aim Viewer"][v] then |
6273 | framework["connections"]["Anti Aim Viewer"][v] = v.Activated:Connect(Aimbot) |
6274 | end |
6275 | -- |
6276 | if not framework["connections"]["auto reload >_< :3"][v] then |
6277 | framework["connections"]["auto reload >_< :3"][v] = v.Ammo:GetPropertyChangedSignal("Value"):Connect(Ammo) |
6278 | end |
6279 | end |
6280 | end |
6281 | for i, v in pairs(LocalPlayer.Character:GetChildren()) do |
6282 | if v:IsA("Tool") and v:FindFirstChild("Ammo") then |
6283 | if not framework["connections"]["Anti Aim Viewer"][v] then |
6284 | framework["connections"]["Anti Aim Viewer"][v] = v.Activated:Connect(Aimbot) |
6285 | end |
6286 | -- |
6287 | if not framework["connections"]["auto reload >_< :3"][v] then |
6288 | framework["connections"]["auto reload >_< :3"][v] = v.Ammo:GetPropertyChangedSignal("Value"):Connect(Ammo) |
6289 | end |
6290 | end |
6291 | end |
6292 | LocalPlayer.Character.ChildAdded:connect(function(v) |
6293 | if v:IsA("Tool") and v:FindFirstChild("Ammo") then |
6294 | if not framework["connections"]["Anti Aim Viewer"][v] then |
6295 | framework["connections"]["Anti Aim Viewer"][v] = v.Activated:Connect(Aimbot) |
6296 | end |
6297 | -- |
6298 | if not framework["connections"]["auto reload >_< :3"][v] then |
6299 | framework["connections"]["auto reload >_< :3"][v] = v.Ammo:GetPropertyChangedSignal("Value"):Connect(Ammo) |
6300 | end |
6301 | end |
6302 | end) |
6303 | LocalPlayer.CharacterAdded:connect(function(v) |
6304 | for i = 1, #framework["connections"]["Anti Aim Viewer"], 1 do |
6305 | framework["connections"]["Anti Aim Viewer"][i]:Disconnect() |
6306 | framework["connections"]["Anti Aim Viewer"][i] = nil |
6307 | framework["connections"]["auto reload >_< :3"][i]:Disconnect() |
6308 | framework["connections"]["auto reload >_< :3"][i] = nil |
6309 | end |
6310 | v.ChildAdded:connect(function(v) |
6311 | if v:IsA("Tool") and v:FindFirstChild("Ammo") then |
6312 | if not framework["connections"]["Anti Aim Viewer"][v] then |
6313 | framework["connections"]["Anti Aim Viewer"][v] = v.Activated:Connect(Aimbot) |
6314 | end |
6315 | -- |
6316 | if not framework["connections"]["auto reload >_< :3"][v] then |
6317 | framework["connections"]["auto reload >_< :3"][v] = v.Ammo:GetPropertyChangedSignal("Value"):Connect(Ammo) |
6318 | end |
6319 | end |
6320 | end) |
6321 | end) |
6322 | end |
6323 | -- // Target Back Track |
6324 | do |
6325 | task.spawn(function() |
6326 | while true do |
6327 | task.wait(flags["Back Track Delay"]/2) |
6328 | if utility.target and utility:ValidateClient(utility.target) then |
6329 | if flags["Back Track Enabled"] and flags["Back Track Method"] == "Clone" then |
6330 | utility:characterClone(utility.target, flags["Back Track Settings"].Color, flags["Back Track Material"], flags["Back Track Settings"].Transparency, utility.folders["Part Chams"]); |
6331 | task.wait(flags["Back Track Delay"]/2) |
6332 | utility.folders["Part Chams"]:ClearAllChildren(); |
6333 | end |
6334 | end |
6335 | end |
6336 | end) |
6337 | end |
6338 | -- // Hooks |
6339 | do |
6340 | local Old; |
6341 | Old = hookmetamethod(game, "__namecall", LPH_NO_VIRTUALIZE(function(self, ...) |
6342 | if tostring(self.Name) == "MainEvent" then |
6343 | local Args = {...} |
6344 | -- |
6345 | if getnamecallmethod() == "FireServer" and Args[1] == "UpdateMousePos" and not flags["Aim Viewer Bypass"] then |
6346 | if utility.target and utility.target.Character and flags["Silent_Bind"] then |
6347 | local part = (flags["Jump Prediction"] and utility.target.Character.Humanoid.FloorMaterial == Enum.Material.Air and "RightFoot") or (flags["Nearest Part"] and partClosest) or flags["Single Hit Part"] |
6348 | local yOffset = utility.target.Character.Humanoid.FloorMaterial == Enum.Material.Air and flags["Manual Offset Value"] or 0 |
6349 | -- |
6350 | if (checks == true) then |
6351 | if flags["Resolver"] then |
6352 | Args[2] = utility.target.Character[tostring(part)].Position + offset + NewVector3(0, yOffset, 0) |
6353 | else |
6354 | Args[2] = utility.target.Character[tostring(part)].Position + (utility.target.Character.HumanoidRootPart.Velocity * prediction) + NewVector3(0, yOffset, 0) |
6355 | end |
6356 | end |
6357 | end |
6358 | end |
6359 | -- |
6360 | return Old(self, unpack(Args)) |
6361 | end |
6362 | -- |
6363 | return Old(self, ...) |
6364 | end)) |
6365 | |
6366 | --[[local IndexThing |
6367 | IndexThing = hookmetamethod(game, "__index", function(self, k) |
6368 | if (self:IsA("Mouse") and (k == "Hit" or k == "Target")) then |
6369 | if utility.target and utility.target.Character and flags["Silent_Bind"] and LocalPlayer.Character then |
6370 | local part = (flags["Jump Prediction"] and utility.target.Character.Humanoid:GetState() == Enum.HumanoidStateType.Freefall and flags["Air Hit Part"]) or (flags["Nearest Part"] and partClosest) or flags["Single Hit Part"] |
6371 | local yOffset = utility.target.Character.Humanoid.FloorMaterial == Enum.Material.Air and flags["Manual Offset Value"] or 0 |
6372 | -- |
6373 | if (checks == true) then |
6374 | if flags["Resolver"] then |
6375 | getgenv().Hit = utility.target.Character[tostring(part)].Position + offset + NewVector3(0, yOffset, 0) |
6376 | else |
6377 | getgenv().Hit = utility.target.Character[tostring(part)].Position + (utility.target.Character.HumanoidRootPart.Velocity * prediction) + NewVector3(0, yOffset, 0) |
6378 | end |
6379 | return (k == "Hit" and CFrame.new(getgenv().Hit)) |
6380 | end |
6381 | end |
6382 | end |
6383 | return IndexThing(self, k) |
6384 | end)]] |
6385 | |
6386 | local old |
6387 | old = hookmetamethod(game, "__index", LPH_NO_VIRTUALIZE(function(self, key) |
6388 | if not checkcaller() then |
6389 | if key == "CFrame" and LocalPlayer.Character and self == LocalPlayer.Character.HumanoidRootPart and ((flags["Desync"] and flags["Desync Key"]) or (flags["Destroy Cheaters Key"] and flags["Destroy Cheaters"])) and C_Desync["OldPosition"] ~= nil and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") and LocalPlayer.Character:FindFirstChild("Humanoid") and LocalPlayer.Character:FindFirstChild("Humanoid").Health > 0 then |
6390 | return C_Desync["OldPosition"] |
6391 | end |
6392 | end |
6393 | return old(self, key) |
6394 | end)) |
6395 | end |
6396 | end |
6397 | |
6398 | Library:Notification("Loaded lunar.vip in " .. Floor((tick() - loadingTime) * 1000) .."ms", 3, Library.Accent, flags["Notification Position"]) |
6399 | |
6400 | |
6401 | |
6402 | |
6403 | |
6404 | |
6405 | |
6406 | |
6407 | |
6408 | |
6409 | |
6410 | |
6411 | |
6412 | |
6413 | |
6414 | |
6415 | |
6416 | |
6417 | |
6418 | |
6419 | |
6420 | |
6421 | |
6422 | |
6423 | |
6424 | |
6425 | |
6426 | |
6427 | |
6428 | |
6429 | |
6430 | |
6431 | |
6432 | |
6433 | |
6434 | |
6435 | |
6436 | |
6437 | |
6438 | |
6439 | |
6440 | |
6441 | |
6442 | |
6443 | |
6444 | |
6445 | |
6446 | |
6447 | |
6448 | |
6449 | |
6450 | |
6451 | |
6452 | |
6453 | |
6454 | |
6455 | |
6456 | |
6457 | |
6458 | |
6459 | |
6460 | |
6461 | |
6462 | |
6463 | |
6464 | |
6465 | |
6466 | |
6467 | |
6468 | |
6469 | |
6470 | --[[ |
6471 | |
6472 | NICE TRY POORON >_< :3333 |
6473 | |
6474 | ]] |