您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Patches ws connection to hook set-word-points rpc
当前为
- // ==UserScript==
- // @name Points Patch
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description Patches ws connection to hook set-word-points rpc
- // @author EnergoStalin
- // @match https://meme-police.ru/bg/alias
- // @icon https://www.google.com/s2/favicons?sz=64&domain=meme-police.ru
- // @license GPL3
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- let change = 0;
- let enable = true;
- let enableOnEnd = true;
- let state = null;
- window.addEventListener('keydown', function(e) {
- if(e.keyCode === 37) { // ARROWLEFT
- change = 0;
- } else if(e.keyCode === 39) { // ARROWRIGHT
- change = 1;
- } else if(e.keyCode === 220) { // BACKSLASH
- enable = !enable;
- } else if(e.key === "|") {
- enableOnEnd = !enableOnEnd;
- }
- });
- const hookMethods = {
- 'set-word-points': function(data) {
- if(!enable) return data;
- for(let i = 0; i < data.length; i++) {
- data[i].points = change;
- }
- return data;
- }
- }
- const listeners = {
- 'timer-end': function(ws) {
- if(!enableOnEnd) return;
- const words = JSON.parse(JSON.stringify(state.currentWords))
- for(let i = 0; i < words.length; i++) {
- words[i].points = 0;
- }
- sendRpc(ws, 'set-word-points', words);
- },
- 'state': function(_, data) {
- state = data;
- }
- }
- WebSocket.prototype.send = new Proxy(WebSocket.prototype.send, {
- apply: function (target, scope, args) {
- if(!scope.hooked) { // Apply listeners
- scope.addEventListener('message', (msg) => {
- const data = JSON.parse(msg.data);
- listeners[data.a[0]]?.(scope, data.a[1]);
- })
- scope.hooked = true;
- }
- if (typeof (args[0]) === 'string') {
- let json = JSON.parse(args[0]);
- json.a[1] = hookMethods[json.a[0]]?.(json.a[1]) ?? json.a[1];
- return target.apply(scope, [JSON.stringify(json), ...args.splice(0, 1)])
- }
- return target.apply(scope, args);
- }
- });
- const sendRpc = function(ws, method, payload) {
- ws.send(JSON.stringify({ a: { 0: method, 1: payload }, c: '/bg/alias' }))
- }
- })();