diff --git a/system/pages/characters.php b/system/pages/characters.php index 786b17b9..ea6db47d 100644 --- a/system/pages/characters.php +++ b/system/pages/characters.php @@ -120,581 +120,576 @@ if(empty($name)) $name = str_replace('/', '', $name); -if(check_name($name)) +$oldName = ''; + +$player = $ots->createObject('Player'); +$player->find($name); +if(!$player->isLoaded()) { - $oldName = ''; - - $player = $ots->createObject('Player'); - $player->find($name); - if(!$player->isLoaded()) + $tmp_zmienna = ""; + $tmp_name = retrieve_former_name($name); + while(!empty($tmp_name)) { - $tmp_zmienna = ""; - $tmp_name = retrieve_former_name($name); - while(!empty($tmp_name)) - { - $tmp_zmienna = $tmp_name; - $tmp_name = retrieve_former_name($tmp_zmienna); - } - - if(!empty($tmp_zmienna)) - $player->find($tmp_zmienna); + $tmp_zmienna = $tmp_name; + $tmp_name = retrieve_former_name($tmp_zmienna); } - if($player->isLoaded() && !$player->isDeleted()) - { - $title = $player->getName() . ' - ' . $title; - $account = $player->getAccount(); - $rows = 0; + if(!empty($tmp_zmienna)) + $player->find($tmp_zmienna); +} + +if($player->isLoaded() && !$player->isDeleted()) +{ + $title = $player->getName() . ' - ' . $title; + $account = $player->getAccount(); + $rows = 0; ?> - <table border="0" cellpadding="0" cellspacing="0" width="100%"><tr> - <td><img src="<?php echo $template_path; ?>/images/general/blank.gif" width="10" height="1" border="0"></td> - <td> - <table border="0" cellspacing="1" cellpadding="4" width="100%"> - <tr bgcolor="<?php echo $config['vdarkborder']; ?>"> - <td colspan="2" class="white"><b>Character Information</b></td> - </tr> + <table border="0" cellpadding="0" cellspacing="0" width="100%"><tr> + <td><img src="<?php echo $template_path; ?>/images/general/blank.gif" width="10" height="1" border="0"></td> + <td> + <table border="0" cellspacing="1" cellpadding="4" width="100%"> + <tr bgcolor="<?php echo $config['vdarkborder']; ?>"> + <td colspan="2" class="white"><b>Character Information</b></td> + </tr> - <?php - $flag = ''; - if($config['account_country']) - $flag = getFlagImage($account->getCustomField('country')); - - echo - '<TR BGCOLOR="' . getStyle(++$rows) . '">'. - '<TD WIDTH=20%>Name:</TD> - <TD>' . $flag . ' <font color="'.($player->isOnline() ? 'green' : 'red').'"><b>'.$player->getName().'</b></font>'.$oldName. - '</TD></TR>'; - - echo - '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Sex:</TD><TD>'. - ($player->getSex() == 0 ? 'female' : 'male'). - '</TD></TR>'; - - if($config['characters']['marriage_info'] && fieldExist('marriage', 'players')) - { - echo - '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Marital status:</TD><TD>'; - $marriage = new OTS_Player(); - $marriage->load($player->getMarriage()); - if($marriage->isLoaded()) - echo 'married to ' . getPlayerLink($marriage->getName()); - else - echo 'single'; - echo - '</TD></TR>'; - } + <?php + $flag = ''; + if($config['account_country']) + $flag = getFlagImage($account->getCustomField('country')); echo - '<TR BGCOLOR="' . getStyle(++$rows). '">'. - '<TD>Profession:</TD><TD>' . $config['vocations'][$player->getVocation()] . '</TD>'. - '</TR>'; - - if($config['characters']['level']) - echo '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Level:</TD><TD>'.$player->getLevel().'</TD></TR>'; - - if($config['characters']['experience']) - echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Experience:</TD><TD>'.$player->getExperience().'</TD></TR>'; - - if($config['characters']['magic_level']) - echo'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Magic Level:</TD><TD>'.$player->getMagLevel().'</TD></TR>'; - - //frags - if(tableExist('player_killers') && $config['characters']['frags']) { - $frags_count = 0; - $frags_query = $db->query( - 'SELECT COUNT(`player_id`) as `frags`' . - 'FROM `player_killers`' . - 'WHERE `player_id` = ' .$player->getId() . ' ' . - 'GROUP BY `player_id`' . - 'ORDER BY COUNT(`player_id`) DESC'); - - if($frags_query->rowCount() > 0) - { - $frags_query = $frags_query->fetch(); - $frags_count = $frags_query['frags']; - } - - echo - '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Frags:</TD><TD>' . $frags_count . '</TD></TR>'; - } - - if(!empty($config['towns'][$player->getTownId()])) - echo '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Residence:</TD><TD>' . $config['towns'][$player->getTownId()] . '</TD></TR>'; - - if($config['characters']['balance']) - echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Balance:</TD><TD>'.$player->getBalance().' Gold Coins.</TD></TR>'; - - $town_field = 'town'; - if(fieldExist('town_id', 'houses')) - $town_field = 'town_id'; - else if(fieldExist('townid', 'houses')) - $town_field = 'townid'; - - $house = $db->query('SELECT `id`, `paid`, `name`, `' . $town_field . '` FROM `houses` WHERE `owner` = '.$player->getId())->fetch(); - if(isset($house['id'])) - { - if($house['paid'] > 0) - $add = ' is paid until '.date("M d Y", $house['paid']); - - echo - '<TR BGCOLOR="'.getStyle(++$rows).'"> - <TD>House:</TD> - <TD> - <TABLE BORDER=0><TR> - <TD>'.$house['name'].' ('.$config['towns'][$house[$town_field]].')'.$add.'</TD> - <TD> - <FORM ACTION="?subtopic=houses&page=view" METHOD=post> - <INPUT TYPE=hidden NAME=house VALUE="'.$house['name'].'"> - <INPUT TYPE=image NAME="View" ALT="View" SRC="'.$template_path.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120> - </FORM> - </TD> - </TR></TABLE> - </TD> - </TR>'; - } - - $rank_of_player = $player->getRank(); - if($rank_of_player->isLoaded()) { - $guild = $rank_of_player->getGuild(); - if($guild->isLoaded()) { - $guild_name = $guild->getName(); - echo - '<TR BGCOLOR="'.getStyle(++$rows).'">'. - '<TD>Guild membership:</TD><TD>'.$rank_of_player->getName().' of the ' . getGuildLink($guild_name) . '</TD>'. - '</TR>'; - } - } + '<TR BGCOLOR="' . getStyle(++$rows) . '">'. + '<TD WIDTH=20%>Name:</TD> + <TD>' . $flag . ' <font color="'.($player->isOnline() ? 'green' : 'red').'"><b>'.$player->getName().'</b></font>'.$oldName. + '</TD></TR>'; echo - '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Last login:</TD><TD>'; - $lastlogin = $player->getLastLogin(); - if(empty($lastlogin)) - echo 'Never logged in.'; + '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Sex:</TD><TD>'. + ($player->getSex() == 0 ? 'female' : 'male'). + '</TD></TR>'; + + if($config['characters']['marriage_info'] && fieldExist('marriage', 'players')) + { + echo + '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Marital status:</TD><TD>'; + $marriage = new OTS_Player(); + $marriage->load($player->getMarriage()); + if($marriage->isLoaded()) + echo 'married to ' . getPlayerLink($marriage->getName()); else - echo date("M d Y, H:i:s", $lastlogin).' CEST'; - - echo '</TD></TR>'; - if($config['characters']['creation_date']) - echo - '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Created:</TD><TD>'.date("M d Y, H:i:s", $player->getCreated()).' CEST</TD></TR>'; - - $comment = $player->getComment();/* - $newlines = array("\r\n", "\n", "\r"); - $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); - if($count < 50) - $comment = $comment_with_lines;*/ - if(!empty($comment)) - echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD VALIGN=top>Comment:</TD><TD>' . wordwrap(nl2br($comment), 60, "<br />", true) . '</TD></TR>'; + echo 'single'; + echo + '</TD></TR>'; + } echo - '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Account Status:</TD><TD>' . (($account->isPremium()) ? 'Premium Account' : 'Free Account') . '</TD></TR>'. - '</TABLE>'; + '<TR BGCOLOR="' . getStyle(++$rows). '">'. + '<TD>Profession:</TD><TD>' . $config['vocations'][$player->getVocation()] . '</TD>'. + '</TR>'; - echo '<br>'. - '<TABLE BORDER=0 WIDTH=100%><TR>'; + if($config['characters']['level']) + echo '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Level:</TD><TD>'.$player->getLevel().'</TD></TR>'; - if($config['characters']['skills']) - { - if(fieldExist('skill_fist', 'players')) {// tfs 1.0+ - $skills_db = $db->query('SELECT `skill_fist`, `skill_club`, `skill_sword`, `skill_axe`, `skill_dist`, `skill_shielding`, `skill_fishing` FROM `players` WHERE `id` = ' . $player->getId())->fetch(); - - $skill_ids = array( - POT::SKILL_FIST => 'skill_fist', - POT::SKILL_CLUB => 'skill_club', - POT::SKILL_SWORD => 'skill_sword', - POT::SKILL_AXE => 'skill_axe', - POT::SKILL_DIST => 'skill_dist', - POT::SKILL_SHIELD => 'skill_shielding', - POT::SKILL_FISH => 'skill_fishing', - ); - - $skills = array(); - foreach($skill_ids as $skillid => $field_name) { - $skills[] = array('skillid' => $skillid, 'value' => $skills_db[$field_name]); - } - } - else - $skills = $db->query('SELECT `skillid`, `value` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' LIMIT 7'); - echo ' - <TD WIDTH=30% VALIGN="TOP">'. - '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> - <TR BGCOLOR='.$config['vdarkborder'].'> - <TD COLSPAN=2 class="white"><B>Skills</B></TD> - </TR>'; + if($config['characters']['experience']) + echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Experience:</TD><TD>'.$player->getExperience().'</TD></TR>'; - $i = 0; - foreach($skills as $skill) - { - echo - '<TR BGCOLOR=' . getStyle(++$i) . '> - <TD VALIGN=top>' . getSkillName($skill['skillid']) . '</TD> - <TD>' . $skill['value'] . '</TD> - </TR>'; - } + if($config['characters']['magic_level']) + echo'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Magic Level:</TD><TD>'.$player->getMagLevel().'</TD></TR>'; - echo - '</TABLE> - </TD>'; - } + //frags + if(tableExist('player_killers') && $config['characters']['frags']) { + $frags_count = 0; + $frags_query = $db->query( + 'SELECT COUNT(`player_id`) as `frags`' . + 'FROM `player_killers`' . + 'WHERE `player_id` = ' .$player->getId() . ' ' . + 'GROUP BY `player_id`' . + 'ORDER BY COUNT(`player_id`) DESC'); - if($config['characters']['quests'] && !empty($config['quests'])) - { - $quests = $config['quests']; - $sql_query_in = ''; - $i = 0; - foreach($quests as $quest_name => $quest_storage) - { - if($i != 0) - $sql_query_in .= ', '; - - $sql_query_in .= $quest_storage; - $i++; - } - - $storage_sql = $db->query('SELECT `key`, `value` FROM `player_storage` WHERE `player_id` = '.$player->getId().' AND `key` IN (' . $sql_query_in . ')'); - $player_storage = array(); - foreach($storage_sql as $storage) - $player_storage[$storage['key']] = $storage['value']; - - echo ' - <TD WIDTH=40% VALIGN="TOP">'. - '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> - <TR BGCOLOR='.$config['vdarkborder'].'> - <TD COLSPAN=2 class="white"><B>Quests</B></TD> - </TR>'; - - //for($i=0; $i < count($quests); $i++) - $i = 0; - foreach($quests as $name => $storage) - { - $i++; - echo - '<TR BGCOLOR='.getStyle($i - 1).'> - <TD VALIGN=top>'.$name.'</TD> - <TD><img src="images/'.($player_storage[$storage] ? 'true' : 'false').'.png" border="0"/></TD> - </TR>'; - } - - echo - '</TABLE> - </TD>'; - } - - if($config['characters']['equipment']) - { - echo ' - <TD WIDTH=100 VALIGN="TOP">'. - '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>'. - '<TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Equipment</B></TD></TR>'. - '<TR BGCOLOR='.getStyle(1).'><TD>'.generate_player_lookup($player).'</TD></TR> - </TABLE> - </TD>'; - } - - echo '</TR></TABLE>'; - - - if(tableExist('killers')) { - $player_deaths = $db->query('SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,10;'); - if(count($player_deaths)) + if($frags_query->rowCount() > 0) { - $dead_add_content = '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Character Deaths</B></TD></TR>'; + $frags_query = $frags_query->fetch(); + $frags_count = $frags_query['frags']; + } - $number_of_rows = 0; - foreach($player_deaths as $death) - { - $dead_add_content .= "<tr bgcolor=\"".getStyle($number_of_rows++)."\"> - <td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['date'])."</td> - <td> "; - $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(); + echo + '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Frags:</TD><TD>' . $frags_count . '</TD></TR>'; + } - $i = 0; - $count = count($killers); - foreach($killers as $killer) - { - $i++; - if($killer['player_name'] != "") - { - if($i == 1) - $dead_add_content .= "Killed at level <b>".$death['level']."</b>"; - else if($i == $count) - $dead_add_content .= " and"; - else - $dead_add_content .= ","; + if(!empty($config['towns'][$player->getTownId()])) + echo '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Residence:</TD><TD>' . $config['towns'][$player->getTownId()] . '</TD></TR>'; - $dead_add_content .= " by "; - if($killer['monster_name'] != "") - $dead_add_content .= $killer['monster_name']." summoned by "; + if($config['characters']['balance']) + echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Balance:</TD><TD>'.$player->getBalance().' Gold Coins.</TD></TR>'; - if($killer['player_exists'] == 0) - $dead_add_content .= getPlayerLink($killer['player_name']); - else - $dead_add_content .= $killer['player_name']; - } - else - { - if($i == 1) - $dead_add_content .= "Died at level <b>".$death['level']."</b>"; - else if($i == $count) - $dead_add_content .= " and"; - else - $dead_add_content .= ","; + $town_field = 'town'; + if(fieldExist('town_id', 'houses')) + $town_field = 'town_id'; + else if(fieldExist('townid', 'houses')) + $town_field = 'townid'; + + $house = $db->query('SELECT `id`, `paid`, `name`, `' . $town_field . '` FROM `houses` WHERE `owner` = '.$player->getId())->fetch(); + if(isset($house['id'])) + { + if($house['paid'] > 0) + $add = ' is paid until '.date("M d Y", $house['paid']); - $dead_add_content .= " by ".$killer['monster_name']; - } - } + echo + '<TR BGCOLOR="'.getStyle(++$rows).'"> + <TD>House:</TD> + <TD> + <TABLE BORDER=0><TR> + <TD>'.$house['name'].' ('.$config['towns'][$house[$town_field]].')'.$add.'</TD> + <TD> + <FORM ACTION="?subtopic=houses&page=view" METHOD=post> + <INPUT TYPE=hidden NAME=house VALUE="'.$house['name'].'"> + <INPUT TYPE=image NAME="View" ALT="View" SRC="'.$template_path.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120> + </FORM> + </TD> + </TR></TABLE> + </TD> + </TR>'; + } - $dead_add_content .= ".</td></tr>"; - } - - if($number_of_rows > 0) - echo $dead_add_content . '</TABLE>'; + $rank_of_player = $player->getRank(); + if($rank_of_player->isLoaded()) { + $guild = $rank_of_player->getGuild(); + if($guild->isLoaded()) { + $guild_name = $guild->getName(); + echo + '<TR BGCOLOR="'.getStyle(++$rows).'">'. + '<TD>Guild membership:</TD><TD>'.$rank_of_player->getName().' of the ' . getGuildLink($guild_name) . '</TD>'. + '</TR>'; } } - else { - $deaths = $db->query('SELECT - `player_id`, `time`, `level`, `killed_by`, `is_player`, - `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified` - FROM `player_deaths` - WHERE `player_id` = ' . $player->getId() . ' ORDER BY `time` DESC LIMIT 10;'); - if(count($deaths)) + echo + '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Last login:</TD><TD>'; + $lastlogin = $player->getLastLogin(); + if(empty($lastlogin)) + echo 'Never logged in.'; + else + echo date("M d Y, H:i:s", $lastlogin).' CEST'; + + echo '</TD></TR>'; + if($config['characters']['creation_date']) + echo + '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Created:</TD><TD>'.date("M d Y, H:i:s", $player->getCreated()).' CEST</TD></TR>'; + + $comment = $player->getComment();/* + $newlines = array("\r\n", "\n", "\r"); + $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); + if($count < 50) + $comment = $comment_with_lines;*/ + if(!empty($comment)) + echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD VALIGN=top>Comment:</TD><TD>' . wordwrap(nl2br($comment), 60, "<br />", true) . '</TD></TR>'; + + echo + '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Account Status:</TD><TD>' . (($account->isPremium()) ? 'Premium Account' : 'Free Account') . '</TD></TR>'. + '</TABLE>'; + + echo '<br>'. + '<TABLE BORDER=0 WIDTH=100%><TR>'; + + if($config['characters']['skills']) { - $dead_add_content = '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Character Deaths</B></TD></TR>'; - - $number_of_rows = 0; - foreach($deaths as $death) - { - $dead_add_content .= "<tr bgcolor=\"".getStyle($number_of_rows++)."\"> - <td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['time'])."</td> - <td> "; - - $lasthit = ($death['is_player']) ? getPlayerLink($death['killed_by']) : $death['killed_by']; - $dead_add_content .= 'Killed at level ' . $death['level'] . ' by ' . $lasthit; - if($death['unjustified']) { - $dead_add_content .= " <font color='red' style='font-style: italic;'>(unjustified)</font>"; - } - - $mostdmg = ($death['mostdamage_by'] !== $death['killed_by']) ? true : false; - if($mostdmg) - { - $mostdmg = ($death['mostdamage_is_player']) ? getPlayerLink($death['mostdamage_by']) : $death['mostdamage_by']; - $dead_add_content .= '<br>and by ' . $mostdmg; - - if ($death['mostdamage_unjustified']) { - $dead_add_content .= " <font color='red' style='font-style: italic;'>(unjustified)</font>"; - } - } - else { - $dead_add_content .= " <b>(soloed)</b>"; - } + if(fieldExist('skill_fist', 'players')) {// tfs 1.0+ + $skills_db = $db->query('SELECT `skill_fist`, `skill_club`, `skill_sword`, `skill_axe`, `skill_dist`, `skill_shielding`, `skill_fishing` FROM `players` WHERE `id` = ' . $player->getId())->fetch(); - $dead_add_content .= ".</td></tr>"; + $skill_ids = array( + POT::SKILL_FIST => 'skill_fist', + POT::SKILL_CLUB => 'skill_club', + POT::SKILL_SWORD => 'skill_sword', + POT::SKILL_AXE => 'skill_axe', + POT::SKILL_DIST => 'skill_dist', + POT::SKILL_SHIELD => 'skill_shielding', + POT::SKILL_FISH => 'skill_fishing', + ); + + $skills = array(); + foreach($skill_ids as $skillid => $field_name) { + $skills[] = array('skillid' => $skillid, 'value' => $skills_db[$field_name]); + } } - - if($number_of_rows > 0) - echo $dead_add_content . '</TABLE>'; - } - } + else + $skills = $db->query('SELECT `skillid`, `value` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' LIMIT 7'); + echo ' + <TD WIDTH=30% VALIGN="TOP">'. + '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> + <TR BGCOLOR='.$config['vdarkborder'].'> + <TD COLSPAN=2 class="white"><B>Skills</B></TD> + </TR>'; - if($config['characters']['frags']) - { - //frags list by Xampy - $i = 0; - $frags_limit = 10; // frags limit to show? // default: 10 - $player_frags = $db->query('SELECT `player_deaths`.*, `players`.`name`, `killers`.`unjustified` FROM `player_deaths` LEFT JOIN `killers` ON `killers`.`death_id` = `player_deaths`.`id` LEFT JOIN `player_killers` ON `player_killers`.`kill_id` = `killers`.`id` LEFT JOIN `players` ON `players`.`id` = `player_deaths`.`player_id` WHERE `player_killers`.`player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,'.$frags_limit.';'); - if(count($player_frags)) + $i = 0; + foreach($skills as $skill) + { + echo + '<TR BGCOLOR=' . getStyle(++$i) . '> + <TD VALIGN=top>' . getSkillName($skill['skillid']) . '</TD> + <TD>' . $skill['value'] . '</TD> + </TR>'; + } + + echo + '</TABLE> + </TD>'; + } + + if($config['characters']['quests'] && !empty($config['quests'])) { - $frags = 0; - $frag_add_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><br><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Victims</B></TD></TR>'; - foreach($player_frags as $frag) + $quests = $config['quests']; + $sql_query_in = ''; + $i = 0; + foreach($quests as $quest_name => $quest_storage) { - $frags++; - $frag_add_content .= '<tr bgcolor="' . getStyle($frags) . '"> - <td width="20%" align="center">' . date("j M Y, H:i", $frag['date']) . '</td> - <td>Fragged <a href="' . getPlayerLink($frag[name], false) . '">' . $frag[name] . '</a> at level ' . $frag[level]; + if($i != 0) + $sql_query_in .= ', '; - $frag_add_content .= ". (".(($frag['unjustified'] == 0) ? "<font size=\"1\" color=\"green\">Justified</font>" : "<font size=\"1\" color=\"red\">Unjustified</font>").")</td></tr>"; + $sql_query_in .= $quest_storage; + $i++; } - if($frags > 0) - echo $frag_add_content . '</TABLE>'; + + $storage_sql = $db->query('SELECT `key`, `value` FROM `player_storage` WHERE `player_id` = '.$player->getId().' AND `key` IN (' . $sql_query_in . ')'); + $player_storage = array(); + foreach($storage_sql as $storage) + $player_storage[$storage['key']] = $storage['value']; + + echo ' + <TD WIDTH=40% VALIGN="TOP">'. + '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> + <TR BGCOLOR='.$config['vdarkborder'].'> + <TD COLSPAN=2 class="white"><B>Quests</B></TD> + </TR>'; + + //for($i=0; $i < count($quests); $i++) + $i = 0; + foreach($quests as $name => $storage) + { + $i++; + echo + '<TR BGCOLOR='.getStyle($i - 1).'> + <TD VALIGN=top>'.$name.'</TD> + <TD><img src="images/'.($player_storage[$storage] ? 'true' : 'false').'.png" border="0"/></TD> + </TR>'; + } + + echo + '</TABLE> + </TD>'; } - } - //Signature - //Js - if($config['signature_enabled']) - { - echo '<script type="text/javascript"> - function showSignLinks() - { - if(document.getElementById(\'signLinks\').style.display == "none") - { - document.getElementById(\'signLinks\').style.display = "inline"; - document.getElementById(\'signText\').innerHTML = "Hide links"; - } - else - { - document.getElementById(\'signLinks\').style.display = "none"; - document.getElementById(\'signText\').innerHTML = "Show links"; - } - } - </script>'; - echo '<br> - <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Signature</B></TD></TR> - <TR BGCOLOR='.$config['lightborder'].'><TD align="center" VALIGN=top>'; - $signature_url = BASE_URL . 'tools/signature/?name=' . urlencode($player->getName()); - if($config['friendly_urls']) - $signature_url = BASE_URL . urlencode($player->getName()) . '.png'; - - echo ' - <img src="' . $signature_url . '" alt="Signature for player '.$player->getName().'"> - <br/> - <b><a href="#" onclick="showSignLinks(); return false;" id="signText">Show links</a></b> - <br> - <table id="signLinks" style="display: none;"> - <tr> - <td>Website:</td> - <td><input type="text" value="<a href="' . getPlayerLink($player->getName(), false) . '"><img src="' . $signature_url . '"></a>" style="width: 400px;" onclick="this.select()"></td> - </tr> - <tr> - <td>Forum::</td> - <td><input type="text" value="[URL=' . getPlayerLink($player->getName(), false) . '][IMG]' . $signature_url . '[/IMG][/URL]" style="width: 400px;" onclick="this.select()"></td> - </tr> - <tr> - <td>Direct link::</td> - <td><input type="text" value="' . $signature_url . '" style="width: 400px;" onclick="this.select()"></td> - </tr> - </table> - </TD></TR> - </TABLE>'; - } - - if($player->getCustomField('hidden') != 1) - { - $rows = 0; - echo '<br/><br/> - <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> - <TR BGCOLOR='.$config['vdarkborder'].'> - <TD COLSPAN=2 class="white"><B>Account Information</B></TD> - </TR>'; - - $realName = $account->getCustomField('rlname'); - if(!empty($realName)) + if($config['characters']['equipment']) { echo ' - <TR BGCOLOR='.getStyle(++$rows).'> - <TD WIDTH=20%>Real name:</TD> - <TD>'.$realName.'</TD> - </TR>'; + <TD WIDTH=100 VALIGN="TOP">'. + '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>'. + '<TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Equipment</B></TD></TR>'. + '<TR BGCOLOR='.getStyle(1).'><TD>'.generate_player_lookup($player).'</TD></TR> + </TABLE> + </TD>'; } - $group = $player->getGroup(); - if($group->isLoaded() && $group->getId() != 1) + echo '</TR></TABLE>'; + + + if(tableExist('killers')) { + $player_deaths = $db->query('SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,10;'); + if(count($player_deaths)) + { + $dead_add_content = '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Character Deaths</B></TD></TR>'; + + $number_of_rows = 0; + foreach($player_deaths as $death) { - echo - '<TR BGCOLOR='.getStyle(++$rows).'> - <TD>Position:</TD> - <TD>' . ucfirst($group->getName()) . '</TD> - </TR>'; - } + $dead_add_content .= "<tr bgcolor=\"".getStyle($number_of_rows++)."\"> + <td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['date'])."</td> + <td> "; + $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(); - $realLocation = $account->getCustomField('location'); - if(isset($realLocation[0])) - { - echo - '<TR BGCOLOR='.getStyle(++$rows).'> - <TD WIDTH=20%>Location:</TD> - <TD>'.$realLocation.'</TD> - </TR>'; - } - - echo - '<TR BGCOLOR='.getStyle(++$rows).'> - <TD WIDTH=20%>Created:</TD>'; - $bannedUntil = ''; - if(tableExist('account_bans')) - $banned = $db->query('SELECT `expires_at` as `expires` FROM `account_bans` WHERE `account_id` = '.$account->getId().' and `expires_at` > ' . time()); - else - $banned = $db->query('SELECT `expires` FROM `bans` WHERE (`value` = '.$account->getId().' or `value` = '.$player->getId().') and `active` = 1 and `type` != 2 and `type` != 4 and `expires` > ' . time()); - foreach($banned as $ban) + $i = 0; + $count = count($killers); + foreach($killers as $killer) + { + $i++; + if($killer['player_name'] != "") { - if($ban['type'] != 2 and $ban['type'] != 4) - $bannedUntil = ' <font color="red">[Banished '.($ban['expires'] == "-1" ? 'forever' : 'until '.date("d F Y, h:s", $ban['expires'])).']</font>'; + if($i == 1) + $dead_add_content .= "Killed at level <b>".$death['level']."</b>"; + else if($i == $count) + $dead_add_content .= " and"; + else + $dead_add_content .= ","; + + $dead_add_content .= " by "; + if($killer['monster_name'] != "") + $dead_add_content .= $killer['monster_name']." summoned by "; + + if($killer['player_exists'] == 0) + $dead_add_content .= getPlayerLink($killer['player_name']); + else + $dead_add_content .= $killer['player_name']; } - echo '<TD>'.date("j F Y, g:i a", $account->getCustomField("created")).$bannedUntil.'</TD> - </TR> - </TABLE>'; + else + { + if($i == 1) + $dead_add_content .= "Died at level <b>".$death['level']."</b>"; + else if($i == $count) + $dead_add_content .= " and"; + else + $dead_add_content .= ","; - echo '<br/><br/> - <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> - <TR BGCOLOR='.$config['vdarkborder'].'> - <TD COLSPAN=4 class="white"><B>Characters</B></TD> - </TR> - <TR BGCOLOR='.$config['darkborder'].'> - <TD WIDTH=62%><B>Name</B></TD> - <TD WIDTH=30%><B>Level</B></TD> - <TD WIDTH=8%><b>Status</b></TD> - <TD><B> </B></TD> - </TR>'; + $dead_add_content .= " by ".$killer['monster_name']; + } + } - $account_players = $account->getPlayersList(); - $account_players->orderBy('name'); - $player_number = 0; - foreach($account_players as $player_list) - { - $player_list_status = ''; - if($player_list->isHidden()) - continue; - - $player_number++; - if($player_list->isOnline()) - $player_list_status = '<b><font color="green">Online</font></b>'; - - echo '<TR BGCOLOR="'.getStyle($player_number).'"><TD><NOBR>'.$player_number.'. '.$player_list->getName(); - echo ($player_list->isDeleted()) ? '<font color="red"> [DELETED]</font>' : ''; - echo '</NOBR></TD><TD>'.$player_list->getLevel().' '.$config['vocations'][$player_list->getVocation()].'</TD><TD>' . $player_list_status . '</TD><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><FORM ACTION="' . internalLayoutLink('characters') . '" METHOD=post><TR><TD><INPUT TYPE=hidden NAME=name VALUE="'.$player_list->getName().'"><INPUT TYPE=image NAME="View '.$player_list->getName().'" ALT="View '.$player_list->getName().'" SRC="'.$template_path.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></FORM></TABLE></TD></TR>'; - } - echo '</TABLE></TD><TD><IMG SRC="'.$template_path.'/images/general/blank.gif" WIDTH=10 HEIGHT=1 BORDER=0></TD></TR></TABLE>'; - } - echo '<br/><br/>' . generate_search_table(); - echo '</TABLE>'; - } - else - { - $search_errors[] = 'Character <b>' . $name . '</b> does not exist or has been deleted.'; - output_errors($search_errors); - $search_errors = array(); - - $promotion = ''; - if(fieldExist('promotion', 'players')) - $promotion = ', `promotion`'; - - $deleted = 'deleted'; - if(fieldExist('deletion', 'players')) - $deleted = 'deletion'; - - $query = $db->query('SELECT `name`, `level`, `vocation`' . $promotion . ' FROM `players` WHERE `name` LIKE ' . $db->quote('%' . $name . '%') . ' AND ' . $deleted . ' != 1;'); - if($query->rowCount() > 0) - { - echo 'Did you mean:<ul>'; - foreach($query as $player) { - if(isset($player['promotion'])) { - if((int)$player['promotion'] > 0) - $player['vocation'] + ($player['promotion'] * 4); + $dead_add_content .= ".</td></tr>"; } - echo '<li>' . getPlayerLink($player['name']) . ' (<small><strong>level ' . $player['level'] . ', ' . $config['vocations'][$player['vocation']] . '</strong></small>)</li>'; + + if($number_of_rows > 0) + echo $dead_add_content . '</TABLE>'; + } + } + else { + $deaths = $db->query('SELECT + `player_id`, `time`, `level`, `killed_by`, `is_player`, + `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified` + FROM `player_deaths` + WHERE `player_id` = ' . $player->getId() . ' ORDER BY `time` DESC LIMIT 10;'); + + if(count($deaths)) + { + $dead_add_content = '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Character Deaths</B></TD></TR>'; + + $number_of_rows = 0; + foreach($deaths as $death) + { + $dead_add_content .= "<tr bgcolor=\"".getStyle($number_of_rows++)."\"> + <td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['time'])."</td> + <td> "; + + $lasthit = ($death['is_player']) ? getPlayerLink($death['killed_by']) : $death['killed_by']; + $dead_add_content .= 'Killed at level ' . $death['level'] . ' by ' . $lasthit; + if($death['unjustified']) { + $dead_add_content .= " <font color='red' style='font-style: italic;'>(unjustified)</font>"; + } + + $mostdmg = ($death['mostdamage_by'] !== $death['killed_by']) ? true : false; + if($mostdmg) + { + $mostdmg = ($death['mostdamage_is_player']) ? getPlayerLink($death['mostdamage_by']) : $death['mostdamage_by']; + $dead_add_content .= '<br>and by ' . $mostdmg; + + if ($death['mostdamage_unjustified']) { + $dead_add_content .= " <font color='red' style='font-style: italic;'>(unjustified)</font>"; + } + } + else { + $dead_add_content .= " <b>(soloed)</b>"; + } + + $dead_add_content .= ".</td></tr>"; + } + + if($number_of_rows > 0) + echo $dead_add_content . '</TABLE>'; } - echo '</ul>'; } - echo generate_search_table(true); + if($config['characters']['frags']) + { + //frags list by Xampy + $i = 0; + $frags_limit = 10; // frags limit to show? // default: 10 + $player_frags = $db->query('SELECT `player_deaths`.*, `players`.`name`, `killers`.`unjustified` FROM `player_deaths` LEFT JOIN `killers` ON `killers`.`death_id` = `player_deaths`.`id` LEFT JOIN `player_killers` ON `player_killers`.`kill_id` = `killers`.`id` LEFT JOIN `players` ON `players`.`id` = `player_deaths`.`player_id` WHERE `player_killers`.`player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,'.$frags_limit.';'); + if(count($player_frags)) + { + $frags = 0; + $frag_add_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><br><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Victims</B></TD></TR>'; + foreach($player_frags as $frag) + { + $frags++; + $frag_add_content .= '<tr bgcolor="' . getStyle($frags) . '"> + <td width="20%" align="center">' . date("j M Y, H:i", $frag['date']) . '</td> + <td>Fragged <a href="' . getPlayerLink($frag[name], false) . '">' . $frag[name] . '</a> at level ' . $frag[level]; + + $frag_add_content .= ". (".(($frag['unjustified'] == 0) ? "<font size=\"1\" color=\"green\">Justified</font>" : "<font size=\"1\" color=\"red\">Unjustified</font>").")</td></tr>"; + } + if($frags > 0) + echo $frag_add_content . '</TABLE>'; + } + } + + //Signature + //Js + if($config['signature_enabled']) + { + echo '<script type="text/javascript"> + function showSignLinks() + { + if(document.getElementById(\'signLinks\').style.display == "none") + { + document.getElementById(\'signLinks\').style.display = "inline"; + document.getElementById(\'signText\').innerHTML = "Hide links"; + } + else + { + document.getElementById(\'signLinks\').style.display = "none"; + document.getElementById(\'signText\').innerHTML = "Show links"; + } + } + </script>'; + echo '<br> + <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Signature</B></TD></TR> + <TR BGCOLOR='.$config['lightborder'].'><TD align="center" VALIGN=top>'; + $signature_url = BASE_URL . 'tools/signature/?name=' . urlencode($player->getName()); + if($config['friendly_urls']) + $signature_url = BASE_URL . urlencode($player->getName()) . '.png'; + + echo ' + <img src="' . $signature_url . '" alt="Signature for player '.$player->getName().'"> + <br/> + <b><a href="#" onclick="showSignLinks(); return false;" id="signText">Show links</a></b> + <br> + <table id="signLinks" style="display: none;"> + <tr> + <td>Website:</td> + <td><input type="text" value="<a href="' . getPlayerLink($player->getName(), false) . '"><img src="' . $signature_url . '"></a>" style="width: 400px;" onclick="this.select()"></td> + </tr> + <tr> + <td>Forum::</td> + <td><input type="text" value="[URL=' . getPlayerLink($player->getName(), false) . '][IMG]' . $signature_url . '[/IMG][/URL]" style="width: 400px;" onclick="this.select()"></td> + </tr> + <tr> + <td>Direct link::</td> + <td><input type="text" value="' . $signature_url . '" style="width: 400px;" onclick="this.select()"></td> + </tr> + </table> + </TD></TR> + </TABLE>'; } + + if($player->getCustomField('hidden') != 1) + { + $rows = 0; + echo '<br/><br/> + <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> + <TR BGCOLOR='.$config['vdarkborder'].'> + <TD COLSPAN=2 class="white"><B>Account Information</B></TD> + </TR>'; + + $realName = $account->getCustomField('rlname'); + if(!empty($realName)) + { + echo ' + <TR BGCOLOR='.getStyle(++$rows).'> + <TD WIDTH=20%>Real name:</TD> + <TD>'.$realName.'</TD> + </TR>'; + } + + $group = $player->getGroup(); + if($group->isLoaded() && $group->getId() != 1) + { + echo + '<TR BGCOLOR='.getStyle(++$rows).'> + <TD>Position:</TD> + <TD>' . ucfirst($group->getName()) . '</TD> + </TR>'; + } + + $realLocation = $account->getCustomField('location'); + if(isset($realLocation[0])) + { + echo + '<TR BGCOLOR='.getStyle(++$rows).'> + <TD WIDTH=20%>Location:</TD> + <TD>'.$realLocation.'</TD> + </TR>'; + } + + echo + '<TR BGCOLOR='.getStyle(++$rows).'> + <TD WIDTH=20%>Created:</TD>'; + $bannedUntil = ''; + if(tableExist('account_bans')) + $banned = $db->query('SELECT `expires_at` as `expires` FROM `account_bans` WHERE `account_id` = '.$account->getId().' and `expires_at` > ' . time()); + else + $banned = $db->query('SELECT `expires` FROM `bans` WHERE (`value` = '.$account->getId().' or `value` = '.$player->getId().') and `active` = 1 and `type` != 2 and `type` != 4 and `expires` > ' . time()); + foreach($banned as $ban) + { + if($ban['type'] != 2 and $ban['type'] != 4) + $bannedUntil = ' <font color="red">[Banished '.($ban['expires'] == "-1" ? 'forever' : 'until '.date("d F Y, h:s", $ban['expires'])).']</font>'; + } + echo '<TD>'.date("j F Y, g:i a", $account->getCustomField("created")).$bannedUntil.'</TD> + </TR> + </TABLE>'; + + echo '<br/><br/> + <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> + <TR BGCOLOR='.$config['vdarkborder'].'> + <TD COLSPAN=4 class="white"><B>Characters</B></TD> + </TR> + <TR BGCOLOR='.$config['darkborder'].'> + <TD WIDTH=62%><B>Name</B></TD> + <TD WIDTH=30%><B>Level</B></TD> + <TD WIDTH=8%><b>Status</b></TD> + <TD><B> </B></TD> + </TR>'; + + $account_players = $account->getPlayersList(); + $account_players->orderBy('name'); + $player_number = 0; + foreach($account_players as $player_list) + { + $player_list_status = ''; + if($player_list->isHidden()) + continue; + + $player_number++; + if($player_list->isOnline()) + $player_list_status = '<b><font color="green">Online</font></b>'; + + echo '<TR BGCOLOR="'.getStyle($player_number).'"><TD><NOBR>'.$player_number.'. '.$player_list->getName(); + echo ($player_list->isDeleted()) ? '<font color="red"> [DELETED]</font>' : ''; + echo '</NOBR></TD><TD>'.$player_list->getLevel().' '.$config['vocations'][$player_list->getVocation()].'</TD><TD>' . $player_list_status . '</TD><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><FORM ACTION="' . internalLayoutLink('characters') . '" METHOD=post><TR><TD><INPUT TYPE=hidden NAME=name VALUE="'.$player_list->getName().'"><INPUT TYPE=image NAME="View '.$player_list->getName().'" ALT="View '.$player_list->getName().'" SRC="'.$template_path.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></FORM></TABLE></TD></TR>'; + } + echo '</TABLE></TD><TD><IMG SRC="'.$template_path.'/images/general/blank.gif" WIDTH=10 HEIGHT=1 BORDER=0></TD></TR></TABLE>'; + } + echo '<br/><br/>' . generate_search_table(); + echo '</TABLE>'; } else - $search_errors[] = 'This name contains invalid letters. Please use only A-Z, a-z and space. Minimum length is 3 characters.'; +{ + $search_errors[] = 'Character <b>' . $name . '</b> does not exist or has been deleted.'; + output_errors($search_errors); + $search_errors = array(); + + $promotion = ''; + if(fieldExist('promotion', 'players')) + $promotion = ', `promotion`'; + + $deleted = 'deleted'; + if(fieldExist('deletion', 'players')) + $deleted = 'deletion'; + + $query = $db->query('SELECT `name`, `level`, `vocation`' . $promotion . ' FROM `players` WHERE `name` LIKE ' . $db->quote('%' . $name . '%') . ' AND ' . $deleted . ' != 1;'); + if($query->rowCount() > 0) + { + echo 'Did you mean:<ul>'; + foreach($query as $player) { + if(isset($player['promotion'])) { + if((int)$player['promotion'] > 0) + $player['vocation'] + ($player['promotion'] * 4); + } + echo '<li>' . getPlayerLink($player['name']) . ' (<small><strong>level ' . $player['level'] . ', ' . $config['vocations'][$player['vocation']] . '</strong></small>)</li>'; + } + echo '</ul>'; + } + + echo generate_search_table(true); +} if(!empty($search_errors)) output_errors($search_errors);