diff --git a/mojotrollz/api/api_mojotrollz.php b/mojotrollz/api/api_mojotrollz.php index 884a1aa..3091ebf 100644 --- a/mojotrollz/api/api_mojotrollz.php +++ b/mojotrollz/api/api_mojotrollz.php @@ -6,4 +6,9 @@ class api_mojotrollz extends \SYSTEM\API\api_system { return \SYSTEM\LOG\JsonResult::toString($result);} public static function call_charcreation($json=NULL){ return charcreation::data($json);} + public static function call_quest($entry){ + if(!\SYSTEM\SECURITY\Security::isLoggedIn()){ + throw new ERROR("You need to be logged in to view this ressource.");} + $quest = quest::test($entry); + return $quest;} } diff --git a/mojotrollz/api/autoload.inc.php b/mojotrollz/api/autoload.inc.php index 7235e6d..63e063a 100644 --- a/mojotrollz/api/autoload.inc.php +++ b/mojotrollz/api/autoload.inc.php @@ -6,4 +6,7 @@ SYSTEM\autoload::registerFolder(dirname(__FILE__).'/world',''); SYSTEM\autoload::registerFolder(dirname(__FILE__).'/database',''); SYSTEM\autoload::registerFolder(dirname(__FILE__).'/char',''); SYSTEM\autoload::registerFolder(dirname(__FILE__).'/char/qq','DBD'); -SYSTEM\autoload::registerFolder(dirname(__FILE__).'/client',''); \ No newline at end of file +SYSTEM\autoload::registerFolder(dirname(__FILE__).'/client',''); + +SYSTEM\autoload::registerFolder(dirname(__FILE__).'/quest',''); +SYSTEM\autoload::registerFolder(dirname(__FILE__).'/quest/qq','DBD'); \ No newline at end of file diff --git a/mojotrollz/api/quest/qq/GET_BASE_DATA.php b/mojotrollz/api/quest/qq/GET_BASE_DATA.php new file mode 100644 index 0000000..3f03cb8 --- /dev/null +++ b/mojotrollz/api/quest/qq/GET_BASE_DATA.php @@ -0,0 +1,13 @@ +next()){ + $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PAPI(),'quest/tpl/creature_questrelation.tpl'), $rel); + } + return $result; + } + + public static function get_item_questrelation($entry){ + $result = ''; + $questrelation = \DBD\GET_ITEM_QUESTRELATION::QQ(array($entry)); + while ($rel = $questrelation->next()){ + $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PAPI(),'quest/tpl/item_questrelation.tpl'), $rel); + } + return $result; + } + + public static function get_object_questrelation($entry){ + $result = ''; + $questrelation = \DBD\GET_OBJECT_QUESTRELATION::QQ(array($entry)); + while ($rel = $questrelation->next()){ + $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PAPI(),'quest/tpl/object_questrelation.tpl'), $rel); + } + return $result; + } + +} diff --git a/mojotrollz/api/quest/tpl/creature_questrelation.tpl b/mojotrollz/api/quest/tpl/creature_questrelation.tpl new file mode 100644 index 0000000..40780d2 --- /dev/null +++ b/mojotrollz/api/quest/tpl/creature_questrelation.tpl @@ -0,0 +1 @@ +${Name} \ No newline at end of file diff --git a/mojotrollz/api/quest/tpl/item_questrelation.tpl b/mojotrollz/api/quest/tpl/item_questrelation.tpl new file mode 100644 index 0000000..b82d5a9 --- /dev/null +++ b/mojotrollz/api/quest/tpl/item_questrelation.tpl @@ -0,0 +1 @@ +${name} \ No newline at end of file diff --git a/mojotrollz/api/quest/tpl/object_questrelation.tpl b/mojotrollz/api/quest/tpl/object_questrelation.tpl new file mode 100644 index 0000000..b82d5a9 --- /dev/null +++ b/mojotrollz/api/quest/tpl/object_questrelation.tpl @@ -0,0 +1 @@ +${name} \ No newline at end of file diff --git a/mojotrollz/api/quest/tpl/quest.tpl b/mojotrollz/api/quest/tpl/quest.tpl new file mode 100644 index 0000000..ae73deb --- /dev/null +++ b/mojotrollz/api/quest/tpl/quest.tpl @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + +
+

${Title}
+ No.${entry}

+

+ + +

+ min. Level:  ${MinLevel}
+ QuestLevel: ${QuestLevel} +

+
+

+ Obtainable from:
+ ${creature_questrelation} + ${item_questrelation} + ${object_questrelation} +

+
+ +
+

+ Details:
+ ${Details} +

+
+

+ Objectives:
+ ${Objectives} +

+
+ + diff --git a/mojotrollz/page/user_achievements_content/js/user_achievements_content.js b/mojotrollz/page/user_achievements_content/js/user_achievements_content.js new file mode 100644 index 0000000..6466483 --- /dev/null +++ b/mojotrollz/page/user_achievements_content/js/user_achievements_content.js @@ -0,0 +1,7 @@ +function init_user_achievements_content(){ + alert('init'); + console.log('init'); + $(".btn_quest_info").click(function(){ + $('#achievement_list').load('./?page=user_achievements_content_quest&entry=' + $(this).attr('entry')); + }); +} \ No newline at end of file diff --git a/mojotrollz/page/user_achievements_content/tpl/quest_element.tpl b/mojotrollz/page/user_achievements_content/tpl/quest_element.tpl index 1e2bf3d..01654ea 100644 --- a/mojotrollz/page/user_achievements_content/tpl/quest_element.tpl +++ b/mojotrollz/page/user_achievements_content/tpl/quest_element.tpl @@ -1,14 +1,15 @@ - ${Title} -

Min Lvl: ${MinLevel}
+

${Title}
+ Min Lvl: ${MinLevel}
Quest Lvl: ${QuestLevel}

+ -

Previous Quest: ${PrevQuestId}
- Next Quest: ${NextQuestId}
- Next Quest in Chain: ${NextQuestInChain}

+ ${prevquest}
+ ${nextquest} +

diff --git a/mojotrollz/page/user_achievements_content/user_achievements_content.php b/mojotrollz/page/user_achievements_content/user_achievements_content.php index ade1721..aad3967 100644 --- a/mojotrollz/page/user_achievements_content/user_achievements_content.php +++ b/mojotrollz/page/user_achievements_content/user_achievements_content.php @@ -8,7 +8,7 @@ class user_achievements_content extends SYSTEM\PAGE\Page { $this->filter = $filter; } public static function js(){ - return array();} + return array( \SYSTEM\WEBPATH(new PPAGE(),'user_achievements_content/js/user_achievements_content.js'));} public static function css (){ return array();} @@ -68,158 +68,53 @@ class user_achievements_content extends SYSTEM\PAGE\Page { } private function menu_creature(){ - switch($this->filter){ - case 1: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(1)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 2: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(2)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 3: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(3)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 4: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(4)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 5: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(5)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 6: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(6)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 7: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(7)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 8: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(8)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 9: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(9)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 10: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(10)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 11: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(11)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - case 12: - $result = ''; - $data = \DBD\CREATURE_TYPE::QQ(array(12)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); - - default: - return 'filter fail'; + $result = ''; + $data = \DBD\CREATURE_TYPE::QQ(array($this->filter)); + while($row=$data->next()){ + $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature_element.tpl'), $row); } + return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/creature.tpl'), array('content' => $result)); } private function menu_quest(){ + $_filter = null; switch($this->filter){ case 1: - $result = ''; - $data = \DBD\QUEST_TYPE::QQ(array(81)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest.tpl'), array('content' => $result)); + $_filter = 81; + break; case 2: - $result = ''; - $data = \DBD\QUEST_TYPE::QQ(array(62)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest.tpl'), array('content' => $result)); - + $_filter = 62; + break; case 3: - $result = ''; - $data = \DBD\QUEST_TYPE::QQ(array(1)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest.tpl'), array('content' => $result)); - + $_filter = 1; + break; case 4: - $result = ''; - $data = \DBD\QUEST_TYPE::QQ(array(83)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest.tpl'), array('content' => $result)); - + $_filter = 83; + break; case 5: - $result = ''; - $data = \DBD\QUEST_TYPE::QQ(array(84)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest.tpl'), array('content' => $result)); - - + $_filter = 84; case 7: - $result = ''; - $data = \DBD\QUEST_TYPE::QQ(array(41)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest.tpl'), array('content' => $result)); - + $_filter = 41; case 8: - $result = ''; - $data = \DBD\QUEST_TYPE::QQ(array(0)); - while($row=$data->next()){ - $result .= SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest_element.tpl'), $row); - } - return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'user_achievements_content/tpl/quest.tpl'), array('content' => $result)); - + $_filter = 0; default: return 'filter fail'; } + + $result = ''; + $data = \DBD\QUEST_TYPE::QQ(array($_filter)); + while($row=$data->next()){ + $row['prevquest'] = ''; + if ($row['PrevQuestId']){ + $row['prevquest'] = 'Previous: '.\DBD\GET_BASE_DATA::Q1(array($row['PrevQuestId']))['Title'].''; + } + $row['nextquest'] = ''; + if ($row['NextQuestId']){ + $row['nextquest'] = 'Next: '.\DBD\GET_BASE_DATA::Q1(array($row['NextQuestId']))['Title'].' $result)); } private function menu_item(){ @@ -346,6 +241,7 @@ class user_achievements_content extends SYSTEM\PAGE\Page { } public function html(){ + switch($this->menu){ case 1: return $this->menu_acc(); diff --git a/mojotrollz/page/user_achievements_menu/js/user_achievements_menu.js b/mojotrollz/page/user_achievements_menu/js/user_achievements_menu.js index c6831d4..86fbb10 100644 --- a/mojotrollz/page/user_achievements_menu/js/user_achievements_menu.js +++ b/mojotrollz/page/user_achievements_menu/js/user_achievements_menu.js @@ -1,23 +1,51 @@ function init_user_achievements_menu(){ $("#btn_achieve_menu_acc").click(function(){ - sys.load('user_achievements_menu_sub_1'); + if($('#achievement_content_acc').html() == ''){ + sys.load('user_achievements_menu_sub_1'); + } else { + $('#achievement_content_acc').html(''); + } }); $("#btn_achieve_menu_boss").click(function(){ - sys.load('user_achievements_menu_sub_2'); + if($('#achievement_content_boss').html() == ''){ + sys.load('user_achievements_menu_sub_2'); + } else { + $('#achievement_content_boss').html(''); + } }); $("#btn_achieve_menu_pvp").click(function(){ - sys.load('user_achievements_menu_sub_3'); + if($('#achievement_content_pvp').html() == ''){ + sys.load('user_achievements_menu_sub_3'); + } else { + $('#achievement_content_pvp').html(''); + } }); $("#btn_achieve_menu_creature").click(function(){ - sys.load('user_achievements_menu_sub_4'); + if($('#achievement_content_creature').html() == ''){ + sys.load('user_achievements_menu_sub_4'); + } else { + $('#achievement_content_creature').html(''); + } }); $("#btn_achieve_menu_quest").click(function(){ - sys.load('user_achievements_menu_sub_5'); + if($('#achievement_content_quest').html() == ''){ + sys.load('user_achievements_menu_sub_5'); + } else { + $('#achievement_content_quest').html(''); + } }); $("#btn_achieve_menu_item").click(function(){ - sys.load('user_achievements_menu_sub_6'); + if($('#achievement_content_item').html() == ''){ + sys.load('user_achievements_menu_sub_6'); + } else { + $('#achievement_content_item').html(''); + } }); $("#btn_achieve_menu_eco").click(function(){ - sys.load('user_achievements_menu_sub_7'); + if($('#achievement_content_eco').html() == ''){ + sys.load('user_achievements_menu_sub_7'); + } else { + $('#achievement_content_eco').html(''); + } }); } \ No newline at end of file diff --git a/mojotrollz/page/user_achievements_menu_sub/js/user_achievements_menu_sub.js b/mojotrollz/page/user_achievements_menu_sub/js/user_achievements_menu_sub.js index 141b669..0ef8527 100644 --- a/mojotrollz/page/user_achievements_menu_sub/js/user_achievements_menu_sub.js +++ b/mojotrollz/page/user_achievements_menu_sub/js/user_achievements_menu_sub.js @@ -2,5 +2,16 @@ function init_user_achievements_menu_sub(){ console.log('init'); $(".btn_achieve_menu").click(function(){ $('#achievement_list').load('./?page=user_achievements_content&menu=' + $(this).attr('menu') + '&filter=' + $(this).attr('filter')); + btn_info(); + }); -} \ No newline at end of file + + function btn_info(){ + alert('info'); + $(".btn_quest_info").click(function(){ + alert('test'); + $('#achievement_list').load('./api.php?call=quest&entry=' + $(this).attr('entry')); +// $('#achievement_list').load('./?page=user_achievements_content_quest&entry=' + $(this).attr('entry')); + }); + } +} diff --git a/mojotrollz/page/user_default/css/user_default.css b/mojotrollz/page/user_default/css/user_default.css index 1b99b67..ba02c44 100644 --- a/mojotrollz/page/user_default/css/user_default.css +++ b/mojotrollz/page/user_default/css/user_default.css @@ -107,6 +107,7 @@ a:hover{ #frame_menu{ float: left; padding-top: 20px; + width: 400px; } #frame_start_stats{ @@ -151,6 +152,22 @@ a:hover{ text-align: left; text-decoration: none; +} + +.btn_menu_add{ + + background: url(http://www.mojotrollz.eu/web/mojotrollz/api.php?call=files&cat=wowicons&id=button_submenu.png) no-repeat; + background-size: cover; + padding-top: 1px; + padding-left: 20px; + margin-bottom: 5px; + height: 27px; + width: 140px; + font-size: 13pt; + list-style: none; + text-align: left; + text-decoration: none; + } .btn_submenu:hover{ background: url(http://www.mojotrollz.eu/web/mojotrollz/api.php?call=files&cat=wowicons&id=button_red.png) no-repeat; @@ -159,6 +176,13 @@ a:hover{ color: gold; } +.btn_menu_add:hover{ + background: url(http://www.mojotrollz.eu/web/mojotrollz/api.php?call=files&cat=wowicons&id=button_red.png) no-repeat; + background-size: cover; + text-decoration: none; + color: gold; +} + .window_bg2{ float: left; padding: 10px; margin-left: 20px; margin-top: 20px; background: url(http://www.mojotrollz.eu/web/mojotrollz/api.php?call=files&cat=wowicons&id=bg2.png); } diff --git a/mojotrollz/page/user_menu/user_menu.tpl b/mojotrollz/page/user_menu/user_menu.tpl index 2320738..3588684 100644 --- a/mojotrollz/page/user_menu/user_menu.tpl +++ b/mojotrollz/page/user_menu/user_menu.tpl @@ -1,7 +1,14 @@ -
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/mojotrollz/page/user_start/tpl/user_start.tpl b/mojotrollz/page/user_start/tpl/user_start.tpl index 3954810..0fe326f 100644 --- a/mojotrollz/page/user_start/tpl/user_start.tpl +++ b/mojotrollz/page/user_start/tpl/user_start.tpl @@ -67,5 +67,9 @@
+ +
+ ${test} +
\ No newline at end of file diff --git a/mojotrollz/page/user_start/user_start.php b/mojotrollz/page/user_start/user_start.php index 65b80da..0c512b3 100644 --- a/mojotrollz/page/user_start/user_start.php +++ b/mojotrollz/page/user_start/user_start.php @@ -52,6 +52,7 @@ class user_start extends SYSTEM\PAGE\Page { $vars['guildcount'] = \DBD\COUNT_GUILDS::Q1()['count']; $vars['realm_status'] = realm::status(); $vars['world_status'] = world::status(); + $vars['test'] = quest::test(248); $vars['player_online'] = database::player_online(); $vars['factionbalance'] = $this->get_faction_balance(); $vars['role_balance'] =$this->get_role_balance(); diff --git a/system b/system index 69390d4..b3bf40d 160000 --- a/system +++ b/system @@ -1 +1 @@ -Subproject commit 69390d4c59bf3a2a3cd2add9f5b3bc3f571f1287 +Subproject commit b3bf40d17d3c707d7af17943b1f6ff147c0e71a6