the hitbox module that i use is not mine
i know, thats why it gets confusing for u, just use the script i made above
it dont changes nothing i suppose
here use this instead
local grabRemote = RP.remotes.grab
local ss = game:GetService("ServerStorage")
local modules = ss:WaitForChild("Modules")
local slow = require(modules:WaitForChild("slow"))
local runService = game:GetService("RunService")
local rockModule = require(modules:WaitForChild("RockModule"))
local utilities = require(modules:WaitForChild("particleEmitter"))
local hitbox = require(modules:WaitForChild("hitbox"))
local hitService = require(modules:WaitForChild("hitService"))
local hitedPeople = {}
local grabAnins = {}
local looping = false
local startTick
local weld
local enemy
local enemyHumRP
local TheTarget = nil
local TheTargetRP = nil
local function aplyVelocity(targetHumRP,direction)
local linearV = Instance.new("LinearVelocity",targetHumRP)
local attach = targetHumRP.RootAttachment
linearV.MaxForce = 100000
linearV.ForceLimitMode = Enum.ForceLimitMode.PerAxis
linearV.MaxAxesForce = Vector3.new(100000,0,100000)
linearV.VectorVelocity = direction
linearV.VelocityConstraintMode = Enum.VelocityConstraintMode.Vector
linearV.Attachment0 = attach
linearV.RelativeTo = Enum.ActuatorRelativeTo.Attachment0
attach.WorldPosition = targetHumRP.AssemblyCenterOfMass
linearV.ForceLimitsEnabled = true
game.Debris:AddItem(linearV,0.2)
end
local function GetAllEnemiesWithinHitbox(Hitbox, MyHumanoid)
local AllEnemies = {}
local CurrentDistance = math.huge
local CurrentTarget = nil
local CurrentTargetHRP = nil
local Array = workspace:GetPartBoundsInBox(hitbox.CFrame, hitbox.Size)
if Array ~= nil then
for i, v in Array do
local Model = v:FindFirstAncestorOfClass("Model")
if Model then
local Hum = Model:FindFirstChild("Humanoid")
if Hum and Hum ~= MyHumanoid then
local Dist = (Model.PrimaryPart.Position - MyHumanoid.Parent.PrimaryPart.Position).Magnitude
if Dist < CurrentDistance then
CurrentTarget = Model
CurrentDistance = Dist
CurrentTargetHRP = Model:FindFirstChild("HumanoidRootPart")
end
end
end
end
end
return CurrentTarget, CurrentTargetHRP
end
grabRemote.OnServerEvent:Connect(function(plr,grab,input)
local character = plr.Character
local humanoid = character:WaitForChild("Humanoid")
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
local grabing = character:GetAttribute("Grab")
local attacking = character:GetAttribute("Attacking")
local punching = character:GetAttribute("Punching")
local blocking = character:GetAttribute("Blocking")
local jumping = character:GetAttribute("Jumping")
local slowed = character:GetAttribute("Slowed")
local stunned = character:GetAttribute("Stunned")
local dashing = character:GetAttribute("Dash")
local dashing2 = character:GetAttribute("Dash2")
if grab then
if grabing or attacking or punching or blocking or stunned or dashing or dashing2 then return end
local animation = Instance.new("Animation")
animation.AnimationId = "http://www.roblox.com/asset/?id=85032147152709"
local animationTrack = humanoid:LoadAnimation(animation)
local animationGrabing = Instance.new("Animation")
animationGrabing.AnimationId = "http://www.roblox.com/asset/?id=anim"
local animationTrackGrabing = humanoid:LoadAnimation(animationGrabing)
local function GrabFunc()
local hitbox = Instance.new("Part")
hitbox.Name = "HitBox"
hitbox.Transparency = 1
hitbox.CanCollide = false
hitbox.Anchored = true
hitbox.Size = Vector3.new(14,14,14)
hitbox.CFrame = humanoidRootPart.CFrame + Vector3.new(0, 0, -2)
local Target, TargetHRP = GetAllEnemiesWithinHitbox(hitbox, humanoid)
if Target ~= nil then
TheTarget = Target
TheTargetRP = TargetHRP
looping = true
character:SetAttribute("Grab",true)
enemy = Target
enemyHumRP = TargetHRP
for i,v in pairs(Target:GetChildren()) do
if v:IsA("BasePart") then
v.Color = Color3.fromRGB(0,100,80)
end
end
weld = Instance.new("Weld")
weld.C1 = CFrame.new(0,0,-2) * CFrame.Angles(0,math.rad(180),0)
weld.Part0 = TargetHRP
weld.Part1 = humanoidRootPart
weld.Name = "wellwellwell"
local knockback = nil
local maxForce = nil
startTick = tick()
while looping do
humanoid.WalkSpeed = 10
humanoid.JumpPower = 0
weld.Parent = TargetHRP
Target.Humanoid.PlatformStand = true
if tick() - startTick > 3 then
print(Target,TargetHRP)
character:SetAttribute("Grab",false)
Target.Humanoid.PlatformStand = false
humanoid.WalkSpeed = 20
humanoid.JumpPower = 50
for i,v in pairs(TargetHRP:GetChildren()) do
if v:IsA("Weld") and v.Name == "wellwellwell" then
v.Parent = nil
end
end
aplyVelocity(TargetHRP,Vector3.new(0,0,30))
break
end
task.wait()
end
hitService.hit(Target.Humanoid,nil,knockback,nil,character,nil,nil,maxForce,nil,nil)
end
end
animationTrack.KeyframeReached:Connect(function(kf)
if kf == "grab" then
GrabFunc()
end
end)
animationTrack:Play()
grabAnins[plr] = animationTrack
else
if grabing then
looping = false
character:SetAttribute("Grab",false)
grabAnins[plr]:Stop()
grabAnins[plr] = nil
humanoid.WalkSpeed = 20
humanoid.JumpPower = 50
TheTarget.Humanoid.PlatformStand = false
for i,v in pairs(TheTargetRP:GetChildren()) do
if v:IsA("Weld") and v.Name == "wellwellwell" then
v.Enabled = false
end
end
if tick() - startTick < 3 and input == Enum.KeyCode.T then
aplyVelocity(TheTargetRP,Vector3.new(0,0,30))
elseif input == Enum.KeyCode.Y then
aplyVelocity(TheTargetRP,Vector3.new(30,0,0))
elseif input == Enum.KeyCode.G then
aplyVelocity(TheTargetRP,Vector3.new(-30,0,0))
end
hitedPeople = {}
end
end
end)
oh, i think i understand it now
Wait I think I found the issue give me a second
of course, took the time you want.
i’ll wait for the another guy reply, so i’ll try your code
take a picture of the error output if it gives any error
i have never mentioned that,but, i have watched a video of a guy that use the same hitbox module that i use, and he create a nearest enemy detection that works for him, but not for me
Ok there is alot wrong with this script I don’t think i can explain all of it.
The main issue is you only get the first person that touches it and sends only that one person to the hitedpeople
variable, so it will only get the distance of that one person and therefore only return that one person (and that is excluding the other 15 different mistakes).
I can try to fix it for you but it would take me a few minutes.
did u try my code? was there any output?
ok, i’ll try the veexas code while you fix the problens
okay it change that into this
local Array = workspace:GetPartBoundsInBox(Hitbox.CFrame, Hitbox.Size)
i uppercase the “H” in hitbox, hitbox i created is uppercase H
Before I give the final verdict, how do I visualiza the hitbox?
i cant see the hitbox, i think that is the only problem, thanks
by changing this
hitbox.Transparency = 1
to this
hitbox.Transparency = 0.5
and add this under it
game.Debris:AddItem(hitbox, 5) --deletes the part after 5 seconds
ure welcome, im glad i was able to help