您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Opens x amount of bait at once and collates the loot
// ==UserScript== // @name IdlePixel Bait Thrower // @namespace lbtechnology.info // @version 1.0.5 // @description Opens x amount of bait at once and collates the loot // @author Lux-Ferre // @license MIT // @match *://idle-pixel.com/login/play* // @grant none // @require https://greasyfork.org/scripts/441206-idlepixel/code/IdlePixel+.js?anticache=20220905 // ==/UserScript== (function() { 'use strict'; class BaitPlugin extends IdlePixelPlusPlugin { constructor() { super("baitplugin", { about: { name: GM_info.script.name, version: GM_info.script.version, author: GM_info.script.author, description: GM_info.script.description }, }); this.tracking_bait = false this.total_bait_loots = 0 this.bait_counter = 0 this.bait_loot = {} } onLogin(){ $(`itembox[data-item="bait"]`).attr("onClick", "IdlePixelPlus.plugins.baitplugin.open_input_dialogue('BAIT')") $(`itembox[data-item="super_bait"]`).attr("onClick", "IdlePixelPlus.plugins.baitplugin.open_input_dialogue('SUPER_BAIT')") $(`itembox[data-item="mega_bait"]`).attr("onClick", "IdlePixelPlus.plugins.baitplugin.open_input_dialogue('MEGA_BAIT')") } onMessageReceived(data){ if(this.tracking_bait && data.startsWith("OPEN_LOOT_DIALOGUE")){ const values = data.split("=")[1] const values_array = values.split("~") const items = this.parseItemData(values_array) this.bait_loot = this.addToLoot(this.bait_loot, items) this.bait_counter++; if (this.bait_counter>=this.total_bait_loots){ this.tracking_bait = false this.createLootPopup() } } } open_input_dialogue(bait_type){ const prettyBaitName = bait_type.toLowerCase().split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' '); document.getElementById("modal-input-image").src = get_image(`images/${bait_type.toLowerCase()}.png`); document.getElementById("modal-input-description").innerHTML = `How many ${prettyBaitName} do you want to throw?`; document.getElementById("modal-input-text").value = 0; document.getElementById("modal-input-button-text").innerHTML = "Throw!"; document.getElementById("modal-input-button").onclick = function() { IdlePixelPlus.plugins.baitplugin.throwBait(bait_type, parseInt(document.getElementById("modal-input-text").value)); } Modals.toggle("modal-item-input"); } throwBait(bait_type, num){ this.bait_counter = 0; this.bait_loot = {} this.tracking_bait = true const currentBait = window[`var_${bait_type.toLowerCase()}`] if(num > currentBait){ this.total_bait_loots = currentBait } else { this.total_bait_loots = num } for (let i = 0; i < this.total_bait_loots; i++) { websocket.send(`THROW_${bait_type}`); } } addToLoot(totalLoot, newLoot){ for (let [itemName, value] of Object.entries(newLoot)) { if (totalLoot.hasOwnProperty(itemName)){ totalLoot[itemName].number = totalLoot[itemName].number + value.number } else { totalLoot[itemName] = value } } return totalLoot } parseItemData(values_array){ const items = {} let background = "" for(let i = 2; i < values_array.length; i+=0){ const image = values_array[i]; i++; let [number, ...label] = values_array[i].split(" "); number = parseInt(number) label = label.join(" ") i++; background = values_array[i]; i++; items[image] = { number: number, label: label, background: background } } return items } createLootPopup(){ const images = []; const labels = []; const background = []; for (let [itemName, value] of Object.entries(this.bait_loot)){ images.push(itemName); const newLabel = `${value.number} ${value.label}` labels.push(newLabel); background.push(value.background); } this.open_loot_dialogue(images, labels, background); } open_loot_dialogue(loot_images_array, loot_labels_array, loot_background_color_array){ const loot_body = document.getElementById("modal-loot-body"); let html = ""; for(let i = 0; i < loot_images_array.length; i++) { let image = loot_images_array[i]; let label = loot_labels_array[i]; let background_color = loot_background_color_array[i]; if(!isNaN(label)) label = "+" + format_number(label); if(label.endsWith("(NEW)")) { label = label.substring(0, label.length-5); label += " <img class='blink' src='https://idlepixel.s3.us-east-2.amazonaws.com/images/new.png' />" } if(label.endsWith("(UNIQUE)")) { label = label.substring(0, label.length-8); label += " <img class='blink' src='https://idlepixel.s3.us-east-2.amazonaws.com/images/unique.png' />" } html += "<div class='loot' style='background-color:"+background_color+"'>"; html += "<img src='https://idlepixel.s3.us-east-2.amazonaws.com/"+image+"' class='w50 me-3' />"; html += label; html += "</div>"; } loot_body.innerHTML = html; if($('#modal-loot:visible').length == 0){ Modals.toggle("modal-loot"); } } } const plugin = new BaitPlugin(); IdlePixelPlus.registerPlugin(plugin); })();