您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
BvS r00t Hacking Helper 1.3.5
// ==UserScript== // @name BvS Hacker Helper // @namespace rvHack // @description BvS r00t Hacking Helper 1.3.5 // @include http*://*animecubed.com/billy/bvs/villagefields.html // @include http*://*animecubedgaming.com/billy/bvs/villagefields.html // @version 1.3.7 // @history 1.3.7 New domain - animecubedgaming.com - Channel28 // @history 1.3.6 (5/19/2017) Now https compatible (Updated by Channel28) // @history 1.3.5 (9/9/2014) Added grant permissions. // @history 1.3.4 (1/15/2013) Made Firefox 17 compatible by removing CDATA. // @history 1.3.3 (3/12/2011) Made Firefox 4 compatible. // @history 1.3.2 (1/1/2010) Fixed some bad code I put in in 1.3.1. // @history 1.3.1 (12/31/2009) fixed an error because of new changes McM made to the display when you hacked someone // @history 1.3 script now remembers your hacked targets and when you hack them, and displays counts for past 24 hr hacks and past 48 hrs // @history 1.2 fixed error with field changing when one key is "Dealer's Room" because of the single quote. // @history 1.2 add a link text change when you click "Retry" so the user knows when the server responds. // @history 1.2 changed execution address from '*.animecubed' to '*animecubed' as requested. // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // ==/UserScript== var helperBoxStyle = "background-color: black; color: white; border: #A1A100 2px solid;"; ///////////////////////////////////////////////////////////////// // Functions ///////////////////////////////////////////////////////////////// var scripts = 'function switchHuntAndHack() {\n' + ' return switchTargetField("Cursed,Filthy,Noodle Shop", "hackfieldswitch");\n' + '}\n' + '\n' + 'function switchTargetField(target, confirm) {\n' + ' if ((target == null) || (target == ""))\n' + ' return false;\n' + '\n' + ' try {\n' + ' if (document.getElementById(confirm).checked) {\n' + ' var field = target.split(",");\n' + '\n' + ' switchField(field[0], field[1], field[2]);\n' + ' } else {\n' + ' alert("Please check the confirm box!");\n' + ' }\n' + ' } catch(e) {\n' + ' alert("Exception!\\n\\nError name: " + e.name + "\\nError message: " + e.message);\n' + ' }\n' + '\n' + ' return false;\n' + '}\n' + '\n' + 'function switchField(key1, key2, key3) {\n' + ' try {\n' + ' switchFieldKey(document.field.key_1, unescape(key1));\n' + ' switchFieldKey(document.field.key_2, unescape(key2));\n' + ' switchFieldKey(document.field.key_3, unescape(key3));\n' + '\n' + ' document.field.submit();\n' + ' } catch(e) {\n' + ' if (e == "KeyError")\n' + ' alert("Failed to switch to the desired Field. You may not have the keys necessary to travel there.");\n' + ' else\n' + ' throw(e);\n' + ' }\n' + '}\n' + '\n' + 'function switchFieldKey(keyfield, keyvalue) {\n' + ' for (var i = 0; i < keyfield.length; i++) {\n' + ' if (keyfield[i].text == keyvalue)\n' + ' break;\n' + ' }\n' + '\n' + ' if (i == keyfield.length)\n' + ' throw("KeyError");\n' + '\n' + ' keyfield.selectedIndex = i;\n' + '}\n'; String.prototype.startsWith = function(str) { return (this.match("^"+str) == str); } String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,""); } function getCurrentTarget() { var target = GM_getValue("currentTarget_" + playerName, ""); if (target != "") { var info = target.split(";"); if (info[0] == "") info[0] = "[<i>Unknown Hacker</i>]"; return info; } return new Array("", ""); } function getHackTargets() { var rtrn = GM_getValue("oldTargets_" + playerName, "").split(","); var removed = false; while (rtrn.length > 0) { if (currentTime >= (parseInt(rtrn[1]) || 0) + 172800) { //2 days rtrn.splice(0, 2); remove = true; } else break; } if (removed) { GM_setValue("oldTargets_" + playerName, rtrn.join(",")) } return rtrn; } function saveHackTargets(targets) { GM_setValue("oldTargets_" + playerName, targets.join(",")) } function addHackedTarget(targetName) { var targets = getHackTargets(); targets.push(targetName); targets.push(currentTime); saveHackTargets(targets); } function countHacks24Hours(targets) { var count = 0; for (var i = 0; i < targets.length; i += 2) { if (currentTime < (parseInt(targets[i+1]) || 0) + 86400) { //1 day count++; } } return count; } function getTimeAgo(time) { var diff = currentTime - time; var rtrn = ""; if (diff >= 3600) { rtrn += Math.round(diff / 3600) + " hrs "; diff %= 3600; } rtrn += Math.round(diff / 60) + " mins"; return rtrn; } function QueryServer_FindPlayer(player) { if ((player == null) || (player == undefined)) { player = getCurrentTarget()[0]; if (player.indexOf("<i>") != -1) return; } QueryServer("action=find&player=" + player); } function QueryServer(query) { GM_xmlhttpRequest({ method: 'POST', url: 'http://rveach.romhack.org/BvS/hackhelper.php', headers: {'Content-type' : 'application/x-www-form-urlencoded'}, data: encodeURI(query), onerror: function(response) { alert("Hack Download Failed!"); }, onload: function(response) { try { var text = response.responseText; if (text.startsWith("Saved;")) { //saved hack info } else if (text.startsWith("Info;")) { GM_setValue("currentTarget_" + playerName, text.substr(5)); updateHackDisplay(); } else if ((text == null) || (text.length == 0)) { alert("Hack Download Error:\n\nUnknown Error"); } else if (text.length >= 200) { alert("Hack Download Error:\n\nError Message too big to display!"); } else { alert("Hack Download Error:\n\n" + text); } } catch(e) { alert("Exception!\n\nError name: " + e.name + "\nError message: " + e.message); } } }); } function updateHackDisplay(info) { if ((info == null) || (info == undefined)) info = getCurrentTarget(); if (info[0] == "") return; if ((info[1] == null) || (info[1] == undefined)) info[1] = ""; var helper; var insert; var snap = document.evaluate("//table/tbody/tr/td/form/a", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; temp = snap.snapshotItem(i); i++) { if (match = temp.textContent.match(/.*Remove Target \(.* Core\).*/)) { if (helper = document.getElementById("minihackdisplay")) { insert = false; } else { insert = true; helper = document.createElement("div"); helper.setAttribute("id", "minihackdisplay"); helper.setAttribute("style", helperBoxStyle + "margin-top: 5px; font-size: 12px;"); } var helperText = ""; helperText += ("<b>" + info[0] + "</b><br>\n"); if (info[1] == "") { //no location saved helperText += "<i>Location Unknown</i>"; } else { helperText += ("<b>" + info[1] + "</b>, <b>" + info[2] + "</b>, <b>" + info[3] + "</b> saved <b>" + info[4] + "</b>"); helperText += ("\n<br><input style='margin-bottom: 7px;' type='checkbox' id='targetfieldswitch2' value='1'> <a href='javascript:;' onclick='return switchTargetField(\"" + escape(info[1]) + "," + escape(info[2]) + "," + escape(info[3]) + "\", \"targetfieldswitch2\")' style='color: white;'>Switch to Field!</a>"); } helperText += "<br>\n<a href='javascript:;' id='hackretry2' style='color: white;'>Retry</a>"; helper.innerHTML = helperText; if (insert) temp.parentNode.insertBefore(helper, temp.nextSibling); document.getElementById("hackretry2").addEventListener("click", function() { this.innerHTML = "Requesting"; QueryServer_FindPlayer(); }, false); break; } } if (helper = document.getElementById("hackdisplay")) { helperText = ("<br>Current Target: <b>" + info[0] + "</b> [<a href='javascript:;' id='hackretry1' style='color: white;'>Retry</a>]<br>("); if (info[1] == "") { //no location saved helperText += "<i>Location Unknown</i>"; } else { helperText += ("<b>" + info[1] + "</b>, <b>" + info[2] + "</b>, <b>" + info[3] + "</b> saved <b>" + info[4] + "</b>"); } helperText += ")\n"; if (info[1] != "") { helperText += "<br><input type='checkbox' id='targetfieldswitch1' value='1'> <a href='javascript:;' onclick='return switchTargetField(\"" + escape(info[1]) + "," + escape(info[2]) + "," + escape(info[3]) + "\", \"targetfieldswitch1\")' style='color: white;'>Switch to Target's Last Known Field!</a><br>\n"; } helper.innerHTML = helperText; document.getElementById("hackretry1").addEventListener("click", function() { this.innerHTML = "Requesting"; QueryServer_FindPlayer(); }, false); } } ///////////////////////////////////////////////////////////////// try { var match; var currentTime = Math.round(new Date().getTime()/1000.0); ///////////////////////////////////////////////////////////////// // Get Form Fields ///////////////////////////////////////////////////////////////// var fieldForm = document.getElementsByName("field")[0]; var playerName = document.getElementsByName("player")[0].value; var key_1; var key_2; var key_3; var element; for (var i = 0; element = fieldForm.elements[i]; i++) { if (element.name == "key_1") key_1 = element; else if (element.name == "key_2") key_2 = element; else if (element.name == "key_3") key_3 = element; } ///////////////////////////////////////////////////////////////// // Insert JS Functions ///////////////////////////////////////////////////////////////// var head = document.getElementsByTagName("head")[0]; var node = document.createElement("script"); node.type = "text/javascript"; node.innerHTML = scripts; head.appendChild(node); ///////////////////////////////////////////////////////////////// // Create Helper ///////////////////////////////////////////////////////////////// var helper = document.createElement("div"); var helperText = "<center><h3 style='display: inline'>Hacker Helper</h3></center>\n"; helper.setAttribute("style", helperBoxStyle); fieldForm.parentNode.insertBefore(helper, fieldForm.nextSibling); ///////////////////////////////////////////////////////////////// // Get Player List ///////////////////////////////////////////////////////////////// var playerlist = ""; var playertemp; var snap = document.evaluate("//table/tbody/tr/td/i", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; playertemp = snap.snapshotItem(i); i++) { if (match = playertemp.textContent.replace(/[\n\r\t]/g, " ").match(/.*Other Ninja on this Field:\s*(.*)/)) { playerlist = match[1].replace(/ /g, " ").replace(/, /g, ","); break; } } ///////////////////////////////////////////////////////////////// // Get New Target, Hacked Target, or Target Dropped (can't be both) ///////////////////////////////////////////////////////////////// snap = document.evaluate("//table/tbody/tr/td/b", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; temp = snap.snapshotItem(i); i++) { temp2 = temp.textContent.replace(/[\n\r\t]/g, " "); if (match = temp2.match(/.*Target Found:\s*(.*)/)) { //got new target GM_setValue("currentTarget_" + playerName, ""); QueryServer_FindPlayer(match[1].replace(/ /g, " ").trim()); break; } else if (match = temp2.match(/.*Hack Successful!.*/)) { //hacked target var info = getCurrentTarget(); if (info[0] != "") addHackedTarget(info[0]); GM_setValue("currentTarget_" + playerName, ""); break; } else if (match = temp2.match(/.*Get a Target.*/)) { //dropped hack GM_setValue("currentTarget_" + playerName, ""); break; } } ///////////////////////////////////////////////////////////////// // Get Keys ///////////////////////////////////////////////////////////////// var key1 = key_1[key_1.selectedIndex].text; var key2 = key_2[key_2.selectedIndex].text; var key3 = key_3[key_3.selectedIndex].text; var keyString = key1 + "," + key2 + "," + key3; ///////////////////////////////////////////////////////////////// // Logic ///////////////////////////////////////////////////////////////// if (playerlist != "") { QueryServer("action=save&field=" + keyString + "&playerlist=" + playerlist); var info = getCurrentTarget(); if (info[0] != "") playertemp.innerHTML = playertemp.innerHTML.replace(info[0], "<h3><u>" + info[0] + "</u></h3>"); } helperText += "<div id='hackdisplay'></div>"; helperText += "<br><input type='checkbox' id='hackfieldswitch' value='1'> <a href='javascript:;' onclick='return switchHuntAndHack()' style='color: white;'>Switch to 'Hunt and Hack' Field!</a>\n"; var targets = getHackTargets(); if (targets.length > 0) { helperText += "<br><br><b>" + countHacks24Hours(targets) + "</b> successful hacks in the past 24 hours."; helperText += "<br><b>" + (targets.length / 2) + "</b> in the past 48 hours."; helperText += "<br><font size='1'>"; for (var i = 0; i < targets.length; i += 2) { if (i) helperText += ", "; helperText += "<i><b>" + targets[i] + "</b></i> (" + getTimeAgo(targets[i+1]) + " ago)"; } helperText += "</font>"; } helper.innerHTML = helperText; updateHackDisplay(); } catch(e) { alert("Exception!\n\nError name: " + e.name + "\nError message: " + e.message); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址