is it possible to turn a silent which lock onto a person if its a specific radius, and turn that script to a dot? so its still a silent but it locks onto a player if I press on him with a key and unlocks when I press the key again. if it is do it with mine: getgenv().Solarix = {
	RAH = {
		Notif = true,
		Intro = false,
	},

userSettings = {
	Enabled = true,
	Toggle = "V",
	Prediction = 0.13237,
	},
VisualSettings = {
	Visible = true,
	Size = 29,
	FOVType = "Mouse", -- Mouse/Stick
	Color = Color3.fromRGB(255,255,255),
	Filled = false,
},
Text = {
	Enabled = true,
	Size = 29,
	CustomColor = false,
	Color = Color3.fromRGB(255, 255, 255),
	Outline = true,
},
}
if Solarix.RAH.Intro then
	loadstring(game:HttpGetAsync("https://gist.githubusercontent.com/cjay0001/f32863ad3fe55c9d4d7f0ab6d4f5cfae/raw/9a0a2b0231564a34c3535b3de5a468a7bf2704ca/INTROSOLARIX", true))();
end

if getgenv().Solarix.RAH.Notif then
	_G.Config = { ["Theme"] = "discord" }
local Nord = loadstring(game:HttpGetAsync("https://gist.githubusercontent.com/cjay0001/96ad2ece0c5e9bbb4b7ea6697ab8f859/raw/5447321009827d7ad800805373fe8fd09caa42f9/NOTIFCATION", true))();

if not game:IsLoaded() then

    Nord:Notify(nil, "Not Loaded", "succesful", 1);
    game.Loaded:Wait()
end


if game:IsLoaded() then
    Nord:Notify(nil, "Loaded Solarix Sucessfully", "succesful", 1);
end

end

getgenv().Toggle = Solarix.userSettings.Toggle

local toggled = false

if getgenv().Solarix.RAH.Notif then
    _G.Config = { ["Theme"] = "discord" }
    local Nord = loadstring(game:HttpGetAsync("https://gist.githubusercontent.com/cjay0001/96ad2ece0c5e9bbb4b7ea6697ab8f859/raw/5447321009827d7ad800805373fe8fd09caa42f9/NOTIFCATION", true))();
    
    game:GetService("UserInputService").InputBegan:Connect(function(input, gameProcessedEvent)
        if not gameProcessedEvent and input.KeyCode == Enum.KeyCode[getgenv().Toggle] then
            if toggled then
                if getgenv().Solarix.RAH.Notif then
                    Nord:Notify(nil, "Solarix: ON", "successful", 0.5)
                end
                toggled = false
            else
                if getgenv().Solarix.RAH.Notif then
                    Nord:Notify(nil, "Solarix: OFF", "successful", 0.5)
                end
                toggled = true
            end
        end
    end)
end





local SILENT_TEXT = Drawing.new("Text")
SILENT_TEXT.Text = Solarix.userSettings.Enabled and "Solarix: ON" or "Solarix: OFF"
SILENT_TEXT.Color = Solarix.userSettings.Enabled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 0, 0)
SILENT_TEXT.Size = 32
SILENT_TEXT.Outline = true
SILENT_TEXT.Visible = false

function UpdateText()
	if Solarix.Text.Enabled then
		SILENT_TEXT.Text = Solarix.userSettings.Enabled and "Solarix: ON" or "Solarix: OFF"
		SILENT_TEXT.Color = Solarix.Text.CustomColor and Solarix.Text.Color or Solarix.userSettings.Enabled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 0, 0)
		SILENT_TEXT.Visible = Solarix.Text.Enabled or true
		SILENT_TEXT.Size = Solarix.Text.Size or 32
		SILENT_TEXT.Outline = Solarix.Text.Outline or true
	end
end

local Circle = Drawing.new("Circle")
local rPoint
Circle.Transparency = 1
Circle.Radius = Solarix.VisualSettings.Size * 3
Circle.Visible = Solarix.VisualSettings.Visible
Circle.Color = Solarix.VisualSettings.Color
Circle.Thickness = 1
Circle.Filled = Solarix.VisualSettings.Filled

-- // resolver
local smoothingFactor, positionData, currentIndex = 30, {}, 1
local function calculateVelocityAverage(positionData)
	local totalVelocity = 0
	local avgPosition = Vector3.new()
	local avgTime = 0
	local len = #positionData
	if len == 0 then
		return avgPosition, avgTime
	end
	for i = 1, len do
		local data = positionData[i]
		if data and data.pos then
			local velocity = smoothingFactor - i + 1
			avgPosition += data.pos * velocity
			avgTime += data.time * velocity
			totalVelocity += velocity
		end
	end
	avgPosition = avgPosition / totalVelocity
	avgTime = avgTime / totalVelocity
	return avgPosition, avgTime
end
local function smoothVelocity(character)
	local currentPos = character.HumanoidRootPart.Position
	local currentTick = tick()
	positionData[currentIndex] = {
		pos = currentPos,
		time = currentTick,
	}
	currentIndex = (currentIndex % smoothingFactor) + 1
	local avgPosition, avgTime = calculateVelocityAverage(positionData)
	local prevData = positionData[currentIndex]
	if prevData and prevData.pos then
		local Velocity = (currentPos - prevData.pos) / (currentTick - prevData.time)
		return Velocity
	end
end

-- // mem spoofer
pcall(function()
	local spoofer, updating = false
	for i, v in pairs(game:GetService("CoreGui").RobloxGui.PerformanceStats:GetChildren()) do
		v.Name = i
	end
	game:GetService("CoreGui").RobloxGui.PerformanceStats["1"].StatsMiniTextPanelClass.ValueLabel
		:GetPropertyChangedSignal("Text")
		:Connect(function()
			if not updating then
				updating = true
				spoofer = math.random(800, 900) .. "." .. math.random(10, 99) .. "MB"
				game:GetService("CoreGui").RobloxGui.PerformanceStats["1"].StatsMiniTextPanelClass.ValueLabel.Text =
					spoofer
				updating = false
			end
		end)
end)

function wallCheck(position, ignoreList)
	return not workspace:FindPartOnRayWithIgnoreList(
		Ray.new(workspace.CurrentCamera.CFrame.p, position - workspace.CurrentCamera.CFrame.p),
		ignoreList
	)
end

function KnockedCheck(_)
	return _.Character.BodyEffects["K.O"].Value ~= true
end

function GrabbedCheck(_)
	return not _.Character:FindFirstChild("GRABBING_CONSTRAINT")
end

game:GetService("UserInputService").InputBegan:Connect(function(_, __)
	if _.KeyCode.Name == Solarix.userSettings.Toggle and __ == false then
		Solarix.userSettings.Enabled = not Solarix.userSettings.Enabled
	end
end)

function getClosestPart(Target)
	if Target and Target:GetChildren() then
		local closestpart, closdist = nil, math.huge
		local camera = workspace.CurrentCamera
		local mousepos = game.Players.LocalPlayer:GetMouse()
		local circleRadius = Circle.Radius
		local children = Target:GetChildren()
		local i = 1
		while i <= #children do
			local child = children[i]
			if child:IsA("BasePart") then
				local them, vis = camera:WorldToScreenPoint(child.Position)
				local magnitude = (Vector2.new(them.X, them.Y) - Vector2.new(mousepos.X, mousepos.Y)).magnitude
				if vis and circleRadius > magnitude and magnitude < closdist then
					closestpart, closdist = child, magnitude
				end
			end
			i = i + 1
		end
		return closestpart
	end
end

-- // get closest point (old and bad)
function cls(target)
	
	local selectedPart = getClosestPart(self.Character)
	if selectedPart then
		local mouseHit = game.Players.LocalPlayer:GetMouse().hit
		local transform = selectedPart.CFrame:pointToObjectSpace(mouseHit.p)
		local halfSize = selectedPart.Size / 2
		local pointIsInside = math.abs(transform.x) <= halfSize.x
			and math.abs(transform.y) <= halfSize.y
			and math.abs(transform.z) <= halfSize.z
		if pointIsInside then
			return mouseHit.p
		end
		local result = Vector3.new(
			(transform.x < -halfSize.x) and -halfSize.x or ((transform.x > halfSize.x) and halfSize.x or transform.x),
			(transform.y < -halfSize.y) and -halfSize.y or ((transform.y > halfSize.y) and halfSize.y or transform.y),
			(transform.z < -halfSize.z) and -halfSize.z or ((transform.z > halfSize.z) and halfSize.z or transform.z)
		)
		local endResult = Vector3.new(math.floor(result.x), math.floor(result.y), math.floor(result.z))
		return selectedPart.CFrame * endResult
	end
end

function getClosestPlayer()
	local closestPlayer, closestDistance = nil, 1 / 0
	local camera = workspace.CurrentCamera
	local localPlayer = game.Players.LocalPlayer
	local mouse = localPlayer:GetMouse()
	local mousePos = mouse.hit.p
	local players = game:GetService("Players"):GetPlayers()
	local knockedCheck = KnockedCheck
	local grabbedCheck = GrabbedCheck
	local wallCheck = wallCheck
	local i = 1
	while i <= #players do
		local player = players[i]
		if player ~= localPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
			local rootPart = player.Character.HumanoidRootPart
			local OnScreen = camera:WorldToViewportPoint(rootPart.Position)
			local distance = (rootPart.Position - mousePos).magnitude
			if
				distance < closestDistance
				and knockedCheck(player)
				and grabbedCheck(player)
				and OnScreen
				and wallCheck(rootPart.Position, { localPlayer, player.Character })
			then
				closestPlayer = player
				closestDistance = distance
			end
		end
		i = i + 1
	end
	return closestPlayer
end

function isAnti()
	local calculateVelocityAverage = smoothVelocity(self.Character)
	return self.Character.HumanoidRootPart.Velocity.Magnitude > 50
			and calculateVelocityAverage * Solarix.userSettings.Prediction
		or self.Character.HumanoidRootPart.Velocity * Solarix.userSettings.Prediction
end

-- // ugly ik
game.RunService.Heartbeat:Connect(function()
	local vector2Pos = game:GetService("UserInputService"):GetMouseLocation()
	if self and Solarix.userSettings.Enabled then
		rPoint = cls(self.Character)
	end
	if self and Solarix.VisualSettings.FOVType == "Stick" and Solarix.userSettings.Enabled then
		local pos = workspace.CurrentCamera:worldToViewportPoint(self.Character.HumanoidRootPart.Position)
		Circle.Position = Vector2.new(pos.X, pos.Y)
	else
		Circle.Position = Vector2.new(vector2Pos.X, vector2Pos.Y)
	end
	if Solarix.userSettings.Enabled then
		self = getClosestPlayer()
	end
	UpdateText()
	if self and Solarix.userSettings.Enabled then
		getgenv().Result = getClosestPart(self.Character)
	end
end)

local __index
__index = hookmetamethod(game, "__index", function(t, k)
	if t:IsA("Mouse") and k == "Hit" or k == "Target" then
		if self ~= nil and Result ~= nil and rPoint and Solarix.userSettings.Enabled then
			local Hit = CFrame.new(rPoint) + isAnti()
			return (k == "Hit" and Hit)
		end
	end
	return __index(t, k)
end)