您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds player movement trails to GLB replays viewed with the replay rewrite script.
// ==UserScript== // @name Replay Rewrite - Player Paths On Replay // @description Adds player movement trails to GLB replays viewed with the replay rewrite script. // @namespace pbr/ppor // @include https://*goallineblitz.com/game/replay.pl?game_id=*&pbp_id=* // @include https://glb.warriorgeneral.com/game/replay.pl?game_id=*&pbp_id=* // @copyright 2009, pabst // @license (CC) Attribution Share Alike; http://creativecommons.org/licenses/by-sa/3.0/ // @version 20.12.303 // @require https://gf.qytechs.cn/scripts/418636-libpbr2-1/code/libpbr21.js?version=880565 // ==/UserScript== /* * * based on code by Cabrasher * pabst did this 08/06/26+ * * * nikkoum updated to point to https and ditto for the library ... */ var scriptName = "Player Paths"; var scriptVersion = "14.01.30"; var scriptWebpage = "http://userscripts.org/scripts/show/54519"; var tracedPlayers = new Array(); var step = 2; window.setTimeout( function() { init(); }, 100); function activate(e) { console.log("activate player tracing"); lock(); tracemain(); unlock(); } function tracemain() { var icons = document.getElementsByClassName("o_icon"); for (var i=0; i<icons.length; i++) { icons[i].firstChild.removeAttribute("onclick"); icons[i].firstChild.removeAttribute("onmouseover"); icons[i].firstChild.removeAttribute("onmouseout"); } icons = document.getElementsByClassName("d_icon"); for (var i=0; i<icons.length; i++) { icons[i].firstChild.removeAttribute("onclick"); icons[i].firstChild.removeAttribute("onmouseover"); icons[i].firstChild.removeAttribute("onmouseout"); } var paths = document.getElementsByClassName("player_path"); while (paths.length > 0) { paths[0].parentNode.removeChild(paths[0]); paths = document.getElementsByClassName("player_path"); } var o = document.getElementsByClassName("o_icon"); for (var i=0; i<o.length; i++) { o[i].addEventListener("click",function (e) { playerClicked(e); }, false); } var o = document.getElementsByClassName("d_icon"); for (var i=0; i<o.length; i++) { o[i].addEventListener("click",function (e) { playerClicked(e); }, false); } for (var i=0; i<tracedPlayers.length; i++) { //console.log(i+" : "+tracedPlayers[i]); var target = document.getElementById("pos_dot_"+tracedPlayers[i]); if (target != null) { var btn = new Object(); btn.target = target.firstChild; playerClicked(btn); } } } function traceClear(div) { var inputs = []; while ((inputs = div.getElementsByTagName("input")).length > 0) { var box = inputs[0]; box.parentNode.removeChild(box); } } function playerClicked(elemInput) { //console.log(elemInput.target+" : "+elemInput.target.parentNode.id); var id = elemInput.target.parentNode.id.split("_")[2]; if (document.getElementById("line_"+id) != null) { var d = document.getElementById("line_"+id); d.parentNode.removeChild(d); for (var i=0; i<tracedPlayers.length; i++) { if (tracedPlayers[i] == id) { tracedPlayers.splice(i,1); break; } } return; } if (tracedPlayers.indexOf(id) == -1) { tracedPlayers.push(id); } var play_data = unsafeWindow.play_data; var arrColors = new Array('black', 'blue', 'red', 'yellow', 'purple', 'orange',' aqua', 'bisque', 'darkgray', 'lightskyblue', 'magenta', 'greenyellow', 'mintcream', 'salmon', 'tan', 'turquoise', 'silver', 'slateblue', 'plum', 'orangered', 'hotpink', 'goldenrod', 'white'); for (var pl=0; pl<play_data[0].length; pl++) { if (play_data[0][pl].id == id) { var maxX = -1; var minX = 2000; var maxY = -1; var minY = 2000; var color = arrColors[pl%arrColors.length]; var link = elemInput.target.parentNode.parentNode.parentNode.childNodes[2]; if (link.style.color != "") { color = link.style.color; } var p = pl; var idx = pl; var divArray = new Array(); for (var cf=0; cf<play_data.length-3; cf++) { try { if (play_data[0][pl].id != play_data[cf+1][idx].id) { for (var i=0; i<play_data[cf+1].length; i++) { if (play_data[0][pl].id == play_data[cf+1][i].id) { idx = i; break; } } } var x1 = (play_data[cf][p].x)*3+20; var y1 = (play_data[cf][p].y)*3+40; var x2 = (play_data[cf+1][idx].x)*3+20; var y2 = (play_data[cf+1][idx].y)*3+40; minX = Math.min(minX,x1); minX = Math.min(minX,x2); maxX = Math.max(maxX,x1); maxX = Math.max(maxX,x2); minY = Math.min(minY,y1); minY = Math.min(minY,y2); maxY = Math.max(maxY,y1); maxY = Math.max(maxY,y2); if ((cf % step) == 0) { divArray.push(makeDiv(x1, y1, 2, 2, color)); } p = idx; } catch (e) { console.log(e); } } if (divArray.length > 0) { var mainDiv = document.createElement('div'); mainDiv.className = "player_path"; mainDiv.id = 'line_' + id; mainDiv.style.left = Math.round(minX)+"px"; mainDiv.style.top = Math.round(minY)+"px"; mainDiv.style.width = Math.round((maxX-minX)+1)+"px"; mainDiv.style.height = Math.round((maxY-minY)+1)+"px"; mainDiv.style.zIndex = 500; for (var d=0; d<divArray.length; d++) { mainDiv.appendChild(divArray[d]); } document.getElementById('replay_area').appendChild(mainDiv); } } } } function findPlayerToTrace(cf, id) { for (var pl=0; pl<play_data[cf].length; pl++) { if (play_data[cf][pl].id == id) { return pl; } } console.log("replayRewrite.trace : I shouldn't happen."); return -1; } function makeDiv(x, y, w, h, backColor) { var newDiv = document.createElement('div'); newDiv.style.left = x + 'px'; newDiv.style.top = y + 'px'; newDiv.style.width = w + 'px'; newDiv.style.height = h + 'px'; newDiv.style.zIndex = 500; newDiv.style.backgroundColor= backColor; newDiv.className='player_icon'; newDiv.id='ds'; return newDiv; }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址