diff --git a/system/pages/lastkills.php b/system/pages/lastkills.php index bea4b9a4..5d915659 100644 --- a/system/pages/lastkills.php +++ b/system/pages/lastkills.php @@ -13,95 +13,97 @@ $title = 'Last Kills'; $players_deaths_count = 0; $players_rows = ''; -if($db->hasTable('player_killers')) // tfs 0.3 -{ - $players_deaths = $db->query('SELECT `player_deaths`.`id`, `player_deaths`.`date`, `player_deaths`.`level`, `players`.`name`' . ($db->hasColumn('players', 'world_id') ? ', `players`.`world_id`' : '') . ' FROM `player_deaths` LEFT JOIN `players` ON `player_deaths`.`player_id` = `players`.`id` ORDER BY `date` DESC LIMIT 0, ' . $config['last_kills_limit']); - if(!empty($players_deaths)) - { - foreach($players_deaths as $death) - { - $players_rows .= '
'.$players_deaths_count.'.
'.date("j.m.Y, G:i:s",$death['date']).'' . getPlayerLink($death['name']). ' '; - $killers = $db->query("SELECT environment_killers.name AS monster_name, players.name AS player_name, players.deleted AS player_exists - FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id - LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id - WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, killers.id ASC")->fetchAll(); - $i = 0; - $count = count($killers); - foreach($killers as $killer) - { - $i++; - if($killer['player_name'] != "") - { - if($i == 1) - { - if($count <= 4) - $players_rows .= 'killed'; - elseif($count > 4 and $count < 10) - $players_rows .= 'slain'; - elseif($count > 9 and $count < 15) - $players_rows .= 'crushed'; - elseif($count > 14 and $count < 20) - $players_rows .= 'eliminated'; - elseif($count > 19) - $players_rows .= 'annihilated'; - - $players_rows .= 'at level ' . $death['level'] . ' by '; - } - else if($i == $count) - $players_rows .= ' and'; - else - $players_rows .= ','; - - $players_rows .= ' by '; - if($killer['monster_name'] != '') - $players_rows .= $killer['monster_name'] . ' summoned by '; - - if($killer['player_exists'] == 0) - $players_rows .= getPlayerLink($killer['player_name']); - } - else - { - if($i == 1) - $players_rows .= 'died at level ' . $death['level'] . ''; - else if($i == $count) - $players_rows .= ' and'; - else - $players_rows .= ','; - - $players_rows .= ' by ' . $killer['monster_name']; - } - } - - $players_rows .= '.'; - if($config['multiworld']) - $player_rows .= ''.$config['worlds'][(int)$death['world_id']].''; - - $players_rows .= ''; - } - } +$tmp = null; +if($cache->enabled() && $cache->fetch('lastkills', $tmp)) { + $tmp = unserialize($tmp); + $players_rows = $tmp['rows']; + $players_deaths_count = $tmp['count']; } else { - //$players_deaths = $db->query("SELECT `p`.`name` AS `victim`, `player_deaths`.`killed_by` as `killed_by`, `player_deaths`.`time` as `time`, `player_deaths`.`is_player` as `is_player`, `player_deaths`.`level` as `level` FROM `player_deaths`, `players` as `d` INNER JOIN `players` as `p` ON player_deaths.player_id = p.id WHERE player_deaths.`is_player`='1' ORDER BY `time` DESC LIMIT " . $config['last_kills_limit'] . ";"); - -$players_deaths = $db->query("SELECT `p`.`name` AS `victim`, `d`.`killed_by` as `killed_by`, `d`.`time` as `time`, `d`.`level`, `d`.`is_player` FROM `player_deaths` as `d` INNER JOIN `players` as `p` ON d.player_id = p.id ORDER BY `time` DESC LIMIT 20;"); - - if(!empty($players_deaths)) + if($db->hasTable('player_killers')) // tfs 0.3 { - foreach($players_deaths as $death) - { - $players_rows .= '
'.$players_deaths_count.'.
'.date("j.m.Y, G:i:s",$death['time']).'' . getPlayerLink($death['victim']). ' died at level ' . $death['level'] . ' by '; - if($death['is_player'] == '1') - $players_rows .= getPlayerLink($death['killed_by']); - else - $players_rows .= $death['killed_by']; + $players_deaths = $db->query('SELECT `player_deaths`.`id`, `player_deaths`.`date`, `player_deaths`.`level`, `players`.`name`' . ($db->hasColumn('players', 'world_id') ? ', `players`.`world_id`' : '') . ' FROM `player_deaths` LEFT JOIN `players` ON `player_deaths`.`player_id` = `players`.`id` ORDER BY `date` DESC LIMIT 0, ' . $config['last_kills_limit']); + if(!empty($players_deaths)) { + foreach($players_deaths as $death) { + $players_rows .= '
' . $players_deaths_count . '.
' . date("j.m.Y, G:i:s", $death['date']) . '' . getPlayerLink($death['name']) . ' '; + $killers = $db->query("SELECT environment_killers.name AS monster_name, players.name AS player_name, players.deleted AS player_exists + FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id + LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id + WHERE killers.death_id = '" . $death['id'] . "' ORDER BY killers.final_hit DESC, killers.id ASC")->fetchAll(); - $players_rows .= '.'; + $i = 0; + $count = count($killers); + foreach($killers as $killer) { + $i++; + if($killer['player_name'] != "") { + if($i == 1) { + if($count <= 4) + $players_rows .= 'killed'; + else if($count > 4 and $count < 10) + $players_rows .= 'slain'; + else if($count > 9 and $count < 15) + $players_rows .= 'crushed'; + else if($count > 14 and $count < 20) + $players_rows .= 'eliminated'; + else if($count > 19) + $players_rows .= 'annihilated'; + + $players_rows .= 'at level ' . $death['level'] . ' by '; + } else if($i == $count) + $players_rows .= ' and'; + else + $players_rows .= ','; + + $players_rows .= ' by '; + if($killer['monster_name'] != '') + $players_rows .= $killer['monster_name'] . ' summoned by '; + + if($killer['player_exists'] == 0) + $players_rows .= getPlayerLink($killer['player_name']); + } else { + if($i == 1) + $players_rows .= 'died at level ' . $death['level'] . ''; + else if($i == $count) + $players_rows .= ' and'; + else + $players_rows .= ','; + + $players_rows .= ' by ' . $killer['monster_name']; + } + } + + $players_rows .= '.'; + if($config['multiworld']) + $player_rows .= '' . $config['worlds'][(int)$death['world_id']] . ''; + + $players_rows .= ''; + } } + } else { + //$players_deaths = $db->query("SELECT `p`.`name` AS `victim`, `player_deaths`.`killed_by` as `killed_by`, `player_deaths`.`time` as `time`, `player_deaths`.`is_player` as `is_player`, `player_deaths`.`level` as `level` FROM `player_deaths`, `players` as `d` INNER JOIN `players` as `p` ON player_deaths.player_id = p.id WHERE player_deaths.`is_player`='1' ORDER BY `time` DESC LIMIT " . $config['last_kills_limit'] . ";"); + + $players_deaths = $db->query("SELECT `p`.`name` AS `victim`, `d`.`killed_by` as `killed_by`, `d`.`time` as `time`, `d`.`level`, `d`.`is_player` FROM `player_deaths` as `d` INNER JOIN `players` as `p` ON d.player_id = p.id ORDER BY `time` DESC LIMIT 20;"); + + if(!empty($players_deaths)) { + foreach($players_deaths as $death) { + $players_rows .= '
' . $players_deaths_count . '.
' . date("j.m.Y, G:i:s", $death['time']) . '' . getPlayerLink($death['victim']) . ' died at level ' . $death['level'] . ' by '; + if($death['is_player'] == '1') + $players_rows .= getPlayerLink($death['killed_by']); + else + $players_rows .= $death['killed_by']; + + $players_rows .= '.'; + } + } + } + + if($cache->enabled()) { + $cache->set('lastkills', serialize(array('rows' => $players_rows, 'count' => $players_deaths_count)), 60); } } -if($players_deaths_count == 0) +if($players_deaths_count === 0) echo '
Last Deaths
No one died on '.$config['lua']['serverName'].'.

'; else echo '
Last Deaths
'.$players_rows.'
';