what is the issue? It works perfectly.i just tested it.
It never sets the bool based on team color, and it looks for a bool of a different name in the SetPlayerChase function
Same issue as before
why do i have to put this part here
Okay i fixed that part. It works now. I hadnt tested the SetPlayerChase lol. Please mark the code as the solution.
Can I see the updated code?
WHY
local playerService = game:GetService("Players")
--local players=playerService:GetPlayers()
playerService.PlayerAdded:Connect(function(player) --give chase bool to all new players
local bool = Instance.new("BoolValue")
bool.Parent = player
bool.Name = "CanChasePlayer"
bool.Value = true
end)
local function SetPlayerChase(player, boolValue)
player:WaitForChild("CanChasePlayer").Value = boolValue
end
local npc = script.Parent
local human = npc.Humanoid
local PFS = game:GetService("PathfindingService")
local RUNSERVICE = game:GetService("RunService")
npc.PrimaryPart:SetNetworkOwner(nil)
local function findTarget()
local players = game:GetService("Players"):GetPlayers()
local nearesttarget
local maxDistance = 75 -- distance
for i,player in pairs(players) do
if player:FindFirstChild("CanChasePlayer").Value == true then
print("hi")
if player.Character then
local target = player.Character
local distance = (npc.HumanoidRootPart.Position - target:WaitForChild("HumanoidRootPart").Position).Magnitude
if distance < maxDistance then
nearesttarget = target
maxDistance = distance
end
end
end
end
return nearesttarget
end
local function getPath(destination)
local path = PFS:CreatePath()
path:ComputeAsync(npc.HumanoidRootPart.Position, destination)
return path
end
local function pathFindTo(destination)
local path = getPath(destination)
local target = findTarget()
if target and target.Humanoid.Health > 0 then
for i,waypoint in pairs(path:GetWaypoints()) do
if waypoint.Action == Enum.PathWaypointAction.Jump then
human.Jump =true
end
human:MoveTo(waypoint.Position)
human.MoveToFinished:Wait()
end
end
end
RUNSERVICE.Heartbeat:Connect(function()
local target = findTarget()
if target then
pathFindTo(target:WaitForChild("HumanoidRootPart").Position + (target:WaitForChild("HumanoidRootPart").Velocity.Unit * 1))
end
end)```
Still doesnt work
tgrerfedrewsde
what do you mean it doesnât work? Nobody can help you if you arenât specific. I tested it and it works fine so Iâm not sure what you mean.
If the value was originally false, and you change it to true, the ai will still act like it was false
sounds to me like youâre changing it on the client. You have to change it on the server. Are you changing it scriptually or during testing in the workspace tab?
I feel like such an idiot, thanks
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.