So, it seems that this only happens in online mode, the problem is, every time you fire the bullet, it says that crit, mind, and maxd are not valid members of the script. It works if I add a wait, but then you have to fire from a far distance, or else the bullet does nothing.
ball = script.Parent --The bullet crit = script.Crit.Value -- A value inside the script mind = script.MinDMG.Value -- Same as above maxd = script.MaxDMG.Value -- Same-o damage = math.random(mind,maxd) if script.Effect.Value == 1 then clonedth = script.Effect.Fire:Clone() clonedth.Enabled = true clonedth.Parent = ball elseif script.Effect.Value == 2 then clonedth = script.Effect.Cor:Clone() clonedth.Enabled = true clonedth.Parent = ball elseif script.Effect.Value == 3 then clonedth = script.Effect.Spark:Clone() clonedth.Enabled = true clonedth.Parent = ball end function onTouched(hit) local humanoid = hit.Parent:FindFirstChild("HP") local shield = hit.Parent:FindFirstChild("SP") if shield ~= nil and shield.Value > 0 then tagHumanoid(shield) if hit.Name == "Head" then shield.Value = shield.Value - damage * crit elseif hit.Name == "Torso" then shield.Value = shield.Value - damage * 1.1 if script["Effect"].Value == 1 then local chance = math.random(1,2) if chance == 1 then local clonedth2 = script["Effect"].Fire2:Clone() clonedth2.Enabled = true clonedth2.Parent = hit for i = 1, 10 do wait(0.5) shield.Value = shield.Value - damage / 7.5 end clonedth2:Destroy() end elseif script["Effect"].Value == 2 then local chance = math.random(1,2) if chance == 1 then local clonedth2 = script["Effect"].Cor2:Clone() clonedth2.Enabled = true clonedth2.Parent = hit for i = 1, 10 do wait(0.5) shield.Value = shield.Value - damage / 2 end clonedth2:Destroy() end elseif script["Effect"].Value == 3 then local chance = math.random(1,2) if chance == 1 then local clonedth2 = script["Effect"].Spark:Clone() clonedth2.Enabled = true clonedth2.Parent = hit for i = 1, 10 do wait(0.5) shield.Value = shield.Value - damage / 7.5 end clonedth2:Destroy() end end else shield.Value = shield.Value - damage end connection:disconnect() ball.Parent = nil elseif humanoid ~= nil then tagHumanoid(humanoid) if hit.Name == "Head" then humanoid.Value = humanoid.Value - damage * crit elseif hit.Name == "Torso" then humanoid.Value = humanoid.Value - damage * 1.1 if script["Effect"].Value == 1 then local chance = math.random(1,2) if chance == 1 then local clonedth2 = script["Effect"].Fire2:Clone() clonedth2.Enabled = true clonedth2.Parent = hit for i = 1, 10 do wait(0.5) humanoid.Value = humanoid.Value - damage / 5 end clonedth2:Destroy() end elseif script["Effect"].Value == 2 then local chance = math.random(1,2) if chance == 1 then local clonedth2 = script["Effect"].Cor2:Clone() clonedth2.Enabled = true clonedth2.Parent = hit for i = 1, 10 do wait(0.5) humanoid.Value = humanoid.Value - damage / 7.5 end clonedth2:Destroy() end elseif script["Effect"].Value == 3 then local chance = math.random(1,2) if chance == 1 then local clonedth2 = script["Effect"].Spark:Clone() clonedth2.Enabled = true clonedth2.Parent = hit for i = 1, 10 do wait(0.5) humanoid.Value = humanoid.Value - damage / 7.5 end clonedth2:Destroy() end end else humanoid.Value = humanoid.Value - damage end connection:disconnect() ball.Parent = nil end end function tagHumanoid(humanoid) -- todo: make tag expire 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) wait(8) ball.Parent = nil