Last active
December 23, 2020 00:21
-
-
Save A1-exe/86df9fb8d809b5f23436d5674966df47 to your computer and use it in GitHub Desktop.
The latest can be found at: https://gist.github.com/A1-exe/eaea4194ddc4a2e8d726717b3d706201
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--[[ | |
__/\\\\____________/\\\\_________________________________________________________ | |
_\/\\\\\\________/\\\\\\_________________________________________________________ | |
_\/\\\//\\\____/\\\//\\\_________________________________________________________ | |
_\/\\\\///\\\/\\\/_\/\\\_____/\\\\\_____/\\/\\\\\\\___/\\\\\\\\\\_____/\\\\\\\\__ | |
_\/\\\__\///\\\/___\/\\\___/\\\///\\\__\/\\\/////\\\_\/\\\//////____/\\\/////\\\_ | |
_\/\\\____\///_____\/\\\__/\\\__\//\\\_\/\\\___\///__\/\\\\\\\\\\__/\\\\\\\\\\\__ | |
_\/\\\_____________\/\\\_\//\\\__/\\\__\/\\\_________\////////\\\_\//\\///////___ | |
_\/\\\_____________\/\\\__\///\\\\\/___\/\\\__________/\\\\\\\\\\__\//\\\\\\\\\\_ | |
_\///______________\///_____\/////_____\///__________\//////////____\//////////__ | |
[A1.exe#1168] | |
FIRST PERSON SHOOTERS | |
------------------------ | |
-: CHANGELOG :- | |
------------------------ | |
3.5: | |
- Miscellaneous code changes... | |
- Got lazy and stopped keeping track of versions | |
- Brought back Chams and fixed old issues | |
- Removed WallHack | |
- Fixed ESP issues | |
- Completely rewrote aimbot to use mouse dragging | |
- Fixed an issue with looking opposite of the target | |
- Added Shake option to aimbot | |
- Added MaxRange option to aimbot | |
- Added Hide option to aimbot | |
------------------------ | |
-: NOTES :- | |
------------------------ | |
- Pressing `Esc` or `F9` lets u focus on using this menu fully | |
- This script relies heavily on Synapse's anti CoreGui detection methods. | |
- Use at your own risk. | |
- This script is laggy on some games... It is what it is. | |
- Games with custom drag implementations kinda screw this script | |
Esp: | |
- This is pretty much safe. | |
Chams: | |
- This is very easily detected. | |
- Be careful using this. | |
Aimbot: | |
- This is pretty much safe, as it | |
relies entirely on dragging the mouse. | |
- Works better on lower sensitivities | |
- Players within CloseRange (75 studs) | |
are targeted by who's closest. | |
- Increase depth to search workspace | |
further. Some games hide NPCs deeper in folders. | |
Fullbright: | |
- Messes with stuff, might get you banned. | |
Floaty: | |
- Messes with stuff, might get you banned. | |
------------------------ | |
-: CONTROLS :- | |
------------------------ | |
Menu: | |
Delete - Toggle | |
Chams: | |
Click [Toggle] to cycle colors | |
Aimbot: | |
H - Toggle | |
U - Up | |
J - Down | |
Floaty: | |
N - Still | |
B - Up | |
M - Down | |
--]] | |
local Run = game:GetService('RunService'); | |
local World = game:GetService('Workspace'); | |
local Input = game:GetService('UserInputService'); | |
local Lighting = game:GetService("Lighting"); | |
local Players = game:GetService('Players'); | |
local Player = Players['LocalPlayer']; | |
local GameSettings = UserSettings():GetService("UserGameSettings") | |
local Keys = {} | |
local Misc = { | |
CharFunctions = {}; | |
GUIColors = { | |
Enabled = Color3.fromRGB(46, 105, 132); | |
Disabled = Color3.new(.38, .38, .38); | |
}; | |
ChamsColors = { | |
{'White', Color3.new(1, 1, 1)}; | |
{'Black', Color3.new(0, 0, 0)}; | |
{'Red', Color3.new(1, 0, 0)}; | |
{'Green', Color3.new(0, 1, 0)}; | |
{'Blue', Color3.new(0, 0, 1)}; | |
{'Purple', Color3.new(0.65, 0, 0.65)}; | |
{'Yellow', Color3.new(1, 1, 0)}; | |
{'Grey', Color3.new(0.8, 0.8, 0.8)}; | |
} | |
} | |
local function GetFunc(tab, name) | |
for funcName, func in next, (tab) do | |
if string.lower(name):match(funcName:lower()) then | |
return func, funcName | |
end | |
end | |
end | |
local function GetColor(tab, name) | |
for index, colortab in next, (tab) do | |
if (colortab[1] == name) then | |
return colortab, index | |
elseif (colortab[2] == name) then | |
return colortab, index | |
end | |
end | |
end | |
local Settings = { | |
{'Menu', false, Enum.KeyCode.Delete}, | |
{'Team Chams [\'COLOR\']', true, 'Toggle'}, | |
{'Enemy Chams [\'COLOR\']', true, 'Toggle'}, | |
{'Chams Transparency', false, '0'}, | |
{'Fullbright', true, 'MAX'}, | |
{'Floaty', true, 'Still'}, | |
{'Aimbot', true, '<-'}, | |
{'ESP', true, '<-'}, | |
{'Written by: A1.exe#1168', false, 'Discord'} | |
} | |
------------ [[ GUI SPAWN ]] ------------ | |
FormAssets = function() | |
------ ERROR MAGIC ------ | |
local __ERROR__ = Instance.new('BindableEvent') | |
__ERROR__['Event']:Connect(error) | |
--------- CREATE FUNCTION --------- | |
local create = function(class, parent) | |
local instance = Instance.new(class); | |
return function(props) | |
for property, value in next, (props) do | |
if (property ~= 'Parent') and (typeof(value) ~= 'Instance') then | |
local suc, err = pcall(function() | |
instance[property] = value | |
end) | |
if not suc then __ERROR__:Fire('[Script->Asset]: ' .. err) end | |
elseif (property == 'Parent') then | |
parent = value | |
end | |
end | |
if parent and (typeof(parent) == 'Instance') then | |
instance['Parent'] = parent | |
end | |
return instance | |
end | |
end | |
------------------------------------- | |
------------------------------------- | |
-- SOME THINGS MAY BE OUT OF ORDER -- | |
----(INSTANCE RELATED PROPERTIES)---- | |
-------------(UNLIKELY)-------------- | |
------------------------------------- | |
------------------------------------- | |
local Main = create('ScreenGui'){ | |
Name = "FPS Hacks - Menu" | |
} | |
local Folder = create('Folder', Main){ | |
Name = 'Chams' | |
} | |
local Folder1 = create('Folder', Folder){ | |
Name = 'Team' | |
} | |
local Folder2 = create('Folder', Folder){ | |
Name = 'Enemy' | |
} | |
local Folder3 = create('Folder', Main){ | |
Name = 'ESP' | |
} | |
local Frame = create('Frame', Main){ | |
Name = "Main"; | |
BackgroundColor3 = Color3.new(1, 1, 1); | |
BackgroundTransparency = 1; | |
Position = UDim2.new(0.5, 0, 0.5, 0); | |
Size = UDim2.new(0, 250, 0, 190); | |
Draggable = true; | |
Active = true; | |
AnchorPoint = Vector2.new(0.5, 0.5); | |
Transparency = 1 | |
} | |
local TextLabel = create('TextLabel', Frame){ | |
Name = "Title"; | |
BackgroundColor3 = Color3.new(0.180392, 0.411765, 0.517647); | |
BorderSizePixel = 0; | |
Size = UDim2.new(1, 0, 0, 35); | |
Text = "FPS Hacks v3.0"; | |
TextColor3 = Color3.new(0.866667, 0.843137, 0.843137); | |
Font = Enum.Font.SciFi; | |
FontSize = Enum.FontSize.Size28; | |
TextWrapped = true | |
} | |
local ScrollingFrame = create('ScrollingFrame', Frame){ | |
Name = "Buttons"; | |
BackgroundColor3 = Color3.new(1, 1, 1); | |
BackgroundTransparency = 1; | |
BorderSizePixel = 0; | |
Position = UDim2.new(0.5, 0, 0, 40); | |
CanvasSize = UDim2.new(0, 0, 0, 0); | |
Size = UDim2.new(1, 0, 0, 260); | |
AnchorPoint = Vector2.new(0.5, 0); | |
Transparency = 1 | |
} | |
local Frame1 = create('Frame'){ | |
BackgroundColor3 = Color3.new(1, 1, 1); | |
BackgroundTransparency = 1; | |
BorderSizePixel = 0; | |
Position = UDim2.new(0, 0, 0, 1); | |
Selectable = true; | |
Size = UDim2.new(1, 0, 0, 25); | |
ClipsDescendants = true; | |
Transparency = 1 | |
} | |
local TextLabel1 = create('TextButton', Frame1){ | |
Name = "Text"; | |
BackgroundColor3 = Color3.new(1, 1, 1); | |
BorderColor3 = Color3.new(0.180392, 0.411765, 0.517647); | |
Position = UDim2.new(0.100000001, 0, 0, 0); | |
Size = UDim2.new(0.600000024, 0, 1, 0); | |
Text = "Example"; | |
TextColor3 = Color3.new(0.180392, 0.411765, 0.517647); | |
Font = Enum.Font.SciFi; | |
FontSize = Enum.FontSize.Size14 | |
} | |
local Frame2 = create('Frame', Frame1){ | |
Name = "Status"; | |
BackgroundColor3 = Color3.new(0, 1, 0); | |
BorderSizePixel = 0; | |
Position = UDim2.new(0.0250000004, 0, 0.5, 0); | |
Size = UDim2.new(0, 7, 0, 7); | |
Style = Enum.FrameStyle.DropShadow; | |
AnchorPoint = Vector2.new(0, 0.5) | |
} | |
local TextButton = create('TextButton', Frame1){ | |
Name = "Key"; | |
BackgroundColor3 = Color3.new(0.180392, 0.411765, 0.517647); | |
BackgroundTransparency = 0.5; | |
BorderSizePixel = 0; | |
Position = UDim2.new(0.699999988, 0, 0, 0); | |
Size = UDim2.new(0.300000012, 0, 1, 0); | |
Text = "[EXAMPLE]"; | |
TextColor3 = Color3.new(0.839216, 0.839216, 0.839216); | |
Font = Enum.Font.SciFi; | |
FontSize = Enum.FontSize.Size14; | |
TextStrokeColor3 = Color3.new(0.380392, 0.380392, 0.380392); | |
TextStrokeTransparency = 0; | |
Transparency = 0.5 | |
} | |
local UIListLayout = create('UIListLayout', ScrollingFrame){ | |
Padding = UDim.new(0, 4); | |
HorizontalAlignment = Enum.HorizontalAlignment.Center | |
} | |
local UIPadding = create('UIPadding', ScrollingFrame){} | |
local ESP_GUI = create('BillboardGui'){ | |
Active = true; | |
AlwaysOnTop = true; | |
StudsOffsetWorldSpace = Vector3.new(0, 4, 0); | |
Size = UDim2.new(0, 100, 0, 50) | |
} | |
create('TextLabel', ESP_GUI){ | |
Name = "Target"; | |
BackgroundColor3 = Color3.new(1, 1, 1); | |
BackgroundTransparency = 1; | |
BorderSizePixel = 0; | |
Size = UDim2.new(1, 0, 0, 20); | |
Text = ""; | |
TextColor3 = Color3.new(1, 0, 0); | |
Font = Enum.Font.Garamond; | |
FontSize = Enum.FontSize.Size14; | |
TextScaled = true; | |
TextStrokeTransparency = 0.20000000298023; | |
TextWrapped = true | |
} | |
create('TextLabel', ESP_GUI){ | |
Name = "Dist"; | |
BackgroundColor3 = Color3.new(1, 1, 1); | |
BackgroundTransparency = 1; | |
Position = UDim2.new(0, 0, 0.349999994, 0); | |
Size = UDim2.new(1, 0, 0, 20); | |
Text = ""; | |
TextColor3 = Color3.new(1, 0, 0.498039); | |
Font = Enum.Font.Garamond; | |
FontSize = Enum.FontSize.Size12; | |
TextScaled = true; | |
TextStrokeTransparency = 0.20000000298023; | |
TextWrapped = true | |
} | |
local Float = function() | |
return create('Part'){ | |
Name = 'DELETABLE'; | |
Parent = workspace; | |
Locked = true; | |
BrickColor = BrickColor.new(1003); | |
Size = Vector3.new(6, 1.8, 6); | |
Transparency = 1; | |
Material = "Slate"; | |
CanCollide = false; | |
Anchored = true | |
} | |
end | |
return create, Main, Frame1, Folder, Folder3, ESP_GUI, Float | |
end | |
local Create, Menu, Button, Chams, ESPF, Billboard, Float = FormAssets() | |
local Functions; | |
Functions = { | |
['Menu'] = function() | |
Menu['Enabled'] = not (Menu['Enabled']); | |
end; | |
['Floaty'] = function(change) | |
local FloatySettings = Settings.Floaty | |
if not Floaty then Floaty = Float() end | |
if (change:lower() == 'toggle') then | |
FloatySettings.Enabled = not FloatySettings.Enabled | |
end | |
if (change:lower() == 'up') then | |
FloatySettings.Height = 2 | |
FloatySettings.UI.Key.Text = '[UP]' | |
return | |
elseif (change:lower() == 'still') then | |
FloatySettings.Height = 3.9 | |
FloatySettings.UI.Key.Text = '[STILL]' | |
return | |
elseif (change:lower() == 'down') then | |
FloatySettings.Height = 6 | |
FloatySettings.UI.Key.Text = '[DOWN]' | |
return | |
end | |
if FloatySettings.Enabled then | |
Floaty.CanCollide = true | |
spawn(function() | |
while FloatySettings.Enabled and wait() and Floaty do | |
local Char = Player.Character or Player.CharacterAdded:wait() | |
local HRP = Char and Char:FindFirstChild('HumanoidRootPart') | |
if HRP then | |
Floaty.CFrame = CFrame.new(HRP.CFrame.x, HRP.CFrame.y - FloatySettings.Height, HRP.CFrame.z) | |
end | |
end | |
if Foaty then | |
Floaty.CanCollide = false | |
end | |
end) | |
elseif Floaty then | |
Floaty.CanCollide = false | |
end | |
end; | |
['ESP'] = function() | |
local ESPSettings = Settings.ESP | |
ESPSettings.Enabled = not ESPSettings.Enabled | |
if ESPSettings.Enabled then | |
Misc['CharFunctions'] | |
['ESP'] = function(char) | |
local Target = Players:GetPlayerFromCharacter(char) | |
local HRP = char:WaitForChild('HumanoidRootPart', 1) | |
if not Target or (Target == Player) or not HRP then return end | |
local Folder = ESPF:FindFirstChild(Target['Name']) | |
or Create('Folder', ESPF){Name = Target['Name']} | |
local Bill = Billboard:Clone() | |
Bill.Target.Text = Target['Name'] | |
Bill.Target.TextColor3 = Target.TeamColor.Color | |
Bill.Adornee = HRP | |
Bill.Parent = Folder | |
local Connection = Target:GetPropertyChangedSignal("Team"):Connect(function() | |
Bill.Target.TextColor3 = Target.TeamColor.Color | |
end) | |
spawn(function() | |
while HRP and wait() and ESPSettings.Enabled do | |
local CHRP = (Player.Character or Player.CharacterAdded:wait()):FindFirstChild('HumanoidRootPart') | |
if CHRP then | |
Bill.Dist.Text = math.floor((HRP.Position - CHRP.Position).magnitude) | |
end | |
end | |
Connection:Disconnect() | |
end) | |
end | |
elseif Misc['CharFunctions']['ESP'] then | |
Misc['CharFunctions']['ESP'] = nil | |
ESPF:ClearAllChildren() | |
end | |
end, | |
['Team Chams'] = function() | |
local ChamSettings = Settings.Chams | |
if ChamSettings.Busy then return end | |
ChamSettings.Busy = true | |
local TeamSettings = ChamSettings.Team | |
TeamSettings.Enabled = not TeamSettings.Enabled | |
if TeamSettings.Enabled then | |
Misc['CharFunctions'] | |
['TeamChams'] = function(char) | |
local Target = Players:GetPlayerFromCharacter(char) | |
if (Target == Player) or (Target.TeamColor ~= Player.TeamColor) then return end | |
local CheckEnemy = Chams['Enemy']:FindFirstChild(Target['Name']) | |
if CheckEnemy then | |
CheckEnemy:Destroy() | |
end | |
local Folder = Chams['Team']:FindFirstChild(Target['Name']) | |
or Create('Folder', Chams['Team']){Name = Target['Name']} | |
for __, part in next, (char:GetChildren()) do | |
if part:IsA('BasePart') then | |
Create('BoxHandleAdornment', Folder) | |
{ | |
Name = part.Name .. '_CHAM'; | |
Color3 = TeamSettings.Color[2]; | |
AlwaysOnTop = true; | |
Transparency = ChamSettings.Transparency; | |
Visible = true; | |
ZIndex = 10; | |
Size = (part['Name'] == 'Head' and Vector3.new(1.25, 1.3, 1.25)) | |
or (Vector3.new(.5, .5, .5) + part.Size) | |
}['Adornee'] = part | |
end | |
end | |
end | |
elseif Misc['CharFunctions']['TeamChams'] then | |
Misc['CharFunctions']['TeamChams'] = nil | |
Chams['Team']:ClearAllChildren() | |
end | |
ChamSettings.Busy = false | |
end, | |
['Enemy Chams'] = function() | |
local ChamSettings = Settings.Chams | |
if ChamSettings.Busy then return end | |
ChamSettings.Busy = true | |
local EnemySettings = ChamSettings.Enemy | |
EnemySettings.Enabled = not EnemySettings.Enabled | |
if EnemySettings.Enabled then | |
Misc['CharFunctions'] | |
['EnemyChams'] = function(char) | |
local Target = Players:GetPlayerFromCharacter(char) | |
if (Target == Player) or (Target.TeamColor == Player.TeamColor) then return end | |
local CheckTeam = Chams['Team']:FindFirstChild(Target['Name']) | |
if CheckTeam then | |
CheckTeam:Destroy() | |
end | |
local Folder = Chams['Enemy']:FindFirstChild(Target['Name']) | |
or Create('Folder', Chams['Enemy']){Name = Target['Name']} | |
for __, part in next, (char:GetChildren()) do | |
if part:IsA('BasePart') then | |
Create('BoxHandleAdornment', Folder) | |
{ | |
Name = part.Name .. '_CHAM'; | |
Color3 = EnemySettings.Color[2]; | |
AlwaysOnTop = true; | |
Transparency = ChamSettings.Transparency; | |
Visible = true; | |
ZIndex = 10; | |
Size = (part['Name'] == 'Head' and Vector3.new(1.25, 1.3, 1.25)) | |
or (Vector3.new(.5, .5, .5) + part.Size) | |
}['Adornee'] = part | |
end | |
end | |
end | |
elseif Misc['CharFunctions']['EnemyChams'] then | |
Misc['CharFunctions']['EnemyChams'] = nil | |
Chams['Enemy']:ClearAllChildren() | |
end | |
ChamSettings.Busy = false | |
end, | |
['Chams Transparency'] = function(change) | |
local ChamSettings = Settings.Chams | |
if ChamSettings.Busy then return end | |
ChamSettings.Busy = true | |
if change then | |
local Trans = ChamSettings.Transparency | |
ChamSettings.Transparency = (Trans < .8 and Trans + (1/10)) or 0 | |
end | |
local TeamCham = Chams['Team']:GetChildren() | |
local EnemyCham = Chams['Enemy']:GetChildren() | |
for __, object in next, (TeamCham) do | |
for __, bha in next, (object:GetChildren()) do | |
bha.Transparency = ChamSettings.Transparency | |
bha.Color3 = ChamSettings.Team.Color[2] | |
end | |
end | |
for __, object in next, (EnemyCham) do | |
for __, bha in next, (object:GetChildren()) do | |
bha.Transparency = ChamSettings.Transparency | |
bha.Color3 = ChamSettings.Enemy.Color[2] | |
end | |
end | |
ChamSettings.TransparencyUI['Key'].Text = '[' .. ChamSettings.Transparency .. ']' | |
ChamSettings.Busy = false | |
end, | |
['Fullbright'] = function(Toggle) | |
local Fullbright = Settings.Fullbright | |
if Toggle then Fullbright.Enabled = not (Fullbright.Enabled); end | |
local function Handle() | |
local Setting = Fullbright.Options[Fullbright.Current] | |
local Settings = Fullbright.OptionDefs[Setting] | |
Fullbright.UI.Key['Text'] = '[' .. Setting .. ']' | |
Lighting.Ambient = Settings.InAmbience; | |
Lighting.OutdoorAmbient = Settings.OutAmbience; | |
Lighting.Brightness = Settings.Brightness; | |
Lighting.FogStart = Settings.Fog; | |
Lighting.FogEnd = Settings.Fog; | |
end | |
if (not Fullbright.Enabled) then | |
Fullbright.Current = 3 | |
end | |
Handle() | |
end; | |
['Aimbot'] = function(AimbotSettings) | |
local IgnorePlayersNamed = {A1_exe=true} -- Name = true or false | |
--[[ | |
[J] - To go down the list. | |
[U] - To go up the list. | |
[H] - To toggle that item in the list. | |
[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) | |
--]] | |
local ResizeUI = function(ui,downscale,byclass) | |
if not rawequal(ui['ClassName'],'ScrollingFrame') then return end | |
local count = 0; | |
for __, asset in next, (ui:GetChildren()) do | |
if rawequal(asset['ClassName'],byclass) then | |
count = count + 1 | |
end | |
end | |
ui['CanvasSize'] = UDim2.new(ui.CanvasSize.X.Scale,ui.CanvasSize.X.Offset,ui.CanvasSize.Y.Scale,downscale*count) | |
end | |
local wfc, ffc, ffoc, cast, ray = World.WaitForChild, World.FindFirstChild, World.FindFirstChildOfClass, World.FindPartOnRayWithIgnoreList, Ray.new | |
local wfcoc = function(p,class) | |
local obj | |
repeat Run.RenderStepped:wait() | |
obj = p:FindFirstChildOfClass(class) | |
until obj | |
return obj | |
end | |
local Client = Player | |
local ClientUI = wfc(Client,'PlayerGui') | |
local ClientMouse = Client:GetMouse() | |
local ClientModel = Client.Character or Client.CharacterAdded:wait() | |
local ClientCamera = World.CurrentCamera | |
local ClientHumanoid = wfcoc(ClientModel,'Humanoid') | |
local ClientActiveUI; | |
local status = { | |
{'Enabled', false}, -- // Toggle aimbot | |
{'TeamCheck', false}, -- // Check team | |
{'HeadsOnly', false}, -- // Only target head | |
{'Shake', true}, -- // Shake mouse between body and head | |
{'RayCheck', true}, -- // Obstacles | |
{'RangeCheck', true}, -- // Targets within range | |
{'CamCheck', false}, -- // Don't check inside the camera | |
{'AutoAim', false}, -- // No need to hold mouse | |
{'Hide Menu', false}, -- // Hide the ui | |
} | |
local selection = {} | |
local select_pos = 1 | |
local current_pos = 0 | |
local function toggle(button) | |
local text = button['Text'] | |
if text:match('Hide') then | |
status['Hide Menu'] = not status['Hide Menu'] | |
if (status['Hide Menu']) then | |
ClientActiveUI.Visible = false | |
else | |
ClientActiveUI.Visible = true | |
end | |
return | |
end | |
local option, val = text:match('%s*(.*)%s*:%s*(.*)') | |
status[option] = not status[option] | |
if status[option] then | |
button.TextColor3 = Color3.fromRGB(0,255,0) | |
else | |
button.TextColor3 = Color3.fromRGB(255,0,0) | |
end | |
button.Text = option .. ': ' .. tostring(status[option]) | |
end | |
local MakeAimUI = function() | |
if ffc(game.CoreGui, '___') then return end | |
local GUI = Create('ScreenGui', game.CoreGui){ | |
Name = '___'; | |
On | |
} | |
local Frame = Create('ScrollingFrame', GUI){ | |
BackgroundTransparency = 1, | |
BorderSizePixel = 0, | |
Name = 'Options', | |
Position = UDim2.new(.8,0,.915,0), | |
Size = UDim2.new(.2,0,0,30), | |
ZIndex = 10, | |
ClipsDescendants = true, | |
CanvasSize = UDim2.new(0,0,0,0), | |
CanvasPosition = Vector2.new(0, current_pos), | |
ScrollBarThickness = 0, | |
ScrollingEnabled = false, | |
} | |
local UILL = Create('UIListLayout', Frame){ | |
Name = 'LayoutHandler', | |
FillDirection = 'Vertical', | |
HorizontalAlignment = 'Center', | |
SortOrder = 'LayoutOrder', | |
VerticalAlignment = 'Top' | |
} | |
local Template = Create('TextButton', nil){ | |
BackgroundTransparency = 1, | |
BorderSizePixel = 0, | |
Name = 'Template', | |
Size = UDim2.new(.9,0,0,30), | |
Font = 'SciFi', | |
Text = '', | |
TextColor3 = Color3.fromRGB(255,255,255), | |
TextScaled = true, | |
TextWrapped = true, | |
} | |
local TSC = Create('UISizeConstraint', Template){ | |
Name = 'TemplateSizeConstraint', | |
MaxSize = Vector2.new(math.huge,30), | |
} | |
Frame['ChildAdded']:Connect(function() | |
ResizeUI(Frame, 30, 'TextButton') | |
end) | |
local sel_pos = 0 | |
local newstatus = {} | |
for ___, packed_option in next, status do | |
local option, val = packed_option[1], packed_option[2] | |
newstatus[option] = val | |
local tp = Template:Clone() | |
tp.LayoutOrder = sel_pos | |
tp.Name = option | |
if option:match('Hide') then | |
tp.Text = ':: ' .. option .. ' ::' | |
tp.TextColor3 = Color3.fromRGB(220, 100, 220) | |
else | |
tp.Text = option .. ': ' .. tostring(val) | |
if newstatus[option] then | |
tp.TextColor3 = Color3.fromRGB(0,255,0) | |
else | |
tp.TextColor3 = Color3.fromRGB(255,0,0) | |
end | |
end | |
sel_pos = sel_pos + 1 | |
selection[sel_pos] = tp | |
tp.Parent = Frame | |
end | |
status = newstatus | |
return Frame | |
end | |
Client['CharacterAdded']:Connect(function(char) | |
ClientModel = char | |
ClientHumanoid = wfcoc(ClientModel,'Humanoid') | |
end) | |
ClientActiveUI = MakeAimUI() | |
local right_down, keylogs, inputlogs = nil, {}, {}; | |
local began, ended; | |
began = Input.InputBegan:Connect(function(input, procc) | |
keylogs[input.KeyCode],inputlogs[input.UserInputType] = true, true; | |
if procc then return end | |
if not ClientActiveUI then began:Disconnect() return end | |
if keylogs[Enum.KeyCode.H] then | |
if selection[select_pos] then | |
toggle(selection[select_pos]) | |
end | |
elseif not status['Hide Menu'] then | |
if keylogs[Enum.KeyCode.U] then | |
if (select_pos > 1) then | |
select_pos = select_pos - 1 | |
else | |
select_pos = #selection | |
end | |
elseif keylogs[Enum.KeyCode.J] then | |
if (select_pos < #selection) then | |
select_pos = select_pos + 1 | |
else | |
select_pos = 1 | |
end | |
end | |
current_pos = 30 * (select_pos - 1) | |
ClientActiveUI.CanvasPosition = Vector2.new(0, current_pos) | |
end | |
end) | |
ended = Input.InputEnded:Connect(function(input, procc) | |
if not ClientActiveUI then ended:Disconnect() return end | |
keylogs[input.KeyCode],inputlogs[input.UserInputType] = false, false; | |
end) | |
local function Search(depth) | |
local results = {} | |
local function RecursiveSearch(Obj, level) | |
for __, child in next, (Obj:GetChildren()) do | |
local nottarget = true; | |
if child:IsA('Model') then | |
local hum = ffoc(child,'Humanoid') | |
if hum then | |
nottarget = false; | |
if hum.Health > 0 then | |
local UserFromChar = Players:GetPlayerFromCharacter(child) | |
if not rawequal(UserFromChar, Client) then | |
table.insert(results, {child, UserFromChar}) | |
end | |
end | |
end | |
end | |
if nottarget and (level < depth) and ((child ~= ClientCamera) or status['CamCheck']) then | |
RecursiveSearch(child, level + 1) | |
end | |
end | |
end | |
RecursiveSearch(World, 1) | |
return results | |
end | |
local function cast_ray(p0,p1,blacklist) | |
local Part | |
local __=0 | |
repeat | |
__=__+1 | |
local cond=(p1-p0).magnitude < 999 | |
Part,p0=cast(workspace,ray(p0,cond and p1-p0 or (p1-p0).unit*999),blacklist) | |
local pname = Part.Name:lower() | |
if Part then | |
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 | |
blacklist[#blacklist+1]=Part | |
Part=nil | |
end | |
elseif cond or __ > 15 then | |
break | |
end | |
until Part | |
return Part,p0 | |
end | |
Run.RenderStepped:Connect(function() | |
local Storage = {} | |
if status['Enabled'] and (inputlogs[Enum.UserInputType.MouseButton2] or status['AutoAim']) then | |
Storage = Search(AimbotSettings.Depth) | |
local close, range, dot, face = false, math.huge, -1 | |
for __, info in next, (Storage) do | |
local hum = ffoc(info[1], 'Humanoid') | |
local root = ffc(info[1], 'HumanoidRootPart') | |
local head = ffc(info[1], 'Head') | |
if not inputlogs[Enum.UserInputType.MouseButton2] and not status['AutoAim'] then return end | |
if not info[1] or IgnorePlayersNamed[info[1]['Name']] or (info[2] and IgnorePlayersNamed[info[2]['Name']]) or ffoc(info[1],'ForceField') then continue end | |
if not root or (status['HeadsOnly'] and not head) then continue end | |
if hum and hum['Health'] > 0 then | |
if status['TeamCheck'] and info[2] then | |
if Client['TeamColor'] == info[2]['TeamColor'] then | |
continue | |
end | |
end | |
local cc = ClientCamera.CFrame | |
local pos = ((head and (status['HeadsOnly'] or (status['Shake'] and math.random(1, 10) < 6))) and head.Position) or root.Position | |
local dist = (pos-cc.p).magnitude | |
if status['RangeCheck'] and (dist > AimbotSettings['MaxRange']) then | |
continue | |
end | |
local hitPart = cast_ray(cc.p,pos,{ClientCamera,ClientModel}) | |
if not (status['RayCheck'] and hitPart) or info[1]:IsAncestorOf(hitPart) then | |
local m = (pos-cc.p).unit:Dot(cc.lookVector) | |
if (dist <= AimbotSettings.CloseRange) then | |
close = true | |
end | |
if close then | |
if (dist < range) then | |
dot, face, range = m, pos, dist | |
end | |
elseif (m > dot) then | |
dot, face, range = m, pos, dist | |
end | |
end | |
end | |
end | |
if face then | |
--ClientCamera.CFrame = CFrame.new(ClientCamera.CFrame.p,face) * CFrame.new(0,0,0.5) | |
if iswindowactive() then | |
local Pos, InFront = ClientCamera:WorldToScreenPoint(face) | |
local TargetX, TargetY = (InFront and Pos.x) or -Pos.x, Pos.y | |
local MouseX, MouseY = ClientMouse.X, ClientMouse.Y | |
local NewX, NewY = math.abs(MouseX - TargetX), math.abs(MouseY - TargetY) | |
local Inc = GameSettings.MouseSensitivity * (17/3) | |
if (MouseX > TargetX) then | |
NewX = -NewX/Inc | |
else | |
NewX = NewX/Inc | |
end | |
if (MouseY > TargetY) then | |
NewY = -NewY/Inc | |
else | |
NewY = NewY/Inc | |
end | |
mousemoverel(NewX, NewY) | |
end | |
end | |
end | |
end) | |
end | |
} | |
Settings = (function() | |
local NewSettings = { | |
--- ESP --- | |
ESP = { | |
Enabled = false; | |
}, | |
--- Chams --- | |
Chams = { | |
Busy = false; | |
Team = { | |
Enabled = false; | |
Color = GetColor(Misc.ChamsColors, 'Grey'); | |
}, | |
Enemy = { | |
Enabled = false; | |
Color = GetColor(Misc.ChamsColors, 'Red'); | |
}, | |
Transparency = 0 | |
}, | |
--- Aimbot --- | |
Aimbot = { | |
Enabled = false; | |
MaxRange = 2000; | |
CloseRange = 75; | |
MaxDepth = 3; | |
Depth = 1; | |
}, | |
--- Floaty --- | |
Floaty = { | |
Enabled = false; | |
Height = 3.9; | |
Current = 1; | |
Options = {'Still', 'Up', 'Down'} | |
}, | |
--- Fullbright --- | |
Fullbright = { | |
Enabled = false; | |
Current = 1; | |
Options = {'Max','Half','Default'}; | |
OptionDefs = { | |
Max = { | |
Fog = 1000000; | |
Brightness = 10; | |
InAmbience = Color3.new(1, 1, 1); | |
OutAmbience = Color3.new(1, 1, 1); | |
}; | |
Half = { | |
Fog = 250; | |
Brightness = 1.5; | |
InAmbience = Color3.new(0.6, 0.6, 0.6); | |
OutAmbience = Color3.new(0.6, 0.6, 0.6); | |
}; | |
Default = { | |
Fog = Lighting.FogEnd; | |
Brightness = Lighting.Brightness; | |
InAmbience = Lighting.Ambient; | |
OutAmbience = Lighting.OutdoorAmbient; | |
} | |
} | |
} | |
} | |
for __, option in next, (Settings) do | |
local NewOption = Button:Clone() | |
if option[1] == 'Menu' or option[1]:match('Written') or option[1] == 'Chams Transparency' then | |
NewOption['Status']['Style'] = 'Custom'; | |
NewOption['Key']['TextStrokeColor3'] = Misc.GUIColors.Enabled | |
end | |
NewOption['Text'].Text = option[1]:match('COLOR') and ( | |
(option[1]:match('Team') and option[1]:gsub('COLOR', NewSettings.Chams.Team.Color[1])) or | |
(option[1]:match('Enemy') and option[1]:gsub('COLOR', NewSettings.Chams.Enemy.Color[1])) | |
) or option[1] | |
NewOption['Key'].Text = '['.. ((typeof(option[3]) == 'EnumItem' and option[3].Name) or option[3]) .. ']' | |
NewOption.Parent = Menu['Main']['Buttons'] | |
local Func, Name = GetFunc(Functions, option[1]) | |
if Func then | |
NewOption['Text']['MouseButton1Down']:Connect(function() | |
if not option[2] then return end | |
if NewOption.Status.Style.Name == 'DropShadow' then | |
NewOption.Status.Style = 'Custom' | |
NewOption['Key']['TextStrokeColor3'] = Misc.GUIColors.Enabled | |
elseif NewOption.Status.Style.Name == 'Custom' and not option[1]:match('Aimbot') then | |
NewOption.Status.Style = 'DropShadow' | |
NewOption['Key']['TextStrokeColor3'] = Misc.GUIColors.Disabled | |
end | |
if option[1]:match('Aimbot') and not NewSettings.Aimbot.Enabled then | |
NewSettings.Aimbot.Enabled = true | |
Func(NewSettings.Aimbot) | |
elseif option[1]:match('Fullbright') then | |
Func(true) | |
elseif option[1]:match('Floaty') then | |
Func('Toggle') | |
else | |
Func() | |
end | |
end) | |
if option[1]:match('Team') then | |
-- These happen after Settings are overwritten | |
NewOption['Key']['MouseButton1Down']:Connect(function() | |
local ChamSettings = Settings.Chams | |
local TeamSettings = ChamSettings.Team | |
local ChamColors = Misc.ChamsColors | |
if not TeamSettings.Enabled then return end | |
local Pos = table.find(ChamColors, TeamSettings.Color) | |
if (Pos + 1) < #ChamColors then | |
NewOption['Text'].Text = NewOption['Text'].Text:gsub(TeamSettings.Color[1], ChamColors[Pos + 1][1]) | |
TeamSettings.Color = ChamColors[Pos + 1] | |
else | |
NewOption['Text'].Text = NewOption['Text'].Text:gsub(TeamSettings.Color[1], ChamColors[1][1]) | |
TeamSettings.Color = ChamColors[1] | |
end | |
GetFunc(Functions, 'Chams Transparency')() | |
end) | |
elseif option[1]:match('Enemy') then | |
-- These happen after Settings are overwritten | |
NewOption['Key']['MouseButton1Down']:Connect(function() | |
local ChamSettings = Settings.Chams | |
local EnemySettings = ChamSettings.Enemy | |
local ChamColors = Misc.ChamsColors | |
if not EnemySettings.Enabled then return end | |
local Pos = table.find(ChamColors, EnemySettings.Color) | |
if (Pos + 1) < #ChamColors then | |
NewOption['Text'].Text = NewOption['Text'].Text:gsub(EnemySettings.Color[1], ChamColors[Pos + 1][1]) | |
EnemySettings.Color = ChamColors[Pos + 1] | |
else | |
NewOption['Text'].Text = NewOption['Text'].Text:gsub(EnemySettings.Color[1], ChamColors[1][1]) | |
EnemySettings.Color = ChamColors[1] | |
end | |
GetFunc(Functions, 'Chams Transparency')() | |
end) | |
elseif option[1] == 'Chams Transparency' then | |
NewSettings.Chams.TransparencyUI = NewOption | |
-- These happen after Settings are overwritten | |
NewOption['Key']['MouseButton1Down']:Connect(function() | |
GetFunc(Functions, 'Chams Transparency')(true) | |
end) | |
elseif option[1] == 'Fullbright' then | |
NewSettings.Fullbright.UI = NewOption | |
-- These happen after Settings are overwritten | |
NewOption['Key']['MouseButton1Down']:Connect(function() | |
local Fullbright = Settings.Fullbright | |
if not Fullbright.Enabled then return end | |
if Fullbright.Current < #Fullbright.Options then | |
Fullbright.Current = Fullbright.Current + 1 | |
else | |
Fullbright.Current = 1 | |
end | |
GetFunc(Functions, 'Fullbright')(false) | |
end) | |
elseif option[1] == 'Aimbot' then | |
NewOption['Key'].Text = '[ Depth: ' .. NewSettings.Aimbot.Depth .. ' ]' | |
-- These happen after Settings are overwritten | |
NewOption['Key']['MouseButton1Down']:Connect(function() | |
local Aimbot = Settings.Aimbot | |
if not Aimbot.Enabled then return end | |
if Aimbot.Depth < Aimbot.MaxDepth then | |
Aimbot.Depth = Aimbot.Depth + 1 | |
else | |
Aimbot.Depth = 1 | |
end | |
NewOption['Key'].Text = '[ Depth: ' .. Settings.Aimbot.Depth .. ' ]' | |
end) | |
elseif option[1] == 'Floaty' then | |
NewSettings.Floaty.UI = NewOption | |
-- These happen after Settings are overwritten | |
NewOption['Key']['MouseButton1Down']:Connect(function() | |
local Floaty = Settings.Floaty | |
if not Floaty.Enabled then return end | |
if Floaty.Current < #Floaty.Options then | |
Floaty.Current = Floaty.Current + 1 | |
else | |
Floaty.Current = 1 | |
end | |
GetFunc(Functions, 'Floaty')(Floaty.Options[Floaty.Current]) | |
end) | |
end | |
end | |
end | |
return NewSettings | |
end)() | |
setmetatable(Misc['CharFunctions'], { | |
__newindex = function(self, funcName, newFunc) | |
rawset(Misc['CharFunctions'], funcName, newFunc) | |
for __, player in next, (Players:GetPlayers()) do | |
if player.Character then | |
newFunc(player.Character) | |
end | |
end | |
end | |
}) | |
local CharacterRemoving = function(Char, Target) | |
local Team = Chams['Team']:FindFirstChild(Target['Name']) | |
local Enemy = Chams['Enemy']:FindFirstChild(Target['Name']) | |
if Team then | |
for __, handle in next, (Team:GetChildren()) do | |
if handle['Adornee'] and not handle['Adornee']:IsDescendantOf(game) then | |
handle['Parent'] = nil | |
handle.Visible = false | |
end | |
end | |
end | |
if Enemy then | |
for __, handle in next, (Enemy:GetChildren()) do | |
if handle['Adornee'] and not handle['Adornee']:IsDescendantOf(game) then | |
handle['Parent'] = nil | |
handle.Visible = false | |
end | |
end | |
end | |
end | |
local CharacterAdded = function(Char, Target) | |
if (Target == Player) then return end | |
for __, func in next, (Misc['CharFunctions']) do | |
func(Char) | |
end | |
end | |
Player:GetPropertyChangedSignal("Team"):Connect(function() | |
local ChamSettings = Settings.Chams | |
if ChamSettings.Team then | |
local TeamChamsFunc = GetFunc(Functions, 'Team Chams') | |
TeamChamsFunc() | |
TeamChamsFunc() | |
end | |
if ChamSettings.Enemy then | |
local EnemyChamsFunc = GetFunc(Functions, 'Enemy Chams') | |
EnemyChamsFunc() | |
EnemyChamsFunc() | |
end | |
end) | |
for __, player in next, (Players:GetPlayers()) do | |
player:GetPropertyChangedSignal("Team"):Connect(function() | |
CharacterAdded(player.Character or player.CharacterAdded:wait(), player) | |
end) | |
player['CharacterAdded']:Connect(function(char) | |
CharacterAdded(char, player) | |
end) | |
player['CharacterRemoving']:Connect(function(char) | |
CharacterRemoving(char, player) | |
end) | |
end | |
Players.PlayerAdded:Connect(function(player) | |
player:GetPropertyChangedSignal("Team"):Connect(function() | |
CharacterAdded(player.Character or player.CharacterAdded:wait(), player) | |
end) | |
player['CharacterAdded']:Connect(function(char) | |
CharacterAdded(char, player) | |
end) | |
player['CharacterRemoving']:Connect(function(char) | |
CharacterRemoving(char, player) | |
end) | |
end) | |
Players.PlayerRemoving:Connect(function(player) | |
local ESP = ESPF:FindFirstChild(player['Name']) | |
if ESP then ESP['Parent'] = nil end | |
end) | |
Input['InputBegan']:Connect(function(input, og) | |
if og then return end | |
if input.UserInputType == Enum.UserInputType.Keyboard then | |
if input.KeyCode == Enum.KeyCode.Delete then | |
Functions['Menu']() | |
elseif input.KeyCode == Enum.KeyCode.B then | |
Functions['Floaty']('Up') | |
elseif input.KeyCode == Enum.KeyCode.N then | |
Functions['Floaty']('Still') | |
elseif input.KeyCode == Enum.KeyCode.M then | |
Functions['Floaty']('Down') | |
end | |
end | |
end) | |
Menu.Parent = game.CoreGui |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment