I have to change the weapon's script, because if I re-name the Humanoid "Zombie" to Humanoid "Humanoid", the zombie would take damage, but will not follow anyone. If the Humanoid is left as "Zombie", if will follow and kill players, other models with humanoids, however any attempt to kill it with that weapon would fail. This issue has stumped me for two days, and is very gamebreaking. Here are snippets of code:
The Weapon (Raycasting Gun)
function raycast(startp, endp, ign)
local vec=(endp-startp)
if vec.magnitude<1000 then
local hit,pos=game.Workspace:FindPartOnRay(Ray.new(startp,vec),ign)
if hit and pos then
if hit.Parent.className=="Tool" or hit.Parent.className=="Hat" then
if hit.Parent.Parent ~= nil then
if hit.Parent.Parent:findFirstChild("Humaniod")~=nil then
return hit.Parent, pos
end
end
elseif string.lower(hit.Name)=="glass" then
local vec=(endp-pos)
hit,pos=raycast(pos,vec,ign)
elseif string.lower(hit.Name)=="water" then
local vec=(endp-pos)
hit,pos=raycast(pos,vec,ign)
elseif hit.Transparency==1 or hit.Name=="Bullet" or hit.Name=="BulletTexture" then
local vec=(endp-pos)
hit,pos=raycast(pos,vec,hit)
end
end
return hit,pos
end
return nil
end
-------------------------------------------------------------------------------
function tagHumanoid(humanoid)
local plr=game.Players:playerFromCharacter(sp.Parent)
if plr~=nil then
local tag=Instance.new("ObjectValue")
tag.Value=plr
tag.Name="creator"
tag.Parent=humanoid
delay(2,function()
if tag~=nil then
tag.Parent=nil
end
end)
end
end
And the script of the zombie: local larm = script.Parent:FindFirstChild("Left Arm") local rarm = script.Parent:FindFirstChild("Right Arm")
function findNearestTorso(pos) local list = game.Workspace:children() local torso = nil local dist = 1000 local temp = nil local human = nil local temp2 = nil for x = 1, #list do temp2 = list[x] if (temp2.className == "Model") and (temp2 ~= script.Parent) then temp = temp2:findFirstChild("Torso") human = temp2:findFirstChild("Humanoid") if (temp ~= nil) and (human ~= nil) and (human.Health > 0) then if (temp.Position - pos).magnitude < dist then torso = temp dist = (temp.Position - pos).magnitude end end end end return torso end
function Hit(hit) if hit.Parent ~= nil then local human1 = hit.Parent:findFirstChild("Humanoid") if human1 ~= nil then human1.Health = human1.Health -15 end end end
larm.Touched:connect(Hit) rarm.Touched:connect(Hit)
--wait(math.random(0,5)/10) while true do wait(0.5) local target = findNearestTorso(script.Parent.Torso.Position) if target ~= nil then script.Parent.Zombie:MoveTo(target.Position, target) end end
I can't really script, but I know a few things about scripting. If you need more information, I'll happily provide it. Could you please provide a few pointers on this problem? Thank you!

2 comments
and change "humaniod" to "Humanoid"
You don't get it: whenever I change it to Humanoid, the zombie glitches.