Local script:
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local player = game.Players.LocalPlayer
local uis = game:GetService("UserInputService")
local remote = game:GetService("ReplicatedStorage").Combat
local ts = game:GetService("TweenService")
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Whitelist
params.FilterDescendantsInstances = {workspace.Map}
local lastTimeM1 = 0
local lastM1End = 0
local combo = 1
local canAir = true
local punchAnims = {
'rbxassetid://13111415464', -- 1
'rbxassetid://13111417311', -- 2
'rbxassetid://13111419879', -- 3
'rbxassetid://13111422893', -- 4
'rbxassetid://13111431501', -- 5
}
local airAnims = {
'rbxassetid://13103638685', -- KICK UP
'rbxassetid://13103652945', -- KICK DOWN
}
local function hb(size, Cframe, ignore, char)
local hb = Instance.new("Part", workspace.Fx)
hb.Anchored = true
hb.CanCollide = false
hb.Transparency = 0.6
hb.Name = "hb"
hb.Material = Enum.Material.ForceField
hb.CanQuery = false
hb.Size = size
hb.CFrame = Cframe
local con
con = hb.Touched:Connect(function()
con:Disconnect()
end)
local lasttarg
for i, v in pairs(hb:GetTouchingParts()) do
if v.Parent:FindFirstChild("Humanoid") and table.find(ignore, v.Parent) == nil then
if lasttarg then
if (lasttarg.Position - char.PrimaryPart.Position).Magnitude > (v.Position - char.PrimaryPart.Position).Magnitude then
lasttarg = v.Parent.PrimaryPart
end
else
lasttarg = v.Parent.PrimaryPart
end
end
end
hb:Destroy()
if lasttarg then
return lasttarg.Parent
else
return nil
end
end
local function rock(data)
local currentTime = tick()
local rockRaycastResult
repeat
rockRaycastResult = workspace:Raycast(data.Target.PrimaryPart.Position, data.Direction, params)
print(rockRaycastResult)
wait()
until tick() - currentTime > 5 or rockRaycastResult ~= nil
if rockRaycastResult then
for i = 0, 14 do
local part = Instance.new("Part", workspace.Fx)
part.Size = Vector3.new(4, math.random(10, 20) / 10, math.random(10, 20) / 10)
part.Anchored = true
part.CFrame = CFrame.new(rockRaycastResult.Position, rockRaycastResult.Position + rockRaycastResult.Normal)
part.CFrame = part.CFrame + CFrame.Angles(math.rad(90), math.rad(i * 360/14), 0) * CFrame.new(0, 0, -4 * 2) * CFrame.Angles(math.rad(35), 0, 0)
part.CanQuery = false
part.CanCollide = false
part.CanTouch = false
local result = workspace:Raycast(part.Position + rockRaycastResult.Normal * 4, rockRaycastResult.Normal * -5, params)
if result then
part.Position = result.Position
part.Material = result.Material
part.Color = result.Instance.Color
else
part:Destroy()
end
part.Position = part.Position + rockRaycastResult.Normal * -4
ts:Create(part, TweenInfo.new(.2, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out, 0, false, 0), {Position = part.Position + rockRaycastResult.Normal * 4}):Play()
spawn(function()
game.Debris:AddItem(part, 4)
wait(3)
ts:Create(part, TweenInfo.new(.5, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out, 0, false, 0), {Position = part.Position + rockRaycastResult.Normal * -4}):Play()
end)
if i % 3 < 2 and result then
local rubble = part:Clone()
rubble.Size = Vector3.new(math.random(10, 20) / 20, math.random(10, 20) / 20, math.random(10, 20) / 20)
rubble.Position = result.Position + rockRaycastResult.Normal * 4
rubble.Material = result.Material
rubble.Color = result.Instance.Color
rubble.Parent = workspace.Fx
rubble.Anchored = false
rubble.CanCollide = true
local bv = Instance.new("BodyVelocity", rubble)
bv.Velocity = Vector3.new(math.random(-40, 40), 30, math.random(-40, 40))
bv.MaxForce = Vector3.new(99999, 99999, 99999)
bv.Name = "Velocity"
game.Debris:AddItem(bv, .1)
game.Debris:AddItem(rubble, 4)
spawn(function()
wait(2)
ts:Create(rubble, TweenInfo.new(1, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out, 0, false, 0), {Transparency = 1}):Play()
end)
rubble.Transparency = 0
end
end
end
end
uis.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 and tick() - lastTimeM1 > .3 and tick() - lastM1End > .7 then
if tick() - lastTimeM1 > .7 then
combo = 1
end
lastTimeM1 = tick()
local animation = Instance.new("Animation", workspace.Fx)
local air = nil
if uis:IsKeyDown("Space") and combo == 3 and canAir then
canAir = false
animation.AnimationId = airAnims[1]
air = "Up"
elseif not uis:IsKeyDown("Space") and combo == 4 and not canAir then
animation.AnimationId = airAnims[2]
air = "Down"
else
animation.AnimationId = punchAnims[combo]
end
local load = humanoid:LoadAnimation(animation)
load:Play()
animation:Destroy()
local hitTarg = hb(Vector3.new(4, 6, 4), character.PrimaryPart.CFrame * CFrame.new(0, 0, -3), {character} ,character)
if hitTarg then
local data = {
["Target"] = hitTarg,
["Character"] = character,
["Combo"] = combo,
["Air"] = air,
["Action"] = "ml",
}
remote:FireServer(data)
end
if combo == #punchAnims then
combo = 1
lastM1End = tick()
else
combo += 1
end
humanoid.WalkSpeed = 0
wait(.4)
humanoid.WalkSpeed = 13
end
end)
remote.OnClientEvent:Connect(function(data)
if data.Action == "Rock" then
rock(data)
end
end)
humanoid.StateChanged:Connect(function(old, new)
if new == Enum.HumanoidStateType.Landed then
canAir = true
end
end)
uis.JumpRequest:Connect(function()
if tick() - lastTimeM1 < 1 then
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
else
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end)
Script:
local remote = game:GetService("ReplicatedStorage"):WaitForChild("Combat")
remote.OnServerEvent:Connect(function(client, data)
if data.Action == "ml" then
data.Target.Humanoid:TakeDamage(5)
if data.Air == "Up" then
local bp = Instance.new("BodyPosition")
bp.Position = data.Character.PrimaryPart.Position + Vector3.new(0, 30, 0)
bp.P = 1200
bp.MaxForce = Vector3.new(99999, 99999, 99999)
bp.D = 200
bp.Name = "Position"
bp.Parent = data.Character.PrimaryPart
game.Debris:AddItem(bp, 1)
local bp = Instance.new("BodyPosition")
bp.Position = data.Target.PrimaryPart.Position + Vector3.new(0, 30, 2)
bp.P = 1200
bp.MaxForce = Vector3.new(99999, 99999, 99999)
bp.D = 200
bp.Name = "Position"
bp.Parent = data.Target.PrimaryPart
game.Debris:AddItem(bp, 1)
elseif data.Air == "Down" then
for i, v in pairs(data.Target.PrimaryPart:GetChildren()) do
if v:IsA("BodyMover") then
v:Destroy()
end
end
local bv = Instance.new("BodyVelocity", data.Target.PrimaryPart)
bv.Velocity = (data.Character.PrimaryPart.CFrame.LookVector * 1 - Vector3.new(0, 2, 0)) * 25
bv.MaxForce = Vector3.new(99999, 99999, 99999)
bv.Name = "Velocity"
game.Debris:AddItem(bv, .2)
data.Action = "Rock"
data.Direction = (data.Character.PrimaryPart.CFrame.LookVector * 1 - Vector3.new(0, 2, 0)) * 1
remote:FireAllClients(data)
elseif data.Combo == 5 then
for i, v in pairs(data.Target.PrimaryPart:GetChildren()) do
if v:IsA("BodyMover") then
print("SOMETHING")
v:Destroy()
end
end
local bv = Instance.new("BodyVelocity", data.Character.PrimaryPart)
bv.Velocity = data.Character.PrimaryPart.CFrame.LookVector * 10
bv.MaxForce = Vector3.new(99999, 99999, 99999)
bv.Name = "Velocity"
game.Debris:AddItem(bv, .2)
local bv = Instance.new("BodyVelocity", data.Target.PrimaryPart)
bv.Velocity = data.Character.PrimaryPart.CFrame.LookVector * 75
bv.MaxForce = Vector3.new(99999, 99999, 99999)
bv.Name = "Velocity"
game.Debris:AddItem(bv, .2)
else
local bv = Instance.new("BodyVelocity", data.Character.PrimaryPart)
bv.Velocity = data.Character.PrimaryPart.CFrame.LookVector * 10
bv.MaxForce = Vector3.new(99999, 99999, 99999)
bv.Name = "Velocity"
game.Debris:AddItem(bv, .2)
local bv = Instance.new("BodyVelocity", data.Target.PrimaryPart)
bv.Velocity = data.Character.PrimaryPart.CFrame.LookVector * 10
bv.MaxForce = Vector3.new(99999, 99999, 99999)
bv.Name = "Velocity"
game.Debris:AddItem(bv, .2)
end
end
end)
So here I have a script that tosses the enemy in the air on the third strike. The enemy is tossed, but why, then when he lands, the stones do not appear.
In Output, there are no errors, but prints do not work, as you can see I left on line 76 of the local script print, but it does not work. But the enemy flips back and is tossed in the air as it should. If anything, I did it from the guide, so to speak for training, here is a link to this guide, if necessary: Roblox Advanced Combat Tutorial Part 2 - YouTube
Maybe I wrote something wrong because he has everything works.
Also, here is my explorer:
Hope for answers)