Загрузка данных


local flyZone = script.Parent

-- Таблица для отслеживания игроков, которые сейчас летят
local flyingPlayers = {}

-- Функция, которая срабатывает, когда кто-то касается зоны
flyZone.Touched:Connect(function(hit)
	local character = hit.Parent
	local player = game.Players:GetPlayerFromCharacter(character)
	
	-- Проверяем, что это реальный игрок, и он еще не летит
	if player and not flyingPlayers[player.UserId] then
		local leaderstats = player:WaitForChild("leaderstats")
		local speed = leaderstats:WaitForChild("Speed")
		local stamina = leaderstats:WaitForChild("Stamina")
		local coins = leaderstats:WaitForChild("Coins")
		
		-- Если выносливости изначально нет, лететь нельзя
		if stamina.Value <= 0 then return end
		
		-- Отмечаем, что игрок начал полет
		flyingPlayers[player.UserId] = true
		
		local hrp = character:WaitForChild("HumanoidRootPart")
		local startY = hrp.Position.Y -- Запоминаем стартовую высоту
		
		-- Отключаем стандартную гравитацию для персонажа, чтобы он летел
		local bodyVelocity = Instance.new("BodyVelocity")
		bodyVelocity.MaxForce = Vector3.new(0, 400000, 0) -- Сила только вверх
		bodyVelocity.Velocity = Vector3.new(0, speed.Value * 10, 0) -- Скорость зависит от прокачки (умножаем для сочности)
		bodyVelocity.Parent = hrp
		
		-- Цикл полета, пока есть стамина
		while flyingPlayers[player.UserId] and stamina.Value > 0 do
			task.wait(1) -- Проверка каждую секунду
			
			-- Тратим 1 единицу стамины в секунду
			stamina.Value = stamina.Value - 1
			
			-- На всякий случай обновляем скорость, если игрок кликает в полете
			bodyVelocity.Velocity = Vector3.new(0, speed.Value * 10, 0)
		end
		
		-- Стамина кончилась! Падаем вниз
		bodyVelocity:Destroy()
		
		-- Считаем пройденные метры (высоту)
		local endY = hrp.Position.Y
		local distance = math.max(0, endY - startY) -- Сколько studs пролетел вверх
		
		-- Твоя формула: 10 метров = +1 монета
		local earnedCoins = math.floor(distance / 10)
		if earnedCoins > 0 then
			coins.Value = coins.Value + earnedCoins
		end
		
		-- Ждем, пока игрок упадет на землю, и разрешаем лететь снова через 3 секунды
		task.wait(3)
		stamina.Value = 10 -- Восстанавливаем базовую стамину для следующего раза
		flyingPlayers[player.UserId] = nil
	end
end)