/**
 *
 * @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;
    }
}
Пример #2
0
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;
}
Пример #3
0
							{ ,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'];
        }
        // Спеллы с таким же названием