#Tool.Equipped not working

1 messages · Page 1 of 1 (latest)

indigo crystal
#
game.Players.PlayerAdded:Connect(function(plr : Player)
    LoadPlayerData(plr)
    AssignRandomPod(plr)
    
    Events.JoinGame:FireClient(plr, GetPod(plr).Name)

    local backpack = plr:WaitForChild("Backpack")
    UpdateAndGiveTool(plr)
    
    for _, pod in PodsFolder:GetChildren() do
        if pod:IsA("BasePart") then
            local ProximityPrompt = Instance.new("ProximityPrompt")
            ProximityPrompt.ActionText = "Place"
            ProximityPrompt.RequiresLineOfSight = false
            ProximityPrompt.Enabled = false
            ProximityPrompt.Parent = pod
        end
    end
    
    local function ConnectToolEvents(tool)
        if tool:IsA("Tool") then
            tool.Equipped:Connect(function()
                print("Equipped")
                Events.EquipTool:FireClient(plr, true, GetPod(plr).Name, tool)
            end)

            tool.Unequipped:Connect(function()
                print("Unequipped")
                Events.EquipTool:FireClient(plr, false, GetPod(plr).Name, tool)
            end)
        end
    end
    
    for _, tool in backpack:GetChildren() do
        ConnectToolEvents(tool)
    end
    
    backpack.ChildAdded:Connect(ConnectToolEvents)
end)

Its not printing equipped or unequipped.

wanton wasp
#

papi

#

ion know try doing the events on the client side so ik im not tripping

#

try to print tool in the for loop backpack children

indigo crystal
#

I already tried that. Maybe equipped doesnt work on serverside idk

wanton wasp
#

it supposed to work

wanton wasp
indigo crystal
#
function UpdateAndGiveTool(player : Player)
    local playerColors = GetPlayerColors(player)
    local character = player.Character
    
    local existingTools = {}
    for _, tool in player.Backpack:GetChildren() do
        if tool:IsA("Tool") then
            existingTools[tool.Name] = (existingTools[tool.Name] or 0) + 1
        end
    end
    if character then
        for _, tool in character:GetChildren() do
            if tool:IsA("Tool") then
                existingTools[tool.Name] = (existingTools[tool.Name] or 0) + 1
            end
        end
    end
    
    for colorName, amount in playerColors do
        local toolTemplate = ToolsFolder:FindFirstChild(colorName)
        if toolTemplate then
            local currentAmount = existingTools[colorName] or 0
            local toGive = amount - currentAmount
            for i = 1, toGive do
                local toolClone = toolTemplate:Clone()
                toolClone.Parent = player.Backpack
            end
        end
    end
end
wanton wasp
#

OH WAIT

wanton wasp
indigo crystal
wanton wasp
#

just try it

#

it's probably bc the character isn't loaded yet

#

and equip waits until character exist so it can detect if ur tool is inside the character (also known as equipping the item)

#

so basically if u do that before the character load, the equip points to no character meaning it won't just work bc it doesn't know the character

indigo crystal
#

So player.CharacterAdded function inside playeradded? Or seperate

wanton wasp
#

wait nvm im wrong

#

let me see

#

it's smth about roblox give me a sec

#

nvm just try what I said and hope it'll work

#

if ur me ill just recode some of the whole thing

indigo crystal
# wanton wasp if ur me ill just recode some of the whole thing
game.Players.PlayerAdded:Connect(function(plr : Player)
    LoadPlayerData(plr)
    AssignRandomPod(plr)
    
    Events.JoinGame:FireClient(plr, GetPod(plr).Name)

    local backpack = plr:WaitForChild("Backpack")
    UpdateAndGiveTool(plr)
    
    for _, pod in PodsFolder:GetChildren() do
        if pod:IsA("BasePart") then
            local ProximityPrompt = Instance.new("ProximityPrompt")
            ProximityPrompt.ActionText = "Place"
            ProximityPrompt.RequiresLineOfSight = false
            ProximityPrompt.Enabled = false
            ProximityPrompt.Parent = pod
        end
    end
    
    plr.CharacterAdded:Connect(function(char)
        local function ConnectToolEvents(tool)
            if tool:IsA("Tool") then
                tool.Equipped:Connect(function()
                    print("Equipped")
                    Events.EquipTool:FireClient(plr, true, GetPod(plr).Name, tool)
                end)

                tool.Unequipped:Connect(function()
                    print("Unequipped")
                    Events.EquipTool:FireClient(plr, false, GetPod(plr).Name, tool)
                end)
            end
        end

        for _, tool in backpack:GetChildren() do
            print(tool.Name)
            ConnectToolEvents(tool)
        end

        backpack.ChildAdded:Connect(function(child)
            print(child.Name)
            ConnectToolEvents(child)
        end)
    end)
end)

idk why it wouldnt work

#

Nvm I fixed it ty for trying to help tho

wanton wasp
#

@indigo crystal what's the problem u fixed

#

||pls don't be smth that stinks||

indigo crystal
#

I just iterate over the char, backpack, check for child added to char, backpack and connect the function

wanton wasp
#

😔