I was making a simple button, with the following script:
script.Parent.MouseButton1Click:Connect(function()
print("This works")
end)
and the following hierarchy:
yet it doesn’t print “This Works”. Why is this?
I was making a simple button, with the following script:
script.Parent.MouseButton1Click:Connect(function()
print("This works")
end)
and the following hierarchy:
yet it doesn’t print “This Works”. Why is this?
Replication is different between client and server. The server is probably unable to detect the input because the script is parented directly under player’s descendants, thus inactivating the script.
You should opt for a LocalScript
instead.
Oh, is there any way to detect it on a server script? ('cause local scripts can be changed with exploits, I think?)
Yes, but there is no point, if exploits changes it, it will affect that player only.
Local scripts = affect the client and only that client.
Wait, but the mouse click is supposed to change something on the server, that can affect the game a lot
You can’t interact with guis that are descended from workspace, you can only interact with the guis inside of your playergui. You can see guis that are in workspace, but you can’t click them or anything. Move the billboard gui into StarterGui and set its Adornee
property to the part, that will make it hover above the part.
Also, you absolutely can use a server script for this. Server scripts can detect gui input just like local scripts. However I think it’s recommended to use a local script for gui input.
Just use a local script, even if they are changeable whats stopping a exploiting form doing instance.new?
About using a ServerScript
to detect that seems a lot impractical than it seems to be, as you have to parent the script to somewhere with no easy access to the client’s GUI. You have to use PlayerAdded
and then follow it by WaitForChild
of the target GUIs and then connect the click function to them each. There’s sometimes an issue with a noticeable delay in input to server as it would be.
A LocalScript
would be more effective than the server script.