// ==UserScript== // @name Neopets: Auto Haggler // @version 1.0 // @namespace https://www.scriptneo.com/userscript/neopets-auto-haggler // @description Auto haggles in the Neopian Shops // @match *://*.neopets.com/haggle.phtml* // @match *://*.neopets.com/captcha_show.phtml* // @require https://code.jquery.com/jquery-3.4.1.min.js // @grant window.focus // @grant unsafeWindow // @downloadURL https://www.scriptneo.com/scripts/download.php?id=7 // @updateURL https://www.scriptneo.com/scripts/download.php?id=7 // ==/UserScript== var url = document.URL; var OCR = true; var return_ab = true; var min = 0; var max = 200; function random(min, max) { return Math.floor(Math.random() * (max-min)) + min; } function solve_captcha(url) { return new Promise( resolve => { var captcha = new Image(); captcha.src = url; captcha.onload = () => { var width = captcha.width; var height = captcha.height; var canvas = unsafeWindow.document.createElement('canvas'); canvas.width = width; canvas.height = width; canvas.getContext("2d").drawImage(captcha, 0, 0); var imgData = canvas.getContext("2d").getImageData(0, 0, width, height); var lowy = 999; var lowx = 999; var low = 999; for (var x = 0; x < imgData.width; x++){ for (var y = 0; y < imgData.height; y++){ var i = x*4+y*4*imgData.width; var avg = Math.floor((imgData.data[i]+imgData.data[i+1]+imgData.data[i+2])/3); if (avg < low){ low = avg; lowx = x; lowy = y; } } } resolve({lowx, lowy}); }; }); } function smart_haggle(haggle_price){ console.log('haggle_price', haggle_price); var val = new Array(2); val[0] = haggle_price.substr(0, 1); val[1] = haggle_price.substr(1, 1); console.log('val0', val[0]); console.log('val1', val[1]); var x = 0; var end_price = ""; for(x=0; x { var $; if (typeof $ === 'undefined') $ = unsafeWindow.$; const html = $('html').html(); if(url.includes('haggle.phtml')){ // window.focus(); if(document.body.innerHTML.indexOf("is SOLD OUT!") > -1) { setTimeout(function(){ document.querySelector("#container__2020 > div.shop-bg").click(); }, 500); } if(document.body.innerHTML.indexOf("has been added to your inventory") > -1) { //window.focus(); setTimeout(function(){ document.querySelector("#container__2020 > div.shop-bg").click(); }, 6000); } if(document.body.innerHTML.indexOf("one item every five seconds") > -1) { //window.focus(); location.reload(); } var haggle_price = $('#shopkeeper_makes_deal').find('b').get(0).innerHTML; haggle_price = (haggle_price.match("([0-9-,]+)")[0]).replace(",", ""); $('input[name=current_offer]').val(haggle_price); if(OCR){ const {lowx: x, lowy: y} = await solve_captcha(document.querySelector('input[type="image"]').src); setTimeout(function(){ var haggleform = document.querySelector('form[name="haggleform"]'); var newInput = document.createElement("input"); var newInput2 = document.createElement("input"); newInput.type="hidden"; newInput.name="x"; newInput.value=x; haggleform.appendChild(newInput); newInput2.type="hidden"; newInput2.name="y"; newInput2.value=y; haggleform.appendChild(newInput2); haggleform.submit(); }, random(min,max)) } return; } })();