Sends custom messages to an account and logs received customs
当前为
// ==UserScript==
// @name IdlePixel Custom Interactor
// @namespace lbtechnology.info
// @version 1.1.0
// @description Sends custom messages to an account and logs received customs
// @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 CustomInteractorPlugin extends IdlePixelPlusPlugin {
constructor() {
super("custominteractor", {
about: {
name: GM_info.script.name,
version: GM_info.script.version,
author: GM_info.script.author,
description: GM_info.script.description
},
config: [
{
id: "receiver",
label: "Account to send custom messages to.",
type: "string",
max: 2000,
default: ""
}
]
});
this.previous = "";
}
createPanel(){
IdlePixelPlus.addPanel("interactor", "Custom Message Interactor", function() {
let content = "<div>";
content += "<br/>"
content += `<form onsubmit='event.preventDefault(); IdlePixelPlus.plugins.custominteractor.sendCustom()'>`
content += `<label for='interactor_command_in'><strong>Custom Command:  </strong></label>`
content += `<input type="text" id="interactor_command_in" name="interactor_command_in"><br><br>`
content += `<input type="submit" value="Send">`
content += `</form>`
content += "</div>";
return content;
});
}
onLogin(){
const onlineCount = $(".top-bar .gold:not(#top-bar-admin-link)");
onlineCount.before(`
<a href="#" class="hover float-end link-no-decoration" onclick="event.preventDefault(); IdlePixelPlus.setPanel('interactor')" title="Custom Message Interactor">Custom </a>
`);
this.createPanel()
}
onCustomMessageReceived(player, content, callbackId) {
console.log(`${player}: ${content}`)
}
sendCustom(){
const receiver = this.getConfig("receiver")
const customPrompt = $("#interactor_command_in").val()
$("#interactor_command_in").val("")
const content = `interactor:${customPrompt}`
const payload = {
content: content,
onResponse: function(player, content, callbackId) {
return true;
},
onOffline: function(player, content) {
console.log(content)
},
timeout: 2000 // callback expires after 2 seconds
}
IdlePixelPlus.sendCustomMessage(receiver, payload)
}
}
const plugin = new CustomInteractorPlugin();
IdlePixelPlus.registerPlugin(plugin);
})();