I have stopped working on this and do not plan on continue supporting this.
Current Version: 1.3.3
Last Update: 8/29/2020
I’m unsure if I am going to continue this, as it was mainly an experiment on how to make plugins. On a seconds thought, I probably shouldn’t have released this. Was mainly an experiment for plugin development. For anyone interested, here’s the source:
source
warning the source may hurt your brain proceed with caution
get ready
local widgetInfo = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float,true,true,400,50,200,100)
local widget = plugin:CreateDockWidgetPluginGui("Gui Elements", widgetInfo)
widget.Title = "Gui Elements"
local defaults = {"_buttonMove","_buttonSounds","_labelHover","_labelInfo"}
plugin:Activate(false)
local toolbar = plugin:CreateToolbar("Gui Elements")
local toggle = toolbar:CreateButton("Gui Elements", "Add Gui Elements!", "")
-- ======== CREATE UI ======== --
local mainFrame = Instance.new("Frame",widget)
mainFrame.Size = UDim2.new(1,0,1,0)
mainFrame.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.MainBackground,Enum.StudioStyleGuideModifier.Default)
local textLabel = Instance.new("TextLabel",mainFrame)
textLabel.Text = "Functions"
textLabel.AnchorPoint = Vector2.new(1,0)
textLabel.Position = UDim2.new(1,0,0,0)
textLabel.Size = UDim2.new(.3,0,.125,0)
textLabel.TextScaled = true
textLabel.Font = Enum.Font.SourceSansBold
textLabel.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Tab,Enum.StudioStyleGuideModifier.Default)
textLabel.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.MainText,Enum.StudioStyleGuideModifier.Default)
textLabel.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
local functionsBar = Instance.new("Frame",widget)
functionsBar.Size = UDim2.new(.3,0,.875,0)
functionsBar.AnchorPoint = Vector2.new(1,0)
functionsBar.LayoutOrder = 1
functionsBar.Position = UDim2.new(1,0,0.125,0)
functionsBar.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.TabBar,Enum.StudioStyleGuideModifier.Default)
functionsBar.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
local functionsFrame = Instance.new("ScrollingFrame",functionsBar)
functionsFrame.Size = UDim2.new(1,0,.8,0)
functionsFrame.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.ScrollBarBackground,Enum.StudioStyleGuideModifier.Default)
functionsFrame.ScrollBarImageColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.ScrollBar,Enum.StudioStyleGuideModifier.Default)
functionsFrame.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
functionsFrame.ScrollBarThickness = 8
functionsFrame.CanvasSize = UDim2.new(0,0,4,0)
local plusButton = Instance.new("TextButton",functionsBar)
plusButton.Text = "+"
plusButton.TextScaled = true
plusButton.Font = Enum.Font.SourceSansBold
plusButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.TitlebarText,Enum.StudioStyleGuideModifier.Default)
plusButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Hover)
plusButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
plusButton.Size = UDim2.new(.16,0,.16,0)
plusButton.AnchorPoint = Vector2.new(.5,.5)
plusButton.Position = UDim2.new(.35,0,.9,0)
local aspectRatio = Instance.new("UIAspectRatioConstraint",plusButton)
aspectRatio.AspectType = Enum.AspectType.ScaleWithParentSize
aspectRatio.DominantAxis = Enum.DominantAxis.Height
local minusButton = Instance.new("TextButton",functionsBar)
minusButton.Text = "-"
minusButton.TextScaled = true
minusButton.Font = Enum.Font.SourceSansBold
minusButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.TitlebarText,Enum.StudioStyleGuideModifier.Default)
minusButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Hover)
minusButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
minusButton.Size = UDim2.new(.16,0,.16,0)
minusButton.AnchorPoint = Vector2.new(.5,.5)
minusButton.Position = UDim2.new(.65,0,.9,0)
local aspectRatio = Instance.new("UIAspectRatioConstraint",minusButton)
aspectRatio.AspectType = Enum.AspectType.ScaleWithParentSize
aspectRatio.DominantAxis = Enum.DominantAxis.Height
local confirmBox = Instance.new("Frame",mainFrame)
confirmBox.Size = UDim2.new(.175,0,.3,0)
confirmBox.Visible = false
confirmBox.AnchorPoint = Vector2.new(1,1)
confirmBox.Position = UDim2.new(.1,0,.1,0)
confirmBox.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
confirmBox.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.CurrentMarker,Enum.StudioStyleGuideModifier.Default)
confirmBox.ZIndex = 2
local confirmText = Instance.new("TextLabel",confirmBox)
confirmText.Text = "Are you sure?"
confirmText.TextScaled = true
confirmText.BackgroundTransparency = 1
confirmText.ZIndex = 3
confirmText.Font = Enum.Font.SourceSansBold
confirmText.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
confirmText.Size = UDim2.new(1,0,.25,0)
local confirmYes = Instance.new("TextButton",confirmBox)
confirmYes.AnchorPoint = Vector2.new(.5,.5)
confirmYes.Position = UDim2.new(.33,0,.6,0)
confirmYes.Size = UDim2.new(.25,0,.6,0)
confirmYes.Text = "Y"
confirmYes.ZIndex = 3
confirmYes.TextScaled = true
confirmYes.Font = Enum.Font.SourceSansBold
confirmYes.BackgroundColor3 = Color3.fromRGB(0,150,0)
confirmYes.TextColor3 = Color3.fromRGB(0,210,0)
confirmYes.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
local confirmNo = Instance.new("TextButton",confirmBox)
confirmNo.AnchorPoint = Vector2.new(.5,.5)
confirmNo.Position = UDim2.new(.66,0,.6,0)
confirmNo.Size = UDim2.new(.25,0,.6,0)
confirmNo.Text = "X"
confirmNo.ZIndex = 3
confirmNo.TextScaled = true
confirmNo.Font = Enum.Font.SourceSansBold
confirmNo.BackgroundColor3 = Color3.fromRGB(150,0,0)
confirmNo.TextColor3 = Color3.fromRGB(210,0,0)
confirmNo.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
local textPopUp = Instance.new("Frame",mainFrame)
textPopUp.Size = UDim2.new(.3,0,.3,0)
textPopUp.Visible = false
textPopUp.AnchorPoint = Vector2.new(1,1)
textPopUp.Position = UDim2.new(.1,0,.1,0)
textPopUp.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
textPopUp.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.CurrentMarker,Enum.StudioStyleGuideModifier.Default)
textPopUp.ZIndex = 2
local textBox = Instance.new("TextBox",textPopUp)
textBox.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
textBox.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.InputFieldBackground,Enum.StudioStyleGuideModifier.Default)
textBox.Font = Enum.Font.SourceSansBold
textBox.TextScaled = true
textBox.Text = ""
textBox.ZIndex = 3
textBox.Size = UDim2.new(1,-8,.5,-8)
textBox.AnchorPoint = Vector2.new(.5,.5)
textBox.Position = UDim2.new(.5,0,.25,0)
textBox.PlaceholderText = "Function name"
textBox.PlaceholderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
textBox.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.MainText,Enum.StudioStyleGuideModifier.Default)
local textClose = Instance.new("TextButton",textPopUp)
textClose.AnchorPoint = Vector2.new(1,1)
textClose.Text = "X"
textClose.TextScaled = true
textClose.Size = UDim2.new(.4,0,0.4,0)
textClose.Font = Enum.Font.SourceSansBold
textClose.Position = UDim2.new(1,0,1,0)
textClose.TextColor3 = Color3.fromRGB(125,0,0)
textClose.BackgroundColor3 = Color3.fromRGB(190,0,0)
textClose.ZIndex = 3
textClose.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
local aspectRatio = Instance.new("UIAspectRatioConstraint",textClose)
aspectRatio.AspectType = Enum.AspectType.ScaleWithParentSize
aspectRatio.DominantAxis = Enum.DominantAxis.Height
local textConfirm = Instance.new("TextButton",textPopUp)
textConfirm.Text = "Confirm"
textConfirm.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
textConfirm.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
textConfirm.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
textConfirm.AnchorPoint = Vector2.new(.5,.5)
textConfirm.Position = UDim2.new(.5,0,.75,0)
textConfirm.Size = UDim2.new(.5,0,.4,0)
textConfirm.Font = Enum.Font.SourceSansBold
textConfirm.ZIndex = 3
textConfirm.TextScaled = true
local textLabel = Instance.new("TextLabel",mainFrame)
textLabel.Text = "Current Tags"
textLabel.AnchorPoint = Vector2.new(1,0)
textLabel.Position = UDim2.new(.7,0,0,0)
textLabel.Size = UDim2.new(.3,0,.125,0)
textLabel.TextScaled = true
textLabel.Font = Enum.Font.SourceSansBold
textLabel.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Tab,Enum.StudioStyleGuideModifier.Default)
textLabel.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.MainText,Enum.StudioStyleGuideModifier.Default)
textLabel.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
local tagsBar = Instance.new("Frame",widget)
tagsBar.Size = UDim2.new(.3,0,.875,0)
tagsBar.AnchorPoint = Vector2.new(1,0)
tagsBar.LayoutOrder = 1
tagsBar.Position = UDim2.new(.7,0,0.125,0)
tagsBar.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.TabBar,Enum.StudioStyleGuideModifier.Default)
tagsBar.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
local tagsFrame = Instance.new("ScrollingFrame",tagsBar)
tagsFrame.Size = UDim2.new(1,0,.8,0)
tagsFrame.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.ScrollBarBackground,Enum.StudioStyleGuideModifier.Default)
tagsFrame.ScrollBarImageColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.ScrollBar,Enum.StudioStyleGuideModifier.Default)
tagsFrame.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
tagsFrame.ScrollBarThickness = 8
tagsFrame.CanvasSize = UDim2.new(0,0,4,0)
local listLayout = Instance.new("UIListLayout",tagsFrame)
local plusShowButton = Instance.new("TextButton",tagsBar)
plusShowButton.Text = "+"
plusShowButton.TextScaled = true
plusShowButton.Font = Enum.Font.SourceSansBold
plusShowButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.TitlebarText,Enum.StudioStyleGuideModifier.Default)
plusShowButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Hover)
plusShowButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
plusShowButton.Size = UDim2.new(.16,0,.16,0)
plusShowButton.AnchorPoint = Vector2.new(.5,.5)
plusShowButton.Position = UDim2.new(.35,0,.9,0)
local aspectRatio = Instance.new("UIAspectRatioConstraint",plusShowButton)
aspectRatio.AspectType = Enum.AspectType.ScaleWithParentSize
aspectRatio.DominantAxis = Enum.DominantAxis.Height
local minusShowButton = Instance.new("TextButton",tagsBar)
minusShowButton.Text = "-"
minusShowButton.TextScaled = true
minusShowButton.Font = Enum.Font.SourceSansBold
minusShowButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.TitlebarText,Enum.StudioStyleGuideModifier.Default)
minusShowButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Hover)
minusShowButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
minusShowButton.Size = UDim2.new(.16,0,.16,0)
minusShowButton.AnchorPoint = Vector2.new(.5,.5)
minusShowButton.Position = UDim2.new(.65,0,.9,0)
local aspectRatio = Instance.new("UIAspectRatioConstraint",minusShowButton)
aspectRatio.AspectType = Enum.AspectType.ScaleWithParentSize
aspectRatio.DominantAxis = Enum.DominantAxis.Height
local editProperties = Instance.new("TextButton",mainFrame)
editProperties.TextScaled = true
editProperties.Font = Enum.Font.SourceSansBold
editProperties.Text = "Custom properties"
editProperties.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
editProperties.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
editProperties.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Disabled)
editProperties.Size = UDim2.new(.15,0,.2,0)
editProperties.AnchorPoint = Vector2.new(1,0)
editProperties.Position = UDim2.new(.3625,0,.7)
local defaultProperties = Instance.new("TextButton",mainFrame)
defaultProperties.TextScaled = true
defaultProperties.Font = Enum.Font.SourceSansBold
defaultProperties.Text = "Default properties"
defaultProperties.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
defaultProperties.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
defaultProperties.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Disabled)
defaultProperties.Size = UDim2.new(.15,0,.2,0)
defaultProperties.AnchorPoint = Vector2.new(1,0)
defaultProperties.Position = UDim2.new(.1875,0,.7)
local getLatestModel = Instance.new("TextButton",mainFrame)
getLatestModel.TextScaled = true
getLatestModel.Font = Enum.Font.SourceSansBold
getLatestModel.Text = "Get latest model"
getLatestModel.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
getLatestModel.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
getLatestModel.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Disabled)
getLatestModel.Size = UDim2.new(.15,0,.2,0)
getLatestModel.AnchorPoint = Vector2.new(1,0)
getLatestModel.Position = UDim2.new(.1875,0,.425)
local selectedPart = Instance.new("TextLabel",mainFrame)
selectedPart.TextScaled = true
selectedPart.Font = Enum.Font.SourceSansBold
selectedPart.Text = "Selected: 0 Parts - "
selectedPart.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
selectedPart.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
selectedPart.Size = UDim2.new(.35,0,.125,0)
selectedPart.Position = UDim2.new(.025,0,.1,0)
selectedPart.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Disabled)
-- ===== FUNCTIONS ===== --
local selection = game:GetService("Selection")
local minusButtonDeb = false
local plusButtonDeb = false
local highlighted
local mouse = plugin:GetMouse()
local model
local selectedButton
local selectedTag
local selectdeb = false
local changeHistoryService = game:GetService("ChangeHistoryService")
local function selectFunction(guiButton)
local function buttonClicked()
if selectdeb == false then
selectdeb = true
if guiButton == selectedButton then
selectedButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
selectedButton = nil
defaultProperties.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
defaultProperties.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Disabled)
wait()
else
if selectedButton ~= nil then
selectedButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
end
defaultProperties.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
defaultProperties.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
selectedButton = guiButton
selectedButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Pressed)
wait()
end
selectdeb = false
end
end
guiButton.MouseButton1Click:Connect(buttonClicked)
end
toggle.Click:Connect(function()
widget.Enabled = not widget.Enabled
if widget.Enabled == true then
for i,v in pairs(functionsFrame:GetChildren()) do
if not v:IsA("UIListLayout") then
v:Destroy()
end
end
local listLayout = Instance.new("UIListLayout",functionsFrame)
if game:GetService("StarterGui"):FindFirstChild("guiElements") then
for i,v in pairs(game:GetService("StarterGui"):FindFirstChild("guiElements"):FindFirstChild("GuiFunctions"):GetChildren()) do
local newButton = Instance.new("TextButton",functionsFrame)
selectFunction(newButton)
newButton.Size = UDim2.new(1,-8,.05,0)
newButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
newButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
newButton.Text = v.Name
newButton.Font = Enum.Font.SourceSansBold
if table.find(defaults,v.Name) then
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
else
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
end
newButton.TextStrokeColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Dark,Enum.StudioStyleGuideModifier.Default)
newButton.TextScaled = true
end
end
end
end)
function loadModel()
local localScript = Instance.new("LocalScript")
local functionsMod = Instance.new("ModuleScript",localScript)
local functionsFolder = Instance.new("Folder",localScript)
functionsFolder.Name = "GuiFunctions"
functionsMod.Name = "Functions"
localScript.Name = "guiElements"
model = functionsFolder
localScript.Source = "local functions = require(script:WaitForChild('Functions')) \nlocal collectionService = game:GetService('CollectionService') \n \nwait(1)\n \nfunction attachTagToGuiObject(tag,effect) \n assert(type(tag) == 'string') \n assert(type(effect) == 'function') \n local guiInstances = collectionService:GetTagged(tag) \n if #guiInstances ~= 0 then \n for _,part in ipairs(guiInstances) do \n if not functions.IsGuiObject(part) then \n error(string.format('%q is not a GuiObject',part:GetFullName())) \n end \n local success, errormessage = pcall(effect,part) \n if not success then \n error(string.format('An error occured when putting %q on %q: %q',tag,part:GetFullName(),errormessage)) \n end \n end \n else \n warn(string.format('No GuiObjects are using the tag %q',tag)) \n end \nend \n \nfor _,part in ipairs(script:WaitForChild('GuiFunctions'):GetChildren()) do \n local tag = part.Name \n local Function = require(part) \n attachTagToGuiObject(tag,Function) \nend"
localScript.Parent = workspace
functionsMod.Source = " -- adding any additional code into here will get lost when getting the latest version of the model. \n \nlocal clickName \nlocal Functions = {} \n \nFunctions.IsGuiObject = function(guiObject) \n local instanceType = typeof(guiObject) == 'Instance' \n local instanceObject = guiObject:IsA('GuiObject') \n local check = instanceType and instanceObject \n if not check then \n local parameterAsString = instanceType and guiObject.ClassName or typeof(guiObject); \n local message = string.format( \n 'Invalid parameter! Expected a GuiObject, got %q', \n parameterAsString ); \n error(message); \n end \n return guiObject \nend \n \nFunctions.IsGuiButton = function(guiObject) \n local instanceType = typeof(guiObject) == 'Instance' \n local instanceObject = guiObject:IsA('GuiButton') \n local check = instanceType and instanceObject \n if not check then \n local parameterAsString = instanceType and guiObject.ClassName or typeof(guiObject); \n local message = string.format( \n 'Invalid parameter! Expected a GuiObject, got %q', \n parameterAsString ); \n error(message); \n end \n return guiObject \nend \n \nreturn Functions "
local _buttonMove = Instance.new("ModuleScript",functionsFolder)
_buttonMove.Source = "local functions = require(script.Parent.Parent.Functions) \nlocal function _buttonMove(guiObject) \n local originalSizes = {} \n originalSizes[guiObject] = guiObject.Size \n functions.IsGuiButton(guiObject) \n \n -- ===== DEFAULT VALUES ===== -- \nlocal defaultValues = { \n ['Size'] = UDim2.new(.2,0,0,0); \n ['EasingStyle'] = Enum.EasingStyle.Sine; \n ['Time'] = .5; \n } \n local originalSize \n local function expandButton() \n local mod \n local values = {} \n if guiObject:FindFirstChild('_Config') then \n mod = require(guiObject:FindFirstChild('_Config')) \n for i,value in pairs(defaultValues) do \n if mod[i] then \n values[i] = mod[i] \n else \n values[i] = value \n end \n end \n else \n values = defaultValues \n end \n originalSize = originalSizes[guiObject] \n guiObject:TweenSize(originalSize + values['Size'],Enum.EasingDirection.Out,values['EasingStyle'],values['Time'],true) \n end \n local function retractButton() \n local mod \n local values = {} \n if guiObject:FindFirstChild('_Config') then \n mod = require(guiObject:FindFirstChild('_Config')) \n for i,value in pairs(defaultValues) do \n if mod[i] then \n values[i] = mod[i] \n else \n values[i] = value \n end \n end \nelse \n values = defaultValues \nend \n guiObject:TweenSize(originalSize,Enum.EasingDirection.Out,values['EasingStyle'],values['Time'],true) \n end \guiObject.MouseEnter:Connect(expandButton) \n guiObject.MouseLeave:Connect(retractButton) \nend \n \nreturn _buttonMove;"
_buttonMove.Name = "_buttonMove"
local _buttonSounds = Instance.new("ModuleScript",functionsFolder)
_buttonSounds.Source = "local functions = require(script.Parent.Parent.Functions) \n \n -- ===== DEFAULT VALUES ===== -- \nlocal soundService = game:GetService('SoundService') \n \nlocal hoverSoundId = 408524543 \nlocal hoverSound = Instance.new('Sound') \nhoverSound.Parent = game:GetService('SoundService') \nhoverSound.SoundId = 'rbxassetid://'..hoverSoundId \nhoverSound.Name = 'ui_hover1' \nhoverSound.Volume = .2 \nfunctions.hoverSound = hoverSound \n \nlocal clickSoundId = 3868133279 \nlocal clickSound = Instance.new('Sound') \nclickSound.Parent = game:GetService('SoundService') \nclickSound.SoundId = 'rbxassetid://'..clickSoundId \nclickSound.Name = 'ui_button1' \nclickSound.PlaybackSpeed = 2.5 \nclickSound.Volume = .2 \nfunctions.clickSound = clickSound \n \nlocal function _buttonSounds(guiObject) \n \n local function mouseLabelHover() \n functions.hoverSound:Play() \n end \n local function mouseButtonClick() \n local check = functions.IsGuiButton(guiObject) \n if check then \n functions.clickSound:Play() \n else \n error(string.format'%q is not a GuiButton',guiObject:GetFullName()) \n end \n \n end \n guiObject.MouseEnter:Connect(mouseLabelHover) \n guiObject.MouseButton1Click:Connect(mouseButtonClick) \nend \n \nreturn _buttonSounds;"
_buttonSounds.Name = "_buttonSounds"
local _labelInfo = Instance.new("ModuleScript",functionsFolder)
_labelInfo.Source = "local userInputService = game:GetService('UserInputService') \nlocal textService = game:GetService('TextService') \nlocal functions = require(script.Parent.Parent.Functions) \nlocal function _labelInfo(guiObject) \n \n -- ===== DEFAULT VALUES ===== -- \n\nlocal labelPosition = true -- false: Below the mouse true: Above the mouse \n\nlocal defaultValues = { \n ['Text'] = ' '; \n ['BackgroundColor3'] = Color3.fromRGB(125,125,125); \n ['BackgroundTransparency'] = .75; \n ['BorderColor3'] = Color3.fromRGB(0,0,0); \n ['BorderMode'] = Enum.BorderMode.Outline; \n ['BorderSizePixel'] = 0; \n ['Font'] = Enum.Font.Arial; \n ['TextColor3'] = Color3.fromRGB(0,0,0); \n ['TextStrokeColor3'] = Color3.fromRGB(0,0,0); \n ['TextStrokeTransparency'] = 1; \n ['TextTransparency'] = 0; \n ['TextXAlignment'] = Enum.TextXAlignment.Left; \n ['TextYAlignment'] = Enum.TextYAlignment.Bottom; \n ['TextSize'] = 10; \n } \n local textLabel \n \n local function labelMove() \n if textLabel then \n local mousePos = userInputService:GetMouseLocation() \n if labelPosition then \n textLabel.Position = UDim2.new(0,mousePos.X + 5,0,mousePos.Y - (40 + textLabel.Size.Y.Offset)) \n else \n textLabel.Position = UDim2.new(0,mousePos.X + 5,0,mousePos.Y - 5) \n end \n end \n end \n \n local function labelCreate() \n if not textLabel then \n textLabel = Instance.new('TextLabel') \n textLabel.Visible = false \n textLabel.Parent = guiObject:FindFirstAncestorOfClass('ScreenGui') \n textLabel.ZIndex = guiObject.ZIndex + 1 \n local mod \n local values = {} \n if guiObject:FindFirstChild('_Config') then \n mod = require(guiObject:FindFirstChild('_Config')) \n for i,value in pairs(defaultValues) do \n if mod[i] then \n values[i] = mod[i] \n else \n values[i] = value \n end \n end \n else \n values = defaultValues \n end \n textLabel.Size = UDim2.new(.1,0,.25,0) \n for i,v in pairs(values) do \n textLabel[i] = v \n end \n local newSize = textService:GetTextSize(textLabel.Text,values['TextSize'],values['Font'],textLabel.AbsoluteSize) \n textLabel.Size = UDim2.new(0,newSize.X,0,newSize.Y) \n local mousePos = userInputService:GetMouseLocation() \n if labelPosition then \n textLabel.Position = UDim2.new(0,mousePos.X + 5,0,mousePos.Y - (40 + textLabel.Size.Y.Offset)) \n else \n textLabel.Position = UDim2.new(0,mousePos.X + 5,0,mousePos.Y - 5) \n end \n textLabel.Visible = true \n end \n end \n \n local function labelDestroy() \n if textLabel then \n textLabel:Destroy() \n textLabel = nil \n end \n end \n guiObject.MouseEnter:Connect(labelCreate) \n guiObject.MouseLeave:Connect(labelDestroy) \n guiObject.MouseMoved:Connect(labelMove) \nend \n \nreturn _labelInfo;"
_labelInfo.Name = "_labelInfo"
if game:GetService("StarterGui"):FindFirstChild("guiElements") then
local newFolder = Instance.new("Folder",localScript)
newFolder.Name = "oldDefaultFunctions - Copy values over"
local check = Instance.new("ObjectValue",newFolder)
check.Name = "_check"
for i,v in pairs(game:GetService("StarterGui"):FindFirstChild("guiElements").GuiFunctions:GetChildren()) do
if not table.find(defaults,v.Name) then
v.Parent = functionsFolder
else
v.Parent = newFolder
end
end
if #newFolder:GetChildren() == 0 then
newFolder:Destroy()
end
game:GetService("StarterGui"):FindFirstChild("guiElements"):Destroy()
end
localScript.Parent = game:GetService("StarterGui")
for i,v in pairs(functionsFrame:GetChildren()) do
if not v:IsA("UIListLayout") then
v:Destroy()
end
end
local listLayout = Instance.new("UIListLayout",functionsFrame)
for i,v in pairs(functionsFolder:GetChildren()) do
local newButton = Instance.new("TextButton",functionsFrame)
selectFunction(newButton)
newButton.Size = UDim2.new(1,-8,.05,0)
newButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
newButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
newButton.Text = v.Name
newButton.Font = Enum.Font.SourceSansBold
if table.find(defaults,v.Name) then
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
else
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
end
newButton.TextStrokeColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Dark,Enum.StudioStyleGuideModifier.Default)
newButton.TextScaled = true
end
if selectedTag ~= nil then
selectedTag.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
end
selectedButton = nil
print"[Gui Elements]: Loaded lastest version of the model."
changeHistoryService:SetWaypoint("Get Latest Model")
end
if not game:GetService("StarterGui"):FindFirstChild("guiElements") then
loadModel()
else
model = game:GetService("StarterGui"):FindFirstChild("guiElements").GuiFunctions
for i,v in pairs(functionsFrame:GetChildren()) do
if not v:IsA("UIListLayout") then
v:Destroy()
end
end
local listLayout = Instance.new("UIListLayout",functionsFrame)
for i,v in pairs(model:GetChildren()) do
local newButton = Instance.new("TextButton",functionsFrame)
selectFunction(newButton)
newButton.Size = UDim2.new(1,-8,.05,0)
newButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
newButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
newButton.Text = v.Name
newButton.Font = Enum.Font.SourceSansBold
if table.find(defaults,v.Name) then
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
else
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
end
newButton.TextStrokeColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Dark,Enum.StudioStyleGuideModifier.Default)
newButton.TextScaled = true
end
end
for i,v in pairs(functionsFrame:GetChildren()) do
if v:IsA("GuiButton") then
selectFunction(v)
end
end
minusButton.MouseButton1Click:Connect(function()
if selectedButton and minusButtonDeb == false and textPopUp.Visible == false then
confirmBox.Visible = true
minusButtonDeb = true
confirmBox.Position = UDim2.new(0,minusButton.AbsolutePosition.X - 4,0,minusButton.AbsolutePosition.Y - 4)
confirmYes.MouseButton1Click:Connect(function()
if not table.find(defaults,selectedButton.Text) then
if model:FindFirstChild(selectedButton.Text) then
model:FindFirstChild(selectedButton.Text):Destroy()
for i,v in pairs(game:GetService("CollectionService"):GetTagged(selectedButton.Text)) do
game:GetService("CollectionService"):RemoveTag(v,selectedButton.Text)
end
print("[Gui Elements]: Removed tag and function'"..selectedButton.Text.."'")
selectedButton:Destroy()
end
else
warn(selectedButton.Text.." can not be deleted, it is a default function.")
end
minusButtonDeb = false
confirmBox.Visible = false
changeHistoryService:SetWaypoint("Delete GUI Function")
end)
confirmNo.MouseButton1Click:Connect(function()
confirmBox.Visible = false
minusButtonDeb = false
end)
else
if not selectedButton then
print"[Gui Elements]: No function selected! Please select a function from the list 'Functions' if you want to delete it."
end
end
end)
plusButton.MouseButton1Click:Connect(function()
if plusButtonDeb == false and confirmBox.Visible == false then
plusButtonDeb = true
textPopUp.Visible = true
textPopUp.Position = UDim2.new(0,plusButton.AbsolutePosition.X - 4,0,plusButton.AbsolutePosition.Y - 4)
textClose.MouseButton1Click:Connect(function()
textPopUp.Visible = false
plusButtonDeb = false
end)
textConfirm.MouseButton1Click:Connect(function()
textPopUp.Visible = false
if not model:FindFirstChild(textBox.Text) and textBox.Text ~= "" then
local module = Instance.new("ModuleScript")
local newName = string.gsub(textBox.Text," ","")
module.Source = "local functions = require(script.Parent.Parent.Functions) \nlocal function "..newName.."() \n \nend \n \nreturn "..newName
module.Parent = model
plugin:OpenScript(module)
module.Name = newName
local newButton = Instance.new("TextButton",functionsFrame)
newButton.Size = UDim2.new(1,-8,.05,0)
newButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
newButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Pressed)
newButton.Text = newName
newButton.Font = Enum.Font.SourceSansBold
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Pressed)
newButton.TextStrokeColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Dark,Enum.StudioStyleGuideModifier.Default)
newButton.TextScaled = true
selectFunction(newButton)
functionsFrame.CanvasPosition = Vector2.new(0,newButton.AbsolutePosition.Y - newButton.AbsoluteSize.Y)
if selectedButton then
selectedButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
end
selectedButton = newButton
else
if model:FindFirstChild(textBox.Text) then
warn("A function already has that name!")
elseif textBox.Text == "" then
warn("You must name the function!")
end
end
textBox.Text = ""
end)
plusButtonDeb = false
end
end)
function clearTagView()
for i,v in pairs(tagsFrame:GetChildren()) do
if not v:IsA("UIListLayout") then
v:Destroy()
end
end
end
local function selectTag(guiButton)
local function buttonClicked()
if guiButton == selectedTag then
selectedTag.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
selectedTag = nil
else
if selectedTag ~= nil then
selectedTag.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
end
selectedTag = guiButton
selectedTag.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Pressed)
end
end
guiButton.MouseButton1Click:Connect(buttonClicked)
end
selection.SelectionChanged:Connect(function()
local selected = selection:Get()
if #selected == 1 then
clearTagView()
selectedPart.Text = ("Selected: 1 Part - ".. selected[1].Name)
for i,tag in pairs(game:GetService("CollectionService"):GetTags(selected[1])) do
local newButton = Instance.new("TextButton",tagsFrame)
newButton.Size = UDim2.new(1,-8,.05,0)
newButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
newButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
newButton.Text = tag
newButton.Font = Enum.Font.SourceSansBold
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
newButton.TextStrokeColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Dark,Enum.StudioStyleGuideModifier.Default)
newButton.TextScaled = true
selectTag(newButton)
editProperties.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
editProperties.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
end
if selectedTag then
selectedTag.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
end
selectedTag = nil
highlighted = selected[1]
else
selectedPart.Text = ("Selected: "..#selected.." Parts - ")
highlighted = nil
if selectedTag then
selectedTag.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
end
editProperties.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.DimmedText,Enum.StudioStyleGuideModifier.Default)
editProperties.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Disabled)
selectedTag = nil
end
end)
minusShowButton.MouseButton1Click:Connect(function()
if selectedTag and minusButtonDeb == false and textPopUp.Visible == false then
confirmBox.Visible = true
minusButtonDeb = true
confirmBox.Position = UDim2.new(0,minusShowButton.AbsolutePosition.X - 4,0,minusShowButton.AbsolutePosition.Y - 4)
confirmYes.MouseButton1Click:Connect(function()
minusButtonDeb = false
confirmBox.Visible = false
if highlighted == selection:Get()[1] then
game:GetService("CollectionService"):RemoveTag(highlighted,selectedTag.Text)
print("[Gui Elements]: Removed tag '"..selectedTag.Text.."' from "..highlighted:GetFullName())
else
print("[Gui Elements]: Selected objects switched")
end
selectedTag:Destroy()
changeHistoryService:SetWaypoint("Delete Tag")
end)
confirmNo.MouseButton1Click:Connect(function()
minusButtonDeb = false
confirmBox.Visible = false
end)
else
if not selectedTag then
minusButtonDeb = false
print"[Gui Elements]: No tags selected! Please select a tag from the 'Current Tags' List if you want to remove it from the selected object."
end
end
end)
plusShowButton.MouseButton1Click:Connect(function()
if selectedButton and plusButtonDeb == false and textPopUp.Visible == false then
--confirmBox.Visible = true
plusButtonDeb = true
--confirmBox.Position = UDim2.new(0,minusShowButton.AbsolutePosition.X - 4,0,minusShowButton.AbsolutePosition.Y - 4)
if highlighted == selection:Get()[1] and #selection:Get() == 1 then
if not game:GetService("CollectionService"):HasTag(highlighted,selectedButton.Text) then
game:GetService("CollectionService"):AddTag(highlighted,selectedButton.Text)
local newButton = Instance.new("TextButton",tagsFrame)
newButton.Size = UDim2.new(1,-8,.05,0)
newButton.BorderColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Border,Enum.StudioStyleGuideModifier.Default)
newButton.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
newButton.Text = selectedButton.Text
newButton.Font = Enum.Font.SourceSansBold
newButton.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.SubText,Enum.StudioStyleGuideModifier.Default)
newButton.TextStrokeColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Dark,Enum.StudioStyleGuideModifier.Default)
newButton.TextScaled = true
if selectedTag then
selectedTag.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Default)
end
selectedTag = newButton
selectedTag.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.Button,Enum.StudioStyleGuideModifier.Pressed)
selectTag(newButton)
print("[Gui Elements]: Added tag '"..selectedTag.Text.."' to "..highlighted:GetFullName())
else
print("[Gui Elements]: That part already has that tag!")
end
else
if not highlighted then
print"[Gui Elements]: No object selected! Please select a GuiObject from the Explorer or Workspace to add a function to it."
end
end
plusButtonDeb = false
else
if not selectedButton then
print"[Gui Elements]: No function selected! Please select a function from the 'Functions' List if you want to add it to the selected object."
plusButtonDeb = false
end
end
end)
defaultProperties.MouseButton1Click:Connect(function()
if selectedButton then
plugin:OpenScript(model[selectedButton.Text])
end
end)
editProperties.MouseButton1Click:Connect(function()
if highlighted then
if highlighted:FindFirstChild("_Config") then
plugin:OpenScript(highlighted:FindFirstChild("_Config"))
else
local module = Instance.new("ModuleScript")
module.Name = "_Config"
module.Parent = highlighted
module.Source = "-- To add a custom property, insert 'module.PropertyName = PropertyValue' below. If none is added, then it will use the default value. \nlocal module = {} \n \nreturn module"
plugin:OpenScript(module)
end
end
end)
local getDeb = false
getLatestModel.MouseButton1Click:Connect(function()
if getDeb == false then
getDeb = true
if game:GetService("StarterGui"):FindFirstChild("guiElements") then
if model.Parent:FindFirstChild("_check",true) then
confirmBox.Visible = true
warn"[Gui Elements]: You have functions you havent moved the default values over to the new scripts. Are you sure you want to delete them by getting the latest model?"
confirmBox.Position = UDim2.new(0,getLatestModel.AbsolutePosition.X + confirmBox.AbsoluteSize.X + 4,0,getLatestModel.AbsolutePosition.Y - 4)
confirmYes.MouseButton1Click:Connect(function()
loadModel()
confirmBox.Visible = false
getDeb = false
end)
confirmNo.MouseButton1Click:Connect(function()
confirmBox.Visible = false
getDeb = false
end)
else
loadModel()
getDeb = false
end
else
loadModel()
getDeb = false
end
end
end)
New Changes
V1.3 - 7/2/2020
- Remade into a plugin from its old hard to use model state
V1.3.1 - 7/3/2020
- Changed method of Inserting the guiElements script which caused the Widget to fail to load.
- Cleaner Output messages for more feedback
- Small UI Changes
- ChangeHistoryService
- Fixes
V1.3.2 - 7/5/2020
- Removed auto load when opening up a place, you now need to press ‘Get latest model’ to insert it.
- Changed float position to right on default instead of bottom
V1.3.3 - 8/29/2020
- Setting to change _labelInfo to above or below the mouse
Hello! This is the first resource I have made and I’m posting it here for everyone to use, and to get feedback on how I can improve it.
My goal when making this was to make making GUI work simpler and faster because I found myself copying and pasting the same scripts over and over for different buttons, labels, etc. This made me go out and make this which takes use of CollectionService to do it all.
The basic model contains several things:
- Local Script
- Functions Module
- Tags Folder
- _buttonMove
- _buttonSounds
- _labelInfo
Examples
_buttonMove
_buttonSounds
*Cant play audio in gifs, but plays customizable click sounds and hover sounds!
_labenInfo
- More to come!
What I plan on adding
Because this plugin is still new, there’s a bunch I plan on adding to it. Heres what will come to it:
- More functionality to _labelInfo to include a header, image, and info text, and improved auto-sizing.
- New function _labelGrad which will constantly tween a moving gradient effect to the object whenever it is visible
- New function _hoverLabel for easy changes to any guiObject when hovering over or possibly clicking.
- Tooltips whenever roblox will allow plugins to make their own built in tooltips
- Auto send over default values from the preset functions to save you from having to copy and past them manually
- Your suggestions and more!
Functions
This plugin is very simple; it lets you easily add tags to GUI parts to assign effects to it(I guess its also a tags editor as well). You can easily edit your tags, functions, and properties! (Its also my first plugin so I would appreciate feedback on its design and any bugs!)
There are 7 buttons:
Functions with brighter text are default functions, you cant delete them by using the built-in delete button. Darker gray text functions are custom ones. The only difference is that they can be deleted, and the others can’t.
-
Default Properties button allows you to edit the default properties for each function. These are the values it will use if you assign a part to a tag without any custom values.
-
Custom Properties allows you to add properties that will overwrite the Default property. If none is defined here, it will use the default property.
-
Get Latest Model - Gives you the most up-to-date version of the script, and moves all made functions over. Any default functions will be placed into another folder which allows you to easily transfer any default values set in them over until I find a fix for it.
Chosen Tags
- ‘+’ allows you to add the selected tag highlighted on the right to the current GuiObject you have selected.
- ‘-’ will remove the tag you have selected under the Chosen Tags section. It will ask you to confirm it so you don’t delete it on accident.
Functions
- ‘+’ allows you to easily create your own function
- ‘-’ will remove the selected function, and all tags associated with it. It will ask you to confirm it so you cannot delete it on accident.
That’s all there is to it, Enjoy! Please leave all feedback below, I really appreciate it!
https://www.roblox.com/library/5276555194/GuiElements
I completely deleted the link on accident, whoops