So, I've made a plugin that works fine. The GUI opens/closes. But the only problem I'm having is that the buttons in the GUI doesn't work.
Plugin script:
print("Part creator plugin loaded!") -- I was bored, so I decided to do something random local toolbar = plugin:CreateToolbar("dragonmaster4111") local button = toolbar:CreateButton( "Create Part", "Click anywhere to insert a part at your mouse position", "rbxassetid://430069553" ) function InsertGUI() script.Parent.GUI:Clone().Parent = game.CoreGui end function RemoveGUI() game.CoreGui:FindFirstChild("GUI"):Destroy() end button.Click:connect(function() if not game.CoreGui:FindFirstChild("GUI") then InsertGUI() else RemoveGUI() end end)
And, the script inside the button that doesn't work when you click it:
script.Parent.MouseButton1Click:connect(function() if script.Parent.Parent.Types.Visible ~= true then script.Parent.Parent.Types.Visible = true script.Parent.Rotation = 180 else script.Parent.Types.Visible = false script.Parent.Rotation = 0 end end)
Note: This plugin has everything in a folder. The GUI is premade. The script clones it into CoreGui when you click the button in it's toolbar.
Old question but it bothers me when the only reference to a problem I had, has no solution. I was able to resolve this issue by waiting for the GUI in core with:
game.CoreGui.ChildAdded:Connect(function(child)
-- need to use WaitForChild as descendants may not have replicated yet --local head = child:WaitForChild("Head") --guiLocation.ClickerWindow.Frame.TextButton.MouseButton1Click:Connect(insertClickEvent) end)
Example
Below is an example of how a plugin should be structured
print("Loading Block Identifier...") -- Check if user has loaded plugin before local hasLoaded = plugin:GetSetting("pluginHasLoaded") if not hasLoaded then print("Welcome to the Block Identifier. To use this plugin, click on the button in the addon bar, then click on the object you want to inspect.") plugin:SetSetting("pluginHasLoaded", true) end -- Setup Toolbar local toolbar = plugin:CreateToolbar("Block Identifier") -- Setup button local button = toolbar:CreateButton( "Button", "Press me", "http://www.roblox.com/asset/?id=145723965" ) button.Click:connect(function() print("Plugin is now active") plugin:Activate(true) -- Neccessary to listen to mouse input end) -- Setup mouse -- ADD THIS TO THE SCRIPT local mouse = plugin:GetMouse() mouse.Button1Down:connect(function() -- Binds function to left click local target = mouse.Target -- PUT WHAT EVER WAS IN YOUR LOCAL SCRIPT IN HERE if target then print("Target: " .. target.Name) end print("X: " .. mouse.X .. " Y: " .. mouse.Y) end) print("Finished Loading Block Identifier")
I believe event you used in line 1 of the script inside of the button should instead be MouseButton1Down:
script.Parent.MouseButton1Down:connect(function()