/** * * @param type $row * @return type */ function spellinfo2(&$row) { global $DB; global $item_cols; if ($row) { $spell = array(); $spell['entry'] = $row['spellID']; $spell['quality'] = '@'; $spell['name'] = $row['spellname_loc' . $_SESSION['locale']]; $spell['rank'] = $row['rank_loc' . $_SESSION['locale']]; $spell['level'] = $row['levelspell']; $spell['school'] = $row['resistancesID']; // TODO: Что за cat? $spell['cat'] = 0; // Скилл // if(!(isset($row['skillID']))) // $skillrow = list($row['skillID'],$row['req_skill_value'],$row['min_value'],$row['max_value']);//$DB->selectRow('SELECT skillID, req_skill_value, min_value, max_value FROM ?_aowow_skill_line_ability WHERE spellID=?d LIMIT 1', $spell['entry']); if (isset($row['skillID'])) { // if($skillrow['req_skill_value'] != 1) // $spell['learnedat'] = $skillrow['req_skill_value']; // TODO: На каком уровне скилла можно обучиться спеллу (поле learnedat) if ($row['min_value'] and $row['max_value']) { $spell['colors'] = array(); $spell['colors'][0] = ''; $spell['colors'][1] = $row['min_value']; $spell['colors'][2] = floor(($row['max_value'] + $row['min_value']) / 2); $spell['colors'][3] = $row['max_value']; } $spell['skill'] = $row['skillID']; } // Реагенты $spell['reagents'] = array(); $i = 0; global $allitems; for ($j = 1; $j <= 8; $j++) { if ($row['reagent' . $j]) { $spell['reagents'][$i] = array(); // ID реагента $spell['reagents'][$i]['entry'] = $row['reagent' . $j]; // Доп данные о реагенте // Если данных для этой вещи ещё нет: allitemsinfo($spell['reagents'][$i]['entry'], 0); // Количество реагентов $spell['reagents'][$i]['count'] = $row['reagentcount' . $j]; $i++; } } // Создает вещь: $i = 0; for ($j = 1; $j <= 3; $j++) { if (isset($row['effect' . $j . 'id']) && $row['effect' . $j . 'id'] == 24) { $spell['creates'][$i] = array(); $spell['creates'][$i]['entry'] = $row['effect' . $j . 'itemtype']; $spell['creates'][$i]['count'] = $row['effect' . $j . 'BasePoints'] + 1; if (!isset($allitems[$spell['creates'][$i]['entry']])) { $createrow = $DB->selectRow(' SELECT ?# FROM ?_item_template, ?_aowow_icons WHERE entry=?d AND id=displayid LIMIT 1', $item_cols[0], $spell['creates'][$i]['entry']); allitemsinfo2($createrow, 0); } if (!isset($allitems[$spell['creates'][$i]['entry']])) { // Если так и не существует - нет соответствующей записи в таблице вещей $spell['quality'] = 6; } else { $spell['quality'] = 6 - $allitems[$spell['creates'][$i]['entry']]['quality']; } $i++; } } allspellsinfo2($row, 0); return $spell; } else { return; } }
function iteminfo2(&$Row, $level = 0) { global $DB; global $allitems; global $spell_cols; global $object_cols; $item = array(); // Номер вещи $item['entry'] = $Row['entry']; // Название вещи $item['name'] = localizedName($Row); // Тип вещи $item['type'] = $Row['InventoryType']; $item['displayid'] = $Row['displayid']; // Уровень вещи $item['level'] = $Row['ItemLevel']; // Качество вещи... $item['quality'] = $Row['quality']; $item['quality2'] = 7 - $Row['quality']; // Требуемый уровень вещи: $item['reqlevel'] = $Row['RequiredLevel']; // Класс и подкласс вещи // TODO: немного неверное определение $item['classs'] = $Row['class']; $item['subclass'] = $Row['subclass']; $item['rclass'] = $Row['AllowableClass']; // Иконка вещи $item['iconname'] = $Row['iconname']; // Кол-во вещей в пачке $item['stackable'] = $Row['stackable']; // Стоимость вещи для покупки // DPS $dps = 0; if ($Row['class'] == 2) { for ($i = 1; $i <= 2; $i++) { $d_type = $Row['dmg_type' . $i]; $d_min = $Row['dmg_min' . $i]; $d_max = $Row['dmg_max' . $i]; if ($d_max > 0 and $Row['class'] != 6) { $delay = $Row['delay'] / 1000; if ($delay > 0) { $dps = $dps + round(($d_max + $d_min) / (2 * $delay), 1); } } } $item['dps'] = $dps; $item['speed'] = $Row['delay'] / 1000; if (!$item['speed']) { $item['speed'] = -1; } } // Armor $item['armor'] = $Row['armor']; $item['slot'] = $Row['InventoryType']; // Bag if ($Row['class'] == 1) { $item['slots'] = $Row['ContainerSlots']; } // Добавляем в глобальный массив allitems allitemsinfo2($Row, 0); if ($level > 0) { $item['BuyPrice'] = $Row['BuyPrice']; // $item['BagFamily'] = $Row['BagFamily']; $item['ContainerSlots'] = $Row['ContainerSlots']; $item['DisenchantID'] = $Row['DisenchantID']; // Навык энчанта для разборки вещи if ($Row['RequiredDisenchantSkill'] != -1) { $item['disenchantskill'] = $Row['RequiredDisenchantSkill']; } // Цена на продажу $item['sellgold'] = floor($Row['SellPrice'] / 10000); $item['sellsilver'] = floor($Row['SellPrice'] % 10000 / 100); $item['sellcopper'] = floor($Row['SellPrice'] % 100); // Цена за покупку $item['buygold'] = floor($Row['BuyPrice'] / 10000); $item['buysilver'] = floor($Row['BuyPrice'] % 10000 / 100); $item['buycopper'] = floor($Row['BuyPrice'] % 100); // Начинает квест if ($Row['startquest']) { $item['starts'] = array(GetDBQuestInfo($Row['startquest'], 0xffffff)); } // Информационное окно $item['info'] = render_item_tooltip($Row); // Обучает $teaches = array(); for ($j = 1; $j <= 4; $j++) { if ($Row['spellid_' . $j] == 483) { $teaches[] = spellinfo($Row['spellid_' . ($j + 1)]); } } if ($teaches) { $item['teaches'] = $teaches; unset($teaches); unset($spellrow); } // Открывает: // Тип замков, для которых этот предмет является ключем: $locks_row = $DB->selectCol(' SELECT lockID FROM ?_lock WHERE (type1=1 AND lockproperties1=?d) OR (type2=1 AND lockproperties2=?d) OR (type3=1 AND lockproperties3=?d) OR (type4=1 AND lockproperties4=?d) OR (type5=1 AND lockproperties5=?d) ', $item['entry'], $item['entry'], $item['entry'], $item['entry'], $item['entry']); if ($locks_row) { // Игровые объекты с таким типом замка: $item['unlocks'] = $DB->select(' SELECT ?# FROM gameobject_template WHERE ( ((type IN (?a)) AND (data0 IN (?a))) OR ((type IN (?a)) AND (data0 IN (?a))) ) ', $object_cols[0], array(GAMEOBJECT_TYPE_QUESTGIVER, GAMEOBJECT_TYPE_CHEST, GAMEOBJECT_TYPE_TRAP, GAMEOBJECT_TYPE_GOOBER, GAMEOBJECT_TYPE_CAMERA, GAMEOBJECT_TYPE_FLAGSTAND, GAMEOBJECT_TYPE_FLAGDROP), $locks_row, array(GAMEOBJECT_TYPE_DOOR, GAMEOBJECT_TYPE_BUTTON), $locks_row); if (!$item['unlocks']) { unset($item['unlocks']); } } unset($locks_row); } return $item; }
{ ,l.name_loc?d as `name_loc` } FROM ?_icons, item_template c { LEFT JOIN (locales_item l) ON l.entry=c.entry AND ? } WHERE c.entry=?d AND id=displayid LIMIT 1 ', $item_cols[0], $_SESSION['locale'] > 0 ? $_SESSION['locale'] : DBSIMPLE_SKIP, $_SESSION['locale'] > 0 ? 1 : DBSIMPLE_SKIP, $spell['effect'][$i]['item']['entry']); $spell['effect'][$i]['item']['name'] = $tmpRow['name']; $spell['effect'][$i]['item']['quality'] = $tmpRow['quality']; $spell['effect'][$i]['item']['count'] = $row['effect' . $j . 'BasePoints'] + 1; // Иконка итема, если спелл создает этот итем if (!isset($spell['icon'])) { $spell['icon'] = $tmpRow['iconname']; } allitemsinfo2($tmpRow, 0); } // Создает спелл if ($row['effect' . $j . 'triggerspell'] > 0) { $spell['effect'][$i]['spell'] = array(); $spell['effect'][$i]['spell']['entry'] = $row['effect' . $j . 'triggerspell']; $spell['effect'][$i]['spell']['name'] = $DB->selectCell('SELECT spellname FROM ?_spell WHERE spellID=?d LIMIT 1', $spell['effect'][$i]['spell']['entry']); allspellsinfo($spell['effect'][$i]['spell']['entry']); } $i++; } } if (!isset($spell['icon'])) { $spell['icon'] = $row['iconname']; } // Спеллы с таким же названием