您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Rulesy's flashingEscortButton
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/31202/204644/flashingEscortButton.js
var modules = modules || {}; modules.flashingEscortButton = { name: 'Flashing Escort Button', description: 'Makes your escort button flash, to remind you to click it!', icon: '/gfx/icons/small_escort.gif', pages: 'outside', defaults: { background1: '#FF0000', background2: '#FFFF00', textColour1: '#FFFF00', textColour2: '#FF0000' }, init: function() { this.setButtonStyles(); }, config: function() { var content; content = '<h2>Options</h2>'; content += '<ul id="modules-flashingEscortButton-config-colours">'; content += '<li class="color" data-id="background1">'; content += '<label>Background colour #1</label>'; content += '<div class="demo"></div>'; content += '<div class="arrow"></div>'; content += '<input disabled="disabled">'; content += '</li>'; content += '<li class="color" data-id="background2">'; content += '<label>Background colour #2</label>'; content += '<div class="demo"></div>'; content += '<div class="arrow" style="display: none"></div>'; content += '<input style="display: none" disabled="disabled">'; content += '</li>'; content += '<li class="color" data-id="textColour1">'; content += '<label>Text colour #1</label>'; content += '<div class="demo"></div>'; content += '<div class="arrow" style="display: none"></div>'; content += '<input style="display: none" disabled="disabled">'; content += '</li>'; content += '<li class="color" data-id="textColour2">'; content += '<label>Text colour #2</label>'; content += '<div class="demo"></div>'; content += '<div class="arrow" style="display: none"></div>'; content += '<input style="display: none" disabled="disabled">'; content += '</li>'; content += '<li>'; content += '<div class="slider"></div><div class="sliderText"></div>'; content += '</li>'; content += '</ul>'; content += '<div id="modules-flashingEscortButton-config-colourpicker" data-id="background1"></div>'; content += '<a class="button modules-flashingEscortButton-config-escortButton"><img alt="" src="http://data.die2nite.com/gfx/icons/small_escort.gif"> Wait for an escort</a>'; return content; }, configInit: function() { modules.flashingEscortButton.setButtonStyles(); $('.slider').slider({ value: localStorage.getItem('modules.flashingEscortButton.config.speed') || '2', min: 0, max: 5, slide: function( event, ui ) { var speed; localStorage.setItem('modules.flashingEscortButton.config.speed', ui.value); speed = modules.flashingEscortButton.getSpeed() $('#modules-flashingEscortButton-config-colours .sliderText').html(speed + ' second' + (speed == '1' ? '' : 's')); modules.flashingEscortButton.setButtonStyles(); } }); modules.flashingEscortButton.config.picker = $.farbtastic('#modules-flashingEscortButton-config-colourpicker', function() { var color = this.color.toUpperCase(); var id = $('#modules-flashingEscortButton-config-colourpicker').attr('data-id'); $('#modules-flashingEscortButton-config-colours li[data-id="' + id + '"] input').css({ 'backgroundColor': color, 'color': modules.flashingEscortButton.contrast(color) }).val(color); if (color.match(/^#[0-9A-Fa-f]{6}/)) { localStorage.setItem('modules.flashingEscortButton.' + id, color); modules.flashingEscortButton.setButtonStyles(); } }) var color = localStorage.getItem('modules.flashingEscortButton.background1') || modules.flashingEscortButton.defaults.background1; modules.flashingEscortButton.config.picker.setColor(color); $('#wee').css({ 'backgroundColor': color, 'color': modules.flashingEscortButton.contrast(color) }).val(color); $('#modules-flashingEscortButton-config-colours li.color').off().on('click', function() { var id; var color; id = $(this).attr('data-id'); color = localStorage.getItem('modules.flashingEscortButton.' + id) || modules.flashingEscortButton.defaults[id]; $('#modules-flashingEscortButton-config-colours .arrow, #modules-flashingEscortButton-config-colours input').hide(); $('#modules-flashingEscortButton-config-colourpicker').attr('data-id', id); modules.flashingEscortButton.config.picker.setColor(color); $('input', this).css({ 'backgroundColor': color, 'color': modules.flashingEscortButton.contrast(color) }).val(color); $('.arrow, input', this).show(); }) modules.flashingEscortButton.setButtonStyles(); speed = modules.flashingEscortButton.getSpeed(); $('#modules-flashingEscortButton-config-colours .sliderText').html(speed + ' second' + (speed == '1' ? '' : 's')); }, setButtonStyles: function() { var backgroundCss; var css; var background1; var background2; var textColour1; var textColour2; var speedSeconds; background1 = localStorage.getItem('modules.flashingEscortButton.background1') || modules.flashingEscortButton.defaults.background1; background2 = localStorage.getItem('modules.flashingEscortButton.background2') || modules.flashingEscortButton.defaults.background2; textColour1 = localStorage.getItem('modules.flashingEscortButton.textColour1') || modules.flashingEscortButton.defaults.textColour1; textColour2 = localStorage.getItem('modules.flashingEscortButton.textColour2') || modules.flashingEscortButton.defaults.textColour2; backgroundCss = 'from { color: ' + textColour1 + '; background: ' + background1 + '; }' + 'to { color: ' + textColour2 + '; background:' + background2 + '; }'; css = '@-moz-keyframes flash{' + backgroundCss + '}' + '@-webkit-keyframes flash{' + backgroundCss + '}'; speedSeconds = modules.flashingEscortButton.getSpeed() if (localStorage.getItem('modules.flashingEscortButton.enabled') != 'false') { css += '.who a.button[href*="waitForLeader"],'; } css += 'a.button.modules-flashingEscortButton-config-escortButton {' + 'background-image: none !important;line-height: 20px; width: auto;' + '-moz-animation: flash ' + speedSeconds + 's infinite linear alternate;' + '-webkit-animation: flash ' + speedSeconds + 's infinite linear alternate; }'; css += '#modules-flashingEscortButton-config-colours li[data-id="background1"] div.demo { background-color: ' + background1 + ';}' + '#modules-flashingEscortButton-config-colours li[data-id="background2"] div.demo { background-color: ' + background2 + ';}' + '#modules-flashingEscortButton-config-colours li[data-id="textColour1"] div.demo { background-color: ' + textColour1 + ';}' + '#modules-flashingEscortButton-config-colours li[data-id="textColour2"] div.demo { background-color: ' + textColour2 + ';}'; app.addStyle(css, 'modules-flashingEscortButton-buttonStyle', true); }, contrast: function(color) { var brightness; var rgb, r, g, b; rgb = color.match(/^#([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/); if (null == rgb) { return "#FF0000"; } r = parseInt(rgb[1], 16); g = parseInt(rgb[2], 16); b = parseInt(rgb[3], 16); brightness = ((r * 299) + (g * 587) + (b * 114)) / 1000 / 255; return brightness >= 0.5 ? "#000000" : "#FFFFFF"; }, getSpeed: function() { var speed; var speedText; speed = localStorage.getItem('modules.flashingEscortButton.config.speed') || '2'; switch(speed) { case '0': speedText = '2'; break; case '1': speedText = '1'; break; case '2': default: speedText = '0.5'; break; case '3': speedText = '0.25'; break; case '4': speedText = '0.1'; break; case '5': speedText = '0.01'; break; } return speedText; } }