您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Custom auto-refresh, display ping/delay network info overlay.
当前为
// ==UserScript== // @name DC_auto_refresh // @author Ladoria // @version 0.13 // @grant none // @description Custom auto-refresh, display ping/delay network info overlay. // @match http://www.dreadcast.net/Main // @match http://www.dreadcast.net/Index // @copyright 2015+, Ladoria // @namespace InGame // ==/UserScript== var reload_asked = Date.now(); var last_request_completed = Date.now(); var check_delay = 3000; // In ms, x >= 3000. DC's refresh is each ~2950ms var lag_buster = 10000; var casual_lag_buster = 10000; // In ms, x >= 2000. Time to activate reconnection routine. Because lag is life, m'k. var hard_lag_buster = 600000; // In ms, x >= 600000 (10min). Time to activate reconnection routine during hard lagging. casual_lag_buster += check_delay; // basic anti-lag security hard_lag_buster += check_delay; var refresh_time_limit = 120000; // In ms. Time to auto-refresh. (+ lag_buster in script) var abort_time_fixed = refresh_time_limit / 1000; // In seconds. var abort_time = abort_time_fixed; var script_paused = false; var refresh_interval; var disconnected = false; var coockie_prefix = "DC_auto_refresh_" var show_overlay = true; var server_date = new Date(); // Hard lagging from 5:00 to 6:00 GTM + 2 var last_request_send = Date.now(); // Last attempt time var first_request_send = Date.now(); // First of failed attempts time var alert_messages = new Array(); alert_messages.ask_to_reload = 'Attention, vous semblez avoir été déconnecté. Rechargement de la page dans <span class="seconds"></span> seconde(s) <br><div class="btnTxt abort"><div>Annuler</div></div> <div class="btnTxt reload"><div>Recharger</div></div>'; alert_messages.unconnected = 'Attention, vous semblez toujours déconnecté. <div class="btnTxt hide"><div>OK</div></div>'; alert_messages.connected = '<span class="ok_message">Vous semblez avoir été reconnecté.</span> <div class="btnTxt hide"><div>OK</div></div>'; $(document).ready( function() { $('body').append('<style>#auto_refresh {display: block;position: absolute;top: 31px;width: 100%;z-index:1000000;text-align: center;}#auto_refresh .overlay {position: absolute;top: 0px;color: white;background-color: rgba(0, 0, 0, 0.5);line-height: 14px; font-size: 10px;}#auto_refresh .overlay .toggle {float: right;margin-left: 1px;padding-left: 5px;padding-right: 5px;cursor: pointer;border: 1px solid gray;}#auto_refresh .overlay .refresh_delay {float: left;width: 100px;color: back;background-color: transparent;border: 1px solid green;}#auto_refresh .overlay .refresh_delay .lag_seconds {display: none;}#auto_refresh .overlay .refresh_delay .actual_time {position: absolute;top: 0px;left: 0px;background-color: rgba(0, 255, 0, 0.2);height: 100%;overflow: hidden;}#auto_refresh .alert_container {display: none;}#auto_refresh .alert {position: relative;display: inline-block;padding: 5px;color: red;background-color: white;text-align: center;font-size: 20px;}#auto_refresh .alert .abort, #auto_refresh .alert .reload, #auto_refresh .alert .hide {display: inline-block;margin-top: 10px;width: 100px;}#auto_refresh .ok_message{color: green;}</style>'); $("body").append('<div id="auto_refresh"><div class="overlay"><div class="ping refresh_delay barre_fond"><span class="data">Ping</span> : <span class="seconds"></span> ms.<div class="actual_time barre_etat"></div></div><div class="toggle"><</div></div><div class="alert_container"><div class="alert fakeToolTip"></div><div></div>'); if(undefined != getCookie('global')) show_overlay = ('show_overlay' == getCookie('global')) ? true : false; if(false === show_overlay) { $('#auto_refresh .overlay .toggle').html('>'); $('#auto_refresh .overlay .ping').hide(); } function show_alert(message) { $('#auto_refresh .alert').html(alert_messages[message]); if('ask_to_reload' == message) { abort_time = abort_time_fixed; $('#auto_refresh .alert .seconds').html(abort_time); refresh_abort_time(); // Abort reload // User want to abort, then notify user and pause script $('#auto_refresh .alert .abort').on('click', function() { script_paused = true; abort_reload(); show_alert('unconnected'); }); // Do reload $('#auto_refresh .alert .reload').on('click', function() { do_reload(); }); } else if ('connected' == message || 'unconnected' == message) { // hide alert $('#auto_refresh .alert .hide').on('click', function() { hide_alert(); }); } $('#auto_refresh .alert_container').show(); } function hide_alert() { $('#auto_refresh .alert_container').hide(); } // Start refresh countdown function refresh_abort_time() { $('#auto_refresh .alert .seconds').html(abort_time); refresh_interval = setInterval( function() { if(0 < abort_time) abort_time--; $('#auto_refresh .alert .seconds').html(abort_time); }, 1000); } // Stop refresh countdown function abort_reload() { clearInterval(refresh_interval); last_request_completed = Date.now(); } // Reload window function do_reload() { // Useless, but lovely last_request_completed = Date.now(); window.location.href = 'http://www.dreadcast.net/Main'; } // Countdown to reload window setInterval(function() { if(true === script_paused) return; // If no network activity for a while, reload. if (Date.now() - last_request_completed >= lag_buster) { // If yes/no alert hidden, show it if(0 === $('#auto_refresh .alert .abort').length) { show_alert('ask_to_reload'); // Delay to refresh reload_asked = Date.now(); } // If reload failed, waiting for a while and after delay to refresh if (Date.now() - reload_asked >= refresh_time_limit) { do_reload(); } } }, 1000); // Global clock setInterval(function() { // In case of hard lagging (5:00 -> 5:59) lag_buster = (5 == server_date.getHours()) ? hard_lag_buster : casual_lag_buster; refresh_ping(last_request_send, last_request_completed); }, 1000); // Overlay // Refresh Ping (request_send, request) function refresh_ping(request_send, request) { // If connected, refresh values if (false == disconnected) { first_request_send = request_send; } else { request = Date.now(); // If disconnected, keep stored data. request_send = first_request_send; } var ping = ((request - request_send) < 0) // During requesting new Check ? ping : request - request_send; $('#auto_refresh .overlay .seconds').html(ping); // Time background-color cheat. if (lag_buster < ping) { $('#auto_refresh .overlay .refresh_delay').css({'borderColor' : 'red'}); $('#auto_refresh .overlay .actual_time').css( {'width' : '0px'}, {'backgroundColor' : 'rgba(255, 0, 0, 0.2)'}); $('#auto_refresh .overlay .refresh_delay .data').html('Délai'); } } // Refresh delay animation function refresh_delay(request_send, request) { $('#auto_refresh .overlay .actual_time').stop(); $('#auto_refresh .overlay .refresh_delay').css({'borderColor' : 'green'}); $('#auto_refresh .overlay .actual_time').css( {'width' : '0px'}, {'backgroundColor' : 'rgba(0, 255, 0, 0.2)'}); $('#auto_refresh .overlay .refresh_delay .data').html('Ping'); $('#auto_refresh .overlay .actual_time').animate( {width : $('#auto_refresh .overlay .refresh_delay').width()} , check_delay); } // Toggle overlay $('#auto_refresh .overlay .toggle').on('click', function() { $('#auto_refresh .overlay .ping').toggle(); if (true === show_overlay) $('#auto_refresh .overlay .toggle').html('>'); else $('#auto_refresh .overlay .toggle').html('<'); show_overlay = !show_overlay; saveCookie('global',(true === show_overlay) ? 'show_overlay' : 'hide_overlay'); }); // Update last request send time $(document).ajaxSend( function(a,b,c) { if(/Check/.test(c.url)) { last_request_send = Date.now(); } }); // Update last request time $(document).ajaxComplete( function(a,b,c) { if(/Check/.test(c.url)) { // Refresh server date server_date = new Date(b.getResponseHeader('Date')); // If request succeeded if(b.readyState === 4) { // If reconnected again connexion, resume script and notify if($('#auto_refresh .alert').is(':Visible') || true === script_paused) { show_alert('connected'); } script_paused = false; disconnected = false; // Stop reload abort_reload(); last_request_completed = Date.now(); refresh_delay(last_request_send, last_request_completed); } else disconnected = true; } }); }); // handle coockies function saveCookie(name,val) { name = coockie_prefix + name; if(!navigator.cookieEnabled) return; document.cookie = name + '=' + val + ';expires=Wed, 01 Jan 2020 00:00:00 GMT; path=/'; } function getCookie(var_name) { name = coockie_prefix + var_name; if(!navigator.cookieEnabled) return undefined; var start = document.cookie.indexOf(name + '=') if(start == -1) return undefined; start += name.length + 1; var end = document.cookie.indexOf(';',start); if (end == -1) end = document.cookie.lenght; return document.cookie.substring(start,end); }; console.log('DC - Auto Refresh started');
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址