astral pro crack  CHECK DESCRIPTION
Key Required

astral pro crack CHECK DESCRIPTION

[NEW 🗺️] Trident Survivalfvvwfvvw 28.5K views 23 executesUpdated Aug 5, 2023
Unrated
00
Lua Script•2170 lines (70859 chars)
--[[
                                  $$\           $$\                           $$\        $$$$$$\              $$\                     $$\        $$$$$$\                                          $$\                         
                              \__|          $$ |                          $$ |      $$  __$$\             $$ |                    $$ |      $$  __$$\                                         $$ |                        
 $$$$$$\   $$$$$$\  $$$$$$$\  $$\  $$$$$$$\ $$$$$$$\   $$$$$$\   $$$$$$\  $$ |  $$\ $$ /  $$ |       $$$$$$$ | $$$$$$\   $$$$$$\  $$$$$$$\  $$ /  \__|$$\   $$\  $$$$$$$\  $$$$$$$\ $$$$$$\ $$$$$$\    $$$$$$\   $$$$$$\  
$$  __$$\  \____$$\ $$  __$$\ $$ |$$  _____|$$  __$$\ $$  __$$\ $$  __$$\ $$ | $$  |\$$$$$$$ |      $$  __$$ |$$  __$$\ $$  __$$\ $$  __$$\ $$$$\     $$ |  $$ |$$  _____|$$  _____|\____$$\\_$$  _|  $$  __$$\ $$  __$$\ 
$$ /  $$ | $$$$$$$ |$$ |  $$ |$$ |$$ /      $$ |  $$ |$$ /  $$ |$$ /  $$ |$$$$$$  /  \____$$ |      $$ /  $$ |$$$$$$$$ |$$ /  $$ |$$ |  $$ |$$  _|    $$ |  $$ |\$$$$$$\  $$ /      $$$$$$$ | $$ |    $$ /  $$ |$$ |  \__|
$$ |  $$ |$$  __$$ |$$ |  $$ |$$ |$$ |      $$ |  $$ |$$ |  $$ |$$ |  $$ |$$  _$$<  $$\   $$ |      $$ |  $$ |$$   ____|$$ |  $$ |$$ |  $$ |$$ |      $$ |  $$ | \____$$\ $$ |     $$  __$$ | $$ |$$\ $$ |  $$ |$$ |      
$$$$$$$  |\$$$$$$$ |$$ |  $$ |$$ |\$$$$$$$\ $$ |  $$ |\$$$$$$  |\$$$$$$  |$$ | \$$\ \$$$$$$  |      \$$$$$$$ |\$$$$$$$\ \$$$$$$  |$$$$$$$  |$$ |      \$$$$$$  |$$$$$$$  |\$$$$$$$\\$$$$$$$ | \$$$$  |\$$$$$$  |$$ |      
$$  ____/  \_______|\__|  \__|\__| \_______|\__|  \__| \______/  \______/ \__|  \__| \______/        \_______| \_______| \______/ \_______/ \__|       \______/ \_______/  \_______|\_______|  \____/  \______/ \__|      
$$ |                                                                                                                                                                                                                      
$$ |                                                                                                                                                                                                                      
\__|                                                                                                                                                                                                                      
]]

if not LPH_OBFUSCATED then
	LPH_JIT = function(...)
		return ...
	end
	LPH_JIT_MAX = function(...)
		return ...
	end
	LPH_JIT_ULTRA = function(...)
		return ...
	end
	LPH_NO_VIRTUALIZE = function(...)
		return ...
	end
	LPH_NO_UPVALUES = function(f)
		return function(...)
			return f(...)
		end
	end
	LPH_ENCSTR = function(...)
		return ...
	end
	LPH_STRENC = function(...)
		return ...
	end
	LPH_HOOK_FIX = function(...)
		return ...
	end
	LPH_CRASH = function()
		return print(debug.traceback())
	end
end

local wrap = LPH_NO_VIRTUALIZE(function(f)
	coroutine.resume(coroutine.create(f))
end)

-- BYPASS 2
local antihitbox
antihitbox = hookmetamethod(
	game,
	"__index",
	newcclosure(function(...)
		local self, k = ...
		if not checkcaller() and k == "Size" and self.Name == "Head" then
			return Vector3.new(1.67225, 0.835624, 0.835624)
		end
		return antihitbox(...)
	end)
)
warn("[ASTRAL DEV] Full-Hitbox Bypass Loaded Success")

-- Full Server Side Bypass
local index
index = hookmetamethod(
	game,
	"__index",
	newcclosure(LPH_NO_VIRTUALIZE(function(obj, idx)
		if index(obj, "Name") == "Leaves" and idx == "Transparency" then
			return 0.4
		end
		if index(obj, "Name") == "Terrain" and idx == "Decoration" then
			return true
		end
		if index(obj, "Name") == "PlayerHitHeadshot" and idx == "SoundId" then
			return "rbxassetid://9119561046"
		end
		if index(obj, "Name") == "PlayerHitHeadshot" and idx == "Volume" then
			return 2
		end
		if index(obj, "Name") == "PlayerHit" and idx == "SoundId" then
			return "rbxassetid://9114487369"
		end
		if index(obj, "Name") == "PlayerHit" and idx == "Volume" then
			return 2
		end
		return index(obj, idx)
	end))
)

local config = Instance.new("Folder")
config.Name = "Monkey"
config.Parent = workspace

local OreESPAdornee = Instance.new("Folder")
OreESPAdornee.Name = "OreESPAdornee"
OreESPAdornee.Parent = workspace:WaitForChild("Monkey")

local PlayerESPAdornee = Instance.new("Folder")
PlayerESPAdornee.Name = "PlayerESPAdornee"
PlayerESPAdornee.Parent = workspace:WaitForChild("Monkey")

local TotemESPAdornee = Instance.new("Folder")
TotemESPAdornee.Name = "TotemESPAdornee"
TotemESPAdornee.Parent = workspace:WaitForChild("Monkey")

local StorageESPAdornee = Instance.new("Folder")
StorageESPAdornee.Name = "StorageESPAdornee"
StorageESPAdornee.Parent = workspace:WaitForChild("Monkey")
local oldTick = tick()
local Camera = game:GetService("Workspace").CurrentCamera
local CharcaterMiddle = game:GetService("Workspace").Ignore.LocalCharacter.Middle
local Mouse = game.Players.LocalPlayer:GetMouse()
local Sky = game:GetService("Lighting"):FindFirstChildOfClass("Sky")
if not Sky then
	Sky = Instance.new("Sky", Lighting)
end

-- Globals
local _Network = getrenv()._G.modules.Network
local _Player = getrenv()._G.modules.Player
local _Character = getrenv()._G.modules.Character
local _Camera = getrenv()._G.modules.Camera

-- BAR
local UserInputService = game:GetService("UserInputService")
local function RUN()
	local scriptConns = {}
	local scriptObjects = {}

	local barBackground = Drawing.new("Square")
	barBackground.Size = Vector2.new(160, 10) -- Adjust the size of the background
	barBackground.Color = Color3.new(0, 0, 0)
	barBackground.Filled = true
	barBackground.Visible = true
	scriptObjects.background = barBackground

	local barInside = Drawing.new("Square")
	barInside.Size = Vector2.new(0, 6) -- Adjust the size of the inside bar
	barInside.Color = Color3.fromHSV(0.5, 1, 1)
	barInside.Filled = true
	barInside.Visible = true
	scriptObjects.inside = barInside

	local runService = game:GetService("RunService")
	local guiService = game:GetService("GuiService")

	local timeCounter = 0

	scriptConns.Update = runService.Heartbeat:Connect(function(deltaTime)
		timeCounter = timeCounter + deltaTime * 2

		local barWidth = barBackground.Size.X

		local screenCenter = guiService:GetScreenResolution() / 2
		local barCenter = screenCenter + Vector2.new(-barWidth / 2, 80)

		barBackground.Position = barCenter

		if timeCounter >= 0.98 then
			game:GetService("Workspace").Ignore.LocalCharacter.Middle.Anchored = false
			if game.Workspace:FindFirstChild("Airwalk") then
				game.Workspace:FindFirstChild("Airwalk"):Destroy()
			end
			barBackground:Remove()
			barInside:Remove()
			scriptConns.Update:Disconnect()
			return
		end

		local insideWidth = timeCounter * barWidth
		barInside.Position = barCenter - Vector2.new(insideWidth / 2, 0) + Vector2.new(barWidth / 2, 2)
		barInside.Size = Vector2.new(insideWidth, 6) -- Adjust the size of the inside bar
		barInside.Color = Color3.fromHSV(0.25 - (timeCounter / 4), 1, 1)
	end)
end

--Tables
local Functions = {}
local Esp = {
	Settings = {
		Boxes = false,
		BoxesOutline = true,
		BoxesColor = Color3.fromRGB(255, 255, 255),
		BoxesOutlineColor = Color3.fromRGB(0, 0, 0),
		Sleeping = false,
		SleepingColor = Color3.fromRGB(255, 255, 255),
		Distances = false,
		DistanceColor = Color3.fromRGB(255, 255, 255),
		Armour = false,
		ArmourColor = Color3.fromRGB(255, 255, 255),
		Tool = false,
		ToolColor = Color3.fromRGB(255, 255, 255),
		Tracer = false,
		TracerColor = Color3.fromRGB(255, 255, 255),
		TracerThickness = 1,
		TracerTransparrency = 1,
		TracerFrom = "Bottom",
		ViewAngle = false,
		ViewAngleColor = Color3.fromRGB(255, 255, 255),
		ViewAngleThickness = 1,
		ViewAngleTransparrency = 1,
		OreDistances = false,
		OreDistanceColor = Color3.fromRGB(255, 255, 255),
		OreNames = false,
		OreNamesColor = Color3.fromRGB(255, 255, 255),
		OresRenderDistance = 1500,
		TextFont = 2,
		TextOutline = true,
		TextSize = 15,
		RenderDistance = 1500,
		TeamCheck = false,
		TargetSleepers = false,
		MinTextSize = 8,
	},
	Drawings = {},
	Connections = {},
	Players = {},
	Ores = {},
	StorageThings = {},
}
local Fonts = { ["UI"] = 0, ["System"] = 1, ["Plex"] = 2, ["Monospace"] = 3 }
local Fov = {
	Settings = {
		FovEnabled = false,
		FovColor = Color3.fromRGB(255, 255, 255),
		FovSize = 90,
		FovFilled = false,
		FovTransparency = 1,
		OutlineFovColor = Color3.fromRGB(0, 0, 0),
		Dynamic = true,
		RealFovSize = 90,
		FovPosition = "Mouse",
		Snapline = false,
		SnaplineColor = Color3.fromRGB(255, 255, 255),
	},
}
local Combat =
	{ Settings = {
		SilentEnabled = false,
		SilentHitChance = 100,
		SilentAimPart = "Head",
		TeamCheck = true,
		SleeperCheck = true,
	} }
local Spinbot = { Settings = {
	Enabled = false,
	Speed = 23,
	Mode = "Random",
	ForceCrouch = false,
} }
local Misc = { Settings = {
	SpeedHackEnabled = false,
	SpeedHackSpeed = 30,
	LeavesTrans = 0.4,
} }

local cache, OreCache = {}, {}
local AllowedOres, AllowedItems =
	{ "StoneOre", "NitrateOre", "IronOre" },
	{ "PartsBox", "MilitaryCrate", "SnallBox", "SnallBox", "Backpack", "VendingMachine" }
local SkyBoxes = {
	["Standard"] = {
		["SkyboxBk"] = Sky.SkyboxBk,
		["SkyboxDn"] = Sky.SkyboxDn,
		["SkyboxFt"] = Sky.SkyboxFt,
		["SkyboxLf"] = Sky.SkyboxLf,
		["SkyboxRt"] = Sky.SkyboxRt,
		["SkyboxUp"] = Sky.SkyboxUp,
	},
	["Among Us"] = {
		["SkyboxBk"] = "rbxassetid://5752463190",
		["SkyboxDn"] = "rbxassetid://5752463190",
		["SkyboxFt"] = "rbxassetid://5752463190",
		["SkyboxLf"] = "rbxassetid://5752463190",
		["SkyboxRt"] = "rbxassetid://5752463190",
		["SkyboxUp"] = "rbxassetid://5752463190",
	},
	["Spongebob"] = {
		["SkyboxBk"] = "rbxassetid://277099484",
		["SkyboxDn"] = "rbxassetid://277099500",
		["SkyboxFt"] = "rbxassetid://277099554",
		["SkyboxLf"] = "rbxassetid://277099531",
		["SkyboxRt"] = "rbxassetid://277099589",
		["SkyboxUp"] = "rbxassetid://277101591",
	},
	["Deep Space"] = {
		["SkyboxBk"] = "rbxassetid://159248188",
		["SkyboxDn"] = "rbxassetid://159248183",
		["SkyboxFt"] = "rbxassetid://159248187",
		["SkyboxLf"] = "rbxassetid://159248173",
		["SkyboxRt"] = "rbxassetid://159248192",
		["SkyboxUp"] = "rbxassetid://159248176",
	},
	["Winter"] = {
		["SkyboxBk"] = "rbxassetid://510645155",
		["SkyboxDn"] = "rbxassetid://510645130",
		["SkyboxFt"] = "rbxassetid://510645179",
		["SkyboxLf"] = "rbxassetid://510645117",
		["SkyboxRt"] = "rbxassetid://510645146",
		["SkyboxUp"] = "rbxassetid://510645195",
	},
	["Clouded Sky"] = {
		["SkyboxBk"] = "rbxassetid://252760981",
		["SkyboxDn"] = "rbxassetid://252763035",
		["SkyboxFt"] = "rbxassetid://252761439",
		["SkyboxLf"] = "rbxassetid://252760980",
		["SkyboxRt"] = "rbxassetid://252760986",
		["SkyboxUp"] = "rbxassetid://252762652",
	},
	--["test"] = {"SkyboxBk"="rbxassetid://","SkyboxDn"="rbxassetid://","SkyboxFt"="rbxassetid://","SkyboxLf"="rbxassetid://","SkyboxRt"="rbxassetid://","SkyboxUp"="rbxassetid://"},
}

LPH_JIT_MAX(function()
	function Functions:GetClosest()
		local closest, PlayerDistance, playerTable = nil, Esp.Settings.RenderDistance, nil
		for i, v in pairs(getupvalues(getrenv()._G.modules.Player.GetPlayerModel)[1]) do
			if v.model:FindFirstChild("HumanoidRootPart") then
				local Mouse = game.Players.LocalPlayer:GetMouse()
				local pos, OnScreen = Camera.WorldToViewportPoint(Camera, v.model:GetPivot().Position)
				local MouseMagnitude = (Vector2.new(pos.X, pos.Y) - Vector2.new(Mouse.X, Mouse.Y)).Magnitude
				local PlayerDistance = (CharcaterMiddle:GetPivot().Position - v.model:GetPivot().Position).Magnitude
				if
					MouseMagnitude < Fov.Settings.RealFovSize
					and PlayerDistance <= Esp.Settings.RenderDistance
					and OnScreen == true
				then
					closest = v.model
					PlayerDistance = PlayerDistance
					playerTable = v
				end
			end
		end
		return closest, playerTable
	end
end)()

function Functions:GetProjectileInfo()
	if getrenv()._G.modules.FPS.GetEquippedItem() == nil then
		return 0, 0
	end
	local mod = require(game:GetService("ReplicatedStorage").ItemConfigs[getrenv()._G.modules.FPS.GetEquippedItem().id])
	for i, v in pairs(mod) do
		if i == "ProjectileSpeed" or i == "ProjectileDrop" then
			return mod.ProjectileSpeed, mod.ProjectileDrop
		end
	end
	return 0, 0
end

LPH_NO_VIRTUALIZE(function()
	function Functions:Predict()
		local Prediction = Vector3.new(0, 0, 0)
		local Drop = Vector3.new(0, 0, 0)
		if Functions:GetClosest() ~= nil then
			local ps, pd = Functions:GetProjectileInfo()
			local Player, PlayerTable = Functions:GetClosest()
			local Velocity = PlayerTable.velocityVector
			local Distance = (CharcaterMiddle.Position - Player[Combat.Settings.SilentAimPart].Position).Magnitude
			if ps == 0 then
				ps = 500
			end
			if pd == 0 then
				pd = 1
			end
			local TimeOfFlight = Distance / ps
			newps = ps - 13 * ps ^ 2 * TimeOfFlight ^ 2
			TimeOfFlight = TimeOfFlight + (Distance / newps)
			if Velocity and TimeOfFlight then
				Drop = Vector3.new(0, TimeOfFlight, 0)
				Prediction = (Velocity * (TimeOfFlight * 10)) * 0.5
				Prediction = Prediction + Drop
			end
		end
		return Prediction, Drop
	end
end)()

function Functions:Draw(Type, Propities)
	if not Type and not Propities then
		return
	end
	local drawing = Drawing.new(Type)
	for i, v in pairs(Propities) do
		drawing[i] = v
	end
	table.insert(Esp.Drawings, drawing)
	return drawing
end
function Functions:GetToolNames()
	tbl = {}
	for i, v in pairs(game:GetService("ReplicatedStorage").HandModels:GetChildren()) do
		if not table.find(tbl, v.Name) then
			table.insert(tbl, v.Name)
		end
	end
	return tbl
end
function Esp:CheckTools(PlayerTable)
	if not PlayerTable then
		return
	end
	if PlayerTable.equippedItem and table.find(Functions:GetToolNames(), PlayerTable["equippedItem"].id) then
		return tostring(PlayerTable["equippedItem"].id)
	elseif
		PlayerTable.handModel
		and PlayerTable.handModel.Name
		and string.find(PlayerTable.handModel.Name, "Hammer")
	then
		return PlayerTable["handModel"].Name
	else
		return "Empty"
	end
end
function Esp:CreateEsp(PlayerTable)
	if not PlayerTable then
		return
	end
	local drawings = {}
	drawings.BoxOutline = Functions:Draw(
		"Square",
		{
			Thickness = 2,
			Filled = false,
			Transparency = 1,
			Color = Esp.Settings.BoxesOutlineColor,
			Visible = false,
			ZIndex = -1,
			Visible = false,
		}
	)
	drawings.Box = Functions:Draw(
		"Square",
		{ Thickness = 1, Filled = false, Transparency = 1, Color = Esp.Settings.BoxesColor, Visible = false, ZIndex = 2, Visible = false }
	)
	drawings.Sleeping = Functions:Draw(
		"Text",
		{
			Text = "Nil",
			Font = Esp.Settings.TextFont,
			Size = Esp.Settings.TextSize,
			Center = true,
			Outline = Esp.Settings.TextOutline,
			Color = Esp.Settings.SleepingColor,
			ZIndex = 2,
			Visible = false,
		}
	)
	drawings.Armour = Functions:Draw(
		"Text",
		{
			Text = "Naked",
			Font = Esp.Settings.TextFont,
			Size = Esp.Settings.TextSize,
			Center = false,
			Outline = Esp.Settings.TextOutline,
			Color = Esp.Settings.ArmourColor,
			ZIndex = 2,
			Visible = false,
		}
	)
	drawings.Tool = Functions:Draw(
		"Text",
		{
			Text = "Nothing",
			Font = Esp.Settings.TextFont,
			Size = Esp.Settings.TextSize,
			Center = false,
			Outline = Esp.Settings.TextOutline,
			Color = Esp.Settings.ToolColor,
			ZIndex = 2,
			Visible = false,
		}
	)
	drawings.ViewAngle = Functions:Draw(
		"Line",
		{
			Thickness = Esp.Settings.ViewAngleThickness,
			Transparency = Esp.Settings.ViewAngleTransparrency,
			Color = Esp.Settings.ViewAngleColor,
			ZIndex = 2,
			Visible = false,
		}
	)
	drawings.Tracer = Functions:Draw(
		"Line",
		{ Thickness = Esp.Settings.TracerThickness, Transparency = 1, Color = Esp.Settings.TracerColor, ZIndex = 2, Visible = false }
	)
	drawings.PlayerTable = PlayerTable
	Esp.Players[PlayerTable.model] = drawings
end
function Esp:RemoveEsp(PlayerTable)
	if not PlayerTable and PlayerTable.model ~= nil then
		return
	end
	esp = Esp.Players[PlayerTable.model]
	if not esp then
		return
	end
	for i, v in pairs(esp) do
		if not type(v) == "table" then
			v:Remove()
		end
	end
	Esp.Players[PlayerTable.model] = nil
end

function Esp:UpdateEsp()
	for i, v in pairs(Esp.Players) do
		local Character = i
		local Position, OnScreen = Camera:WorldToViewportPoint(Character:GetPivot().Position)
		local scale = 1 / (Position.Z * math.tan(math.rad(Camera.FieldOfView * 0.5)) * 2) * 100
		local w, h = math.floor(40 * scale), math.floor(55 * scale)
		local x, y = math.floor(Position.X), math.floor(Position.Y)
		local Distance = (CharcaterMiddle:GetPivot().Position - Character:GetPivot().Position).Magnitude
		local BoxPosX, BoxPosY = math.floor(x - w * 0.5), math.floor(y - h * 0.5)
		local offsetCFrame = CFrame.new(0, 0, -4)
		if Character and Character:FindFirstChild("HumanoidRootPart") and Character:FindFirstChild("Head") then
			local TeamTag = Character.Head.Teamtag.Enabled
			if OnScreen == true and Esp.Settings.Boxes == true and Distance <= Esp.Settings.RenderDistance then
				if Esp.Settings.TeamCheck == true and TeamTag == false then
					v.BoxOutline.Visible = Esp.Settings.BoxesOutline
					v.Box.Visible = true
				elseif Esp.Settings.TeamCheck == true and TeamTag == true then
					v.BoxOutline.Visible = false
					v.Box.Visible = false
				else
					v.BoxOutline.Visible = Esp.Settings.BoxesOutline
					v.Box.Visible = true
				end
				if Esp.Settings.TargetSleepers == true and v.PlayerTable.sleeping == true then
					v.BoxOutline.Visible = false
					v.Box.Visible = false
				end
				v.BoxOutline.Position = Vector2.new(BoxPosX, BoxPosY)
				v.BoxOutline.Size = Vector2.new(w, h)
				v.Box.Position = Vector2.new(BoxPosX, BoxPosY)
				v.Box.Size = Vector2.new(w, h)
				v.Box.Color = Esp.Settings.BoxesColor
				v.BoxOutline.Color = Esp.Settings.BoxesOutlineColor
			else
				v.BoxOutline.Visible = false
				v.Box.Visible = false
			end
			if OnScreen == true and Esp.Settings.Sleeping == true and Distance <= Esp.Settings.RenderDistance then
				if v.PlayerTable.sleeping == true then
					v.Sleeping.Text = "Sleeping"
				else
					v.Sleeping.Text = "Awake"
				end
				if Esp.Settings.TeamCheck == true and TeamTag == false then
					v.Sleeping.Visible = true
				elseif Esp.Settings.TeamCheck == true and TeamTag == true then
					v.Sleeping.Visible = false
				else
					v.Sleeping.Visible = true
				end
				if Esp.Settings.TargetSleepers == true and v.PlayerTable.sleeping == true then
					v.Sleeping.Visible = false
				end
				v.Sleeping.Outline = Esp.Settings.TextOutline
				v.Sleeping.Color = Esp.Settings.SleepingColor
				v.Sleeping.Size = math.max(
					math.min(math.abs(Esp.Settings.TextSize * scale), Esp.Settings.TextSize),
					Esp.Settings.MinTextSize
				)
				v.Sleeping.Color = Esp.Settings.SleepingColor
				v.Sleeping.Font = Esp.Settings.TextFont
				v.Sleeping.Position = Vector2.new(x, math.floor(y - h * 0.5 - v.Sleeping.TextBounds.Y))
			else
				v.Sleeping.Visible = false
			end
			if OnScreen == true and Esp.Settings.Distances == true and Distance <= Esp.Settings.RenderDistance then
				if Esp.Settings.TeamCheck == true and TeamTag == false then
					v.Sleeping.Visible = true
				elseif Esp.Settings.TeamCheck == true and TeamTag == true then
					v.Sleeping.Visible = false
				else
					v.Sleeping.Visible = true
				end
				if Esp.Settings.TargetSleepers == true and v.PlayerTable.sleeping == true then
					v.Sleeping.Visible = false
				end

				if Esp.Settings.Sleeping == false then
					v.Sleeping.Text = math.floor(Distance) .. "s"
				else
					v.Sleeping.Text = v.Sleeping.Text .. " | " .. math.floor(Distance) .. "s"
				end
				v.Sleeping.Outline = Esp.Settings.TextOutline
				v.Sleeping.Color = Esp.Settings.SleepingColor
				v.Sleeping.Size = math.max(
					math.min(math.abs(Esp.Settings.TextSize * scale), Esp.Settings.TextSize),
					Esp.Settings.MinTextSize
				)
				v.Sleeping.Color = Esp.Settings.SleepingColor
				v.Sleeping.Font = Esp.Settings.TextFont
				v.Sleeping.Position = Vector2.new(x, math.floor(y - h * 0.5 - v.Sleeping.TextBounds.Y))
			else
				v.Sleeping.Visible = false
			end
			if OnScreen == true and Esp.Settings.Tool == true and Distance <= Esp.Settings.RenderDistance then
				if Esp.Settings.TeamCheck == true and TeamTag == false then
					v.Tool.Visible = true
				elseif Esp.Settings.TeamCheck == true and TeamTag == true then
					v.Tool.Visible = false
				else
					v.Tool.Visible = true
				end
				if Esp.Settings.TargetSleepers == true and v.PlayerTable.sleeping == true then
					v.Tool.Visible = false
				end
				v.Tool.Position = Vector2.new(
					math.floor((BoxPosX + w) + v.Tool.TextBounds.X / 10),
					BoxPosY + v.Tool.TextBounds.Y * 1.55 * 0.5 - ((v.Tool.TextBounds.Y * 2) * 0.5) + v.Tool.TextBounds.Y
				)
				v.Tool.Text = Esp:CheckTools(v.PlayerTable)
				v.Tool.Outline = Esp.Settings.TextOutline
				v.Tool.Size = math.max(
					math.min(math.abs(Esp.Settings.TextSize * scale), Esp.Settings.TextSize),
					Esp.Settings.MinTextSize
				)
				v.Tool.Color = Esp.Settings.ToolColor
				v.Tool.Font = Esp.Settings.TextFont
			else
				v.Tool.Visible = false
			end
			if OnScreen == true and Esp.Settings.Armour == true and Distance <= Esp.Settings.RenderDistance then
				if Character.Armor:FindFirstChildOfClass("Folder") then
					v.Armour.Text = "Armoured"
				else
					v.Armour.Text = "Naked"
				end
				if Esp.Settings.TeamCheck == true and TeamTag == false then
					v.Armour.Visible = true
				elseif Esp.Settings.TeamCheck == true and TeamTag == true then
					v.Armour.Visible = false
				else
					v.Armour.Visible = true
				end
				if Esp.Settings.TargetSleepers == true and v.PlayerTable.sleeping == true then
					v.Armour.Visible = false
				end
				v.Armour.Outline = Esp.Settings.TextOutline
				v.Armour.Size = math.max(
					math.min(math.abs(Esp.Settings.TextSize * scale), Esp.Settings.TextSize),
					Esp.Settings.MinTextSize
				)
				v.Armour.Position = Vector2.new(
					math.floor((BoxPosX + w) + v.Armour.TextBounds.X / 10),
					BoxPosY + v.Armour.TextBounds.Y * 1.55 * 0.5 - ((v.Armour.TextBounds.Y * 2) * 0.5)
				)
				v.Armour.Color = Esp.Settings.ArmourColor
				v.Armour.Font = Esp.Settings.TextFont
			else
				v.Armour.Visible = false
			end
			if OnScreen == true and Esp.Settings.Tracer == true and Distance <= Esp.Settings.RenderDistance then
				if Esp.Settings.TeamCheck == true and TeamTag == false then
					v.Tracer.Visible = true
				elseif Esp.Settings.TeamCheck == true and TeamTag == true then
					v.Tracer.Visible = false
				else
					v.Tracer.Visible = true
				end
				if Esp.Settings.TargetSleepers == true and v.PlayerTable.sleeping == true then
					v.Tracer.Visible = false
				end
				v.Tracer.Color = Esp.Settings.TracerColor
				v.Tracer.Thickness = Esp.Settings.TracerThickness
				v.Transparency = Esp.Settings.TracerTransparrency
				if Esp.Settings.TracerFrom == "Bottom" then
					v.Tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
					v.Tracer.To = Vector2.new(x, y + h * 0.5)
				elseif Esp.Settings.TracerFrom == "Middle" then
					v.Tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
					v.Tracer.To = Vector2.new(x, y)
				else
					v.Tracer.From =
						Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / Camera.ViewportSize.Y)
					if Esp.Settings.Sleeping == true then
						v.Tracer.To = Vector2.new(x, (y - h) - v.Sleeping.TextBounds.Y * 0.5)
					else
						v.Tracer.To = Vector2.new(x, y - h * 0.5)
					end
				end
			else
				v.Tracer.Visible = false
			end
			if OnScreen == true and Esp.Settings.ViewAngle == true and Distance <= Esp.Settings.RenderDistance then
				if Esp.Settings.TeamCheck == true and TeamTag == false then
					v.ViewAngle.Visible = true
				elseif Esp.Settings.TeamCheck == true and TeamTag == true then
					v.ViewAngle.Visible = false
				else
					v.ViewAngle.Visible = true
				end
				if Esp.Settings.TargetSleepers == true and v.PlayerTable.sleeping == true then
					v.ViewAngle.Visible = false
				end
				v.ViewAngle.Color = Esp.Settings.ViewAngleColor
				v.ViewAngle.Thickness = Esp.Settings.ViewAngleThickness
				v.Transparency = Esp.Settings.ViewAngleTransparrency
				local headpos = Camera:WorldToViewportPoint(Character.Head.Position)
				local offsetCFrame = CFrame.new(0, 0, -4)
				v.ViewAngle.From = Vector2.new(headpos.X, headpos.Y)
				local value = math.clamp(1 / Distance * 100, 0.1, 1)
				local dir = Character.Head.CFrame:ToWorldSpace(offsetCFrame)
				offsetCFrame = offsetCFrame * CFrame.new(0, 0, 0.4)
				local dirpos = Camera:WorldToViewportPoint(Vector3.new(dir.X, dir.Y, dir.Z))
				if OnScreen == true then
					v.ViewAngle.To = Vector2.new(dirpos.X, dirpos.Y)
					offsetCFrame = CFrame.new(0, 0, -4)
				end
			else
				v.ViewAngle.Visible = false
			end
		else
			v.Box.Visible = false
			v.BoxOutline.Visible = false
			v.Tool.Visible = false
			v.Armour.Visible = false
			v.Sleeping.Visible = false
			v.ViewAngle.Visible = false
			v.Tracer.Visible = false
		end
	end
end

--Drawings
local FovCircle = Functions:Draw(
	"Circle",
	{
		Filled = Fov.Settings.FovFilled,
		Color = Fov.Settings.FovColor,
		Radius = Fov.Settings.FovSize,
		NumSides = 90,
		Thickness = 1,
		Transparency = Fov.Settings.FovTransparency,
		ZIndex = 2,
		Visible = false,
	}
)
local FovSnapline = Functions:Draw("Line", { Transparency = 1, Thickness = 1, Visible = false })

--Connections
local PlayerUpdater = game:GetService("RunService").RenderStepped
local PlayerConnection = PlayerUpdater:Connect(function()
	Esp:UpdateEsp()
end)

--Init Functions

for i, v in pairs(getupvalues(getrenv()._G.modules.Player.GetPlayerModel)[1]) do
	if not table.find(cache, v) then
		table.insert(cache, v)
		Esp:CreateEsp(v)
	end
end

game:GetService("Workspace").ChildAdded:Connect(function(child)
	if child:FindFirstChild("HumanoidRootPart") then
		for i, v in pairs(getupvalues(getrenv()._G.modules.Player.GetPlayerModel)[1]) do
			if not table.find(cache, v) then
				Esp:CreateEsp(v)
				table.insert(cache, v)
			end
		end
	end
end)

local Library =
	loadstring(game:HttpGet("https://raw.githubusercontent.com/BigHacker123/Library.lua/main/Library.lua"))()
local SaveManager = loadstring(
	game:HttpGet("https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/main/addons/SaveManager.lua")
)()
local ThemeManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/main/addons/ThemeManager.lua"))()
local skybox_assets =
	loadstring(game:HttpGet("https://raw.githubusercontent.com/BigHacker123/skybox/main/.lua", true))()

--// Create UI
local Build = "Full Undetected"
local Color = "#FF0000"
local Ver = "2.00"

if Build == "Standard" then
	Color = "#00FF00"
	Ver = "1.1"
elseif Build == "Full Undetected" then
	Color = "#FF0000"
	Ver = "2.0"
elseif Build == "Personal" then
	Color = "#0000FF"
	Ver = "1.1"
end

local Window = Library:CreateWindow({
	Size = UDim2.fromOffset(550, 610),
	Title = 'Astral.<font color="#d17bff">pro</font> | '
		.. '<font color="'
		.. Color
		.. '">'
		.. Build
		.. "</font>"
		.. "                               [v"
		.. Ver
		.. "]",
	Center = true,
	AutoShow = true,
})

local CustomTopText = Drawing.new("Text")
CustomTopText.Text = "Astral [Legit Public] - discord.gg/astralttm"
CustomTopText.Visible = true
CustomTopText.Transparency = 1
CustomTopText.Size = 15
CustomTopText.Outline = true
CustomTopText.Center = true
CustomTopText.Font = 3
CustomTopText.Color = Color3.fromRGB(255, 255, 255)
CustomTopText.Position = Vector2.new(Camera.ViewportSize.X / 2, 0)

Library:SetWatermark("Astral TS")

local Tabs = {
	Combat = Window:AddTab("Combat"),
	Visual = Window:AddTab("Visual"),
	Misc = Window:AddTab("Miscellaneous"),
	["UISettings"] = Window:AddTab("UI Settings"),
}

local HBExpanderTabbox = Tabs.Combat:AddLeftTabbox()
local HBExpanderTab = HBExpanderTabbox:AddTab("Force Hitbox Expansion")
local GunModsTabbox = Tabs.Combat:AddRightTabbox()
local GunModsTab = GunModsTabbox:AddTab("Modifications")
local RiskyTabbox = Tabs.Combat:AddRightTabbox()
local RiskyTab = RiskyTabbox:AddTab("Risky")
local CustomHitsoundsTabBox = Tabs.Misc:AddLeftTabbox("Custom Hitsounds")
local PlayerHitsoundsTab = CustomHitsoundsTabBox:AddTab("Player Hitsounds")
local NatureHitsoundsTab = CustomHitsoundsTabBox:AddTab("Nature Hitsounds")

local sounds = {
	["Defualt Headshot Hit"] = "rbxassetid://9119561046",
	["Defualt Body Hit"] = "rbxassetid://9114487369",
	["Defualt Wood Hit"] = "rbxassetid://9125573608",
	["Defualt Rock Hit"] = "rbxassetid://9118630389",
	Neverlose = "rbxassetid://8726881116",
	Gamesense = "rbxassetid://4817809188",
	One = "rbxassetid://7380502345",
	Bell = "rbxassetid://6534947240",
	Rust = "rbxassetid://1255040462",
	TF2 = "rbxassetid://2868331684",
	Slime = "rbxassetid://6916371803",
	["Among Us"] = "rbxassetid://5700183626",
	Minecraft = "rbxassetid://4018616850",
	["CS:GO"] = "rbxassetid://6937353691",
	Saber = "rbxassetid://8415678813",
	Baimware = "rbxassetid://3124331820",
	Osu = "rbxassetid://7149255551",
	["TF2 Critical"] = "rbxassetid://296102734",
	Bat = "rbxassetid://3333907347",
	["Call of Duty"] = "rbxassetid://5952120301",
	Bubble = "rbxassetid://6534947588",
	Pick = "rbxassetid://1347140027",
	Pop = "rbxassetid://198598793",
	Bruh = "rbxassetid://4275842574",
	Bamboo = "rbxassetid://3769434519",
	Crowbar = "rbxassetid://546410481",
	Weeb = "rbxassetid://6442965016",
	Beep = "rbxassetid://8177256015",
	Bambi = "rbxassetid://8437203821",
	Stone = "rbxassetid://3581383408",
	["Old Fatality"] = "rbxassetid://6607142036",
	Click = "rbxassetid://8053704437",
	Ding = "rbxassetid://7149516994",
	Snow = "rbxassetid://6455527632",
	Laser = "rbxassetid://7837461331",
	Mario = "rbxassetid://2815207981",
	Steve = "rbxassetid://4965083997",
	Snowdrake = "rbxassetid://7834724809",
}

local SoundService = game:GetService("SoundService")

SoundService.PlayerHitHeadshot.Volume = 5
SoundService.PlayerHitHeadshot.Pitch = 1
SoundService.PlayerHitHeadshot.EqualizerSoundEffect.HighGain = -2

-- GAME
PlayerHitsoundsTab:AddToggle("Enabled_Toggle1", { Text = "Enabled", Default = false })

PlayerHitsoundsTab:AddDropdown(
	"HeadshotHit",
	{
		Values = {
			"Defualt Headshot Hit",
			"Neverlose",
			"Gamesense",
			"One",
			"Bell",
			"Rust",
			"TF2",
			"Slime",
			"Among Us",
			"Minecraft",
			"CS:GO",
			"Saber",
			"Baimware",
			"Osu",
			"TF2 Critical",
			"Bat",
			"Call of Duty",
			"Bubble",
			"Pick",
			"Pop",
			"Bruh",
			"Bamboo",
			"Crowbar",
			"Weeb",
			"Beep",
			"Bambi",
			"Stone",
			"Old Fatality",
			"Click",
			"Ding",
			"Snow",
			"Laser",
			"Mario",
			"Steve",
			"Snowdrake",
		},
		Default = 1,
		Multi = false,
		Text = "Head Hitsound:",
	}
)
Options.HeadshotHit:OnChanged(function()
	local soundId = sounds[Options.HeadshotHit.Value]
	game:GetService("SoundService").PlayerHitHeadshot.SoundId = soundId
end)

PlayerHitsoundsTab
	:AddSlider("Volume_Slider", { Text = "Volume", Default = 5, Min = 0, Max = 10, Rounding = 0, Compact = true })
	:OnChanged(function(vol)
		SoundService.PlayerHitHeadshot.Volume = vol
	end)

PlayerHitsoundsTab
	:AddSlider("Pitch_Slider", { Text = "Pitch", Default = 1, Min = 0, Max = 2, Rounding = 1, Compact = true })
	:OnChanged(function(pich)
		SoundService.PlayerHitHeadshot.Pitch = pich
	end)
--
PlayerHitsoundsTab:AddToggle("Enabled_Toggle2", { Text = "Enabled", Default = false })

PlayerHitsoundsTab:AddDropdown(
	"Hit",
	{
		Values = {
			"Defualt Body Hit",
			"Neverlose",
			"Gamesense",
			"One",
			"Bell",
			"Rust",
			"TF2",
			"Slime",
			"Among Us",
			"Minecraft",
			"CS:GO",
			"Saber",
			"Baimware",
			"Osu",
			"TF2 Critical",
			"Bat",
			"Call of Duty",
			"Bubble",
			"Pick",
			"Pop",
			"Bruh",
			"Bamboo",
			"Crowbar",
			"Weeb",
			"Beep",
			"Bambi",
			"Stone",
			"Old Fatality",
			"Click",
			"Ding",
			"Snow",
			"Laser",
			"Mario",
			"Steve",
			"Snowdrake",
		},
		Default = 1,
		Multi = false,
		Text = "Body Hitsound:",
	}
)
Options.Hit:OnChanged(function()
	local soundId = sounds[Options.Hit.Value]
	game:GetService("SoundService").PlayerHit2.SoundId = soundId
end)

PlayerHitsoundsTab
	:AddSlider("Volume_Slider", { Text = "Volume", Default = 5, Min = 0, Max = 10, Rounding = 0, Compact = true })
	:OnChanged(function(vole)
		SoundService.PlayerHit2.Volume = vole
	end)

PlayerHitsoundsTab
	:AddSlider("Pitch_Slider", { Text = "Pitch", Default = 1, Min = 0, Max = 2, Rounding = 1, Compact = true })
	:OnChanged(function(piche)
		SoundService.PlayerHit2.Pitch = piche
	end)

--* Nature Hitsounds *--

NatureHitsoundsTab:AddToggle("Enabled_Toggle2", { Text = "Enabled", Default = false })

NatureHitsoundsTab:AddDropdown(
	"WoodHit",
	{
		Values = {
			"Defualt Wood Hit",
			"Neverlose",
			"Gamesense",
			"One",
			"Bell",
			"Rust",
			"TF2",
			"Slime",
			"Among Us",
			"Minecraft",
			"CS:GO",
			"Saber",
			"Baimware",
			"Osu",
			"TF2 Critical",
			"Bat",
			"Call of Duty",
			"Bubble",
			"Pick",
			"Pop",
			"Bruh",
			"Bamboo",
			"Crowbar",
			"Weeb",
			"Beep",
			"Bambi",
			"Stone",
			"Old Fatality",
			"Click",
			"Ding",
			"Snow",
			"Laser",
			"Mario",
			"Steve",
			"Snowdrake",
		},
		Default = 1,
		Multi = false,
		Text = "Wood Hitsound:",
	}
)
Options.WoodHit:OnChanged(function()
	local soundId = sounds[Options.WoodHit.Value]
	game:GetService("SoundService").WoodHit.SoundId = soundId
end)

NatureHitsoundsTab
	:AddSlider("Volume_Slider", { Text = "Volume", Default = 5, Min = 0, Max = 10, Rounding = 0, Compact = true })
	:OnChanged(function(vole)
		SoundService.WoodHit.Volume = vole
	end)

NatureHitsoundsTab
	:AddSlider("Pitch_Slider", { Text = "Pitch", Default = 1, Min = 0, Max = 2, Rounding = 1, Compact = true })
	:OnChanged(function(piche)
		SoundService.WoodHit.Pitch = piche
	end)
--
NatureHitsoundsTab:AddToggle("Enabled_Toggle1", { Text = "Enabled", Default = false })

NatureHitsoundsTab:AddDropdown(
	"RockHit",
	{
		Values = {
			"Defualt Rock Hit",
			"Neverlose",
			"Gamesense",
			"One",
			"Bell",
			"Rust",
			"TF2",
			"Slime",
			"Among Us",
			"Minecraft",
			"CS:GO",
			"Saber",
			"Baimware",
			"Osu",
			"TF2 Critical",
			"Bat",
			"Call of Duty",
			"Bubble",
			"Pick",
			"Pop",
			"Bruh",
			"Bamboo",
			"Crowbar",
			"Weeb",
			"Beep",
			"Bambi",
			"Stone",
			"Old Fatality",
			"Click",
			"Ding",
			"Snow",
			"Laser",
			"Mario",
			"Steve",
			"Snowdrake",
		},
		Default = 1,
		Multi = false,
		Text = "Rock Hitsound:",
	}
)
Options.RockHit:OnChanged(function()
	local soundId = sounds[Options.RockHit.Value]
	game:GetService("SoundService").RockHit.SoundId = soundId
end)

NatureHitsoundsTab
	:AddSlider("Volume_Slider", { Text = "Volume", Default = 5, Min = 0, Max = 10, Rounding = 0, Compact = true })
	:OnChanged(function(vol)
		SoundService.RockHit.Volume = vol
	end)

NatureHitsoundsTab
	:AddSlider("Pitch_Slider", { Text = "Pitch", Default = 1, Min = 0, Max = 2, Rounding = 1, Compact = true })
	:OnChanged(function(pich)
		SoundService.RockHit.Pitch = pich
	end)

LPH_JIT_MAX(function()
	--** Hitbox Expander **--
	local SizeX = 0
	local SizeY = 0
	local SizeZ = 0
	local OriginalHeadSize = Vector3.new(1.672248125076294, 0.835624098777771, 0.835624098777771)
	local On = false
	local function UpdateHeadSizes(newvalue)
		local ToggleValue = newvalue
		for i, v in pairs(game:GetService("Workspace"):GetChildren()) do
			if v:FindFirstChild("HumanoidRootPart") and v:FindFirstChild("Head") then
				local hasFakeHead = v:FindFirstChild("FakeHead")

				if ToggleValue then
					if not hasFakeHead then
						local FakeHead = v.Head:Clone()
						FakeHead.Name = "FakeHead"
						FakeHead.Parent = v
						FakeHead.Transparency = 0
						FakeHead.Rotation = v.Head.Rotation
					end

					if not hasFakeHead then
						v.Head.Size = Vector3.new(SizeX, SizeY, SizeZ)
						v.Head.Transparency = 0.7
						v.Head.CanCollide = false
						v.Head.Nametag.Enabled = false
					end
				else
					if hasFakeHead then
						v.FakeHead:Destroy()
					end

					v.Head.Size = OriginalHeadSize
					v.Head.Nametag.Enabled = true
					v.Head.Transparency = 0
				end
			end
		end
	end
end)()

HBExpanderTab:AddToggle("HitboxExpander", { Text = "Toggle", Default = false }):OnChanged(function(Value)
	On = Value
	if Value == true then
		while Value == true do
			for i, v in pairs(game:GetService("Workspace"):GetChildren()) do
				if v:FindFirstChild("HumanoidRootPart") and v:FindFirstChild("Head") then
					if not v:FindFirstChild("FakeHead") then
						local FakeHead = v.Head:Clone()
						FakeHead.Name = "FakeHead"
						FakeHead.Parent = v
						FakeHead.Transparency = 0
						FakeHead.Rotation = v.Head.Rotation

						v.Head.Size = Vector3.new(SizeX, SizeY * 0.7, SizeZ)
						v.Head.Transparency = 0.7
						v.Head.CanCollide = false
						v.Head.Nametag.Enabled = false
					end
				end
			end
			wait(3)
		end
	else
		if Value == false then
			for i, v in pairs(game:GetService("Workspace"):GetChildren()) do
				if v:FindFirstChild("HumanoidRootPart") and v:FindFirstChild("Head") then
					if v:FindFirstChild("FakeHead") then
						v.FakeHead:Destroy()
						v.Head.Size = Vector3.new(1.672248125076294, 0.835624098777771, 0.835624098777771)
						v.Head.Nametag.Enabled = true
					end
				end
			end
		end
	end
end)

HBExpanderTab
	:AddSlider(
		"HBX",
		{ Text = "X Size", Default = 1, Min = 0, Max = 4, Rounding = 2, Compact = false, Suffix = "Size" }
	)
	:OnChanged(function(Value)
		SizeX = Value
	end)

HBExpanderTab
	:AddSlider(
		"HBY",
		{ Text = "Y Size", Default = 1, Min = 0, Max = 6, Rounding = 2, Compact = false, Suffix = "SIze" }
	)
	:OnChanged(function(Value)
		SizeY = Value
	end)

HBExpanderTab
	:AddSlider(
		"HBZ",
		{ Text = "Z Size", Default = 1, Min = 0, Max = 4, Rounding = 2, Compact = false, Suffix = "Size" }
	)
	:OnChanged(function(Value)
		SizeZ = Value
	end)

HBExpanderTab:AddButton("Update Hitbox Size", function()
	Toggles.HitboxExpander:SetValue(false)
	Toggles.HitboxExpander:SetValue(true)
end)

local Recoil = getrenv()._G.modules.Camera.Recoil
RiskyTab:AddToggle("RecoilToggle", { Text = "No Recoil (Cant Toggle Off)", Default = false }):OnChanged(function(Value)
	getrenv()._G.modules.Camera.Recoil = function(...)
		local args = { ... }
		if Value then
			args[1].cameraY = 0
			args[1].cameraX = 0
			args[1].push = 0
			args[1].cameraXShake = 0
			args[1].rotSpeed = 0
			args[1].lerp = 0
		end
		return Recoil(...)
	end
end)

-- BULLET TRACERS

local Markeroid = {
	HitTracer = {
		Enabled = true,
		Texture = "rbxassetid://7071778278",
		Color = Color3.fromRGB(95, 0, 255),
	},
	HitMarker = {
		Enabled = true,
		Texture = "rbxassetid://316279304",
		Color = Color3.fromRGB(95, 0, 255),
		Size = UDim2.new(1, 50, 1, 50),
	},
	HitLog = {
		Enabled = false,
		Color = Color3.fromRGB(95, 0, 255),
		TextSize = 19,
		TextFond = 1,
	},
}

GunModsTab:AddToggle("HitTracerEnabledToggle", { Text = "Hit Tracer Enabled", Default = false, Tooltip = nil })
Toggles.HitTracerEnabledToggle:OnChanged(function(HitTracerEnabledToggleValue)
	Markeroid.HitTracer.Enabled = HitTracerEnabledToggleValue
end)
GunModsTab:AddDropdown("HitTracerTextureDropDown", {
	Values = { "Beam", "Beam 2", "DNK", "Wave" },
	Default = 1,
	Multi = false,
	Text = "Texture",
	Tooltip = nil,
})
Options.HitTracerTextureDropDown:OnChanged(function(HitTracerTextureDropDownValue)
	if HitTracerTextureDropDownValue == "Beam" then
		Markeroid.HitTracer.Texture = "rbxassetid://446111271"
	elseif HitTracerTextureDropDownValue == "Beam 2" then
		Markeroid.HitTracer.Texture = "rbxassetid://7216850022"
	elseif HitTracerTextureDropDownValue == "DNK" then
		Markeroid.HitTracer.Texture = "rbxassetid://7071778278"
	elseif HitTracerTextureDropDownValue == "Wave" then
		Markeroid.HitTracer.Texture = "rbxassetid://13832105797"
	end
end)
GunModsTab:AddLabel("Color")
	:AddColorPicker("TracerColorH", { Default = Color3.fromRGB(95, 0, 255), Title = "Tracer Color" })
Options.TracerColorH:OnChanged(function(TracerColorValue)
	Markeroid.HitTracer.Color = TracerColorValue
end)

local Xf = getrenv()._G.modules.Network
local _f
_f = hookfunction(
	game.Players.LocalPlayer:FindFirstChild("RemoteEvent").FireServer,
	LPH_NO_VIRTUALIZE(function(G, ...)
		local w = { ... }
		local workspace = game.Workspace
		if w[1] == 10 and w[2] == "Hit" and w[5] then
			task.spawn(function()
				local m = nil
				if w[8] then
					m = w[8]
				else
					m = w[3]
				end
				repeat
					wait()
				until m ~= nil
				if typeof(m) == "Vector3" then
					local z, h = workspace.CurrentCamera:WorldToViewportPoint(m)
					local R = false
					local c = Instance.new("Part")
					c.CanCollide = false
					c.Anchored = true
					c.Parent = workspace
					local V = Instance.new("Attachment")
					V.Position = workspace.Ignore.LocalCharacter.Middle.Position
					V.Parent = c
					V.Visible = false
					local F = Instance.new("Attachment")
					F.Position = m
					F.Parent = c
					F.Visible = false
					local _ = Instance.new("Beam")
					_.Enabled = Markeroid.HitTracer.Enabled
					_.Brightness = 10
					_.LightInfluence = 0.75
					_.LightEmission = 0.1
					_.Attachment0 = V
					_.Attachment1 = F
					_.Texture = Markeroid.HitTracer.Texture
					_.TextureLength = 7
					_.TextureMode = "Stretch"
					_.TextureSpeed = 6.21
					_.Color = ColorSequence.new({
						ColorSequenceKeypoint.new(0, Markeroid.HitTracer.Color),
						ColorSequenceKeypoint.new(0.5, Markeroid.HitTracer.Color),
						ColorSequenceKeypoint.new(1, Markeroid.HitTracer.Color),
					})
					_.Transparency = NumberSequence.new(0)
					_.Parent = c
					_.CurveSize0 = 0
					_.CurveSize1 = 0
					_.FaceCamera = true
					_.Segments = 10
					_.Width0 = 2
					_.Width1 = 2
					_.ZOffset = 0
					wait(1)
					c:Destroy()
				end
			end)
		end
		return _f(G, unpack(w))
	end)
)

local PlayerVisualTabbox = Tabs.Visual:AddLeftTabbox()
local PlayerVisualTab = PlayerVisualTabbox:AddTab("Players")
local PlayerSettingsVisualTab = PlayerVisualTabbox:AddTab("Settings")
local PlayerVisualTabbox = Tabs.Visual:AddRightTabbox()
local World = PlayerVisualTabbox:AddTab("World ESP")
local PlayerVisualTabbox = Tabs.Visual:AddRightTabbox()
local Skin = PlayerVisualTabbox:AddTab("SkinChanger")

PlayerVisualTab:AddToggle("Boxes", { Text = "Boxes", Default = false })
	:AddColorPicker("BoxesColor", { Default = Color3.fromRGB(155, 95, 255), Title = "Color" })
	:AddColorPicker("BoxesOutlineColor", { Default = Color3.fromRGB(0, 0, 0), Title = "Color" })
PlayerVisualTab:AddToggle("Sleeping", { Text = "Sleeping", Default = false })
	:AddColorPicker("SleepingColor", { Default = Color3.fromRGB(155, 95, 255), Title = "Color" })
PlayerVisualTab:AddToggle("Distances", { Text = "Distance", Default = false })
	:AddColorPicker("DistancesColor", { Default = Color3.fromRGB(155, 95, 255), Title = "Color" })
PlayerVisualTab:AddToggle("Armour", { Text = "Armour", Default = false })
	:AddColorPicker("ArmourColor", { Default = Color3.fromRGB(155, 95, 255), Title = "Color" })
PlayerVisualTab:AddToggle("Tool", { Text = "Tool", Default = false })
	:AddColorPicker("ToolColor", { Default = Color3.fromRGB(155, 95, 255), Title = "Color" })
PlayerVisualTab:AddToggle("ViewAngle", { Text = "View Angle", Default = false })
	:AddColorPicker("ViewAngleColor", { Default = Color3.fromRGB(155, 95, 255), Title = "Color" })
PlayerVisualTab:AddToggle("Tracer", { Text = "Tracer", Default = false })
	:AddColorPicker("TracerColor", { Default = Color3.fromRGB(155, 95, 255), Title = "Color" })
-- STORAGE
World:AddToggle("STORAGEfag", { Text = "Crate ESP", Default = false }):OnChanged(function(monkey99)
	if monkey99 then
		local function onPartAdded(part)
			if
				part:IsA("Part")
				and part.BrickColor == BrickColor.new("Linen")
				and part.Material == Enum.Material.WoodPlanks
			then
				local parent = part.Parent
				if parent and parent:IsA("Model") and #parent:GetChildren() == 2 then
					local MilitaryEsp = Instance.new("BoxHandleAdornment")
					MilitaryEsp.Adornee = part
					MilitaryEsp.AlwaysOnTop = true
					MilitaryEsp.ZIndex = 0
					MilitaryEsp.Size = part.Size
					MilitaryEsp.Name = "MilitaryCrate"
					MilitaryEsp.Transparency = 0.3
					MilitaryEsp.Color = BrickColor.new("Dark Royal blue")
					MilitaryEsp.Parent = workspace.Monkey.StorageESPAdornee
				end
			end
		end

		workspace.DescendantAdded:Connect(onPartAdded)

		wait(1.5)

		local parts = workspace:GetDescendants()
		local meshes = {}
		for _, part in ipairs(parts) do
			if
				part:IsA("UnionOperation")
				and part.BrickColor == BrickColor.new("Cashmere")
				and part.Material == Enum.Material.Plastic
			then
				local PartCrateEsp = Instance.new("BoxHandleAdornment")
				PartCrateEsp.Adornee = part
				PartCrateEsp.AlwaysOnTop = true
				PartCrateEsp.ZIndex = 0
				PartCrateEsp.Size = part.Size
				PartCrateEsp.Name = "PartCrate"
				PartCrateEsp.Transparency = 0.3
				PartCrateEsp.Color = BrickColor.new("Bright yellow")
				PartCrateEsp.Parent = workspace.Monkey.StorageESPAdornee
			end
		end

		local function onPartAdded(part)
			if
				part:IsA("UnionOperation")
				and part.BrickColor == BrickColor.new("Cashmere")
				and part.Material == Enum.Material.Plastic
			then
				local UpdatePartCrateEsp = Instance.new("BoxHandleAdornment")
				UpdatePartCrateEsp.Adornee = part
				UpdatePartCrateEsp.AlwaysOnTop = true
				UpdatePartCrateEsp.ZIndex = 0
				UpdatePartCrateEsp.Size = part.Size
				UpdatePartCrateEsp.Name = "PartCrate"
				UpdatePartCrateEsp.Transparency = 0.3
				UpdatePartCrateEsp.Color = BrickColor.new("Bright yellow")
				UpdatePartCrateEsp.Parent = workspace.Monkey.StorageESPAdornee
			end
		end

		workspace.DescendantAdded:Connect(onPartAdded)
	else
		for _, v in ipairs(workspace.Monkey.StorageESPAdornee:GetDescendants()) do
			v:Destroy()
		end
	end
end)

-- TOTEMS
-- ORES
World:AddToggle("ore4s3", { Text = "Stone ESP", Default = false }):OnChanged(function(monkey4)
	if monkey4 then
		local function adornStoneOre(part)
			if
				part:IsA("MeshPart")
				and part.BrickColor == BrickColor.new("Flint")
				and part.Material == Enum.Material.Limestone
			then
				local parent = part.Parent
				if parent and parent:IsA("Model") and #parent:GetChildren() == 1 then
					local StoneEsp = Instance.new("BoxHandleAdornment")
					StoneEsp.Adornee = part
					StoneEsp.AlwaysOnTop = true
					StoneEsp.ZIndex = 0
					StoneEsp.Size = part.Size
					StoneEsp.Name = "Stone"
					StoneEsp.Transparency = 0.3
					StoneEsp.Color = BrickColor.new("Grey")
					StoneEsp.Parent = workspace.Monkey.OreESPAdornee
				end
			end
		end

		local function onPartAdded(part)
			adornStoneOre(part)
		end

		for _, part in ipairs(workspace:GetDescendants()) do
			adornStoneOre(part)
		end

		workspace.DescendantAdded:Connect(onPartAdded)
	else
		for _, v in ipairs(workspace.Monkey.OreESPAdornee:GetDescendants()) do
			if v.Name == "Stone" then
				v:Destroy()
			end
		end
	end
end)

World:AddToggle("ores2", { Text = "Iron ESP", Default = false }):OnChanged(function(monkey3)
	if monkey3 then
		local parts = workspace:GetDescendants()
		local meshes = {}
		for _, part in ipairs(parts) do
			if
				part:IsA("MeshPart")
				and part.BrickColor == BrickColor.new("Burlap")
				and part.Material == Enum.Material.Slate
			then
				local IronEsp = Instance.new("BoxHandleAdornment")
				IronEsp.Adornee = part
				IronEsp.AlwaysOnTop = true
				IronEsp.ZIndex = 0
				IronEsp.Size = part.Size
				IronEsp.Name = "Iron"
				IronEsp.Transparency = 0.3
				IronEsp.Color = BrickColor.new("Burlap")
				IronEsp.Parent = workspace.Monkey.OreESPAdornee
			end
		end

		local function onPartAdded(part)
			if
				part:IsA("MeshPart")
				and part.BrickColor == BrickColor.new("Burlap")
				and part.Material == Enum.Material.Slate
			then
				if monkey3 then
					local UpdateIronEsp = Instance.new("BoxHandleAdornment")
					UpdateIronEsp.Adornee = part
					UpdateIronEsp.AlwaysOnTop = true
					UpdateIronEsp.ZIndex = 0
					UpdateIronEsp.Size = part.Size
					UpdateIronEsp.Name = "Iron"
					UpdateIronEsp.Transparency = 0.3
					UpdateIronEsp.Color = BrickColor.new("Burlap")
					UpdateIronEsp.Parent = workspace.Monkey.OreESPAdornee
				end
			end
		end

		workspace.DescendantAdded:Connect(onPartAdded)
	else
		for _, v in ipairs(workspace.Monkey.OreESPAdornee:GetDescendants()) do
			if v.Name == "Iron" then
				v:Destroy()
			end
		end
	end
end)

World:AddToggle("ores", { Text = "Nitrate ESP", Default = false }):OnChanged(function(monkey2)
	if monkey2 then
		local parts = workspace:GetDescendants()
		local meshes = {}
		for _, part in ipairs(parts) do
			if
				part:IsA("MeshPart")
				and part.BrickColor == BrickColor.new("Institutional white")
				and part.Material == Enum.Material.Slate
			then
				local NitrateEsp = Instance.new("BoxHandleAdornment")
				NitrateEsp.Adornee = part
				NitrateEsp.AlwaysOnTop = true
				NitrateEsp.ZIndex = 0
				NitrateEsp.Name = "Nitrate"
				NitrateEsp.Size = part.Size
				NitrateEsp.Transparency = 0.3
				NitrateEsp.Color = BrickColor.new("Institutional white")
				NitrateEsp.Parent = workspace.Monkey.OreESPAdornee
			end
		end

		local function onPartAdded(part)
			if
				part:IsA("MeshPart")
				and part.BrickColor == BrickColor.new("Institutional white")
				and part.Material == Enum.Material.Slate
			then
				if monkey2 then
					local UpdateNitrateEsp = Instance.new("BoxHandleAdornment")
					UpdateNitrateEsp.Adornee = part
					UpdateNitrateEsp.AlwaysOnTop = true
					UpdateNitrateEsp.ZIndex = 0
					UpdateNitrateEsp.Size = part.Size
					UpdateNitrateEsp.Name = "Nitrate"
					UpdateNitrateEsp.Transparency = 0.3
					UpdateNitrateEsp.Color = BrickColor.new("Institutional white")
					UpdateNitrateEsp.Parent = workspace.Monkey.OreESPAdornee
				end
			end
		end

		workspace.DescendantAdded:Connect(onPartAdded)
	else
		for _, v in ipairs(workspace.Monkey.OreESPAdornee:GetDescendants()) do
			if v.Name == "Nitrate" then
				v:Destroy()
			end
		end
	end
end)

--Esp Switches
Toggles.ViewAngle:OnChanged(function(Value)
	Esp.Settings.ViewAngle = Value
end)
Options.ViewAngleColor:OnChanged(function(Value)
	Esp.Settings.ViewAngleColor = Value
end)
Toggles.Tracer:OnChanged(function(Value)
	Esp.Settings.Tracer = Value
end)
Options.TracerColor:OnChanged(function(Value)
	Esp.Settings.TracerColor = Value
end)
Toggles.Armour:OnChanged(function(Value)
	Esp.Settings.Armour = Value
end)
Options.ToolColor:OnChanged(function(Value)
	Esp.Settings.ToolColor = Value
end)
Toggles.Tool:OnChanged(function(Value)
	Esp.Settings.Tool = Value
end)
Options.ArmourColor:OnChanged(function(Value)
	Esp.Settings.ArmourColor = Value
end)
Toggles.Armour:OnChanged(function(Value)
	Esp.Settings.Armour = Value
end)
Toggles.Distances:OnChanged(function(Value)
	Esp.Settings.Distances = Value
end)
Options.DistancesColor:OnChanged(function(Value)
	Esp.Settings.DistanceColor = Value
end)
Options.SleepingColor:OnChanged(function(Value)
	Esp.Settings.SleepingColor = Value
end)
Toggles.Sleeping:OnChanged(function(Value)
	Esp.Settings.Sleeping = Value
end)
Options.BoxesColor:OnChanged(function(Value)
	Esp.Settings.BoxesColor = Value
end)
Options.BoxesOutlineColor:OnChanged(function(Value)
	Esp.Settings.BoxesOutlineColor = Value
end)
Toggles.Boxes:OnChanged(function(Value)
	Esp.Settings.Boxes = Value
end)
PlayerSettingsVisualTab:AddSlider(
	"RenderDistance",
	{ Text = "Render Distance", Default = 1500, Min = 1, Max = 1500, Rounding = 0, Compact = false, Suffix = "s" }
):OnChanged(function(Value)
	Esp.Settings.RenderDistance = Value
end)
PlayerSettingsVisualTab:AddToggle("TargetSleepers", { Text = "Dont Show Sleepers", Default = false })
	:OnChanged(function(Value)
		Esp.Settings.TargetSleepers = Value
	end)
PlayerSettingsVisualTab:AddToggle("BoxesOutlines", { Text = "Box Outlines", Default = false }):OnChanged(function(Value)
	Esp.Settings.BoxesOutline = Value
end)
PlayerSettingsVisualTab:AddToggle("TeamCheck", { Text = "Team Check", Default = false }):OnChanged(function(Value)
	Esp.Settings.TeamCheck = Value
end)
PlayerSettingsVisualTab:AddToggle("TextOutline", { Text = "Text Outlines", Default = false }):OnChanged(function(Value)
	Esp.Settings.TextOutline = Value
end)
PlayerSettingsVisualTab:AddDropdown(
	"TracerPosition",
	{ Values = { "Bottom", "Middle", "Top" }, Default = 1, Multi = false, Text = "Tracer Position" }
):OnChanged(function(Value)
	Esp.Settings.TracerFrom = Value
end)

--Misc
local LightingTabbox = Tabs.Misc:AddLeftTabbox()
local LightingTab = LightingTabbox:AddTab("Visuals")
local MiscTabbox = Tabs.Misc:AddRightTabbox()
local MiscTab = MiscTabbox:AddTab("Character Exploits")
local MiscTabbox = Tabs.Misc:AddRightTabbox()
local Bullets = MiscTabbox:AddTab("Customization")

-- SKIN Changer
local SkinChoice = "Galaxy"
local SkinRBxId = 0
local SkinsEnabled = false

local Framework = {
	Settings = { FullBright = false, Fov = 90, LocalChams = false, LocalGunChams = false },
	SkinChanger = { SkinsEnabled = false, SkinChoice = "Galaxy", SkinName = "Float", SkinRBXAssetId = 12319249626 },
}
function Framework:CheckSkins()
	local tbl = {}
	for i, v in pairs(game:GetService("ReplicatedStorage").ItemSkins:GetChildren()) do
		table.insert(tbl, v.Name)
	end
	return tbl
end
function Framework:SetCammo(SkinName)
	if
		not require(game:GetService("ReplicatedStorage").ItemConfigs[getrenv()._G.modules.FPS.GetEquippedItem().id]).HandModel
	then
		return
	end
	local GunName = require(
		game:GetService("ReplicatedStorage").ItemConfigs[getrenv()._G.modules.FPS.GetEquippedItem().id]
	).HandModel
	if table.find(Framework:CheckSkins(), GunName) then
		local SkinFolder = game:GetService("ReplicatedStorage").ItemSkins[GunName]
		if game:GetService("ReplicatedStorage").ItemSkins[GunName]:FindFirstChild(GunName .. "_" .. SkinName) then
			local SkinChosen = game:GetService("ReplicatedStorage").ItemSkins[GunName][GunName .. "_" .. SkinName]
			require(SkinChosen).ApplyToModel(game:GetService("Workspace").Ignore.FPSArms.HandModel)
		end
	end
end

game:GetService("Workspace").Ignore.FPSArms.ChildAdded:Connect(function()
	if game:GetService("Workspace").Ignore.FPSArms:WaitForChild("HandModel") and SkinsEnabled == true then
		Framework:SetCammo(SkinChoice)
	end
end)

for i, v in pairs(game:GetService("ReplicatedStorage").ItemSkins:GetChildren()) do
	if v:FindFirstChild(v.Name .. "_" .. "Galaxy") then
		local clone = v:FindFirstChild(v.Name .. "_" .. "Galaxy"):Clone()
		clone.Parent = game:GetService("ReplicatedStorage").ItemSkins[v.Name]
		clone.Name = v.Name .. "_Frozen"
	end
end

Skin:AddToggle("SkinsEnabled", { Text = "Enabled", Default = false })
Skin:AddDropdown("SkinChoice", { Values = { "Galaxy" }, Default = 1, Multi = false, Text = "Skin:" })
Skin:AddInput(
	"SkinName",
	{ Default = "Skin", Numeric = false, Finished = false, Text = "Name:", Placeholder = "Skin Name" }
)
Skin:AddInput(
	"SkinRBXAssetId",
	{ Default = 0, Numeric = true, Finished = true, Text = "Asset Id:", Placeholder = "RbxId" }
)
Skin:AddButton("Load Skin", function()
	for i, v in pairs(game:GetService("ReplicatedStorage").ItemSkins:GetChildren()) do
		if v:FindFirstChild(v.Name .. "_" .. "Galaxy") and not v:FindFirstChild(v.Name .. "_" .. SkinChoice) then
			local clone = v:FindFirstChild(v.Name .. "_" .. "Galaxy"):Clone()
			clone.Parent = game:GetService("ReplicatedStorage").ItemSkins[v.Name]
			clone.Name = v.Name .. "_" .. SkinChoice
			setconstant(require(clone).ApplyToModel, 3, "rbxassetid://" .. SkinRBxId)
		end
	end
	Framework:SetCammo(SkinChoice)
end)
Skin:AddButton("Save Skin", function()
	writefile(
		"AstralPro/Skins/" .. SkinChoice .. ".skin",
		game:GetService("HttpService"):JSONEncode({ Id = SkinRBxId, Name = SkinChoice })
	)
end)

Toggles.SkinsEnabled:OnChanged(function()
	SkinsEnabled = Toggles.SkinsEnabled.Value
end)
Options.SkinName:OnChanged(function()
	SkinChoice = Options.SkinName.Value
end)
Options.SkinRBXAssetId:OnChanged(function()
	SkinRBxId = Options.SkinRBXAssetId.Value
end)
Options.SkinChoice:OnChanged(function()
	SkinChoice = Options.SkinChoice.Value
end)

Bullets:AddLabel("Custom Inventory:"):AddColorPicker("Inventory_Color", { Default = Color3.fromRGB(80, 80, 80) })
Options.Inventory_Color:OnChanged(function(Inventory_Color_Value)
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Armor.ItemSlot26.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Armor.ItemSlot27.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Armor.ItemSlot28.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Armor.ItemSlot29.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot6.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot7.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot8.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot9.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot10.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot11.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot12.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot13.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot14.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot15.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot16.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot17.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot18.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot19.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot20.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot21.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot22.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot23.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot24.BackgroundColor3 =
		Inventory_Color_Value
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.ItemSlot25.BackgroundColor3 =
		Inventory_Color_Value
end)

Bullets:AddLabel("Energy:"):AddColorPicker("Energy_Color_Value", { Default = Color3.fromRGB(197, 187, 40) })
Options.Energy_Color_Value:OnChanged(function(Energy_Color_Value)
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.Vitals.EnergyFrame.Energy.BackgroundColor3 =
		Energy_Color_Value
end)

Bullets:AddLabel("Health:"):AddColorPicker("Health_Color_Value", { Default = Color3.fromRGB(78, 153, 74) })
Options.Health_Color_Value:OnChanged(function(Health_Color_Value)
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.Vitals.HealthFrame.Health.BackgroundColor3 =
		Health_Color_Value
end)

Bullets:AddLabel("Ammo:"):AddColorPicker("Ammo_Color_Value", { Default = Color3.fromRGB(255, 255, 255) })
Options.Ammo_Color_Value:OnChanged(function(Ammo_Color_Value)
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Ammo.TextColor3 = Ammo_Color_Value
end)

Bullets:AddSlider(
	"Vitals_Transparency",
	{ Text = "Vitals Transparency", Suffix = "%", Default = 0.1, Min = 0, Max = 1, Rounding = 2, Compact = true }
):OnChanged(function(VitalsTransparency)
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.Vitals.EnergyFrame.Energy.BackgroundTransparency =
		VitalsTransparency
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.Vitals.HealthFrame.Health.BackgroundTransparency =
		VitalsTransparency
end)

Bullets:AddSlider(
	"Background_Transparency",
	{ Text = "Inventory Transparency", Suffix = "%", Default = 0.7, Min = 0, Max = 1, Rounding = 2, Compact = true }
):OnChanged(function(InventoryTransparency)
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Inventory.BackgroundTransparency =
		InventoryTransparency
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Hotbar.BackgroundTransparency =
		InventoryTransparency
	game:GetService("Players").LocalPlayer.PlayerGui.GameUI.FPS.BottomCenter.Armor.BackgroundTransparency =
		InventoryTransparency
end)

local Terrain = game:GetService("Workspace").Terrain
local GCEN = Color3.fromRGB(93, 111, 55)
local GRCEND = false

LightingTab:AddToggle("CLRG", { Text = "Color Grass", Default = true, Tooltip = "Off/On" })
	:AddColorPicker("ColorGrass", { Default = GCEN, Title = "Changer Color Grass" })
Toggles.CLRG:OnChanged(function(T)
	GRCEND = T
	Terrain:SetMaterialColor(Enum.Material.Grass, T and GCEN or Color3.fromRGB(93, 111, 55))
end)
Options.ColorGrass:OnChanged(function(Grass1)
	if GRCEND then
		GCEN = Grass1
		Terrain:SetMaterialColor(Enum.Material.Grass, Grass1)
	end
end)

local Terrain = game:GetService("Workspace").Terrain
local CloudsColor = Color3.fromRGB(255, 255, 255)
local EnableCustomColor = false

LightingTab:AddToggle("CLRG1", { Text = "Clouds Color", Default = EnableCustomColor, Tooltip = "Off/On" })
	:AddColorPicker("ColorGrass1", { Default = CloudsColor, Title = "Change Clouds Color" })
Toggles.CLRG1:OnChanged(function(T)
	EnableCustomColor = T
	Terrain.Clouds.Color = T and CloudsColor or Color3.fromRGB(255, 255, 255)
end)
Options.ColorGrass1:OnChanged(function(NewColor)
	if EnableCustomColor then
		CloudsColor = NewColor
		Terrain.Clouds.Color = NewColor
	end
end)
local CARMS = false
LightingTab:AddToggle("CLRT", { Text = "Arm Color", Default = false, Tooltip = "Off/On" })
	:AddColorPicker("ARCCCC", { Default = Color3.fromRGB(0, 0, 0), Title = "Arms Color" })
Options.ARCCCC:OnChanged(function(ARMC)
	if CARMS then
		game:GetService("Workspace").Ignore.FPSArms.LeftUpperArm.Color = ARMC
		game:GetService("Workspace").Ignore.FPSArms.LeftLowerArm.Color = ARMC
		game:GetService("Workspace").Ignore.FPSArms.LeftHand.Color = ARMC
		game:GetService("Workspace").Ignore.FPSArms.RightUpperArm.Color = ARMC
		game:GetService("Workspace").Ignore.FPSArms.RightLowerArm.Color = ARMC
		game:GetService("Workspace").Ignore.FPSArms.RightHand.Color = ARMC
	else
		game:GetService("Workspace").Ignore.FPSArms.LeftUpperArm.BrickColor = BrickColor.new("Dark stone grey")
		game:GetService("Workspace").Ignore.FPSArms.LeftLowerArm.BrickColor = BrickColor.new("Linen")
		game:GetService("Workspace").Ignore.FPSArms.LeftHand.BrickColor = BrickColor.new("Linen")
		game:GetService("Workspace").Ignore.FPSArms.RightUpperArm.BrickColor = BrickColor.new("Dark stone grey")
		game:GetService("Workspace").Ignore.FPSArms.RightLowerArm.BrickColor = BrickColor.new("Linen")
		game:GetService("Workspace").Ignore.FPSArms.RightHand.BrickColor = BrickColor.new("Linen")
	end
end)
Toggles.CLRT:OnChanged(function(T)
	CARMS = T
end)

LightingTab:AddDropdown(
	"MaterialD",
	{ Values = { "Default", "ForceField" }, Default = 1, Multi = false, Text = "Naterial:", Tooltip = "Arms Material" }
):OnChanged(function()
	if Options.MaterialD.Value == "Default" then
		game:GetService("Workspace").Ignore.FPSArms.RightUpperArm.Material = "Fabric"
		game:GetService("Workspace").Ignore.FPSArms.RightLowerArm.Material = "SmoothPlastic"
		game:GetService("Workspace").Ignore.FPSArms.RightHand.Material = "SmoothPlastic"
		game:GetService("Workspace").Ignore.FPSArms.LeftUpperArm.Material = "Fabric"
		game:GetService("Workspace").Ignore.FPSArms.LeftLowerArm.Material = "SmoothPlastic"
		game:GetService("Workspace").Ignore.FPSArms.LeftHand.Material = "SmoothPlastic"
	end
	if Options.MaterialD.Value == "ForceField" then
		game:GetService("Workspace").Ignore.FPSArms.RightUpperArm.Material = "ForceField"
		game:GetService("Workspace").Ignore.FPSArms.RightLowerArm.Material = "ForceField"
		game:GetService("Workspace").Ignore.FPSArms.RightHand.Material = "ForceField"
		game:GetService("Workspace").Ignore.FPSArms.LeftUpperArm.Material = "ForceField"
		game:GetService("Workspace").Ignore.FPSArms.LeftLowerArm.Material = "ForceField"
		game:GetService("Workspace").Ignore.FPSArms.LeftHand.Material = "ForceField"
	end
end)

LightingTab:AddInput(
	"",
	{
		Default = "rbxassetid://11414633855",
		Numeric = false,
		Finished = true,
		Text = "Texture ID:",
		Placeholder = "rbxassetid://...",
	}
):OnChanged(function(TextureID)
	game:GetService("Workspace").Ignore.FPSArms.LeftUpperArm.TextureID = TextureID
	game:GetService("Workspace").Ignore.FPSArms.LeftLowerArm.TextureID = TextureID
	game:GetService("Workspace").Ignore.FPSArms.LeftHand.TextureID = TextureID
	game:GetService("Workspace").Ignore.FPSArms.RightUpperArm.TextureID = TextureID
	game:GetService("Workspace").Ignore.FPSArms.RightLowerArm.TextureID = TextureID
	game:GetService("Workspace").Ignore.FPSArms.RightHand.TextureID = TextureID
end)
--------------------------------------------------------------------------------------------------

MiscTab:AddToggle("", { Text = "Jump Crouch", Default = false }):AddKeyPicker(
	"JumpCrouchKey",
	{ Default = "B", SyncToggleState = true, Mode = "Toggle", Text = "Jump Crouch", NoUI = false }
)
local stoprun = false
task.spawn(function()
	while true do
		local state = Options.JumpCrouchKey:GetState()
		if state then
			keypress(0x57)
			keypress(0x10)
			wait(0.05)
			keypress(0x43)
			keypress(0x20)
			keyrelease(0x20)
			wait(0.5)
			keyrelease(0x43)
			wait(1)
		end
		if Library.Unloaded then
			break
		end
		wait()
	end
end)
task.spawn(function()
	while task.wait() do
		local state = Options.JumpCrouchKey:GetState()
		if not state then
			if stoprun then
				keyrelease(0x57)
				keyrelease(0x10)
				stoprun = false
			end
		else
			stoprun = true
		end
	end
end)

MiscTab:AddToggle("LootAll", { Text = "Loot All", Default = false })
	:AddKeyPicker(
		"LootAllKey",
		{ Default = "P", SyncToggleState = true, Mode = "Toggle", Text = "Loot All", NoUI = false }
	)

Toggles.LootAll:OnChanged(function()
	for i = 1, 20 do
		game:GetService("Players").LocalPlayer.RemoteEvent:FireServer(12, i, true)
	end
end)

local XRAY22 = false
MiscTab:AddToggle("XRAY", { Text = "XRAY", Default = false })
	:AddKeyPicker("XRAYKey", { Default = "Z", SyncToggleState = true, Mode = "Toggle", Text = "XRAY", NoUI = false })
	:OnChanged(function()
		XRAY22 = Toggles.XRAY.Value
		if XRAY22 then
			for i, v in pairs(game:GetDescendants()) do
				if v:FindFirstChild("Hitbox") then
					v.Hitbox.Transparency = 0.6
				end
			end
		else
			for i, v in pairs(game:GetDescendants()) do
				if v:FindFirstChild("Hitbox") then
					v.Hitbox.Transparency = 0
				end
			end
		end
	end)

--// UI Settings \\--
local GameID = Tabs.UISettings:AddLeftGroupbox("Game")

GameID:AddInput(
	"GameID_Check",
	{ Default = "Game ID", Numeric = true, Finished = false, Text = "Game ID", Placeholder = "Game ID Here" }
)
GameID:AddButton("Join Game", function()
	game:GetService("TeleportService"):Teleport(Options.GameID_Check.Value, plr)
end)

local MenuGroup = Tabs.UISettings:AddRightGroupbox("Menu")

MenuGroup:AddLabel("" .. game:GetService("Players").LocalPlayer.PlayerGui.GameUI.ServerInfo.Text .. "", true)
MenuGroup:AddLabel(' Made By:<font color="#321091">Anth</font>', true)

MenuGroup:AddButton("Unload Script", function()
	Library:Unload()
	for i, v in pairs(Toggles) do
		v:SetValue(false)
		Library:Notify("Unloaded!", 1)
	end
end)

MenuGroup:AddButton("Panic Button", function()
	for i, v in pairs(Toggles) do
		v:SetValue(false)
		Library:Notify("Panic Button!", 1)
	end
end)

MenuGroup:AddButton("Rejoin Server", function()
	game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId, game.JobId)
	Library:Notify("Rejoining Server!", 30)
end)

MenuGroup:AddButton("Copy Join Code", function()
	setclipboard(
		("game:GetService('TeleportService'):TeleportToPlaceInstance(%s, '%s')"):format(game.PlaceId, game.JobId)
	)
	Library:Notify("Copied Join Code!", 5)
end)

MenuGroup:AddButton("Copy Discord", function()
	if pcall(setclipboard, "https://discord.gg/astralttm") then
		Library:Notify("Successfully copied discord link to your clipboard!", 5)
	end
end)

MenuGroup:AddToggle("WatermarkToggle", { Text = "Watermark", Default = false, Tooltip = nil })
Toggles.WatermarkToggle:OnChanged(function()
	Library:SetWatermark("Astral.pro - CRACKED BY PANICHOOK9")
	Library:SetWatermarkVisibility(Toggles.WatermarkToggle.Value)
end)

MenuGroup:AddToggle("UISettings_KeybindFrameVisibility", { Text = "Keybind", Default = true }):OnChanged(function()
	Library.KeybindFrame.Visible = Toggles.UISettings_KeybindFrameVisibility.Value
end)

MenuGroup:AddLabel("Menu Keybind"):AddKeyPicker("MenuKeybind", { Default = "End", NoUI = true, Text = "Menu keybind" })
Library.ToggleKeybind = Options.MenuKeybind

--// Save manager
SaveManager:SetLibrary(Library)
SaveManager:SetFolder("Astral/folder")
SaveManager:BuildConfigSection(Tabs.UISettings)
SaveManager:IgnoreThemeSettings()

--// Theme manager
ThemeManager:SetLibrary(Library)
ThemeManager:SetFolder("Astral/themes")
ThemeManager:ApplyToTab(Tabs.UISettings)

--Wrapping function - needed to unload(Keep at end of script)
loadstring(
	game:HttpGet(
		"https://raw.githubusercontent.com/EIOlmqV6v1owgJBEoqj5lK9p01SFE2THpxcOnvX/LinoriaBurnEdition/main/LoaderManager.lua"
	)
)

Library:Notify("30 minute timer has started, If your not on a fresh acc anti ban may not work.", 5)
task.wait(1500)
Library:Notify("Initiated Timer Bypass Please Wait", 5)
task.wait(60)
Library:Notify("Bypassed Timer If It Dosent Work Then Please Report", 5)
local old
old = hookfunction(tick, function()
	if true then
		return 0
	end
	return old()
end)
local old
old = hookfunction(getrenv().tick, function()
	if true then
		return 0
	end
	return old()
end)

Features & Information

NOT MINE THIS IS JUST A REUPLOAD EXPLAINING HOW TO USE IT ts gui, use fluxus you need to have this in your autoexecute folder- https://scriptblox.com/script/Trident-Survival-V2-LOOK-IN-DESCRIPTION-6689 you need to execute these 2 in the main menu- https://scriptblox.com/script/Trident-Survival-V2-LOOK-IN-DESCRIPTION-6690 https://scriptblox.com/script/Trident-Survival-V2-LOOK-IN-DESCRIPTION-6691

Community Comments (12)

fvvwfvvwAug 5, 2023(edited)

i might make a video for the speds that still dont know how to use it properly

ratssssttsratssssttsAug 5, 2023(edited)

All you need is one bypass in autoexec folder you dont have execute those 2 things in the main menu just use one bypass in autoexec and it should work

ratssssttsratssssttsAug 5, 2023(edited)

you need one thing actor bypass and use fluxus or comet

fvvwfvvwAug 5, 2023(edited)

@ratsssstts ill try without executing the 2 scripts

fvvwfvvwAug 5, 2023(edited)

why does it work better in banland

fvvwfvvwAug 5, 2023(edited)

im gonna buy aimware later so i wont bother uploading any more ts scripts

ratssssttsratssssttsAug 5, 2023(edited)

nvm this is astral.pro legit not rage he made rage for ban land

ratssssttsratssssttsAug 5, 2023(edited)

aimware sucks

fvvwfvvwAug 5, 2023(edited)

@ratsssstts whats best paid rn

fvvwfvvwAug 5, 2023(edited)

add me on discord Jayy#0688

ratssssttsratssssttsAug 5, 2023(edited)

i added

culitohair8culitohair8Aug 5, 2023(edited)

shi banned me in less then 1 hour lol

More Scripts for [NEW 🗺️] Trident Survival