So basically, I’m trying to make a script that outputs the result of clicking a TextButton. What this means is that, when I click this button it will fire the remote event which will then transfer to a script.
What this script does is, it displays a Numerical Value. However, when I click this button, the value remains the same number despite it being updated.
LocalScript:
1 | script.Parent.MouseButton 1 Click:Connect( function () |
2 |
3 | game.ReplicatedStorage.LevelEvent:FireServer() |
4 |
5 | end ) |
Script:
1 | --function |
2 |
3 | game.ReplicatedStorage.LevelEvent.OnServerEvent:Connect( function () |
4 |
5 | script.Parent.Parent.Text = game.ReplicatedStorage.Level.Value |
6 |
7 | wait( 1 ) |
8 |
9 | end ) |
The server’s changes to a GUI’s text do not replicate to the PlayerGui
. In order to pull this off, you can instead use a BindableEvent
with local scripts:
Local Script 1
1 | local event = game:GetService( "ReplicatedStorage" ):WaitForChild( "BindableEvent" ) |
2 | script.Parent.MouseButton 1 Click:Connect( function () |
3 | event:Fire() |
4 | end ) |
Local Script 2
1 | local event = game:GetService( "ReplicatedStorage" ):WaitForChild( "BindableEvent" ) |
2 | event.Event:Connect( function () |
3 | script.Parent.Parent.Text = tostring (game:GetService( "ReplicatedStorage" ).Level.Value) |
4 | wait( 1 ) |
5 | end ) |
For more on BindableEvents, click me.