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!

2 comments

0

Have you checked out the developer console while playing on a server? If you can't do that, test with a server started through Studio. I am betting on there being an issue with client-server communication.

0

I have still nothing