diff --git a/includes/classes/class.items.php b/includes/classes/class.items.php
index a8fd8d7a8..235fe962e 100644
--- a/includes/classes/class.items.php
+++ b/includes/classes/class.items.php
@@ -3,7 +3,7 @@
/**
* @package World of Warcraft Armory
* @version Release Candidate 1
- * @revision 61
+ * @revision 63
* @copyright (c) 2009-2010 Shadez
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
@@ -314,7 +314,7 @@ public function BuildItemSetInfo($itemset) {
* @todo Currency for
* @return array
**/
- public function BuildLootTable($item, $vendor) {
+ public function BuildLootTable($item, $vendor, $data=false) {
$lootTable = '';
switch($vendor) {
case 'vendor':
@@ -323,110 +323,160 @@ public function BuildLootTable($item, $vendor) {
FROM `npc_vendor`
WHERE `item`=?", $item);
if(!empty($VendorLoot)) {
+ $i = 0;
foreach($VendorLoot as $vItem) {
- $lootTable[count($lootTable)] = array (
+ $lootTable[$i] = array (
'name' => Mangos::GetNpcName($vItem['entry']),
'level'=> Mangos::GetNpcInfo($vItem['entry'], 'level'),
'map' => Mangos::GetNpcInfo($vItem['entry'], 'map')
);
+ $i++;
}
}
- break;
-
+ break;
case 'boss':
$BossLoot = $this->wDB->select("
SELECT `entry`, `ChanceOrQuestChance`
FROM `creature_loot_template`
- WHERE `item`=?", $item);
+ WHERE `item`=?", $item);
if(!empty($BossLoot)) {
+ $i = 0;
foreach($BossLoot as $bItem) {
$map_npc = Mangos::GetNpcInfo($bItem['entry'], 'map');
if(!empty($map_npc)) {
- $lootTable[count($lootTable)] = array (
+ $lootTable[$i] = array (
'entry' => $bItem['entry'],
'name' => Mangos::GetNpcName($bItem['entry']),
'level'=> Mangos::GetNpcInfo($bItem['entry'], 'level'),
'boss' => Mangos::GetNpcInfo($bItem['entry'], 'isBoss'),
'map' => $map_npc,
'difficult' => Mangos::GetNpcInfo($bItem['entry'], 'dungeonlevel'),
- 'drop_percent' => Mangos::DropPercent($bItem['ChanceOrQuestChance'])
+ 'drop_percent' => Mangos::DropPercent($bItem['ChanceOrQuestChance']),
+ 'makro' => '1'
);
+ $i++;
}
}
}
- break;
-
+ break;
case 'chest':
$ChestLoot = $this->wDB->select("
SELECT `entry`, `ChanceOrQuestChance`
FROM `gameobject_loot_template`
WHERE `item`=?", $item);
if(!empty($ChestLoot)) {
+ $i = 0;
foreach($ChestLoot as $cItem) {
$map_chest = Mangos::GameobjectInfo($cItem['entry'], 'map');
if(!empty($map_chest)) {
- $lootTable[count($lootTable)] = array (
+ $lootTable[$i] = array (
'name' => Mangos::GameobjectInfo($cItem['entry'], 'name'),
'map' => $map_chest,
'difficult' => ' ',
'drop_percent' => Mangos::DropPercent($cItem['ChanceOrQuestChance'])
);
+ $i++;
}
}
}
- break;
-
- case 'quest':
+ break;
+ case 'questreward':
$QuestLoot = $this->wDB->select("
- SELECT `entry`
+ SELECT `entry`, `MinLevel`
FROM `quest_template`
WHERE `RewChoiceItemId1` = ? OR `RewChoiceItemId2` = ? OR `RewChoiceItemId3` = ? OR
`RewChoiceItemId4` = ? OR `RewChoiceItemId5` = ? OR `RewChoiceItemId6` = ?", $item, $item, $item,
$item, $item, $item);
if(!empty($QuestLoot)) {
+ $i = 0;
foreach($QuestLoot as $qItem) {
- $lootTable[count($lootTable)] = array (
+ $lootTable[$i] = array (
'title' => Mangos::QuestInfo($qItem['entry'], 'title'),
- 'reqlevel' => Mangos::QuestInfo($qItem['entry'], 'reqlevel'),
+ 'reqlevel' => $qItem['MinLevel'],
'map' => Mangos::QuestInfo($qItem['entry'], 'map')
);
+ $i++;
}
}
- break;
-
+ break;
+ case 'queststart':
+ $QuestStart = $this->wDB->selectCell("SELECT `startquest` FROM `item_template` WHERE `entry`=?", $item);
+ if(!$QuestStart) {
+ return false;
+ }
+ $lootTable[0] = array(
+ 'title' => Mangos::QuestInfo($QuestStart, 'title'),
+ 'reqlevel' => Mangos::QuestInfo($QuestStart, 'reqlevel'),
+ 'map' => Mangos::QuestInfo($QuestStart, 'map')
+ );
+ break;
+ case 'providedfor':
+ $QuestInfo = $this->wDB->select("SELECT `entry`, `MinLevel` FROM `quest_template` WHERE `SrcItemId`=?", $item);
+ if(!$QuestInfo) {
+ return false;
+ }
+ $i = 0;
+ foreach($QuestInfo as $quest) {
+ $lootTable[$i] = array(
+ 'title' => Mangos::QuestInfo($quest['entry'], 'title'),
+ 'reqlevel' => $quest['MinLevel'],
+ 'map' => Mangos::QuestInfo($quest['entry'], 'map')
+ );
+ }
+ break;
+ case 'objectiveof':
+ $QuestInfo = $this->wDB->select("
+ SELECT `entry`, `MinLevel`
+ FROM `quest_template`
+ WHERE `ReqItemId1`=? OR `ReqItemId2`=? OR `ReqItemId3`=?
+ OR `ReqItemId4`=? OR `ReqItemId5`=?", $item, $item, $item, $item, $item);
+ if(!$QuestInfo) {
+ return false;
+ }
+ $i = 0;
+ foreach($QuestInfo as $quest) {
+ $lootTable[$i] = array(
+ 'title' => Mangos::QuestInfo($quest['entry'], 'title'),
+ 'reqlevel' => $quest['MinLevel'],
+ 'map' => Mangos::QuestInfo($quest['entry'], 'map')
+ );
+ }
+ break;
case 'item':
$ItemLoot = $this->wDB->select("
SELECT `entry`, `ChanceOrQuestChance`
FROM `item_loot_template`
WHERE `item`=?", $item);
if(!empty($ItemLoot)) {
+ $i = 0;
foreach($ItemLoot as $iItem) {
- $lootTable[count($lootTable)] = array (
+ $lootTable[$i] = array (
'name' => Items::GetItemName($iItem['entry']),
'drop_percent' => Mangos::DropPercent($iItem['ChanceOrQuestChance'])
);
+ $i++;
}
}
- break;
-
+ break;
case 'disenchant':
$DisenchantLoot = $this->wDB->select("
SELECT `item`, `ChanceOrQuestChance`, `maxcount`
FROM `disenchant_loot_template`
WHERE `entry`=?", $item);
if(!empty($DisenchantLoot)) {
+ $i = 0;
foreach($DisenchantLoot as $dItem) {
- $lootTable[count($lootTable)] = array (
+ $lootTable[$i] = array (
'entry' => $dItem['item'],
'name' => $this->GetItemName($dItem['item']),
'drop_percent' => Mangos::DropPercent($dItem['ChanceOrQuestChance']),
'count' => $dItem['maxcount'],
'icon' => $this->GetItemIcon($dItem['item'])
);
+ $i++;
}
}
- break;
-
+ break;
case 'craft':
$CraftLoot = $this->aDB->select("
SELECT `Reagent_1`, `Reagent_2`, `Reagent_3`, `Reagent_4`, `Reagent_5`, `Reagent_6`, `Reagent_7`, `Reagent_8`,
diff --git a/includes/classes/class.mangos.php b/includes/classes/class.mangos.php
index 802ed1f77..dcb59005f 100644
--- a/includes/classes/class.mangos.php
+++ b/includes/classes/class.mangos.php
@@ -3,7 +3,7 @@
/**
* @package World of Warcraft Armory
* @version Release Candidate 1
- * @revision 61
+ * @revision 63
* @copyright (c) 2009-2010 Shadez
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
@@ -70,18 +70,26 @@ public function QuestInfo($quest, $infoType) {
$locale = (isset($_SESSION['armoryLocale'])) ? $_SESSION['armoryLocale'] : $this->armoryconfig['defaultLocale'];
switch($infoType) {
case 'title':
- $nameEn = $this->wDB->selectCell("SELECT `Title` FROM `quest_template` WHERE `entry`=?", $quest);
- $nameRus = $this->wDB->selectCell("SELECT `Title_loc8` FROM `locales_quest` WHERE `entry`=?", $quest);
- $info = ($locale == 'ru_ru') ? $nameRus : $nameEn;
+ switch($locale) {
+ case 'en_gb':
+ $info = $this->wDB->selectCell("SELECT `Title` FROM `quest_template` WHERE `entry`=?", $quest);
+ break;
+ case 'ru_ru':
+ $info = $this->wDB->selectCell("SELECT `Title_loc8` FROM `locales_quest` WHERE `entry`=?", $quest);
+ if(!$info) {
+ $info = $this->wDB->selectCell("SELECT `Title` FROM `quest_template` WHERE `entry`=?", $quest);
+ }
+ break;
+ }
break;
case 'reqlevel':
$info = $this->wDB->selectCell("SELECT `MinLevel` FROM `quest_template` WHERE `entry`=?", $quest);
break;
case 'map':
- $quester = $this->wDB->selectCell("SELECT `id` FROM `creature_questrelation` WHERE `quest`=?", $quest);
+ $quester = $this->wDB->selectCell("SELECT `id` FROM `creature_involvedrelation` WHERE `quest`=?", $quest);
$mapID = $this->wDB->selectCell("SELECT `map` FROM `creature` WHERE `id`=?", $quester);
- $info = $this->aDB->selectCell("SELECT `name".$locale."` FROM `armory_maps` WHERE `id`=?", $mapID);
- break;
+ $info = $this->aDB->selectCell("SELECT `name_".$locale."` FROM `armory_maps` WHERE `id`=?", $mapID);
+ break;
}
return $info;
}
@@ -156,6 +164,12 @@ public function GameobjectInfo($entry, $infoType) {
SELECT `name_loc8`
FROM `locales_gameobject`
WHERE `entry`=?", $entry);
+ if(!$info) {
+ $info = $this->wDB->selectCell("
+ SELECT `name`
+ FROM `gameobject_template`
+ WHERE `entry`=?", $entry);
+ }
default:
$info = $this->wDB->selectCell("
SELECT `name`
@@ -188,9 +202,19 @@ public function GetNPCName($npc) {
$NPCNameRU = $this->wDB->selectCell("
SELECT `name_loc8`
FROM `locales_creature`
- WHERE `entry`=? LIMIT 1", $npc);
- $info = ($_locale=='ru_ru') ? $NPCNameRU : $NPCName;
- return $info;
+ WHERE `entry`=? LIMIT 1", $npc);
+ switch($_locale) {
+ case 'en_gb':
+ $name = $this->wDB->selectCell("SELECT `name` FROM `creature_template` WHERE `entry`=? LIMIT 1", $npc);
+ break;
+ case 'ru_ru':
+ $name = $this->wDB->selectCell("SELECT `name_loc8` FROM `locales_creature` WHERE `entry`=? LIMIT 1", $npc);
+ if(!$name) {
+ $name = $this->wDB->selectCell("SELECT `name` FROM `creature_template` WHERE `entry`=? LIMIT 1", $npc);
+ }
+ break;
+ }
+ return $name;
}
/**
diff --git a/includes/locales/en_gb.conf b/includes/locales/en_gb.conf
index e22e79a74..0de4fe780 100644
--- a/includes/locales/en_gb.conf
+++ b/includes/locales/en_gb.conf
@@ -1,9 +1,9 @@
# File: en_gb.conf
-# Last-modified: January 29, 2010
+# Last-modified: February 6, 2010
# Author: Shadez
# Locale: English (en_GB)
# Package: World of Warcraft Armory
-# File revision: 55
+# File revision: 63
# Status: Release Candidate 1
# global strings
@@ -427,6 +427,9 @@ armory_item_info_reward_from = Reward from
armory_item_info_reward_title = Title
armory_item_info_reward_requires_level = Req level
armory_item_info_reagent_for = Reagent for
+armory_item_info_startquestitem = Starts
+armory_item_info_providedquestitem = Provided for
+armory_item_info_objectivequestitem = Objective of
# guild-info.php
armory_guild_info_guild_roster = Guild Roster
diff --git a/includes/locales/ru_ru.conf b/includes/locales/ru_ru.conf
index 67d75dc79..b7ebc1563 100644
--- a/includes/locales/ru_ru.conf
+++ b/includes/locales/ru_ru.conf
@@ -1,9 +1,9 @@
# File: ru_ru.conf
-# Last-modified: January 29, 2010
+# Last-modified: February 6, 2010
# Author: Shadez
# Locale: Russian (ru_RU)
# Package: World of Warcraft Armory
-# File revision: 55
+# File revision: 63
# Status: Release Candidate 1
# global strings
@@ -303,7 +303,7 @@ armory_faq_a1 = Оружейная — это обширная база да
armory_faq_a2 = Вы можете искать среди персонажей, предметов, гильдий, команд Арены и наград для фракций. Выберите соответствующую категорию в выпадающем меню и введите искомое слово.
armory_faq_a3 = В правом верхнем углу экрана находится ссылка на вход в систему. Щелкнув по ней, вы сможете ввести информацию о вашей учетной записи World of Warcraft, не покидая текущую страницу Оружейной. Вы также можете выбрать профиль основного персонажа для быстрого доступа. Выберите пункт "Мои персонажи", чтобы перейти к профилям других пероснажей на этой учетной записи. Войдите в Оружейную, чтобы получить доступ к защищенной информации о персонаже, банку гильдии и календарю персонажа.
Более подробную информацию о новом интерфейсе выбора персонажа вы можете узнать в разделе вопросов и ответов о входе в Оружейную.
armory_faq_a4 = Мобильная Оружейная World of Warcraft - это версия Оружейной для iPhone™ и iPod touch®. Это приложение, предоставляющее почти те же возомжности пользователям, что и обычная Оружейная, можно загрузить бесплатно с помощью iTunes® App Store. Все подробности вы найдете на странице «Мобильной Оружейной».
-armory_faq_a5 = Наведите указатель мыши на любой предмет в профиле персонажа: появится стрелка, которая затем превратится в кнопку «Найти лучше». Щелкнув по этой кнопке, вы попадете на страницу результатов поиска, на которой будет выведен перечень предметов, которые для данного персонажа являются предметами более высокого ранга.Этот перечень формируется с учетом класса, к которому относится персонаж, его характеристик и качества его обмундирования в целом. Таким образом вы можете найти предметы лучше как для вашего персонажа, так и для других персонажей World of Warcraft. Кроме того, если у вашего персонажа несколько комплектов обмундирования, с помощью этой функции можно найти предметы более высокого ранга для каждого из них. Подбор предметов будет точнее, если персонаж не находится в данный момент под воздействием заклинания, изменяющего его характеристики.Подробнее читайте в разделе часто задаваемых вопросов о поиске предметов лучше.
+armory_faq_a5 = Наведите указатель мыши на любой предмет в профиле персонажа: появится стрелка, которая затем превратится в кнопку «Найти лучше». Щелкнув по этой кнопке, вы попадете на страницу результатов поиска, на которой будет выведен перечень предметов, которые для данного персонажа являются предметами более высокого ранга.Этот перечень формируется с учетом класса, к которому относится персонаж, его характеристик и качества его обмундирования в целом. Таким образом вы можете найти предметы лучше как для вашего персонажа, так и для других персонажей World of Warcraft. Кроме того, если у вашего персонажа несколько комплектов обмундирования, с помощью этой функции можно найти предметы более высокого ранга для каждого из них. Подбор предметов будет точнее, если персонаж не находится в данный момент под воздействием заклинания, изменяющего его характеристики.Подробнее читайте в разделе часто задаваемых вопросов о поиске предметов лучше.
armory_faq_a6 = Критерий соответствия действует так же, как в поисковых системах: те результаты поиска, которые точнее всего отвечают запросу, выводятся первыми. Соответствие определяется с помощью алгоритма, выстроенного на основе нескольких параметров. Для каждой категории, в которой проводится поиск, они индивидуальны. Например, когда вы ищете персонажа, соответствие будет зависеть от его уровня, от даты его последнего посещения и еще нескольких факторов.
armory_faq_a7 = Оружейная поддерживается браузерами Internet Explorer (версии от 6.0 и выше), Firefox, Opera 9, Safari и Chrome и оптимизирована для работы с новейшими версиями этих браузеров. Кроме того, отдельные функции требуют наличия Flash Player.
@@ -422,6 +422,9 @@ armory_item_info_reward_from = Награда за
armory_item_info_reward_title = Титул
armory_item_info_reward_requires_level = Требуемый уровень
armory_item_info_reagent_for = Реагент для
+armory_item_info_startquestitem = Начинается
+armory_item_info_providedquestitem = Предусмотрено для
+armory_item_info_objectivequestitem = Является целью для
# guild-info.php
armory_guild_info_guild_roster = Состав гильдии
diff --git a/includes/template/guild_stats.tpl b/includes/template/guild_stats.tpl
index 4370ab273..087a4b96a 100644
--- a/includes/template/guild_stats.tpl
+++ b/includes/template/guild_stats.tpl
@@ -232,8 +232,8 @@