// ==UserScript== // @name DailyIndieGame Tool // @namespace http://tampermonkey.net/ // @version 1.2.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 // @downloadURL none // ==/UserScript== (function() { 'use strict'; 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 anchor = document.querySelector('#form3'), target = anchor.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', async function () { let anchor = document.querySelector('a[href^="account_transac"]'), balance = parseInt(anchor.closest('div').textContent.slice(12)) || 0, list = Array.from(document.querySelectorAll('.DIGTool_checkbox:checked')), headers = new Headers(), bought = 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); if (balance - price < 0) { msg.alert('Not enough DIG points'); break; } if (!id || isNaN(price)) { msg.alert('Unable to retrieve game id or price'); continue; } 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: 'http://www.dailyindiegame.com/account_buy_' + id + '.html' }; if (location.href.includes('account_trades')) { url = 'account_buytrade_' + id + '.html'; init.body = 'gameid=' + id + '&send=Purchase'; init.referrer = 'http://www.dailyindiegame.com/account_buytrade_' + id + '.html'; } let res = await fetch(url, init); if (res.ok) { item.click(); bought++; balance -= price; } else msg.alert('Purchase failed, server responded an error'); } if (bought) window.location = 'http://www.dailyindiegame.com/account_page.html'; }); buttonSelectAll.textContent = 'Select All'; buttonSelectAll.classList.add('DIG3_Orange_15_Form'); buttonSelectAll.addEventListener('click', function () { let checkboxes = Array.from(document.querySelectorAll('.DIGTool_checkbox')); for (let checkbox of checkboxes) { if (this.textContent == 'Select All') { if (!checkbox.checked) checkbox.click(); } else { if (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 = Array.from(document.querySelectorAll('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(); })();