Advertisement
HowToRoblox

EquipArmor

Feb 25th, 2023 (edited)
1,286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.94 KB | None | 0 0
  1. local armorpieces = game:GetService("ReplicatedStorage"):WaitForChild("ArmorPieces")
  2.  
  3.  
  4. function equipFunc(plr:Player, armortype:string, armor:string, plrSpawned:boolean) --Equipping armor onto a player
  5.    
  6.     local char = plr.Character or plr.CharacterAdded:Wait()
  7.    
  8.     if char and char:FindFirstChild("Humanoid") and char.Humanoid.Health > 0 then
  9.         local inv = plr:WaitForChild("ArmorInventory")
  10.        
  11.         if armorpieces[armortype]:FindFirstChild(armor) then
  12.            
  13.             local equipped = plr:WaitForChild("ArmorEquipped")
  14.             local currentArmor = equipped[armortype].Value
  15.            
  16.             if currentArmor and not plrSpawned then
  17.                 local healthGain = currentArmor.Stats.Health.Value
  18.                 local speedGain = currentArmor.Stats.Speed.Value
  19.                 char.Humanoid.MaxHealth -= healthGain
  20.                 char.Humanoid.WalkSpeed -= speedGain
  21.                
  22.                 for _, armorpiece in pairs(armorpieces:GetDescendants()) do
  23.                     if armorpiece.Name == currentArmor.Name and armorpiece.Parent.Parent == armorpieces then
  24.                         armorpiece:Clone().Parent = inv
  25.                         break
  26.                     end
  27.                 end
  28.                
  29.                 currentArmor:Destroy()
  30.             end
  31.            
  32.             local newarmor = armorpieces[armortype][armor]:Clone()
  33.            
  34.             for _, pieces in pairs(newarmor:GetChildren()) do
  35.                 if pieces:IsA("Model") then
  36.                    
  37.                     pieces:PivotTo(char[pieces.Name].CFrame)
  38.                    
  39.                     local wc = Instance.new("WeldConstraint")
  40.                     wc.Part0 = char[pieces.Name]
  41.                     wc.Part1 = pieces.PrimaryPart
  42.                     wc.Parent = pieces.PrimaryPart
  43.                 end
  44.             end
  45.             newarmor.Parent = char
  46.            
  47.             equipped[armortype].Value = newarmor
  48.             if inv:FindFirstChild(armor) then
  49.                 inv[armor]:Destroy()
  50.             end
  51.            
  52.             local newHealthGain = newarmor.Stats.Health.Value
  53.             local newSpeedGain = newarmor.Stats.Speed.Value
  54.             char.Humanoid.MaxHealth += newHealthGain
  55.             char.Humanoid.WalkSpeed += newSpeedGain
  56.            
  57.             if char.Humanoid.Health > char.Humanoid.MaxHealth then
  58.                 char.Humanoid.Health = char.Humanoid.MaxHealth
  59.             end
  60.         end
  61.     end
  62. end
  63.  
  64. return equipFunc
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement