NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Wofh Linker Addon // @namespace https://ru.waysofhistory.com/ // @version 0.5 // @description Enables copying of game links and helps the game to open them. // @author Regis // @match https://*.waysofhistory.com/ // @match https://*.waysofhistory.com/gen/html/* // @grant unsafeWindow // @grant window.close // @grant window.focus // @license MIT // ==/UserScript== (function() { 'use strict'; // Stopflag to turn the addon off if needed if (unsafeWindow.disableWofhLinkerAddon) { return; } // This way game can know that user has the addon unsafeWindow.wofhLinkerAddon = true; if (window.location.pathname === '/' && !window.title && window === window.top && !unsafeWindow.jQuery) { // Seems like we on the "error: 9" page if (document.body.innerHTML.trim().indexOf('{"error":9}') >= 0) { var hash = window.location.hash; if (hash) { var reportPrefix = '#/report/'; if (hash.indexOf(reportPrefix) === 0) { // Report link => just fix the link window.location = '/report#' + hash.substring(reportPrefix.length); } else { passHashToGame(hash); } } } return; } if (window.location.pathname.indexOf("/gen/html/") === 0 && window !== window.top && unsafeWindow.jQuery && unsafeWindow.HashMgr && unsafeWindow.appl) { // Seems like we in the game page setupHashMessageListener(); } function passHashToGame(hash) { var message = JSON.stringify({ event: 'hash_from_link', hash: hash, server: window.location.host }); var bc = new BroadcastChannel('regis_wofh_linker_addon'); bc.postMessage(message); bc.close(); /* var e = document.createElement('div'); e.innerHTML = "WofhLinkerAddon by Regis: Ссылка передана в игру (если она открыта)."; document.body.append(e); */ window.close(); } function disableLinkHiding() { // Turn off the code that hides links // Note: that can remove some unwanted handlers too! Is there a way to remove specific handler? // Investigate: $._data( document, "events" ).mousedown // $._data( document, "events" ).mousedown[0].handler.toString() проверять на текст "Не запрещаем создания новой вкладки для боя если параметр platform.battletabs истина" var $ = unsafeWindow.jQuery; var selector = 'a'; if (unsafeWindow.ls.getGameIf() == unsafeWindow.Appl.interface.simplified) { selector += ',area'; } if (unsafeWindow.hashMgr) { // App initialized - turn off the event handler $(document).off('mousedown', selector); } else { // App is not ready yet. Catch listener. var original_onTmplLoaded = unsafeWindow.Appl3.prototype.onTmplLoaded; unsafeWindow.Appl3.prototype.onTmplLoaded = function () { original_onTmplLoaded.apply(this, arguments); $(document).off('mousedown', selector); }; } } function setupHashMessageListener() { var bc = new BroadcastChannel('regis_wofh_linker_addon'); bc.onmessage = function (ev) { var data = JSON.parse(ev.data); if (data.event === 'hash_from_link' && data.server === window.location.host) { //alert(data.hash); if (unsafeWindow.hashMgr) { window.location.hash = data.hash; unsafeWindow.hashMgr.parse(); window.focus(); } } }; //alert("Listener enabled"); disableLinkHiding(); } })();