Also for local TextBox = script.Value.Value your going to want to do local TextBox = script.Parent.Value.Value because there is no way to have a value in a script like you had it, you were defining a property inside the script called “Value” which does not exist.
No you wouldn’t, when you do script.Value.Value that is searching for a property inside the script itself. Also, if your so definite about it not being script.Parent.Value.Value then do script:WaitForChild("Value").Value.
Look, you can ask others, script.Value.Value is going into the script, looking for a property inside the script named “Value”, and looking inside “Value” for “Value”.
script.Parent.Value.Value is the correct way to do it, or if you want script:WaitForChild("Value").Value