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

How do I change the slash animation on the classic sword made by roblox? [closed]

Asked by 3 years ago

Please encode Lua code in the Lua block code tag (look for the Lua icon in the editor).

Here is the script: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 = 5, SlashDamage = 10, LungeDamage = 30 }

--For R15 avatars Animations = { SwordAnimation = 7322310155, R15Lunge = 522638767 }

Damage = DamageValues.BaseDamage

Grips = { Up = CFrame.new(0, 0, -1.70000005, 0, 0, 1, 1, 0, 0, 0, 1, 0), Out = CFrame.new(0, 0, -1.70000005, 0, 1, 0, 1, -0, 0, 0, 0, -1) }

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.Grip = Grips.Up 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.Name = "creator" Creator_Tag.Value = player Debris:AddItem(Creator_Tag, 2) 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) humanoid:TakeDamage(Damage) end

function Attack() Damage = DamageValues.SlashDamage Sounds.Slash:Play()

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("SwordAnimation")
        if Anim then
            local Track = Humanoid:LoadAnimation(Anim)
            Track:Play(0)
        end
    end
end 

end

function Lunge() Damage = DamageValues.LungeDamage

Sounds.Lunge:Play()

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
]]

wait(0.2)
Tool.Grip = Grips.Out
wait(0.6)
Tool.Grip = Grips.Up

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(0.5) Damage = DamageValues.BaseDamage local SlashAnim = (Tool:FindFirstChild("SwordAnimation") or Create("Animation"){ Name = "SwordAnimation", AnimationId = BaseUrl .. Animations.AnotherSwordAnimation, 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() Tool.Grip = Grips.Up ToolEquipped = false end

Tool.Activated:Connect(Activated) Tool.Equipped:Connect(Equipped) Tool.Unequipped:Connect(Unequipped)

Connection = Handle.Touched:Connect(Blow)

0
Im super sorry if the script is so long I copied it .And if anyone has a recommendation to an alternative sword script can you put it in the comments Nateynate20 -2 — 3y
0
This is against the rules of the site. You cannot expect us to fix code from free models etc. See help: https://scriptinghelpers.org/help/how-post-good-questions-answers JesseSong 3916 — 3y

Closed as off-topic by JesseSong

This question has been closed by our community as being off-topic from ROBLOX Lua Scripting.

Why was this question closed?