View difference between Paste ID: 4WuFymxe and LY8C7c6e
SHOW: | | - or go back to the newest paste.
1
																																			--[[
2
																																				
3
			                  __/\\\\____________/\\\\_________________________________________________________        
4
							   _\/\\\\\\________/\\\\\\_________________________________________________________       
5
			                    _\/\\\//\\\____/\\\//\\\_________________________________________________________      
6
			                     _\/\\\\///\\\/\\\/_\/\\\_____/\\\\\_____/\\/\\\\\\\___/\\\\\\\\\\_____/\\\\\\\\__     
7
			                      _\/\\\__\///\\\/___\/\\\___/\\\///\\\__\/\\\/////\\\_\/\\\//////____/\\\/////\\\_    
8
			                       _\/\\\____\///_____\/\\\__/\\\__\//\\\_\/\\\___\///__\/\\\\\\\\\\__/\\\\\\\\\\\__   
9
			                        _\/\\\_____________\/\\\_\//\\\__/\\\__\/\\\_________\////////\\\_\//\\///////___  
10
			                         _\/\\\_____________\/\\\__\///\\\\\/___\/\\\__________/\\\\\\\\\\__\//\\\\\\\\\\_ 
11
			                          _\///______________\///_____\/////_____\///__________\//////////____\//////////__
12
										[A1.exe#1168]
13
									      									
14
									      									 FIRST PERSON SHOOTERS
15
                                                                            ------------------------
16
																				-: CHANGELOG :-
17
																			------------------------
18
																				4.5.3:
19
																					-- Added `protect_gui` to UI instances on synapse
20
																					- Significant Performance Enhancements (Shouldn't lag as much on any game)
21
																					- Aimbot now has range instead of depth
22
																					- Aimbot has mode option now
23
																					- Fixed ESP to cycle between 'All', 'Players', 'NPCs'
24
																					- Fixed Chams Transparency
25
																					- 4.x emphasizes the focus on including NPCs
26
																					- Completely rewrote ESP
27
																					- Completely rewrote Chams
28
																					- Aimbot uses mouse (Change Depth if it doesn't Detect NPCs)
29
																					- Changed default chams transparency to 0.9
30
31
																			------------------------
32
																				   -: NOTES :-
33
																			------------------------
34
																				- Pressing `Esc` lets u focus on using this menu fully
35
																				- This script relies heavily on Synapse's anti CoreGui detection methods.
36
																				- Use at your own risk.
37
																				- This script is laggy on some games... It is what it is.
38
																				- Games with custom drag implementations kinda screw this script
39
			
40
																				Esp:
41
																					- This is pretty much safe.
42
																				Chams:
43
																					- This is very easily detected. 
44
																					- Be careful using this.
45
																				Aimbot:
46
																					- This is pretty much safe, as it
47
																					relies entirely on dragging the mouse.
48
																					- Works better on lower sensitivities
49
																					- Players within CloseRange (75 studs)
50
																					are targeted by who's closest.
51
																					- Increase depth to search workspace
52
																					further. Some games hide NPCs deeper in folders.
53
																				Fullbright:
54
																					- Messes with stuff, might get you banned.
55
																				Floaty:
56
																					- Messes with stuff, might get you banned.
57
58
																			------------------------
59
																				 -: CONTROLS :-
60
																			------------------------
61
																				Menu:
62
																					Delete - Toggle
63
																				
64
																				Chams:
65
																					Click [Toggle] to cycle colors
66
67
																				Aimbot:
68
																					H - Toggle
69
																					U - Up
70
																					J - Down
71
72
																				Floaty:
73
																					N - Still
74
																					B - Up
75
																					M - Down
76
77
78
																																			--]]
79
																	
80
local IsScreenActive = true
81
local UserInputService = game:GetService("UserInputService")
82
UserInputService.WindowFocusReleased:Connect(function()
83
	IsScreenActive = false
84
end)
85
UserInputService.WindowFocused:Connect(function()
86
	IsScreenActive = true
87
end)
88
89
local GameSettings = UserSettings():GetService('UserGameSettings')		
90
local CoreGUI = game:GetService('CoreGui')
91
92
local Run = game:GetService('RunService');
93
local World = game:GetService('Workspace');
94
local Input = game:GetService('UserInputService');
95
local Lighting = game:GetService('Lighting');
96
local Players = game:GetService('Players');
97
local Player = Players['LocalPlayer'];
98
local PlayerMouse = Player:GetMouse()
99
local PlayerCamera = World.CurrentCamera
100
local PlayerModel = Player.Character or Player.CharacterAdded:wait()
101
102
local Temp = {}
103
local Targets = {}
104
local Inputs = {}
105
local Keys = {}
106
local Events = {
107
	Targets = Instance.new('BindableEvent')
108
}
109
110
local VirtualUser = game:GetService("VirtualUser")
111
112
113
local Settings = {
114
	-- Order and Defaults --
115
	Menu = {
116
		Defaults = {
117
			{'Menu', false, Enum.KeyCode.Delete},
118
			{'Team Chams', true, '<-'},
119
			{'Enemy Chams', true, '<-'},
120
			{'Toggle Chams', true, '<-'},
121
			{'Fullbright', true, '\'MAX\''},
122
			{'Floaty', true, '\'Still\''},
123
			{'Aimbot', true, '<-'},
124
			{'Aimbot Mode', false, '<-'},
125
			{'ESP', true, '<-'},
126
			{'Written by: A1.exe#1168', false, 'Discord'}
127
		},
128
129
		Colors = {
130
			Enabled 		= Color3.fromRGB(46, 105, 132),
131
			Disabled 		= Color3.fromRGB(97, 97, 97),
132
		}
133
	},
134
135
	--- ESP ---	
136
	ESP = {
137
		Enabled = false,
138
		Options = {'All', 'Players', 'NPCs'},
139
		Current = 1
140
	},
141
142
	--- Chams ---	
143
	Chams = {
144
		Enabled = false,
145
		Transparency = 0.9,
146
147
		Team = {
148
			Enabled = false,
149
			Color = {'Grey', 	Color3.fromRGB(204, 204, 204)}
150
		},
151
152
		Enemy = {
153
			Enabled = false,
154
			Color = {'Red', 	Color3.fromRGB(255, 0, 0)}
155
		},
156
157
		Colors = {
158
			{'White', 	Color3.fromRGB(255, 255, 255)},
159
			{'Black', 	Color3.fromRGB(0, 0, 0)},
160
			{'Grey', 	Color3.fromRGB(204, 204, 204)},
161
			{'Red', 	Color3.fromRGB(255, 0, 0)},
162
			{'Yellow',  Color3.fromRGB(255, 255, 0)},
163
			{'Purple', 	Color3.fromRGB(166, 0, 166)},
164
			{'Blue', 	Color3.fromRGB(0, 0, 255)},
165
			{'Green', 	Color3.fromRGB(0, 255, 0)},
166
		},
167
	},
168
169
	--- Aimbot ---	
170
	Aimbot = {
171
		Enabled = false,
172
		Mode = 3,
173
		ModeOptions = {'All', 'Players', 'NPCs'},
174
		Range = 1,
175
		RangeOptions = {math.huge, 100, 250, 500, 750, 1000, 1250, 1500, 1750, 2000, 2500, 5000},
176
		CloseRange = -1,
177
		Selection = {},
178
		Selected = 1,
179
		Scrolled = 0,
180
		Status = {},
181
		Menu = {
182
			{'Enabled', false},		-- // Toggle aimbot
183
			{'TeamCheck', false},  	-- // Check team
184
			{'HeadsOnly', true},  	-- // Only target head
185
			{'Shake', false},		-- // Shake mouse between body and head
186
			{'RayCheck', true},		-- // Obstacles exist
187
			{'CamCheck', false}, 	-- // Don't check inside the camera
188
			{'AutoAim', false},		-- // No need to hold mouse
189
			{'Hide Menu', false},  	-- // Hide the ui
190
		}
191
	},
192
193
	--- Floaty ---	
194
	Floaty = {
195
		Enabled = false,
196
		Height = 3.9,
197
		Current = 1,
198
		Options = {'Still', 'Up', 'Down'}
199
	},
200
201
	--- Fullbright ---	
202
	Fullbright = {
203
		Enabled = false,
204
		Current = 1,
205
		Options = {'Max', 'Half', 'Default'},
206
		OptionDefs = {
207
			Max = {
208
				Fog = 1000000,
209
				Brightness = 10,
210
				InAmbience = Color3.new(1, 1, 1),
211
				OutAmbience = Color3.new(1, 1, 1),
212
			},
213
			Half = {
214
				Fog = 250,
215
				Brightness = 1.5,
216
				InAmbience = Color3.fromRGB(153, 153, 153),
217
				OutAmbience = Color3.fromRGB(153, 153, 153),
218
			},
219
			Default = {
220
				Fog = Lighting.FogEnd,
221
				Brightness = Lighting.Brightness,
222
				InAmbience = Lighting.Ambient,
223
				OutAmbience = Lighting.OutdoorAmbient
224
			}
225
		}
226
	}
227
}
228
229
---- LOAD EVENTS ----
230
for name, tab in next, (Settings) do
231
	Events[name] = Instance.new('BindableEvent')
232
end
233
---------------------
234
235
236
local function GetFunc(tab, name)
237
	for funcName, func in next, (tab) do
238
		if funcName == name then
239
			return func, funcName
240
		end
241
	end
242
end
243
244
local function GetColor(tab, name)
245
	for index, colortab in next, (tab) do
246
		if (colortab[1] == name) then
247
			return colortab, index
248
		elseif (colortab[2] == name) then
249
			return colortab, index
250
		end
251
	end
252
end
253
254
------------ [[ GUI SPAWN ]] ------------
255
FormAssets = function()
256
	------ ERROR MAGIC ------
257
	local __ERROR__ = Instance.new('BindableEvent')
258
	__ERROR__['Event']:Connect(error)
259
	
260
	--------- CREATE FUNCTION ---------
261
	local create = function(class, parent) 
262
		local instance = Instance.new(class);
263
		
264
		if instance:IsA('GuiObject') and syn and syn.protect_gui then
265
			syn.protect_gui(instance)
266
		end
267
268
		return function(props)
269
			for property, value in next, (props) do
270
				if (property ~= 'Parent') and (typeof(value) ~= 'Instance') then
271
					local suc, err = pcall(function()
272
						instance[property] = value
273
					end)
274
					if not suc then __ERROR__:Fire('[Script->Asset]: ' .. err) end
275
					
276
				elseif (property == 'Parent') then
277
					parent = value
278
				end
279
			end
280
			
281
			if parent and (typeof(parent) == 'Instance') then
282
				instance['Parent'] = parent
283
			end
284
			
285
			return instance
286
		end
287
	end
288
	
289
	-------------------------------------
290
	-------------------------------------
291
	-- SOME THINGS MAY BE OUT OF ORDER --
292
	----(INSTANCE RELATED PROPERTIES)----
293
	-------------(UNLIKELY)--------------
294
	-------------------------------------
295
	-------------------------------------
296
297
	local Main = create('ScreenGui'){
298
		Name = 'FPS Hacks - Menu'
299
	}
300
301
	local Folder = create('Folder', Main){
302
		Name = 'Chams'
303
	}
304
305
	local Folder1 = create('Folder', Folder){
306
		Name = 'Team'
307
	}
308
	
309
	local Folder2 = create('Folder', Folder){
310
		Name = 'Enemy'
311
	}
312
	
313
	local Folder3 = create('Folder', Main){
314
		Name = 'ESP'
315
	}
316
	
317
	local Frame = create('Frame', Main){
318
		Name 					= 'Main';
319
		BackgroundColor3		= Color3.new(1, 1, 1);
320
		BackgroundTransparency 	= 1;
321
		Position 				= UDim2.new(0.5, 0, 0.5, 0);
322
		Size 					= UDim2.new(0, 250, 0, 190);
323
		Draggable				= true;
324
		Active 					= true;
325
		AnchorPoint 			= Vector2.new(0.5, 0.5);
326
		Transparency 			= 1
327
	}
328
	
329
	local TextLabel = create('TextLabel', Frame){
330
		Name 					= 'Title';
331
		BackgroundColor3		= Color3.new(0.180392, 0.411765, 0.517647);
332
		BorderSizePixel			= 0;
333
		Size 					= UDim2.new(1, 0, 0, 35);
334
		Text 					= 'FPS Hacks v4.5.3';
335
		TextColor3 				= Color3.new(0.866667, 0.843137, 0.843137);
336
		Font 					= Enum.Font.SciFi;
337
		FontSize 				= Enum.FontSize.Size28;
338
		TextWrapped				= true
339
	}
340
	
341
	local ScrollingFrame = create('ScrollingFrame', Frame){
342
		Name 					= 'Buttons';
343
		BackgroundColor3		= Color3.new(1, 1, 1);
344
		BackgroundTransparency	= 1;
345
		BorderSizePixel			= 0;
346
		Position 				= UDim2.new(0.5, 0, 0, 40);
347
		CanvasSize 				= UDim2.new(0, 0, 0, 0);
348
		Size 					= UDim2.new(1, 0, 0, 290);
349
		AnchorPoint				= Vector2.new(0.5, 0);
350
		Transparency 			= 1
351
	}
352
	
353
	local Frame1 = create('Frame'){
354
		BackgroundColor3		= Color3.new(1, 1, 1);
355
		BackgroundTransparency	= 1;
356
		BorderSizePixel			= 0;
357
		Position 				= UDim2.new(0, 0, 0, 1);
358
		Selectable 				= true;
359
		Size 					= UDim2.new(1, 0, 0, 25);
360
		ClipsDescendants		= true;
361
		Transparency 			= 1
362
	}
363
	
364
	local TextLabel1 = create('TextButton', Frame1){
365
		Name 					= 'Text';
366
		BackgroundColor3		= Color3.new(1, 1, 1);
367
		BorderColor3			= Color3.new(0.180392, 0.411765, 0.517647);
368
		Position 				= UDim2.new(0.100000001, 0, 0, 0);
369
		Size 					= UDim2.new(0.600000024, 0, 1, 0);
370
		Text 					= 'Example';
371
		TextColor3 				= Color3.new(0.180392, 0.411765, 0.517647);
372
		Font 					= Enum.Font.SciFi;
373
		FontSize 				= Enum.FontSize.Size14
374
	}
375
	
376
	local Frame2 = create('Frame', Frame1){
377
		Name 					= 'Status';
378
		BackgroundColor3		= Color3.new(0, 1, 0);
379
		BorderSizePixel			= 0;
380
		Position 				= UDim2.new(0.0250000004, 0, 0.5, 0);
381
		Size 					= UDim2.new(0, 7, 0, 7);
382
		Style 					= Enum.FrameStyle.DropShadow;
383
		AnchorPoint				= Vector2.new(0, 0.5)
384
	}
385
	
386
	local TextButton = create('TextButton', Frame1){
387
		Name 					= 'Key';
388
		BackgroundColor3		= Color3.new(0.180392, 0.411765, 0.517647);
389
		BackgroundTransparency	= 0.5;
390
		BorderSizePixel			= 0;
391
		Position 				= UDim2.new(0.699999988, 0, 0, 0);
392
		Size 					= UDim2.new(0.300000012, 0, 1, 0);
393
		Text 					= '[EXAMPLE]';
394
		TextColor3 				= Color3.new(0.839216, 0.839216, 0.839216);
395
		Font 					= Enum.Font.SciFi;
396
		FontSize 				= Enum.FontSize.Size14;
397
		TextStrokeColor3		= Color3.new(0.380392, 0.380392, 0.380392);
398
		TextStrokeTransparency	= 0;
399
		Transparency 			= 0.5
400
	}
401
	
402
	local UIListLayout = create('UIListLayout', ScrollingFrame){
403
		Padding 				= UDim.new(0, 4);
404
		HorizontalAlignment 	= Enum.HorizontalAlignment.Center
405
	}
406
	
407
	local UIPadding = create('UIPadding', ScrollingFrame){}
408
409
	local ESP_GUI = create('BillboardGui'){
410
		Active 					= true;
411
		AlwaysOnTop				= true;
412
		StudsOffsetWorldSpace	= Vector3.new(0, 4, 0);
413
		Size 					= UDim2.new(0, 25, 0, 12)
414
	}
415
	
416
	create('TextLabel', ESP_GUI){
417
		Name 					= 'Target';
418
		BackgroundColor3		= Color3.new(1, 1, 1);
419
		BackgroundTransparency	= 1;
420
		BorderSizePixel			= 0;
421
		Size 					= UDim2.new(1, 0, 0, 20);
422
		Text 					= '';
423
		TextColor3 				= Color3.new(1, 0, 0);
424
		Font 					= Enum.Font.GothamBlack;
425
		TextSize 				= 16;
426
		TextScaled				= true;
427
		TextStrokeTransparency	= 0.20000000298023;
428
		TextWrapped				= true
429
	}
430
	
431
	create('TextLabel', ESP_GUI){
432
		Name 					= 'Dist';
433
		BackgroundColor3		= Color3.new(1, 1, 1);
434
		BackgroundTransparency	= 1;
435
		Position 				= UDim2.new(0, 0, 0.349999994, 0);
436
		Size 					= UDim2.new(1, 0, 0, 20);
437
		Text 					= '';
438
		TextColor3 				= Color3.new(1, 0, 0.498039);
439
		Font 					= Enum.Font.Ubuntu;
440
		FontSize 				= Enum.FontSize.Size14;
441
		TextScaled 				= true;
442
		TextStrokeTransparency	= 0.20000000298023;
443
		TextWrapped				= true
444
	}
445
	
446
	
447
	local Float = function()
448
		return create('Part', World){
449
			Size = Vector3.new(6, 1.8, 6);
450
			Transparency = 1;
451
			CanCollide = false;
452
			Anchored = true
453
		}
454
	end
455
	
456
	return create, Main, Frame1, Folder, Folder3, ESP_GUI, Float
457
end
458
459
local Create, Menu, Button, Chams, ESPFolder, Billboard, Float = FormAssets()
460
461
local Functions;
462
Functions = {
463
	['Menu'] 		= function()
464
		Menu['Enabled'] = not (Menu['Enabled']);
465
	end;
466
	
467
	['Floaty'] = function(change)
468
		local FloatySettings = Settings.Floaty
469
		if not Floaty then Floaty = Float() end
470
		
471
		if (change:lower() == 'toggle') then
472
			FloatySettings.Enabled = not FloatySettings.Enabled
473
		end
474
		
475
		if (change:lower() == 'up') then
476
			FloatySettings.Height = 2
477
			FloatySettings.UI.Key.Text = '[ \'UP\' ]'
478
			return
479
		elseif (change:lower() == 'still') then
480
			FloatySettings.Height = 3.9
481
			FloatySettings.UI.Key.Text = '[ \'STILL\' ]'
482
			return
483
		elseif (change:lower() == 'down') then
484
			FloatySettings.Height = 6
485
			FloatySettings.UI.Key.Text = '[ \'DOWN\' ]' 
486
			return
487
		end			
488
				
489
		if FloatySettings.Enabled then
490
			Floaty.CanCollide = true
491
492
			coroutine.wrap(function()
493
				while FloatySettings.Enabled and wait() and Floaty do
494
					local Char = Player.Character or Player.CharacterAdded:wait()
495
					local RootPart = Char and Char:FindFirstChild('HumanoidRootPart')
496
					
497
					if RootPart then
498
						Floaty.CFrame = CFrame.new(RootPart.CFrame.x, RootPart.CFrame.y - FloatySettings.Height, RootPart.CFrame.z)
499
					end
500
				end
501
502
				if Foaty then
503
					Floaty.CanCollide = false
504
				end
505
			end)()
506
		elseif Floaty then
507
			Floaty.CanCollide = false
508
		end
509
	end;
510
511
	['ESP'] = function()
512
		local ESPSettings = Settings.ESP
513
514
		ESPSettings.Enabled = not ESPSettings.Enabled
515
516
		ESPFolder:ClearAllChildren()
517
		if ESPSettings.Enabled then
518
			if Temp['ESP'] then 
519
				Temp['ESP']:Disconnect()
520
				Temp['ESP'] = nil
521
			end
522
523
			local function HandleESP(model, player)
524
				if (player == Player) then return end
525
526
				local RootPart = model:WaitForChild('HumanoidRootPart', 1)
527
				if not RootPart then return end
528
529
				local Bill = Billboard:Clone()
530
				local Folder, targetCon, playerCon;
531
				local modeModel = (player and ESPSettings.Options[2]) or ESPSettings.Options[3] 
532
				local modeESP = ESPSettings.Options[ESPSettings.Current]
533
534
				if player then
535
					local name = player['Name']
536
					if (#name > 20) then
537
						name = name:sub(1, 20) .. '...'
538
					end
539
540
					local teammate = (player.TeamColor == Player.TeamColor)
541
					Folder = Create('Folder', ESPFolder){Name = name}
542
					Bill.Target.Text 		= name..(((player.TeamColor == Player.TeamColor) and ' [T]') or '')
543
					Bill.Target.TextColor3 	= player.TeamColor.Color
544
545
					local function teamChanged()
546
						local name = player['Name']
547
						if (#name > 20) then
548
							name = name:sub(1, 20) .. '...'
549
						end
550
551
						Bill.Target.Text 		= name..(((player.TeamColor == Player.TeamColor) and ' [T]') or '')
552
						Bill.Target.TextColor3 	= player.TeamColor.Color
553
					end
554
555
					targetCon = player:GetPropertyChangedSignal('TeamColor'):Connect(teamChanged)
556
					playerCon = Player:GetPropertyChangedSignal('TeamColor'):Connect(teamChanged)
557
				else
558
					local name = model['Name']
559
					if (#name > 20) then
560
						name = name:sub(1, 20) .. '...'
561
					end
562
563
					Folder = Create('Folder', ESPFolder){Name = 'NPC: '..name}
564
					Bill.Target.Text 		= 'NPC: '..name
565
				end
566
567
				Bill.Enabled 			= (ESPSettings.Current == 1) or (modeESP == modeModel)
568
				Bill.Adornee 			= RootPart
569
				Bill.Parent 			= Folder
570
571
				local modeChanged = Events.ESP.Event:Connect(function(kind)
572
					if kind == 'change' then
573
						modeESP 		= ESPSettings.Options[ESPSettings.Current]
574
						Bill.Enabled 	= (ESPSettings.Current == 1) or (modeESP == modeModel)
575
					end
576
				end)
577
				
578
				PlayerModel = Player.Character or Player.CharacterAdded:wait()
579
580
				while model:IsDescendantOf(World) and Folder:IsDescendantOf(CoreGUI) and ESPSettings.Enabled do
581
					local CHRP = PlayerModel and PlayerModel:FindFirstChild('HumanoidRootPart')
582
					if CHRP then
583
						Bill.Dist.Text = ""
584
					end
585
586
					wait()
587
				end
588
589
				Folder.Parent = nil
590
				if targetCon then targetCon:Disconnect() end
591
				if playerCon then playerCon:Disconnect() end
592
				modeChanged:Disconnect()
593
			end
594
595
			for model, player in next, (Targets) do
596
				if not ESPSettings.Enabled then
597
					break
598
				end
599
600
				coroutine.wrap(function()
601
					HandleESP(model, player)
602
				end)()
603
			end
604
605
			if not ESPSettings.Enabled then return end
606
			Temp['ESP'] = Events.Targets.Event:Connect(function(kind, model)
607
				if (kind == 'added') then
608
					coroutine.wrap(function()
609
						HandleESP(model, Targets[model])
610
					end)()
611
				end
612
			end)
613
614
		elseif Temp['ESP'] then
615
			Temp['ESP']:Disconnect()
616
			Temp['ESP'] = nil
617
		end
618
	end,
619
620
	['Team Chams'] = function(mainbutton)
621
		local TeamSettings = Settings.Chams.Team
622
		if mainbutton then
623
			TeamSettings.Enabled = not TeamSettings.Enabled
624
		end
625
626
		for __, handle in next, (Chams['Team']:GetDescendants()) do
627
			if handle:IsA('BoxHandleAdornment') then
628
				handle.Color3 = TeamSettings.Color[2]
629
				handle.Visible = TeamSettings.Enabled
630
			end
631
		end
632
	end,
633
634
	['Enemy Chams'] = function(mainbutton)
635
		local ChamSettings = Settings.Chams
636
		local EnemySettings = ChamSettings.Enemy
637
		if mainbutton then
638
			EnemySettings.Enabled = not EnemySettings.Enabled
639
		end
640
641
		for __, handle in next, (Chams['Enemy']:GetDescendants()) do
642
			if handle:IsA('BoxHandleAdornment') then
643
				handle.Color3 = EnemySettings.Color[2]
644
				handle.Visible = EnemySettings.Enabled
645
			end
646
		end
647
	end,
648
649
	['Toggle Chams'] = function()
650
		local ChamSettings = Settings.Chams
651
		local TeamSettings = ChamSettings.Team
652
		local EnemySettings = ChamSettings.Enemy
653
654
		ChamSettings.Enabled = not ChamSettings.Enabled
655
		Chams['Team']:ClearAllChildren()
656
		Chams['Enemy']:ClearAllChildren()
657
658
		if ChamSettings.Enabled then
659
			local function HandleChams(model, player)
660
				if (player == Player) then return end
661
662
				local RootPart = model:WaitForChild('HumanoidRootPart', 1)
663
				if not RootPart or (not player and #model:GetDescendants() > 300) then
664
					return
665
				end
666
667
				local Folder, FoldCon, pTeamCon, PTeamCon, ModelCon;
668
				local isFriendly = player and (player.TeamColor == Player.TeamColor) 
669
				if player then
670
					Folder = Create('Folder', (isFriendly and Chams['Team']) or Chams['Enemy']){Name = player['Name']}
671
672
					local function teamChanged()
673
						if not Folder:IsDescendantOf(CoreGUI) then 
674
							if pTeamCon then pTeamCon:Disconnect() end
675
							if PTeamCon then PTeamCon:Disconnect() end 
676
							return 
677
						end
678
679
						isFriendly = (player.TeamColor == Player.TeamColor) 
680
						if isFriendly then
681
							if Folder:IsDescendantOf(Chams['Enemy']) then
682
								Folder.Parent = Chams['Team']
683
							end
684
685
							for __, handle in next, (Folder:GetChildren()) do
686
								handle.Color3 = TeamSettings.Color[2]
687
								handle.Visible = TeamSettings.Enabled
688
							end
689
						else
690
							if Folder:IsDescendantOf(Chams['Team']) then
691
								Folder.Parent = Chams['Enemy']
692
							end
693
694
							for __, handle in next, (Folder:GetChildren()) do
695
								handle.Color3 = EnemySettings.Color[2]
696
								handle.Visible = EnemySettings.Enabled
697
							end
698
						end
699
					end
700
701
					pTeamCon = player:GetPropertyChangedSignal('TeamColor'):Connect(teamChanged)
702
					PTeamCon = Player:GetPropertyChangedSignal('TeamColor'):Connect(teamChanged)
703
704
				else
705
					Folder = Create('Folder', Chams['Enemy']){Name = model['Name']}
706
				end
707
708
				for __, part in next, (model:GetChildren()) do
709
					if part:IsA('BasePart') then
710
						if isFriendly then
711
							Create('BoxHandleAdornment', Folder)
712
							{
713
								Color3 = TeamSettings.Color[2];
714
								AlwaysOnTop = true;
715
								Transparency = ChamSettings.Transparency;
716
								Visible = TeamSettings.Enabled;
717
								ZIndex = 10;
718
								
719
								Size = (part['Name'] == 'Head' and Vector3.new(1.25, 1.3, 1.25))
720
									or (Vector3.new(.5, .5, .5) + part.Size)
721
							}['Adornee'] = part
722
						else
723
							Create('BoxHandleAdornment', Folder)
724
							{
725
								Color3 = EnemySettings.Color[2];
726
								AlwaysOnTop = true;
727
								Transparency = ChamSettings.Transparency;
728
								Visible = EnemySettings.Enabled;
729
								ZIndex = 10;
730
								
731
								Size = (part['Name'] == 'Head' and Vector3.new(1.25, 1.3, 1.25))
732
									or (Vector3.new(.5, .5, .5) + part.Size)
733
							}['Adornee'] = part
734
						end
735
					end
736
				end
737
738
				FoldCon = Folder:GetPropertyChangedSignal('Parent'):Connect(function()
739
					if not Folder:IsDescendantOf(CoreGUI) then
740
						if pTeamCon then pTeamCon:Disconnect() end
741
						if PTeamCon then PTeamCon:Disconnect() end
742
						if ModelCon then ModelCon:Disconnect() end
743
744
						FoldCon:Disconnect()
745
					end
746
				end)
747
748
				if not model:IsDescendantOf(World) or not Folder:IsDescendantOf(CoreGUI) then
749
					if pTeamCon then pTeamCon:Disconnect() end
750
					if PTeamCon then PTeamCon:Disconnect() end
751
					if FoldCon then FoldCon:Disconnect() end
752
753
					Folder.Parent = nil
754
				end
755
				ModelCon = Events.Targets.Event:Connect(function(kind, rmodel)
756
					if (kind == 'removed') and (rmodel == model) then
757
						if pTeamCon then pTeamCon:Disconnect() end
758
						if PTeamCon then PTeamCon:Disconnect() end
759
						if FoldCon then FoldCon:Disconnect() end
760
761
						Folder.Parent = nil
762
						ModelCon:Disconnect()
763
					end
764
				end)
765
			end
766
767
			for model, player in next, (Targets) do
768
				if not ChamSettings.Enabled then
769
					break
770
				end
771
772
				coroutine.wrap(function()
773
					HandleChams(model, player)
774
				end)()
775
			end
776
777
			if not ChamSettings.Enabled then return end
778
			Temp['Chams'] = Events.Targets.Event:Connect(function(kind, model)
779
				if (kind == 'added') then
780
					coroutine.wrap(function()
781
						HandleChams(model, Targets[model])
782
					end)()
783
				end
784
			end)
785
786
		elseif Temp['Chams'] then
787
			Temp['Chams']:Disconnect()
788
			Temp['Chams'] = nil
789
		end
790
	end,
791
792
	['Fullbright'] = function(mainbutton)
793
		local Fullbright = Settings.Fullbright		
794
		if mainbutton then 
795
			Fullbright.Enabled = not Fullbright.Enabled
796
		end
797
		
798
		local function Handle()
799
			local Setting = Fullbright.Options[Fullbright.Current]
800
			local Settings = Fullbright.OptionDefs[Setting]
801
			
802
			
803
			Fullbright.UI.Key['Text'] = '[ \'' .. Setting .. '\' ]'
804
			Lighting.Ambient = Settings.InAmbience;
805
			Lighting.OutdoorAmbient = Settings.OutAmbience;
806
			Lighting.Brightness = Settings.Brightness;
807
			Lighting.FogStart = Settings.Fog;
808
			Lighting.FogEnd = Settings.Fog;
809
		end		
810
		
811
		if (not Fullbright.Enabled) then
812
			Fullbright.Current = 3
813
		end
814
		
815
		Handle()
816
	end;
817
	
818
	['Aimbot'] = function(Aimbot)
819
		local IgnorePlayersNamed = {A1_exe=true} -- Name = true or false
820
		--[[
821
			[J] - To go down the list.
822
			[U] - To go up the list.
823
			[H] - To toggle that item in the list.
824
			[RMB] - To aim at your target using the current settings. (THIS UPDATES IN LIVE TIME SO YOU DON'T HAVE TO STOP AIMING FOR IT TO TAKE EFFECT)
825
		--]]
826
827
		local ResizeUI = function(ui,downscale,byclass)
828
			if not rawequal(ui['ClassName'], 'ScrollingFrame') then return end
829
			
830
			local count = 0;	
831
			for __, asset in next, (ui:GetChildren()) do
832
				if rawequal(asset['ClassName'],byclass) then
833
					count = count + 1
834
				end
835
			end
836
			
837
			ui['CanvasSize'] = UDim2.new(ui.CanvasSize.X.Scale,ui.CanvasSize.X.Offset,ui.CanvasSize.Y.Scale,downscale*count)
838
		end
839
		
840
		local ffc, ffoc, cast, ray = World.FindFirstChild, World.FindFirstChildOfClass, World.FindPartOnRayWithIgnoreList, Ray.new
841
		local selection, status = Aimbot.Selection, Aimbot.Status
842
843
		local MakeAimUI = function()
844
			local GUI = Create('ScreenGui', CoreGUI){
845
				Name = '___';
846
				On
847
			}
848
			
849
			local Frame = Create('ScrollingFrame', GUI){
850
				BackgroundTransparency	= 1,
851
				BorderSizePixel			= 0,
852
				Name 					= 'Options',
853
				Position 				= UDim2.new(.8,0,.915,0),
854
				Size 					= UDim2.new(.2,0,0,30),
855
				ZIndex 					= 10,
856
				ClipsDescendants		= true,
857
				CanvasSize 				= UDim2.new(0,0,0,0),
858
				CanvasPosition 			= Vector2.new(0, current_pos),
859
				ScrollBarThickness 		= 0,
860
				ScrollingEnabled 		= false,
861
			}
862
			
863
			local UILL 					= Create('UIListLayout', Frame){
864
				Name 					= 'LayoutHandler',
865
				FillDirection			= 'Vertical',
866
				HorizontalAlignment		= 'Center',
867
				SortOrder 				= 'LayoutOrder',
868
				VerticalAlignment		= 'Top'
869
			}
870
			
871
			local Template = Create('TextButton'){
872
				BackgroundTransparency	= 1,
873
				BorderSizePixel			= 0,
874
				Name 					= 'Template',
875
				Size 					= UDim2.new(.9,0,0,30),
876
				Font 					= 'SciFi',
877
				Text 					= '',
878
				TextColor3 				= Color3.fromRGB(255,255,255),
879
				TextScaled 				= true,
880
				TextWrapped 		          	= true,
881
			} 
882
			
883
			local TSC = Create('UISizeConstraint', Template){
884
				Name 					= 'TemplateSizeConstraint',		
885
				MaxSize 				= Vector2.new(math.huge,30),
886
			}
887
			
888
			Frame['ChildAdded']:Connect(function()
889
				ResizeUI(Frame, 30, 'TextButton')
890
			end)
891
			
892
			for ___, packed_option in next, Aimbot.Menu do
893
				local option, val = unpack(packed_option)
894
				status[option] = val
895
896
				local tp = Template:Clone()
897
				tp.LayoutOrder = sel_pos
898
				tp.Name = option
899
900
				if option:match('Hide') then
901
					tp.Text = ':: ' .. option .. ' ::'
902
					tp.TextColor3 = Color3.fromRGB(220, 100, 220)
903
				else
904
					tp.Text = option .. ': ' .. tostring(val)
905
					if status[option] then
906
						tp.TextColor3 = Color3.fromRGB(0,255,0)
907
					else
908
						tp.TextColor3 = Color3.fromRGB(255,0,0)
909
					end
910
				end
911
				
912
				table.insert(selection, tp)	
913
				tp.Parent = Frame
914
			end
915
916
			return Frame
917
		end
918
919
		local ActiveUI = MakeAimUI()
920
		Aimbot.ActiveUI = ActiveUI
921
		
922
		local function cast_ray(p0,p1,blacklist)
923
			local Part
924
			local __=0
925
			repeat
926
				__=__+1
927
				local cond=(p1-p0).magnitude < 999
928
				Part,p0=cast(workspace,ray(p0,cond and p1-p0 or (p1-p0).unit*999),blacklist)
929
				if Part then
930
					local pname = tostring(Part):lower()
931
					if Part.CanCollide == false or Part.Transparency >= 0.7 or ((pname:match('glass') or pname:match('window')) and Part.Transparency >= .3) or ffoc(Part.Parent, 'Humanoid') then
932
						blacklist[#blacklist+1]=Part
933
						Part=nil
934
					end
935
				elseif cond or __ > 15 then
936
					break
937
				end
938
			until Part
939
			return Part,p0
940
		end
941
		
942
		Run.RenderStepped:Connect(function()
943
			if status['Enabled'] and (Inputs[Enum.UserInputType.MouseButton2] or status['AutoAim']) then
944
				local close, range, dot, face = false, math.huge, -1
945
				for model, player in next, (Targets) do
946
					if (player == Player) then continue end
947
					if not status['CamCheck'] and model:IsDescendantOf(PlayerCamera) then
948
						continue
949
					end
950
951
					local modeModel = (player and Aimbot.ModeOptions[2]) or Aimbot.ModeOptions[3] 
952
					local modeAimbot = Aimbot.ModeOptions[Aimbot.Mode]
953
					if (Aimbot.Mode ~= 1) and (modeModel ~= modeAimbot) then
954
						continue
955
					end
956
957
					local hum = ffoc(model, 'Humanoid')
958-
					if not hum or not hum.Parent then continue end 
958+
959-
					local part = hum.Parent:FindFirstChildWhichIsA("Part")
959+
960
					
961-
					if root ~= nil or hum ~= nil then
961+
962
					if root ~= nil then
963-
    						local vector, onScreen = camera135:WorldToViewportPoint((root and root.position) or part.position)
963+
964
    						local vector, onScreen = camera135:WorldToViewportPoint(root.position)
965
							if not onScreen then
966
								continue
967
							end
968
					end
969
970
971
					if not Inputs[Enum.UserInputType.MouseButton2] and not status['AutoAim'] then return end
972
					
973
					if IgnorePlayersNamed[model['Name']] or (player and IgnorePlayersNamed[player['Name']]) or ffoc(model, 'ForceField') then continue end
974-
					if (not root and not part) or (status['HeadsOnly'] and not head and not part) then continue end
974+
975
					if not root or (status['HeadsOnly'] and not head) then continue end
976
						
977
					if hum and hum['Health'] > 0 then
978
						if player and status['TeamCheck'] then
979
							if Player['TeamColor'] == player['TeamColor'] then
980
								continue
981
							end
982
						end
983
						
984-
						local pos 		= ((head and (status['HeadsOnly'] or (status['Shake'] and math.random(1, 10) < 6))) and head.Position) or (root and root.Position) or part.position
984+
985
						local pos 		= ((head and (status['HeadsOnly'] or (status['Shake'] and math.random(1, 10) < 6))) and head.Position) or root.Position
986
						local dist 		= (pos-cc.p).magnitude
987
						
988
						local RangeVal = Aimbot.RangeOptions[Aimbot.Range]
989
						if (RangeVal ~= math.huge) and (dist > RangeVal) then
990
							continue
991
						end
992
							
993
						local hitPart;
994
						if status['RayCheck'] then 
995
							hitPart = cast_ray(cc.p,pos,{PlayerCamera,PlayerModel})
996
						end
997
						if not (status['RayCheck'] and hitPart) or model:IsAncestorOf(hitPart) then
998
							local m = (pos-cc.p).unit:Dot(cc.lookVector)
999
1000
							if (dist <= Aimbot.CloseRange) then
1001
								close = true
1002
							end
1003
1004
							if close then
1005
								if (dist < range) then
1006
									dot, face, range = m, pos, dist
1007
								end
1008
							elseif (m > dot) then
1009
								dot, face, range = m, pos, dist
1010
							end
1011
						end
1012
					end
1013
				end
1014
				
1015
				if face then
1016
					
1017
			       
1018-
						--PlayerCamera.CFrame = CFrame.lookAt(PlayerCamera.CFrame
1018+
1019-
						PlayerCamera.CFrame = CFrame.new(PlayerCamera.CFrame.p,face) * CFrame.new(0,0,0.5)
1019+
						--PlayerCamera.CFrame = CFrame.new(PlayerCamera.CFrame.p,face) * CFrame.new(0,0,0.5)
1020
                        local Pos, InFront = PlayerCamera:WorldToScreenPoint(face)
1021
                        local TargetX, TargetY = (InFront and Pos.x) or -Pos.x, Pos.y
1022
                        local MouseX, MouseY = PlayerMouse.X, PlayerMouse.Y
1023
                        local NewX, NewY = math.abs(MouseX - TargetX), math.abs(MouseY - TargetY)
1024
                        local Inc = GameSettings.MouseSensitivity * (17/3)
1025
                        
1026
                        if (MouseX > TargetX) then
1027
                            NewX = -NewX/Inc
1028
                        else
1029
                            NewX = NewX/Inc
1030
                        end
1031
                       
1032
                        if (MouseY > TargetY) then
1033
                            NewY = -NewY/Inc
1034
                        else
1035
                            NewY = NewY/Inc
1036
                        end
1037
                        --mousemoveabs(TargetX/Inc, TargetY/Inc)
1038
						VirtualUser:MoveMouse(Vector2.new(TargetX/Inc, TargetY/Inc), PlayerCamera.CFrame)
1039
                    end
1040
				end
1041
			end
1042
		end)
1043
	end
1044
}
1045
1046
1047
for __, option in next, (Settings.Menu.Defaults) do
1048
	local Name, Functional, Setting = unpack(option)
1049
	local Func = GetFunc(Functions, Name)
1050
	local NewOption = Button:Clone()
1051
	
1052
	if Name == 'Menu' or Name:match('Written') then
1053
		NewOption['Status']['Style'] = 'Custom';
1054
		NewOption['Key']['TextStrokeColor3'] = Settings.Menu.Colors.Enabled
1055
	end
1056
	
1057
	NewOption['Text'].Text = Name
1058
	NewOption['Key'].Text = '[ '.. ((typeof(Setting) == 'EnumItem' and Setting.Name) or Setting) .. ' ]'		
1059
	NewOption.Parent = Menu['Main']['Buttons']
1060
	
1061
	if Func then
1062
		NewOption['Text']['MouseButton1Down']:Connect(function()
1063
			if not Functional then return end				
1064
			if NewOption.Status.Style.Name == 'DropShadow' then
1065
				NewOption.Status.Style = 'Custom'
1066
				NewOption['Key']['TextStrokeColor3'] = Settings.Menu.Colors.Enabled
1067
			elseif NewOption.Status.Style.Name == 'Custom' and not Name:match('Aimbot') then
1068
				NewOption.Status.Style = 'DropShadow'
1069
				NewOption['Key']['TextStrokeColor3'] = Settings.Menu.Colors.Disabled
1070
			end
1071
			
1072
			if (Name == 'Aimbot') and not Settings.Aimbot.Enabled then
1073
				Settings.Aimbot.Enabled = true
1074
1075
				-- Activate Mode UI --
1076
				Settings.Aimbot.ModeUI.Status.Style = 'Custom'
1077
				Settings.Aimbot.ModeUI['Key']['TextStrokeColor3'] = Settings.Menu.Colors.Enabled
1078
				----------------------
1079
1080
				Func(Settings.Aimbot)
1081
1082
			elseif (Name == 'Floaty') then
1083
				Func('Toggle')					
1084
				
1085
			else
1086
				Func(true)
1087
			end
1088
		end)
1089
	end
1090
		
1091
	if Name:match('Chams') then
1092
		local ChamSettings = Settings.Chams
1093
		local TeamSettings = ChamSettings.Team
1094
		local EnemySettings = ChamSettings.Enemy
1095
1096
		if Name == 'Team Chams' then
1097
			NewOption['Key'].Text = '[ \''..TeamSettings.Color[1]..'\' ]'
1098
			
1099
			NewOption['Key']['MouseButton1Down']:Connect(function()
1100
				local ChamColors = ChamSettings.Colors
1101
				if not TeamSettings.Enabled then return end
1102
				local Tab, Pos = GetColor(ChamColors, TeamSettings.Color[1])
1103
1104
				if (Pos + 1) < #ChamColors then
1105
					TeamSettings.Color = ChamColors[Pos + 1]
1106
				else
1107
					TeamSettings.Color = ChamColors[1]
1108
				end
1109
				
1110
				NewOption['Key'].Text = '[ \''..TeamSettings.Color[1]..'\' ]'
1111
				Func()
1112
			end)
1113
1114
		elseif Name == 'Enemy Chams' then
1115
			NewOption['Key'].Text = '[ \''..EnemySettings.Color[1]..'\' ]'
1116
			
1117
			NewOption['Key']['MouseButton1Down']:Connect(function()
1118
				local ChamColors = ChamSettings.Colors
1119
				if not EnemySettings.Enabled then return end
1120
				local Tab, Pos = GetColor(ChamColors, EnemySettings.Color[1])
1121
1122
				if (Pos + 1) < #ChamColors then
1123
					EnemySettings.Color = ChamColors[Pos + 1]
1124
				else
1125
					EnemySettings.Color = ChamColors[1]
1126
				end
1127
			
1128
				NewOption['Key'].Text = '[ \''..EnemySettings.Color[1]..'\' ]'
1129
				Func()
1130
			end)
1131
1132
		elseif Name == 'Toggle Chams' then
1133
			NewOption['Key'].Text = '[ \'' .. ChamSettings.Transparency .. '\' ]'
1134
			
1135
			NewOption['Key']['MouseButton1Down']:Connect(function()
1136
				if not ChamSettings.Enabled then return end
1137
1138
				local Trans = ChamSettings.Transparency
1139
				ChamSettings.Transparency = (Trans < .8 and Trans + (1/10)) or 0 
1140
				
1141
				for __, handle in next, (Chams:GetDescendants()) do
1142
					if handle:IsA('BoxHandleAdornment') then
1143
						handle.Transparency = ChamSettings.Transparency
1144
					end
1145
				end
1146
				
1147
				NewOption['Key'].Text = '[ \'' .. ChamSettings.Transparency .. '\' ]'
1148
			end)
1149
		end
1150
	elseif Name == 'Fullbright' then
1151
		local Fullbright = Settings.Fullbright
1152
		Fullbright.UI = NewOption
1153
		
1154
		NewOption['Key']['MouseButton1Down']:Connect(function()
1155
			if not Fullbright.Enabled then return end
1156
			if Fullbright.Current < #Fullbright.Options	 then
1157
				Fullbright.Current = Fullbright.Current + 1
1158
			else
1159
				Fullbright.Current = 1
1160
			end
1161
			Func(false)
1162
		end)
1163
	
1164
	elseif Name == 'ESP' then
1165
		local ESP = Settings.ESP
1166
		NewOption['Key'].Text = '[ \'' .. ESP.Options[ESP.Current] .. '\' ]'
1167
		
1168
		NewOption['Key']['MouseButton1Down']:Connect(function()
1169
			if not ESP.Enabled then return end
1170
			if ESP.Current < #ESP.Options	 then
1171
				ESP.Current = ESP.Current + 1
1172
			else
1173
				ESP.Current = 1
1174
			end
1175
1176
			Events.ESP:Fire('change')
1177
			NewOption['Key'].Text = '[ \'' .. ESP.Options[ESP.Current] .. '\' ]'
1178
		end)
1179
	elseif Name == 'Aimbot' then
1180
		local Aimbot = Settings.Aimbot
1181
		local RangeVal = Aimbot.RangeOptions[Aimbot.Range]
1182
		if RangeVal == math.huge then
1183
			NewOption['Key'].Text = '[ ∞ ]'
1184
		else
1185
			NewOption['Key'].Text = '[ ' .. RangeVal .. ' ]'
1186
		end
1187
1188
		NewOption['Key']['MouseButton1Down']:Connect(function()
1189
			if not Aimbot.Enabled then return end
1190
			if Aimbot.Range < #Aimbot.RangeOptions then
1191
				Aimbot.Range = Aimbot.Range + 1
1192
			else
1193
				Aimbot.Range = 1
1194
			end
1195
1196
			local RangeVal = Aimbot.RangeOptions[Aimbot.Range]
1197
			if RangeVal == math.huge then
1198
				NewOption['Key'].Text = '[ ∞ ]'
1199
			else
1200
				NewOption['Key'].Text = '[ ' .. RangeVal .. ' ]'
1201
			end
1202
		end)
1203
	elseif Name == 'Aimbot Mode' then
1204
		local Aimbot = Settings.Aimbot
1205
		Aimbot.ModeUI = NewOption
1206
		NewOption['Key'].Text = '[ \'' .. Aimbot.ModeOptions[Aimbot.Mode] .. '\' ]'
1207
		
1208
		NewOption['Key']['MouseButton1Down']:Connect(function()
1209
			if not Aimbot.Enabled then return end
1210
			if Aimbot.Mode < #Aimbot.ModeOptions then
1211
				Aimbot.Mode = Aimbot.Mode + 1
1212
			else
1213
				Aimbot.Mode = 1
1214
			end
1215
1216
			NewOption['Key'].Text = '[ \'' .. Aimbot.ModeOptions[Aimbot.Mode] .. '\' ]'
1217
		end)
1218
	elseif Name == 'Floaty' then
1219
		local Floaty = Settings.Floaty
1220
		Floaty.UI = NewOption
1221
		
1222
		NewOption['Key']['MouseButton1Down']:Connect(function()
1223
			if not Floaty.Enabled then return end
1224
			if Floaty.Current < #Floaty.Options	 then
1225
				Floaty.Current = Floaty.Current + 1
1226
			else
1227
				Floaty.Current = 1
1228
			end
1229
			Func(Floaty.Options[Floaty.Current])
1230
		end)
1231
	end
1232
end
1233
1234
--[[Players.PlayerRemoving:Connect(function(player)
1235
	local ESP = ESPFolder:FindFirstChild(player['Name'])
1236
	
1237
	if ESP then ESP['Parent'] = nil end
1238
end)]]
1239
1240
local function toggle(button)
1241
	local Aimbot = Settings.Aimbot
1242
	local ActiveUI = Aimbot.ActiveUI
1243
	local status = Aimbot.Status
1244
	local text = button['Text']
1245
	if text:match('Hide') then
1246
		status['Hide Menu'] = not status['Hide Menu']
1247
		if (status['Hide Menu']) then
1248
			ActiveUI.Visible = false
1249
		else
1250
			ActiveUI.Visible = true
1251
		end
1252
		return
1253
	end
1254
1255
	local option, val = text:match('%s*(.*)%s*:%s*(.*)')
1256
	status[option] = not status[option]
1257
1258
	if status[option] then
1259
		button.TextColor3 = Color3.fromRGB(0,255,0)
1260
	else
1261
		button.TextColor3 = Color3.fromRGB(255,0,0)
1262
	end
1263
1264
	button.Text = option .. ': ' .. tostring(status[option])
1265
end
1266
1267
Input.InputBegan:Connect(function(input, procc)
1268
	Keys[input.KeyCode], Inputs[input.UserInputType] = true, true
1269
	
1270
	if procc then return end
1271
	if not input.UserInputType == Enum.UserInputType.Keyboard then
1272
		return
1273
	end
1274
1275
	-- MENU/Floaty --
1276
	if input.KeyCode == Enum.KeyCode.Delete then
1277
		Functions['Menu']()
1278
	elseif input.KeyCode == Enum.KeyCode.B then
1279
		Functions['Floaty']('Up')
1280
	elseif input.KeyCode == Enum.KeyCode.N then
1281
		Functions['Floaty']('Still')
1282
	elseif input.KeyCode == Enum.KeyCode.M then
1283
		Functions['Floaty']('Down')	
1284
	end
1285
1286
	-- AIMBOT --
1287
	local Aimbot = Settings.Aimbot
1288
	local ActiveUI = Aimbot.ActiveUI
1289
	if not ActiveUI then return end
1290
1291
	if input.KeyCode == Enum.KeyCode.H then
1292
		toggle(Aimbot.Selection[Aimbot.Selected])
1293
1294
	elseif not Aimbot.Status['Hide Menu'] then
1295
		if input.KeyCode == Enum.KeyCode.U then
1296
			if (Aimbot.Selected > 1) then
1297
				Aimbot.Selected = Aimbot.Selected - 1
1298
			else
1299
				Aimbot.Selected = #Aimbot.Selection
1300
			end
1301
1302
		elseif input.KeyCode == Enum.KeyCode.J then
1303
			if (Aimbot.Selected < #Aimbot.Selection) then
1304
				Aimbot.Selected = Aimbot.Selected + 1
1305
			else
1306
				Aimbot.Selected = 1
1307
			end
1308
		end
1309
1310
		Aimbot.Scrolled = 30 * (Aimbot.Selected - 1)
1311
		ActiveUI.CanvasPosition = Vector2.new(0, Aimbot.Scrolled)
1312
	end
1313
end)
1314
1315
Input.InputEnded:Connect(function(input, procc)
1316
	Keys[input.KeyCode], Inputs[input.UserInputType] = false, false
1317
end)
1318
1319
local function TargetHandler(model)
1320
	if Targets[model] == nil then
1321
		local event;
1322
		Targets[model] = Players:GetPlayerFromCharacter(model) or false
1323
1324
		Events.Targets:Fire('added', model)
1325
		if not model:IsDescendantOf(World) then
1326
			if Targets[model] ~= nil then 
1327
				Events.Targets:Fire('removed', model)
1328
				Targets[model] = nil
1329
			end
1330
1331
			return
1332
		end
1333
1334
		event = model:GetPropertyChangedSignal('Parent'):Connect(function()
1335
			if model:IsDescendantOf(World) then return end
1336
1337
			if Targets[model] ~= nil then 
1338
				Events.Targets:Fire('removed', model)
1339
				Targets[model] = nil
1340
			end
1341
1342
			event:Disconnect()
1343
		end)
1344
	end
1345
end
1346
1347
Player['CharacterAdded']:Connect(function(char)
1348
	PlayerModel = char
1349
end)
1350
1351
for __, target in next, (World:GetDescendants()) do
1352
	coroutine.wrap(function()
1353
		if target:IsA('Model') and (target ~= PlayerModel) then
1354
			local hrp = target:WaitForChild('HumanoidRootPart', 1)
1355
			if hrp and hrp:IsA('BasePart') then
1356
				TargetHandler(target)
1357
			end
1358
		end
1359
	end)()
1360
end
1361
1362
World.DescendantAdded:Connect(function(target)
1363
	if target:IsA('Model') and (target ~= PlayerModel) then
1364
		local hrp = target:WaitForChild('HumanoidRootPart', 1)
1365
		if hrp and hrp:IsA('BasePart') then
1366
			coroutine.wrap(function()
1367
				TargetHandler(target)
1368
			end)()
1369
		end
1370
	end
1371
end) 
1372
1373
Menu.Parent = CoreGUI