您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically plays Go! Go! Go!
// ==UserScript== // @name Go! Go! Go! Autoplayer // @namespace http://tampermonkey.net/ // @version 1.0 // @description Automatically plays Go! Go! Go! // @author romboyz // @include http://www.neopets.com/prehistoric/gogogo* // ==/UserScript== //functional variables var maxWait = 3000; var minWait = 800; var waitTime = Math.random() * (maxWait - minWait) + minWait; var patt = new RegExp("\\d+"); //Get card value var exists2 = false; var selected = false; var count2 = 0; var selectedValue = 0; var playFaceUp = false; //TODO Play the lowest playable card in the faceup deck (Works for 2) //individual elements var startButton = document.querySelector("input[value='Go! Go! Go!']"); var playRoundButton = document.querySelector("input[value*='Play Round']"); var playAgainButton = document.querySelector("input[value*='Play Again!!!']"); var continueButton = document.querySelector("input[value='Continue...']"); var playCardsButton = document.querySelector("input[value='Play Cards']"); var pickUpPileButton = document.querySelector("input[value='Pick Up Pile']"); var cardsStack = document.querySelector("tr:nth-of-type(6)>td>table>tbody>tr:nth-of-type(2)>td:nth-of-type(1)>img"); //lists of card elements var deck; var fullSet; var cardsHand = document.querySelectorAll("tr:nth-of-type(2)>td>table>tbody>tr>td>a>img:nth-of-type(1)"); var cardsFaceUp = document.querySelectorAll("tr:nth-of-type(4)>td:nth-of-type(2)>table>tbody>tr>td>a>img:nth-of-type(1)"); var cardsFaceDown = document.querySelector("tr:nth-of-type(4)>td:nth-of-type(1)>table>tbody>tr>td>a>img:nth-of-type(1)"); //Random timeout before any actions done console.log("Waiting for " + waitTime/1000 + " seconds"); setTimeout(gogogo, waitTime); function gogogo() { //If no game/game finished, press button to start game if (startButton != null) startButton.click(); //Go! Go! Go! if (playRoundButton != null) playRoundButton.click(); //Play Round # if (playAgainButton != null) playAgainButton.click(); //Play Again //Gameplay //If not your turn, press continue if (continueButton != null) continueButton.click(); //Continue... //If it's your turn... //Get value of top card in stack var active = parseInt(patt.exec(cardsStack.getAttribute("src"))); console.log("Active card: " + active); //Determine which hand to work with if (cardsHand.length > 0) { //hand console.log("Playing from hand"); deck = parseCards(cardsHand); fullSet = find4(cardsHand, active, deck); if (fullSet == null) playCard(cardsHand, active, deck); if (!selected && exists2) wildCardCheck(cardsHand, active); } else if (cardsFaceUp.length > 0) { //face up console.log("Playing from face up"); playFaceUp = true; deck = parseCards(cardsFaceUp); playCard(cardsFaceUp, active, deck); if (!selected && exists2) wildCardCheck(cardsFaceUp, active); } else { //face down console.log("Playing from face down"); cardsFaceDown.click(); selected = true; } //Finish turn if (selected) { console.log("Card has been played"); if (playCardsButton != null) playCardsButton.click(); } else { console.log("Have to pick up pile"); if (pickUpPileButton != null) pickUpPileButton.click(); } } function wildCardCheck(hand, active) { if (count2 == hand.length && !playFaceUp) { //If the entire hand is just 2s, select all of them for (var i = 0; i < hand.length; i++) { hand[i].click(); selected = true; } } else { for (var j = 0; j < hand.length; j++) { //Else only select the first one var card = parseInt(patt.exec(hand[j].getAttribute("src"))); if (card == 2 && !selected) { hand[j].click(); selected = true; } } } } function parseCards(hand) { var deck = []; for (var i = 0; i < hand.length; i++) { var card = parseInt(patt.exec(hand[i].getAttribute("src"))); deck.push(card); } //deck.sort(function(a, b){return a-b}); return deck; } function find4(hand, active, deck) { //If 4 of a playable number is found in the deck, return that number var num = 0; var occur = 0; for (var i = 0; i < deck.length; i++) { //If number changes, reset count and start counting new number if (deck[i] != num) { num = deck[i]; occur = 1; } else { //Number hasn't changed and another occurence has been found occur++; } //If 4 occurrences found, check if the number is playable if (occur == 4) { if (Number.isInteger(active)) { //Active card on stack if (active <= num) { if ((num % 2 == 0 && active != 3) || (num % 2 == 1 && active != 4)) { selected = true; selectedValue = num; hand[i].click(); hand[i-1].click(); hand[i-2].click(); hand[i-3].click(); return num; } } } else { //No card on stack selected = true; selectedValue = num; hand[i].click(); hand[i-1].click(); hand[i-2].click(); hand[i-3].click(); return num; } } } return null; } function playCard(hand, active, deck) { console.log(deck); for (var i = 0; i < hand.length; i++) { var card = deck[i]; if (Number.isInteger(active)) { //Active card on stack if (card == 3 && active <= 3) { if (selectedValue == 0 || (selectedValue == 3 && !playFaceUp)) { selected = true; selectedValue = 3; hand[i].click(); } } else if (card == 4 && active <= 4 && active != 3) { if (selectedValue == 0 || (selectedValue == 4 && !playFaceUp)) { selected = true; selectedValue = 4; hand[i].click(); } } else if (card == 5 && active <= 5 && active != 4) { if (selectedValue == 0 || (selectedValue == 5 && !playFaceUp)) { selected = true; selectedValue = 5; hand[i].click(); } } else if (card == 6 && active <= 6 && active != 3) { if (selectedValue == 0 || (selectedValue == 6 && !playFaceUp)) { selected = true; selectedValue = 6; hand[i].click(); } } else if (card == 7 && active <= 7 && active != 4) { if (selectedValue == 0 || (selectedValue == 7 && !playFaceUp)) { selected = true; selectedValue = 7; hand[i].click(); } } else if (card == 8 && active <= 8 && active != 3) { if (selectedValue == 0 || (selectedValue == 8 && !playFaceUp)) { selected = true; selectedValue = 8; hand[i].click(); } } else if (card == 9 && active <= 9 && active != 4) { if (selectedValue == 0 || (selectedValue == 9 && !playFaceUp)) { selected = true; selectedValue = 9; hand[i].click(); } } else if (card == 10 && active <= 10 && active != 3) { if (selectedValue == 0 || (selectedValue == 10 && !playFaceUp)) { selected = true; selectedValue = 10; hand[i].click(); } } else if (card == 11 && active <= 11 && active != 4) { //Jack if (selectedValue == 0 || (selectedValue == 11 && !playFaceUp)) { selected = true; selectedValue = 11; hand[i].click(); } } else if (card == 12 && active <= 12 && active != 3) { //Queen if (selectedValue == 0 || (selectedValue == 12 && !playFaceUp)) { selected = true; selectedValue = 12; hand[i].click(); } } else if (card == 13 && active <= 13 && active != 4) { //King if (selectedValue == 0 || (selectedValue == 13 && !playFaceUp)) { selected = true; selectedValue = 13; hand[i].click(); } } else if (card == 14 && active != 3) { //Ace if (selectedValue == 0 || (selectedValue == 14 && !playFaceUp)) { selected = true; selectedValue = 14; hand[i].click(); } } else if (card == 2 && active != 3) { exists2 = true; count2++; } } else { //Stack is empty and any card can by played if (card == 3) { if (selectedValue == 0 || (selectedValue == 3 && !playFaceUp)) { selected = true; selectedValue = 3; hand[i].click(); } } else if (card == 4) { if (selectedValue == 0 || (selectedValue == 4 && !playFaceUp)) { selected = true; selectedValue = 4; hand[i].click(); } } else if (card == 5) { if (selectedValue == 0 || (selectedValue == 5 && !playFaceUp)) { selected = true; selectedValue = 5; hand[i].click(); } } else if (card == 6) { if (selectedValue == 0 || (selectedValue == 6 && !playFaceUp)) { selected = true; selectedValue = 6; hand[i].click(); } } else if (card == 7) { if (selectedValue == 0 || (selectedValue == 7 && !playFaceUp)) { selected = true; selectedValue = 7; hand[i].click(); } } else if (card == 8) { if (selectedValue == 0 || (selectedValue == 8 && !playFaceUp)) { selected = true; selectedValue = 8; hand[i].click(); } } else if (card == 9) { if (selectedValue == 0 || (selectedValue == 9 && !playFaceUp)) { selected = true; selectedValue = 9; hand[i].click(); } } else if (card == 10) { if (selectedValue == 0 || (selectedValue == 10 && !playFaceUp)) { selected = true; selectedValue = 10; hand[i].click(); } } else if (card == 11) { //Jack if (selectedValue == 0 || (selectedValue == 11 && !playFaceUp)) { selected = true; selectedValue = 11; hand[i].click(); } } else if (card == 12) { //Queen if (selectedValue == 0 || (selectedValue == 12 && !playFaceUp)) { selected = true; selectedValue = 12; hand[i].click(); } } else if (card == 13) { //King if (selectedValue == 0 || (selectedValue == 13 && !playFaceUp)) { selected = true; selectedValue = 13; hand[i].click(); } } else if (card == 14) { //Ace if (selectedValue == 0 || (selectedValue == 14 && !playFaceUp)) { selected = true; selectedValue = 14; hand[i].click(); } } else if (card == 2) { exists2 = true; count2++; } } } }