您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Completion log for combat only restricted accounts
当前为
// ==UserScript== // @name Melvor CB only completion log // @version 1.1 // @description Completion log for combat only restricted accounts // @author 8992 // @match https://*.melvoridle.com/* // @grant none // @namespace http://tampermonkey.net/ // @noframes // ==/UserScript== window.combatItems = [ CONSTANTS.item.Attack_Skillcape, CONSTANTS.item.Strength_Skillcape, CONSTANTS.item.Defence_Skillcape, CONSTANTS.item.Hitpoints_Skillcape, CONSTANTS.item.Ranged_Skillcape, CONSTANTS.item.Magic_Skillcape, CONSTANTS.item.Prayer_Skillcape, CONSTANTS.item.Slayer_Skillcape, CONSTANTS.item.Amulet_of_Calculated_Promotion, CONSTANTS.item.Fire_Cape, CONSTANTS.item.Bowstring, CONSTANTS.item.Eight, CONSTANTS.item.Lemon, CONSTANTS.item.Signet_Ring_Half_B, ]; for (let i = 0; i < slayerItems.length; i++) combatItems.push(slayerItems[i]); //slayer items from shop for (let i = 0; i < gloveID.length; i++) combatItems.push(gloveID[i]); //gloves from shop for (let k = 0; k < MONSTERS.length; k++) { //all monster loot if (MONSTERS[k].bones !== undefined) combatItems.push(MONSTERS[k].bones); if (MONSTERS[k].lootTable !== undefined) { for (let j = 0; j < MONSTERS[k].lootTable.length; j++) { combatItems.push(MONSTERS[k].lootTable[j][0]); } } } for (let k = 0; k < combatItems.length; k++) { //tier one upgrades if (items[combatItems[k]].trimmedItemID) { let potentialUpgrade = []; for (let j = 0; j < items[items[combatItems[k]].trimmedItemID].itemsRequired.length; j++) { if (combatItems.includes(items[items[combatItems[k]].trimmedItemID].itemsRequired[j][0])) { potentialUpgrade.push(true); } else { potentialUpgrade.push(false); } } if (!potentialUpgrade.includes(false)) combatItems.push(items[combatItems[k]].trimmedItemID); } } for (let k = 0; k < combatItems.length; k++) { //chest loot if (items[combatItems[k]].dropTable !== undefined) { for (let j = 0; j < items[combatItems[k]].dropTable.length; j++) { if (itemStats[items[combatItems[k]].dropTable[j][0]].timesFound < 1) combatItems.push(items[combatItems[k]].dropTable[j][0]); } } } for (let k = 0; k < combatItems.length; k++) { //tier 2 upgrades if (items[combatItems[k]].trimmedItemID) { let potentialUpgrade = []; for (let j = 0; j < items[items[combatItems[k]].trimmedItemID].itemsRequired.length; j++) { if (combatItems.includes(items[items[combatItems[k]].trimmedItemID].itemsRequired[j][0])) { potentialUpgrade.push(true); } else { potentialUpgrade.push(false); } } if (!potentialUpgrade.includes(false)) combatItems.push(items[combatItems[k]].trimmedItemID); } } combatItems = Array.from(new Set(combatItems)); //removes duplicates combatItems.sort(function(a, b){return a-b}); //sorts smallest to largest id window.updateCompletionLog = function() { let skills = 8 * 99; let skillsTotal = skillLevel[CONSTANTS.skill.Attack] + skillLevel[CONSTANTS.skill.Strength] + skillLevel[CONSTANTS.skill.Defence] + skillLevel[CONSTANTS.skill.Hitpoints] + skillLevel[CONSTANTS.skill.Ranged] + skillLevel[CONSTANTS.skill.Magic] + skillLevel[CONSTANTS.skill.Prayer] + skillLevel[CONSTANTS.skill.Slayer]; let itemsTotal = combatItems.length; let itemsFound = 0; let monstersKilled = 0; //skill level let skillsPercentage = (skillsTotal / skills) * 100; //items for (let i = 0; i < itemStats.length; i++) { if (itemStats[i].timesFound > 0 && combatItems.includes(i)) itemsFound++; } let itemsPercentage = (itemsFound / itemsTotal) * 100; //monsters for (let i = 0; i < monsterStats.length; i++) { if (monsterStats[i].killedByPlayer > 0) monstersKilled++; } let monstersPercentage = (monstersKilled / MONSTERS.length) * 100; let totalPercentage = (itemsPercentage + skillsPercentage + monstersPercentage) / 3; //update percentages $("#completion-skills").text(Math.floor(skillsPercentage) + "%"); $("#completion-mastery").text("n/a"); $("#completion-items").text(Math.floor(itemsPercentage) + "%"); $("#completion-monsters").text(Math.floor(monstersPercentage) + "%"); $("#completion-total").text(Math.floor(totalPercentage) + "%"); } window.openItemLog = function() { let timesFound = (timesSold = gpFromSale = deathCount = damageTaken = damageDealt = missedAttacks = timesEaten = healedFor = totalAttacks = amountUsedInCombat = timeWaited = timesDied = timesGrown = harvestAmount = enemiesKilled = timesOpened = ""); $("#itemlog-container").html(""); for (let i = 0; i < itemStats.length; i++) { if (combatItems.includes(i)) { if (itemStats[i].timesFound > 0) { timesFound = timesSold = gpFromSale = deathCount = damageTaken = damageDealt = missedAttacks = timesEaten = healedFor = totalAttacks = amountUsedInCombat = timeWaited = timesDied = timesGrown = harvestAmount = enemiesKilled = timesOpened = ""; if (itemStats[i].timesFound > 0) timesFound = "<br>Times Found: <small class='text-warning'>" + formatNumber(itemStats[i].timesFound) + "</small>"; if (itemStats[i].timesSold > 0) timesSold = "<br>Quantity Sold: <small class='text-warning'>" + formatNumber(itemStats[i].timesSold) + "</small>"; if (itemStats[i].gpFromSale > 0) gpFromSale = "<br>GP Gained from sales: <small class='text-warning'>" + formatNumber(itemStats[i].gpFromSale) + "</small>"; if (itemStats[i].deathCount > 0) deathCount = "<br>Times lost due to death: <small class='text-warning'>" + formatNumber(itemStats[i].deathCount) + "</small>"; if (itemStats[i].damageTaken > 0) damageTaken = "<br>Damage Taken whilst Equipped: <small class='text-warning'>" + formatNumber(itemStats[i].damageTaken) + "</small>"; if (itemStats[i].damageDealt > 0) damageDealt = "<br>Damage Dealt: <small class='text-warning'>" + formatNumber(itemStats[i].damageDealt) + "</small>"; if (itemStats[i].missedAttacks > 0) missedAttacks = "<br>Attacks Missed: <small class='text-warning'>" + formatNumber(itemStats[i].missedAttacks) + "</small>"; if (itemStats[i].timesEaten > 0) timesEaten = "<br>Times Eaten: <small class='text-warning'>" + formatNumber(itemStats[i].timesEaten) + "</small>"; if (itemStats[i].healedFor > 0) healedFor = "<br>Healed for: <small class='text-warning'>" + formatNumber(itemStats[i].healedFor) + "</small>"; if (itemStats[i].totalAttacks > 0) totalAttacks = "<br>Total Attacks: <small class='text-warning'>" + formatNumber(itemStats[i].totalAttacks) + "</small>"; if (itemStats[i].amountUsedInCombat > 0) amountUsedInCombat = "<br>Amount used in combat: <small class='text-warning'>" + formatNumber(itemStats[i].amountUsedInCombat) + "</small>"; if (itemStats[i].timeWaited > 0) timeWaited = "<br>Time spent waiting to grow: <small class='text-warning'>" + formatNumber(itemStats[i].timeWaited) + "</small>"; if (itemStats[i].timesDied > 0) timesDied = "<br>Crop deaths: <small class='text-warning'>" + formatNumber(itemStats[i].timesDied) + "</small>"; if (itemStats[i].timesGrown > 0) timesGrown = "<br>Successful grows: <small class='text-warning'>" + formatNumber(itemStats[i].timesGrown) + "</small>"; if (itemStats[i].harvestAmount > 0) harvestAmount = "<br>Amount harvested: <small class='text-warning'>" + formatNumber(itemStats[i].harvestAmount) + "</small>"; if (itemStats[i].enemiesKilled > 0) enemiesKilled = "<br>Enemies killed: <small class='text-warning'>" + formatNumber(itemStats[i].enemiesKilled) + "</small>"; if (itemStats[i].timesOpened > 0) timesOpened = "<br>Opened: <small class='text-warning'>" + formatNumber(itemStats[i].timesOpened) + "</small>"; $("#itemlog-container").append('<img class="skill-icon-sm js-tooltip-enable" src="' + items[i].media + '" data-toggle="tooltip" data-html="true" data-placement="bottom" title="" data-original-title="' + items[i].name + "<small class='text-info'> " + timesFound + timesSold + gpFromSale + totalAttacks + missedAttacks + damageDealt + damageTaken + enemiesKilled + amountUsedInCombat + timesEaten + healedFor + timesGrown + timesDied + timeWaited + harvestAmount + timesOpened + '</small>">'); } else { $("#itemlog-container").append('<img class="skill-icon-sm js-tooltip-enable" src="assets/media/main/question.svg" data-toggle="tooltip" data-html="true" data-placement="bottom" title="" data-original-title="' + items[i].name + '">'); } } } updateTooltips(); $("#modal-item-log").modal("show"); } toggleMenu(1); $('.nav-main-heading').remove(":contains('Skills')"); $("#completion-mastery").parent().toggleClass("d-none"); console.log("Combat only completion log loaded");
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址