[still requires your help] I'm experiencing problems with porting HowToRoblox's Armor System to R6

welcome back again, in case you aren’t familiar with me and the armor system I’m having problem with, there is armor system for R15 Rig made by HowToRoblox, however, it doesn’t function properly with R6 Rig… so I need you guy’s help to continue with fixing armor system by HowToRoblox to make it function properly even with R6 rig, so I will give you guys screenshots and HowToRoblox’s Armor System Video, and my rbxl file of armor testing game… this problem has been issue in my game development for weeks, and I will require you guy’s help to finally finish it and move on. so here is the contents of it.

screenshot 1. the talisman type of armors that has replaced the hand type of armors and feet type of armor in the test game doesn’t welded with humanoid’s Torso, I do not know how to solve this out…

screenshot 2. this armor system could be amazing with armor description, but I still don’t know how to implement that system…

screenshot 3. supposedly, when the armor has been added into player model successfully, it will have extra one weldconstraint inside it’s PRIMARY PART. but for Torso Armor, things aren’t working as it’s supposed to be, and I don’t know why this script doesn’t create another weldconstraint inside it’s PRIMARY PART… :disappointed:

HowToRoblox’s video about Armor System:
this video right here

my rbxl file of that armor testing game which used HowToRoblox’s Armor System and kinda ported to R6, I recommend you to download it for see the problems by yourself and help me improve it. (need to publish and enable http requests in that game first):
howtoroblox’s armor system R6 ported.rbxl (182.2 KB)

here is also results of attempting to fix that armor system script by myself with help of ChatGPT, but thing didn’t even get solved at all… :frowning: (script code shown below belongs to ServerScriptService > ArmorSystem > “EquipArmor”) :

local armorpieces = game:GetService("ReplicatedStorage"):WaitForChild("ArmorPieces")

function equipFunc(plr:Player, armortype:string, armor:string, plrSpawned:boolean)
    local char = plr.Character or plr.CharacterAdded:Wait()

    if char and char:FindFirstChild("Humanoid") and char.Humanoid.Health > 0 then
        local inv = plr:WaitForChild("ArmorInventory")
        local equipped = plr:WaitForChild("ArmorEquipped")
        local currentArmor = equipped:FindFirstChild(armortype) and equipped[armortype].Value

        if armorpieces:FindFirstChild(armortype) and armorpieces[armortype]:FindFirstChild(armor) then
            if currentArmor and not plrSpawned then
                local healthGain = currentArmor.Stats.Health.Value
                local speedGain = currentArmor.Stats.Speed.Value
                char.Humanoid.MaxHealth = char.Humanoid.MaxHealth - healthGain
                char.Humanoid.WalkSpeed = char.Humanoid.WalkSpeed - speedGain

                for _, armorpiece in pairs(armorpieces:GetDescendants()) do
                    if armorpiece.Name == currentArmor.Name and armorpiece.Parent.Parent == armorpieces then
                        armorpiece:Clone().Parent = inv
                        break
                    end
                end

                currentArmor:Destroy()
            end

            local newarmor = armorpieces[armortype][armor]:Clone()

            for _, pieces in pairs(newarmor:GetChildren()) do
                if pieces:IsA("Model") then
                    if char:FindFirstChild(pieces.Name) then
                        local pivotCFrame = char[pieces.Name].CFrame
                        pieces:PivotTo(pivotCFrame)
                        
                        local wc = Instance.new("WeldConstraint")
                        wc.Part0 = char[pieces.Name]
                        wc.Part1 = pieces.PrimaryPart
                        wc.Parent = pieces.PrimaryPart
                    elseif armortype == "Torso" then
                        pieces:PivotTo(char.Torso.CFrame + Vector3.new(0, 2, 0))
                        
                        local wc = Instance.new("WeldConstraint")
                        wc.Part0 = char.Torso
                        wc.Part1 = pieces.PrimaryPart
                        wc.Parent = pieces.PrimaryPart
                    end
                end
            end

            newarmor.Parent = char
            equipped[armortype].Value = newarmor

            if inv:FindFirstChild(armor) then
                inv[armor]:Destroy()
            end

            local newHealthGain = newarmor.Stats.Health.Value
            local newSpeedGain = newarmor.Stats.Speed.Value
            char.Humanoid.MaxHealth = char.Humanoid.MaxHealth + newHealthGain
            char.Humanoid.WalkSpeed = char.Humanoid.WalkSpeed + newSpeedGain

            if char.Humanoid.Health > char.Humanoid.MaxHealth then
                char.Humanoid.Health = char.Humanoid.MaxHealth
            end
        end
    end
end

return equipFunc

thank you so much for giving me help for current problem I’m having right now, tysm. -mari Shiel

First of all, I’d strongly recommend you to create your own armor system. It shouldn’t be pretty hard to do, as all you’ll be doing is cloning armor parts and welding it to character.

Second, don’t use ChatGPT for scripting. It usually doesn’t work and is not really reliable.