您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Element Price shown on Character Page
// ==UserScript== // @name Element Cost Tracker // @namespace http://tampermonkey.net/ // @version 0.3 // @description Element Price shown on Character Page // @author Naturef // @match https://www.lordswm.com/pl_info.php?id=* // @icon https://www.google.com/s2/favicons?domain=lordswm.com // @grant none // @require http://code.jquery.com/jquery-3.3.1.min.js // ==/UserScript== const totalCostHTML = '<hr> <b>Total Cost</b>: ' + ' <img alt="" src="https://dcdn2.lordswm.com/i/r/48/gold.png?v=3.23de65" border="0" width="12" height="12" title="Cost">  ' ; const marketURL = window.location.origin + '/auction.php' ; async function main() { var marketHTML ; try { marketHTML = await request(marketURL) ; if(marketHTML.search("During the journey you have access to the") != -1) throw "You are travelling at the moment" ; } catch(e) { console.log("Market not accessible at the moment"); console.log(e); return ; } var resourceRow = $("b:contains(Resources)")[0].parentNode; resourceRow.setAttribute('width','35%'); var el = resourceRow.parentNode.nextSibling.firstChild; console.log(el); let elements = loadElements() ; var children = el.childNodes ; var totalCost = 0 ; var pel = document.createElement('p') ; pel.innerHTML = totalCostHTML + 0 ; el.appendChild(pel) ; for(let i = 0 ; i < children.length ; i++) { let row = children[i] ; if(row.nodeName != 'B') continue ; let resourceName = row.textContent.trim() ; if(!elements[resourceName]) continue ; let link = getMarketLink(elements,resourceName) ; getMarketPrice(link).then(function (price) { // console.log(resourceName,row.nextSibling) ; var curr = row.nextSibling ; let quantity = Number(curr.textContent.replace(',','').match(/\d+/)[0]) ; let b = document.createElement('b') ; b.setAttribute('style',"font-size:7pt") b.innerHTML = ' ' + price.toLocaleString() + 'x' + quantity + ' = ' + (price * quantity) ; b.innerHTML = ' <img alt="" src="https://dcdn2.lordswm.com/i/r/48/gold.png?v=3.23de65" border="0" width="12" height="12" title="Cost">' + b.innerHTML ; //Insert after curr curr.parentNode.insertBefore(b,curr.nextSibling) ; totalCost += (price * quantity) ; pel.innerHTML = totalCostHTML + totalCost.toLocaleString() ; }) ; } } $(document).ready(main); function getMarketLink(elements, name) { return marketURL + '?cat=elements&sort=0&art_type=' + elements[name] ; } function loadElements() { return { 'Abrasive': 'abrasive', 'Fern flower': 'fern_flower', 'Ice crystal': 'ice_crystal', 'Fire crystal': 'fire_crystal', 'Meteorite shard' : 'meteorit', 'Tiger`s claw': 'tiger_tusk', 'Moonstone': 'moon_stone', 'Toadstool': 'badgrib', 'Viper venom': 'snake_poison', 'Windflower': 'wind_flower', 'Witch bloom': 'witch_flower' } ; } async function getMarketPrice(link) { var el = document.createElement('html'); el.innerHTML = await request(link); var b = el.querySelector("tr[class='wb']"); // console.log(artName, " row", b); if(!b) return 0 ; var price = getPrice(b); return price ; } function getPrice(row) { var price = Number(row.childNodes[2].textContent.replaceAll(',', '').match(/\d+/)[0]); return price; } async function request(url) { return new Promise(function(resolve, reject) { const xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(e) { if (xhr.readyState === 4) { if (xhr.status === 200) { resolve(xhr.response) } else { reject(xhr.status) } } } xhr.ontimeout = function () { reject('timeout') } xhr.open('get', url, true) xhr.send() }); }