Hello Developers!
I made this script, this script will force the user to do a drop kick, the problem Is that I want to add a system where If they kick a wall they will get harmed, the problem Is that It will harm the player If they touch a humanoid (Like a NPC or Player) due to the humanoid having parts
Script:
local NPC = script.Parent
if script.Enabled == true then
local PlayerInventory = game:GetService("Players"):GetPlayerFromCharacter(NPC)
if PlayerInventory then
local Tools = PlayerInventory.Backpack:GetChildren()
for _, Tool in ipairs(Tools) do
if Tool:IsA("Tool") then
Tool.Parent = game:GetService("ReplicatedStorage").FolderThatContainsWeapons
end
end
NPC:WaitForChild("Drop Kick").Parent = game:GetService("ReplicatedStorage").FolderThatContainsWeapons
end
script.Swoosh:Play()
local DropKick = NPC.Humanoid:WaitForChild("Animator"):LoadAnimation(script.Kick)
DropKick:Play()
NPC.HumanoidRootPart.Anchored = true
local TweenPropteries = {
CFrame = NPC.HumanoidRootPart.CFrame + (NPC.HumanoidRootPart.CFrame.LookVector*35)
}
local Tweeninfo = TweenInfo.new(
1,
Enum.EasingStyle.Cubic,
Enum.EasingDirection.InOut,
0,
false,
0
)
local Tween = game:GetService("TweenService"):Create(NPC.HumanoidRootPart,Tweeninfo,TweenPropteries)
Tween:Play()
local Hits = {}
NPC["Left Leg"].Touched:Connect(function(hit)
local Character = hit:FindFirstAncestorWhichIsA("Model")
local Humanoid = Character and Character:FindFirstChildWhichIsA("Humanoid")
local Player = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent)
if Player then
local player1 = game.Players:GetPlayerFromCharacter(hit.Parent)
local player2 = game.Players:GetPlayerFromCharacter(NPC)
if (player1 ~= nil) and (player2 ~= nil) then
local humanoid = (player1.Character or player1.CharacterAdded:Wait()):FindFirstChildWhichIsA("Humanoid")
if (player1.TeamColor ~= player2.TeamColor) then
if (humanoid ~= nil) and (humanoid.Health >= 0) and not Hits[Character] then
Hits[Character] = true
script.Contact:Play()
Humanoid:TakeDamage(30)
local RagdollScript = script.Ragdoll:Clone()
game:GetService("Debris"):AddItem(RagdollScript,2)
RagdollScript.Parent = humanoid.Parent
RagdollScript.Enabled = true
local VectorForce = Instance.new("VectorForce",humanoid.Parent.Torso)
local Attachment = Instance.new("Attachment",humanoid.Parent.Torso)
VectorForce.Attachment0 = Attachment
VectorForce.Force = Vector3.new(0,300,6000)
VectorForce.ApplyAtCenterOfMass = true
game:GetService("Debris"):AddItem(VectorForce,0.5)
game:GetService("Debris"):AddItem(Attachment,0.5)
wait(1)
Hits[Character] = false
end
if not player1.Team and (humanoid ~= nil) and (humanoid.Health >= 0) and not Hits[Character] then
Hits[Character] = true
local RagdollScript = script.Ragdoll:Clone()
game:GetService("Debris"):AddItem(RagdollScript,2)
RagdollScript.Parent = humanoid.Parent
RagdollScript.Enabled = true
script.Contact:Play()
Humanoid:TakeDamage(30)
local VectorForce = Instance.new("VectorForce",humanoid.Parent.Torso)
local Attachment = Instance.new("Attachment",humanoid.Parent.Torso)
VectorForce.Attachment0 = Attachment
VectorForce.Force = Vector3.new(0,300,6000)
VectorForce.ApplyAtCenterOfMass = true
game:GetService("Debris"):AddItem(VectorForce,0.5)
game:GetService("Debris"):AddItem(Attachment,0.5)
wait(1)
Hits[Character] = false
end
end
end
elseif not Player then
local Character = hit:FindFirstAncestorWhichIsA("Model")
local Humanoid = Character and Character:FindFirstChildWhichIsA("Humanoid")
if Humanoid and Humanoid.Health >= 0 and not Hits[Character] then
Hits[Character] = true
script.Contact:Play()
Humanoid:TakeDamage(30)
local RagdollScript = script.Ragdoll:Clone()
game:GetService("Debris"):AddItem(RagdollScript,2)
RagdollScript.Parent = Humanoid.Parent
RagdollScript.Enabled = true
local VectorForce = Instance.new("VectorForce",Humanoid.Parent.Torso)
local Attachment = Instance.new("Attachment",Humanoid.Parent.Torso)
VectorForce.Attachment0 = Attachment
VectorForce.Force = Vector3.new(0,300,6000)
VectorForce.ApplyAtCenterOfMass = true
game:GetService("Debris"):AddItem(VectorForce,0.5)
game:GetService("Debris"):AddItem(Attachment,0.5)
wait(1)
Hits[Character] = false
end
end
end)
NPC["Left Leg"].Touched:Connect(function(Hit)
if Hit:IsA("BasePart") and not Hit.Parent.Humanoid then
local FailHit = script.Fail:Clone()
FailHit.Parent = NPC
FailHit.Enabled = true
NPC.HumanoidRootPart.Anchored = false
DropKick:Stop()
script:Destroy()
end
end)
wait(0.3)
NPC.HumanoidRootPart.Anchored = false
wait(1)
DropKick:Stop()
local GetUp = NPC.Humanoid:WaitForChild("Animator"):LoadAnimation(script.GetUp)
GetUp:Play()
wait(0.1)
NPC.HumanoidRootPart.Anchored = false
local Tools = game:GetService("ReplicatedStorage").FolderThatContainsWeapons:GetChildren()
for _, Tool in ipairs(Tools) do
if Tool:IsA("Tool") then
Tool.Parent = NPC
end
end
NPC.Humanoid:UnequipTools()
script:Destroy()
end

4 comments
Are you sure that damage is not being dealt because of touching the floor?
Wydm
Wydm
Maybe try :FindFirstChild to see if there is a humanoid inside of the parent part that the dropkick hit