您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Lets you hide every message except the whispers between you and another user
- // ==UserScript==
- // @name Whisper Filter
- // @namespace com.resterman
- // @version 0.3.0
- // @description Lets you hide every message except the whispers between you and another user
- // @author resterman
- // @match http://www.kongregate.com/games/*/*
- // @grant none
- // ==/UserScript==
- /* jshint esnext: true */
- (function() {
- 'use strict';
- checkHolodeck();
- })();
- function checkHolodeck() {
- if (typeof holodeck !== "undefined" && holodeck.ready) init();
- else setTimeout(checkHolodeck, 100);
- }
- function init() {
- 'use strict';
- Holodeck.prototype.showConversationWith = function (user) {
- if (this.whisperFilter && this.whisperFilter.user == user) this.showAllMessages();
- else this.showWhispersOnly(user);
- };
- Holodeck.prototype.showAllMessages = function () {
- var w = this.activeDialogue()._message_window_node;
- var prop = this.whisperFilter;
- w.select('.chat-message')
- .map(x => x.show())
- .reduce(() => [1])
- .map(x => w.scrollTop = prop.scrollTop);
- this.whisperFilter = null;
- };
- Holodeck.prototype.showWhispersOnly = function (user) {
- var w = this.activeDialogue()._message_window_node;
- this.whisperFilter = {
- [user?'user':'mostrandoTodosLosWhispers']: user?user:true,
- scrollTop: w.scrollTop
- };
- w.select('.chat-message')
- .map(x => x.hide())
- .filter(x => x.select('.whisper').length > 0)
- .filter(x => {
- var u = x.select('.username');
- return u.length > 0 && (!user||new RegExp(user, 'i').test(u[0].readAttribute('username')));
- })
- .map(x => x.show());
- };
- Holodeck.prototype.getWhisperUsers = function () {
- var users = this.activeDialogue()._message_window_node.select('.chat-message')
- .filter(x => x.select('.whisper').length > 0)
- .map(x => x.select('.username')[0].readAttribute('username').toLowerCase());
- return new Set(users);
- };
- ChatDialogue.MESSAGE_TEMPLATE.evaluateAntesDeWF=ChatDialogue.MESSAGE_TEMPLATE.evaluate;
- ChatDialogue.MESSAGE_TEMPLATE.evaluate=function(a){
- const regExp=/(<a.*onclick=")(.*(\('.{4,16}'\));return.*)/i;
- if(a.message) a.message=a.message.replace(regExp, '$1if(event.ctrlKey) holodeck.showConversationWith$3; else $2');
- return ChatDialogue.MESSAGE_TEMPLATE.evaluateAntesDeWF(a);
- };
- ChatDialogue.prototype.sendPrivateMessageAntesDeWF=ChatDialogue.prototype.sendPrivateMessage;
- ChatDialogue.prototype.sendPrivateMessage=function(a, b){
- this.sendPrivateMessageAntesDeWF(a, b);
- for(var room in this._holodeck._chat_window._rooms._object){
- if(this._holodeck._chat_window._rooms._object[room]._chat_dialogue!=this){
- this._holodeck._chat_window._rooms._object[room]._chat_dialogue.displayMessage(a, b, {"class": "whisper sent_whisper"}, {"private": !0});
- }
- }
- };
- holodeck.whisperFilter=null;
- holodeck.addChatCommand('wf', function (a, b) {
- var args = b.split(' ');
- if (args.length >= 2) {
- var username = null;
- for (var user of holodeck.getWhisperUsers()) {
- if (new RegExp('^' + args[1].toLowerCase(), 'i').test(user)) {
- username = user;
- break;
- }
- }
- if (username) {
- holodeck.showConversationWith(username.toLowerCase());
- } else {
- holodeck.activeDialogue().displayMessage(
- "Whisper Filter",
- "You have no whispers with " + args[1],
- {"class": "whisper received_whisper"},
- {non_user: !0}
- );
- }
- }
- else if(holodeck.whisperFilter && (holodeck.whisperFilter.user || holodeck.whisperFilter.mostrandoTodosLosWhispers)) holodeck.showAllMessages();
- else if(!holodeck.getWhisperUsers().size) holodeck.activeDialogue().displayMessage(
- "Whisper Filter",
- "You have no whispers",
- {"class": "whisper received_whisper"},
- {non_user: !0}
- );
- else holodeck.showConversationWith();
- return !1;
- });
- }