I'm trying to make a weapon that plays an animation when you press the R key.
15:45:56.829 - Players.Player.Backpack.Tool.Laser:47: attempt to index global 'key' (a nil value)
How would I fix this?
local tool = script.Parent local player = game:GetService("Players").LocalPlayer tool.Equipped:connect(function(mouse) mouse.Button1Down:connect(function() down = true; while down do local ray = Ray.new(tool.Red.CFrame.p, (mouse.Hit.p - tool.Red.CFrame.p).unit * 300) local part, position = workspace:FindPartOnRay(ray, player.Character, false, true) local beam = Instance.new("Part", workspace) beam.BrickColor = BrickColor.new("Really red") beam.FormFactor = "Custom" beam.Material = "Neon" beam.Transparency = 0.25 beam.Anchored = true beam.Locked = true beam.CanCollide = false local distance = (tool.Handle.CFrame.p - position).magnitude beam.Size = Vector3.new(0.3, 0.3, distance) beam.CFrame = CFrame.new(tool.Red.CFrame.p, position) * CFrame.new(0, 0, -distance / 2) game:GetService("Debris"):AddItem(beam, 0.1) if part then local humanoid = part.Parent:FindFirstChild("Humanoid") if not humanoid then humanoid = part.Parent.Parent:FindFirstChild("Humanoid") end if humanoid then humanoid:TakeDamage(0) end end wait(); end; end); mouse.Button1Up:connect(function() down = false; end); end) key.KeyDown:connect(function(h) if h=="R" then print("lol this is a test") end end)
KeyDown
is deprecated, use UserInputService
.
local uis=game:GetService("UserInputService") uis.InputBegan:connect(function(key) if key.KeyCode==Enum.KeyCode.R then --really no need for lower print'User pressed R!' end end)
Ik this was 4 years ago but ima still answer, make a variable for Mouse
game.Players.PlayedAdded:Connect(function(Player) local mouse = Player:GetMouse() mouse.KeyDown:connect(function(h) if h == "r" then print("lol this is a test") end end)
this should work