function showPlayerEquip($guid, $char, $char_data, $char_stats) { global $lang; $char_name = $char['name']; $powerType = $char_data[UNIT_FIELD_BYTES_0] >> 24 & 255; $genderId = $char['gender']; $class = $char['class']; $race = $char['race']; $money = $char['money']; $level = $char['level']; $health = $char['health']; $maxhealth = $char_stats['maxhealth']; $power = $char_stats['maxpower1']; $maxpower = $char_stats['maxpower1']; echo "<table cellSpacing=0 cellPadding=0 border=0px>"; echo "<tbody><tr><td width=356px height=468px align=left valign=top>"; echo "<div style=\"position: relative; border: 0px; left: 0px; top: 0px;\">"; if (getRace($race)) { $frame = $genderId . "_" . $race . ".gif"; } else { $frame = "TempPortrait.gif"; } echo "<img src=images/player_info/characterframe/{$frame} style=\"position: absolute; border: 0px; left: 9px; top: 6px;\">"; echo "<img src=images/player_info/characterframe/characterframe.png style=\"position: absolute; border: 0px; left: 0px; top: 0px;\">"; echo "<table cellspacing=0 class=playerName style='position: absolute; left: 73px; top: 15px;'>"; echo "<tbody>"; echo "<tr><td class=name>{$char_name} - " . getClass($class) . " {$level} lvl</td></tr>"; echo "</tbody>"; echo "</table>"; // Вычисление и генерация переменных $health и $maxhealth для создания изменяемой полоски if ($health > $maxhealth) { $health = $maxhealth; } $maxhealth != 0 ? $h_percent = round($health / $maxhealth * 100, 0) : ($h_percent = 0); $h_percent == 0 ? $h_l_on_off = "left-off" : ($h_l_on_off = "left-on"); $h_percent == 100 ? $h_r_on_off = "right-on" : ($h_r_on_off = "right-off"); echo "<table cellpadding='0' cellspacing='0' width=275px style='position:absolute; top:37px; left:73px'>"; echo "<tbody>"; echo "<tr>"; echo "<td style='position:absolute; width: 275px; font-size:10px;' align = center><font color=white><b>{$health} / {$maxhealth}</b></font></td>"; echo "<td style='width: 6px; background: url(images/bar/{$h_l_on_off}.gif) left no-repeat;'></td>"; echo "<td style='width: " . $h_percent * 2.75 . "; height:13px; background: url(images/bar/bar-on.gif) repeat-x;'></td>"; echo "<td style='width: " . (275 - $h_percent * 2.75) . "; height:13px; background: url(images/bar/bar-off.gif) repeat-x;'></td>"; echo "<td style='width: 6px;background: url(images/bar/{$h_r_on_off}.gif) right no-repeat;'></td>"; echo "</tr>"; echo "</tbody>"; echo "</table>"; // Вычисление и генерация переменных $power и $maxpower для создания изменяемой полоски if ($power > $maxpower) { $power = $maxpower; } //Цвет полоски if ($powerType == 3) { $typeSlid = "energy"; } elseif ($powerType == 1) { $typeSlid = "rage"; } else { $typeSlid = "mana"; } //Мана $m_percent = $maxpower != 0 ? round($power / $maxpower * 100, 0) : 0; $m_l_on_off = $m_percent == 0 ? "left-off" : "{$typeSlid}-left-on"; $m_r_on_off = $m_percent == 100 ? "{$typeSlid}-right-on" : "right-off"; echo "<table cellpadding='0' cellspacing='0' width=275px style='position:absolute; top:55px; left:73px'>"; echo "<tbody>"; echo "<tr>"; echo "<td style='position:absolute; width: 275px; font-size:10px;' align = center><font color=white><b>{$power} / {$maxpower}</b></font></td>"; echo "<td style='width: 6px; height:13px; background: url(images/bar/{$m_l_on_off}.gif) left no-repeat;'></td>"; echo "<td style='width: " . $m_percent * 2.75 . "px; height:13px; background: url(images/bar/{$typeSlid}-bar-on.gif) repeat-x;'></td>"; echo "<td style='width: " . (275 - $m_percent * 2.75) . "px; height:13px; background: url(images/bar/bar-off.gif) repeat-x;'></td>"; echo "<td style='width: 6px; height:13px; background: url(images/bar/{$m_r_on_off}.gif) right no-repeat;'></td>"; echo "</tr>"; echo "</tbody>"; echo "</table>"; // Player stats render echo '<table class=playerstats cellSpacing=0 style="width: 230; position: absolute; left: 68; top: 78;">'; echo '<tbody>'; // Resistances render echo '<tr><td colspan=2 align=center>'; echo '<table class=resistances cellSpacing=0>'; echo '<tbody>'; echo "<tr>\n"; renderResist(SCHOOL_FIRE, $char_data); echo "\n"; renderResist(SCHOOL_NATURE, $char_data); echo "\n"; renderResist(SCHOOL_FROST, $char_data); echo "\n"; renderResist(SCHOOL_SHADOW, $char_data); echo "\n"; renderResist(SCHOOL_ARCANE, $char_data); echo "\n"; echo "</tr>\n"; echo '</tbody>'; echo '</table>'; echo '</td></tr>'; echo '<tr><td class=head width=50%>' . $lang['player_page_base'] . '</td><td class=head width=50%>' . $lang['player_page_defense'] . '</td></tr>'; echo '<tr>'; // Base Stats render echo '<td>'; echo '<div style="position: relative; left: 0; top: 0;">'; echo '<table class=stattext cellSpacing=0>'; echo "<tr><td>" . getStatTypeName(STAT_STRENGTH) . ":</td></tr>\n"; echo "<tr><td>" . getStatTypeName(STAT_AGILITY) . ":</td></tr>\n"; echo "<tr><td>" . getStatTypeName(STAT_STAMINA) . ":</td></tr>\n"; echo "<tr><td>" . getStatTypeName(STAT_INTELLECT) . ":</td></tr>\n"; echo "<tr><td>" . getStatTypeName(STAT_SPIRIT) . ":</td></tr>\n"; echo "<tr><td>" . getResistance(SCHOOL_ARMOR) . ":</td></tr>\n"; echo "</table>\n"; echo "<table class=statvalue cellSpacing=0 style=\"position: absolute; left: 0; top: 0;\">\n"; echo "<tr>"; renderStatRow(STAT_STRENGTH, $char_data); echo "</tr>\n"; echo "<tr>"; renderStatRow(STAT_AGILITY, $char_data); echo "</tr>\n"; echo "<tr>"; renderStatRow(STAT_STAMINA, $char_data); echo "</tr>\n"; echo "<tr>"; renderStatRow(STAT_INTELLECT, $char_data); echo "</tr>\n"; echo "<tr>"; renderStatRow(STAT_SPIRIT, $char_data); echo "</tr>\n"; echo "<tr>"; renderResist(SCHOOL_ARMOR, $char_data); echo "</tr>\n"; echo '</table>'; echo '</div>'; echo '</td>'; // Defence render echo '<td>'; echo '<div style="position: relative; left: 0; top: 0;">'; echo '<table class=stattext cellSpacing=0>'; echo '<tr><td>' . $lang['player_armor'] . '</td></tr>'; echo '<tr><td>' . $lang['player_defense'] . '</td></tr>'; echo '<tr><td>' . $lang['player_dodge'] . '</td></tr>'; echo '<tr><td>' . $lang['player_parry'] . '</td></tr>'; echo '<tr><td>' . $lang['player_block'] . '</td></tr>'; echo '<tr><td>' . $lang['player_recilence'] . '</td></tr>'; echo '</table>'; echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">'; echo "<tr>"; @renderResist(SCHOOL_ARMOR, $char_data); echo "</tr>\n"; echo "<tr>"; @renderDefense($char_data); echo "</tr>\n"; echo "<tr>"; @renderDodge($char_data); echo "</tr>\n"; echo "<tr>"; @renderParry($char_data); echo "</tr>\n"; echo "<tr>"; @renderBlock($char_data); echo "</tr>\n"; echo "<tr>"; @renderRecilence($char_data); echo "</tr>\n"; echo '</table>'; echo '</div>'; echo '</td>'; echo '</tr>'; echo '<tr><td class=head width=50%>' . $lang['player_melee'] . '</td><td class=head width=50%>' . $lang['player_ranged'] . '</td></tr>'; echo '<tr>'; // Melee render echo '<td>'; echo '<div style="position: relative; left: 0; top: 0;">'; echo '<table class=stattext cellSpacing=0>'; echo '<tr><td>' . $lang['player_m_skill'] . '</td></tr>'; echo '<tr><td>' . $lang['player_m_damage'] . '</td></tr>'; echo '<tr><td>' . $lang['player_m_speed'] . '</td></tr>'; echo '<tr><td>' . $lang['player_m_power'] . '</td></tr>'; echo '<tr><td>' . $lang['player_m_hit'] . '</td></tr>'; echo '<tr><td>' . $lang['player_m_crit'] . '</td></tr>'; echo '</table>'; echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">'; echo "<tr>"; @renderMeleeSkill($char_data); echo "</tr>\n"; echo "<tr>"; @renderMeleeDamage($char_data); echo "</tr>\n"; echo "<tr>"; @renderMeleeSpeed($char_data); echo "</tr>\n"; echo "<tr>"; @renderMeleeAP($char_data); echo "</tr>\n"; echo "<tr>"; @renderMeleeHit($char_data); echo "</tr>\n"; echo "<tr>"; @renderMeleeCrit($char_data); echo "</tr>\n"; echo '</table>'; echo '</div>'; echo '</td>'; // Ranged render echo '<td>'; echo '<div style="position: relative; left: 0; top: 0;">'; echo '<table class=stattext cellSpacing=0>'; echo '<tr><td>' . $lang['player_r_skill'] . '</td></tr>'; echo '<tr><td>' . $lang['player_r_damage'] . '</td></tr>'; echo '<tr><td>' . $lang['player_r_speed'] . '</td></tr>'; echo '<tr><td>' . $lang['player_r_power'] . '</td></tr>'; echo '<tr><td>' . $lang['player_r_hit'] . '</td></tr>'; echo '<tr><td>' . $lang['player_r_crit'] . '</td></tr>'; echo '</table>'; echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">'; echo "<tr>"; @renderRangedSkill($char_data); echo "</tr>\n"; echo "<tr>"; @renderRangedDamage($char_data); echo "</tr>\n"; echo "<tr>"; @renderRangedSpeed($char_data); echo "</tr>\n"; echo "<tr>"; @renderRangedAP($char_data); echo "</tr>\n"; echo "<tr>"; @renderRangedHit($char_data); echo "</tr>\n"; echo "<tr>"; @renderRangedCrit($char_data); echo "</tr>\n"; echo '</table>'; echo '</div>'; echo '</td>'; echo '</tr>'; echo '<tr><td class=head colspan=2>' . $lang['player_spell'] . '</td></tr>'; echo '<tr>'; echo '<td>'; // 1 part Spell render echo '<div style="position: relative; left: 0; top: 0;">'; echo '<table class=stattext cellSpacing=0>'; echo '<tr><td>' . $lang['player_s_damage'] . '</td></tr>'; echo '<tr><td>' . $lang['player_s_healing'] . '</td></tr>'; echo '<tr><td>' . $lang['player_s_hit'] . '</td></tr>'; echo '</table>'; echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">'; echo "<tr>"; @renderSpellDamage($char_data); echo "</tr>\n"; echo "<tr>"; @renderSpellHeal($char_data); echo "</tr>\n"; echo "<tr>"; @renderSpellHit($char_data); echo "</tr>\n"; echo '</table>'; echo '</div>'; echo '</td>'; // 2 part Spell render echo '<td>'; echo '<div style="position: relative; left: 0; top: 0;">'; echo '<table class=stattext cellSpacing=0>'; echo '<tr><td>' . $lang['player_s_crit'] . '</td></tr>'; echo '<tr><td>' . $lang['player_s_haste'] . '</td></tr>'; echo '<tr><td>' . $lang['player_s_regen'] . '</td></tr>'; echo '</table>'; echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">'; echo "<tr>"; @renderSpellCrit($char_data); echo "</tr>\n"; echo "<tr>"; @renderSpellHaste($char_data); echo "</tr>\n"; echo "<tr>"; @renderManaRegen($char_data); echo "</td></tr>\n"; echo '</table>'; echo '</div>'; echo '</td>'; echo '</tr>'; echo '</tbody>'; echo '</table>'; $imgsize = "armory"; show_item_by_guid($char_data[PLAYER_SLOT_ITEM_HEAD], $imgsize, 22, 73); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_NECK], $imgsize, 22, 114); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_SHOULDER], $imgsize, 22, 155); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_BACK], $imgsize, 22, 196); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_CHEST], $imgsize, 22, 237); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_SHIRT], $imgsize, 22, 278); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD], $imgsize, 22, 319); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_WRIST], $imgsize, 22, 360); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_GLOVES], $imgsize, 306, 73); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_BELT], $imgsize, 306, 114); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_LEGS], $imgsize, 306, 155); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_FEET], $imgsize, 306, 196); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_FINGER1], $imgsize, 306, 237); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_FINGER2], $imgsize, 306, 278); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TRINKET1], $imgsize, 306, 319); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TRINKET2], $imgsize, 306, 360); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_MAIN_HAND], $imgsize, 122, 384); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_OFF_HAND], $imgsize, 164, 384); show_item_by_guid($char_data[PLAYER_SLOT_ITEM_RANGED], $imgsize, 206, 384); // Bags //show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD+2],$imgsize,0,400); //show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD+4],$imgsize,40,400); //show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD+6],$imgsize,80,400); //show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD+8],$imgsize,120,400); //show_item_by_guid($char_data[OFFSET_EQU_RANGED+32],$imgsize,50,50); echo "</div>"; echo "</td></tr></tbody>"; echo "</table></td>\n"; echo "<td valign=top>"; show_player_auras_from_db($guid); echo "</td>"; echo "</tr>"; echo "</table>"; }
function showPlayerGuild($guid, $char_data) { global $cDB; // Получение разрешений на просмотр $currentTabRights = array(0x0, 0x0, 0x0, 0x0, 0x0, 0x0); $guildid = $char_data[PLAYER_GUILDID]; $rank = $char_data[PLAYER_GUILDRANK]; if ($guildid == 0) { echo "Not in guild"; return; } $gbrights = $cDB->select("SELECT * FROM `guild_bank_right` WHERE `guildid` = ?d AND `rid` = ?d", $guildid, $rank); foreach ($gbrights as $r) { $currentTabRights[$r['TabId']] |= $r['gbright']; } // Получаем данные о табах $tabinfo = $cDB->select("SELECT\n `TabId` AS ARRAY_KEY,\n `TabName`,\n `TabIcon`,\n `TabText`\n FROM `guild_bank_tab`\n WHERE guildid = ?d\n ORDER BY `TabId`", $guildid); if ($tabinfo) { $bank_tabs = $cDB->select("SELECT\n `TabId` AS ARRAY_KEY_1,\n `SlotId` AS ARRAY_KEY_2,\n `item_guid`,\n `item_entry`\n FROM `guild_bank_item`\n WHERE guildid = ?d\n ORDER BY `TabId`, `SlotId`", $guildid); // Скрипт смены табов в гильдбанке echo '<script type="text/javascript" id="guild_script"> function showTab(tab){ for(i=0;i<6;i++) if (div = document.getElementById("guildtab_" + i)) div.style.visibility=(i==tab)?"visible":"hidden"; return false; } </script>'; // Отрисовываем гильд банк echo '<br><div id=guildbank style="color: #FFFFFF; position: relative; width: 765px; height: 424px;">'; echo '<img src="images/player_info/bank/guildbank.gif" style="position: absolute; left: 0px; top: 0px;">'; echo '<div style="position: absolute; left: 0px; top: 2px; width: 725px; text-align: center;"><b>Guild Bank</b></div>'; $visible = "visible"; foreach ($tabinfo as $tabid => $tab) { // Проверяем права на просмотр if ($currentTabRights[$tabid] & GUILD_BANK_RIGHT_VIEW_TAB) { // Выводим новый таб echo '<div id=guildtab_' . $tabid . ' style="visibility: ' . $visible . ';">'; $visible = "hidden"; if ($tabinfo) { echo '<div style="position: absolute; left: 0px; top: 28px; width: 723px;"><b>' . $tab['TabName'] . '</b></div>'; } // Вывод вещей в табе if (isset($bank_tabs[$tabid])) { foreach ($bank_tabs[$tabid] as $slot => $tabslot) { show_item_by_guid($tabslot['item_guid'], "guildb", 49 * intval($slot / 7) + 23, 44 * intval($slot % 7) + 61); } } echo '</div>'; // Иконка таба $img = 'images/icons/' . ($tab['TabIcon'] ? strtolower($tab['TabIcon']) : 'wowunknownitem01') . '.jpg'; // Описание таба $tip = $tab['TabName'] ? addTooltip($tab['TabName']) : ''; echo '<a href=# onclick="return showTab(' . $tabid . ');">'; echo '<img src="images/player_info/bank/guildbanktab.gif" style="position: absolute; left: 724px; top: ' . (55 + $tabid * 50) . 'px; border: 0px;">'; echo '<img width=32px src="' . $img . '" ' . $tip . ' style="position: absolute; left: 727px; top: ' . (66 + $tabid * 50) . 'px;border: 0px;">'; echo '</a>'; } else { echo '<img src="images/player_info/bank/guildbanktab.gif" ' . addTooltip('no rights') . ' style"position: absolute; left: 724px; top: ' . (55 + $tabid * 50) . 'px; border: 0px;">'; } } echo '</div>'; } else { echo "No guild bank present"; } }
function showPlayerInventory($guid, $char_data) { global $lang, $cDB; $inventory = $cDB->select("SELECT\n `bag` AS ARRAY_KEY_1,\n `slot` AS ARRAY_KEY_2,\n `item`,\n `item_template`\n FROM `character_inventory`\n WHERE `guid` = ?d\n ORDER BY `bag`, `slot`", $guid); echo "<table width=100%><tbody><tr><td>"; if ($inventory) { foreach ($inventory as $id => $bag) { if ($id == 0) { drawBankFrame($bag); drawBackPack($bag); drawKeyRing($bag); foreach ($bag as $slot => $container) { show_item_by_guid($container['item']); } } else { echo "<span style=\"float: left;\">"; drawContainer($id, $bag); echo "</span>"; } } } echo "</td></tr></tbody></table>"; }