This local script works fine with everything but then when the keydown function comes it is like the script skipped over it and continued on with everything else every time.
local tool = script.Parent
local player = game.Players.LocalPlayer
local character = player.Parent
local firerate = 1
local range = 200
local handle = tool:WaitForChild("Handle")
local event = tool:WaitForChild("RemoteEvent")
local firesound = handle:WaitForChild("FireSound")
local check = true
function checkintangible(hit)
if hit and hit ~= nil then
if hit:IsDescendantOf(tool.Parent) or hit.Name == "Handle" or string.lower(string.sub(hit.Name, 1, 6)) == "effect" then
return true
end
end
return false
end
function castray(startpos, vec, length, ignore, delayifhit)
local hit, endpos2 = game.Workspace:FindPartOnRay(Ray.new(startpos, vec * length), ignore)
if hit ~= nil then
if checkintangible(hit) then
hit, endpos2 = castray(endpos2 + (vec * .01), vec, length - ((startpos - endpos2).magnitude), ignore, delayifhit)
end
end
return hit, endpos2
end
tool.Equipped:connect(function(mouse)
equipped = true
if mouse then
mouse.Icon = "rbxasset://textures\\GunCursor.png"
mouse.Button1Down:connect(function()
local humanoid = tool.Parent:FindFirstChild("Humanoid")
local head = tool.Parent:FindFirstChild("Head")
local torso = tool.Parent:FindFirstChild("Torso")
if check and humanoid and humanoid.Health > 0 and head and torso then
check = false
mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
firesound:Play()
local vec = (mouse.Hit.p - head.Position).unit
local hit ,endpos = castray(head.Position, vec, range, tool.Parent)
event:FireServer("Fire", endpos, hit)
wait(firerate)
if mouse then
mouse.Icon = "rbxasset://textures\\GunCursor.png"
end
check = true
end
end)
mouse.KeyDown:connect(function(key)
key = key:lower()
if key == "m" then
for _, part in pairs(character:GetChildren())do
if part.ClassName == "Torso" then
part.Transparency = 1
elseif part.ClassName == "Head" then
part.Transparency = 1
elseif part.ClassName == "Right Arm" then
part.Transparency = 1
elseif part.ClassName == "Left Arm" then
part.Transparency = 1
elseif part.ClassName == "Right Leg" then
part.Transparency = 1
elseif part.ClassName == "Left Leg" then
part.Transparency = 1
end
end
end
end)
end
end)
tool.Unequipped:connect(function()
equipped = false
end)
