<?php include_once "include/functions.php"; include_once "include/map_data.php"; // Нужно соединиться с базой (часть менюшек требует названий оттуда include_once "include/DbSimple/Generic.php"; $wDB = DbSimple_Generic::connect("mysql://{$config['wusername']}:{$config['wpassword']}@{$config['whostname']}/{$config['wdbName']}"); $wDB->query("SET NAMES ?s", $config['client_charset']); $menu = array(array('ico' => 'icon-news', 'name' => $lang['find'], 'show' => true, 'sub' => array(array('link' => 'index.php', 'text' => $lang['main']), array('link' => '?s=i', 'text' => $lang['item_lookup'], 'sub' => array(array('link' => '?s=i&class=0', 'text' => getClassName(0, 0), 'sub' => array(array('link' => '?s=i&class=0.0', 'text' => getSubclassName(0, 0, 0)), array('link' => '?s=i&class=0.1', 'text' => getSubclassName(0, 1, 0)), array('link' => '?s=i&class=0.2', 'text' => getSubclassName(0, 2, 0)), array('link' => '?s=i&class=0.3', 'text' => getSubclassName(0, 3, 0)), array('link' => '?s=i&class=0.4', 'text' => getSubclassName(0, 4, 0)), array('link' => '?s=i&class=0.5', 'text' => getSubclassName(0, 5, 0)), array('link' => '?s=i&class=0.6', 'text' => getSubclassName(0, 6, 0)), array('link' => '?s=i&class=0.7', 'text' => getSubclassName(0, 7, 0)), array('link' => '?s=i&class=0.8', 'text' => getSubclassName(0, 8, 0)))), array('link' => '?s=i&class=1', 'text' => getClassName(1, 0), 'sub' => array(array('link' => '?s=i&class=1.0', 'text' => getSubclassName(1, 0, 0)), array('link' => '?s=i&class=1.1', 'text' => getSubclassName(1, 1, 0)), array('link' => '?s=i&class=1.2', 'text' => getSubclassName(1, 2, 0)), array('link' => '?s=i&class=1.3', 'text' => getSubclassName(1, 3, 0)), array('link' => '?s=i&class=1.4', 'text' => getSubclassName(1, 4, 0)), array('link' => '?s=i&class=1.5', 'text' => getSubclassName(1, 5, 0)), array('link' => '?s=i&class=1.6', 'text' => getSubclassName(1, 6, 0)), array('link' => '?s=i&class=1.7', 'text' => getSubclassName(1, 7, 0)), array('link' => '?s=i&class=1.8', 'text' => getSubclassName(1, 8, 0)))), array('link' => '?s=i&class=2', 'text' => getClassName(2, 0), 'sub' => array(array('link' => '?s=i&class=2.0', 'text' => getSubclassName(2, 0, 0)), array('link' => '?s=i&class=2.1', 'text' => getSubclassName(2, 1, 0)), array('link' => '?s=i&class=2.2', 'text' => getSubclassName(2, 2, 0)), array('link' => '?s=i&class=2.3', 'text' => getSubclassName(2, 3, 0)), array('link' => '?s=i&class=2.4', 'text' => getSubclassName(2, 4, 0)), array('link' => '?s=i&class=2.5', 'text' => getSubclassName(2, 5, 0)), array('link' => '?s=i&class=2.6', 'text' => getSubclassName(2, 6, 0)), array('link' => '?s=i&class=2.7', 'text' => getSubclassName(2, 7, 0)), array('link' => '?s=i&class=2.8', 'text' => getSubclassName(2, 8, 0)), array('link' => '?s=i&class=2.9', 'text' => getSubclassName(2, 9, 0)), array('link' => '?s=i&class=2.10', 'text' => getSubclassName(2, 10, 0)), array('link' => '?s=i&class=2.11', 'text' => getSubclassName(2, 11, 0)), array('link' => '?s=i&class=2.12', 'text' => getSubclassName(2, 12, 0)), array('link' => '?s=i&class=2.13', 'text' => getSubclassName(2, 13, 0)), array('link' => '?s=i&class=2.14', 'text' => getSubclassName(2, 14, 0)), array('link' => '?s=i&class=2.15', 'text' => getSubclassName(2, 15, 0)), array('link' => '?s=i&class=2.16', 'text' => getSubclassName(2, 16, 0)), array('link' => '?s=i&class=2.17', 'text' => getSubclassName(2, 17, 0)), array('link' => '?s=i&class=2.18', 'text' => getSubclassName(2, 18, 0)), array('link' => '?s=i&class=2.19', 'text' => getSubclassName(2, 19, 0)), array('link' => '?s=i&class=2.20', 'text' => getSubclassName(2, 20, 0)))), array('link' => '?s=i&class=3', 'text' => getClassName(3, 0), 'sub' => array(array('link' => '?s=i&class=3.0', 'text' => getSubclassName(3, 0, 0)), array('link' => '?s=i&class=3.1', 'text' => getSubclassName(3, 1, 0)), array('link' => '?s=i&class=3.2', 'text' => getSubclassName(3, 2, 0)), array('link' => '?s=i&class=3.3', 'text' => getSubclassName(3, 3, 0)), array('link' => '?s=i&class=3.4', 'text' => getSubclassName(3, 4, 0)), array('link' => '?s=i&class=3.5', 'text' => getSubclassName(3, 5, 0)), array('link' => '?s=i&class=3.6', 'text' => getSubclassName(3, 6, 0)), array('link' => '?s=i&class=3.7', 'text' => getSubclassName(3, 7, 0)), array('link' => '?s=i&class=3.8', 'text' => getSubclassName(3, 8, 0)))), array('link' => '?s=i&class=4', 'text' => getClassName(4, 0), 'sub' => array(array('link' => '?s=i&class=4.0', 'text' => getSubclassName(4, 0, 0)), array('link' => '?s=i&class=4.1', 'text' => getSubclassName(4, 1, 0)), array('link' => '?s=i&class=4.2', 'text' => getSubclassName(4, 2, 0)), array('link' => '?s=i&class=4.3', 'text' => getSubclassName(4, 3, 0)), array('link' => '?s=i&class=4.4', 'text' => getSubclassName(4, 4, 0)), array('link' => '?s=i&class=4.5', 'text' => getSubclassName(4, 5, 0)), array('link' => '?s=i&class=4.6', 'text' => getSubclassName(4, 6, 0)), array('link' => '?s=i&class=4.7', 'text' => getSubclassName(4, 7, 0)), array('link' => '?s=i&class=4.8', 'text' => getSubclassName(4, 8, 0)), array('link' => '?s=i&class=4.9', 'text' => getSubclassName(4, 9, 0)), array('link' => '?s=i&class=4.10', 'text' => getSubclassName(4, 10, 0)))), array('link' => '?s=i&class=5', 'text' => getClassName(5, 0)), array('link' => '?s=i&class=6', 'text' => getClassName(6, 0), 'sub' => array(array('link' => '?s=i&class=6.2', 'text' => getSubclassName(6, 2, 0)), array('link' => '?s=i&class=6.3', 'text' => getSubclassName(6, 3, 0)))), array('link' => '?s=i&class=7', 'text' => getClassName(7, 0), 'sub' => array(array('link' => '?s=i&class=7.0', 'text' => getSubclassName(7, 0, 0)), array('link' => '?s=i&class=7.1', 'text' => getSubclassName(7, 1, 0)), array('link' => '?s=i&class=7.2', 'text' => getSubclassName(7, 2, 0)), array('link' => '?s=i&class=7.3', 'text' => getSubclassName(7, 3, 0)), array('link' => '?s=i&class=7.4', 'text' => getSubclassName(7, 4, 0)), array('link' => '?s=i&class=7.5', 'text' => getSubclassName(7, 5, 0)), array('link' => '?s=i&class=7.6', 'text' => getSubclassName(7, 6, 0)), array('link' => '?s=i&class=7.7', 'text' => getSubclassName(7, 7, 0)), array('link' => '?s=i&class=7.8', 'text' => getSubclassName(7, 8, 0)), array('link' => '?s=i&class=7.9', 'text' => getSubclassName(7, 9, 0)), array('link' => '?s=i&class=7.10', 'text' => getSubclassName(7, 10, 0)), array('link' => '?s=i&class=7.11', 'text' => getSubclassName(7, 11, 0)), array('link' => '?s=i&class=7.12', 'text' => getSubclassName(7, 12, 0)), array('link' => '?s=i&class=7.13', 'text' => getSubclassName(7, 13, 0)), array('link' => '?s=i&class=7.14', 'text' => getSubclassName(7, 14, 0)), array('link' => '?s=i&class=7.15', 'text' => getSubclassName(7, 15, 0)))), array('link' => '?s=i&class=9', 'text' => getClassName(9, 0), 'sub' => array(array('link' => '?s=i&class=9.0', 'text' => getSubclassName(9, 0, 0)), array('link' => '?s=i&class=9.1', 'text' => getSubclassName(9, 1, 0)), array('link' => '?s=i&class=9.2', 'text' => getSubclassName(9, 2, 0)), array('link' => '?s=i&class=9.3', 'text' => getSubclassName(9, 3, 0)), array('link' => '?s=i&class=9.4', 'text' => getSubclassName(9, 4, 0)), array('link' => '?s=i&class=9.5', 'text' => getSubclassName(9, 5, 0)), array('link' => '?s=i&class=9.6', 'text' => getSubclassName(9, 6, 0)), array('link' => '?s=i&class=9.7', 'text' => getSubclassName(9, 7, 0)), array('link' => '?s=i&class=9.8', 'text' => getSubclassName(9, 8, 0)), array('link' => '?s=i&class=9.9', 'text' => getSubclassName(9, 9, 0)), array('link' => '?s=i&class=9.10', 'text' => getSubclassName(9, 10, 0)))), array('link' => '?s=i&class=11', 'text' => getClassName(11, 0), 'sub' => array(array('link' => '?s=i&class=11.2', 'text' => getSubclassName(11, 2, 0)), array('link' => '?s=i&class=11.3', 'text' => getSubclassName(11, 3, 0)))), array('link' => '?s=i&class=12', 'text' => getClassName(12, 0)), array('link' => '?s=i&class=13', 'text' => getClassName(13, 0), 'sub' => array(array('link' => '?s=i&class=13.0', 'text' => getSubclassName(13, 0, 0)), array('link' => '?s=i&class=13.1', 'text' => getSubclassName(13, 1, 0)))), array('link' => '?s=i&class=15', 'text' => getClassName(15, 0), 'sub' => array(array('link' => '?s=i&class=15.0', 'text' => getSubclassName(15, 0, 0)), array('link' => '?s=i&class=15.1', 'text' => getSubclassName(15, 1, 0)), array('link' => '?s=i&class=15.2', 'text' => getSubclassName(15, 2, 0)), array('link' => '?s=i&class=15.3', 'text' => getSubclassName(15, 3, 0)), array('link' => '?s=i&class=15.4', 'text' => getSubclassName(15, 4, 0)), array('link' => '?s=i&class=15.5', 'text' => getSubclassName(15, 5, 0)))), array('link' => '?s=i&class=16', 'text' => getClassName(16, 0), 'sub' => array(array('link' => '?s=i&class=16.1', 'text' => getSubclassName(16, 1, 0)), array('link' => '?s=i&class=16.2', 'text' => getSubclassName(16, 2, 0)), array('link' => '?s=i&class=16.3', 'text' => getSubclassName(16, 3, 0)), array('link' => '?s=i&class=16.4', 'text' => getSubclassName(16, 4, 0)), array('link' => '?s=i&class=16.5', 'text' => getSubclassName(16, 5, 0)), array('link' => '?s=i&class=16.6', 'text' => getSubclassName(16, 6, 0)), array('link' => '?s=i&class=16.7', 'text' => getSubclassName(16, 7, 0)), array('link' => '?s=i&class=16.8', 'text' => getSubclassName(16, 8, 0)), array('link' => '?s=i&class=16.9', 'text' => getSubclassName(16, 9, 0)), array('link' => '?s=i&class=16.11', 'text' => getSubclassName(16, 11, 0)))))), array('link' => '?s=q', 'text' => $lang['quest_lookup']), array('link' => '?s=s', 'text' => $lang['spell_lookup']), array('link' => '?s=n', 'text' => $lang['creature_lookup'], 'sub' => array(array('text' => $lang['creature_by_type'], 'sub' => array(array('link' => '?s=n&type=1', 'text' => getCreatureType(1, 0)), array('link' => '?s=n&type=2', 'text' => getCreatureType(2, 0)), array('link' => '?s=n&type=3', 'text' => getCreatureType(3, 0)), array('link' => '?s=n&type=4', 'text' => getCreatureType(4, 0)), array('link' => '?s=n&type=5', 'text' => getCreatureType(5, 0)), array('link' => '?s=n&type=6', 'text' => getCreatureType(6, 0)), array('link' => '?s=n&type=7', 'text' => getCreatureType(7, 0)), array('link' => '?s=n&type=8', 'text' => getCreatureType(8, 0)), array('link' => '?s=n&type=9', 'text' => getCreatureType(9, 0)), array('link' => '?s=n&type=10', 'text' => getCreatureType(10, 0)), array('link' => '?s=n&type=11', 'text' => getCreatureType(11, 0)), array('link' => '?s=n&type=12', 'text' => getCreatureType(12, 0)), array('link' => '?s=n&type=13', 'text' => getCreatureType(13, 0)))), array('text' => $lang['creature_by_family'], 'sub' => array(array('link' => '?s=n&family=1', 'text' => getCreatureFamily(1, 0)), array('link' => '?s=n&family=2', 'text' => getCreatureFamily(2, 0)), array('link' => '?s=n&family=3', 'text' => getCreatureFamily(3, 0)), array('link' => '?s=n&family=4', 'text' => getCreatureFamily(4, 0)), array('link' => '?s=n&family=5', 'text' => getCreatureFamily(5, 0)), array('link' => '?s=n&family=6', 'text' => getCreatureFamily(6, 0)), array('link' => '?s=n&family=7', 'text' => getCreatureFamily(7, 0)), array('link' => '?s=n&family=8', 'text' => getCreatureFamily(8, 0)), array('link' => '?s=n&family=9', 'text' => getCreatureFamily(9, 0)), array('link' => '?s=n&family=11', 'text' => getCreatureFamily(11, 0)), array('link' => '?s=n&family=12', 'text' => getCreatureFamily(12, 0)), array('link' => '?s=n&family=15', 'text' => getCreatureFamily(15, 0)), array('link' => '?s=n&family=16', 'text' => getCreatureFamily(16, 0)), array('link' => '?s=n&family=17', 'text' => getCreatureFamily(17, 0)), array('link' => '?s=n&family=19', 'text' => getCreatureFamily(19, 0)), array('link' => '?s=n&family=20', 'text' => getCreatureFamily(20, 0)), array('link' => '?s=n&family=21', 'text' => getCreatureFamily(21, 0)), array('link' => '?s=n&family=23', 'text' => getCreatureFamily(23, 0)), array('link' => '?s=n&family=24', 'text' => getCreatureFamily(24, 0)), array('link' => '?s=n&family=25', 'text' => getCreatureFamily(25, 0)), array('link' => '?s=n&family=26', 'text' => getCreatureFamily(26, 0)), array('link' => '?s=n&family=27', 'text' => getCreatureFamily(27, 0)), array('link' => '?s=n&family=28', 'text' => getCreatureFamily(28, 0)), array('link' => '?s=n&family=29', 'text' => getCreatureFamily(29, 0)), array('link' => '?s=n&family=30', 'text' => getCreatureFamily(30, 0)), array('link' => '?s=n&family=31', 'text' => getCreatureFamily(31, 0)), array('link' => '?s=n&family=32', 'text' => getCreatureFamily(32, 0)), array('link' => '?s=n&family=33', 'text' => getCreatureFamily(33, 0)), array('link' => '?s=n&family=34', 'text' => getCreatureFamily(34, 0)), array('link' => '?s=n&family=35', 'text' => getCreatureFamily(35, 0)), array('link' => '?s=n&family=37', 'text' => getCreatureFamily(37, 0)), array('link' => '?s=n&family=38', 'text' => getCreatureFamily(38, 0)), array('link' => '?s=n&family=39', 'text' => getCreatureFamily(39, 0)), array('link' => '?s=n&family=40', 'text' => getCreatureFamily(40, 0)), array('link' => '?s=n&family=41', 'text' => getCreatureFamily(41, 0)), array('link' => '?s=n&family=42', 'text' => getCreatureFamily(42, 0)), array('link' => '?s=n&family=43', 'text' => getCreatureFamily(43, 0)), array('link' => '?s=n&family=44', 'text' => getCreatureFamily(44, 0)), array('link' => '?s=n&family=45', 'text' => getCreatureFamily(45, 0)), array('link' => '?s=n&family=46', 'text' => getCreatureFamily(46, 0)))), array('text' => $lang['creature_by_role'], 'sub' => array(array('link' => '?s=n&flag=4', 'text' => getCreatureFlagName(4, 0)), array('link' => '?s=n&flag=7', 'text' => getCreatureFlagName(7, 0)), array('link' => '?s=n&flag=13', 'text' => getCreatureFlagName(13, 0)), array('link' => '?s=n&flag=16', 'text' => getCreatureFlagName(16, 0)), array('link' => '?s=n&flag=17', 'text' => getCreatureFlagName(17, 0)), array('link' => '?s=n&flag=20', 'text' => getCreatureFlagName(20, 0)), array('link' => '?s=n&flag=21', 'text' => getCreatureFlagName(21, 0)), array('link' => '?s=n&flag=22', 'text' => getCreatureFlagName(22, 0)))))), array('link' => '?s=o', 'text' => $lang['object_lookup'], 'sub' => array(array('link' => '?s=o&name=&type=2', 'text' => getGameobjectType(2, 0)), array('link' => '?s=o&name=&type=3', 'text' => getGameobjectType(3, 0)), array('link' => '?s=o&name=&type=9', 'text' => getGameobjectType(9, 0)), array('link' => '?s=o&name=&type=25', 'text' => getGameobjectType(25, 0)))), array('link' => '?s=f', 'text' => $lang['faction_lookup']), array('link' => '?s=a', 'text' => $lang['area_lookup']), array('link' => '?s=set', 'text' => $lang['item_set']), array('link' => '?s=p', 'text' => $lang['player_lookup']), array('link' => '', 'text' => $lang['achievement'], 'sub' => array(array('link' => '?achievement&faction=1', 'text' => $lang['Alliance']), array('link' => '?achievement&faction=0', 'text' => $lang['Horde']))), array('link' => '?auction', 'text' => $lang['auction'], 'sub' => array(array('link' => '?auction=Alliance', 'text' => $lang['Alliance']), array('link' => '?auction=Horde', 'text' => $lang['Horde']), array('link' => '?auction=Blackwater', 'text' => $lang['Blackwater']))), array('link' => '?guild', 'text' => $lang['guild']), array('link' => '?location', 'text' => $lang['zone'], 'sub' => array(array('link' => '?location=a14', 'text' => getAreaNameFromId(14)), array('link' => '?location=a13', 'text' => getAreaNameFromId(13)), array('link' => '?location=a466', 'text' => getAreaNameFromId(466)), array('link' => '?location=a485', 'text' => getAreaNameFromId(485)))), array('link' => '?instance', 'text' => $lang['instance']), array('link' => '?talent', 'text' => $lang['talent_calc'], 'sub' => array(array('link' => '?talent=warrior', 'text' => getClass(1)), array('link' => '?talent=paladin', 'text' => getClass(2)), array('link' => '?talent=hunter', 'text' => getClass(3)), array('link' => '?talent=rogue', 'text' => getClass(4)), array('link' => '?talent=priest', 'text' => getClass(5)), array('link' => '?talent=death_knight', 'text' => getClass(6)), array('link' => '?talent=shaman', 'text' => getClass(7)), array('link' => '?talent=mage', 'text' => getClass(8)), array('link' => '?talent=warlock', 'text' => getClass(9)), array('link' => '?talent=druid', 'text' => getClass(11)))))), array('ico' => 'icon-community', 'name' => $lang['top_lookup'], 'show' => false, 'sub' => array(array('link' => '?top=money', 'text' => $lang['top_money']), array('link' => '?top=honor', 'text' => $lang['top_honor']), array('link' => '?top=arena2', 'text' => $lang['top_arena2']), array('link' => '?top=arena3', 'text' => $lang['top_arena3']), array('link' => '?top=arena5', 'text' => $lang['top_arena5']))), array('ico' => 'icon-interactive', 'name' => $lang['skills_main'], 'show' => false, 'sub' => array(array('text' => $lang['prof_primary'], 'sub' => array(array('link' => '?skill=Alchemy', 'text' => $lang['prof_alchemy']), array('link' => '?skill=Blacksmithing', 'text' => $lang['prof_blacksmith']), array('link' => '?skill=Enchanting', 'text' => $lang['prof_enchant']), array('link' => '?skill=Engineering', 'text' => $lang['prof_engineer']), array('link' => '?skill=Herbalism', 'text' => $lang['prof_herbalism']), array('link' => '?skill=Jewelcrafting', 'text' => $lang['prof_jevelcraft']), array('link' => '?skill=Leatherworking', 'text' => $lang['prof_leathwork']), array('link' => '?skill=Mining', 'text' => $lang['prof_mining']), array('link' => '?skill=Skinning', 'text' => $lang['prof_skinning']), array('link' => '?skill=Tailoring', 'text' => $lang['prof_taloring']), array('link' => '?skill=Inscription', 'text' => $lang['prof_inscription']))), array('text' => $lang['prof_secondary'], 'sub' => array(array('link' => '?skill=Cooking', 'text' => $lang['prof_cooking']), array('link' => '?skill=First Aid', 'text' => $lang['prof_first_aid']), array('link' => '?skill=Fishing', 'text' => $lang['prof_fishing']))), array('text' => $lang['class skills'], 'sub' => array(array('text' => getClass(1), 'sub' => array(array('link' => '?skill=26', 'text' => getSkillName(26, 0)), array('link' => '?skill=256', 'text' => getSkillName(256, 0)), array('link' => '?skill=257', 'text' => getSkillName(257, 0)))), array('text' => getClass(2), 'sub' => array(array('link' => '?skill=267', 'text' => getSkillName(267, 0)), array('link' => '?skill=184', 'text' => getSkillName(184, 0)), array('link' => '?skill=594', 'text' => getSkillName(594, 0)))), array('text' => getClass(3), 'sub' => array(array('link' => '?skill=50', 'text' => getSkillName(50, 0)), array('link' => '?skill=51', 'text' => getSkillName(51, 0)), array('link' => '?skill=163', 'text' => getSkillName(163, 0)), array('link' => '?skill=261', 'text' => getSkillName(261, 0)))), array('text' => getClass(4), 'sub' => array(array('link' => '?skill=253', 'text' => getSkillName(253, 0)), array('link' => '?skill=38', 'text' => getSkillName(38, 0)), array('link' => '?skill=39', 'text' => getSkillName(39, 0)), array('link' => '?skill=40', 'text' => getSkillName(40, 0)), array('link' => '?skill=633', 'text' => getSkillName(633, 0)))), array('text' => getClass(5), 'sub' => array(array('link' => '?skill=56', 'text' => getSkillName(56, 0)), array('link' => '?skill=78', 'text' => getSkillName(78, 0)), array('link' => '?skill=613', 'text' => getSkillName(613, 0)))), array('text' => getClass(6), 'sub' => array(array('link' => '?skill=770', 'text' => getSkillName(770, 0)), array('link' => '?skill=771', 'text' => getSkillName(771, 0)), array('link' => '?skill=772', 'text' => getSkillName(772, 0)))), array('text' => getClass(7), 'sub' => array(array('link' => '?skill=373', 'text' => getSkillName(373, 0)), array('link' => '?skill=375', 'text' => getSkillName(375, 0)), array('link' => '?skill=374', 'text' => getSkillName(374, 0)))), array('text' => getClass(8), 'sub' => array(array('link' => '?skill=237', 'text' => getSkillName(237, 0)), array('link' => '?skill=6', 'text' => getSkillName(6, 0)), array('link' => '?skill=8', 'text' => getSkillName(8, 0)))), array('text' => getClass(9), 'sub' => array(array('link' => '?skill=355', 'text' => getSkillName(355, 0)), array('link' => '?skill=354', 'text' => getSkillName(354, 0)), array('link' => '?skill=593', 'text' => getSkillName(593, 0)))), array('text' => getClass(11), 'sub' => array(array('link' => '?skill=134', 'text' => getSkillName(134, 0)), array('link' => '?skill=573', 'text' => getSkillName(573, 0)), array('link' => '?skill=574', 'text' => getSkillName(574, 0)))))))), array('ico' => 'icon-gameguide', 'name' => $lang['menu_faq'], 'show' => false, 'sub' => array(array('link' => '?faq=list', 'text' => $lang['faq_list']), array('link' => '?faq=classes', 'text' => $lang['faq_classes'], 'sub' => array(array('link' => '?faq=class-warrior', 'text' => getClass(1)), array('link' => '?faq=class-paladin', 'text' => getClass(2)), array('link' => '?faq=class-hunter', 'text' => getClass(3)), array('link' => '?faq=class-rogue', 'text' => getClass(4)), array('link' => '?faq=class-priest', 'text' => getClass(5)), array('link' => '?faq=class-death_knight', 'text' => getClass(6)), array('link' => '?faq=class-shaman', 'text' => getClass(7)), array('link' => '?faq=class-mage', 'text' => getClass(8)), array('link' => '?faq=class-warlock', 'text' => getClass(9)), array('link' => '?faq=class-druid', 'text' => getClass(11)))), array('text' => $lang['faq_races'], 'sub' => array(array('link' => '?faq=race-humans', 'text' => getRace(1)), array('link' => '?faq=race-orcs', 'text' => getRace(2)), array('link' => '?faq=race-dwarves', 'text' => getRace(3)), array('link' => '?faq=race-night_elves', 'text' => getRace(4)), array('link' => '?faq=race-undeads', 'text' => getRace(5)), array('link' => '?faq=race-taurens', 'text' => getRace(6)), array('link' => '?faq=race-gnomes', 'text' => getRace(7)), array('link' => '?faq=race-trolls', 'text' => getRace(8)), array('link' => '?faq=race-blood_elves', 'text' => getRace(10)), array('link' => '?faq=race-draenei', 'text' => getRace(11)))), array('link' => '?faq=professions', 'text' => $lang['faq_professions'], 'sub' => array(array('text' => $lang['prof_primary']), array('link' => '?faq=prof-alchemy', 'text' => $lang['prof_alchemy']), array('link' => '?faq=prof-blacksmithing', 'text' => $lang['prof_blacksmith']), array('link' => '?faq=prof-enchanting', 'text' => $lang['prof_enchant']), array('link' => '?faq=prof-engineering', 'text' => $lang['prof_engineer']), array('link' => '?faq=prof-herbalism', 'text' => $lang['prof_herbalism']), array('link' => '?faq=prof-jewelcrafting', 'text' => $lang['prof_jevelcraft']), array('link' => '?faq=prof-leatherworking', 'text' => $lang['prof_leathwork']), array('link' => '?faq=prof-mining', 'text' => $lang['prof_mining']), array('link' => '?faq=prof-skinning', 'text' => $lang['prof_skinning']), array('link' => '?faq=prof-tailoring', 'text' => $lang['prof_taloring']), array('link' => '?faq=prof-inscription', 'text' => $lang['prof_inscription']), array('text' => $lang['prof_secondary']), array('link' => '?faq=prof-cooking', 'text' => $lang['prof_cooking']), array('link' => '?faq=prof-first_aid', 'text' => $lang['prof_first_aid']), array('link' => '?faq=prof-fishing', 'text' => $lang['prof_fishing']))), array('link' => '?faq=slang', 'text' => $lang['faq_slang']), array('link' => '?faq=step1', 'text' => $lang['step_1']), array('link' => '?faq=aggro', 'text' => $lang['about_aggro']), array('link' => '?faq=city', 'text' => $lang['about_city']), array('link' => '?faq=guild', 'text' => $lang['about_guild']), array('link' => '?faq=socket', 'text' => $lang['about_socket']), array('link' => '?faq=macro', 'text' => $lang['about_macro']), array('link' => '?faq=raidhill', 'text' => $lang['about_raid_hill']))), array('ico' => 'icon-account', 'name' => $lang['menu_5'], 'show' => false, 'sub' => array(array('link' => '?register', 'text' => $lang['register']), array('link' => '?open_search', 'text' => $lang['open_search']))), array('ico' => 'icon-support', 'name' => $lang['menu_6'], 'show' => false, 'sub' => array(array('link' => '?stat', 'text' => $lang['statistic']), array('link' => 'map/index.html', 'text' => $lang['cartograph'], 'target' => '_blank'))));
function noBorderEnchantTable($enc) { global $UseorEquip, $game_text; echo "<table class=spell><tbody>"; echo "<tr><td class=Name>" . $enc['description'] . "</td></tr>"; // Вывод требования скила if ($enc['requiredSkill']) { echo '<tr><td class=req>' . sprintf($game_text['req_skill'], getSkillName($enc['requiredSkill']), $enc['requiredSkillRank']) . '</td></tr>'; } for ($i = 1; $i < 4; $i++) { if ($type = $enc['display_type_' . $i]) { $amount = $enc['amount_' . $i]; $spellid = $enc['spellid_' . $i]; switch ($type) { case 1: // ITEM_ENCHANTMENT_TYPE_COMBAT_SPELL if ($spell = getSpell($spellid)) { if ($desc = getSpellDesc($spell)) { $text = $desc; } else { if ($buff = getSpellBuff($spell)) { $text = $buff; } else { $text = $spell['SpellName']; } } echo "<tr><td class=SpellEnch>" . $UseorEquip[2] . " <a href=\"?spell={$spellid}\">" . $text . "</a></td></tr>"; } else { echo "<tr><td class=SpellEnch>" . $UseorEquip[2] . " cast ?? {$spellid}</td></tr>"; } break; case 2: // ITEM_ENCHANTMENT_TYPE_DAMAGE echo "<tr><td class=SpellEnch>+ {$amount} damage</td></tr>"; break; case 3: // ITEM_ENCHANTMENT_TYPE_EQUIP_SPELL if ($spell = getSpell($spellid)) { if ($desc = getSpellDesc($spell)) { $text = $desc; } else { if ($buff = getSpellBuff($spell)) { $text = $buff; } else { $text = $spell['SpellName']; } } echo "<tr><td class=SpellEnch>" . $UseorEquip[1] . " <a href=\"?spell={$spellid}\">" . $text . "</a></td></tr>"; } else { echo "<tr><td class=SpellDesc>" . $UseorEquip[1] . " cast ?? {$spellid}</td></tr>"; } break; case 4: // ITEM_ENCHANTMENT_TYPE_RESISTANCE echo "<tr><td> " . getResistanceText($spellid, $amount) . "</td></tr>"; break; case 5: // ITEM_ENCHANTMENT_TYPE_STAT if ($spellid >= 0 && $spellid < 8) { echo "<tr><td class=SpellEnch> " . getItemBonusText($spellid, $amount) . "</td></tr>"; } else { echo "<tr><td class=SpellEnch> " . getItemBonusText($spellid, $amount) . "</td></tr>"; } break; case 6: // ITEM_ENCHANTMENT_TYPE_TOTEM echo "<tr><td class=SpellEnch>+ {$amount} damage (Rockbiter)</td></tr>"; break; case 7: // On Use if ($spell = getSpell($spellid)) { if ($desc = getSpellDesc($spell)) { $text = $desc; } else { if ($buff = getSpellBuff($spell)) { $text = $buff; } else { $text = $spell['SpellName']; } } echo "<tr><td class=SpellEnch>" . $UseorEquip[0] . " <a href=\"?spell={$spellid}\">" . $text . "</a></td></tr>"; } else { echo "<tr><td class=SpellDesc>" . $UseorEquip[0] . " cast ?? {$spellid}</td></tr>"; } break; case 8: // Add Sockets Enchant echo "<tr><td class=SpellEnch>Add Socket Enchant</td></tr>"; break; default: echo "<tr><td>Err type {$type}</td></tr>"; break; } } } echo "</tbody></table>"; }
function getSkillInfo($PID) { $conn = conDB(); $sql = "SELECT * FROM skills WHERE PlayerID='{$PID}'"; $x = 0; $result = mysqli_query($conn, $sql); $return = array(); while ($row = $result->fetch_assoc()) { $SKID = $row["SkillID"]; $lvl = $row["LVL"]; $xp = $row["XP"]; $Bstr = $row["BoostSTR"]; $Bnum = $row["BoostNUM"]; $desc = getSkillDesc($SKID); $skillName = getSkillName($SKID); $return[$x] = $lvl; $x++; $return[$x] = $xp; $x++; $return[$x] = $Bstr; $x++; $return[$x] = $Bnum; $x++; $return[$x] = $skillName; $x++; $return[$x] = $desc; $x++; } return $return; }
function createSpellDetails($spell) { global $lang; echo '<table class=details width=600><tbody>'; echo '<tr><td colspan=4 class=head>' . $lang['detail_info'] . '</td></tr>'; echo '<tr><th>Name</th><td colspan=2>' . $spell['SpellName'] . '</td><td align=right>' . $spell['Rank'] . '</td></tr>'; if ($spell['Description']) { echo '<tr><th width=60>Info:</th><td colspan=3>' . getSpellDesc($spell) . '</td></tr>'; } if ($spell['ToolTip']) { echo '<tr><th>Buff:</th><td colspan=3>' . getSpellBuff($spell) . '</td></tr>'; } // Стоимость и длительность $cost = getSpellCostText($spell); $duration = getSpellDurationText($spell); if ($cost or $duration) { echo '<tr><th>Cost</th><td>' . ($cost ? $cost : 'No Cost') . '</td><th>Duration</th><td>' . $duration . '</td></tr>'; } echo '<tr>'; echo '<th width=13%>Level</th>'; echo '<td width=37%>Base ' . $spell['baseLevel'] . ', Max ' . $spell['maxLevel'] . ', Spell ' . $spell['spellLevel'] . '</td>'; echo '<th width=20%>Range</th>'; echo '<td width=30%>' . getRangeText($spell['rangeIndex']) . '</td>'; echo '</tr>'; // Время квста и школа (выводятся всегда) echo '<tr><th>Cast time</th><td>' . getCastTimeText($spell) . '</td><th>School</th><td>' . getSpellSchool($spell['SchoolMask']) . '</td></tr>'; $skillAbility = getSkillLineAbility($spell['id']); if ($skillAbility or $spell['Category']) { echo '<tr>'; echo '<th>Skill</th>'; if ($skillAbility) { echo '<td>' . getSkillName($skillAbility['skillId']) . '</td>'; } else { echo '<td>n/a</td>'; } echo '<th>Category</th>'; if ($spell['Category']) { echo '<td>' . getCategoryName($spell['Category']) . '</td>'; } else { echo '<td>n/a</td>'; } echo '</tr>'; } // Вывод механики и диспелла if ($spell['Mechanic'] or $spell['Dispel']) { echo '<tr>'; echo '<th>Mechanic</th><td>' . getMechanicName($spell['Mechanic']) . '</td>'; echo '<th>Dispel type</th><td>' . getDispelName($spell['Dispel']) . '</td>'; echo '</tr>'; } // Вывод кулдаунов $cooldown = getSpellCooldown($spell); if ($cooldown or $spell['StartRecoveryCategory'] or $spell['StartRecoveryTime']) { echo '<tr>'; echo '<th>Cooldown</th>'; if ($cooldown) { echo '<td>' . getTimeText($cooldown / 1000) . '</td>'; } else { echo '<td>No cooldown</td>'; } echo '<th>Global cooldown</th>'; if ($spell['StartRecoveryCategory'] or $spell['StartRecoveryTime']) { echo '<td>'; echo 'Affected'; if ($spell['StartRecoveryTime']) { echo ', ' . getTimeText($spell['StartRecoveryTime'] / 1000); } else { echo ', Not start'; } echo '</td>'; } else { echo '<td>n/a</td>'; } echo '</tr>'; } // Вывод требований форм $stances = $spell['Stances']; $stancesNot = $spell['StancesNot']; if ($stances or $stancesNot) { echo '<tr>'; echo '<th>Req form</th>'; if ($stances) { echo '<td>' . getAllowableForm($stances) . '</td>'; } else { echo '<td>n/a</td>'; } echo '<th>Not in form</th>'; if ($stancesNot) { echo '<td>' . getAllowableForm($stancesNot) . '</td>'; } else { echo '<td>n/a</td>'; } echo '</tr>'; } // Вывод требований одетого снаряжения $itemClass = $spell['EquippedItemClass']; $itemSubClass = $spell['EquippedItemSubClassMask']; $inventoryTypeMask = $spell['EquippedItemInventoryTypeMask']; if ($itemClass >= 0 or $inventoryTypeMask) { echo '<tr>'; echo '<th>Req item</th>'; if ($itemClass >= 0) { echo '<td>'; if ($itemSubClass) { echo getClassName($itemClass, 0) . ': ' . getSubclassList($itemClass, $itemSubClass); } else { echo getClassName($itemClass); } echo '</td>'; } else { echo '<td>n/a</td>'; } echo '<th>Inv type</th>'; if ($inventoryTypeMask) { echo '<td>' . getInventoryTypeList($inventoryTypeMask) . '</td>'; } else { echo '<td>n/a</td>'; } echo '</tr>'; } // Вывод тотм категорий и спеллфокуса $totem1 = $spell['TotemCategory_1']; $totem2 = $spell['TotemCategory_2']; $focus = $spell['RequiresSpellFocus']; if ($totem1 or $totem2 or $focus) { echo '<tr>'; echo '<th>Tools</th>'; if ($totem1 or $totem2) { echo '<td>'; if ($totem1) { echo getTotemCategory($totem1); } if ($totem2) { echo ', ' . getTotemCategory($totem2); } echo '</td>'; } else { echo '<td>n/a</td>'; } echo '<th>Spell Focus</th>'; if ($focus) { echo '<td>' . getSpellFocusName($focus, 2) . '</td>'; } else { echo '<td>n/a</td>'; } echo '</tr>'; } $area = $spell['AreaGroupId']; if ($area) { echo '<tr>'; echo '<th>Area</th>'; if ($area) { echo '<td>' . $area . '</td>'; } else { echo '<td>n/a</td>'; } echo '</tr>'; } // Вывод требований целей $targets = $spell['Targets']; $targetCreature = $spell['TargetCreatureType']; if ($targets or $targetCreature) { echo '<tr>'; echo '<th>Targets</th>'; if ($targets) { echo '<td>' . getTargetsList($targets) . '</td>'; } else { echo '<td>n/a</td>'; } echo '<th>Creature type</th>'; if ($targetCreature) { echo '<td>' . getCreatureTypeList($targetCreature) . '</td>'; } else { echo '<td>n/a</td>'; } echo '</tr>'; } if ($spell['Reagent_1'] or $spell['Reagent_2'] or $spell['Reagent_3'] or $spell['Reagent_4'] or $spell['Reagent_5'] or $spell['Reagent_6'] or $spell['Reagent_7'] or $spell['Reagent_8']) { echo '<tr>'; echo '<th>Reagents</th>'; echo '<td colspan=3>'; r_spellReagents($spell); echo '</td>'; echo '</tr>'; } // Вывод эффектов showEffectData($spell, 1); showEffectData($spell, 2); showEffectData($spell, 3); echo '</tbody></table>'; }
function getSkillNameForSpell($spellId, $as_ref = 1) { if ($SkillLineAbility = getSkillLineAbility($spellId)) { return getSkillName($SkillLineAbility['skillId'], $as_ref); } return ""; }
if ($entry == getQuestOld($entry)) { echo '<br><FONT color=#ff0000><b>' . $lang['quest_marked'] . '</FONT></b>'; } echo "</th></tr>"; echo "</th></tr>"; echo '<tr><td>'; if ($quest['ZoneOrSort'] > 0) { echo "<a style='float: right;' href=\"?s=q&ZoneID=" . $quest['ZoneOrSort'] . "\">" . getAreaName($quest['ZoneOrSort'], 0) . "</a>"; } else { if ($quest['ZoneOrSort'] < 0 and (-$quest['ZoneOrSort'] >= 374 or -$quest['ZoneOrSort'] == 221 or -$quest['ZoneOrSort'] == 241 or -$quest['ZoneOrSort'] >= 344 and -$quest['ZoneOrSort'] < 371 or -$quest['ZoneOrSort'] == 284 or -$quest['ZoneOrSort'] == 25 or -$quest['ZoneOrSort'] == 41 or -$quest['ZoneOrSort'] < 24)) { echo "<a style='float: right;' href=\"?s=q&SortID=" . -$quest['ZoneOrSort'] . "\">" . getQuestSort(-$quest['ZoneOrSort'], 0) . "</a>"; } } echo "{$lang['quest_level']} {$quest['QuestLevel']}<br>"; if ($quest['RequiredSkill']) { echo "<a style='float: right;' href=\"?s=q&SkillID=" . $quest['RequiredSkill'] . "\">" . getSkillName($quest['RequiredSkill'], 0) . " ({$quest['RequiredSkillValue']})</a>"; } if ($quest['MinLevel']) { echo "{$lang['obtained_at_level']} {$quest['MinLevel']}</td></tr>"; } if ($quest['SuggestedPlayers']) { echo "<tr><td>{$lang['suggestedplayers']} <b>{$quest['SuggestedPlayers']}</b></td></tr>"; } if ($quest['LimitTime']) { echo '<tr><td>' . $lang['qlimittime'] . ' ' . getTimeText($quest['LimitTime']) . '</td></tr>'; } if (getGameEventQuest($quest['entry'])) { $qevent = getGameEventQuest($quest['entry']); echo '<tr><td>' . $lang['obtained_at_event'] . ': <FONT color=#E614E6>' . getGameEventName($qevent) . '</FONT></td></tr>'; } if ($quest['SpecialFlags'] & QUEST_SPECIAL_FLAG_MONTHLY) {
function renderItemData($item, $item_data = 0) { global $gBonding, $Quality, $UseorEquip, $game_text; $colorname = $item['Quality']; $bonding = $item['bonding']; $invtype = $item['InventoryType']; $class = $item['class']; $subclass = $item['subclass']; $speed = $item['delay'] / 1000.0; $ssd = 0; $level = 80; $creator = 0; $giftCreator = 0; $random_suffix = 0; $random_prop = 0; $char_data = 0; $stack_count = 1; if ($item_data) { if ($item['ScalingStatValue'] || $item['ScalingStatDistribution']) { $level = getCharacterLevel($item_data[ITEM_FIELD_OWNER]); } if (intval(-$item_data[ITEM_FIELD_RANDOM_PROPERTIES_ID]) > 0) { $random_suffix = getRandomSuffix(intval(-$item_data[ITEM_FIELD_RANDOM_PROPERTIES_ID])); } if (intval($item_data[ITEM_FIELD_RANDOM_PROPERTIES_ID]) > 0) { $random_prop = getRandomProperty(intval($item_data[ITEM_FIELD_RANDOM_PROPERTIES_ID])); } if ($item_data[ITEM_FIELD_CREATOR]) { $creator = getCharacterName($item_data[ITEM_FIELD_CREATOR]); } if ($item_data[ITEM_FIELD_GIFTCREATOR]) { $giftCreator = getCharacterName($item_data[ITEM_FIELD_GIFTCREATOR]); } if ($item_data[ITEM_FIELD_STACK_COUNT]) { $stack_count = $item_data[ITEM_FIELD_STACK_COUNT]; } if ($random_suffix) { $item['name'] = $item['name'] . ' ' . $random_suffix['name']; } else { if ($random_prop) { $item['name'] = $item['name'] . ' ' . $random_prop['name']; } } if ($item_data[ITEM_FIELD_FLAGS] & ITEM_FLAGS_BINDED) { $bonding = -1; } } if ($item['ScalingStatDistribution'] && ($ssd = getScalingStatDistribution($item['ScalingStatDistribution']))) { if ($ssd['maxlevel'] && $level > $ssd['maxlevel']) { $level = $ssd['maxlevel']; } $mask = $item['ScalingStatValue']; $ssv = getScalingStatValues($level); $stat_multi = 0; // Stat multiplier if ($mask & 0x1f) { if ($mask & 1 << 0) { $stat_multi = $ssv['multiplier_1']; } if ($mask & 1 << 1) { $stat_multi = $ssv['multiplier_2']; } if ($mask & 1 << 2) { $stat_multi = $ssv['multiplier_3']; } if ($mask & 1 << 3) { $stat_multi = $ssv['multiplier_4']; } if ($mask & 1 << 4) { $stat_multi = $ssv['multiplier_5']; } } // Armor mod if ($mask & 0x1e0) { if ($mask & 1 << 5) { $item['armor'] = $ssv['multiplier_6']; } if ($mask & 1 << 6) { $item['armor'] = $ssv['multiplier_7']; } if ($mask & 1 << 7) { $item['armor'] = $ssv['multiplier_8']; } if ($mask & 1 << 8) { $item['armor'] = $ssv['multiplier_9']; } } // DPS mod (min = 70% from averange max = 130%) if ($mask & 0x7e00) { if ($mask & 1 << 9) { $dps = $ssv['multiplier_10']; } if ($mask & 1 << 10) { $dps = $ssv['multiplier_11']; } if ($mask & 1 << 11) { $dps = $ssv['multiplier_12']; } if ($mask & 1 << 12) { $dps = $ssv['multiplier_13']; } if ($mask & 1 << 13) { $dps = $ssv['multiplier_14']; } if ($mask & 1 << 14) { $dps = $ssv['multiplier_15']; } $averange = $speed * $dps; $item['dmg_min1'] = floor(0.7 * $averange); $item['dmg_max1'] = floor(1.3 * $averange); } // if ($mask & 0x08000) // spell power // ???=$ssv['multiplier_16']; // if ($mask & 0x10000) // feral AP // ???=$ssv['multiplier_17']; } // Вывод имени echo '<tr><td class=name><SPAN class=' . $Quality[$colorname] . '>' . $item['name'] . '</SPAN></td></tr>'; // Heroic item (green) if ($item['Flags'] & ITEM_FLAGS_HEROIC) { echo '<tr><td class=SpellStat>' . $game_text['item_heroic'] . '</td></tr>'; } if ($item['area']) { echo '<tr><td>' . getAreaName($item['area']) . '</td></tr>'; } if ($item['Map']) { echo '<tr><td>' . getMapName($item['Map']) . '</td></tr>'; } if ($item['Flags'] & ITEM_FLAGS_CONJURED) { echo '<tr><td>' . $game_text['conjured_item'] . '</td></tr>'; } // Вывод привязки вещи if ($bonding) { echo '<tr><td>' . $gBonding[$bonding] . '</td></tr>'; } // Вывод того что вещь содержит чтото if ($item['Flags'] & ITEM_FLAGS_OPENABLE) { echo '<tr><td class=SpellStat>' . $game_text['right_click'] . '</td></tr>'; } // <Right Click to Read> // Вывод уникальности вещи if ($item['maxcount'] == 1) { echo '<tr><td class=Unique>' . $game_text['unique'] . '</td></tr>'; } if ($item['maxcount'] > 1) { echo '<tr><td class=Unique>' . $game_text['unique'] . '(' . $item['maxcount'] . ')</td></tr>'; } $className = getClassName($class, 0); $subClassName = getShortSubclassName($class, $subclass, 0); // Зависимые от класса вещи параметры switch ($class) { // case 0:// Consumable // break; case 1: // Container echo "<tr><td>" . sprintf($game_text['slot'], $item['ContainerSlots'], $subClassName) . "</td></tr>"; break; case 2: // Weapon echo '<tr><td>' . '<div class=right>' . $subClassName . '</div>' . getInventoryType($invtype, 0) . '</td></tr>'; break; //case 3:// Gem //break; //case 3:// Gem //break; case 4: // Armor if ($invtype == 14) { $invtype = 22; } $sub = ''; if ($invtype != 16 && $subclass > 0) { $sub = '<div class=right>' . $subClassName . '</div>'; } echo '<tr><td>' . $sub . getInventoryType($invtype, 0) . '</td></tr>'; break; // case 5:// Reagent // break; // case 5:// Reagent // break; case 6: // Projectile echo '<tr><td><div class=right>' . $subClassName . '</div>' . $className . '</td></tr>'; $dps = ($item['dmg_min1'] + $item['dmg_max1']) / 2; echo '<tr><td>' . sprintf($game_text['ammo_dps'], $dps) . '</td></tr>'; break; // case 7:// Trade Goods // break; // case 8:// Generic // break; // case 9:// Recipe // break; // case 10:// Money // break; // case 7:// Trade Goods // break; // case 8:// Generic // break; // case 9:// Recipe // break; // case 10:// Money // break; case 11: //Quiver echo '<tr><td>' . sprintf($game_text['slot'], $item['ContainerSlots'], $subClassName) . '</td></tr>'; break; // case 12: //Quest // break; // case 13: //Key // break; // case 14: //Permanent // break; // case 15: //Misc // break; // case 12: //Quest // break; // case 13: //Key // break; // case 14: //Permanent // break; // case 15: //Misc // break; default: break; } // Вывод урона наносимого оружием но не боеприпасами if ($item['dmg_min1'] > 0 and $class != 6) { if ($speed == 0) { $speed = 1; } $dps = ($item['dmg_min1'] + $item['dmg_max1']) / (2 * $speed); $sub = '<div class=right>' . sprintf($game_text['weapon_speed'], $speed) . '</div>'; echo '<tr><td>' . $sub . sprintf($game_text['weapon_damage'], $item['dmg_min1'], $item['dmg_max1']) . '</td></tr>'; if ($class == 2) { echo '<tr><td>' . sprintf($game_text['weapon_dps'], $dps) . '</td></tr>'; } } // вывод брони if ($item['armor']) { echo '<tr><td>' . sprintf($game_text['iarmor'], $item['armor']) . '</td></tr>'; } // вывод блока if ($item['block']) { echo '<tr><td>' . sprintf($game_text['iblock'], $item['block']) . '</td></tr>'; } // Вывод статов на силу, ловкость, стамину, интелект, стамину if ($ssd) { for ($i = 1; $i <= 10; $i++) { renderPrimalStat($ssd['statmod_' . $i], $stat_multi * $ssd['modifier_' . $i] / 10000); } } else { for ($i = 1; $i <= $item['StatsCount']; $i++) { renderPrimalStat($item['stat_type' . $i], $item['stat_value' . $i]); } } // Вывод резистов if ($item['holy_res']) { echo "<tr><td>" . getResistanceText(1, $item['holy_res']) . "</td></tr>"; } if ($item['fire_res']) { echo "<tr><td>" . getResistanceText(2, $item['fire_res']) . "</td></tr>"; } if ($item['nature_res']) { echo "<tr><td>" . getResistanceText(3, $item['nature_res']) . "</td></tr>"; } if ($item['frost_res']) { echo "<tr><td>" . getResistanceText(4, $item['frost_res']) . "</td></tr>"; } if ($item['shadow_res']) { echo "<tr><td>" . getResistanceText(5, $item['shadow_res']) . "</td></tr>"; } if ($item['arcane_res']) { echo "<tr><td>" . getResistanceText(6, $item['arcane_res']) . "</td></tr>"; } // Описание камней if ($item['GemProperties']) { $GemProperties = getGemProperties($item['GemProperties']); echo "<tr><td class=SpellStat>{$GemProperties}</td></tr>"; } // Вывод сокетов if ($item_data) { renderSocketed($item['socketColor_1'], $item_data[SOCK_ENCHANTMENT_SLOT]); renderSocketed($item['socketColor_2'], $item_data[SOCK_ENCHANTMENT_SLOT_2]); renderSocketed($item['socketColor_3'], $item_data[SOCK_ENCHANTMENT_SLOT_3]); } else { renderSocket($item['socketColor_1']); renderSocket($item['socketColor_2']); renderSocket($item['socketColor_3']); } // Вывод бонуса сокетов (если есть доп инфо выводим данные из нее) if ($item_data) { // Вывод активного бонуса if ($item_data[BONUS_ENCHANTMENT_SLOT]) { echo '<tr><td class=SpellStat>' . sprintf($game_text['socket_bonus'], getEnchantmentDesc($item_data[BONUS_ENCHANTMENT_SLOT])) . '</td></tr>'; } else { if ($item['socketBonus']) { echo '<tr><td class=disBonus>' . sprintf($game_text['socket_bonus'], getEnchantmentDesc($item['socketBonus'])) . '</td></tr>'; } } } else { if ($item['socketBonus']) { echo '<tr><td class=SpellStat>' . sprintf($game_text['socket_bonus'], getEnchantmentDesc($item['socketBonus'])) . '</td></tr>'; } } // Вывод энчантов вещи if ($item_data) { renderEnchant($item_data, PERM_ENCHANTMENT_SLOT, $random_suffix); renderEnchant($item_data, TEMP_ENCHANTMENT_SLOT, $random_suffix); renderEnchant($item_data, WOTLK_ENCHANTMENT_SLOT, $random_suffix); renderEnchant($item_data, PROP_ENCHANTMENT_SLOT_0, $random_suffix); renderEnchant($item_data, PROP_ENCHANTMENT_SLOT_1, $random_suffix); renderEnchant($item_data, PROP_ENCHANTMENT_SLOT_2, $random_suffix); renderEnchant($item_data, PROP_ENCHANTMENT_SLOT_3, $random_suffix); renderEnchant($item_data, PROP_ENCHANTMENT_SLOT_4, $random_suffix); } else { if ($item['RandomProperty'] or $item['RandomSuffix']) { echo '<tr><td class=SpellStat>' . $game_text['random_enchant'] . '</td></tr>'; } } // Вывод крепкости if ($item_data && $item_data[ITEM_FIELD_MAXDURABILITY] > 0) { echo '<tr><td>' . sprintf($game_text['durability'], $item_data[ITEM_FIELD_DURABILITY], $item_data[ITEM_FIELD_MAXDURABILITY]) . '</td></tr>'; } else { if ($item['MaxDurability'] > 0) { echo '<tr><td>' . sprintf($game_text['durability'], $item['MaxDurability'], $item['MaxDurability']) . '</td></tr>'; } } // Вывод требования расы if ($text = getAllowableRace($item['AllowableRace'])) { echo '<tr><td>' . $game_text['allowable_race'] . ' ' . $text . '</td></tr>'; } // Вывод требований классов if ($text = getAllowableClass($item['AllowableClass'])) { echo '<tr><td>' . $game_text['allowable_class'] . ' ' . $text . '</td></tr>'; } // Вывод времени продолжительности if ($item['Duration']) { if ($item['ExtraFlags'] & 2) { echo '<tr><td>' . sprintf($game_text['idurationr'], getTimeText($item['Duration'])) . '</td></tr>'; } else { echo '<tr><td>' . sprintf($game_text['iduration'], getTimeText($item['Duration'])) . '</td></tr>'; } } // Вывод требования уровня if ($item['RequiredLevel'] > 1) { echo '<tr><td class=req>' . sprintf($game_text['req_level'], $item['RequiredLevel']) . '</td></tr>'; } // Уровень предмета if ($item['ItemLevel']) { echo '<tr><td>' . sprintf($game_text['ilevel'], $item['ItemLevel']) . '</td></tr>'; } // Вывод prospectable если надо 0x40000 if ($item['Flags'] & ITEM_FLAGS_PROSPECTABLE) { echo '<tr><td>' . $game_text['prospectable'] . '</td></tr>'; } // Вывод Millable если надо 0x20000000 if ($item['Flags'] & ITEM_FLAGS_MILLABLE) { echo '<tr><td>' . $game_text['millable'] . '</td></tr>'; } // Вывод требования скила if ($item['RequiredSkill']) { echo '<tr><td class=req>' . sprintf($game_text['req_skill'], getSkillName($item['RequiredSkill']), $item['RequiredSkillRank']) . '</td></tr>'; } // Требование знать спелл if ($item['requiredspell']) { echo '<tr><td class=req>' . $game_text['req_spell'] . ' ' . getSpellName(getSpell($item['requiredspell'])) . '</td></tr>'; } // Требования арена рейтинга "Requires personal arena rating of %d"; -- %d is the rating number required // $item['RequiredCityRank'] ?? // PVP_MEDAL1 = "Protector of Stormwind"; // PVP_MEDAL2 = "Overlord of Orgrimmar"; // PVP_MEDAL3 = "Thane of Ironforge"; // PVP_MEDAL4 = "High Sentinel of Darnassus"; // PVP_MEDAL5 = "Deathlord of the Undercity"; // PVP_MEDAL6 = "Chieftain of Thunderbluff"; // PVP_MEDAL7 = "Avenger of Gnomeregan"; // PVP_MEDAL8 = "Voodoo Boss of Sen'jin"; // Требования репутации -- Required faction reputation to use the item if ($item['RequiredReputationFaction']) { $faction = getFactionName($item['RequiredReputationFaction']); $rank = getReputationRankName($item['RequiredReputationRank']); echo '<tr><td class=faction>' . sprintf($game_text['req_reputation'], $faction, $rank) . '</td></tr>'; } if ($ssd) { echo '<tr><td>' . sprintf($game_text['ssd_req_level'], $ssd['maxlevel'], $level) . '</td></tr>'; } // Вывод статов на силу, ловкость, стамину, интелект, стамину if ($ssd) { for ($i = 1; $i <= 10; $i++) { renderSpellStat($ssd['statmod_' . $i], $stat_multi * $ssd['modifier_' . $i] / 10000); } } else { for ($i = 1; $i <= $item['StatsCount']; $i++) { renderSpellStat($item['stat_type' . $i], $item['stat_value' . $i]); } } if ($item['spellid_1'] != 483 and $item['spellid_1'] != 55884) { renderSpell($item['spellid_1'], $item['spelltrigger_1'], $item_data ? $item_data[ITEM_FIELD_SPELL_CHARGES + 0] : $item['spellcharges_1'], $item['spellcooldown_1'], $item['spellcategory_1'], $item['spellcategorycooldown_1']); renderSpell($item['spellid_2'], $item['spelltrigger_2'], $item_data ? $item_data[ITEM_FIELD_SPELL_CHARGES + 1] : $item['spellcharges_2'], $item['spellcooldown_2'], $item['spellcategory_2'], $item['spellcategorycooldown_2']); renderSpell($item['spellid_3'], $item['spelltrigger_3'], $item_data ? $item_data[ITEM_FIELD_SPELL_CHARGES + 2] : $item['spellcharges_3'], $item['spellcooldown_3'], $item['spellcategory_3'], $item['spellcategorycooldown_3']); renderSpell($item['spellid_4'], $item['spelltrigger_4'], $item_data ? $item_data[ITEM_FIELD_SPELL_CHARGES + 3] : $item['spellcharges_4'], $item['spellcooldown_4'], $item['spellcategory_4'], $item['spellcategorycooldown_4']); renderSpell($item['spellid_5'], $item['spelltrigger_5'], $item_data ? $item_data[ITEM_FIELD_SPELL_CHARGES + 4] : $item['spellcharges_5'], $item['spellcooldown_5'], $item['spellcategory_5'], $item['spellcategorycooldown_5']); } if ($item['itemset']) { $set = getItemSet($item['itemset']); if ($set == 0) { echo '<tr><td class=itemsetname> Unknown set - ' . $item['itemset'] . '</td></tr>'; } else { // Получаем игрока чтобы вывести инфу о сете if ($item_data && ($char = getCharacter($item_data[ITEM_FIELD_OWNER]))) { $char_data = explode(' ', $char['data']); } $text = ""; $count = 0; $itemnum = 0; // Подсчитываем всего вещей в сете (а также если на игроке то сколько из вещей сета на нём) // Одновременно составяем список for ($i = 1; $i < 18; $i++) { if ($setitem = $set['item_' . $i]) { $count++; $name = getItemName($setitem); if (isItemOnPlayer($setitem, $char_data)) { $itemnum++; $text = $text . '<tr><td class=enSetName><a href="?item=' . $setitem . '">' . $name . '</a></td></tr>'; } else { $text = $text . '<tr><td class=disSetName><a href="?item=' . $setitem . '">' . $name . '</a></td></tr>'; } } } echo '<tr><td class=itemsetname><a href="?itemset=' . $set['id'] . '">' . $set['name'] . "</a> ({$itemnum}/{$count})</td></tr>"; if ($set['req_skill']) { echo '<tr><td class=req>' . sprintf($game_text['req_skill'], getSkillName($set['req_skill']), $set['req_skill_value']) . '</td></tr>'; } echo $text; // Выводим бонусы сета (если на игроке - то активны ион или нет) for ($i = 1; $i < 9; $i++) { if ($setSpell = $set['spell_' . $i]) { $name = get_spell_details($setSpell); $num = $set['count_' . $i]; if ($char_data) { $iclass = $num <= $itemnum ? 'enSpell' : 'disSpell'; echo '<tr><td class=' . $iclass . '><a href="?spell=' . $setSpell . '">(' . $num . ') ' . $name . '</a></td></tr>'; } else { echo '<tr><td><a href="?spell=' . $setSpell . '">(' . $num . ') ' . $name . '</a></td></tr>'; } } } } } if ($item['description'] != "") { if ($item['spellid_1'] == 483 or $item['spellid_1'] == 55884) { echo '<tr><td><a href="?spell=' . $item['spellid_2'] . '">' . $UseorEquip[$item['spelltrigger_2']] . ' ' . $item['description'] . '</a></td></tr>'; if ($spell = getSpell($item['spellid_2'])) { if ($ritem = getItem($spell['EffectItemType_1'])) { echo '<tr><td> </td></tr>'; renderItemData($ritem); } if ($req = getRecipeReqString($spell)) { echo '<tr><td> </td></tr>'; echo '<tr><td>' . $game_text['req_ingridients'] . ' ' . $req . '</td></tr>'; } } } else { echo '<tr><td class=itemdesc>"' . $item['description'] . '"</td></tr>'; } } // Written by %s if ($creator) { echo '<tr><td class=enSpell><' . sprintf($game_text['made_by'], $creator) . '></td></tr>'; } if ($item['startquest']) { echo '<tr><td>' . $game_text['start_quest'] . '</td></tr>'; } }
function r_questName($data) { global $lang; $name = @$data['Title_loc'] ? $data['Title_loc'] : $data['Title']; if (getAllowableRace($data['RequiredRaces']) && $data['RequiredRaces'] & 1101 && $data['RequiredRaces'] != 1791) { echo "<img width=22 height=22 src='images/player_info/factions_img/alliance.gif'> "; } if (getAllowableRace($data['RequiredRaces']) && $data['RequiredRaces'] & 690 && $data['RequiredRaces'] != 1791) { echo "<img width=22 height=22 src='images/player_info/factions_img/horde.gif'> "; } echo '<a href="?quest=' . $data['entry'] . '">' . ($name ? $name : 'no name') . '</a><br>'; if ($data['ZoneOrSort'] > 0) { echo '<div class=areaname><a href="?s=q&ZoneID=' . $data['ZoneOrSort'] . '">' . getAreaName($data['ZoneOrSort']) . '</a></div>'; } else { if ($data['ZoneOrSort'] < 0 and (-$data['ZoneOrSort'] >= 374 or -$data['ZoneOrSort'] == 221 or -$data['ZoneOrSort'] == 241 or -$data['ZoneOrSort'] >= 344 and -$data['ZoneOrSort'] < 371 or -$data['ZoneOrSort'] == 284 or -$data['ZoneOrSort'] == 25 or -$data['ZoneOrSort'] == 41 or -$data['ZoneOrSort'] < 24)) { echo '<div class=areaname><a href="?s=q&SortID=' . -$data['ZoneOrSort'] . '">' . getQuestSort(-$data['ZoneOrSort']) . '</a></div>'; } } if ($data['RequiredClasses']) { echo '<div class=classqname>' . getQAllowableClass($data['RequiredClasses']) . '</div>'; } if ($data['RequiredSkill']) { echo '<div class=areaname><a href="?s=q&SkillID=' . $data['RequiredSkill'] . '">' . getSkillName($data['RequiredSkill'], 0) . '(' . $data['RequiredSkillValue'] . ')</a></div>'; } if ($data['SpecialFlags'] & QUEST_SPECIAL_FLAG_MONTHLY) { echo '<div class=areaname><a href="?s=q&Sfm=' . $data['SpecialFlags'] . '">' . $lang['quest_type3'] . '</a></div>'; } if ($data['QuestFlags'] & QUEST_FLAGS_WEEKLY) { echo '<div class=areaname><a href="?s=q&Sfw=' . $data['QuestFlags'] . '">' . $lang['quest_type2'] . '</a></div>'; } if ($data['QuestFlags'] & QUEST_FLAGS_DAILY) { echo '<div class=areaname><a href="?s=q&Sfd=' . $data['QuestFlags'] . '">' . $lang['quest_type1'] . '</a></div>'; } if ($data['SpecialFlags'] & QUEST_SPECIAL_FLAG_REPEATABLE && ($data['SpecialFlags'] & QUEST_SPECIAL_FLAG_MONTHLY) == 0 && ($data['QuestFlags'] & (QUEST_FLAGS_DAILY | QUEST_FLAGS_WEEKLY)) == 0) { echo '<div class=areaname><a href="?s=q&Sfr=' . $data['SpecialFlags'] . '">' . $lang['quest_type0'] . '</a></div>'; } }