Astralsrc
Astralsrc
Astral = {
Main = {
["FindBestServer"] = false, -- connects to server with best ping
["Key"] = "your_key",
["Gui"] = false,
["GuiInfo"] = true,
["AutoLowGFX"] = true,
["DisableShadows"] = true,
["MuteBoomBox"] = true,
},
Silent = {
["Enabled"] = true,
["UseKeybind"] = true,
["Keybind"] = "k",
["Part"] = "HumanoidRootPart",
["Prediction"] = 0.136,
["Default"] = 0.136,
["ClosestPart"] = true,
["ClosestPoint"] = true,
["AntiGroundShots"] = true,
["Checks"] = {
["DeathCheck"] = true,
["VisibleCheck"] = true,
["GrabbedCheck"] = true
}
},
Aimbot = {
["Enabled"] = true,
["Keybind"] = "c",
["Part"] = "UpperTorso",
["UsePrediction"] = false,
["Prediction"] = 0.14,
["FirstPerson"] = true,
["ThirdPerson"] = true,
["Radius"] = 35,
["Smoothness"] = false,
["Amount"] = 0.375,
["ClosestPart"] = true,
["Checks"] = {
["DeathCheck"] = true,
["OwnDeathCheck"] = true,
["WallCheck"] = true
}
},
Resolver = {
["Enabled"] = true, -- // If you want to resolve anti-locks
["Resolve_Desync"] = true,
["Resolve_Underground"] = true,
["AntiAimViewer"] = true -- Bypasses serverside mouse position (note:
doesnt work on client)
},
FOV = {
["Visible"] = false,
["Radius"] = 40,
["Default"] = 22,
["Color"] = "teal"
},
Range = {
["Enabled"] = true,
["CloseDistance"] = 37,
["MidDistance"] = 68,
["FarDistance"] = math.huge,
["FOV"] = {
["Enabled"] = false,
["Close"] = 31,
["Mid"] = 23,
["Far"] = 15
},
["Smoothness"] = {
["Enabled"] = false,
["Close"] = 0.098,
["Mid"] = 0.068,
["Far"] = 0.037
},
["Prediction"] = {
["Enabled"] = true,
["Close"] = {
["P20_30"] = 0.12542465767834,
["P30_40"] = 0.12742,
["P50_60"] = 0.134543,
["P60_70"] = 0.141,
["P70_80"] = 0.1413,
["P80_90"] = 0.1487,
["P90_120"] = 0.15738,
["P120_140"] = 0.12534,
["P140_200"] = 0.1652131
},
["Mid"] = {
["P20_30"] = 0.12588,
["P30_40"] = 0.11,
["P40_50"] = 0.127668,
["P50_60"] = 0.12731,
["P70_80"] = 0.1365,
["P80_90"] = 0.138,
["P90_120"] = 0.157,
["P120_140"] = 0.13432,
["P140_200"] = 0.16779123
},
["Far"] = {
["P20_30"] = 0.11120,
["P30_40"] = 0.11120,
["P40_50"] = 0.12542465767834,
["P50_60"] = 0.12921,
["P60_70"] = 0.1311,
["P70_80"] = 0.1311,
["P80_90"] = 0.1311,
["P90_120"] = 0.14325,
["P120_140"] = 0.138876,
["P140_200"] = 0.165455312399999
}
}
},
GunFOV = {
["Enabled"] = false, --// Enables gun fov
["Double-Barrel SG"] = {["FOV"] = 31},
["Revolver"] = {["FOV"] = 22},
["SMG"] = {["FOV"] = 18},
["Shotgun"] = { ["FOV"] = 23},
["Rifle"] = { ["FOV"] = 12},
["TacticalShotgun"] = {["FOV"] = 21},
["Silencer"] = {["FOV"] = 20},
["AK47"] = { ["FOV"] = 12.5},
["AR"] = { ["FOV"] = 12.5},
},
InventorySorter = {
["Enabled"] = true, -- If you want to use the sorter
["Keybind"] = "j", -- Keybind to update your inventory
["List"] = {"[Double-Barrel SG]","[Revolver]","[TacticalShotgun]",
"[Shotgun]", "[SMG]"}, -- up to 9
},
Macro = {
["Enabled"] = true, -- If you want to use macro
["AntiFling"] = false,
["Keybind"] = "q", -- // Keybind to toggle the macro
["Mode"] = "FirstPerson", -- // First person or third person
["Speed"] = 1.17
},
AutoPred = {
["Enabled"] = true, -- // If you want to use auto prediction
["Interval"] = 0.2, -- // How fast the auto prediction refreshes
["Silent"] = {
["Enabled"] = true,
["P10"] = 0.11,
["P20"] = 0.12588,
["P30"] = 0.11911,
["P40"] = 0.1256,
["P50"] = 0.12766,
["P60"] = 0.136,
["P70"] = 0.12951,
["P80"] = 0.13181,
["P90"] = 0.13685,
["P100"] = 0.13334,
["P110"] = 0.14552,
["P120"] = 0.1652131,
["P130"] = 0.15669,
["P140"] = 0.15669,
["P150"] = 0.15214,
["P160"] = 0.16262,
["P170"] = 0.19231,
["P180"] = 0.19284,
["P190"] = 0.16594,
["P200"] = 0.16942
},
["Aimbot"] = {
["Enabled"] = false,
["P10"] = 0.11,
["P20"] = 0.12588,
["P30"] = 0.11911,
["P40"] = 0.1256,
["P50"] = 0.12766,
["P60"] = 0.136,
["P70"] = 0.12951,
["P80"] = 0.13181,
["P90"] = 0.13685,
["P100"] = 0.13334,
["P110"] = 0.14552,
["P120"] = 0.1652131,
["P130"] = 0.15669,
["P140"] = 0.15669,
["P150"] = 0.15214,
["P160"] = 0.16262,
["P170"] = 0.19231,
["P180"] = 0.19284,
["P190"] = 0.16594,
["P200"] = 0.16942
}
},
Emotes = { -- credits to evolution
["Greet"] = true, ["GreetKey"] = Enum.KeyCode.G,
["Lay"] = true, ["LayKey"] = Enum.KeyCode.T,
["Speed"] = false, ["SpeedKey"] = Enum.KeyCode.N,
["Sturdy"] = false, ["SturdyKey"] = Enum.KeyCode.H,
["Griddy"] = false, ["GriddyKey"] = Enum.KeyCode.G,
},
MemorySpoofer = {
["MemSpoofer"] = true, -- // If you want to use the memory spoofer
["Minimum"] = 500, -- // Minimum memory to spoof
["Maximum"] = 800, -- // Maximum memory to spoof
},
PingSpoofer = {
["PingSpoofer"] = false,
["PingTabColor"] = Color3.fromRGB(211, 88, 33),
["Minimum"] = 130,
["Maximum"] = 180
},
Esp = {
["Enabled"] = true, -- Loads the ESP
["Bounding_Box"] = true, -- Box Base
["Fill_Box"] = false, -- If you want to fill the box
["Fill_Transparency"] = 0.75, -- Box transparency
["Show_Distance"] = false, -- Shows the players distance
["Show_Name"] = true, -- Shows the players name
["Show_Health"] = true, -- Shows the players health
["Health_Type"] = "Bar" -- Text, Both
},
Blink = {
["Enabled"] = true,
["BlinkKeybind"] = "N",
["BlinkDuration"] = 1,
},
Spin = {
["Toggle"] = false,
["RotationSpeed"] = 2600, -- higher you go the faster the spin. 2500 is
good
["Keybind"] = Enum.KeyCode.V
}
}
-----------------------------------------
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local GuiService = game:GetService("GuiService")
local RunService = game:GetService("RunService")
local Heartbeat = RunService.Heartbeat
local LocalPlayer = Players.LocalPlayer
local CurrentCamera = Workspace.CurrentCamera
local Mouse = LocalPlayer:GetMouse()
local Drawingnew = Drawing.new
local Color3fromRGB = Color3.fromRGB
local Vector2new = Vector2.new
local GetGuiInset = GuiService.GetGuiInset
local Randomnew = Random.new
local mathfloor = math.floor
local CharacterAdded = LocalPlayer.CharacterAdded
local CharacterAddedWait = CharacterAdded.Wait
local WorldToViewportPoint = CurrentCamera.WorldToViewportPoint
local RaycastParamsnew = RaycastParams.new
local EnumRaycastFilterTypeBlacklist = Enum.RaycastFilterType.Blacklist
local Raycast = Workspace.Raycast
local GetPlayers = Players.GetPlayers
local Instancenew = Instance.new
local IsDescendantOf = Instancenew("Part").IsDescendantOf
local FindFirstChildWhichIsA = Instancenew("Part").FindFirstChildWhichIsA
local FindFirstChild = Instancenew("Part").FindFirstChild
local tableremove = table.remove
local tableinsert = table.insert
-----------------------------------------
if Astral.Macro.Enabled then
if Astral.Macro.Mode == "ThirdPerson" then
getgenv().macrokey = Astral.Macro.Keybind
getgenv().macrospeed = Astral.Macro.Speed -- the lower fps u have the
higher u put this
getgenv().macrotype = "normal" -- normal or mouse
loadstring(game:HttpGet("https://raw.githubusercontent.com/FederalW/
scripts/main/macro"))()
elseif Astral.Macro.Mode == "FirstPerson" then -- yeah i skidded feds go cry
getgenv().macrokey = Astral.Macro.Keybind
getgenv().macrospeed = Astral.Macro.Speed -- the lower fps u have the
higher u put this
getgenv().macrotype = "mouse" -- normal or mouse
loadstring(game:HttpGet("https://raw.githubusercontent.com/FederalW/
scripts/main/macro"))()
end
end
local variables = {
["LocalPlayer"] = services["Players"].LocalPlayer,
["RenderStepped"] = services["RunService"].RenderStepped,
}
if Astral.Main.AutoLowGFX then
for _,v in pairs(workspace:GetDescendants()) do
if v.ClassName == "Part"
or v.ClassName == "SpawnLocation"
or v.ClassName == "WedgePart"
or v.ClassName == "Terrain"
or v.ClassName == "MeshPart" then
v.Material = "Plastic"
end
end
end
-- //
if (OnScreen) then
-- // Vars
local raycastParams = RaycastParamsnew()
raycastParams.FilterType = EnumRaycastFilterTypeBlacklist
raycastParams.FilterDescendantsInstances = {Character, CurrentCamera}
-- // Cast ray
local Result = Raycast(Workspace, Origin, Part.Position - Origin,
raycastParams)
-- // Return
return Visible
end
end
-- // Return
return false
end
ClosestPlrFromMouse = function()
local Target, Closest = nil, 1/0
for _ ,v in pairs(Players:GetPlayers()) do
if (v.Character and v ~= Client and
v.Character:FindFirstChild("HumanoidRootPart")) then
local Position, OnScreen =
Camera:WorldToScreenPoint(v.Character.HumanoidRootPart.Position)
local Distance = (Vector2.new(Position.X, Position.Y) -
Vector2.new(Mouse.X, Mouse.Y)).Magnitude
if (Circle.Radius > Distance and Distance < Closest and OnScreen) then
Closest = Distance
Target = v
end
end
end
if Astral.Silent.Checks.VisibleCheck then
if Target and not IsPartVisible(Target.Character.HumanoidRootPart,
Target.Character) then
Target = nil
return nil
end
end
return Target
end
local Prey
task.spawn(function ()
while task.wait() do
if Prey then
if Astral.Silent.Enabled and Astral.Silent.ClosestPart == true then
Astral.Silent["Part"] =
tostring(GetClosestBodyPart(Prey.Character))
end
end
end
end)
grmt.__index = newcclosure(function(self, v)
if (Astral.Silent.Enabled and Mouse and tostring(v) == "Hit") then
Prey = ClosestPlrFromMouse()
if Prey then
local endpoint =
game.Players[tostring(Prey)].Character[Astral.Silent["Part"]].CFrame + (
game.Players[tostring(Prey)].Character[Astral.Silent["Part"]].Velocity *
Astral.Silent.Prediction
)
return (tostring(v) == "Hit" and endpoint)
end
end
return backupindex(self, v)
end)
if Astral.Macro.AntiFling then
-- // Constants \\ --
-- [ Services ] --
local Services = setmetatable({}, {__index = function(Self, Index)
local NewService = game.GetService(game, Index)
if NewService then
Self[Index] = NewService
end
return NewService
end})
-- [ LocalPlayer ] --
local LocalPlayer = Services.Players.LocalPlayer
-- // Functions \\ --
local function PlayerAdded(Player)
local Detected = false
local Character;
local PrimaryPart;
CharacterAdded(Player.Character or Player.CharacterAdded:Wait())
Player.CharacterAdded:Connect(CharacterAdded)
Services.RunService.Heartbeat:Connect(function()
if (Character and Character:IsDescendantOf(workspace)) and (PrimaryPart
and PrimaryPart:IsDescendantOf(Character)) then
if PrimaryPart.AssemblyAngularVelocity.Magnitude > 50 or
PrimaryPart.AssemblyLinearVelocity.Magnitude > 100 then
if Detected == false then
game.StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "Fling Exploit detected, Player: " ..
tostring(Player);
Color = Color3.fromRGB(255, 200, 0);
})
end
Detected = true
for i,v in ipairs(Character:GetDescendants()) do
if v:IsA("BasePart") then
v.CanCollide = false
v.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
v.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
v.CustomPhysicalProperties = PhysicalProperties.new(0,
0, 0)
end
end
PrimaryPart.CanCollide = false
PrimaryPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
PrimaryPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
PrimaryPart.CustomPhysicalProperties = PhysicalProperties.new(0,
0, 0)
end
end
end)
end
-- // Event Listeners \\ --
for i,v in ipairs(Services.Players:GetPlayers()) do
if v ~= LocalPlayer then
PlayerAdded(v)
end
end
Services.Players.PlayerAdded:Connect(PlayerAdded)
game.StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "You were flung. Neutralizing velocity.";
Color = Color3.fromRGB(255, 0, 0);
})
elseif PrimaryPart.AssemblyLinearVelocity.Magnitude < 50 or
PrimaryPart.AssemblyAngularVelocity.Magnitude > 50 then
LastPosition = PrimaryPart.CFrame
end
end)
end)
end
if Astral.Aimbot.Enabled then
getgenv().AimPart = Astral.Aimbot.Part
getgenv().AimlockKey = Astral.Aimbot.Keybind
getgenv().AimRadius = 30
getgenv().ThirdPerson = Astral.Aimbot.ThirdPerson
getgenv().FirstPerson = Astral.Aimbot.FirstPerson
getgenv().TeamCheck = false
getgenv().PredictMovement = Astral.Aimbot.UsePrediction
getgenv().PredictionVelocity = Astral.Aimbot.Prediction
getgenv().Smoothness = Astral.Aimbot.Smoothness
getgenv().SmoothnessAmount = Astral.Aimbot.Amount
getgenv().DeathCheck = Astral.Aimbot.Checks.DeathCheck
getgenv().WallCheck = Astral.Aimbot.Checks.WallCheck -- Add this line
getgenv().WorldToViewportPoint = function(P)
return Camera:WorldToViewportPoint(P)
end
getgenv().WorldToScreenPoint = function(P)
return Camera.WorldToScreenPoint(Camera, P)
end
getgenv().GetObscuringObjects = function(T)
if T and T:FindFirstChild(getgenv().AimPart) and Client and
Client.Character:FindFirstChild("Head") then
local RayPos = workspace:FindPartOnRay(RNew(
T[getgenv().AimPart].Position, Client.Character.Head.Position)
)
if RayPos then return RayPos:IsDescendantOf(T) end
end
end
getgenv().GetNearestTarget = function()
local players = {}
local PLAYER_HOLD = {}
local DISTANCES = {}
for i, v in pairs(Players:GetPlayers()) do
if v ~= Client then
table.insert(players, v)
end
end
for i, v in pairs(players) do
if v.Character ~= nil then
local AIM = v.Character:FindFirstChild("Head")
if getgenv().TeamCheck == true and v.Team ~= Client.Team then
local DISTANCE = (v.Character:FindFirstChild("Head").Position -
game.Workspace.CurrentCamera.CFrame.p).magnitude
local RAY = Ray.new(game.Workspace.CurrentCamera.CFrame.p,
(Mouse.Hit.p - game.Workspace.CurrentCamera.CFrame.p).unit * DISTANCE)
local HIT, POS = game.Workspace:FindPartOnRay(RAY, game.Workspace)
local DIFF = math.floor((POS - AIM.Position).magnitude)
PLAYER_HOLD[v.Name .. i] = {}
PLAYER_HOLD[v.Name .. i].dist = DISTANCE
PLAYER_HOLD[v.Name .. i].plr = v
PLAYER_HOLD[v.Name .. i].diff = DIFF
table.insert(DISTANCES, DIFF)
elseif getgenv().TeamCheck == false and v.Team == Client.Team then
local DISTANCE = (v.Character:FindFirstChild("Head").Position -
game.Workspace.CurrentCamera.CFrame.p).magnitude
local RAY = Ray.new(game.Workspace.CurrentCamera.CFrame.p,
(Mouse.Hit.p - game.Workspace.CurrentCamera.CFrame.p).unit * DISTANCE)
local HIT, POS = game.Workspace:FindPartOnRay(RAY, game.Workspace)
local DIFF = math.floor((POS - AIM.Position).magnitude)
PLAYER_HOLD[v.Name .. i] = {}
PLAYER_HOLD[v.Name .. i].dist = DISTANCE
PLAYER_HOLD[v.Name .. i].plr = v
PLAYER_HOLD[v.Name .. i].diff = DIFF
table.insert(DISTANCES, DIFF)
end
end
end
for i, v in pairs(PLAYER_HOLD) do
if v.diff == L_DISTANCE then
return v.plr
end
end
return nil
end
Mouse.KeyDown:Connect(function(a)
if not (Uis:GetFocusedTextBox()) then
if a == AimlockKey and AimlockTarget == nil then
pcall(function()
if MousePressed ~= true then MousePressed = true end
local Target;Target = GetNearestTarget()
if Target ~= nil then
AimlockTarget = Target
end
end)
elseif a == AimlockKey and AimlockTarget ~= nil then
if AimlockTarget ~= nil then AimlockTarget = nil end
if MousePressed ~= false then
MousePressed = false
end
end
end
end)
RService.RenderStepped:Connect(function()
if getgenv().ThirdPerson == true and getgenv().FirstPerson == true then
if (Camera.Focus.p - Camera.CoordinateFrame.p).Magnitude > 1 or
(Camera.Focus.p - Camera.CoordinateFrame.p).Magnitude <= 1 then
CanNotify = true
else
CanNotify = false
end
elseif getgenv().ThirdPerson == true and getgenv().FirstPerson == false then
if (Camera.Focus.p - Camera.CoordinateFrame.p).Magnitude > 1 then
CanNotify = true
else
CanNotify = false
end
elseif getgenv().ThirdPerson == false and getgenv().FirstPerson == true then
if (Camera.Focus.p - Camera.CoordinateFrame.p).Magnitude <= 1 then
CanNotify = true
else
CanNotify = false
end
end
if Aimlock == true and MousePressed == true then
if AimlockTarget and AimlockTarget.Character and
AimlockTarget.Character:FindFirstChild(getgenv().AimPart) then
if getgenv().DeathCheck and CheckTargetHealth(AimlockTarget) then
AimlockTarget = nil -- Unlock from the target with health 2 or
under.
return
end
if Astral.Aimbot.Checks.VisibleCheck then
if AimlockTarget and not
IsPartVisible(AimlockTarget.Character.HumanoidRootPart, Target.Character) then
AimlockTarget = nil
return
end
end
if Astral.Silent.Checks.OwnDeathCheck then
local LocalPlayer = game.Players.LocalPlayer
local LocalPlayerHealth = LocalPlayer.Character and
LocalPlayer.Character:FindFirstChild("Humanoid") and
LocalPlayer.Character.Humanoid.Health or 0
game:GetService("RunService").Heartbeat:Connect(function()
if Astral.AutoPred.Enabled then
local ping = game:GetService("Stats").Network.ServerStatsItem["Data
Ping"]:GetValueString()
local pingValue = string.split(ping, " ")[1]
local pingNumber = tonumber(pingValue)
if Astral.AutoPred.Silent.Enabled == true then
if pingNumber > 310 then
getgenv().Astral.Silent.Prediction = 0.16780
elseif pingNumber > 260 then
getgenv().Astral.Silent.Prediction = 0.1651
elseif pingNumber > 210 then
getgenv().Astral.Silent.Prediction = 0.16942
elseif pingNumber > 200 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P200
elseif pingNumber > 190 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P190
elseif pingNumber > 180 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P180
elseif pingNumber > 170 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P170
elseif pingNumber > 160 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P160
elseif pingNumber > 150 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P150
elseif pingNumber > 140 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P140
elseif pingNumber > 130 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P130
elseif pingNumber > 120 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P120
elseif pingNumber > 110 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P110
elseif pingNumber > 100 then
getgenv().Astral.Silent.Prediction =
Astral.AutoPred.Silent.P100
elseif pingNumber > 90 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P90
elseif pingNumber > 80 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P80
elseif pingNumber > 70 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P70
elseif pingNumber > 60 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P60
elseif pingNumber > 50 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P50
elseif pingNumber > 40 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P40
elseif pingNumber > 30 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P30
elseif pingNumber > 20 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P20
elseif pingNumber > 10 then
getgenv().Astral.Silent.Prediction = Astral.AutoPred.Silent.P10
end
end
if Astral.AutoPred.Aimbot.Enabled == true then
if pingNumber > 310 then
getgenv().PredictionVelocity = 0.16780
elseif pingNumber > 260 then
getgenv().PredictionVelocity = 0.1651
elseif pingNumber > 210 then
getgenv().PredictionVelocity = 0.16942
elseif pingNumber > 200 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P200
elseif pingNumber > 190 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P190
elseif pingNumber > 180 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P180
elseif pingNumber > 170 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P170
elseif pingNumber > 160 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P160
elseif pingNumber > 150 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P150
elseif pingNumber > 140 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P140
elseif pingNumber > 130 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P130
elseif pingNumber > 120 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P120
elseif pingNumber > 110 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P110
elseif pingNumber > 100 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P100
elseif pingNumber > 90 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P90
elseif pingNumber > 80 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P80
elseif pingNumber > 70 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P70
elseif pingNumber > 60 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P60
elseif pingNumber > 50 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P50
elseif pingNumber > 40 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P40
elseif pingNumber > 30 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P30
elseif pingNumber > 20 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P20
elseif pingNumber > 10 then
getgenv().PredictionVelocity = Astral.AutoPred.Aimbot.P10
end
end
end
end)
-- 'distance' now contains the distance in studs between the client and
the calculated point.
end
end
return distance
end
end
RunService.Heartbeat:Connect(manage_range)
local AnimationIds = {
Lay = "rbxassetid://3152378852",
Greet = "rbxassetid://3189777795",
Sturdy = "rbxassetid://11710529975",
Griddy = "rbxassetid://11710529975",
Speed = "rbxassetid://11710541744",
}
game:GetService("UserInputService").InputBegan:Connect(function(key, gp)
if not gp then
if key.KeyCode == Astral.Emotes.LayKey then
if Astral.Emotes.Lay then
local Lay = Instance.new("Animation")
Lay.AnimationId = AnimationIds.Lay
local LayTrack =
game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Lay)
LayTrack:Play()
game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
LayTrack:Stop()
end)
end
end
if key.KeyCode == Astral.Emotes.GreetKey then
if Astral.Emotes.Greet then
local Greet = Instance.new("Animation")
Greet.AnimationId = AnimationIds.Greet
local GreetTrack =
game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Greet)
GreetTrack:Play()
game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
GreetTrack:Stop()
end)
end
end
if key.KeyCode == Astral.Emotes.SpeedKey then
if Astral.Emotes.Speed then
local Speed = Instance.new("Animation")
Speed.AnimationId = AnimationIds.Speed
local SppedTrack =
game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Speed)
SpeedTrack:Play()
game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
SpeedTrack:Stop()
end)
end
end
if key.KeyCode == Astral.Emotes.SturdyKey then
if Astral.Emotes.Sturdy then
local Sturdy = Instance.new("Animation")
Sturdy.AnimationId = AnimationIds.Sturdy
local SturdyTrack =
game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Sturdy)
SturdyTrack:Play()
game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
SturdyTrack:Stop()
end)
end
end
if key.KeyCode == Astral.Emotes.GriddyKey then
if Astral.Emotes.Griddy then
local Griddy = Instance.new("Animation")
Griddy.AnimationId = AnimationIds.Griddy
local GriddyTrack =
game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Griddy)
GriddyTrack:Play()
game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
GriddyTrack:Stop()
end)
end
end
end
end)
if Astral.Main.FindBestServer then
HTTPService = game:GetService("HttpService")
local TeleportService = game:GetService("TeleportService")
local StatsService = game:GetService("Stats")
return nil
end
local commonLoadTime = 5
task.wait(commonLoadTime)
if Astral.MemorySpoofer.MemSpoofer then
local Settings = {
range1 = Astral.MemorySpoofer.Minimum,
range2 = Astral.MemorySpoofer.Maximum,
Memory:GetPropertyChangedSignal("Text"):Connect(function()
local Random = math.random(Settings.range1,Settings.range2)
Random = Random * 1.23
Memory.Text = "".. Random .." MB"
end)
end
Mouse.KeyDown:Connect(function(Key)
if Key == (string.lower(Astral.Blink.BlinkKeybind))then
if Astral.Blink.Enabled then
settings():GetService("NetworkSettings").IncomingReplicationLag = 99999
print('blinking...')
wait(Astral.Blink.BlinkDuration)
settings():GetService("NetworkSettings").IncomingReplicationLag = 0
end
end
end)
UserInputService.InputBegan:Connect(OnKeyPress)
local LastRenderTime = 0
local FullCircleRotation = 2 * math.pi
local TotalRotation = 0
RunService.RenderStepped:Connect(RotateCamera)
local cheats = {
b_b = Astral.Esp.Bounding_Box;
b_f = Astral.Esp.Fill_Box;
b_f_t = Astral.Esp.Fill_Transparency;
b_sd = Astral.Esp.Show_Distance;
b_sn = Astral.Esp.Show_Name;
b_sh = Astral.Esp.Show_Health;
b_ht = Astral.Esp.Health_Type;
b_rt = true;
b_tc = true;
}
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
if Astral.Main.Gui then
local Library =
loadstring(game:HttpGet('https://raw.githubusercontent.com/k4alt/gray/main/
Library.lua'))()
local ThemeManager =
loadstring(game:HttpGet('https://raw.githubusercontent.com/k4alt/gray/main/
theme.lua'))()
local SaveManager =
loadstring(game:HttpGet('https://raw.githubusercontent.com/k4alt/gray/main/
save.lua'))()
-- You do not have to set your tabs & groups up this way, just a prefrence.
local Tabs = {
-- Creates a new tab titled Main
['Aiming'] = Window:AddTab("Aiming"),
['UI Settings'] = Window:AddTab('UI Settings'),
}
AimingLeftBox:AddToggle('SilentToggle', {
Text = 'Silent Aim',
Default = Astral.Silent.Enabled, -- Default value (true / false)
Tooltip = 'Enables/Disables Silent Aim', -- Information shown when you hover
over the toggle
})
Toggles.SilentToggle:OnChanged(function()
getgenv().Astral.Silent.Enabled = Toggles.SilentToggle.Value
end)
AimingLeftBox:AddInput('SilentKeybindText', {
Default = Astral.Silent.Keybind,
Numeric = false, -- true / false, only allows numbers
Finished = true, -- true / false, only calls callback when you press enter
Text = 'Keybind',
Tooltip = 'Sets the Silent Aims Keybind Toggle', -- Information shown when you
hover over the textbox
Options.SilentKeybindText:OnChanged(function()
getgenv().Astral.Silent.Keybind = Options.SilentKeybindText.Value
end)
AimingLeftBox:AddToggle('UseKeybindToggle', {
Text = 'UseKeybind',
Default = Astral.Silent.UseKeybind, -- Default value (true / false)
Tooltip = 'Enables/Disables Use Keybind', -- Information shown when you hover
over the toggle
})
Toggles.UseKeybindToggle:OnChanged(function()
getgenv().Astral.Silent.UseKeybind = Toggles.UseKeybindToggle.Value
end)
AimingLeftBox:AddDropdown('PartDrop', {
Values = { 'HumanoidRootPart', 'UpperTorso', 'LowerTorso', 'Head' },
Default = 1, -- number index of the value / string
Multi = false, -- true / false, allows multiple choices to be selected
Text = 'Part',
Tooltip = 'Sets the silents part', -- Information shown when you hover over the
textbox
})
Options.PartDrop:OnChanged(function()
getgenv().Astral.Silent.Part = Options.PartDrop.Value
end)
AimingLeftBox:AddToggle('ClosestPartToggle', {
Text = 'ClosestPart',
Default = Astral.Silent.ClosestPart, -- Default value (true / false)
Tooltip = 'Enables/Disables Use Keybind', -- Information shown when you hover
over the toggle
})
Toggles.ClosestPartToggle:OnChanged(function()
getgenv().Astral.Silent.ClosestPart = Toggles.ClosestPartToggle.Value
end)
AimingLeftBox:AddInput('PredText', {
Default = Astral.Silent.Prediction,
Numeric = true, -- true / false, only allows numbers
Finished = true, -- true / false, only calls callback when you press enter
Text = 'Prediction',
Tooltip = 'Sets the Silent Aim prediction', -- Information shown when you hover
over the textbox
Options.PredText:OnChanged(function()
getgenv().Astral.Silent.Prediction = Options.PredText.Value
end)
AimingLeftBox:AddToggle('AutoPredToggle', {
Text = 'AutoPred',
Default = Astral.AutoPred.Enabled, -- Default value (true / false)
Tooltip = 'Enables/Disables Use Keybind', -- Information shown when you hover
over the toggle
})
Toggles.AutoPredToggle:OnChanged(function()
getgenv().Astral.AutoPred.Enabled = Toggles.AutoPredToggle.Value
end)
AimingLeftBox:AddToggle('RangePredToggle', {
Text = 'RangePred',
Default = Astral.Range.Prediction.Enabled, -- Default value (true / false)
Tooltip = 'Enable/Disables RangePred', -- Information shown when you hover over
the toggle
})
Toggles.RangePredToggle:OnChanged(function()
getgenv().Astral.Range.Prediction.Enabled = Toggles.RangePredToggle.Value
end)
AimingLeftBox:AddDivider()
AimingLeftBox:AddSlider('FOVSlid', {
Text = 'Radius',
Default = Astral.FOV.Radius,
Min = 5,
Max = 80,
Rounding = 1,
AimingLeftBox:AddToggle('VisibleTog', {
Text = 'Visible',
Default = Astral.FOV.Visible, -- Default value (true / false)
Tooltip = 'Enable/Disables Visible FOV', -- Information shown when you hover
over the toggle
})
Toggles.VisibleTog:OnChanged(function()
getgenv().Astral.FOV.Visible = Toggles.VisibleTog.Value
end)
Options.FOVSlid:OnChanged(function()
getgenv().Astral.FOV.Radius = Options.FOVSlid.Value
end)
AimingLeftBox:AddToggle('GunFOVToggle', {
Text = 'GunFOV',
Default = Astral.GunFOV.Enabled, -- Default value (true / false)
Tooltip = 'Enable/Disables GunFOV', -- Information shown when you hover over
the toggle
})
Toggles.GunFOVToggle:OnChanged(function()
getgenv().Astral.GunFOV.Enabled = Toggles.GunFOVToggle.Value
end)
AimingLeftBox:AddToggle('RangeFOVToggle', {
Text = 'RangeFOV',
Default = Astral.Range.FOV.Enabled, -- Default value (true / false)
Tooltip = 'Enable/Disables RangeFOV', -- Information shown when you hover over
the toggle
})
Toggles.RangeFOVToggle:OnChanged(function()
getgenv().Astral.Range.FOV.Enabled = Toggles.RangeFOVToggle.Value
end)
AimingLeftBox:AddLabel('Color'):AddColorPicker('ColorPicker', {
Default = Color3.new(0, 1, 0), -- Bright green
Title = 'Color', -- Optional. Allows you to have a custom color picker title
(when you open it)
})
Options.ColorPicker:OnChanged(function()
Circle.Color = Options.ColorPicker.Value
end)
AimingLeftBox:AddDivider()
AimingLeftBox:AddToggle('DeathTog', {
Text = 'Death Check',
Default = Astral.Silent.Checks.DeathCheck, -- Default value (true / false)
Tooltip = 'Enable/Disables Death Check', -- Information shown when you hover
over the toggle
})
Toggles.DeathTog:OnChanged(function()
getgenv().Astral.Silent.Checks.DeathCheck = Toggles.DeathTog.Value
end)
AimingLeftBox:AddToggle('VisTog', {
Text = 'VisibleCheck',
Default = Astral.Silent.Checks.VisibleCheck, -- Default value (true / false)
Tooltip = 'Enable/Disables Death Check', -- Information shown when you hover
over the toggle
})
Toggles.VisTog:OnChanged(function()
getgenv().Astral.Silent.Checks.VisibleCheck = Toggles.VisTog.Value
end)
RightGroupBox:AddInput('MyTextboxKey', {
Default = Astral.Aimbot.Keybind,
Numeric = true, -- true / false, only allows numbers
Finished = true, -- true / false, only calls callback when you press enter
Text = 'Keybind',
Tooltip = 'Sets the Keybind', -- Information shown when you hover over the
textbox
Options.MyTextboxKey:OnChanged(function()
getgenv().AimlockKey = Options.MyTextboxKey.Value
end)
RightGroupBox:AddDropdown('MyDropdown2', {
Values = { 'HumanoidRootPart', 'UpperTorso', 'LowerTorso', 'Head'},
Default = 2, -- number index of the value / string
Multi = false, -- true / false, allows multiple choices to be selected
Text = 'Part',
Tooltip = 'What part to aim at (non closest part)', -- Information shown when
you hover over the textbox
})
Options.MyDropdown2:OnChanged(function()
key21 = Options.MyDropdown2.Value
end)
RightGroupBox:AddInput('MyTextboxPred', {
Default = Astral.Aimbot.Prediction,
Numeric = true, -- true / false, only allows numbers
Finished = false, -- true / false, only calls callback when you press enter
Text = 'Prediction',
Tooltip = 'Sets the Prediction', -- Information shown when you hover over the
textbox
Options.MyTextboxPred:OnChanged(function()
getgenv().PredictionVelocity = Options.MyTextboxPred.Value
end)
RightGroupBox:AddToggle('MyToggleSmooth', {
Text = 'Smoothness',
Default = Astral.Aimbot.Smoothness, -- Default value (true / false)
Tooltip = 'Smoothness (makes you look more legit)', -- Information shown when
you hover over the toggle
})
RightGroupBox:AddSlider('MySliderAM', {
Text = 'Smoothness: ',
Default = 0.05,
Min = 0.01,
Max = 1,
Rounding = 2,
Options.MySliderAM:OnChanged(function()
getgenv().SmoothnessAmount = Options.MySliderAM.Value
end)
RightGroupBox:AddToggle('MyToggleGG', {
Text = 'Range-Smoothness',
Default = Astral.Range.Smoothness.Enabled, -- Default value (true / false)
Tooltip = 'Smoothness based on range', -- Information shown when you hover over
the toggle
})
Toggles.MyToggleGG:OnChanged(function()
-- here we get our toggle object & then get its value
getgenv().Astral.Range.Smoothness.Enabled = Toggles.MyToggleGG.Value
end)
RightGroupBox:AddToggle('MyToggleFP', {
Text = 'First-Person',
Default = true, -- Default value (true / false)
Tooltip = 'Traces in first person', -- Information shown when you hover over
the toggle
})
Toggles.MyToggleFP:OnChanged(function()
-- here we get our toggle object & then get its value
getgenv().FirstPerson = Toggles.MyToggleFP.Value
end)
RightGroupBox:AddToggle('MyToggleTP', {
Text = 'Third-Person',
Default = true, -- Default value (true / false)
Tooltip = 'Traces in third person', -- Information shown when you hover over
the toggle
})
Toggles.MyToggleTP:OnChanged(function()
-- here we get our toggle object & then get its value
getgenv().ThirdPerson = Toggles.MyToggleTP.Value
end)
RightGroupBox:AddLabel('')
RightGroupBox:AddToggle('MyToggleWA', {
Text = 'Death Check',
Default = true, -- Default value (true / false)
Tooltip = 'Unlocks on player death', -- Information shown when you hover over
the toggle
})
Toggles.MyToggleWA:OnChanged(function()
-- here we get our toggle object & then get its value
getgenv().DeathCheck = Toggles.MyToggleWA.Value
end)
RightGroupBox:AddToggle('MyToggleYE', {
Text = 'Wall Check',
Default = true, -- Default value (true / false)
Tooltip = 'Unlocks if player is behind wall.', -- Information shown when you
hover over the toggle
})
RightGroupBox:AddToggle('MyToggleEE', {
Text = 'Own-Death Check',
Default = true, -- Default value (true / false)
Tooltip = 'Unlocks on your death', -- Information shown when you hover over the
toggle
})
Toggles.MyToggleEE:OnChanged(function()
-- here we get our toggle object & then get its value
getgenv().Astral.Aimbot.OwnDeathCheck = Toggles.MyToggleEE.Value
end)
task.spawn(function()
while true do
wait(1)
-- Library functions
-- Sets the watermark visibility
Library:SetWatermarkVisibility(Astral.Main.GuiInfo)
game:GetService("RunService").Heartbeat:Connect(function()
local ping = game:GetService("Stats").Network.ServerStatsItem["Data
Ping"]:GetValueString()
local pingValue = string.split(ping, " ")[1]
local pingNumber = tonumber(pingValue)
Library:SetWatermark('Prediction: ' .. Astral.Silent.Prediction .. ' Ping:
' .. pingNumber)
end)
Library:OnUnload(function()
print('Unloaded!')
Library.Unloaded = true
end)
-- UI Settings
local MenuGroup = Tabs['UI Settings']:AddLeftGroupbox('Menu')
-- Addons:
-- SaveManager (Allows you to have a configuration system)
-- ThemeManager (Allows you to have a menu theme system)
-- Builds our theme menu (with plenty of built in themes) on the left side
-- NOTE: you can also call ThemeManager:ApplyToGroupbox to add it to a specific
groupbox
ThemeManager:ApplyToTab(Tabs['UI Settings'])
end
-- You can use the SaveManager:LoadAutoloadConfig() to load a config
-- which has been marked to be one that auto loads!
local co = coroutine.create(function()
while wait(0.1) do
if (player.Character and
player.Character:FindFirstChild"HumanoidRootPart") then
bbg.Adornee = player.Character.HumanoidRootPart
info.Adornee = player.Character.HumanoidRootPart
forhealth.Adornee = player.Character.HumanoidRootPart
--main
do
wait(2)
--initial player addition
for _,v in pairs(game:GetService("Players"):GetChildren()) do
if not (v.Name == localplayer.Name) then
if not (espf:FindFirstChild(v.Name)) then
addEsp(v)
end
end
end
--auto-update
while wait(10) do
for _,v in pairs(game:GetService("Players"):GetChildren()) do
if not (v.Name == localplayer.Name) then
if not (espf:FindFirstChild(v.Name)) then
addEsp(v)
end
end
end
end
end
end