['min_matches' => 25, 'display_name' => 'All Matches (min 25)'], // Skipping 'all' as per original logic 'clan_casual' => ['min_matches' => 18, 'display_name' => 'Clan Casual (min 18 matches, min 2 clan players)'], 'Intense' => ['min_matches' => 18, 'display_name' => 'Intense BR (min 18 matches)'], 'Casual' => ['min_matches' => 18, 'display_name' => 'Casual (min 18 matches)'], 'official' => ['min_matches' => 18, 'display_name' => 'Official (min 18 matches)'], 'custom' => ['min_matches' => 8, 'display_name' => 'Custom (min 8 matches)'], 'Ranked' => ['min_matches' => 8, 'display_name' => 'Ranked (min 8 matches)'], ]; // Load clan members to identify alts $clanMembersPath = './config/clanmembers.json'; if (file_exists($clanMembersPath)) { $clanmembersJson = file_get_contents($clanMembersPath); $clanmembersData = json_decode($clanmembersJson, true); if (isset($clanmembersData['alts']) && is_array($clanmembersData['alts'])) { $alts = $clanmembersData['alts']; } else { $dataError .= " Error reading or invalid format for 'alts' in clan members file."; } } else { $dataError .= " Clan members file not found."; } // Load player stats data $statsPath = './data/player_last_stats.json'; if (file_exists($statsPath)) { $statsJson = file_get_contents($statsPath); $playersStatsData = json_decode($statsJson, true); if (!is_array($playersStatsData)) { $dataError .= " Error decoding player last stats data."; $playersStatsData = null; } else { $lastUpdated = htmlspecialchars($playersStatsData['updated'] ?? 'N/A'); // Process stats for each defined category foreach ($categories as $key => $categoryInfo) { if (isset($playersStatsData[$key]) && is_array($playersStatsData[$key])) { $categoryStats = []; foreach ($playersStatsData[$key] as $player_data) { // Basic validation and alt check if (!isset($player_data['playername']) || is_null($player_data['playername']) || in_array($player_data['playername'], $alts)) { continue; } // Minimum matches check $matchesPlayed = $player_data['matches'] ?? 0; if ($matchesPlayed < $categoryInfo['min_matches']) { continue; } // Format stats for display $formatted_player_data = []; $formatted_player_data['playername'] = htmlspecialchars($player_data['playername']); $formatted_player_data['deaths'] = number_format($player_data['deaths'] ?? 0, 0, ',', ''); $formatted_player_data['kills'] = number_format($player_data['kills'] ?? 0, 0, ',', ''); $formatted_player_data['humankills'] = number_format($player_data['humankills'] ?? 0, 0, ',', ''); $formatted_player_data['matches'] = htmlspecialchars($matchesPlayed); $formatted_player_data['wins'] = number_format($player_data['wins'] ?? 0, 0, ',', ''); $formatted_player_data['winratio'] = number_format($player_data['winratio'] ?? 0, 2, ',', ''); $formatted_player_data['ahd'] = number_format($player_data['ahd'] ?? 0, 2, ',', ''); // Format K/D (handle null, Infinity, non-numeric) $kd_h_raw = $player_data['KD_H'] ?? null; $formatted_player_data['KD_H'] = ($kd_h_raw === null) ? "N/A" : (($kd_h_raw == "Infinity") ? "∞" : (is_numeric($kd_h_raw) ? number_format((float)$kd_h_raw, 2, ',', '') : "0")); $kd_all_raw = $player_data['KD_ALL'] ?? null; $formatted_player_data['KD_ALL'] = ($kd_all_raw === null) ? "N/A" : (($kd_all_raw == "Infinity") ? "∞" : (is_numeric($kd_all_raw) ? number_format((float)$kd_all_raw, 2, ',', '') : "0")); // Format change indicator $originalChange = isset($player_data['change']) ? str_replace(',', '.', $player_data['change']) : '0'; $changeValue = floatval($originalChange); $formatted_player_data['change_value'] = number_format($changeValue, 2, ',', ''); // Display formatted number if ($changeValue < 0) { $formatted_player_data['change_image'] = 'images/red.png'; $formatted_player_data['change_alt'] = 'Decrease'; } elseif ($changeValue > 0) { $formatted_player_data['change_image'] = 'images/green.png'; $formatted_player_data['change_alt'] = 'Increase'; } else { $formatted_player_data['change_image'] = 'images/equal.png'; $formatted_player_data['change_alt'] = 'No change'; } $categoryStats[] = $formatted_player_data; } $processedStats[$key] = $categoryStats; } } } } else { $dataError .= " Player last stats data file not found."; } ?>

Player Stats Past Quarter

$categoryInfo): ?>

No players met the criteria for this category.

Player Win % AHD K/D Human Human Kills K/D All Kills Matches Wins Deaths Win % Change
<?php echo htmlspecialchars($player_stat['change_alt']); ?>

Last update: