Advertisement
Aquarius_Raverus

Rank Tags (OOP)

Sep 7th, 2020
1,336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.26 KB | None | 0 0
  1. -- Module
  2.  
  3. -- by senko
  4.  
  5. local m = {}
  6. m.__index = m
  7.  
  8. function m.Init(plr, array)
  9.     local newRank = {}
  10.     setmetatable(newRank, m)
  11.    
  12.     local rankName = array['Rank']
  13.     local Color = array['Color']
  14.    
  15.     local Clone = script:WaitForChild("BillboardGui"):Clone()
  16.    
  17.     Clone.Name = plr.Name.."'s Rank Tag"
  18.     Clone.Parent = plr.Character.Head
  19.    
  20.     Clone.TextLabel.Text = tostring(rankName)
  21.     Clone.TextLabel.TextColor3 = Color
  22.    
  23.     --// setting vals
  24.     newRank.Player = plr.UserId
  25.     newRank.RankTag = Clone
  26.    
  27.     return newRank
  28. end
  29.  
  30. function m:Update(plr, array)
  31.    
  32.     local Rank = array["Rank"]
  33.     local Color = array["Color"]
  34.    
  35.     if Rank and Color then
  36.        
  37.         if Rank == "No Change" then
  38.             self.RankTag.TextLabel.TextColor3 = Color
  39.         else
  40.             self.RankTag.TextLabel.Text = tostring(Rank)
  41.             self.RankTag.TextLabel.TextColor3 = Color
  42.         end    
  43.        
  44.         warn("Successfully updated rank tag for ".. plr.Name.. " || INFO: RankName =  ".. tostring(Rank).. ' | RankColor = '.. tostring(Color))
  45.     end
  46. end
  47.  
  48. function m:Delete()
  49.     self.RankTag:Destroy()
  50. end
  51.  
  52.  
  53.  
  54. return m
  55.  
  56. _____________________________________________________
  57.  
  58. -- Main Script
  59.  
  60. local s = game:GetService("ReplicatedStorage")
  61. local m = require(s:WaitForChild("OverheadRank"))
  62.  
  63. local p = game:GetService("Players")
  64.  
  65. local playerTags = {};
  66.  
  67. p.PlayerAdded:Connect(function(plr)
  68.    
  69.     plr.Chatted:Connect(function(msg)
  70.         msg = msg:lower()
  71.        
  72.         -- !changeColor
  73.        
  74.         if msg == "!changecolor" then
  75.             local randomColor = Color3.fromRGB(math.random(1,255), math.random(1,255), math.random(1,255))
  76.             local rankTag = playerTags[plr.UserId]
  77.            
  78.             if not rankTag then
  79.                 warn("Your rank tag hasn't been created yet.")
  80.                 return;
  81.             end
  82.            
  83.             rankTag:Update(plr, {Rank = "No Change", Color = randomColor})
  84.            
  85.         end
  86.        
  87.         if msg == "!destroy" then
  88.             local rankTag = playerTags[plr.UserId]
  89.             if not rankTag then
  90.                 warn("Your rank tag hasn't been created yet.")
  91.                 return;
  92.             end
  93.            
  94.             rankTag:Delete()
  95.             rankTag = nil
  96.         end
  97.     end)
  98.    
  99.     plr.CharacterAdded:Connect(function(char)
  100.    
  101.         local rankTag = m.Init(plr, {Rank = "Owner", Color = Color3.fromRGB(34,139,34)} )
  102.        
  103.         playerTags[plr.UserId] = rankTag
  104.        
  105.         wait(5)
  106.        
  107.         rankTag:Update(plr, {Rank = "Developer", Color = Color3.fromRGB(139,0,0)})
  108.     end)
  109. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement