Advertisement
Ultimate_69

Punch Module

Feb 6th, 2025
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. local punch = {}
  2.  
  3. local remote = game.ReplicatedStorage.Remotes.Combat.CombatEvent
  4.  
  5. function punch.Punch(char: Part, combatRayLength: number, visualize: boolean, punchType: string, stand: Part, combo: number)
  6. local raycastParams = RaycastParams.new()
  7. raycastParams.FilterDescendantsInstances = char:GetDescendants()
  8. raycastParams.FilterType = Enum.RaycastFilterType.Exclude
  9. raycastParams.IgnoreWater = true
  10.  
  11. local sfx = game:GetService("SoundService").Combat.Swing:Clone()
  12. sfx.Parent = char
  13. sfx:Destroy()
  14.  
  15. local raycastResults
  16.  
  17. if not stand then
  18. raycastResults = workspace:Raycast(char.HumanoidRootPart.Position, char.HumanoidRootPart.CFrame.LookVector * combatRayLength, raycastParams)
  19. else
  20. raycastResults = workspace:Raycast(char.HumanoidRootPart.Position, char.HumanoidRootPart.CFrame.LookVector * combatRayLength, raycastParams)
  21. end
  22.  
  23. local distance = combatRayLength
  24.  
  25.  
  26. if visualize then
  27. local visualizer = Instance.new("Part")
  28. visualizer.Anchored = true
  29. visualizer.Transparency = 0.3
  30. visualizer.Parent = workspace
  31. visualizer.CanCollide = false
  32. visualizer.CanQuery = false
  33. visualizer.Size = Vector3.new(0.1, 0.1, distance)
  34. visualizer.CFrame = CFrame.new(char.HumanoidRootPart.Position, char.HumanoidRootPart.Position + char.HumanoidRootPart.CFrame.LookVector * 6) * CFrame.new(0, 0, -distance/2)
  35. game.Debris:AddItem(visualizer, 2)
  36. end
  37.  
  38. if raycastResults then
  39. local name = raycastResults.Instance.Name
  40. local hitDirection = "None"
  41.  
  42. if raycastResults.Instance.Parent:FindFirstChild("HumanoidRootPart") then
  43. local lookArea = (char.HumanoidRootPart.Position - raycastResults.Instance.Position).Unit
  44. local dotProduct = lookArea:Dot(raycastResults.Instance.Parent.HumanoidRootPart.CFrame.LookVector)
  45. if dotProduct >= 0 then
  46. -- FRONT
  47. hitDirection = "Front"
  48. else
  49. -- BACK
  50. hitDirection = "Back"
  51. end
  52.  
  53. remote:FireServer(raycastResults.Instance, punchType, hitDirection, combo)
  54. end
  55. end
  56. end
  57.  
  58. return punch
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement