// ==UserScript== // @name MH - BWrift HUD Enhancer (Items + Charms) // @version 2.0.2 // @description See and change charms on your bwrift HUD! // @author Chromatical // @match https://www.mousehuntgame.com/* // @match https://apps.facebook.com/mousehunt/* // @icon https://www.google.com/s2/favicons?domain=mousehuntgame.com // @grant none // @namespace https://greasyfork.org/users/748165 // @downloadURL none // ==/UserScript== (function() { if (user.environment_name == "Bristle Woods Rift"){ huntListener(); getData(); } })(); $(document).ajaxComplete(function() { var container = $(".charm_container")[0] if(container){ return; } else if (user.environment_name == "Bristle Woods Rift"){ getData(); } }); function huntListener(){ const originalOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function (){ this.addEventListener("load",function(){ if (this.responseURL === "https://www.mousehuntgame.com/managers/ajax/turns/activeturn.php" ||this.responseURL === "https://www.mousehuntgame.com/managers/ajax/pages/page.php" ||this.responseURL === "https://www.mousehuntgame.com/managers/ajax/purchases/itempurchase.php"){ success:{update()} cache: {false} } }) originalOpen.apply(this,arguments); }; }; function getData(){ postReq("https://www.mousehuntgame.com/managers/ajax/users/userInventory.php", `sn=Hitgrab&hg_is_ajax=1&item_types%5B%5D=rift_vacuum_trinket&item_types%5B%5D=super_rift_vacuum_trinket&item_types%5B%5D=rift_anti_skele_trinket&item_types%5B%5D=temporal_fusion_trinket&item_types%5B%5D=rift_clockwork_cog_stat_item&item_types%5B%5D=temporal_rune_stat_item&action=get_items&uh=${user.unique_hash}` ).then(res=>{ try { var response = JSON.parse(res.responseText); if (response) { var quantity = [] for (var i =0;i{ try { var response = JSON.parse(res.responseText); if (response) { document.getElementsByClassName("Charm-Quantity")[0].textContent = response.items[0].quantity; document.getElementsByClassName("Charm-Quantity")[1].textContent = response.items[1].quantity; document.getElementsByClassName("Charm-Quantity")[2].textContent = response.items[2].quantity; document.getElementsByClassName("Charm-Quantity")[3].textContent = response.items[3].quantity; document.getElementsByClassName("Item-Quantity")[0].textContent = response.items[4].quantity; document.getElementsByClassName("Item-Quantity")[1].textContent = response.items[5].quantity; } } catch (error) { console.error(error.stack); } }); } function purchasable(number){ document .querySelectorAll("#marketplace-tsr-buy") .forEach( el=> el.remove()) const div = document.createElement("div"); div.id = "marketplace-tsr-buy"; div.style.backgroundColor = "#F5F5F5"; div.style.position = "fixed"; div.style.zIndex = "9999"; div.style.left = "35vw"; div.style.top = "28vh"; div.style.border = "solid 3px #696969"; div.style.borderRadius = "20px"; div.style.padding = "10px"; div.style.textAlign = "center"; const gs_title = document.createElement("div") gs_title.innerText = "General Store" gs_title.style.fontWeight = "bold"; gs_title.style.fontSize = "15px" const closeButton = document.createElement("button", { id: "close-button" }); closeButton.textContent = "x"; closeButton.onclick = function () { document.body.removeChild(div); }; const table = document.createElement("table"); table.style.textAlign = "left"; table.style.borderSpacing = "1em 0"; const row = document.createElement("tr"); const label = document.createElement("label"); label.innerText = "Amount of Timesplit Rune: " const input = document.createElement("input"); input.type = "text"; input.id = "tsr-input-id" input.size = "10" input.placeholder = "Max: ".concat(Math.floor(number/50)); const buyButton = document.createElement("button"); buyButton.style.fontWeight = "bold"; buyButton.innerText = "Buy"; buyButton.onclick = function(){ const val = input.value; if (val>0 && val <= Math.floor(number/50)){ postReq("https://www.mousehuntgame.com/managers/ajax/purchases/itempurchase.php", `sn=Hitgrab&hg_is_ajax=1&type=temporal_rune_stat_item&quantity=${val}&buy=1&is_kings_cart_item=0&uh=${user.unique_hash}` ).then(function(){ try { alert("Purchase successful!") } catch (error){ alert("Purchase unsuccessful!"); console.log(error) } document.body.removeChild(div); }) } else { alert("Invalid Amount!") } } row.appendChild(label); row.appendChild(input); table.appendChild(row); div.appendChild(closeButton); div.appendChild(document.createElement("br")); div.appendChild(document.createElement("br")); div.appendChild(gs_title); div.appendChild(document.createElement("br")); div.appendChild(table); div.appendChild(document.createElement("br")); div.appendChild(buyButton); document.body.appendChild(div); } function postReq(url, form) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function () { if (this.readyState === XMLHttpRequest.DONE && this.status === 200) { resolve(this); } }; xhr.onerror = function () { reject(this); }; xhr.send(form); }); }