try to take over the world!
当前为
// ==UserScript==
// @name DailyIndieGame Tool
// @namespace http://tampermonkey.net/
// @version 1.4.0
// @description try to take over the world!
// @icon http://www.dailyindiegame.com/dailyindiegame.png
// @author Bisumaruko
// @include http*://*dailyindiegame.com/account_digstore.html
// @include http*://*dailyindiegame.com/account_trades.html
// @grant none
// ==/UserScript==
(function() {
'use strict';
var $ = selector => document.querySelector(selector),
$$ = selector => Array.from(document.querySelectorAll(selector));
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = `
.DIGTool_checkbox {
display: none;
}
.DIGTool_checked {
background-color: #222; !important
}
`;
document.head.appendChild(style);
var target = $('#form3').closest('tr').firstElementChild,
DIGTool = document.createElement('div'),
buttonSelectAll = document.createElement('button'),
buttonPurchase = document.createElement('button');
buttonPurchase.textContent = 'Purchase';
buttonPurchase.classList.add('DIG3_Orange_15_Form');
buttonPurchase.addEventListener('click', function () {
var purchase = async function () {
let list = $$('.DIGTool_checkbox:checked'),
headers = new Headers(),
bought = 0,
balance = parseInt($('a[href^="account_transac"]').closest('div').textContent.slice(12)) || 0;
headers.append('Content-Type', 'application/x-www-form-urlencoded');
for (let item of list) {
let id = parseInt(item.dataset.id),
price = parseInt(item.dataset.price),
res;
if (!id || isNaN(price)) continue;
if (balance - price < 0) {
msg.alert('Not enough DIG points');
break;
}
let url = 'account_buy.html',
init = {
method: 'POST',
headers: headers,
body: 'quantity=1&xgameid=' + id + '&xgameprice1=' + price + '&send=Purchase',
mode: 'same-origin',
credentials: 'same-origin',
cache: 'no-store',
referrer: location.origin + '/account_buy_' + id + '.html'
};
if (location.href.includes('account_trades')) {
url = 'account_buytrade_' + id + '.html';
init.body = 'gameid=' + id + '&send=Purchase';
init.referrer = location.origin + '/account_buytrade_' + id + '.html';
}
try {
res = await fetch(url, init);
if (res.ok) {
item.click();
bought++;
balance -= price;
} else msg.alert('Purchase failed, server responded an error');
} catch (e) {
console.log(e);
msg.alert('An error occured while making purchase request');
}
}
if (bought) window.location = location.origin + '/account_page.html';
};
try {
purchase();
} catch (e) {
console.log(e);
msg.alert('An error occured while preparing pruchase');
}
});
buttonSelectAll.textContent = 'Select All';
buttonSelectAll.classList.add('DIG3_Orange_15_Form');
buttonSelectAll.addEventListener('click', function () {
let checkboxes = $$('.DIGTool_checkbox');
for (let checkbox of checkboxes) {
if (this.textContent === 'Select All' && !checkbox.checked) checkbox.click();
if (this.textContent === 'Cancel' && checkbox.checked) checkbox.click();
}
this.textContent = this.textContent === 'Select All' ? 'Cancel' : 'Select All';
});
DIGTool.appendChild(buttonPurchase);
DIGTool.appendChild(buttonSelectAll);
while (target.lastChild) target.removeChild(target.lastChild);
target.appendChild(DIGTool);
var games = $$('a[href^="account_buy"]');
for (let game of games) {
let row = game.closest('tr'),
checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.classList.add('DIGTool_checkbox');
checkbox.dataset.id = game.href.replace(/\D/g,'');
checkbox.dataset.price = parseInt(game.closest('td').previousElementSibling.textContent) || 0;
checkbox.addEventListener('change', function () {
let row = this.closest('tr');
if (this.checked) row.classList.add('DIGTool_checked');
else row.classList.remove('DIGTool_checked');
});
row.firstElementChild.appendChild(checkbox);
row.addEventListener('click', function () {
this.querySelector('input[type="checkbox"]').click();
});
}
var msg = {
box: null,
init() {
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = `
.DIGTool_msg {
display: none;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
padding: 10px 20px;
border: 1px solid #424242;
background-color: rgb(32, 32, 32);
color: #FFF;
font-size: larger;
}
.DIGTool_msg-show {
display: block;
}
`;
document.head.appendChild(style);
var DIGTool_msg = document.createElement('div');
DIGTool_msg.classList.add('DIGTool_msg');
document.body.appendChild(DIGTool_msg);
this.box = DIGTool_msg;
},
alert(text) {
this.box.textContent = text;
this.box.classList.add('DIGTool_msg-show');
setTimeout(this.hide.bind(this), 3000);
},
hide() {
this.box.classList.remove('DIGTool_msg-show');
}
};
msg.init();
})();