コード例 #1
0
 function load_talents()
 {
     global $mysql, $config;
     $this->talentSpec[0]['name'] = 'untalented';
     $this->talentSpec[0]['nr'] = false;
     $this->talentSpec[1]['name'] = 'untalented';
     $this->talentSpec[1]['nr'] = false;
     $max = array(0, 0);
     $specs = $mysql->getRows("SELECT id,name FROM `talenttab` WHERE `refmask_chrclasses` = '?1' order by tab_number", pow(2, $this->class - 1), 'armory');
     for ($spcN = 0; $spcN < 2; $spcN++) {
         $talentLink = '';
         if ($config['mangos_version'] !== 0) {
             $spells = $mysql->getRows("SELECT `spell`,`spec` FROM `character_talent` WHERE `guid` = '?1' AND `spec` = ?2", $this->guid, $spcN, 'char');
         } else {
             if ($spcN == 0) {
                 $spells = $mysql->getRows("SELECT `spell`, '0' as `spec` FROM `character_spell` WHERE `guid` = '?1'", $this->guid, 'char');
             }
         }
         for ($i = 0; $i < 3; $i++) {
             $c = 0;
             $spec = $specs[$i];
             $talents = $mysql->getRows("SELECT rank1, rank2, rank3, rank4, rank5 FROM `talent` WHERE `ref_tab` = '?1' order by row,col", $spec['id'], 'armory');
             foreach ($talents as $key => $value) {
                 $ids .= $value['rank1'] . ',';
             }
             if ($spells) {
                 foreach ($spells as $k => $v) {
                     $spell_ids .= $v['spell'] . ',';
                 }
             }
             $r = $mysql->getRows("SELECT id,SpellName FROM `spell` WHERE `id` IN (?1-1)", $ids . $spell_ids, 'armory');
             foreach ($r as $row) {
                 $SpellNames .= "'" . addslashes($row['SpellName']) . '\',';
                 $NameToId[arrayName($row['SpellName'])] = $row['id'];
             }
             $r = $mysql->getRows("SELECT id,SpellName,Rank FROM `spell` WHERE Rank LIKE 'Rank %' and `SpellName` IN (?1)", substr($SpellNames, 0, -1), 'armory');
             //die($mysql->Query);
             if ($r) {
                 foreach ($r as $row) {
                     $Ranks[$NameToId[arrayName($row['SpellName'])]][3] = $row['SpellName'];
                     if ($row['Rank'] == 'Rank 1') {
                         $Ranks[$NameToId[arrayName($row['SpellName'])]][0] = $row['id'];
                     } else {
                         $row['Rank'] = explode(' ', $row['Rank']);
                         $row['Rank'] = $row['Rank'][1];
                         if ($row['Rank'] > $Ranks[$NameToId[arrayName($row['SpellName'])]][2]) {
                             $Ranks[$NameToId[arrayName($row['SpellName'])]][2] = $row['Rank'];
                             $Ranks[$NameToId[arrayName($row['SpellName'])]][1] = $row['id'];
                         }
                     }
                 }
             }
             if ($spells) {
                 foreach ($talents as $key => $value) {
                     $add = '0';
                     $c = 0;
                     $rank_1 = $Ranks[$value['rank1']][1];
                     $crr = $value['rank1'];
                     foreach ($spells as $k => $v) {
                         if (in_array($v['spell'], $value)) {
                             switch (array_search($v['spell'], $value)) {
                                 case "rank1":
                                     $c = 1;
                                     $add = '1';
                                     break;
                                 case "rank2":
                                     $c = 2;
                                     $add = '2';
                                     break;
                                 case "rank3":
                                     $c = 3;
                                     $add = '3';
                                     break;
                                 case "rank4":
                                     $c = 4;
                                     $add = '4';
                                     break;
                                 case "rank5":
                                     $c = 5;
                                     $add = '5';
                                     break;
                             }
                             $crr = $value['rank' . $add];
                         } else {
                             if (in_array($Ranks[$v['spell']][0], $value)) {
                                 $c = 1;
                                 $add = '1';
                                 $crr = $v['spell'];
                                 $rank_1 = $Ranks[$v['spell']][1];
                             }
                         }
                     }
                     $talentList .= $crr . ',';
                     $baseList[$crr] = array($rank_1, $value['rank1']);
                     // Potrzebujemy tablice ID pierwszych rankow.
                     $talentLink .= $add;
                     $this->talentCount[$spcN][$i] += $c;
                 }
             }
             if ($this->talentCount[$spcN][$i] > $max[$spcN]) {
                 $this->talentSpec[$spcN]['name'] = $spec['name'];
                 $this->talentSpec[$spcN]['nr'] = $i + 1;
                 $max[$spcN] = $this->talentCount[$spcN][$i];
             }
         }
         $this->talentLink[$spcN] = $talentLink;
         $tb = $this->talentCount[$spcN];
         $max = array_keys($tb, max($tb));
         $tb[$max[0]] = -1;
         $secMax = array_keys($tb, max($tb));
         if ($this->talentCount[$spcN][$secMax[0]] > 0 && $this->talentCount[$spcN][$max[0]] / $this->talentCount[$spcN][$secMax[0]] < 1.4) {
             $this->talentSpec[$spcN]['name'] = 'Hybrid';
             $this->talentSpec[$spcN]['nr'] = -1;
         }
     }
     //$this->load_talent_info($talentList, $baseList);  This info is now generated in class.talent.php
 }
コード例 #2
0
 function load_talents()
 {
     global $mysql, $config;
     $talentLink = '';
     $this->talentSpec['name'] = 'untalented';
     $this->talentSpec['nr'] = false;
     $max = 0;
     $specs = $mysql->getRows("SELECT id,name FROM `talenttab` WHERE `refmask_chrclasses` = '?1' order by tab_number", pow(2, $this->class - 1), 'armory');
     $spells = $mysql->getRows("SELECT `spell` FROM `character_spell` WHERE `guid` = '?1' AND `disabled` = '0'", $this->guid, 'char');
     for ($i = 0; $i < 3; $i++) {
         $c = 0;
         $spec = $specs[$i];
         $talents = $mysql->getRows("SELECT rank1, rank2, rank3, rank4, rank5 FROM `talent` WHERE `ref_tab` = '?1' order by row,col", $spec['id'], 'armory');
         foreach ($talents as $key => $value) {
             $ids .= $value['rank1'] . ',';
         }
         if ($spells) {
             foreach ($spells as $k => $v) {
                 $spell_ids .= $v['spell'] . ',';
             }
         }
         $r = $mysql->getRows("SELECT id,SpellName FROM `spell` WHERE `id` IN (?1-1)", $ids . $spell_ids, 'armory');
         foreach ($r as $row) {
             $SpellNames .= "'" . addslashes($row['SpellName']) . '\',';
             $NameToId[arrayName($row['SpellName'])] = $row['id'];
         }
         $r = $mysql->getRows("SELECT id,SpellName,Rank FROM `spell` WHERE Rank LIKE 'Rank %' and `SpellName` IN (?1)", substr($SpellNames, 0, -1), 'armory');
         //die($mysql->Query);
         if ($r) {
             foreach ($r as $row) {
                 $Ranks[$NameToId[arrayName($row['SpellName'])]][3] = $row['SpellName'];
                 if ($row['Rank'] == 'Rank 1') {
                     $Ranks[$NameToId[arrayName($row['SpellName'])]][0] = $row['id'];
                 } else {
                     $row['Rank'] = explode(' ', $row['Rank']);
                     $row['Rank'] = $row['Rank'][1];
                     if ($row['Rank'] > $Ranks[$NameToId[arrayName($row['SpellName'])]][2]) {
                         $Ranks[$NameToId[arrayName($row['SpellName'])]][2] = $row['Rank'];
                         $Ranks[$NameToId[arrayName($row['SpellName'])]][1] = $row['id'];
                     }
                 }
             }
         }
         if ($spells) {
             foreach ($talents as $key => $value) {
                 $add = '0';
                 $rank_1 = $Ranks[$value['rank1']][1];
                 $crr = $value['rank1'];
                 foreach ($spells as $k => $v) {
                     if (in_array($v['spell'], $value)) {
                         switch (array_search($v['spell'], $value)) {
                             case "rank1":
                                 $c += 1;
                                 $add = '1';
                                 break;
                             case "rank2":
                                 $c += 2;
                                 $add = '2';
                                 break;
                             case "rank3":
                                 $c += 3;
                                 $add = '3';
                                 break;
                             case "rank4":
                                 $c += 4;
                                 $add = '4';
                                 break;
                             case "rank5":
                                 $c += 5;
                                 $add = '5';
                                 break;
                         }
                         $crr = $value['rank' . $add];
                     } else {
                         if (in_array($Ranks[$v['spell']][0], $value)) {
                             $c += 1;
                             $add = '1';
                             $crr = $v['spell'];
                             $rank_1 = $Ranks[$v['spell']][1];
                         }
                     }
                 }
                 $talentList .= $crr . ',';
                 // Najwyzszy rank lub pierwszy jesli nie istnieje.
                 $baseList[$crr] = array($rank_1, $value['rank1']);
                 // Potrzebujemy tablice ID pierwszych rankow.
                 $talentLink .= $add;
             }
         }
         //die($talentList);
         $this->talentCount[$i] = $c;
         if ($this->talentCount[$i] > $max) {
             $this->talentSpec['name'] = $spec['name'];
             $this->talentSpec['nr'] = $i + 1;
             $max = $this->talentCount[$i];
         }
     }
     $this->talentLink = $talentLink;
     $this->load_talent_info($talentList, $baseList);
     //die($this->talentLink);
 }