Загрузка данных
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex, noarchive, nosnippet, noimageindex">
<link rel="icon" type="image/png" href="images/logo.png">
<title>Forbes - Lunacy Online</title>
<meta name="description" content="Список самых богатых игроков Lunacy Online.">
<meta property="og:title" content="Forbes - Lunacy Online">
<meta property="og:description" content="Список самых богатых игроков Lunacy Online.">
<meta property="og:url" content="https://forum-lunacy-rp.ru/forbes.html">
<meta property="og:image" content="https://forum-lunacy-rp.ru/images/logo.png">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Lunacy Online">
<script src="3.4.17"></script>
<script>
tailwind.config = {
theme: {
extend: {
keyframes: {
'fade-in-up': {
'0%': { opacity: '0', transform: 'translateY(20px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
}
},
animation: {
'fade-in-up': 'fade-in-up 0.6s ease-out forwards',
},
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
},
},
};
</script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
<link href="css2?family=Inter:wght@400;700;900&display=swap" rel="stylesheet">
<style>
:root {
--theme-page-from: #172554;
--theme-page-to: #000000;
--theme-accent: #60a5fa;
--theme-accent-soft: #93c5fd;
--theme-accent-dark: #2563eb;
--theme-muted: #60a5fa;
--site-header-height: 5rem;
}
html { scroll-behavior: smooth; -ms-overflow-style: none; scrollbar-width: none; }
html::-webkit-scrollbar { display: none; }
*, *::before, *::after { box-sizing: border-box; }
body { min-width: 320px; overflow-x: hidden; }
.theme-footer {
position: relative;
overflow: hidden;
background: linear-gradient(
180deg,
#06142f 0%,
#020611 62%,
#000 100%
) !important;
}
.no-copy {
-webkit-user-select: none;
user-select: none;
-webkit-touch-callout: none;
}
</style>
</head>
<body class="bg-black text-white font-sans theme-public relative no-copy">
<header class="fixed top-0 left-0 right-0 z-40 bg-black/50 backdrop-blur-md">
<div class="container mx-auto px-4 flex items-center gap-5 h-20">
<a href="index.htm" class="flex items-center gap-2 text-white hover:text-blue-400 transition-colors">
<img src="images/logo.png" alt="Lunacy Logo" class="w-12 h-12">
<span class="font-bold text-xl uppercase tracking-wider">Lunacy</span>
</a>
<nav class="hidden lg:flex items-center gap-5 ml-2">
<a href="index.htm" class="uppercase text-sm font-bold tracking-widest text-gray-400 hover:text-white transition-colors duration-200">
главная
</a>
<a href="shop.html" class="uppercase text-sm font-bold tracking-widest text-gray-400 hover:text-white transition-colors duration-200">
магазин
</a>
<a href="forbes.html" class="uppercase text-sm font-bold tracking-widest text-blue-400 transition-colors duration-200">
forbes
</a>
<a href="news.html" class="uppercase text-sm font-bold tracking-widest text-gray-400 hover:text-white transition-colors duration-200">
новости
</a>
<a href="https://forum-lunacy-rp.ru/index.php" target="_blank" rel="noopener noreferrer" class="uppercase text-sm font-bold tracking-widest text-gray-400 hover:text-white transition-colors duration-200">
форум
</a>
</nav>
<div class="hidden lg:flex items-center gap-3 ml-auto">
<div class="inline-flex items-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-900/75 text-slate-100">
<svg class="w-4 h-4 text-slate-300" viewbox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M16 11a4 4 0 1 0-4-4 4 4 0 0 0 4 4Zm-8 1a3 3 0 1 0-3-3 3 3 0 0 0 3 3Zm8 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4Zm-8 0c-.29 0-.62.02-.97.05C4.57 14.3 1 15.5 1 17.99V20h6v-2c0-1.18.47-2.22 1.3-3.08A9.33 9.33 0 0 0 8 14Z"></path>
</svg>
<span class="text-sm font-semibold">
Игроков:
<span id="header-online-players">...</span>
/
<span id="header-online-max">...</span>
</span>
</div>
<a href="cabinet.html" class="inline-flex items-center gap-2 px-5 py-2.5 bg-slate-900/80 border border-blue-500/60 text-blue-100 font-bold text-sm uppercase tracking-wide rounded-lg transition-all duration-300 hover:bg-blue-600/85 hover:text-white hover:border-blue-300 shadow-[0_0_16px_rgba(59,130,246,0.28)]">
<svg class="w-4 h-4" viewbox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M12 12a5 5 0 1 0-5-5 5 5 0 0 0 5 5Zm0 2c-4.411 0-8 2.015-8 4.5V21h16v-2.5c0-2.485-3.589-4.5-8-4.5Z"></path>
</svg>
Личный кабинет
</a>
</div>
<button id="mobile-menu-toggle" class="lg:hidden z-50 text-white" type="button" aria-label="Открыть меню">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewbox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path>
</svg>
</button>
</div>
</header>
<div id="mobile-menu" class="hidden fixed inset-0 top-20 bg-black/90 backdrop-blur-sm lg:hidden z-30 animate-fade-in-up">
<nav class="flex flex-col items-center justify-center h-full text-center space-y-8">
<a href="index.htm" class="mobile-nav-link text-2xl uppercase font-bold tracking-widest text-gray-400 hover:text-white transition-colors duration-200">
главная
</a>
<a href="shop.html" class="mobile-nav-link text-2xl uppercase font-bold tracking-widest text-gray-400 hover:text-white transition-colors duration-200">
магазин
</a>
<a href="forbes.html" class="mobile-nav-link text-2xl uppercase font-bold tracking-widest text-blue-400 transition-colors duration-200">
forbes
</a>
<a href="news.html" class="mobile-nav-link text-2xl uppercase font-bold tracking-widest text-gray-400 hover:text-white transition-colors duration-200">
новости
</a>
<a href="https://forum-lunacy-rp.ru/index.php" target="_blank" rel="noopener noreferrer" class="mobile-nav-link text-2xl uppercase font-bold tracking-widest text-gray-400 hover:text-white transition-colors duration-200">
форум
</a>
<a href="cabinet.html" class="mobile-nav-link mt-2 inline-flex items-center gap-2 px-8 py-4 bg-slate-900/80 border border-blue-500/60 text-blue-100 font-bold text-lg rounded-lg transition-all duration-300 hover:bg-blue-600/85 hover:text-white hover:border-blue-300">
Личный кабинет
</a>
</nav>
</div>
<main class="pt-32 pb-20 min-h-screen bg-[#06142f] animate-fade-in-up">
<div class="container mx-auto px-4 max-w-4xl">
<h1 class="text-4xl md:text-5xl font-black text-center text-blue-300 mb-4 uppercase tracking-wider">
Forbes
</h1>
<p class="text-gray-400 text-center mb-10">Топ самых богатых и влиятельных игроков Lunacy Online</p>
<!-- Блок пьедестала (1, 2, 3 места) -->
<div id="forbes-top3" class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-10 items-end">
<!-- Пьедестал сгенерируется через JS -->
</div>
<!-- Таблица для остального топа -->
<div class="bg-slate-900/80 border border-blue-800/40 rounded-xl overflow-hidden shadow-xl">
<div id="forbes-list" class="divide-y divide-slate-800">
<div class="p-6 text-center text-gray-400">
Загрузка списка богатейших игроков...
</div>
</div>
</div>
</div>
</main>
<footer class="theme-footer py-12 text-center text-gray-400">
<div class="mx-auto px-4">
<img src="images/logo.png" alt="Lunacy Logo" class="w-16 h-16 mx-auto mb-4">
<p class="text-sm">© 2026 Lunacy CRMP. Все права защищены.</p>
</div>
</footer>
<script>
// Переключатель мобильного меню
const btn = document.getElementById('mobile-menu-toggle');
const menu = document.getElementById('mobile-menu');
if (btn && menu) {
btn.addEventListener('click', () => {
menu.classList.toggle('hidden');
});
}
// Загрузка онлайна
async function updateOnline(){
try{
const response = await fetch("online.php");
const data = await response.json();
const playersEl = document.getElementById("header-online-players");
const maxPlayersEl = document.getElementById("header-online-max");
if(data.status === "online"){
if(playersEl) playersEl.innerText = data.players;
if(maxPlayersEl) maxPlayersEl.innerText = data.maxplayers;
} else {
if(playersEl) playersEl.innerText = "0";
if(maxPlayersEl) maxPlayersEl.innerText = "0";
}
} catch(e) {
const playersEl = document.getElementById("header-online-players");
if(playersEl) playersEl.innerText = "Off";
}
}
updateOnline();
setInterval(updateOnline, 5000);
// Подгрузка данных Forbes из BD
function formatMoney(amount) {
return new Intl.NumberFormat('ru-RU').format(amount) + ' ₽';
}
function getSkinUrl(skinId) {
return `images/skin/${skinId}.png`;
}
async function loadForbes() {
const listContainer = document.getElementById('forbes-list');
const top3Container = document.getElementById('forbes-top3');
try {
const response = await fetch('forbes_api.php');
const players = await response.json();
if (!Array.isArray(players) || players.length === 0) {
listContainer.innerHTML = '<div class="p-6 text-center text-gray-400">Список пока пуст.</div>';
return;
}
// Вывод ТОП-3 (Пьедестал)
const top3 = players.slice(0, 3);
const rest = players.slice(3);
// Порядок на пьедестале: 2 место, 1 место, 3 место
const pedestalOrder = [
top3[1] || null, // 2 место
top3[0] || null, // 1 место
top3[2] || null // 3 место
];
top3Container.innerHTML = pedestalOrder.map((player, idx) => {
if (!player) return '';
const rank = players.indexOf(player) + 1;
const isFirst = rank === 1;
return `
<div class="bg-slate-900/90 border ${isFirst ? 'border-yellow-500/60 shadow-[0_0_20px_rgba(234,179,8,0.2)]' : 'border-blue-800/40'} rounded-xl p-6 text-center flex flex-col items-center">
<div class="text-xs font-bold uppercase tracking-wider ${isFirst ? 'text-yellow-400' : 'text-blue-400'} mb-2">#${rank} Место</div>
<img src="${getSkinUrl(player.skin)}" onError="this.src='images/logo.png'" class="w-24 h-24 object-contain mb-3">
<div class="font-bold text-lg text-white">${player.name}</div>
<div class="text-sm ${isFirst ? 'text-yellow-400 font-bold' : 'text-green-400'} mt-1">${formatMoney(player.money)}</div>
</div>
`;
}).join('');
// Вывод остального списка (от 4 места и ниже)
if (rest.length > 0) {
listContainer.innerHTML = rest.map((player, idx) => `
<div class="p-4 flex items-center justify-between hover:bg-slate-800/50 transition-colors">
<div class="flex items-center gap-4">
<span class="font-bold text-gray-500 w-6 text-center">#${idx + 4}</span>
<img src="${getSkinUrl(player.skin)}" onError="this.src='images/logo.png'" class="w-10 h-10 object-contain">
<span class="font-bold text-white">${player.name}</span>
</div>
<span class="text-green-400 font-semibold">${formatMoney(player.money)}</span>
</div>
`).join('');
} else {
listContainer.innerHTML = '';
}
} catch (e) {
listContainer.innerHTML = '<div class="p-6 text-center text-red-400">Ошибка при загрузке данных топа.</div>';
}
}
loadForbes();
</script>
</body>
</html>