How do I send a mouse click on a Gui button with a script?
What?
Can you explain what you want more
Do you mean textbutton?
script.Parent.MouseButton1Click:Connect(function()
print("Clicked")
end)
(has to be in a textbutton and has to be a localscript)
The only way to do such is through a Remote event because GUI’s on StarterGUI only run plainly with no Remote Events through a LOCAL Script which is ran on the client. There isn’t a lot of info you’ve given us but I’m guessing you want a GUI to open on the Server rather than just the client.
You mean like MouseButton1Click
? You can use it to do a function when an image/text button is clicked…if that’s what you mean.
do you mean that you want the script to fire Mouse click
without the player actually clicking the TextButton?
Yes exactly thank you
Well when would you want it fired?
MouseHover you mean?
then you can’t use a mousclick event, you have to use a local function like this
local function ScriptFakeClick()
--do stuff
end
whatyouwillusetofiretheevent:Connect(ScriptFakeClick)
just copy the same code inside the mouseclick function and paste it to where you want it
You probably have a TextButton with a MouseButton1Click or Activated event that does something, and you want the event to fire as if it had been clicked, without the player clicking it.
local button = game.PlayerGui.ScreenGui.TextButton
function onActivated()
print("asdf")
end
button.Activated:Connect(onActivated)
There are 3 ways to do that.
One is to make a custom BindableEvent and make it also connect to the same function, and then Fire the BindableEvent to simulate a click.
-- Script 1
local button = game.PlayerGui.ScreenGui.TextButton
local event = Instance.new("BindableEvent")
event.Name = "ClickAsdf"
event.Parent = game.ReplicatedStorage
function onActivated()
print("asdf")
end
button.Activated:Connect(onActivated)
event.Event:Connect(onActivated)
-- Script 2
-- Makes touching the part named Button do the same as clicking the GUI button
local button = workspace.Button
local event = game.ReplicatedStorage.ClickAsdf
button.Touched:Connect(function()
event:Fire()
end)
The second way is to expose the function that the button calls, and let other things call it.
I will be doing this with a ModuleScript, but you can also do _G.onActivated = onActivated
in Script 1 if you want to shoot yourself in the foot. Anyway,
-- Script 1
local button = game.PlayerGui.ScreenGui.TextButton
button.Activated:Connect(require(game.ReplicatedStorage.ClickAsdf))
-- Script 2
-- Makes touching the part named Button do the same as clicking the GUI button
local button = workspace.Button
button.Touched:Connect(require(game.ReplicatedStorage.ClickAsdf))
-- ModuleScript 3
-- This is game.ReplicatedStorage.ClickAsdf
return function()
print("asdf")
end
The third way is to just copy-paste the function. Eww!
-- Script 1
local button = game.PlayerGui.ScreenGui.TextButton
function onActivated()
print("asdf")
end
button.Activated:Connect(onActivated)
-- Script 2
-- Makes touching the part named Button do the same as clicking the GUI button
local button = workspace.Button
function onActivated()
print("asdf")
end
button.Touched:Connect(onActivated)
Uhhhhh you’re not giving me much information to work with, but here is something to start you off
--|| Vars
local button = script.Parent
--|| Main
button.MouseButton1Click:Connect(function()
-- When the player clicks the button, do something.
end)
You would need to put this in a local script inside of a text button.
could you please explain in detail?
guys he means. fire a button event without actually pressing it. like with a tool you can do tool.Activate then the tool will react on a activation just like if the player would press left click
I’m not sure if it is the right thing but if you wanna fire a mouse click without clicking it is not possible. But you can always call a function that’d do the same.
local button = script.Parent
local function MyFunction()
print("Clicked")
end
button.MouseButton1Click:Connect(MyFunction) --//Calling with a mouse click
MyFunction() --//Calling without a mouse click
I’ve implemented this workaround myself. though it’s pretty hacky. Wish we had a built-in solution… (ex. GuiButton:Activate())
BindableEvent worked like a charm (I just had to be careful to specify context to be client) and you explained in a much simpler way than the official docs.
I got a work around. Make a “BindableEvent” put it in the button and call it “buttonClick” or something anything you like.
then fire that event whenever the button is clicked.
and connect your function to that event instead of to the button.
now if you want to run the function of that button without clicking it. You just do button.[“the bindable event you made”]:Fire()