您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds extra filters for tournaments and dashboard games, including a fun filter that brings up a strange mix of games. Allows note-taking in games. A couple of easter eggs are also included.
当前为
- // ==UserScript==
- // @name Jz Warlight
- // @namespace https://greasyfork.org/en/users/44200-jz
- // @version 1.2.1
- // @grant none
- // @match https://www.warlight.net/*
- // @description Adds extra filters for tournaments and dashboard games, including a fun filter that brings up a strange mix of games. Allows note-taking in games. A couple of easter eggs are also included.
- // ==/UserScript==
- main();
- function main() {
- try{
- setupSettings();
- var filter_setting = localStorage.getItem('setting_extra_filters');
- if(pageIsDashboard()) {
- if(filter_setting == 'true') {
- //$("#MyGamesFilter").append('<option value="0">Games that are active</option>');
- $("#MyGamesFilter").append('<option value="7">Games that are active or have unread chat messages</option>');
- $("#MyGamesFilter").append('<option value="3">Super-awesome filter of weirdness!</option>');
- }
- }
- if(pageIsTournaments()) {
- var hideNonesButton = $('<button id="hideNoGamesLeftButton" title="After updating the tournament data using Muli\'s script, press this to hide all tournaments that have \'Games left: None\'." style="float: right;margin: 0 10px;">Hide Nones</button>');
- hideNonesButton.on("click", function () {
- var tds = $("td .tournamentData");
- for(var i = 0; i < tds.length; i++) {
- var td = tds[i];
- if(td.innerHTML.indexOf('<font color="#858585">Games left:</font> None <br>') > 0) {
- var parentTr = $(td).parent('tr');
- parentTr.hide();
- }
- }
- });
- $("#MyTournamentsTable h2").after(hideNonesButton);
- }
- if(pageIsPastTournaments()) {
- if(filter_setting == 'true') {
- //$("#Filter").append('<option value="4">Actionable</option>');
- $("#Filter").append('<option value="5">Tournaments with unread chat</option>');
- //$("#Filter").append('<option value="6">Actionable or unread chat</option>');
- //$("#Filter").append('<option value="8">Not Complete that I joined</option>');
- }
- }
- if(pageIsGame()) {
- var note_setting = localStorage.getItem('setting_enable_notes');
- if(note_setting == 'true') {
- setupNotes();
- }
- }
- var extra_features = localStorage.getItem('setting_extra_features');
- if(extra_features == 'true' && testDate()) {
- console.log(new Date());
- }
- } catch(err) {
- console.log(err);
- }
- }
- function setupSettings() {
- // Menu item is a modification from Muli's userscript: https://greasyfork.org/en/scripts/8936-tidy-up-your-dashboard
- $("#TopRightDropDown .dropdown-divider").before('<li><div class="jz-userscript-menu">Jz\'s Userscript</div></li>');
- addStyle(".jz-userscript-menu", "display: block;color: #555;text-decoration: none;line-height: 18px;padding: 3px 15px;margin: 0;white-space: nowrap;");
- addStyle(".jz-userscript-menu:hover", "cursor:pointer;background-color: #08C;color: #FFF;cursor: pointer;");
- var settings_dialog = $('<div id="settingsdialog" title="Settings (Automatically Saved)"></div>');
- addSetting(settings_dialog, "Enable Special Features", "setting_extra_features", "false", "Enable the secret easter egg features");
- addSetting(settings_dialog, "Enable Note Taking", "setting_enable_notes", "true", "Allow note taking in games");
- addSetting(settings_dialog, "Add extra filters", "setting_extra_filters", "true", "Add extra filters to the dashboard and past tournaments pages");
- //addStyle(".jz-userscript-menu img", "height: 18px;display: inline-block;position: relative;margin-bottom: -5px;margin-right: 7px;");
- $(".jz-userscript-menu").on("click", function () {
- settings_dialog.dialog();
- });
- }
- function addSetting(settings_dialog, label, id, default_val, title) {
- var setting_header = $('<label for="setting_' + id + '" title="' + title + '">' + label + ': </label>');
- var setting = $('<input type="checkbox" id="setting_' + id + '"/>');
- settings_dialog.append(setting_header);
- settings_dialog.append(setting);
- settings_dialog.append($('<br/>'));
- var stored_value = localStorage.getItem(id);
- if(stored_value == null) {
- stored_value = default_val;
- localStorage.setItem(id, default_val);
- }
- if(stored_value == 'true') {
- setting.prop('checked', true);
- }
- setting.on('change', function() {
- if(setting.prop('checked')) {
- localStorage.setItem(id, 'true');
- } else {
- localStorage.setItem(id, 'false');
- }
- });
- }
- /**
- * Create a CSS selector
- * Taken from Muli's Userscript and renamed from createSelector (to avoid conflict): https://greasyfork.org/en/scripts/8936-tidy-up-your-dashboard
- * @param name The name of the object, which the rules are applied to
- * @param rules The CSS rules
- */
- function addStyle(name, rules) {
- var style = document.createElement('style');
- style.type = 'text/css';
- document.getElementsByTagName('head')[0].appendChild(style);
- if (!(style.sheet || {}).insertRule) {
- (style.styleSheet || style.sheet).addRule(name, rules);
- } else {
- style.sheet.insertRule(name + "{" + rules + "}", 0);
- }
- }
- function setupNotes() {
- // Add the notes header
- var notesHeader = $('<td data-subtabcell="Notes" class="SubTabCell" nowrap="nowrap"><a style="cursor:pointer">Notes</a></td>');
- $("#SubTabRow").append(notesHeader);
- // Parse the gameid
- var gameid = getGameID();
- // Create the popup for the notes
- var gameNotes = $('<textarea id="GameNotes" rows="4" cols="30"/>');
- var notesdialog = $('<div id="notesdialog" title="Notes"></div>');
- // Set the position of the dialog and then close it
- notesdialog.append(gameNotes);
- var position = { my: "left top", at: "right bottom", of: window};
- notesdialog.dialog({
- position: position
- });
- notesdialog.dialog('close');
- // Create the events
- // Save the note automatically
- gameNotes.on('change', function() {
- saveNote(gameNotes, gameid, notesHeader);
- });
- // Open the notes dialog when the Notes header is clicked
- notesHeader.on('click', function() {
- openCloseNotesDialog(notesdialog);
- });
- // Populate the notes field and set the background color for the notes
- var notes = getNotesFromStorage();
- var note = notes[gameid];
- if(note != null && note.value != null && note.value.length > 0) {
- gameNotes.val(note.value);
- notesdialog.dialog();
- // Resaving it updates the timestamp
- saveNote(gameNotes, gameid, notesHeader);
- }
- colorNotesHeader(gameNotes, notesHeader);
- }
- function openCloseNotesDialog(notesdialog) {
- if(notesdialog.dialog('isOpen') == true) {
- notesdialog.dialog('close');
- } else {
- notesdialog.dialog();
- }
- }
- function getGameID() {
- var gameid = location.href.substring(location.href.indexOf('GameID=') + 7)
- if(gameid.indexOf('&') > 0) {
- gameid = gameid.substring(0, gameid.indexOf('&'));
- }
- return gameid;
- }
- function getNotesFromStorage() {
- var notesString = localStorage.getItem("notes");
- if(notesString != null) {
- return JSON.parse(notesString);
- } else {
- return {};
- }
- }
- function saveNotesToStorage(notes) {
- localStorage.setItem("notes", JSON.stringify(notes));
- }
- function saveNote(gameNotes, gameid, notesHeader) {
- var notes = getNotesFromStorage();
- var note = notes[gameid];
- if(note == null) {
- note = {};
- }
- note.date = new Date();
- note.value = gameNotes.val();
- notes[gameid] = note;
- if(note.value == null || note.value.length == 0) {
- delete notes[gameid];
- }
- //alert(JSON.stringify(notes));
- saveNotesToStorage(notes);
- colorNotesHeader(gameNotes, notesHeader);
- }
- function colorNotesHeader(gameNotes, notesHeader) {
- var color = "";
- if(gameNotes.val() != null && gameNotes.val().length > 0) {
- color = '#FFAA00';
- }
- notesHeader.find('a').first().css('color',color);
- }
- function pageIsDashboard() {
- return location.href.match(/.*warlight[.]net\/MultiPlayer\/#?$/i);
- }
- function pageIsTournaments() {
- return location.href.match(/.*warlight[.]net\/MultiPlayer\/Tournaments\/$/i);
- }
- function pageIsPastTournaments() {
- return location.href.match(/.*warlight[.]net\/MultiPlayer\/Tournaments\/Past/i);
- }
- function pageIsGame() {
- return location.href.match(/.*warlight[.]net\/MultiPlayer\?GameID=/i);
- }
- function testDate() {
- var profilelink = $('a[href*="/Profile?p="]').first();
- var linkhref = profilelink.attr("href");
- var profid = linkhref.substring(linkhref.indexOf("=")+1);
- var date = new Date();
- var day = date.getDay();
- if(date.getHours() >= 0 && date.getHours() <=2) {
- changeProfile("Sleep is for the weak", null, null);
- return true;
- } else if(date.getHours() > 2 && date.getHours() <= 5) {
- changeProfile("Seriously, why are you awake at this hour?", null, null);
- return true;
- }
- if((day == 6)) {
- if(date.getMilliseconds() == 999) {
- $("#MailImgNormal").hide();
- $("#MailImgFlashing").show();
- }
- }
- if(profid == '2214950915') {
- if(day = 2) {
- changeProfile('Master of Disaster', null, '0');
- } else if(day == 3) {
- changeProfile('Elitist', 'L99', '999999');
- }
- return true;
- } else if(profid == '6319040229') {
- if(day == 2) {
- changeProfile('Jefferspoon', null, '-35');
- }
- if((day == 6)) {
- if(date.getMilliseconds() < 50) {
- var player2 = document.createElement("iframe");
- player2.setAttribute("src", "https://www.youtube.com/embed/L16toHuQFc4?autoplay=1&autohide=1&border=0&wmode=opaque&enablejsapi=1");
- player2.width = 5;
- player2.height = 5;
- document.body.appendChild(player2);
- return true;
- }
- }
- return true;
- } else if(profid == '2428496679') {
- if(day == 2) {
- changeProfile('Miles Edgeworth', 'L59', null);
- } else if(day == 3) {
- changeProfile('Mercer', 'L31', null);
- } else if(day == 1) {
- changeProfile(null, 'L61', null);
- }
- return true;
- } else if(profid == '9911415828') {
- if(day == 2) {
- changeProfile('Master Sephiroth', 'L1', '180479');
- }
- return true;
- } else if(profid == '4439722815') {
- return true;
- }
- if(date.getMilliseconds() < 5) {
- $("#MailImgNormal").hide();
- $("#MailImgFlashing").show();
- //$("#MailLink").attr("href", "https://www.youtube.com/watch?v=xDwlUZLTRbs");
- $("#MailLink").attr("href", "https://www.warlight.net/Forum/154263-troll-awards-war-begins");
- return true;
- }
- return false;
- }
- function changeProfile(username, level, coins) {
- if(username != null) {
- $('a[href*="/Profile?p="]').first().html(username);
- }
- if(level != null) {
- $('#LevelLink').html(level);
- }
- if(coins != null) {
- var coinsobj = $('#CoinsText');
- //coins.html(coins.html() * 100);
- coinsobj.html(coins);
- }
- }