您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
The completion logs now show images of undiscovered items/monsters/pets, including those entities that do not count towards completion.
// ==UserScript== // @name Melvor Completion Log Helper // @namespace http://tampermonkey.net/ // @version 0.7.1 // @description The completion logs now show images of undiscovered items/monsters/pets, including those entities that do not count towards completion. // @author GMiclotte // @include https://melvoridle.com/* // @include https://*.melvoridle.com/* // @exclude https://melvoridle.com/index.php // @exclude https://*.melvoridle.com/index.php // @exclude https://wiki.melvoridle.com/* // @exclude https://*.wiki.melvoridle.com/* // @inject-into page // @noframes // @grant none // ==/UserScript== /* jshint esversion: 6 */ // Thanks to Breindahl#2660 for the original implementation // Big thanks to Visua#9999 for helping with parts of the code and troubleshooting ((main) => { const script = document.createElement('script'); script.textContent = `try { (${main})(); } catch (e) { console.log(e); }`; document.body.appendChild(script).parentNode.removeChild(script); })(() => { function patchCode(code, additionalPatch) { code = code.toString(); code = code.replace(/!items\[[a-zA-Z]*\].ignoreCompletion/g, 'true'); code = code.replace(/!MONSTERS\[[a-zA-Z]*\].ignoreCompletion/g, 'true'); code = code.replace(/!PETS\[[a-zA-Z]*\].ignoreCompletion/g, 'true'); if (additionalPatch !== undefined) { code = additionalPatch(code); } return code.replace(/^function (\w+)/, 'window.$1 = function'); } const toPatch = [ filterItemLog, createItemLogTooltip, createMonsterLogTooltip, createPetLogTooltip, ]; function additionalPatchApplyCompletionLogEntryElement(code) { code = code.split(/Element\(-8,/); for (let i = 1; i < code.length; i++) { code[i] = code[i].replace(';', `; const htmlIdx = html.lastIndexOf('<img ') + 5; html = html.substring(0, htmlIdx) + 'style="opacity: 25%"' + html.substring(htmlIdx); `); } return code.join('Element(id,'); } function startCompletionLogHelper() { // patch functions toPatch.forEach(x => eval(patchCode(x))); eval(patchCode(applyCompletionLogEntryElement, additionalPatchApplyCompletionLogEntryElement)); // reset loaded variables itemLogLoaded = false; monsterLogLoaded = false; petLogLoaded = false; // build Monster and pet logs buildMonsterLog(); buildPetLog(); // logging console.log('Melvor Completion Log Helper Loaded'); } function loadScript() { if (typeof confirmedLoaded !== typeof undefined && confirmedLoaded) { clearInterval(scriptLoader); startCompletionLogHelper(); } } const scriptLoader = setInterval(loadScript, 200); });