Index: include/talent_calc.php =================================================================== --- include/talent_calc.php (revision 32) +++ include/talent_calc.php (working copy) @@ -1,16 +1,104 @@ array(161,164,163), // Warior + '2' => array(382,383,381), // Paladin + '3' => array(361,363,362), // Hunter + '4' => array(182,181,183), // Rogue + '5' => array(201,202,203), // Priest + '6' => array(398,399,400), // Death knight + '7' => array(261,263,262), // Shaman + '8' => array( 81, 41, 61), // Mage + '9' => array(302,303,301), // Warlock + '11'=> array(283,281,282), // Druid +); + +$petFamilyToTalentTab = array( +// Pet Ferocity + 4=>410, + 5=>410, +10=>410, +11=>410, +13=>410, +19=>410, +23=>410, +25=>410, +58=>410, +59=>410, +60=>410, +// Pet Tenacity +1=>409, +3=>409, +6=>409, +7=>409, +9=>409, +15=>409, +21=>409, +21=>409, +61=>409, +62=>409, +// Pet Cunning +0=>411, +2=>411, +8=>411, +12=>411, +14=>411, +16=>411, +17=>411, +18=>411, +22=>411, +24=>411, +63=>411); + +$gHunterPetType=array( +0=>24, +1=>4, +2=>26, +3=>5, +4=>7, +5=>2, +6=>8, +7=>6, +8=>30, +9=>9, +10=>25, +11=>37, +12=>34, +13=>11, +14=>31, +15=>20, +16=>35, +17=>3, +18=>33, +19=>12, +20=>21, +21=>32, +22=>27, +23=>1, +24=>38, +25=>39, +58=>46, +59=>45, +60=>44, +61=>43, +62=>42, +63=>41 +); + function generateCharacterBild($guid, $class) { global $talentTabId, $cDB, $wDB; - $tab_set = $wDB->selectCol('SELECT `id` FROM `wowd_talent_tab` WHERE `class_mask` & ?d ORDER BY `tab` ', 1<<($class-1)); + $tab_set = @$talentTabId[$class]; // if (!$tab_set) return; $spellList = $cDB->select('SELECT `spell` AS ARRAY_KEY FROM `character_spell` WHERE `guid` = ?d and `disabled` = 0', $guid); $bild = ''; $tinfo = $wDB->select( - 'SELECT + "SELECT `TalentTab` AS ARRAY_KEY_1, `Row` AS ARRAY_KEY_2, `Col` AS ARRAY_KEY_3, @@ -19,7 +107,7 @@ `Rank_3`, `Rank_4`, `Rank_5` - FROM `wowd_talents` WHERE `TalentTab` IN (?a) ORDER BY `TalentTab`, `Row`, `Col`', $tab_set); + FROM `wowd_talents` WHERE `TalentTab` IN (?a) ORDER BY `TalentTab`, `Row`, `Col`", $tab_set); $points = array(0, 0, 0); $total = 0; $max = 0; @@ -44,25 +132,12 @@ return array('calc_bild'=>$bild, 'points'=>$points, 'total'=>$total, 'name'=>$name); } -function includeTalentScript($class, $petId, $maxLevel, $header, $ver = "322") +function includeTalentScript($class, $petId, $maxLevel, $header, $ver = "333") { - global $wDB, $game_text, $config; - $tab_set = 0; - // Create tabs list - if ($class) - { - // For players - $tab_set = $wDB->selectCol('SELECT `id` FROM `wowd_talent_tab` WHERE `class_mask` & ?d ORDER BY `tab` ', 1<<($class-1)); - } - else if ($petId>=0) - { - // For pets (need get pet_talent_type from creature_family) - $talent_type = $wDB->selectCell('SELECT `pet_talent_type` FROM `wowd_creature_family` WHERE `category` = ?d', $petId); - if (isset($talent_type) && $talent_type>=0) - $tab_set = $wDB->selectCol('SELECT `id` FROM `wowd_talent_tab` WHERE `pet_mask` & ?d ORDER BY `tab`', 1<<$talent_type); - } - if (!$tab_set) - return; + global $wDB, $game_text, $talentTabId, $petFamilyToTalentTab, $config; + if (!isset($petFamilyToTalentTab[$petId]) AND !isset($talentTabId[$class])) + return; + // Создаём кэш для калькулятора (если его нет или устарел) $data_file = "tc_".$class.$petId."_".$config['lang']."_".$ver.".js"; if (checkUseCacheJs($data_file, 60*60*24)) @@ -91,9 +166,10 @@ // Получаем данные о ветках из базы и переводим их в нужный формат if ($class) { + $tab_set = $talentTabId[$class]; // () $ppr = 5; $talents = $wDB->select( - 'SELECT + "SELECT `TalentID` AS ARRAY_KEY, `TalentTab`, `Row`, @@ -107,17 +183,20 @@ `DependsOnRank` FROM `wowd_talents` - WHERE `TalentTab` IN (?a)', $tab_set); + WHERE `TalentTab` IN (?a)", $tab_set); } - else if ($petId >= 0) + else { + $tab = $petFamilyToTalentTab[$petId]; + $tab_set = array($tab); // () $ppr = 3; + $petMask1=0; $petMask2=0; if ($petId < 32) $petMask1=1<<($petId ); else $petMask2=1<<($petId-32); $talents = $wDB->select( - 'SELECT + "SELECT `TalentID` AS ARRAY_KEY, `TalentTab`, `Row`, @@ -132,7 +211,7 @@ FROM `wowd_talents` WHERE - `TalentTab` IN (?a) AND ((`petflag1`=0 AND `petflag2`=0) OR (`petflag1`& ?d) OR (`petflag2`& ?d))', $tab_set, $petMask1, $petMask2); + `TalentTab` = ?d AND ((`petflag1`=0 AND `petflag2`=0) OR (`petflag1`& ?d) OR (`petflag2`& ?d))", $tab, $petMask1, $petMask2); } // Заполняем преборазователь TalentId => TabId и Имена веток талантов @@ -185,7 +264,7 @@ $depend = 0; } echo' - var tc_showclass ="'.($class?$class:$tab_set[0]).'"; + var tc_showclass ="'.($class?$class:$tab).'"; var tc_name = '.php2js($tab_name).'; var tc_tabs = '.count($tab_set).'; var tc_row = '.$t_row.'; @@ -199,7 +278,7 @@ flushJsCache($data_file); } echo' - Index: module/talent_calc/talent.php =================================================================== --- module/talent_calc/talent.php (revision 32) +++ module/talent_calc/talent.php (working copy) @@ -14,8 +14,8 @@ $cid = 0; -$link = '?talent'; -$header = ''; +$link = "?talent"; +$header = ""; echo '
'; //echo 'Classes: '; @@ -23,7 +23,7 @@ foreach($cname as $c=>$name) { - echo ' '; + echo ' '; if ($talent==$name) { $header = getClass($c); @@ -33,15 +33,14 @@ } echo "
"; //echo "
Pets: "; -$list = $wDB->select('SELECT `id`, `category` FROM `wowd_creature_family` WHERE `category` <> -1 ORDER BY `name`'); -foreach($list as $family) +foreach($gHunterPetType as $c=>$family) { $f = $family['id']; $c = $family['category']; - echo ' '; + echo ' '; if ($pid==$c) { - $header = getCreatureFamily($f); + $header = getCreatureFamily($family); $link.="&pet=".$c; } }