Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Роблокс Студио (Rebirth)

Кристина Соколова Знаток (253), на голосовании 1 год назад
Такая ситуация:
Было Coins 20, Wins 5, Rebirth 0

когда жму Rebirth, всё отлично сбрасывается (Coins 0, Wins 0, Rebirth 1)

НО, как только я поднимаю 1 монетку у меня почему-то становиться так:
Coins 21, Wins 0, Rebirth 1

И если заработаю 1 Wins, то отобразится Coins 21, Wins 6, Rebirth 0
-------------------
Вот код по leaderstats:
 local dataStoreService = game:GetService("DataStoreService")
local leaderstatsDataStore = dataStoreService:GetDataStore("data") --data это имя сохранения

game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder",player)
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

local wins = Instance.new("IntValue",leaderstats)
wins.Name = "Wins"
wins.Parent = leaderstats
wins.Value = 0

local Rebirths = Instance.new("IntValue",leaderstats)
Rebirths.Name = "Rebirths"
Rebirths.Parent = leaderstats
Rebirths.Value = 0

local coins = Instance.new("IntValue",leaderstats)
coins.Name = "Coins"
coins.Parent = leaderstats
coins.Value = 0

local leaderstatsData = leaderstatsDataStore:GetAsync(player.UserId)
if leaderstatsData ~= nil then
wins.Value = leaderstatsData[1]
Rebirths.Value = leaderstatsData[2]
coins.Value = leaderstatsData[3]
end
end)

game.Players.PlayerRemoving:Connect(function(player) --когда игрок покидает игру
local values = {}
for _, child in pairs(player.leaderstats:GetChildren()) do
table.insert(values,child.Value)
end
pcall(function()
leaderstatsDataStore:SetAsync(player.UserId, values)
end)
end)

game:BindToClose(function() --привязка игры к закрытию (сохранение данных)
for _, player in pairs(game.Players:GetPlayers()) do
local values = {}
for _, child in pairs(player.leaderstats:GetChildren()) do
table.insert(values,child.Value)
end
pcall(function()
leaderstatsDataStore:SetAsync(player.UserId, values)
end)
end
end)
и код кнопки Rebirth
 local player = game.Players.LocalPlayer
local wins = player:WaitForChild("leaderstats"):WaitForChild("Wins")
local coins = player:WaitForChild("leaderstats"):WaitForChild("Coins")
local rebirths = player:WaitForChild("leaderstats"):WaitForChild("Rebirths")

local price = script.Parent.Price.Value --цена
local amount = script.Parent.Amount.Value --сколько перерождений за эту цену

script.Parent.MouseButton1Click:Connect(function()
if coins.Value >= price then -- Здесь указываем цену Ребёртса
wins.Value = 0
coins.Value = 0
rebirths.Value += amount
price = price * 2
end

if coins.Value < 2 then
script.Parent.Text = "You have not Wins!"
wait(2)
script.Parent.Text = "Rebirth"
end
end)
Голосование за лучший ответ
Борис Постнов Гуру (2963) 1 год назад
В первом скрипте всё великолепно, изменения/сохранение всех значений выполняется на сервере.
А во втором скрипте ты накосячил (а), т. к. ты сохраняешь информацию о 'wins', 'coins', 'rebirths' на клиенте, а не на сервере (эти изменения не изменялись на сервере).

Надо сделать так, чтобы после нажатия на кнопку, на сервер поступал запрос о смене информации у игрока (аннулировать победы и коины, а так же добавить один 'rebirth')
Чтобы осуществить подобное, тебе нужно знать главные вещи которые позволяют взаимодействовать клиенту (игроку) с сервером (и наоборот):

1) Client-Server model: [ссылка заблокирована по решению администрации проекта] - это для понимания что такое клиент и сервер, если ты не знаешь.
2) RemoteEvent и RemoteFunction (2 документации, старая и новая): [ссылка заблокирована по решению администрации проекта] [ссылка заблокирована по решению администрации проекта]

Если лень читать все эти документации, то посмотри несколько видео о том как использовать Remote Event:
https://www.youtube.com/watch?v=GwhPXyYKkwU -- Англ. видео
https://www.youtube.com/watch?v=0J1AfkJeX3g -- Рус. видео
(Я их все вроде смотрел норм объясняли)

Главное научиться, а там уж всё легко.
Кстати ты в конце скрипта на кнопку Rebirth написал (а): script.Parent.Text = "You have not Wins!" А правильнее наверно будет писать: script.Parent.Text = "You have no Wins!" (Я тоже не мастер англ. если что, просто поправил)
Кристина СоколоваЗнаток (253) 1 год назад
Спасибо Вам ОГРОМНОЕ! У меня ПОЛУЧИЛОСЬ, Ураааааааааааа!
Кристина СоколоваЗнаток (253) 1 год назад
Вы просто БОГ :-)
Борис Постнов Гуру (2963) Кристина Соколова, Не за что :D)
Похожие вопросы