Melvor Make-XI

Specify the number of actions to perform, Firemaking and Cooking are not supported. Forked from the original Melvor MakeX by Breindahl#2660

  1. // ==UserScript==
  2. // @name Melvor Make-XI
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1.7
  5. // @description Specify the number of actions to perform, Firemaking and Cooking are not supported. Forked from the original Melvor MakeX by Breindahl#2660
  6. // @author GMiclotte
  7. // @include https://melvoridle.com/*
  8. // @include https://*.melvoridle.com/*
  9. // @exclude https://melvoridle.com/index.php
  10. // @exclude https://*.melvoridle.com/index.php
  11. // @exclude https://wiki.melvoridle.com/*
  12. // @exclude https://*.wiki.melvoridle.com/*
  13. // @inject-into page
  14. // @noframes
  15. // @grant none
  16. // ==/UserScript==
  17. /* jshint esversion: 6 */
  18.  
  19. // Note that this script is made for MelvorIdle version 0.20
  20.  
  21. ((main) => {
  22. const script = document.createElement('script');
  23. script.textContent = `try { (${main})(); } catch (e) { console.log(e); }`;
  24. document.body.appendChild(script).parentNode.removeChild(script);
  25. })(() => {
  26.  
  27. // Funtion to check if task is complete
  28. function taskComplete(skillID) {
  29. if (window.makeLeft === 0) {
  30. notifyPlayer(skillID, "Task Done");
  31. console.log('make-x task done');
  32. let ding = new Audio("https://www.myinstants.com/media/sounds/ding-sound-effect.mp3");
  33. ding.volume = 0.1;
  34. ding.play();
  35. window.makeLeft = Infinity;
  36. }
  37. }
  38.  
  39. function makeX(clicked, skillID) {
  40. const verbx = skillVerbs[skillID].verbX;
  41. const id = skillVerbs[skillID].id;
  42. if (offline.skill === [skillID] && clicked) {
  43. window.makeLeft = Infinity;
  44. $(id).children().first().html(verbx);
  45. }
  46. if (makeLeft !== Infinity) {
  47. if (clicked) {
  48. if (!startedNow) {
  49. makeLeft = Infinity;
  50. $(id).children().first().html(verbx);
  51. }
  52. } else {
  53. window.makeLeft--;
  54. $(id).children().first().html(makeLeft + " left");
  55. }
  56. }
  57. startedNow = false;
  58. // console.log('makeLeft: '+ makeLeft);
  59. if (window.makeLeft === 0) {
  60. taskComplete(skillID);
  61. refs[skillID](true);
  62. $(id).children().first().html(verbx);
  63. }
  64.  
  65. }
  66.  
  67. function startMakeXI() {
  68. // Loading script
  69. console.log('Melvor Make-XI: Loading...');
  70.  
  71. const newVerb = (name, selected, start, verb = 'Create') => {
  72. return {
  73. name: name,
  74. verb: verb,
  75. id: `${name}X`,
  76. verbX: `${verb} X`,
  77. start: start,
  78. selected: () => window[selected],
  79. }
  80. };
  81.  
  82. const skillVerbs = {
  83. //[Skills.Firemaking]: newVerb('Firemaking', 'Burn', 'selectedLog', 'burnLog'),
  84. //[Skills.Cooking]: newVerb('Cooking', 'Cook', 'selectedFood', 'startCooking'),
  85. [Skills.Smithing]: newVerb('Smithing', 'selectedSmith', 'startSmithing'),
  86. [Skills.Fletching]: newVerb('Fletching', 'selectedFletch', 'startFletching'),
  87. [Skills.Crafting]: newVerb('Crafting', 'selectedCraft', 'startCrafting'),
  88. [Skills.Runecrafting]: newVerb('Runecrafting', 'selectedRunecraft', 'startRunecrafting'),
  89. [Skills.Herblore]: newVerb('Herblore', 'selectedHerblore', 'startHerblore'),
  90. [Skills.Summoning]: newVerb('Summoning', 'selectedSummon', 'createSummon'),
  91. [Skills.Magic]: newVerb('Magic', 'selectedAltMagic', 'castMagic', 'Cast'),
  92. };
  93.  
  94.  
  95. const TempContainerMakeX = ['<small class="mr-2" id="', '"><button type="button" class="btn btn-warning m-3" onclick="setMakeX(', ');">', '</button></small>'];
  96. const createMakeXContainer = (skillName, actionName = 'Create') => {
  97. return ''
  98. + `<div>`
  99. + ` <button type="button" class="btn btn-warning m-1 p-2" onClick="setMakeX(Skills.${skillName});" style="height:48px;" id="${skillName}X">`
  100. + `${actionName} X`
  101. + ` </button>`
  102. + `</div>`;
  103. }
  104. //$("#skill-fm-logs-selected-qty").after(TempContainerMakeX[0]+"BurnX"+TempContainerMakeX[1]+"Skills.Firemaking"+TempContainerMakeX[2]+"Burn X"+TempContainerMakeX[3]);
  105. //$("#skill-cooking-food-selected-qty").after(TempContainerMakeX[0]+"CookX"+TempContainerMakeX[1]+"Skills.Cooking"+TempContainerMakeX[2]+"Cook X"+TempContainerMakeX[3]);
  106. Object.getOwnPropertyNames(skillVerbs).forEach(skillID => {
  107. const skill = skillVerbs[skillID].name;
  108. if (skill === 'Magic') {
  109. $("#magic-item-have").parent().parent().parent().children().last().children().first().children().first().after(TempContainerMakeX[0] + "CastX" + TempContainerMakeX[1] + "Skills.Magic" + TempContainerMakeX[2] + "Cast X" + TempContainerMakeX[3]);
  110. return;
  111. }
  112. $(`#skill-${skill.toLowerCase()}-interval`).parent().parent().before(createMakeXContainer(skill));
  113. });
  114.  
  115. window.makeLeft = Infinity;
  116. let startedNow = false;
  117.  
  118. window.setMakeX = function (skillID) {
  119. const verb = skillVerbs[skillID].verb;
  120. const verbx = skillVerbs[skillID].verbX;
  121. const id = skillVerbs[skillID].id;
  122. const selected = skillVerbs[skillID].selected();
  123. if (selected !== undefined && selected !== null && selected >= 0) {
  124. if (makeLeft === Infinity) {
  125. let xToSet = prompt('How many would you like to make?');
  126. try {
  127. xToSet = parseInt(xToSet, 10);
  128. if (!xToSet) {
  129. xToSet = 0;
  130. }
  131. window.makeLeft = xToSet;
  132. $(id).children().first().html(makeLeft + " left");
  133. // console.log('makeLeft: '+ makeLeft);
  134. if (offline.skill === skillID) {
  135. return;
  136. }
  137. } catch (e) {
  138. console.error(e)
  139. }
  140. } else {
  141. window.makeLeft = Infinity;
  142. $(id).children().first().html(verbx);
  143. }
  144. startedNow = true;
  145. skillVerbs[skillID].start(true);
  146. }
  147. };
  148.  
  149. const refs = {};
  150. const wrapper = (id) => {
  151. const start = skillVerbs[id].start;
  152. refs[id] = window[start];//.bind({});;
  153. window[start] = (...args) => {
  154. refs[id](...args);
  155. makeX(args[0], id);
  156. }
  157. skillVerbs[id].start = window[start];
  158. }
  159. Object.getOwnPropertyNames(skillVerbs).forEach(skillID => wrapper(skillID));
  160.  
  161. // Loading script
  162. console.log('Melvor Make-XI: Loaded');
  163. }
  164.  
  165. function loadScript() {
  166. if (typeof confirmedLoaded !== typeof undefined && confirmedLoaded) {
  167. // Only load script after game has opened
  168. clearInterval(scriptLoader);
  169. startMakeXI();
  170. }
  171. }
  172.  
  173. const scriptLoader = setInterval(loadScript, 200);
  174. });

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址