For moderators: That post had absolutely no answers. Those were comments. The comment was not a answer, and I tried the suggestion and nothing happened. This is my last chance of hope getting this to work. I really need this for my game badly.

UPDATE: I have an error that states: Touched is not a member of tool.

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

This is the LAST post of the same question I'll ever do. I'm not begging, I'm asking for a serious amount of help. This site is meant for help but I'm not getting any. I really need help here!

6 comments

1

hitt didn't really need to be there, and you were missing a check to make sure hit.Parent wasn't nil. Here's a cleaned up version, http://hastebin.com/izefoquloj.lua though I didn't see anything that looked like a bug so if there is one it's probably still there.

0

Thanks I'll try that out

0

Ok thanks for the script but luckily I got this error that stated: "Touched is not a member of tool" which a hint.

0

BlueTalslem, it works in studio but still does not in play mode.

0

You should use LocalScripts when it's a descendant of Player.

0

Still, sadly nothing