What do you mean the error will still lie?
Edit: I am going to try it out myself.
What do you mean the error will still lie?
Edit: I am going to try it out myself.
I can’t tell if I myself wrote it incorrectly or for some reason MainGui isn’t being replicated to their PlayerGui? If it’s jsut a simple warning, shouldn’t it still work afterwards once it finds MainGui?
Every UI replicates to PlayerGui automatically. If you want to make a ui for only one player you can create a screenGui with Instance.new and make the parent player gui.
Edit: I’m pretty sure this will only work in a LocalScript.
Say I place a ScreenGui
inside StarterGui
and insert this script:
local Player = game.Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")
local screenGui = PlayerGui:WaitForChild("MainGui")
I believe if for some reason your client is extremely delaying, it would result in that warning sometimes (But since my laptop has the durability of a toaster inside a microwave I can’t confirm)
No, I am pretty sure it won’t cause huge lag unless something in server-side happens such as Roblox having critical problems. But if the clients computer is super laggy there’s no solution for that.
Will the script work even if it shows a warning?
It will unless it gives an error. It just shows you a warning as it can yield infinitely if the thing you request in the variable doesn’t exist.
Edit: I will try to implement the same to my Rock, Paper, Scissors game to just to see if it’s working.
Wait, what? Is the bool value stored in the player? And also I did not add any code that changes the bool value if you checked it. I just checked if the bool value changed and if it did call a function.
Edit: If you change the bool value it’ll be fine I guess. I did not add one as I don’t know where you wanted to check the bool value.
It might be because the script only executes once the .PlayerAdded
event fires. The .PlayerAdded
event doesn’t fire for the LocalPlayer, only for players which join after the LocalPlayer.
Try taking the script out of the .PlayerAdded
event (this would also avoid the code unnecessarily executing again everytime another player joins)
Edit: Also you should use an if
/else
or an if
/elseif
statement instead of 2 separate if statements (generally when using two separate if statements you’re checking for multiple things which both need to be evaluated for the script to work. In this case, there’s only one value being checked)
Okay, I rewrited the code so it checks whenever the player joins too, so it doesn’t need changing the bool value to see it.
local boolvalue = --wherever your value is
local player = game.Players.LocalPlayer
local playergui = LocalPlayer.PlayerGui
local screenGui = PlayerGui:WaitForChild("MainGui")
local settingsFrame = screenGui.SettingsFrame
local on = settingsFrame.BackgroundOn
local off = settingsFrame.BackgroundOff
local function makeGUIVisible()
if bool1.Value == true then
off.Visible = false
on.Visible = true
else
off.Visible = true
on.Visible = false
end
end
bool1.Changed:Connect(makeGUIVisible)
game.Players.PlayerAdded:Connect(makeGUIVisible)
--Of course you can change up the function to make it different.
This should work I guess.
Edit: Did it work?
I am really glad I could help you out! If you ever struggle in something don’t be afraid to make a post!
Sometimes it works and sometimes it doesn’t I found out if the player join the game. I am not getting any errors, but it’s strange.
What do you mean? I don’t see anything wrong in the code. Is this a problem on Roblox’s side?
Yes if I test it in the roblox servers. Sometimes it works and sometimes it doesn’t when the player enters the game.
That’s weird. I don’t think there are any mistakes in the scripts.