для роблокс игры. Говори мне тип файла, и где он должен лежать.
Теперь сделаем другой файл. А именно Multiplayer. Это будет таким-же как и деньги. Только это не будет показываться в лидербордах. Так-же это будет показывать красным цветом и над текстом с деньгами. Все остальное такое же. Изначально у игрока это значение равняеться 1. Текст над текстом с деньгами должен быть в точь в точь как у денег.

-- MoneySystem.lua
-- Этот скрипт должен находиться в папке ServerScriptService

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local MoneyStore = DataStoreService:GetDataStore("PlayerMoney")

-- Функция форматирования чисел
local function formatNumber(number)
    local suffixes = {"", "K", "M", "B", "T", "Qa", "Qi"}
    local index = 1
    while number >= 1000 and index < #suffixes do
        number = number / 1000
        index += 1
    end
    if number < 1000 then
        return string.format("%d%s", number, suffixes[index])
    else
        return string.format("%.2f%s", number, suffixes[index])
    end
end

-- Функции управления деньгами
local function resetMoney(player)
    player:SetAttribute("Money", 0)
end

local function addMoney(player, amount)
    local currentMoney = player:GetAttribute("Money") or 0
    player:SetAttribute("Money", currentMoney + amount)
end

local function subtractMoney(player, amount)
    local currentMoney = player:GetAttribute("Money") or 0
    player:SetAttribute("Money", math.max(currentMoney - amount, 0))
end

-- Обработка сохранения данных при выходе игрока
local function savePlayerData(player)
    local success, err = pcall(function()
        MoneyStore:SetAsync(player.UserId, player:GetAttribute("Money"))
    end)
    if not success then
        warn("Не удалось сохранить данные для игрока " .. player.Name .. ": " .. err)
    end
end

-- Обработка загрузки данных при входе игрока
local function loadPlayerData(player)
    local success, data = pcall(function()
        return MoneyStore:GetAsync(player.UserId)
    end)
    if success then
        player:SetAttribute("Money", data or 0)
    else
        warn("Не удалось загрузить данные для игрока " .. player.Name .. ": " .. data)
        player:SetAttribute("Money", 0)
    end
end

-- Обновление лидерборда
local function updateLeaderboard(player)
    player.leaderstats.Money.Value = formatNumber(player:GetAttribute("Money"))
end

-- Создание текста над головой игрока
local function createOverheadText(player)
    local billboardGui = Instance.new("BillboardGui")
    billboardGui.Name = "OverheadGui"
    billboardGui.Parent = player.Character.Head
    billboardGui.Adornee = player.Character.Head
    billboardGui.Size = UDim2.new(4, 0, 1, 0)
    billboardGui.StudsOffset = Vector3.new(0, 2, 0)
    billboardGui.AlwaysOnTop = true

    local textLabel = Instance.new("TextLabel")
    textLabel.Name = "OverheadText"
    textLabel.Parent = billboardGui
    textLabel.Size = UDim2.new(1, 0, 1, 0)
    textLabel.BackgroundTransparency = 1
    textLabel.TextColor3 = Color3.fromRGB(34, 177, 76) -- Зеленый цвет
    textLabel.Font = Enum.Font.FredokaOne -- Мультяшный шрифт
    textLabel.TextStrokeTransparency = 0 -- Добавляет черную обводку
    textLabel.TextScaled = true
    textLabel.Text = "Money: " .. formatNumber(player:GetAttribute("Money"))

    player:GetAttributeChangedSignal("Money"):Connect(function()
        textLabel.Text = "Money: " .. formatNumber(player:GetAttribute("Money"))
    end)
end

-- Создание лидерборда при входе игрока
Players.PlayerAdded:Connect(function(player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player

    local moneyValue = Instance.new("StringValue")
    moneyValue.Name = "Money"
    moneyValue.Value = "0"
    moneyValue.Parent = leaderstats

    player:SetAttribute("Money", 0)

    loadPlayerData(player)
    updateLeaderboard(player)

    player:GetAttributeChangedSignal("Money"):Connect(function()
        updateLeaderboard(player)
    end)

    player.CharacterAdded:Connect(function()
        createOverheadText(player)
    end)
end)

-- Сохранение данных при выходе игрока
Players.PlayerRemoving:Connect(function(player)
    savePlayerData(player)
end)

-- Пример использования функций
--[[
    local player = game.Players:FindFirstChild("PlayerName")
    if player then
        addMoney(player, 1000)
        subtractMoney(player, 500)
        resetMoney(player)
    end
]]