您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fish with all your pets in one click
// ==UserScript== // @name Auto fishing // @namespace neopets // @version 2021.02.01 // @author jiejie // @description Fish with all your pets in one click // @match http://www.neopets.com/water/fishing.phtml // ==/UserScript== const $form = $("form[action='/water/fishing.phtml']"); $form.css({"height": "250px"}).before(`<button id="fish-all" class="button-default__2020 button-green__2020 btn-single__2020" type="button">Fish all</button>`); $("#fish-all").on("click", async function () { const delay = (min, max) => Math.floor(Math.random() * max) + min; $(this) .prop("disabled", true) .toggleClass("button-green__2020") .toggleClass("button-purple__2020") .html(`Processing...`); $form.html(` <style> #fish-result { margin: auto; text-align: center; border-collapse: collapse; border: 1px solid black; } #fish-result th, td { padding: 5px; } #fish-result tbody tr:nth-child(odd) { background-color : #dfdfdf; } </style> <table id="fish-result"> <thead> <tr> <th style="width: 150px;">Pet</th> <th style="width: 250px">Item</th> <th style="width: 150px">Skill level up?</th> </tr> </thead> <tbody></tbody> </table> `); const refck = $("body").html().match(/"_ref_ck":'(.{32})'/)[1]; $(this).html("Getting pet list..."); const pets = await getPetNames(); for (let i = 0; i < pets.length; i++) { $(this).html(`${pets[i]} fishing...`); const outcome = await goFish(pets[i]); $("#fish-result tbody").append(outcome); $(this).html(`Switching active pet...`); if (pets.length === 1) { // No need to switch pets if only one pet break; } if (i < pets.length - 1) { // Not last pet yet, switch to next pet await changePet(pets[i + 1]); } else { // Reached last pet, switch back to first pet await changePet(pets[0]); } } $(this) .html("Done!") .toggleClass("button-purple__2020") .toggleClass("button-green__2020"); //------------------------------------------------------------------------- // Functions //------------------------------------------------------------------------- function getPetNames() { return new Promise(resolve => { $.ajax({ type: "GET", url: "/index.phtml", success: data => { const response = $.parseHTML(data); let pets = []; $(response).find(".hp-carousel-pet").each(function (index, element) { const petname = $(element).attr("data-name"); pets.push(petname); }); resolve(pets); } }); }); } function changePet(pet) { return new Promise(resolve => { setTimeout(() => { $.ajax({ type: "POST", url: "/np-templates/ajax/changepet.php", data: { "_ref_ck": refck, "new_active_pet": pet }, success: data => { const response = JSON.parse(data); if (response["error"] === false) { resolve(); } } }); }, delay(100, 500)); }) } function goFish(pet) { return new Promise(resolve => { setTimeout(() => { $.ajax({ type: "POST", url: "/water/fishing.phtml", data: {"go_fish": "1"}, success: data => { const response = $.parseHTML(data); const outcome = $(response).find(".page-title__2020 ~ p").text(); const item = outcome.match(/\.{3}(.+?)!/)[1]; const level = (() => { let lvlup; try { lvlup = outcome.match(/increases to (\d+)/)[1]; } catch (e) { lvlup = "-"; } return lvlup; })(); resolve(`<tr><td><b>${pet}</b></td><td>${item}</td><td>${level}</td></tr>`); } }); }, delay(100, 500)); }) } });