Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why doesn't lunge custom animation play?

Asked by 5 years ago

Why doesn't my lunge animation play, but slash does? P.S. The both animations where made in the same plugin.

Tool = script.Parent

Handle = Tool:WaitForChild("Handle")



function Create(ty)

return function(data)

local obj = Instance.new(ty)

for k, v in pairs(data) do if type(k) == 'number' then

v.Parent = obj

else

obj[k] = v

end

end

return obj

end

end



local BaseUrl = "rbxassetid://"



Players = game:GetService("Players")

Debris = game:GetService("Debris")

RunService = game:GetService("RunService")



DamageValues = {

BaseDamage = 1,

SlashDamage = 1,

LungeDamage = 1

}



--For R15 avatars

Animations = {

R15Slash = 3014161653,

R15Lunge = 3109105976

}



Damage = DamageValues.BaseDamage



Sounds = {

Slash = Handle:WaitForChild("SwordSlash"),

Lunge = Handle:WaitForChild("SwordLunge"),

Unsheath = Handle:WaitForChild("Unsheath")

}



ToolEquipped = false



--For Omega Rainbow Katana thumbnail to display a lot of particles.

for i, v in pairs(Handle:GetChildren()) do

if v:IsA("ParticleEmitter") then

v.Rate = 20

end

end



Tool.Enabled = true



function IsTeamMate(Player1, Player2)

return (Player1 and Player2 and not Player1.Neutral and not Player2.Neutral and Player1.TeamColor == Player2.TeamColor)

end



function tagHumanoid(humanoid, player)

local creator_tag = Instance.new("ObjectValue")

creator_tag.Value = player

creator_tag.Name = "creator"

creator_tag.Parent = humanoid

end





function UntagHumanoid(humanoid)

for i, v in pairs(humanoid:GetChildren()) do

if v:IsA("ObjectValue") and v.Name == "creator" then

v:Destroy()

end

end

end



function Blow(Hit)

if not Hit or not Hit.Parent or not CheckIfAlive() or not ToolEquipped then

return

end

local RightArm = Character:FindFirstChild("Right Arm") or Character:FindFirstChild("RightHand")

if not RightArm then

return

end

local RightGrip = RightArm:FindFirstChild("RightGrip")

if not RightGrip or (RightGrip.Part0 ~= Handle and RightGrip.Part1 ~= Handle) then

return

end

local character = Hit.Parent

if character == Character then

return

end

local humanoid = character:FindFirstChildOfClass("Humanoid")

if not humanoid or humanoid.Health == 0 then

return

end

local player = Players:GetPlayerFromCharacter(character)

if player and (player == Player or IsTeamMate(Player, player)) then

return

end

UntagHumanoid(humanoid)

tagHumanoid(humanoid, Player)

local Tick = RunService.Stepped:wait()

if (Tick - LastAttack < 0.2) then

humanoid:TakeDamage(Damage)

end

end



function Attack()

Damage = DamageValues.SlashDamage

Sounds.Slash:Play()

Player:WaitForChild("XP").Value = Player:WaitForChild("XP").Value+1



if Humanoid then

if Humanoid.RigType == Enum.HumanoidRigType.R6 then

local Anim = Instance.new("StringValue")

Anim.Name = "toolanim"

Anim.Value = "Slash"

Anim.Parent = Tool

elseif Humanoid.RigType == Enum.HumanoidRigType.R15 then

local Anim = Tool:FindFirstChild("R15Slash")

if Anim then

local Track = Humanoid:LoadAnimation(Anim)

Track:Play(0)

end

end

end

end



function Lunge()

Damage = DamageValues.LungeDamage

Sounds.Lunge:Play()

Player:WaitForChild("XP").Value = Player:WaitForChild("XP").Value+1



if Humanoid then

if Humanoid.RigType == Enum.HumanoidRigType.R6 then

local Anim = Instance.new("StringValue")

Anim.Name = "toolanim"

Anim.Value = "Lunge"

Anim.Parent = Tool

elseif Humanoid.RigType == Enum.HumanoidRigType.R15 then

local Anim = Tool:FindFirstChild("R15Lunge")

if Anim then

local Track = Humanoid:LoadAnimation(Anim)

Track:Play(0)

end

end

end



--[[if CheckIfAlive() then

local Force = Instance.new("BodyVelocity")

Force.velocity = Vector3.new(0, 10, 0)

Force.maxForce = Vector3.new(0, 4000, 0)

Debris:AddItem(Force, 0.4)

Force.Parent = Torso

end]]





Damage = DamageValues.SlashDamage

end



Tool.Enabled = true

LastAttack = 0



function Activated()

if not Tool.Enabled or not ToolEquipped or not CheckIfAlive() then

return

end

Tool.Enabled = false

local Tick = RunService.Stepped:wait()

if (Tick - LastAttack < 0.2) then

Lunge()

else

Attack()

end

LastAttack = Tick

wait(1.4)-- How long until you can strike again

Damage = DamageValues.BaseDamage

local SlashAnim = (Tool:FindFirstChild("R15Slash") or Create("Animation"){

Name = "R15Slash",

AnimationId = BaseUrl .. Animations.R15Slash,

Parent = Tool

})



local LungeAnim = (Tool:FindFirstChild("R15Lunge") or Create("Animation"){

Name = "R15Lunge",

AnimationId = BaseUrl .. Animations.R15Lunge,

Parent = Tool

})

Tool.Enabled = true

end



function CheckIfAlive()

return (((Player and Player.Parent and Character and Character.Parent and Humanoid and Humanoid.Parent and Humanoid.Health > 0 and Torso and Torso.Parent) and true) or false)

end



function Equipped()

Character = Tool.Parent

Player = Players:GetPlayerFromCharacter(Character)

Humanoid = Character:FindFirstChildOfClass("Humanoid")

Torso = Character:FindFirstChild("Torso") or Character:FindFirstChild("HumanoidRootPart")

if not CheckIfAlive() then

return

end

ToolEquipped = true

Sounds.Unsheath:Play()

end



function Unequipped()

ToolEquipped = false

end





Tool.Activated:Connect(Activated)

Tool.Equipped:Connect(Equipped)

Tool.Unequipped:Connect(Unequipped)



Connection = Handle.Touched:Connect(Blow)
0
Can you put print(Tick - LastAttack < 0.2) on line 340 and say what it returns? Recruitsoldier 40 — 5y
0
Correction: print(Tick - LastAttack) Recruitsoldier 40 — 5y
0
I've clicked the left click few times this was the income: 4.4541668891907 1.4833335876465 1.5666666030884 1.4666666984558 1.5833330154419 1.466667175293 1.5666666030884 (x2) MaciBoss1950 16 — 5y
0
That should be your issue then, since Lunge() only plays when that value is less than 0.2. Try making it a bigger value and see if that works. Recruitsoldier 40 — 5y
0
How much bigger, I put it to 0.5 still the same MaciBoss1950 16 — 5y

Answer this question