您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds customizable keybinds for panel switching and casting spells in combat.
- // ==UserScript==
- // @name IdlePixel Keybinds
- // @namespace com.anwinity.idlepixel
- // @version 1.0.0
- // @description Adds customizable keybinds for panel switching and casting spells in combat.
- // @author Anwinity
- // @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';
- const SPELL_DEFAULTS = {
- heal: "h",
- fire: "f",
- reflect: "r",
- invisibility: "i"
- };
- const SPELLS = Object.keys(Magic.spell_info);
- const PANELS = ["keyitems", "mining", "crafting", "gathering", "farming", "brewing", "woodcutting", "cooking", "fishing", "combat", "combat-canvas", "quests", "settings", "shop", "player-market", "donor-shop", "achievements", "idlepixelplus"];
- let SPELL_MAPPING = {};
- let PANEL_MAPPING = {};
- class KeyBindPlugin extends IdlePixelPlusPlugin {
- constructor() {
- super("keybinds", {
- about: {
- name: GM_info.script.name,
- version: GM_info.script.version,
- author: GM_info.script.author,
- description: GM_info.script.description + `<br />In general, lowercase letters map to their respective keys. For other keys, check out <a href="https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values">this page</a>. Note that this does NOT use KeyboardEvent.keyCode, it uses KeyboardEvent.key.`
- },
- config: [
- {
- label: "Combat Spells",
- type: "label"
- },
- ... SPELLS.map(spell => {
- return {
- id: spell,
- label: spell,
- type: "string",
- default: SPELL_DEFAULTS[spell]||""
- }
- }),
- {
- label: "Panel Switching",
- type: "label"
- },
- ...PANELS.map(panel => {
- return {
- id: panel,
- label: panel,
- type: "string",
- default: ""
- }
- })
- ]
- });
- }
- onConfigsChanged() {
- SPELL_MAPPING = {};
- PANEL_MAPPING = {};
- SPELLS.forEach(spell => {
- let key = this.getConfig(spell);
- if(key) {
- SPELL_MAPPING[key] = spell;
- }
- });
- PANELS.forEach(panel => {
- let key = this.getConfig(panel);
- if(key) {
- PANEL_MAPPING[key] = panel;
- }
- });
- }
- handleKeyEvent(event) {
- if(event.key in SPELL_MAPPING) {
- if(Globals.currentPanel == "panel-combat-canvas") {
- const spell = SPELL_MAPPING[event.key];
- IdlePixelPlus.sendMessage(`SPELL=${spell}`);
- }
- }
- if(event.key in PANEL_MAPPING) {
- const focused = document.activeElement;
- if(!focused || !["INPUT", "SELECT"].includes((focused.tagName||"").toUpperCase())) {
- const panel = PANEL_MAPPING[event.key];
- if(panel == "combat-canvas") {
- if(Combat.in_combat()) {
- IdlePixelPlus.setPanel(panel);
- }
- }
- else {
- IdlePixelPlus.setPanel(panel);
- }
- }
- }
- }
- onLogin() {
- const self = this;
- document.addEventListener("keyup", e => {
- this.handleKeyEvent(e);
- });
- this.onConfigsChanged();
- }
- }
- const plugin = new KeyBindPlugin();
- IdlePixelPlus.registerPlugin(plugin);
- })();