So i have 2 pieces of code in my hands:
--[]-- game.Players.PlayerAdded:connect(function(player) local leaderstats = Instance.new("Model") leaderstats.Name = "leaderstats" leaderstats.Parent = player local Stage = Instance.new("IntValue") --We create a new IntValue Stage.Name = "Stage No." --this is the name you want the leader-stat to be when it shows up in-game. Stage.Value = 0 --this is the value of money the new player starts out with. To change this, you can add some more code (shown later) Stage.Parent = leaderstats -- Set the money object as a child of the leaderstats object. end) --[]-- while true do game.Workspace.GameValues.StageNo.Value = _G.StageNo wait(0.1) end --[]-- Assets = {755156652,327081386,833322858} for _, asset in ipairs(Assets) do game:GetService("ContentProvider"):Preload("http://www.roblox.com/asset/?id=" .. asset) end --[]--
and:
_G.StageNo = 0 while true do script.Parent.Text = _G.StageNo print(_G.StageNo) wait(0.1) end
--[[My tree: game Workspace GameValues StageNo (an IntValue) ServerScriptService Code1 StarterGui ScreenGui Frame TextBox Code2 ]]
Problem: In Code 1, right after the function, I place a while true do statement wherein I try and assign a Global variable to the IntValue, but when the Global variable changes, the leaderstats of StageNo do not. Why?
The issue may of been your loops. Because when you have a loop that is outside of a event it yields the rest of the thread until it stops. So wrapping the loop in the thread with a coroutine.wrap() function would fix it and allow the rest of the code to run.
coroutine.wrap(function() while true do game.Workspace.GameValues.StageNo.Value = _G.StageNo wait(0.1) end end)() -- For block 1
coroutine.wrap(function() while true do script.Parent.Text = _G.StageNo print(_G.StageNo) wait(0.1) end end)()