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

How to make my sword's Damage linked by My Stats Value ?

Asked by 4 years ago

How to make my sword's Damage linked by My Stats Value (Stats In player.Localplayer:WaitForChild("Stats"):WaitForChild("Sword").Value)

This Sword Scripts

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")
local sword = Players.LocalPlayer:WaitForChild("Stats"):WaitForChild("Sword")

DamageValues = {
    BaseDamage = 1,
    SlashDamage = 1 * 2,
    LungeDamage = 1 * 3
}

--For R15 avatars
Animations = {
    R15Slash = 522635514,
    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)
    print(sword.Value)
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("R15Slash")
            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("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()
    Tool.Grip = Grips.Up
    ToolEquipped = false
end

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

Connection = Handle.Touched:Connect(Blow)
2
nice free model User#24403 69 — 4y
0
Next time write the script yourself and you might know? Gojinhan 353 — 4y

Answer this question