
Key Required VerifiedUniversal

local Players = game:GetService("Players")
local PathfindingService = game:GetService("PathfindingService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local camera = Workspace.CurrentCamera
-- MARKER DISC
local marker = Instance.new("Part")
marker.Name = "ClickMarker"
marker.Anchored = true
marker.CanCollide = false
marker.Shape = Enum.PartType.Cylinder
marker.Size = Vector3.new(0.2, 2, 2)
marker.Material = Enum.Material.Plastic
marker.Color = Color3.fromRGB(0, 255, 0)
marker.Transparency = 0
marker.Orientation = Vector3.new(0, 0, 90)
marker.Parent = workspace
marker.Position = Vector3.new(0, -1000, 0)
-- CHARACTER
local character, humanoid, root
local moving = false
local pathID = 0
local function setupCharacter(char)
character = char
humanoid = char:WaitForChild("Humanoid")
root = char:WaitForChild("HumanoidRootPart")
humanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Physics, false)
pathID += 1
moving = false
end
setupCharacter(player.Character or player.CharacterAdded:Wait())
player.CharacterAdded:Connect(setupCharacter)
-- RAYCAST PARAMS
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Blacklist
-- HIGHLIGHT
local currentHighlight = nil
local currentTarget = nil
local function clearHighlight()
if currentHighlight then
currentHighlight:Destroy()
currentHighlight = nil
currentTarget = nil
end
end
local function createHighlight(character)
clearHighlight()
local highlight = Instance.new("Highlight")
highlight.FillColor = Color3.fromRGB(0, 255, 0)
highlight.FillTransparency = 0.6
highlight.OutlineColor = Color3.fromRGB(0, 255, 0)
highlight.OutlineTransparency = 0.2
highlight.Parent = character
currentHighlight = highlight
currentTarget = character
end
-- HELPERS
local function isNeon(part)
return part and part:IsA("BasePart") and part.Material == Enum.Material.Neon
end
local function getGroundPosition()
if not character then return end
params.FilterDescendantsInstances = { character }
local unitRay = camera:ScreenPointToRay(mouse.X, mouse.Y)
local hit = workspace:Raycast(unitRay.Origin, unitRay.Direction * 1000, params)
if not hit then return end
local downHit = workspace:Raycast(hit.Position + Vector3.new(0, 5, 0), Vector3.new(0, -500, 0), params)
return downHit and downHit.Position
end
local function adjustWaypoint(wpPos)
params.FilterDescendantsInstances = { character }
local hit = workspace:Raycast(wpPos + Vector3.new(0, 5, 0), Vector3.new(0, -10, 0), params)
if hit and isNeon(hit.Instance) then
local offset = Vector3.new(3, 0, 0)
local try1 = wpPos + offset
local try2 = wpPos - offset
local hit1 = workspace:Raycast(try1 + Vector3.new(0, 5, 0), Vector3.new(0, -10, 0), params)
local hit2 = workspace:Raycast(try2 + Vector3.new(0, 5, 0), Vector3.new(0, -10, 0), params)
if hit1 and not isNeon(hit1.Instance) then
return hit1.Position
elseif hit2 and not isNeon(hit2.Instance) then
return hit2.Position
end
return wpPos + Vector3.new(0, 6, 0)
end
return wpPos
end
-- DISC FOLLOW
RunService.RenderStepped:Connect(function()
if moving then return end
local pos = getGroundPosition()
if pos then
marker.Position = pos + Vector3.new(0, 0.05, 0)
end
end)
-- CLICK TO MOVE
mouse.Button1Down:Connect(function()
if not humanoid or humanoid.Health <= 0 then return end
local targetPos = getGroundPosition()
if not targetPos then return end
pathID += 1
local myPathID = pathID
moving = true
marker.Position = targetPos + Vector3.new(0, 0.05, 0)
local path = PathfindingService:CreatePath({
AgentRadius = 2,
AgentHeight = 5,
AgentCanJump = true,
AgentCanClimb = true
})
path:ComputeAsync(root.Position, targetPos)
if path.Status ~= Enum.PathStatus.Success then
moving = false
return
end
for _, wp in ipairs(path:GetWaypoints()) do
if myPathID ~= pathID then return end
local pos = adjustWaypoint(wp.Position)
if wp.Action == Enum.PathWaypointAction.Jump then
humanoid.Jump = true
end
humanoid:MoveTo(pos)
humanoid.MoveToFinished:Wait()
end
moving = false
end)
-- HIGHLIGHT TARGET
RunService.RenderStepped:Connect(function()
local target = mouse.Target
if not target or not target.Parent then
clearHighlight()
return
end
local targetPlayer = Players:GetPlayerFromCharacter(target.Parent)
if not targetPlayer or targetPlayer == player then
clearHighlight()
return
end
if currentTarget ~= targetPlayer.Character then
createHighlight(targetPlayer.Character)
end
end)

![Noob Avatar in Nds [OPEN SOURCE]](https://scriptblox.com/images/sb/rbx-7ea7065a02f8cff80f8b0270a9ad2d3b-0820ff9b1f88.png)

@Shadow69 and what if it's ai, it works. doesn't it?
@Shadow69 im learning now shut up, i've probably been learning longer than yo ahh
@Shadow69 nah