Exemplo n.º 1
0
 public function BuildAchievementCriteriaTable()
 {
     if (!$this->guid || !$this->achId) {
         return false;
     }
     $data = $this->aDB->select("SELECT * FROM `armory_achievement_criteria` WHERE `referredAchievement`=? ORDER BY `order`", $this->achId);
     if (!$data) {
         return false;
     }
     $i = 0;
     $achievement_criteria = array();
     foreach ($data as $criteria) {
         if ($criteria['completionFlag'] & ACHIEVEMENT_CRITERIA_FLAG_HIDE_CRITERIA) {
             continue;
         }
         $achievement_criteria[$i]['id'] = $criteria['id'];
         $achievement_criteria[$i]['name'] = $criteria['name_' . $this->_locale];
         $m_data = $this->GetCriteriaData($criteria['id']);
         if (!$m_data['counter']) {
             $m_data['counter'] = 0;
         }
         $achievement_criteria[$i]['counter'] = $m_data['counter'];
         if ($criteria['completionFlag'] & ACHIEVEMENT_CRITERIA_FLAG_SHOW_PROGRESS_BAR || $criteria['completionFlag'] & ACHIEVEMENT_FLAG_COUNTER) {
             if ($criteria['completionFlag'] & ACHIEVEMENT_CRITERIA_FLAG_MONEY_COUNTER) {
                 $achievement_criteria[$i]['maxQuantityGold'] = $criteria['value'];
                 $money = Mangos::getMoney($m_data['counter']);
                 $achievement_criteria[$i]['quantityGold'] = $money['gold'];
                 $achievement_criteria[$i]['quantitySilver'] = $money['silver'];
                 $achievement_criteria[$i]['quantityCopper'] = $money['copper'];
             } else {
                 $achievement_criteria[$i]['maxQuantity'] = $criteria['value'];
                 $achievement_criteria[$i]['quantity'] = $m_data['counter'];
             }
         }
         $i++;
     }
     return $achievement_criteria;
 }
Exemplo n.º 2
0
 public function BuildAchievementCriteriaTable()
 {
     if (!$this->guid || !$this->achId) {
         $this->Log()->writeError('%s : player guid or achievement id not defiend', __METHOD__);
         return false;
     }
     $data = $this->aDB->select("SELECT * FROM `armory_achievement_criteria` WHERE `referredAchievement`=? ORDER BY `showOrder`", $this->achId);
     if (!$data) {
         $this->Log()->writeError('%s : achievement criteria for achievement #%d not found', __METHOD__, $this->achId);
         return false;
     }
     $i = 0;
     $achievement_criteria = array();
     foreach ($data as $criteria) {
         if ($criteria['completionFlag'] & ACHIEVEMENT_CRITERIA_FLAG_HIDE_CRITERIA) {
             continue;
         }
         $m_data = $this->GetCriteriaData($criteria['id']);
         if (!isset($m_data['counter']) || !$m_data['counter']) {
             $m_data['counter'] = 0;
         }
         $achievement_criteria[$i]['id'] = $criteria['id'];
         if (isset($m_data['date']) && $m_data['date'] > 0) {
             $achievement_criteria[$i]['date'] = date('Y-m-d\\TH:i:s\\+01:00', $m_data['date']);
         }
         $achievement_criteria[$i]['name'] = $criteria['name_' . $this->_locale];
         if ($criteria['completionFlag'] & ACHIEVEMENT_CRITERIA_FLAG_SHOW_PROGRESS_BAR || $criteria['completionFlag'] & ACHIEVEMENT_FLAG_COUNTER) {
             if ($criteria['completionFlag'] & ACHIEVEMENT_CRITERIA_FLAG_MONEY_COUNTER) {
                 $achievement_criteria[$i]['maxQuantityGold'] = $criteria['value'];
                 $money = Mangos::getMoney($m_data['counter']);
                 $achievement_criteria[$i]['quantityGold'] = $money['gold'];
                 $achievement_criteria[$i]['quantitySilver'] = $money['silver'];
                 $achievement_criteria[$i]['quantityCopper'] = $money['copper'];
             } else {
                 $achievement_criteria[$i]['maxQuantity'] = $criteria['value'];
                 $achievement_criteria[$i]['quantity'] = $m_data['counter'];
             }
         }
         $i++;
     }
     return $achievement_criteria;
 }
Exemplo n.º 3
0
 /**
  * Returns achievement criteria & progress info. Requires $this->achId!
  * @category Achievements class
  * @example Achievements::AchievementProgress()
  * @todo Sort with achievement criteria types
  * @return string
  **/
 public function AchievementProgress()
 {
     $string_return = '';
     $tmp_str = '';
     $data = $this->aDB->select("SELECT * FROM `armory_achievement_criteria` WHERE `referredAchievement`=?", $this->achId);
     $progress_bar_string = "<ul class='criteria'><div class='critbar'><div class='prog_bar '><div class='progress_cap'></div><div class='progress_cap_r'></div><div class='progress_int'><div class='progress_fill' style='width:{PERCENT}%'></div><div class='prog_int_text'>{CURRENT_NUM} / {FULLCOUNT}</div></div></div></div></ul>";
     $progress_list_string = "<ul class='criteria c_list'>{CRITERIA_LIST}</ul>";
     // Check if data exists
     // Hack
     error_reporting(0);
     $character_progress = $this->cDB->selectCell("\n        SELECT `counter`\n            FROM `character_achievement_progress`\n                WHERE `criteria`=? AND `guid`=? LIMIT 1", $data['0']['id'], $this->guid);
     if (empty($character_progress) || !$character_progress) {
         $character_progress = 0;
     }
     // if(!empty($character_progress))
     //{
     switch ($data[0]['requiredType']) {
         case 7:
             // Skills
         // Skills
         case 9:
             // Quests
         // Quests
         case 10:
             // Daily quests
         // Daily quests
         case 11:
             // Quest counter
         // Quest counter
         case 14:
             // Daily quests
         // Daily quests
         case 29:
             // Items
         // Items
         case 13:
             // PvP Kills
         // PvP Kills
         case 37:
             // Arena Wins
         // Arena Wins
         case 41:
             // Food & drinks
         // Food & drinks
         case 42:
             // Badges
         // Badges
         case 45:
             // Bank safe
         // Bank safe
         case 47:
             // Reputation
         // Reputation
         case 56:
             // PvP Kills
         // PvP Kills
         case 62:
             // Money
         // Money
         case 67:
             // Money drop
         // Money drop
         case 75:
             // Pets
         // Pets
         case 109:
             // Fishing
         // Fishing
         case 113:
             // PvP wins
             if ($data[0]['requiredType'] == 62 || $data[0]['requiredType'] == 67) {
                 // Make money
                 $money = Mangos::getMoney($character_progress);
                 $money_need = Mangos::getMoney($data[0]['value']);
                 $progress_bar_string = "<ul class='criteria'><div class='critbar'><div class='prog_bar '><div class='progress_cap'></div><div class='progress_cap_r'></div><div class='progress_int'><div class='progress_fill' style='width:{PERCENT}%'></div><div class='prog_int_text'>";
                 if ($money['gold'] > 0) {
                     $progress_bar_string .= $money['gold'] . " <img alt='' class='p' src='images/icons/money-gold-small.png'/>";
                 }
                 if ($money['silver'] > 0) {
                     $progress_bar_string .= $money['silver'] . " <img alt='' class='p' src='images/icons/money-silver-small.png'/>";
                 }
                 if ($money['copper'] > 0) {
                     $progress_bar_string .= $money['copper'] . " <img alt='' class='p' src='images/icons/money-copper-small.png'/>";
                 }
                 $progress_bar_string .= " / " . $money_need['gold'] . "<img alt='' class='p' src='images/icons/money-gold-small.png'/></div></div></div></div></ul>";
             }
             $percent_value = floor(Utils::getPercent($data['0']['value'], $character_progress));
             $progress_bar_string = str_replace("{PERCENT}", $percent_value, $progress_bar_string);
             $progress_bar_string = str_replace("{CURRENT_NUM}", $character_progress, $progress_bar_string);
             $progress_bar_string = str_replace("{FULLCOUNT}", $data[0]['value'], $progress_bar_string);
             $string_return = $progress_bar_string;
             break;
         case 0:
             // Pest control
         // Pest control
         case 8:
             // PvP (?)
         // PvP (?)
         case 27:
             // Quests
         // Quests
         case 28:
             // NPCs
         // NPCs
         case 36:
             // Keys
         // Keys
         case 43:
             // Exploration
         // Exploration
         case 46:
             // Reputation list
         // Reputation list
         case 49:
             // Item levels
         // Item levels
         case 52:
             // PvP (classes)
         // PvP (classes)
         case 53:
             // PvP (races)
         // PvP (races)
         case 54:
             // All squirells I love'd before...
         // All squirells I love'd before...
         case 68:
             // Read books
         // Read books
         case 69:
             // NPCs
         // NPCs
         case 70:
             // PvP Kills
         // PvP Kills
         case 72:
             // Fishing
             $i = 0;
             foreach ($data as $criteria) {
                 $counter = $this->cDB->selectCell("SELECT `counter` FROM `character_achievement_progress` WHERE `criteria`=? AND `guid`=?", $criteria['id'], $this->guid);
                 $tmp_str .= "<li class='c_list_col";
                 if (!empty($counter)) {
                     $tmp_str .= " criteriamet'";
                 } else {
                     $tmp_str .= "'";
                 }
                 if ($i % 2) {
                     $tmp_str .= " style='float:left'";
                 }
                 $_locale = isset($_SESSION['armoryLocale']) ? $_SESSION['armoryLocale'] : $this->armoryconfig['defaultLocale'];
                 $tmp_str .= '>' . $criteria['name_' . $_locale] . '</li>';
                 $i++;
             }
             $string_return = str_replace("{CRITERIA_LIST}", $tmp_str, $progress_list_string);
             break;
     }
     // Hack
     error_reporting(ALL);
     //}
     return $string_return;
 }