您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fill the item count just by clicking on an item at the store. Show the total sell price and treasure value.
当前为
// ==UserScript== // @name BvS Shop Manager // @namespace TheSpy // @description Fill the item count just by clicking on an item at the store. Show the total sell price and treasure value. // @version 1.08 // @history 1.08 Fixed a bug (North) // @history 1.07 The script now adds a wiki link to every item // @history 1.06 Fixed a bug with Ryo summing (found by: Itachi000) // @history 1.05 Optimised the code, fixed a bug with 'Power Over 9000' and 'Over 11000' // @history 1.04 Changed rolls from d1000 to d400 (duh) // @history 1.03 Fixed a little bug with treasure prices, changed the rolls from d400 do d1000 // @history 1.02 Changed the way the treasure percent is calculated // @history 1.01 Initial release // @include http://*animecubed.com/billy/bvs/shop.html // @grant none // ==/UserScript== function ShopManager() { var itemsCount = 0; var itemsPrice = 0; var tLower = 0; var tUpper = 1; var ryo = 0; var text = null; var treasures = [ [/Copper Ring/i, 100], [/Gold Ring/i, 3000], [/Platinum Ring/i, 5000], [/Cobalt Ring/i, 10000], [/Small Pearl/i, 1000], [/Small Emerald/i, 2000], [/Small Ruby/i, 5000], [/Small Diamond/i, 10000], [/Copper Coin/i, 100], [/Silver Coin/i, 200], [/Gold Coin/i, 5000], [/Copper Shaft/i, 100], [/Silver Shaft/i, 1000], [/Cobalt Shaft/i, 5000], [/Threadbare Robes/i, 500], [/Sham Rock/i, 1000], [/Crystal Lens/i, 5000] ]; this.AppendClickHandler = function() { var snap = document.evaluate("//input[@type='radio' and @name='selling']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for(var i = 0; i < snap.snapshotLength; i++) { var input = snap.snapshotItem(i); try { var match = input.parentNode.parentNode.innerHTML.match(/(\d+) \(.{0,20}sells for (\d+) ryo\)/i); if(match != null && match[1] != null) input.setAttribute("onclick", "javascript:document.getElementsByName('numbertosell')[0].value=" + match[1]); } catch(e) { input.setAttribute("onclick", "javascript:document.getElementsByName('numbertosell')[0].value=0"); } } } this.TreasureRange = function() { this.lower = 0; this.upper = 1; this.intersect = function(price, maxprice) { var max = Math.floor((400 * (price + 1)) / maxprice) / 400; var min = Math.ceil((400 * price) / maxprice) / 400; this.upper = Math.min(this.upper, max); this.lower = Math.max(this.lower, min); } } this.Round = function(number, decimals) { try { return Math.round(number * Math.pow(10, decimals)) / Math.pow(10, decimals); } catch(e) { return number; } } this.CalculateStuff = function() { var snap = document.evaluate("//form[@name='sellitem']/table/tbody/tr/td[2]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < snap.snapshotLength; i++) { try { var cell = snap.snapshotItem(i); var cellText = cell.innerHTML; var match = cellText.match(/([\d,]+) \(.{0,20}sells for ([\d,]+) ryo\)/i); var itemCount = parseInt(match[1].replace(',', '')); var itemPrice = parseInt(match[2].replace(',', '')); var itemTotal = itemCount * itemPrice; var treasurePrice = 0; for(var j in treasures) { if(treasures[j][0].test(cellText)) { treasurePrice = treasures[j][1]; } } if(treasurePrice > 0) { cell.innerHTML = cellText.replace(/Treasure Item/i, "Treasure"); var treasureRange = new this.TreasureRange(); treasureRange.intersect(itemPrice, treasurePrice); tLower = Math.max(tLower, treasureRange.lower); tUpper = Math.min(tUpper, treasureRange.upper); } cell.innerHTML += [" - <b><font color=\"#9D6F03\">", itemTotal, "</font></b>"].join(""); itemsCount += itemCount; itemsPrice += itemTotal; } catch(e) { } } } this.AppendNodes = function() { try { var snap = document.evaluate("//b[contains(text(), 'Current Ryo')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if(snap.snapshotLength == 1) { text = snap.snapshotItem(0); ryo = parseInt(snap.snapshotItem(0).textContent.match(/(\d+)/)[1]); } else { return; } var b = document.createElement("b"); var b2 = document.createElement("b"); text.parentNode.insertBefore(b, text); text.parentNode.insertBefore(b2, text.nextSibling); tLower *= 100; tUpper *= 100; b.innerHTML = ["Treasure value: <font color=\"#5b4c05\">", tLower == tUpper ? this.Round(tLower, 2) : [this.Round(tLower, 2), this.Round(tUpper, 2)].join("% ~ "), "%</font><br/>Item Ryo: <font color=\"#9d6f03\">", itemsPrice, "</font><br/>"].join(""); b2.innerHTML = ["<br/>Total Ryo: <font color=\"#9d6f03\">", ryo + itemsPrice, "</font>"].join(""); } catch(e) { } } this.AppendWikiNodes = function() { var snap = document.evaluate("//form[@name='sellitem']/table/tbody/tr/td[2]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < snap.snapshotLength; i++) { try { var cell = snap.snapshotItem(i); var match = cell.innerHTML.match(/<span[^>]*>(<span[^>]*><font[^>]*><b>)?([^<]+)(<\/b><\/font><\/span>)?<\/span>/i); if(match.length == 4) { cell.innerHTML = "<a href=\"http://bvs.wikidot.com/items:" + match[2] + "\" target=\"_blank\"><font color=\"#a10000\"><b>[W]</b></font></a> " + cell.innerHTML; } } catch(e) { } } } this.CalculateStuff(); this.AppendNodes(); this.AppendClickHandler(); this.AppendWikiNodes(); } var shopManager = new ShopManager();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址