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; }
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; }
/** * 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; }