View difference between Paste ID: zSDJjNzp and sPGaa8FD
SHOW: | | - or go back to the newest paste.
1
if not _G.require then
2
	_G.require = require
3
end
4
5
--// API References
6
local GUIData = (function()
7
	-- Variables
8
	_V = 1.11
9
	local screenGui
10
	local err,errcode=pcall(function()
11
		screenGui = (script:FindFirstChild("ScreenGui")) or game:GetObjects("rbxassetid://2718157603")[1]:FindFirstChild("ScreenGui", true)
12
	end)
13
	if not err then
14
		print("ERR:",errcode)
15
		screenGui = game:GetService("ReplicatedStorage").CardinalityUI:Clone()
16
	end
17
	local Container = screenGui.Frame
18
	local Opt = Container.OptionsFrame
19
	local Checkbox = Opt.Checkbox
20
	local Color = Opt.Color
21
	local Frame = Opt.Frame
22
	local Execute = Opt.Execute
23
	local Mode = Opt.Mode
24
	local Number = Opt.Number
25
	local Toggle = Opt.Toggle
26
	local Mods = screenGui.Mods
27
	local ModLabel = Mods.Example
28
29
	local TextService = game:GetService("TextService")
30
	local UserInputService = game:GetService("UserInputService")
31
	local HttpService = game:GetService("HttpService")
32
	local Player = game:GetService("Players").LocalPlayer
33
	local Mouse = Player:GetMouse()
34
	syn = syn or nil
35
	if syn then
36
		syn.protect_gui(screenGui)
37
	end
38
	err,errcode=pcall(function()
39
		screenGui.Parent = game:GetService("CoreGui")
40
	end)
41
	if not err then
42
		print("ERR:",errcode)
43
		screenGui.Parent = Player.PlayerGui
44
	end
45
46
	Container.Parent = nil
47
	Checkbox.Parent = nil
48
	Color.Parent = nil
49
	Frame.Parent = nil
50
	Execute.Parent = nil
51
	Mode.Parent = nil
52
	Number.Parent = nil
53
	Toggle.Parent = nil
54
	ModLabel.Parent = nil
55
56
	local settingsArray = {{Object = screenGui},{}}
57
	local saveData = {Options = {}, Hotkeys = {}}
58
59
	local hotkeyFunctions = {}
60
	local gui = {}
61
62
	-- Save Functions
63
	local writefile = writefile or function() end
64
	local function Save()
65
		local JSONData = HttpService:JSONEncode(saveData)
66
		writefile("OpenGui.txt", JSONData)
67
	end
68
69
	-- Color Functions
70
	local color = {}
71
	local colors = {
72
		TextDisabled = Color3.fromRGB(200, 200, 200),
73
		TextEnabled = Color3.fromRGB(255, 255, 255),
74
	}
75
76
	local Colors = {
77
		Color3.fromRGB(255, 73, 73),
78
		Color3.fromRGB(255, 161, 66),
79
		Color3.fromRGB(255, 233, 62),
80
		Color3.fromRGB(137, 255, 64),
81
		Color3.fromRGB(64, 255, 140),
82
		Color3.fromRGB(66, 252, 255),
83
		Color3.fromRGB(64, 147, 255),
84
		Color3.fromRGB(255, 93, 253),
85
		Color3.fromRGB(195, 110, 255),
86
		Color3.fromRGB(255, 90, 134),
87
		Color3.fromRGB(255, 255, 255),
88
		Color3.fromRGB(209, 209, 209),
89
	}
90
91
	local function h2rgb(m1, m2, h)
92
		if h<0 then h = h+1 end
93
		if h>1 then h = h-1 end
94
		if h*6<1 then
95
			return m1+(m2-m1)*h*6
96
		elseif h*2<1 then
97
			return m2
98
		elseif h*3<2 then
99
			return m1+(m2-m1)*(2/3-h)*6
100
		else
101
			return m1
102
		end
103
	end
104
105
	function color:rgbToHsv(r, g, b)
106
		local a = 0
107
		r, g, b, a = r / 255, g / 255, b / 255, a / 255
108
		local max, min = math.max(r, g, b), math.min(r, g, b)
109
		local h, s, v
110
		v = max
111
112
		local d = max - min
113
		if max == 0 then s = 0 else s = d / max end
114
115
		if max == min then
116
			h = 0 -- achromatic
117
		else
118
			if max == r then
119
				h = (g - b) / d
120
				if g < b then h = h + 6 end
121
			elseif max == g then h = (b - r) / d + 2
122
			elseif max == b then h = (r - g) / d + 4
123
			end
124
			h = h / 6
125
		end
126
127
		return h, s, v
128
	end
129
130
	function color:hslToRgb(h, s, L)
131
		h = h / 360
132
		local m2 = L <= .5 and L*(s+1) or L+s-L*s
133
		local m1 = L*2-m2
134
		return
135
			h2rgb(m1, m2, h+1/3), h2rgb(m1, m2, h), h2rgb(m1, m2, h-1/3)
136
	end
137
138
	function color:rgbToHsl(r, g, b)
139
		local min = math.min(r, g, b)
140
		local max = math.max(r, g, b)
141
		local delta = max - min
142
143
		local h, s, l = 0, 0, (min + max) / 2
144
145
		if l > 0 and l < 0.5 then s = delta / (max + min) end
146
		if l >= 0.5 and l < 1 then s = delta / (2 - max - min) end
147
148
		if delta > 0 then
149
			if max == r and max ~= g then h = h + (g-b) / delta end
150
			if max == g and max ~= b then h = h + 2 + (b-r) / delta end
151
			if max == b and max ~= r then h = h + 4 + (r-g) / delta end
152
			h = h / 6
153
		end
154
155
		if h < 0 then h = h + 1 end
156
		if h > 1 then h = h - 1 end
157
158
		return h * 360, s, l
159
	end
160
161
	function color:adjustLightness(color3, amount)
162
		local h, s, l = self:rgbToHsl(color3.r, color3.g, color3.b)
163
		return Color3.new(self:hslToRgb(h, s, l + amount))
164
	end
165
166
	-- UI Functions
167
	function gui.tween(object,style,direction,t,goal)
168
		local tweenservice = game:GetService("TweenService")
169
		local tweenInfo = TweenInfo.new(t,Enum.EasingStyle[style],Enum.EasingDirection[direction])
170
		local tween = tweenservice:Create(object,tweenInfo,goal)
171
		tween.Completed:Connect(function()
172
			tween:Destroy()
173
		end)
174
		tween:Play()
175
		return tween
176
	end
177
178
	function gui:makeDraggable(ui, callback)
179
		local UserInputService = game:GetService("UserInputService")
180
181
		local dragging
182
		local dragInput
183
		local dragStart
184
		local startPos
185
186
		local function update(input)
187
			local delta = input.Position - dragStart
188
			ui.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
189
190
			if callback then
191
				callback(ui.Position.X.Offset, ui.Position.Y.Offset)
192
			end
193
		end
194
195
		ui.InputBegan:Connect(function(input)
196
			if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
197
				dragging = true
198
				dragStart = input.Position
199
				startPos = ui.Position
200
201
				input.Changed:Connect(function()
202
					if input.UserInputState == Enum.UserInputState.End then
203
						dragging = false
204
					end
205
				end)
206
			end
207
		end)
208
209
		ui.InputChanged:Connect(function(input)
210
			if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
211
				dragInput = input
212
			end
213
		end)
214
215
		UserInputService.InputChanged:Connect(function(input)
216
			if input == dragInput and dragging then
217
				update(input)
218
			end
219
		end)
220
	end
221
222
	function gui:unpack(data, type)
223
		if data == nil then return end
224
		if type == "UDim2" then
225
			return data and UDim2.new(data[1], data[2], data[3], data[4])
226
		elseif type == "boolean" then
227
			return data == 1 and true or false
228
		elseif type == "Color3" then
229
			return Color3.new(data[1], data[2], data[3])
230
		end
231
		return data
232
	end
233
234
	function gui:pack(data)
235
		if typeof(data) == "UDim2" then
236
			return {data.X.Scale, data.X.Offset, data.Y.Scale, data.Y.Offset}
237
		elseif typeof(data) == "boolean" then
238
			return data and 1 or 0
239
		elseif typeof(data) == "Color3" then
240
			return {data.r, data.g, data.b}
241
		end
242
		return data
243
	end
244
245
	function gui:getn(array)
246
		local n = 0
247
		for _, v in pairs(array) do
248
			n = n + 1
249
		end
250
		return n
251
	end
252
253
	function gui:setText(textLabel, text)
254
		text = tostring(text)
255
		textLabel.Text = text
256
		if textLabel:FindFirstChild("Opaque") then
257
			textLabel.Opaque.Text = text
258
		end
259
		if textLabel:FindFirstChild("Shadow") then
260
			textLabel.Shadow.Text = text
261
		end
262
	end
263
264
	function gui:onDoubleTap(guiObject, callback)
265
		local lastTap = tick()
266
		guiObject.InputBegan:Connect(function(input)
267
			if input.UserInputType == Enum.UserInputType.MouseButton1 then
268
				if tick() - lastTap < 0.25 then
269
					callback()
270
				end
271
				lastTap = tick()
272
			end
273
		end)
274
	end
275
276
	local connections = {}
277
	function gui:connect(func)
278
		table.insert(connections, func)
279
	end
280
281
	function gui:createList(guiObject, guiData)
282
		local ListLayout = guiObject.OptionsFrame.UIListLayout
283
		local Padding = guiObject.OptionsFrame.UIPadding
284
		guiObject.OptionsFrame.UIListLayout.Changed:Connect(function(Property)
285
			if Property == "AbsoluteContentSize" then
286
				guiData.ySize = ListLayout.AbsoluteContentSize.Y + 2 + Padding.PaddingTop.Offset + ListLayout.Padding.Offset * 2
287
			end
288
		end)
289
290
		gui:connect(function()
291
			if guiObject:FindFirstChild("Title") then
292
				local yRes = Mouse.ViewSizeY
293
				local diff = yRes - (guiData.yPos + guiData.ySize)
294
				local difference = math.clamp(diff, 0, 5000)
295
				guiObject.OptionsFrame.CanvasSize = UDim2.new(1, 0, 1.001, guiData.ySize - 35)
296
297
				if guiData.Open then
298
					guiObject.OptionsFrame.Size = guiObject.OptionsFrame.Size:Lerp(UDim2.new(1, 0, 0, guiData.ySize + math.clamp(diff, -5000, 0)), 0.3)
299
				else
300
					guiObject.OptionsFrame.Size = guiObject.OptionsFrame.Size:Lerp(UDim2.new(1, 0, 0, 0), 0.3)
301
				end
302
303
				guiObject.Frame.Size = guiObject.OptionsFrame.Size
304
			else
305
				if guiData.Open then
306
					guiObject.Size = guiObject.Size:Lerp(UDim2.new(1, -8, 0, 35 + guiData.ySize), 0.3)
307
				else
308
					guiObject.Size = guiObject.Size:Lerp(UDim2.new(1, -8, 0, 35), 0.3)
309
				end
310
			end
311
		end)
312
313
		if guiObject:FindFirstChild("Dropdown") then
314
			guiObject.Dropdown.Visible = false
315
			guiObject.Dropdown.MouseButton1Down:Connect(function()
316
				guiData.Open = not guiData.Open
317
				if guiData.Open then
318
					guiObject.Dropdown.Image = "rbxassetid://3559638428"
319
				else
320
					guiObject.Dropdown.Image = "rbxassetid://3554238678"
321
				end
322
			end)
323
		else
324
			gui:onDoubleTap(guiObject, function()
325
				guiData.Open = not guiData.Open
326
			end)
327
		end
328
	end
329
330
	function gui:textColorOnHover(guiObject, guiData)
331
		local hover = guiData.baseColor or guiObject.TextColor3
332
		local default = color:adjustLightness(hover, -0.075)
333
		local mdown = color:adjustLightness(hover, -0.15)
334
		local mouseIn
335
336
		local function update()
337
			if guiData.baseColor then
338
				hover = guiData.baseColor or guiObject.TextColor3
339
				default = color:adjustLightness(hover, -0.075)
340
				mdown = color:adjustLightness(hover, -0.15)
341
			end
342
		end
343
344
		guiObject.MouseEnter:Connect(function()
345
			update()
346
			gui.tween(guiObject, "Sine", "Out", 0.25, {
347
				TextColor3 = hover;
348
			})
349
			mouseIn = true
350
		end)
351
352
		guiObject.MouseLeave:Connect(function()
353
			mouseIn = false
354
			update()
355
			gui.tween(guiObject, "Sine", "Out", 0.25, {
356
				TextColor3 = default;
357
			})
358
		end)
359
360
		guiObject.InputBegan:Connect(function(input)
361
			if input.UserInputType == Enum.UserInputType.MouseButton1 then
362
				update()
363
				gui.tween(guiObject, "Sine", "Out", 0.25, {
364
					TextColor3 = mdown;
365
				})
366
			end
367
		end)
368
369
		guiObject.InputEnded:Connect(function(input)
370
			if input.UserInputType == Enum.UserInputType.MouseButton1 then
371
				update()
372
				gui.tween(guiObject, "Sine", "Out", 0.25, {
373
					TextColor3 = mouseIn and hover or default;
374
				})
375
			end
376
		end)
377
378
		guiObject.TextColor3 = default
379
	end
380
381
	function gui:sliderXY(sliderFrame, inputObjects, callback)
382
		local inputDown = false
383
384
		local function refresh(c1, c2)
385
			local sliderX = sliderFrame.AbsolutePosition.X + sliderFrame.AbsoluteSize.X
386
			local sliderY = sliderFrame.AbsolutePosition.Y + sliderFrame.AbsoluteSize.Y
387
388
			local distX = sliderX - Mouse.X
389
			local distY = sliderY - Mouse.Y
390
391
			local deltaX = 1-math.clamp(distX / sliderFrame.AbsoluteSize.X, 0, 1)
392
			local deltaY = 1-math.clamp(distY / sliderFrame.AbsoluteSize.Y, 0, 1)
393
394
			if callback then
395
				callback(c1 or deltaX, c2 or deltaY)
396
			end
397
		end
398
399
		for _, obj in pairs(inputObjects) do
400
			obj.InputBegan:Connect(function(input)
401
				if input.UserInputType == Enum.UserInputType.MouseButton1 then
402
					inputDown = true
403
					refresh()
404
				end
405
			end)
406
			obj.InputEnded:Connect(function(input)
407
				if input.UserInputType == Enum.UserInputType.MouseButton1 then
408
					inputDown = false
409
					refresh()
410
				end
411
			end)
412
			obj.InputChanged:Connect(function(input)
413
				if input == nil or input.UserInputType == Enum.UserInputType.MouseMovement then
414
					if inputDown then
415
						refresh()
416
					end
417
				end
418
			end)
419
		end
420
421
		return refresh
422
	end
423
424
	function gui:createSlider(sliderFrame, inputObjects, callback)
425
		local slider = sliderFrame.Value
426
		local inputDown = false
427
428
		local absPos = sliderFrame.AbsolutePosition.X + sliderFrame.AbsoluteSize.X
429
		local absSize = sliderFrame.AbsoluteSize.X
430
431
		local function refresh(custom)
432
			local mouseX = Mouse.X
433
			local sliderX = absPos
434
			local dist = sliderX - mouseX
435
			local delta = 1 - math.clamp(dist / absSize, 0, 1)
436
437
			if custom then
438
				delta = custom
439
			end
440
441
			slider.Size = UDim2.new(delta, 0, 1, 0)
442
			if callback then
443
				callback(delta, custom)
444
			end
445
		end
446
447
		for _, obj in pairs(inputObjects) do
448
			obj.InputBegan:Connect(function(input)
449
				if input.UserInputType == Enum.UserInputType.MouseButton1 then
450
					inputDown = true
451
					absPos = sliderFrame.AbsolutePosition.X + sliderFrame.AbsoluteSize.X
452
					absSize = sliderFrame.AbsoluteSize.X
453
					refresh()
454
				end
455
			end)
456
			obj.InputEnded:Connect(function(input)
457
				if input.UserInputType == Enum.UserInputType.MouseButton1 then
458
					inputDown = false
459
					refresh()
460
				end
461
			end)
462
			obj.InputChanged:Connect(function(input)
463
				if input == nil or input.UserInputType == Enum.UserInputType.MouseMovement then
464
					if inputDown then
465
						refresh()
466
					end
467
				end
468
			end)
469
		end
470
471
		return refresh
472
	end
473
474
	function gui:textSize(txt, vSize)
475
		return TextService:GetTextSize(txt.Text, txt.TextSize, txt.Font, vSize)
476
	end
477
478
	local currentHint = 0
479
480
	function gui:addHint(guiObject, hintText)
481
		local hintKey = math.random()
482
		guiObject.MouseEnter:Connect(function()
483
			hintKey = math.random()
484
			currentHint = hintKey
485
486
			wait(2)
487
488
			if currentHint == hintKey then
489
				gui:setText(screenGui.Hint, " " .. hintText .. " ")
490
				local textSize = gui:textSize(screenGui.Hint, Vector2.new(2500, 500))
491
				screenGui.Hint.Position = UDim2.new(0, Mouse.X, 0, Mouse.Y + 4)
492
				screenGui.Hint.Size = UDim2.new(0, textSize.X, 0, textSize.Y)
493
				screenGui.Hint.Visible = true
494
			end
495
		end)
496
497
		guiObject.MouseLeave:Connect(function()
498
			hintKey = math.random()
499
		end)
500
501
		Mouse.Move:Connect(function()
502
			if currentHint == hintKey then
503
				screenGui.Hint.Visible = false
504
			end
505
		end)
506
	end
507
508
	-- UI Type Library
509
	local lib = {}
510
511
	function lib.Color(data, dataArray)
512
		local guiObject = Color:Clone()
513
		local color3Value = gui:unpack(saveData.Options[data.ID].Value, "Color3") or data.Default or Color3.new(1, 1, 1)
514
		local guiData = {}
515
516
		local HSV = color3Value
517
		local H, S, V = color:rgbToHsv(HSV.r * 255, HSV.g * 255, HSV.b * 255)
518
519
		local newValue = function()
520
			HSV = Color3.fromHSV(H, S, V)
521
			guiObject.SV.BackgroundColor3 = Color3.fromHSV(H, 1, 1)
522
			guiObject.Indicator.BackgroundColor3 = HSV
523
			saveData.Options[data.ID].Value = gui:pack(HSV, "Color3")
524
525
			guiObject.R.Text = math.floor(HSV.r * 255)
526
			guiObject.G.Text = math.floor(HSV.g * 255)
527
			guiObject.B.Text = math.floor(HSV.b * 255)
528
529
			if data.Callback then
530
				data.Callback(HSV)
531
			end
532
		end
533
534
		local function updateHSV()
535
			H, S, V = color:rgbToHsv(HSV.r * 255, HSV.g * 255, HSV.b * 255)
536
		end
537
538
		local H_set = gui:sliderXY(guiObject.H, {guiObject.H}, function(X, Y, u)
539
			if not u then H = 1 - Y end
540
			guiObject.H.Locator.Position = UDim2.new(0.5, 0, Y, 0)
541
			newValue()
542
		end)
543
544
		local SV_set = gui:sliderXY(guiObject.SV, {guiObject.SV}, function(X, Y, u)
545
			if not u then S = X; V = 1 - Y; end
546
			guiObject.SV.Locator.Position = UDim2.new(X, 0, Y, 0)
547
			newValue()
548
		end)
549
550
		guiObject.R.FocusLost:Connect(function()
551
			HSV = Color3.new(guiObject.R.Text / 255, HSV.g, HSV.b)
552
			updateHSV()
553
			newValue()
554
		end)
555
		guiObject.G.FocusLost:Connect(function()
556
			HSV = Color3.new(HSV.r, guiObject.G.Text / 255, HSV.b)
557
			updateHSV()
558
			newValue()
559
		end)
560
		guiObject.B.FocusLost:Connect(function()
561
			HSV = Color3.new(HSV.r, HSV.g, guiObject.B.Text / 255)
562
			updateHSV()
563
			newValue()
564
		end)
565
566
		newValue()
567
		SV_set(S, 1 - V)
568
		H_set(0, H)
569
570
		guiData.ySize = 0
571
		guiData.Open = false
572
		guiData.baseColor = colors.TextEnabled
573
574
		gui:setText(guiObject.Label, data.Name)
575
		gui:textColorOnHover(guiObject.Label, guiData)
576
577
		return guiObject
578
	end
579
580
	function lib.Number(data, dataArray)
581
		local guiObject = Number:Clone()
582
		local Value = gui:unpack(saveData.Options[data.ID].Value, "number") or data.Default or math.floor(data.Min + (data.Max - data.Min) / 2)
583
		local guiData = {}
584
585
		local dMax = data.Max - data.Min
586
		local dValue = (Value - data.Min) / dMax
587
588
		data.Round = data.Round or 1
589
590
		local newValue = function(delta)
591
			local exactValue = data.Min + (data.Max - data.Min) * delta
592
			Value = math.floor(exactValue / data.Round) * data.Round
593
			Value = math.clamp(Value, data.Min, data.Max)
594
			guiObject.Indicator.Value.Text = tostring(Value)
595
596
			if data.Callback then
597
				data.Callback(Value)
598
			end
599
			saveData.Options[data.ID].Value = gui:pack(Value, "number")
600
		end
601
602
		local slideSet = gui:createSlider(guiObject.ValueFrame, {guiObject.Label, guiObject.Indicator}, newValue)
603
		slideSet(math.clamp(dValue, 0, 1))
604
605
		guiObject.Indicator.MouseButton1Down:Connect(newValue)
606
		guiObject.Label.MouseButton1Down:Connect(newValue)
607
		newValue(math.clamp(dValue, 0, 1))
608
609
		guiData.ySize = 0
610
		guiData.Open = false
611
		guiData.baseColor = colors.TextEnabled
612
613
		gui:createList(guiObject, guiData)
614
		gui:setText(guiObject.Label, data.Name)
615
		gui:textColorOnHover(guiObject.Label, guiData)
616
617
		return guiObject
618
	end
619
620
	function lib.Execute(data, dataArray)
621
		local guiObject = Execute:Clone()
622
		local guiData = {}
623
624
		local newValue = function(val)
625
			if data.Callback then
626
				data.Callback()
627
			end
628
		end
629
630
		guiObject.MouseEnter:Connect(function()
631
			gui.tween(guiObject.Indicator, "Sine", "Out", .25, {Size = UDim2.new(0, 40, 0, 25)})
632
		end)
633
634
		guiObject.MouseLeave:Connect(function()
635
			gui.tween(guiObject.Indicator, "Sine", "Out", .25, {Size = UDim2.new(0, 0, 0, 25)})
636
		end)
637
638
		guiObject.Indicator.MouseButton1Down:Connect(newValue)
639
		guiObject.Label.MouseButton1Down:Connect(newValue)
640
		newValue(true)
641
642
		guiData.ySize = 0
643
		guiData.Open = false
644
		guiData.baseColor = colors.TextEnabled
645
646
		gui:createList(guiObject, guiData)
647
		gui:setText(guiObject.Label, data.Name)
648
		gui:textColorOnHover(guiObject.Label, guiData)
649
650
		return guiObject
651
	end
652
653
	function lib.Mode(data, dataArray)
654
		local guiObject = Mode:Clone()
655
		local valueIndex = gui:unpack(saveData.Options[data.ID].Value, "number") or data.Default or 1
656
		local guiData = {}
657
658
		local newValue = function(val)
659
			if val == true then else
660
				valueIndex = (valueIndex % #data.Modes) + 1
661
			end
662
663
			local Value = data.Modes[valueIndex]
664
			gui:setText(guiObject.Mode, Value)
665
666
			if data.Callback then
667
				data.Callback(Value)
668
			end
669
			saveData.Options[data.ID].Value = gui:pack(valueIndex)
670
		end
671
672
		guiObject.Mode.MouseButton1Down:Connect(newValue)
673
		guiObject.Label.MouseButton1Down:Connect(newValue)
674
		newValue(true)
675
676
		guiData.ySize = 0
677
		guiData.Open = false
678
		guiData.baseColor = colors.TextEnabled
679
680
		gui:createList(guiObject, guiData)
681
		gui:setText(guiObject.Label, data.Name)
682
		gui:textColorOnHover(guiObject.Label, guiData)
683
684
		return guiObject
685
	end
686
687
	function lib.Hotkey(data, dataArray)
688
		local guiObject = Mode:Clone()
689
		local hotkeyInput = gui:unpack(saveData.Hotkeys[data.ID], "string") or data.Hotkey or ""
690
		local guiData = {}
691
692
		local lastInput = hotkeyInput
693
		local mouseIn = false
694
695
		guiObject.Name = "Z"
696
697
		local newValue = function(val)
698
			local input
699
			gui:setText(guiObject.Mode, "...")
700
			saveData.Hotkeys[data.ID] = nil
701
702
			if not val then
703
				input = lastInput
704
				mouseIn = true
705
706
				lastInput = nil
707
708
				repeat wait() until mouseIn == false or lastInput
709
			end
710
711
			if not lastInput then
712
				lastInput = hotkeyInput
713
			end
714
715
			saveData.Hotkeys[data.ID] = tostring(lastInput)
716
			hotkeyFunctions[data.ID] = data.callback
717
718
			hotkeyInput = tostring(lastInput)
719
			saveData.Options[data.ID].Value = hotkeyInput
720
			gui:setText(guiObject.Mode, hotkeyInput:sub(14))
721
		end
722
723
		UserInputService.InputBegan:Connect(function(input)
724
			if input.KeyCode == Enum.KeyCode.Unknown then return end
725
			if input.KeyCode == Enum.KeyCode.Backspace then lastInput = "" return end
726
			lastInput = tostring(input.KeyCode)
727
		end)
728
729
		guiObject.Mode.MouseButton1Down:Connect(function() newValue() end)
730
		guiObject.Label.MouseButton1Down:Connect(function() newValue() end)
731
		guiObject.MouseLeave:Connect(function()
732
			mouseIn = false
733
		end)
734
		newValue(true)
735
736
		guiData.ySize = 0
737
		guiData.Open = false
738
		guiData.baseColor = colors.TextEnabled
739
740
		gui:createList(guiObject, guiData)
741
		gui:setText(guiObject.Label, "Hotkey")
742
		gui:textColorOnHover(guiObject.Label, guiData)
743
744
		guiObject.Parent = dataArray.Object.OptionsFrame
745
746
		return guiObject
747
	end
748
749
	function lib.Toggle(data, dataArray)
750
		local guiObject = Toggle:Clone()
751
		local Value = gui:unpack(saveData.Options[data.ID].Value, "boolean") or data.Default or false
752
		local guiData = {}
753
754
		local modFrame = ModLabel:Clone()
755
		modFrame.Parent = Mods
756
		modFrame.TextColor3 = Colors[math.random(1, #Colors)]
757
		modFrame.Visible = false
758
		gui:setText(modFrame, data.Name)
759
760
		guiObject.Name = data.Name
761
762
		local newValue = function(val, set)
763
			if val == true then
764
			else
765
				if set then
766
					Value = set
767
				else
768
					Value = not Value
769
				end
770
			end
771
772
			if Value then
773
				gui.tween(guiObject.Indicator, "Sine", "Out", .25, {BackgroundColor3 = Color3.fromRGB(60, 222, 60)})
774
				guiObject.Indicator.Text = "ON"
775
				guiData.baseColor = colors.TextEnabled
776
			else
777
				gui.tween(guiObject.Indicator, "Sine", "Out", .25, {BackgroundColor3 = Color3.fromRGB(222, 60, 60)})
778
				guiObject.Indicator.Text = "OFF"
779
				guiData.baseColor = colors.TextDisabled
780
			end
781
782
			if data.Callback then
783
				data.Callback(Value)
784
			end
785
786
			saveData.Options[data.ID].Value = gui:pack(Value)
787
			modFrame.Visible = Value
788
789
		end
790
791
		guiObject.MouseEnter:Connect(function()
792
			gui.tween(guiObject.Indicator, "Sine", "Out", .25, {Size = UDim2.new(0, 40, 0, 25)})
793
		end)
794
795
		guiObject.MouseLeave:Connect(function()
796
			gui.tween(guiObject.Indicator, "Sine", "Out", .25, {Size = UDim2.new(0, 0, 0, 25)})
797
		end)
798
799
		gui.tween(guiObject.Indicator, "Sine", "Out", .25, {Size = UDim2.new(0, 0, 0, 25)})
800
		guiObject.Indicator.MouseButton1Down:Connect(function() newValue() end)
801
		guiObject.Label.MouseButton1Down:Connect(function() newValue() end)
802
		newValue(true)
803
804
		guiData.ySize = 0
805
		guiData.Open = false
806
		guiData.baseColor = colors.TextDisabled
807
808
		gui:createList(guiObject, guiData)
809
		gui:setText(guiObject.Label, data.Name)
810
		gui:textColorOnHover(guiObject.Label, guiData)
811
812
		data.callback = newValue
813
814
		return guiObject
815
	end
816
817
	function lib.Checkbox(data, dataArray)
818
		local guiObject = Checkbox:Clone()
819
		local Value = gui:unpack(saveData.Options[data.ID].Value, "boolean") or data.Default or false
820
		local guiData = {}
821
822
		guiObject.Name = "0"
823
824
		local newValue = function(val)
825
			if val == true then else
826
				Value = not Value
827
			end
828
			if Value then
829
				gui.tween(guiObject.Indicator, "Sine", "Out", .35, {Size = UDim2.new(0, 35, 0, 35)})
830
				guiData.baseColor = colors.TextEnabled
831
			else
832
				gui.tween(guiObject.Indicator, "Sine", "Out", .35, {Size = UDim2.new(0, 0, 0, 35)})
833
				guiData.baseColor = colors.TextDisabled
834
			end
835
			if data.Callback then
836
				data.Callback(Value)
837
			end
838
			saveData.Options[data.ID].Value = gui:pack(Value)
839
		end
840
841
		guiObject.Indicator.MouseButton1Down:Connect(newValue)
842
		guiObject.Label.MouseButton1Down:Connect(newValue)
843
		newValue(true)
844
845
		guiData.ySize = 0
846
		guiData.Open = false
847
		guiData.baseColor = colors.TextDisabled
848
849
		gui:createList(guiObject, guiData)
850
		gui:setText(guiObject.Label, data.Name)
851
		gui:textColorOnHover(guiObject.Label, guiData)
852
853
		return guiObject
854
	end
855
856
	function lib.Frame(data, dataArray)
857
		local guiObject = Frame:Clone()
858
859
		local guiData = {}
860
		guiData.ySize = 0
861
		guiData.Open = false
862
863
		gui:createList(guiObject, guiData)
864
		gui:setText(guiObject.Label, data.Name)
865
		gui:textColorOnHover(guiObject.Label, guiData)
866
867
		return guiObject
868
	end
869
870
	function lib.Container(data, dataArray)
871
		local guiObject = Container:Clone()
872
873
		guiObject.Position = gui:unpack(saveData.Options[data.ID].Position, "UDim2") or UDim2.new(0, 3, 0, 3 + gui:getn(settingsArray[2]) * 38)
874
875
		local guiData = {}
876
		guiData.yPos = 0
877
		guiData.ySize = 0
878
		guiData.Open = false
879
880
		gui:textColorOnHover(guiObject.Title, guiData)
881
		gui:createList(guiObject, guiData)
882
		gui:setText(guiObject.Title, data.Name)
883
		gui:makeDraggable(guiObject, function(x, y)
884
			guiData.yPos = y
885
			saveData.Options[data.ID].Position = gui:pack(guiObject.Position)
886
		end)
887
888
		return guiObject
889
	end
890
891
	-- UI Creation Library
892
	function gui.create(self, guiType, data)
893
		if self == gui then
894
			self = settingsArray
895
		end
896
897
		data.ID = data.Name .. "_" .. (self[1].Name or "TOP")
898
899
		if not saveData.Options[data.ID] then
900
			saveData.Options[data.ID] = {}
901
		end
902
903
		if self[1].Object:FindFirstChild("Dropdown") then
904
			self[1].Object.Dropdown.Visible = true
905
		end
906
907
		local dataArray = {}
908
		local objectArray = {}
909
		local selfArray = {dataArray, objectArray, create = gui.create, callback = data.Callback}
910
		dataArray.Name = data.Name
911
		dataArray.Data = data
912
		dataArray.Object = lib[guiType](data, dataArray)
913
		dataArray.self = selfArray
914
915
		if guiType == "Toggle" then
916
			lib.Hotkey(data, dataArray)
917
		end
918
		if data.Hint then
919
			local Object = dataArray.Object
920
			gui:addHint(Object:FindFirstChild("Title") or Object:FindFirstChild("Label"), data.Hint)
921
		end
922
923
		self[1][data.Name] = selfArray
924
		self[2][data.Name] = dataArray.Object
925
926
		dataArray.Object.Parent = self[1].Object:FindFirstChild("OptionsFrame") or self[1].Object
927
928
		return dataArray
929
	end
930
931
	-- Connection Stuff
932
	game:GetService("RunService").RenderStepped:Connect(function()
933
		for _, func in pairs(connections) do
934
			func()
935
		end
936
	end)
937
938
	UserInputService.InputBegan:Connect(function(input, gameProcessed)
939
		if gameProcessed then return end
940
		for id, key in pairs(saveData.Hotkeys) do
941
			if key == tostring(input.KeyCode) then
942
				hotkeyFunctions[id]()
943
			end
944
		end
945
	end)
946
947
	Mods.Text = "OpenGui " .. _V
948
949
	game.Close:Connect(function()
950
		Save()
951
	end)
952
953
	return {gui, saveData, screenGui}
954
end)()
955
956
local notify = {Title ="HENTAI", Text ="Got It?", Duration = 120, Button1 = "OK"}
957
958
local _Chams = (function()
959
	--// Variables
960
	local RunService = game:GetService("RunService")
961
	local Players = game:GetService("Players")
962
	local Player = Players.LocalPlayer
963
	local Screen = Instance.new("ScreenGui")
964
	local Viewport = Instance.new("ViewportFrame", Screen)
965
966
	local module = {}
967
	local characters = {}
968
	local clones = {}
969
	local parts = {}
970
971
	module.Options = {
972
		Enabled = false,
973
		Parent = script.Parent or game.CoreGui,
974
		Color = Color3.new(1, 1, 1),
975
		ShowDescendants = false,
976
		TeamColor = false,
977
		ShowSelf = false,
978
		ShowTeam = false,
979
		Mode = "Shader",
980
		Opacity = 1,
981
		MaxDistance = 500,
982
	}
983
	--// Edits
984
	Viewport.Size = UDim2.new(1, 0, 1, 0)
985
	Viewport.BackgroundTransparency = 1
986
	Viewport.CurrentCamera = workspace.CurrentCamera
987
	Screen.IgnoreGuiInset = true
988
	--// Functions
989
	local function getParts(Model)
990
		local parts = {}
991
		local descendants = Model:GetDescendants()
992
		local descendantsn = #descendants
993
		for i = 1, descendantsn do
994
			local desc = descendants[i]
995
			if desc:IsA("BasePart") then
996
				table.insert(parts, desc)
997
			end
998
		end
999
		return parts
1000
	end
1001
	local function getPart(Model)
1002
		return Model.PrimaryPart or Model:FindFirstChild("HumanoidRootPart") or Model:FindFirstChildWhichIsA("Part")
1003
	end
1004
	function module:Clone(Object)
1005
		local isArchivable = Object.Archivable
1006
		local Clone
1007
		Object.Archivable = true
1008
		Clone = Object:Clone()
1009
		Object.Archivable = isArchivable
1010
		if module.Options.Mode == "Shader" then
1011
			Viewport.Ambient = Color3.fromRGB(200, 200, 200)
1012
		else
1013
			Viewport.Ambient = Color3.fromRGB(255, 255, 255)
1014
		end
1015
		for _, child in pairs(Clone:GetDescendants()) do
1016
			if child:IsA("Script") or child:IsA("LocalScript") or child:IsA("Sound") then
1017
				child:Destroy()
1018
			elseif child:IsA("Humanoid") then
1019
				child.DisplayDistanceType = "None"
1020
			elseif module.Options.Mode ~= "Shader" then
1021
				if child:IsA("SpecialMesh") then
1022
					if module.Options.Mode ~= "ForceField" then
1023
						child.TextureId = ""
1024
					end
1025
				elseif child:IsA("MeshPart") then
1026
					if module.Options.Mode ~= "ForceField" then
1027
						child.TextureID = ""
1028
					end
1029
				elseif child:IsA("BasePart") then
1030
					if module.Options.Mode ~= "ForceField" then
1031
						child.Material = Enum.Material.Neon
1032
					else
1033
						child.Material = Enum.Material.ForceField
1034
					end
1035
				elseif child:IsA("Clothing") or child:IsA("Decal") then
1036
					child:Destroy()
1037
				end
1038
			end
1039
		end
1040
		return Clone
1041
	end
1042
	function module:Enable()
1043
		module.Options.Enabled = true
1044
		Screen.Parent = module.Options.Parent
1045
		module:ReloadCharacters()
1046
	end
1047
1048
	function module:Disable()
1049
		module.Options.Enabled = false
1050
		Screen.Parent = nil
1051
	end
1052
1053
	function module:ReloadCharacters()
1054
		Viewport:ClearAllChildren()
1055
		for player, character in pairs(characters) do
1056
			local clone = module:Clone(character)
1057
			clone.Name = player.Name
1058
			clone.Parent = Viewport
1059
			clones[player] = clone
1060
		end
1061
	end
1062
1063
	local function newPlayer(player)
1064
		if player.Character then
1065
			characters[player] = player.Character
1066
1067
			local clone = module:Clone(player.Character)
1068
			clone.Name = player.Name
1069
			clone.Parent = Viewport
1070
			clones[player] = clone
1071
		end
1072
		player.CharacterAdded:Connect(function(char)
1073
			if clones[player] then
1074
				clones[player]:Destroy()
1075
				clones[player] = nil
1076
			end;if characters[player] then
1077
				characters[player]:Destroy()
1078
				characters[player] = nil
1079
			end
1080
1081
			characters[player] = char
1082
1083
			local clone = module:Clone(char)
1084
			clone.Name = player.Name
1085
			clone.Parent = Viewport
1086
			clones[player] = clone
1087
		end)
1088
	end
1089
1090
	Players.PlayerAdded:Connect(newPlayer)
1091
	Players.PlayerRemoving:Connect(function(player)
1092
		if clones[player] then
1093
			clones[player]:Destroy()
1094
			clones[player] = nil
1095
		end;if characters[player] then
1096
			characters[player]:Destroy()
1097
			characters[player] = nil
1098
		end
1099
	end)
1100
	for _, player in pairs(Players:GetPlayers()) do
1101
		newPlayer(player)
1102
	end
1103
	RunService.RenderStepped:Connect(function()
1104
		if module.Options.Enabled then
1105
			for player, character in pairs(characters) do
1106
				local clone = clones[player]
1107
				local target = getPart(clone)
1108
				if target then
1109
					if ((player.Team == Player.Team and module.Options.ShowTeam) or player.Team ~= Player.Team) and target and (target.Position - workspace.CurrentCamera.CFrame.p).Magnitude <= module.Options.MaxDistance then
1110
						if (player == Player and module.Options.ShowSelf) or player ~= Player then
1111
							local parts = getParts(clone)
1112
							for i = 1, #parts do
1113
								local obj = parts[i]
1114
								local cor = character:FindFirstChild(obj.Name, true)
1115
								if character:FindFirstChild(obj.Parent.Name) then
1116
									cor = character:FindFirstChild(obj.Parent.Name):FindFirstChild(obj.Name)
1117
								end
1118
								if cor and obj then
1119
									if module.Options.TeamColor then
1120
										obj.Color = player.TeamColor.Color
1121
									elseif module.Options.Mode ~= "Shader" then
1122
										obj.Color = Color3.new(1, 1, 1)
1123
									end
1124
									if module.Options.ShowDescendants then
1125
										obj.CFrame = cor.CFrame
1126
									elseif obj.Parent == clone then
1127
										obj.CFrame = cor.CFrame
1128
									else
1129
										obj.CFrame = CFrame.new(10000, 10000, 10000)
1130
									end
1131
								end
1132
							end
1133
							if clone.Parent == nil then
1134
								clone.Parent = Viewport
1135
							end
1136
						else
1137
							clone.Parent = nil
1138
						end
1139
					else
1140
						clone.Parent = nil
1141
					end
1142
				else
1143
					clone.Parent = nil
1144
				end
1145
			end
1146
			Viewport.ImageColor3 = module.Options.Color
1147
			Viewport.ImageTransparency = 1 - module.Options.Opacity
1148
		end
1149
	end)
1150
	return module
1151
end)()
1152
1153-
local _ManaFly = (function()
1153+
--[[local _ManaFly = (function()
1154
	--// Variables
1155
	local module = {}
1156
1157
	local RunService = game:GetService("RunService")
1158
	local Players = game:GetService("Players")
1159
	local Player = Players.LocalPlayer
1160
1161
	local MANAFLY = nil
1162
	local leftorright,upordown,backorforward = 0,0,0
1163
1164
	module.Options = {
1165
		Enabled = false,
1166
		Color = Color3.new(1, 0, 0),
1167
		speed = 0,
1168
		Opacity = 0,
1169
		PartMaterial = Enum.Material.Air,
1170
		Up="x",
1171
		Down="z",
1172
		Size = 2,
1173
		CFrameOffset = 3.5,
1174
	}
1175
	function module:Enable()
1176
		module.Options.Enabled = true
1177
		leftorright,upordown,backorforward = 0,0,0
1178
	end
1179
1180
	function module:Disable()
1181
		module.Options.Enabled = false
1182
		leftorright,upordown,backorforward = 0,0,0
1183
	end
1184
	function module:SpeedChange(Speed)
1185
		if leftorright > 0 then
1186
			leftorright = Speed
1187
		elseif leftorright < 0 then
1188
			leftorright = -Speed
1189
		end
1190
		if upordown > 0 then
1191
			upordown = Speed
1192
		elseif upordown < 0 then
1193
			upordown = -Speed
1194
		end
1195
		if backorforward > 0 then
1196
			backorforward = Speed
1197
		elseif backorforward < 0 then
1198
			backorforward = -Speed
1199
		end
1200
	end
1201
	local function fly()
1202
		if not MANAFLY then
1203
			MANAFLY =  Instance.new("Part")
1204
		end
1205
		MANAFLY.Parent = workspace
1206
		MANAFLY.Size = Vector3.new(module.Options.Size,1,module.Options.Size)
1207
		MANAFLY.Transparency = module.Options.Opacity
1208
		MANAFLY.Name = "MANAFLYPART"
1209
		MANAFLY.Material  = module.Options.PartMaterial
1210
		MANAFLY.Color = module.Options.Color
1211
		MANAFLY.Anchored = true
1212
		if module.Options.Enabled then
1213
			local Character = Player.Character
1214
			local PrimaryPartCFrame = Character:GetPrimaryPartCFrame()
1215
			Character:SetPrimaryPartCFrame(PrimaryPartCFrame:Lerp(PrimaryPartCFrame*CFrame.new(leftorright,upordown,backorforward),1))
1216
			MANAFLY.CFrame = Character.HumanoidRootPart.CFrame * CFrame.new(0,-module.Options.CFrameOffset,0)
1217
		end
1218
	end
1219
	RunService:BindToRenderStep("MANAFLY",1,fly)
1220
	Player:GetMouse().KeyDown:Connect(function(k)
1221
		if not module.Options.Enabled then return end
1222
		if k == "w" then
1223
			backorforward = backorforward - module.Options.speed
1224
		elseif k == "s" then
1225
			backorforward = backorforward + module.Options.speed
1226
		elseif k == "a" then
1227
			leftorright = leftorright - module.Options.speed
1228
		elseif k == "d" then
1229
			leftorright = leftorright + module.Options.speed
1230
		elseif k == module.Options.Down then
1231
			upordown = upordown - module.Options.speed
1232
		elseif k == module.Options.Up then
1233
			upordown = upordown + module.Options.speed
1234
		end
1235
	end)
1236
	Player:GetMouse().KeyUp:Connect(function(k)
1237
		if not module.Options.Enabled then 
1238
			return 
1239
		end
1240
		if backorforward == 0 and leftorright == 0 and upordown == 0 then
1241
			return 
1242
		end
1243
		if k == "w" then
1244
			backorforward = backorforward + module.Options.speed
1245
		elseif k == "s" then
1246
			backorforward = backorforward - module.Options.speed
1247
		elseif k == "a" then
1248
			leftorright = leftorright + module.Options.speed
1249
		elseif k == "d" then
1250
			leftorright = leftorright - module.Options.speed
1251
		elseif k == module.Options.Down then
1252
			upordown = upordown + module.Options.speed
1253
		elseif k == module.Options.Up then
1254
			upordown = upordown - module.Options.speed
1255
		end
1256
	end)
1257
	return module
1258
end)()
1259
--]]
1260
local _ManaRun= (function()
1261
	--// Variables
1262
	local module = {}
1263
1264
	local RunService = game:GetService("RunService")
1265
	local Players = game:GetService("Players")
1266
	local Player = Players.LocalPlayer
1267
1268
	local leftorright,backorforward = 0,0
1269
1270
	module.Options = {
1271
		Enabled = false,
1272
		speed = 0,
1273
	}
1274
	function module:Enable()
1275
		module.Options.Enabled = true
1276
		leftorright,backorforward = 0,0
1277
	end
1278
1279
	function module:Disable()
1280
		module.Options.Enabled = false
1281
		leftorright,backorforward = 0,0
1282
	end
1283
	function module:SpeedChange(Speed)
1284
		if leftorright > 0 then
1285
			leftorright = Speed
1286
		elseif leftorright < 0 then
1287
			leftorright = -Speed
1288
		end
1289
		if backorforward > 0 then
1290
			backorforward = Speed
1291
		elseif backorforward < 0 then
1292
			backorforward = -Speed
1293
		end
1294
	end
1295
	RunService:BindToRenderStep("MANARUN",1,function()
1296
		if module.Options.Enabled then
1297
			Player.Character:SetPrimaryPartCFrame(Player.Character:GetPrimaryPartCFrame():Lerp(Player.Character:GetPrimaryPartCFrame()*CFrame.new(leftorright,0,backorforward),1))
1298
		end
1299
	end)
1300
	Player:GetMouse().KeyDown:Connect(function(k)
1301
		if k == "w" then
1302
			backorforward = backorforward - module.Options.speed
1303
		elseif k == "s" then
1304
			backorforward = backorforward + module.Options.speed
1305
		elseif k == "a" then
1306
			leftorright = leftorright - module.Options.speed
1307
		elseif k == "d" then
1308
			leftorright = leftorright + module.Options.speed
1309
		end
1310
	end)
1311
	Player:GetMouse().KeyUp:Connect(function(k)
1312
		if k == "w" then
1313
			backorforward = backorforward + module.Options.speed
1314
		elseif k == "s" then
1315
			backorforward = backorforward - module.Options.speed
1316
		elseif k == "a" then
1317
			leftorright = leftorright + module.Options.speed
1318
		elseif k == "d" then
1319
			leftorright = leftorright - module.Options.speed
1320
		end
1321
	end)
1322
	return module
1323
end)()
1324
--[[
1325
local _FullBright = (function()
1326
	--// Variables
1327
	local module = {}
1328
1329
	module.Options = {
1330
		Enabled = false,
1331
		ExposureCompensation=0,
1332
		Brightness = 2
1333
	}
1334
1335
	local RunService = game:GetService("RunService")
1336
	local Players = game:GetService("Players")
1337
	local Player = Players.LocalPlayer
1338
1339
	function module:Enable()
1340
		module.Options.Enabled = true
1341
	end
1342
1343
	function module:Disable()
1344
		module.Options.Enabled = false
1345
	end
1346
1347
	game:GetService("RunService"):BindToRenderStep("FULLBRIGHT",1,function()
1348
		if module.Options.Enabled then
1349
			game:GetService("Lighting").Ambient = Color3.new(1,1,1)
1350
			game:GetService("Lighting").FogEnd = 100000000000000000000000
1351
			game:GetService("Lighting").FogStart = 100000000000000000000000
1352
			game:GetService("Lighting").Brightness =  module.Options.Brightness
1353
			game:GetService("Lighting").ExposureCompensation = module.Options.ExposureCompensation
1354
			game:GetService("Lighting").GeographicLatitude = 41.733
1355
			game:GetService("Lighting").ColorShift_Bottom = Color3.new(1,1,1)
1356
			game:GetService("Lighting").ColorShift_Top = Color3.new(1,1,1)
1357
			game:GetService("Lighting").FogColor = Color3.new(1,1,1)
1358
			game:GetService("Lighting").ClockTime = 12
1359
		end
1360
	end)
1361
1362
	return module
1363
end)()
1364
--]]
1365
--[[
1366
local _Noclip = (function()
1367
	--// Variables
1368
	local module = {}
1369
1370
	local RunService = game:GetService("RunService")
1371
	local Players = game:GetService("Players")
1372
	local Player = Players.LocalPlayer
1373
	local MANAFLY = nil
1374
1375
	module.Options = {
1376
		Enabled = false,
1377
		Color = Color3.new(1, 0, 0),
1378
		speed = 0,
1379
		Opacity = 0,
1380
		Up="x",
1381
		Down="z",
1382
	}
1383
1384
	function module:Enable()
1385
		module.Options.Enabled = true
1386
	end
1387
1388
	function module:Disable()
1389
		module.Options.Enabled = false
1390
	end
1391
	RunService.Stepped:Connect(function()
1392
		if module.Options.Enabled then
1393
			for _,v in pairs(Player.Character:GetDescendants())do
1394
				if v:IsA("BasePart") then
1395
					v.CanCollide =  false
1396
				end
1397
			end
1398
		end
1399
	end)
1400
	return module
1401
end)()
1402
--]]
1403
1404
--// Variables
1405
local RunService = game:GetService("RunService")
1406
local HttpService = game:GetService("HttpService")
1407
local UserInputService = game:GetService("UserInputService")
1408
local Players = game:GetService("Players")
1409
local Player = Players.LocalPlayer
1410
local Mouse = Player:GetMouse()
1411
1412
local gui = GUIData[1]
1413
local saveData = GUIData[2]
1414
local screenGui = GUIData[3]
1415
1416
local screenscale = 250
1417
local opacity = 1
1418
local backcolor = Color3.new()
1419
1420
--// Saving
1421
local readfile = readfile or function() end
1422
pcall(function()
1423
	local JSONData = readfile("OpenGui.txt")
1424
	if JSONData then
1425
		local LUAData = HttpService:JSONDecode(JSONData)
1426
		saveData.Options = LUAData.Options
1427
		saveData.Hotkeys = LUAData.Hotkeys
1428
		print("Save Data found")
1429
	else
1430
		print("Save Data not found")
1431
	end
1432
end)
1433
1434
1435
--// UI Creation
1436
1437
--// Render Frame
1438
local Render = gui:create("Container", {
1439
	Name = "Render",
1440
})--|
1441
local OpenGui = Render.self:create("Toggle", {
1442
	Name = "OpenGui",
1443
	Default = true,
1444
	Hotkey = tostring(Enum.KeyCode.RightControl),
1445
	Hint = "The navigation GUI",
1446
	Callback = function(enabled)
1447
		for _, frame in pairs(screenGui:GetChildren()) do
1448
			if frame:IsA("Frame") then
1449
				frame.Visible = enabled
1450
			end
1451
		end
1452
		screenGui.Modal.Visible = enabled
1453
		screenGui.Hint.Visible = false
1454
	end,
1455
})--|
1456
1457
local Opacity = OpenGui.self:create("Number", {
1458
	Name = "Opacity",
1459
	Min = 0,
1460
	Max = 1,
1461
	Round = 0.01,
1462
	Default = 0.75,
1463
	Hint = "Transparency of the navigation GUI",
1464
	Callback = function(alpha)
1465
		opacity = 1 - alpha
1466
		for _, frame in pairs(screenGui:GetChildren()) do
1467
			if frame:IsA("Frame") then
1468
				frame.BackgroundTransparency = 1 - alpha
1469
				frame.OptionsFrame.BackgroundTransparency = 1 - alpha
1470
			end
1471
		end
1472
	end,
1473
})
1474
1475
local Width = OpenGui.self:create("Number", {
1476
	Name = "Width",
1477
	Min = 200,
1478
	Max = 1000,
1479
	Round = 1,
1480
	Default = 1000,
1481
	Hint = "Width of the navigation GUI",
1482
	Callback = function(scale)
1483
		screenscale = scale
1484
		for _, frame in pairs(screenGui:GetChildren()) do
1485
			if frame:IsA("Frame") then
1486
				frame.Size = UDim2.new(0, scale, 0, frame.Size.Y.Offset)
1487
			end
1488
		end
1489
	end,
1490
})
1491
1492
local Color = OpenGui.self:create("Color", {
1493
	Name = "Background Color",
1494
	Default = Color3.fromRGB(40, 40, 40),
1495
	Hint = "Background color of the navigation GUI",
1496
	Callback = function(color)
1497
		backcolor = color
1498
		for _, frame in pairs(screenGui:GetChildren()) do
1499
			if frame:IsA("Frame") then
1500
				frame.BackgroundColor3 = color
1501
				frame.OptionsFrame.BackgroundColor3 = color
1502
			end
1503
		end
1504
	end,
1505
})
1506
--[[
1507
local FullBright = Render.self:create("Toggle", {
1508
	Name = "FullBright",
1509
	Default = false,
1510
	Hint = "Toggle FullBright",
1511
	Callback = function(enabled)
1512
		_FullBright.Options.Enabled = enabled
1513
		if enabled then
1514
			_FullBright:Enable()
1515
		else
1516
			_FullBright:Disable()
1517
		end
1518
	end,
1519
})
1520
1521
local ExposureCompensation  = FullBright.self:create("Number", {
1522
	Name = "ExposureCompensation ",
1523
	Default = 0.5,
1524
	Min = 0,
1525
	Max = 100,
1526
	Round = 0.001,
1527
	Hint = "Change ExposureCompensation",
1528
	Callback = function(exposureCompensation)
1529
		_FullBright.Options.ExposureCompensation = exposureCompensation
1530
	end,
1531
})
1532
1533
local Brightness  = FullBright.self:create("Number", {
1534
	Name = "Brightness ",
1535
	Default = 2,
1536
	Min = 0,
1537
	Max = 40,
1538
	Round = 0.001,
1539
	Hint = "Change Brightness",
1540
	Callback = function(brightness)
1541
		_FullBright.Options.Brightness = brightness
1542-
-- ESP --
1542+
1543
})
1544
--]]
1545
-- ESP ----[[
1546
local Chams = Render.self:create("Toggle", {
1547
	Name = "Chams",
1548
	Default = false,
1549
	Hint = "Render players through walls",
1550
	Callback = function(enabled)
1551
		_Chams.Options.Enabled = enabled
1552
		if enabled then
1553
			_Chams:Enable()
1554
		else
1555
			_Chams:Disable()
1556
		end
1557
	end,
1558
})--|
1559
local ChamsColor = Chams.self:create("Color", {
1560
	Name = "Chams Color",
1561
	Default = Color3.new(1, 1, 1),
1562
	Hint = "Color of the player chams",
1563
	Callback = function(color)
1564
		_Chams.Options.Color = color
1565
	end,
1566
})
1567
local ChamsShowTeam = Chams.self:create("Checkbox", {
1568
	Name = "Show Team",
1569
	Default = false,
1570
	Hint = "Include your teammates",
1571
	Callback = function(enabled)
1572
		_Chams.Options.ShowTeam = enabled
1573
	end,
1574
})
1575
local ChamsShowSelf = Chams.self:create("Checkbox", {
1576
	Name = "Show Self",
1577
	Default = false,
1578
	Hint = "Include yourself",
1579
	Callback = function(enabled)
1580
		_Chams.Options.ShowSelf = enabled
1581
	end,
1582
})
1583
local ChamsTeamColor = Chams.self:create("Checkbox", {
1584
	Name = "Team Color",
1585
	Default = false,
1586
	Hint = "The chams color corresponds to the player's team",
1587
	Callback = function(enabled)
1588
		_Chams.Options.TeamColor = enabled
1589
	end,
1590
})
1591
local ChamsShowDescendants = Chams.self:create("Checkbox", {
1592
	Name = "Show Descendants",
1593
	Default = false,
1594
	Hint = "Highlight items like accessories",
1595
	Callback = function(enabled)
1596
		_Chams.Options.ShowDescendants = enabled
1597
	end,
1598
})
1599
local ChamsMode = Chams.self:create("Mode", {
1600
	Name = "Chams Mode",
1601
	Default = 1,
1602
	Modes = {"Opaque", "Shader","ForceField"},
1603
	Hint = "The type of chams used",
1604
	Callback = function(mode)
1605
		_Chams.Options.Mode = mode
1606
		_Chams:ReloadCharacters()
1607
	end,
1608
})
1609
local ChamsOpacity = Chams.self:create("Number", {
1610
	Name = "Opacity",
1611
	Default = 0.5,
1612
	Min = 0,
1613
	Max = 1,
1614
	Round = 0.01,
1615
	Hint = "Visibility of the chams",
1616
	Callback = function(opacity)
1617
		_Chams.Options.Opacity = opacity
1618
	end,
1619
})
1620
local ChamsMaxDistance = Chams.self:create("Number", {
1621
	Name = "Max Distance",
1622
	Default = 2048,
1623
	Min = 0,
1624
	Max = 25000,
1625
	Round = 0.5,
1626
	Hint = "The chams' maximum distance",
1627
	Callback = function(distance)
1628
		_Chams.Options.MaxDistance = distance
1629
	end,
1630
})
1631
--]]
1632
local Mana = gui:create("Container", {
1633
	Name = "Mana",
1634
})
1635
--[[
1636
local ManaFly = Mana.self:create("Toggle", {
1637
	Name = "ManaFly",
1638
	Default = false,
1639
	Hint = "Toggle ManaFly",
1640
	Hotkey = tostring(Enum.KeyCode.B),
1641
	Callback = function(enabled)
1642
		_ManaFly.Options.Enabled = enabled
1643
		if enabled then
1644
			_ManaFly:Enable()
1645
		else
1646
			_ManaFly:Disable()
1647
		end
1648
	end,
1649
})
1650
1651
local ManaFlySpeed = ManaFly.self:create("Number", {
1652
	Name = "FlySpeed",
1653
	Default = 0,
1654
	Min = 0,
1655
	Max = 100,
1656
	Round = 0.001,
1657
	Hint = "Speed Boost",
1658
	Callback = function(Speed)
1659
		_ManaFly:SpeedChange(Speed)
1660
		_ManaFly.Options.speed = tonumber(Speed)
1661
	end,
1662
})
1663
local ManaPartSize = ManaFly.self:create("Number", {
1664
	Name = "PartSize",
1665
	Default = 1,
1666
	Min = 1,
1667
	Max = 100,
1668
	Round = 0.001,
1669
	Hint = "PartSize",
1670
	Callback = function(Size)
1671
		_ManaFly.Options.Size= tonumber(Size)
1672
	end,
1673
})
1674
1675
local ManaFlyOpacity = ManaFly.self:create("Number", {
1676
	Name = "Opacity",
1677
	Default = 0,
1678
	Min = 0,
1679
	Max = 1,
1680
	Round = 0.001,
1681
	Hint = "Visibility of the Part",
1682
	Callback = function(opacity)
1683
		_ManaFly.Options.Opacity = 1-opacity
1684
	end,
1685
})
1686
1687
local ManaPartMaterial = ManaFly.self:create("Mode", {
1688
	Name = "ManaPart Material",
1689
	Hint = "Change ManaPart Material",
1690
	Default = 1,
1691
	Modes = {
1692
		"Air",
1693
		"ForceField"
1694
	},
1695
	Callback = function(value)
1696
		_ManaFly.Options.PartMaterial = value
1697
	end,
1698
})
1699
1700
local ManaSoul = Mana.self:create("Toggle", {
1701
	Name = "ManaSoul",
1702
	Default = false,
1703
	Hint = "Toggle Noclip",
1704
	Callback = function(enabled)
1705
		_Noclip.Options.Enabled = enabled
1706
		if enabled then
1707
			_Noclip:Enable()
1708
		else
1709
			_Noclip:Disable()
1710
		end
1711
	end,
1712
})
1713
--]]
1714
1715
local ManaRun = Mana.self:create("Toggle", {
1716
	Name = "ManaRun",
1717
	Default = false,
1718
	Hint = "Toggle ManaRun",
1719
	Hotkey = tostring(Enum.KeyCode.V),
1720
	Callback = function(enabled)
1721
		_ManaRun.Options.Enabled = enabled
1722
		if enabled then
1723
			_ManaRun:Enable()
1724
		else
1725
			_ManaRun:Disable()
1726
		end
1727
	end,
1728
})
1729
local ManaRunSpeed = ManaRun.self:create("Number", {
1730
	Name = "Boost Speed",
1731
	Default = 0,
1732
	Min = 0,
1733
	Max = 2,
1734
	Round = 0.001,
1735
	Hint = "Speed Boost",
1736
	Callback = function(Speed)
1737
		_ManaRun:SpeedChange(Speed)
1738
		_ManaRun.Options.speed = tonumber(Speed)
1739
	end,
1740
})
1741
RunService.RenderStepped:Connect(function()
1742
	for _, frame in pairs(screenGui:GetChildren()) do
1743
		if frame:IsA("Frame") then
1744
			frame.Size = UDim2.new(0, screenscale, 0, frame.Size.Y.Offset)
1745
1746
			frame.BackgroundTransparency = opacity
1747
			frame.OptionsFrame.BackgroundTransparency = opacity
1748
1749
			frame.BackgroundColor3 = backcolor
1750
			frame.OptionsFrame.BackgroundColor3 = backcolor
1751
		end
1752
	end
1753
end)
1754
1755
notify.Text = "Loaded"
1756
game:GetService("StarterGui"):SetCore("SendNotification",notify)
1757
notify.Text = "Got it?"