🏠 Home 

MAM Site Store Fix

Updates Ratio, FL, & Bonus Points in Store header after purchase (6/10/22)


安装此脚本?
// ==UserScript==
// @name MAM Site Store Fix
// @namespace yyyzzz999
// @author yyyzzz999
// @description Updates Ratio, FL, & Bonus Points in Store header after purchase (6/10/22)
// @match  https://www.myanonamouse.net/store.php
// @icon   https://cdn.myanonamouse.net/imagebucket/164109/StoreFix.png
// @version 1.2
// @license MIT
// @run-at document-start
// @grant unsafeWindow
// ==/UserScript==
/*jshint esversion: 6 */
// Problem: Site Store purchase updates the remaining bonus points in body of page, but not the header, or ratio
// even though the data has been sent to the JavaScript that processes the purchase.
// This saves a page reload to see your new ratio at the top of the page
let DEBUG =0; // Debugging mode on (1) or off (0) or 2 verbose, 3 Too verbose!
if (DEBUG) console.log("Store Fix 1.2 loaded"); // Just making sure we're watching the right console window
//https://stackoverflow.com/questions/629671/how-can-i-intercept-xmlhttprequests-from-a-greasemonkey-script
// Spy on MAM AJAX request/response to get hidden ratio and seedbonus updates not posted in page header
// This works in Basilisk Scratchpad, Tampermonkey w/Firefox, but not Greasmonkey 3.9 in Basilisk
let R###ltObj; // I scoped this out of the function in case I want to reference it later in other contexts
(function(open) {
XMLHttpRequest.prototype.open = function() {
this.addEventListener("readystatechange", function() {
if (DEBUG >2) console.log(this.readyState);
if (DEBUG >2) console.log(this.responseText);
if (this.readyState == 4 && this.status == 200) {
R###ltObj = JSON.parse(this.responseText);
if (DEBUG) console.log("New Ratio: " + R###ltObj.ratio);
if (DEBUG) console.log("Seedbonus: " + R###ltObj.seedbonus);
if (DEBUG >1) console.log("Response: " + this.responseText);
if( R###ltObj.ratio) {document.getElementById("tmR").textContent=R###ltObj.ratio.toFixed(6);}
if( R###ltObj.seedbonus) document.getElementById("tmBP").textContent="Bonus: " + Math.floor(R###ltObj.seedbonus);
// The above two lines of code are similar to code I'd like to see in the MAM site.js.
if( R###ltObj.FLleft) {
let FLstat = document.querySelector("#tmFW");
if (FLstat !== null) { //If Preferences, Style, Main Menu, Top Menu, Freeleech Wedges [checked]
FLstat.textContent="FL Wedges: " + Math.floor(R###ltObj.FLleft); //v1.2
}
}
}
}, false);
open.apply(this, arguments);
};
})(XMLHttpRequest.prototype.open);