// Simulated admin data - this would be replaced with actual game data let adminData = { players: [ { id: 1, name: "John_Doe", role: "admin", money: 50000, status: "online" }, { id: 2, name: "Jane_Smith", role: "mod", money: 25000, status: "online" }, { id: 3, name: "Mike_Johnson", role: "player", money: 10000, status: "offline" } ], paydayAmount: 1000 }; let selectedPlayerId = null; // Initialize the admin panel function initializeAdmin() { updateStats(); setupFilterListeners(); updatePlayerList(); } // Update header statistics function updateStats() { const onlinePlayers = adminData.players.filter(p => p.status === "online").length; const onlineStaff = adminData.players.filter(p => p.status === "online" && (p.role === "admin" || p.role === "mod")).length; document.getElementById('playerCount').textContent = onlinePlayers; document.getElementById('staffCount').textContent = onlineStaff; } // Set up filter button listeners function setupFilterListeners() { const filterButtons = document.querySelectorAll('.filter-btn'); filterButtons.forEach(button => { button.addEventListener('click', () => { filterButtons.forEach(btn => btn.classList.remove('active')); button.classList.add('active'); filterPlayers(button.dataset.filter); }); }); // Set up search functionality const searchInput = document.getElementById('playerSearch'); searchInput.addEventListener('input', () => { const activeFilter = document.querySelector('.filter-btn.active').dataset.filter; filterPlayers(activeFilter, searchInput.value); }); } // Filter players based on category and search term function filterPlayers(filter, searchTerm = '') { let filteredPlayers = adminData.players; // Apply category filter if (filter === 'online') { filteredPlayers = filteredPlayers.filter(p => p.status === 'online'); } else if (filter === 'staff') { filteredPlayers = filteredPlayers.filter(p => p.role === 'admin' || p.role === 'moderator'); } // Apply search filter if (searchTerm) { const term = searchTerm.toLowerCase(); filteredPlayers = filteredPlayers.filter(p => p.name.toLowerCase().includes(term) ); } updatePlayerList(filteredPlayers); } // Update the player list display function updatePlayerList(players = adminData.players) { const playerList = document.getElementById('playerList'); playerList.innerHTML = players.map(player => `
${player.name} ${player.role} ${player.status} $${player.money.toLocaleString()}
${player.role !== 'admin' ? ` ` : ''} ${player.role !== 'player' ? ` ` : ''}
`).join(''); } // Role management functions function promotePlayer(playerId) { const player = adminData.players.find(p => p.id === playerId); if (player) { if (player.role === 'player') { player.role = 'moderator'; } else if (player.role === 'moderator') { player.role = 'admin'; } updatePlayerList(); } } function demotePlayer(playerId) { const player = adminData.players.find(p => p.id === playerId); if (player) { if (player.role === 'admin') { player.role = 'moderator'; } else if (player.role === 'moderator') { player.role = 'player'; } updatePlayerList(); } } // Money management functions function openMoneyModal(playerId) { selectedPlayerId = playerId; const modal = document.getElementById('moneyModal'); modal.style.display = 'block'; } function closeMoneyModal() { const modal = document.getElementById('moneyModal'); modal.style.display = 'none'; document.getElementById('moneyAmount').value = ''; selectedPlayerId = null; } function giveMoney() { const amount = parseInt(document.getElementById('moneyAmount').value); if (amount && selectedPlayerId) { const player = adminData.players.find(p => p.id === selectedPlayerId); if (player) { player.money += amount; updatePlayerList(); closeMoneyModal(); } } } function takeMoney() { const amount = parseInt(document.getElementById('moneyAmount').value); if (amount && selectedPlayerId) { const player = adminData.players.find(p => p.id === selectedPlayerId); if (player) { player.money = Math.max(0, player.money - amount); updatePlayerList(); closeMoneyModal(); } } } // Message system functions function openMessageModal(playerId) { selectedPlayerId = playerId; const player = adminData.players.find(p => p.id === playerId); const modal = document.getElementById('messageModal'); document.getElementById('messagePlayerName').textContent = player.name; modal.style.display = 'block'; } function closeMessageModal() { const modal = document.getElementById('messageModal'); modal.style.display = 'none'; document.getElementById('messageInput').value = ''; selectedPlayerId = null; } function sendPlayerMessage() { const message = document.getElementById('messageInput').value; if (message && selectedPlayerId) { const player = adminData.players.find(p => p.id === selectedPlayerId); if (player) { console.log(`Message sent to ${player.name}: ${message}`); closeMessageModal(); } } } function broadcastMessage() { const message = document.getElementById('broadcastMessage').value; if (message) { console.log(`Broadcasting message to all players: ${message}`); document.getElementById('broadcastMessage').value = ''; } } // Global actions function triggerPayday() { const amount = parseInt(document.getElementById('paydayAmount').value); if (amount) { adminData.players.forEach(player => { player.money += amount; }); updatePlayerList(); } } // Initialize when DOM is loaded document.addEventListener('DOMContentLoaded', initializeAdmin);