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 |