Нужно поменять в данном скрипте логику. Во первых теперь вместо Money мы обмениваем Stars на Mega. И получаемую Mega так-же увеличивает Prestige как увеличивает Stars получаемый Multiplier.

Скрипт:

local part = script.Parent -- Указываем, что текущий парент - это сам парт
local Players = game:GetService("Players")

-- Параметры для расчета Multiplayer
local costMoney = 10 -- Сколько денег стоит получить Multiplayer
local multiplierGain = 1 -- Сколько Multiplayer дается за costMoney

-- Таблица для отслеживания игроков на парте
local playersOnPart = {}

local function checkStandingOnPart(player)
	while playersOnPart[player] do
		wait(0.2) -- Каждые 0.2 секунды проверяем

		-- Получаем атрибут Money
		local currentMoney = tonumber(player:GetAttribute("Money")) or 0

		if currentMoney >= costMoney then
			-- Убираем деньги у игрока
			player:SetAttribute("Money", currentMoney - costMoney)

			-- Получаем количество Stars
			local currentStars = tonumber(player:GetAttribute("Stars")) or 0

			local multiplierBonus = 0
			if currentStars > 0 then
				multiplierBonus = currentStars * 2 -- Учитываем, что каждый Star дает x2
			end

			-- Прибавляем Multiplayer с учетом Stars
			local currentMultiplier = tonumber(player:GetAttribute("Multiplayer")) or 2
			player:SetAttribute("Multiplayer", currentMultiplier + multiplierGain + multiplierBonus)

			-- Обновляем значение Multiplayer сразу после изменения
	
		end
	end
end

local function onTouch(otherPart)
	-- Проверяем, является ли касающийся объект игроком
	local player = Players:GetPlayerFromCharacter(otherPart.Parent)
	if player and not playersOnPart[player] then
		playersOnPart[player] = true -- Отмечаем, что игрок стоит на парте
		coroutine.wrap(checkStandingOnPart)(player) -- Запускаем процесс проверки в отдельном потоке
	end
end

local function onTouchEnded(otherPart)
	local player = Players:GetPlayerFromCharacter(otherPart.Parent)
	if player and playersOnPart[player] then
		playersOnPart[player] = nil -- Убираем игрока из таблицы
	end
end

-- Подключаем события Touched и TouchEnded к функциям
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)

Mega:

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local MegaStore = DataStoreService:GetDataStore("PlayerMega")

-- Функция форматирования чисел
local function formatNumber(number)
	local suffixes = {"", "K", "M", "B", "T", "Qd", "Qn", "Sx", "Sp", "Oc", "No"}
	local index = 1

	while number >= 1000 and index < #suffixes do
		number = number / 1000
		index += 1
	end

	if index == #suffixes and number >= 1000 then
		return "999No"
	end

	-- Измененный вывод форматирования
	if number >= 100 then
		return string.format("%d%s", number, suffixes[index]) -- Для целых чисел
	else
		return string.format("%.2f%s", number, suffixes[index]):gsub("%.00", "") -- Удаляем .00 для целых чисел
	end
end

-- Функции управления Mega
local function resetMega(player)
	player:SetAttribute("Mega", 0)
end

local function addMega(player, amount)
	local currentMega = player:GetAttribute("Mega") or 0
	player:SetAttribute("Mega", currentMega + amount)
end

local function subtractMega(player, amount)
	local currentMega = player:GetAttribute("Mega") or 0
	player:SetAttribute("Mega", math.max(currentMega - amount, 0))
end

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

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

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

	local textLabel = Instance.new("TextLabel")
	textLabel.Name = "MegaOverheadText"
	textLabel.Parent = billboardGui
	textLabel.Size = UDim2.new(1, 0, 1, 0)
	textLabel.BackgroundTransparency = 1
	textLabel.TextStrokeTransparency = 0
	textLabel.TextColor3 = Color3.fromRGB(128, 0, 128) -- Фиолетовый цвет
	textLabel.Font = Enum.Font.FredokaOne
	textLabel.TextScaled = true
	textLabel.Text = "Mega: " .. formatNumber(player:GetAttribute("Mega"))

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

-- Обработка при добавлении игрока
Players.PlayerAdded:Connect(function(player)
	player:SetAttribute("Mega", 0) -- Начальное значение Mega

	loadPlayerMega(player)

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

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

Prestige:

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local PrestigeStore = DataStoreService:GetDataStore("PlayerPrestige")

-- Функции управления Prestige
local function resetPrestige(player)
	player:SetAttribute("Prestige", 0)
end

local function addPrestige(player, amount)
	local currentPrestige = player:GetAttribute("Prestige") or 0
	player:SetAttribute("Prestige", currentPrestige + amount)
end

local function subtractPrestige(player, amount)
	local currentPrestige = player:GetAttribute("Prestige") or 0
	player:SetAttribute("Prestige", math.max(currentPrestige - amount, 0))
end

local function formatNumber(number)
	local suffixes = {"", "K", "M", "B", "T", "Qd", "Qn", "Sx", "Sp", "Oc", "No"}
	local index = 1

	while number >= 1000 and index < #suffixes do
		number = number / 1000
		index += 1
	end

	if index == #suffixes and number >= 1000 then
		return "999No"
	end

	-- Измененный вывод форматирования
	if number >= 100 then
		return string.format("%d%s", number, suffixes[index]) -- Для целых чисел
	else
		return string.format("%.2f%s", number, suffixes[index]):gsub("%.00", "") -- Удаляем .00 для целых чисел
	end
end

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

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

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

	local textLabel = Instance.new("TextLabel")
	textLabel.Name = "PrestigeOverheadText"
	textLabel.Parent = billboardGui
	textLabel.Size = UDim2.new(1, 0, 1, 0)
	textLabel.BackgroundTransparency = 1
	textLabel.TextStrokeTransparency = 0
	textLabel.TextColor3 = Color3.fromRGB(255, 20, 147) -- Розовый цвет
	textLabel.Font = Enum.Font.FredokaOne
	textLabel.TextScaled = true
	textLabel.Text = "Prestige: " .. formatNumber(player:GetAttribute("Prestige"))

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

-- Обработка при добавлении игрока
Players.PlayerAdded:Connect(function(player)
	player:SetAttribute("Prestige", 0) -- Начальное значение Prestige

	loadPlayerPrestige(player)

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

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

Stars:

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local StarsStore = DataStoreService:GetDataStore("PlayerStars")

-- Функция форматирования числа
local function formatNumber(number)
	local suffixes = {"", "K", "M", "B", "T", "Qd", "Qn", "Sx", "Sp", "Oc", "No"}
	local index = 1

	while number >= 1000 and index < #suffixes do
		number = number / 1000
		index += 1
	end

	if index == #suffixes and number >= 1000 then
		return "999No"
	end

	-- Измененный вывод форматирования
	if number >= 100 then
		return string.format("%d%s", number, suffixes[index]) -- Для целых чисел
	else
		return string.format("%.2f%s", number, suffixes[index]):gsub("%.00", "") -- Удаляем .00 для целых чисел
	end
end

-- Функции управления Stars
local function resetStars(player)
	player:SetAttribute("Stars", 0)
end

local function addStars(player, amount)
	local currentStars = player:GetAttribute("Stars") or 0
	player:SetAttribute("Stars", currentStars + amount)
end

local function subtractStars(player, amount)
	local currentStars = player:GetAttribute("Stars") or 0
	player:SetAttribute("Stars", math.max(currentStars - amount, 0))
end

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

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

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

	local textLabel = Instance.new("TextLabel")
	textLabel.Name = "StarsOverheadText"
	textLabel.Parent = billboardGui
	textLabel.Size = UDim2.new(1, 0, 1, 0)
	textLabel.BackgroundTransparency = 1
	textLabel.TextStrokeTransparency = 0 -- Добавляет черную обводку
	textLabel.TextColor3 = Color3.fromRGB(255, 215, 0) -- Желтый цвет
	textLabel.Font = Enum.Font.FredokaOne
	textLabel.TextScaled = true
	textLabel.Text = "Stars: " .. formatNumber(player:GetAttribute("Stars"))

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

-- Обработка при добавлении игрока
Players.PlayerAdded:Connect(function(player)
	player:SetAttribute("Stars", 0) -- Начальное значение Stars

	loadPlayerStars(player)

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

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