Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Why isn't this shooting?

I'm trying to script build and I have this script:

chr = workspace.supercoolguy53
mouse = game.Players.LocalPlayer:GetMouse()

part = Instance.new("Part",chr)
part.CanCollide = false
part.Anchored = true
part.BrickColor = BrickColor.White()
part.Transparency = .9
part.Size = Vector3.new(7,7,7)
mesh = Instance.new("SpecialMesh",part)
mesh.MeshType = "Sphere"

part.Touched:connect(function(p)
	local h = p.Parent:FindFirstChild("Humanoid")
	if h and h.Parent.Name ~= "supercoolguy53" then
		h.Parent:Destroy()
	end
end)

mouse.KeyDown:connect(function(key)
	if key == 'q' then
		wait()
		local clone = part:clone()
		clone.Parent = chr
		clone.Name = 'part1'
		wait()
		for i = 1,500 do
			game:GetService('RunService').RenderStepped:wait()
			chr.part1.CFrame = chr.part1.CFrame.new(chr.Position + (chr.part1.CFrame.lookVector*.1))
		end
	end
end)

while game:GetService('RunService').RenderStepped:wait()  do
	part.CFrame = chr.Torso.CFrame
end

Everything works except for I can't shoot it. When you press q you're supposed to shoot where ever you're looking, this is my first time with this 'lookVector' thing and I don;t quite understand it. I get this error new is not a valid member

1 answer

chr = workspace.supercoolguy53
mouse = game.Players.LocalPlayer:GetMouse()

part = Instance.new("Part",chr)
part.CanCollide = false
part.Anchored = true
part.BrickColor = BrickColor.White()
part.Transparency = .9
part.Size = Vector3.new(7,7,7)
mesh = Instance.new("SpecialMesh",part)
mesh.MeshType = "Sphere"

part.Touched:connect(function(p)
    local h = p.Parent:FindFirstChild("Humanoid")
    if h and h.Parent.Name ~= "supercoolguy53" then
        h.Parent:Destroy()
    end
end)

mouse.KeyDown:connect(function(key)
    if key == 'q' then
        wait()
        local clone = part:clone()
        clone.Parent = chr
        clone.Name = 'part1'
        clone.CFrame = CFrame.new(chr.Head.Position + (chr.Head.CFrame.lookVector*1), mouse.Hit.p)
        wait()
        for i = 1,500 do
            game:GetService('RunService').RenderStepped:wait()
            chr.part1.CFrame = --[[error here]]CFrame.new(chr.Position + (chr.part1.CFrame.lookVector*.1))
        end
    end
end)

while game:GetService('RunService').RenderStepped:wait()  do
    part.CFrame = chr.Torso.CFrame
end

You forgot the fact that CFrame is a global variable, and that the CFrames of bricks do not contain constructors to create more CFrames. You must use CFrame, not BasePart.CoordinateFrame.

Basically:

local part = Instance.new('Part', workspace)
part.CFrame = part.CFrame.new(0,5,0) --> error: new is not a valid member of part.CFrame
part.CFrame = CFrame.new(0,5,0) --> part gets moved to 0,5,0

I hope I helped, if you have any questions, contact me.

2 comments

1

It didn't shoot the way I was facing... It was shooting tho.

0

Well, that was a problem in your code. It should be fixed now.

This discussion is preserved as it was. New answers, comments, and votes are closed.