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

attempt to index nil with 'Damage'?

Asked by 1 year ago

Hello, I made a script and it does not work. Gives an error message Players.OsipStar4ik.Backpack.StartPickaxe.ToolScript1:24: attempt to index nil with 'Damage' I don't know how to fix it. I hope you help! Thanks

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local collect = game:GetService("CollectionService")
local Players = game:GetService("Players")

local tool = script.Parent
local Remotes = ReplicatedStorage:FindFirstChild("Remotes")

local player = Players.LocalPlayer
local character = player.Character
local humanoid = character:FindFirstChild("Humanoid")
local PickaxeSwingAnim = Instance.new("Animation")
PickaxeSwingAnim.AnimationId = "rbxassetid://11458130668"
local animationTrack1 = humanoid:LoadAnimation(PickaxeSwingAnim)

local ToolConfig = require(ReplicatedStorage:FindFirstChild("Config"):FindFirstChild("ToolConfig"))
local OreConfig = require(ReplicatedStorage:FindFirstChild("Config"):FindFirstChild("OreConfig"))


local inventory = player:FindFirstChild("inventory")
local pickaxeName2 = tool.Name
print("Found", player.Name, "Pickaxe Equipped Name!")
local pickaxe = player.Character:FindFirstChild(pickaxeName2)
print (pickaxeName2)
local pickaxeDmg = ToolConfig.pickaxeName2.Damage
local Ore = player.leaderstats.Ore

tool.Activated:Connect(function(player: Player)
    if tool.Enabled == true then
        print ("1")
        for tool, toolTable in pairs(ToolConfig) do
            print("2")
            if tool == pickaxeName2 then
                print("3")
                local Lezvie = script.Parent.Handle.Lezvie
                Remotes.ToolActivated:FireServer()
                animationTrack1:Play()
                tool.Enabled = false
                humanoid.WalkSpeed = 0
                wait(0.75)
                tool.Enabled = true
                humanoid.WalkSpeed = 16
                Lezvie.Touched:Connect(function(hit)
                    print("4")
                    if collect:HasTag(hit, "RockHitbox") then
                        print("5")
                        Remotes.OreDamaged:FireServer()

                    end
                end)        
            end
        end
    end
end)


1 answer

Log in to vote
0
Answered by 1 year ago

You're indexing it incorrectly. Since you're doing ToolConfig.pickaxeName2.Damage, it's trying to find an index of pickaxeName2, instead of the tool's name.

You need to use square brackets to index the variable.

Change line 24:

local pickaxeDmg = ToolConfig[pickaxeName2].Damage
Ad

Answer this question