Перейти к содержимому

КАК СОЗДАТЬ СИСТЕМУ ПЕРЕРОЖДЕНИЯ | Roblox Studio (СОХРАНЕНИЕ ДАННЫХ И КАСТОМИЗАЦИЯ)

Itz_FloppyFish

0:00 / 0:00

КАК СОЗДАТЬ СИСТЕМУ ПЕРЕРОЖДЕНИЯ | Roblox Studio (СОХРАНЕНИЕ ДАННЫХ И КАСТОМИЗАЦИЯ)

5 903 просмотра · 3 месяца назад
Itz_FloppyFish
82,5 тыс. подписчиков
5 903 просмотра · 3 месяца назад
В сегодняшнем видео я покажу вам, как создать систему перерождения в Roblox Studio. Это видео было очень востребовано, и я наконец-то его сделал. Перед тем, как снять это видео, я хотел убедиться, что предоставил вам надежную базу данных и систему валюты, о чем мы говорили в предыдущих видео. Это видео связано с моими тремя предыдущими видео, вам нужно будет посмотреть все видео, чтобы ваши данные сохранялись правильно, а система наличных работала корректно. Видео 1 (Хранилище данных):    • HOW TO MAKE A DATASTORE [SAVING + CUSTOMIZ...   Видео 2 (Наличные/Монеты):    • HOW TO MAKE A CASH SYSTEM | Roblox Studio ...   Видео 3 (Магазин предметов):    • HOW TO MAKE AN ITEM SHOP | Roblox Studio (...   Если вы немного запутались или вам нужна помощь, пожалуйста, создайте заявку в моем Discord-сервере, и мы с удовольствием вам поможем! 🌟 Discord-сервер Floppys:   / discord   ---------------------------- Скрипт 1 (Обновление хранилища данных, обычный скрипт в SSS): local Players = game:GetService("Players") local DataStoreService = game:GetService("DataStoreService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local RequestData = ReplicatedStorage.Remotes:WaitForChild("RequestData") -- Измените это на имя вашей RemoteFunction. local DataStore = DataStoreService:GetDataStore("DataStore1") -- Измените это на имя вашего хранилища данных. local PlayerData = {} local function getDefaultData() return { -- Здесь вы указываете значения по умолчанию: Например: "Coins = {Value = 100, ShowOnLeaderboard = true}," Coins = {Value = 0, ShowOnLeaderboard = true}, Rebirths = {Value = 0, ShowOnLeaderboard = true}, -- Для наших перерождений Multiplier = {Value = 1, ShowOnLeaderboard = false, IsFloat = true}, -- Для нашего множителя OwnedItems = {} } end local function createStatFolders(player, data) local leaderstats = Instance.new("Folder") leaderstats.Name = "leaderstats" leaderstats.Parent = player local hiddenStats = Instance.new("Folder") hiddenStats.Name = "hiddenStats" hiddenStats.Parent = player for statName, statData in pairs(data) do if typeof(statData) ~= "table" or statData.Value == nil then continue end if typeof(statData.Value) ~= "number" then continue end local stat if statData.IsFloat then stat = Instance.new("NumberValue") else stat = Instance.new("IntValue") end stat.Name = statName stat.Value = statData.Value if statData.ShowOnLeaderboard then stat.Parent = leaderstats else stat.Parent = hiddenStats end end end end local function loadData(player) local success, data = pcall(function() return DataStore:GetAsync(player.UserId) end) if not success then warn("Не удалось загрузить данные для "..player.Name..":", data) end PlayerData[player] = data or getDefaultData() local defaults = getDefaultData() for key, value in pairs(defaults) do if PlayerData[player][key] == nil then PlayerData[player][key] = value end end createStatFolders(player, PlayerData[player]) local ownedFolder = Instance.new("Folder") ownedFolder.Name = "OwnedItems" ownedFolder.Parent = player if PlayerData[player].OwnedItems then for itemName, _ in pairs(PlayerData[player].OwnedItems) do local tag = Instance.new("BoolValue") tag.Name = itemName tag.Parent = ownedFolder конец конец конец локальная функция saveData(player) local data = PlayerData[player] if not data then return end local leaderstats = player:FindFirstChild("leaderstats") if leaderstats then for _, stat in pairs(leaderstats:GetChildren()) do if data[stat.Name] and typeof(data[stat.Name]) == "table" then data[stat.Name].Value = stat.Value end end end end local hiddenStats = player:FindFirstChild("hiddenStats") if hiddenStats then for _, stat in pairs(hiddenStats:GetChildren()) do if data[stat.Name] and typeof(data[stat.Name]) == "table" then data[stat.Name].Value = stat.Value end end end local ownedFolder = player:FindFirstChild("OwnedItems") if ownedFolder then data.OwnedItems = {} for _, item in pairs(ownedFolder:GetChildren()) do data.OwnedItems[item.Name] = true end end pcall(function() DataStore:SetAsync(player.UserId, data) end) end Players.PlayerAdded:Connect(function(player) loadData(player) end) Players.PlayerRemoving:Connect(function(player) saveData(player) PlayerData[player] = nil end) RequestData.OnServerInvoke = function(player) return PlayerData[player] or getDefaultData() end game:BindToClose(function()) for _, player in pairs(Players:GetPlayers()) do saveData(player) конец конец) -- Сделано с любовью Floppy -------- Скрипт 2 (Менеджер магазина, ЧАСТЬ А): -- Все остальные скрипты находятся в описании (скрипты слишком длинные!) 00:00 - Вступление 00:35 - Система перерождения 13:30 - Заключение Спасибо за вашу постоянную поддержку ❤️