UPDATE: Hit is defined, line 12
This script is inside a tool, meant to kill Zombies (Hostile NPCs with a Humanoid named Zombie), and when the tool is fired the ball(bullet) kills the Zombie. It works on test mode in ROBLOX Studio, but not when a physically play the game. Script looks very long, but all I worry about are lines 12-34
--Script looks very long, but all I worry about are lines 12-34 ball = script.Parent damage = math.random(30,60) local hitt = false HitSound = Instance.new("Sound") HitSound.Name = "HitSound" HitSound.SoundId = "http://www.roblox.com/asset/?id=11945266" HitSound.Pitch = .8 HitSound.Volume = 1 HitSound.Parent = ball function onTouched(hit) if hit.Parent:findFirstChild("ForceField") ~= nil then return end if hit.CanCollide == false and hit.Parent:findFirstChild("Zombie") == nil then return end if hit.Parent.className == "Hat" and hitt == false then hitt = true hit:BreakJoints() hit.Velocity = ball.Velocity hit.Parent.Parent = game.Workspace end if hit:findFirstChild("Metal") ~= nil and hitt == false then hitt = true for i = 1,math.random(1,3) do local j = Instance.new("Part") j.formFactor = "Plate" j.Size = Vector3.new(1,.4,1) j.BrickColor = BrickColor.new("Bright yellow") j.CanCollide = false j.Velocity = Vector3.new(math.random(-10,10),math.random(-10,10),math.random(-10,10)) j.CFrame = script.Parent.CFrame j.Parent = game.Workspace end end local humanoid = hit.Parent:findFirstChild("Zombie") if humanoid ~= nil and hitt == false then hitt = true tagHumanoid(humanoid) if hit.Name == "Head" then humanoid.Health = humanoid.Health - damage * 2 elseif hit.Name == "Torso" then humanoid.Health = humanoid.Health - damage * 1.5 else humanoid.Health = humanoid.Health - damage end wait(.2) untagHumanoid(humanoid) end if hitt == true then HitSound:play() ball.Parent = nil end end function tagHumanoid(humanoid) local tag = ball:findFirstChild("creator") if tag ~= nil then local new_tag = tag:clone() new_tag.Parent = humanoid end end function untagHumanoid(humanoid) if humanoid ~= nil then local tag = humanoid:findFirstChild("creator") if tag ~= nil then tag.Parent = nil end end end connection = ball.Touched:connect(onTouched) while true do wait(.01) if damage < 0 then break else damage = damage - .2 end end ball.Parent = nil
The ball(bullet) spawns when fired, but does not take any damage to the Zombie. The scripting is correct, no errors, bullet spawns works on studio but not when played. Please help!