Guest User

Untitled

a guest
Jan 2nd, 2023
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. local UIS = game:GetService("UserInputService")
  2. local RS = game:GetService("ReplicatedStorage")
  3.  
  4. local events = RS:WaitForChild("Events")
  5. local gunFired = events:WaitForChild("GunFired")
  6.  
  7. local gun = script.Parent
  8. local handle = gun:WaitForChild("Handle")
  9. local config = gun:WaitForChild("Config")
  10. local fireRate = config:WaitForChild("FireRate")
  11.  
  12. local character = gun.Parent
  13.  
  14. local fireBegin = nil
  15. local fireStop = nil
  16. local firing = false
  17.  
  18. gun.Equipped:Connect(function()
  19. if fireBegin or fireStop or firing then
  20. fireBegin:Disconnect()
  21. fireStop:Disconnect()
  22. fireBegin = nil
  23. fireStop = nil
  24. firing = false
  25. end
  26. fireBegin = UIS.InputBegan:Connect(function(input, GPE)
  27. if GPE then return end
  28. if input.UserInputType == Enum.UserInputType.MouseButton1 then
  29. firing = true
  30. while firing do
  31. local direction
  32. local mousePosition = UIS:GetMouseLocation()
  33. local mouseRay = workspace.Camera:ViewportPointToRay(mousePosition.X, mousePosition.Y)
  34. local raycastParams = RaycastParams.new()
  35. raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
  36. raycastParams.FilterDescendantsInstances = {gun, character}
  37. local raycastResult = workspace:Raycast(mouseRay.Origin, mouseRay.Direction * 1000, raycastParams)
  38. if raycastResult then
  39. direction = CFrame.lookAt(handle.Barrel.WorldPosition, raycastResult.Position)
  40. else
  41. direction = CFrame.lookAt(handle.Barrel.WorldPosition, mouseRay.Origin)
  42. end
  43. gunFired:FireServer(gun, direction)
  44. task.wait(1 / fireRate.Value)
  45. end
  46. end
  47. end)
  48.  
  49. fireStop = UIS.InputEnded:Connect(function(input, GPE)
  50. if GPE then return end
  51. if input.UserInputType == Enum.UserInputType.MouseButton1 then
  52. firing = false
  53. end
  54. end)
  55. end)
  56.  
  57. gun.Unequipped:Connect(function()
  58. if fireBegin or fireStop or firing then
  59. fireBegin:Disconnect()
  60. fireStop:Disconnect()
  61. fireBegin = nil
  62. fireStop = nil
  63. firing = false
  64. end
  65. end)
Advertisement
Add Comment
Please, Sign In to add comment