Клиент отправляет сообщение на сервер после выбора класса в пользовательском интерфейсе. Сервер устанавливает значения по умолчанию DataStore2 и прослушивает обновления, чтобы отправить информацию обратно клиенту. Моя идея состояла в том, чтобы серверный вызов RemoteFunctions добавил класс в хранилище данных и отправил его обратно клиенту (для статистики gui). Функция не запускается внутри PlayerAdded. Функция, однако, запускается вне события, но функция callRemote () внутри того, что выполняет Remote, требует переменной из события. Предложения?
--server
data.Combine("DATA","gold","sh_coins","class")
spawn(function()
glbs.Plrs.PlayerAdded:connect(function(Plr)
local goldstore = data("gold",Plr)
local shcoinstore = data("sh_coins",Plr)
local classstore = data("class",Plr)
function callRemote(remote,value)
sendDataToClient:InvokeClient(Plr,remote,value)
end
callRemote('Gold',goldstore:Get(500))
callRemote('Stronghold Coins',shcoinstore:Get(0))
callRemote('Class',classstore:Get('None'))
goldstore:OnUpdate(callRemote)
shcoinstore:OnUpdate(callRemote)
classstore:OnUpdate(callRemote)
classSelected.OnServerInvoke = function(plr,Class)
print('class remote called: '..Class)
callRemote('Class',classstore:Set(Class))
end
end)
end)
--client
local function connectClasses() --to play button
for _,v in pairs(menuclass:GetChildren()) do
wait()
if v:IsA('TextButton') then
if v.Name ~= 'Back' then
local inf = tinfo(.5,Enum.EasingStyle.Elastic)
spawn(function()
v.Button.MouseButton1Click:connect(function()
--print('clickitied')
spawn(function()
ClassSelected:InvokeServer(v.Name)
end)
local goal = {}
goal.Position = menuout
local t0 = twn(menuclass,inf,goal)
t0.Completed:wait()
gbls.Debris:AddItem(startmenu,0)
spawned = true
main.Enabled = true
cam.CameraType = Enum.CameraType.Custom
end)
end)
end
end
end
end
--update stats on data load (handled by server)
function updateStats(stat,val)
menuf[stat].Text = stat..': '..val
end
--listen for data load
StatUpdate.OnClientInvoke = updateStats