您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Rain Notifications
当前为
- // ==UserScript==
- // @name Gamdom Notify
- // @description Rain Notifications
- // @version 2.4
- // @author Pytness
- // @match *://gamdom.com/*
- // @namespace https://greasyfork.org/scripts/35717-gamdom-notify/
- // @update https://greasyfork.org/scripts/35717-gamdom-notify/code/Gamdom%20Notify.user.js
- // @resource CoinAudioData https://raw.githubusercontent.com/Pytness/Gamdom-Notify/master/CoinSound.mp3
- // @run-at document-start
- // @grant GM_info
- // @grant GM_notification
- // @grant GM_getResourceURL
- // @grant unsafeWindow
- // @license Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
- // ==/UserScript==
- (function (w) {
- 'use strict';
- const log = w.console.log.bind();
- // NOTE: Creates a ascii box
- const box = (a, b = 0) => {
- let d, c = '';
- a.forEach(e => b = e.length > b ? e.length : b);
- d = '+'.padEnd(b, '=') + '+';
- a.forEach(e => c += '|' + e.padEnd(b - 1, ' ') + '|\n');
- return d + '\n' + c + d;
- };
- ///////////////////////////////////////////////////////////////////////////
- const initMessage = box([
- ' Gamdom Rain Notify:', '',
- ' Ver: ' + GM_info.script.version,
- ' By ' + GM_info.script.author, '',
- ], 40);
- const NData = { // Notification data
- title: "Gamdom Rain Notify:",
- text: "its raining :D",
- highlight: true,
- timeout: 5000
- };
- ///////////////////////////////////////////////////////////////////////////
- const CoinAudioData = GM_getResourceURL('CoinAudioData')
- .replace('application', 'audio/mp3');
- const CoinSound = new Audio(CoinAudioData); // Load Audio
- const notificate = () => {
- CoinSound.play();
- GM_notification(NData);
- };
- ///////////////////////////////////////////////////////////////////////////
- const extractData = (a, b = false) => {
- try {
- b = JSON.parse(a.split(',').slice(1).join());
- } finally {
- return b;
- }
- };
- const manageMessages = (a) => {
- var b = extractData(a.data);
- if(b[0] == 'activateRain') notificate();
- };
- ///////////////////////////////////////////////////////////////////////////
- /* NOTE: HijackWebsocket is imported (and modified)
- * from https://github.com/Pytness/Hijack-Websocket
- */
- const HijackWebsocket = () => {
- const WS = w.WebSocket;
- w.WebSocket = function (...argv) {
- let hws = new WS(...argv);
- hws.addEventListener('message', manageMessages);
- log('Intercepted new WebSocket conection', 'info');
- return hws;
- };
- log('WebSocket constructor hijacked', 'ok');
- w.WebSocket.prototype = WS.prototype;
- w.WebSocket.__proto__ = WS.__proto__;
- w.WebSocket = Function.prototype.call.apply(Function.prototype.bind, [w.WebSocket]);
- log('Hijacked WebSocket secured', 'ok');
- log('Waiting for WebSocket creation...', 'info');
- };
- ///////////////////////////////////////////////////////////////////////////
- const init = () => {
- // NOTE: Log on console Script info
- log(initMessage);
- // NOTE: Hijack the WebSocket constructor
- HijackWebsocket();
- };
- init();
- }(unsafeWindow));