您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
show desktop notifications
当前为
// jscs:disable // ==UserScript== // @name Notifications // @namespace https://*.waysofhistory.com/ // @version 0.1 // @description show desktop notifications // @author menya // @match https://*.waysofhistory.com/* // @exclude https://ruforum.waysofhistory.com/ // @exclude https://ru.waysofhistory.com/ // @grant none // ==/UserScript== (function () { var REPORT_TYPE = { 0: 'Научный отчет', 1: 'Основание нового города', 2: 'Финансы', 6: 'Финансы', 7: 'Финансы', 17: 'Финансы', 18: 'Финансы', 31: 'Финансы', 3: 'Военный отчет', 4: 'Дипломатия', 5: 'Остановка мира', 8: 'Торговый отчет', 16: 'Торговый отчет', 25: 'Торговый отчет', 26: 'Торговый отчет', 30: 'Торговый отчет', 9: 'Платеж', 10: 'Ветер Удачи', 11: 'Перечисление Монет Удачи', 12: 'Торговое предложение', 13: 'Заселение', 14: 'Поздравление', 15: 'Бонус-код', 19: 'Военный отчет', 20: 'Военный отчет', 21: 'Военный отчет', 22: 'Отчет о подкреплении', 23: 'Отчет казначейства', 24: 'Отчет о транспортировке', 27: 'Голод', 28: 'Дипломатия', 29: 'Разведка', 32: 'Управление городом' }; Account.prototype.isPremium = function () { return true; }; Notification.requestPermission(); function wsdecorator(func) { return function () { try { var message = JSON.parse(arguments[0].data); switch (message.type) { case 10: if (message.data.writer[0] !== servodata.account.id) { new Notification('Новое сообщение от ' + message.data.writer[1], {body: message.data.text}); } break; case 3: new Notification('Новый ' + REPORT_TYPE[message.data.type] + ' отчет!'); break; case 14: if (message.data.clickers && message.data.clickers.add) { new Notification('Новые таблички!', {body: JSON.stringify(message.data.clickers)}); } else if (message.data.build) { new Notification('Что-то достроили', {body: JSON.stringify(message.data.build)}); } break; } } catch (e) { new Notification('Возникла ошибка:', {body: e}); } finally { func.apply(this, arguments); } }; } try { webSocketMgr.ws.onmessage = wsdecorator(webSocketMgr.ws.onmessage); } catch (e) { new Notification('Возникла ошибка', {body: e}); } })();