// ==UserScript== // @name Replay Rewrite - AI Testing On Replay // @namespace pbr/aitor // @description Offensive & Defensive AI Buttons On GLB Replay // @include http://*goallineblitz.com/game/home.pl // @include http://*goallineblitz.com/game/replay.pl?game_id=*&pbp_id=* // @include http://glb.warriorgeneral.com/game/home.pl // @include http://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 14.01.02 // @require https://greasyfork.org/scripts/1371-libpbr2/code/libpbr2.js?version=3533 // @require https://greasyfork.org/scripts/1348-pbr-game-scout/code/pbr%20Game%20Scout.js?version=3544 // @require https://greasyfork.org/scripts/1373-pbr-game-scout-statslib/code/pbr%20Game%20Scout%20statslib.js?version=3538 // @downloadURL https://update.greasyfork.icu/scripts/1344/Replay%20Rewrite%20-%20AI%20Testing%20On%20Replay.user.js // @updateURL https://update.greasyfork.icu/scripts/1344/Replay%20Rewrite%20-%20AI%20Testing%20On%20Replay.meta.js // ==/UserScript== var scriptName = "AI Testing"; var scriptVersion = "14.01.02"; var scriptWebpage = "http://userscripts.org/scripts/show/54927"; /* * * pabst did this 09/08/01+ * * */ window.setTimeout( function() { console.log("AI start: "+GM_getValue("gmlist")); if ((window.location+"").indexOf("home.pl") != -1) { atHome(); } else { pageMod(); init(true); } }, 100); function atHome() { GM_setValue("gmlist",""); var gmlist = ""; for (var i=0; i")[0]; if (str.match('class="team_name"') != null) str = str.split(">")[1]; else str = str.slice(1); gmlist += GM_getValue("gmlist")+id+":"+str+"\t"; } } if (gmlist.length > 0) gmlist = gmlist.slice(0,gmlist.length-1); GM_setValue("gmlist",gmlist); console.log("gmlist="+gmlist); } function pageMod() { var div = document.createElement("div"); div.setAttribute("id","dai_container"); div.style.width = "480px"; div.style.visiblity = "hidden"; div.style.display = "none"; var el = document.getElementById("footer"); el.parentNode.insertBefore(div, el); var oaitest = document.createElement("input"); oaitest.setAttribute("type","button"); oaitest.setAttribute("id","oai_button"); oaitest.setAttribute("value","Test OAI"); oaitest.disabled = false; oaitest.addEventListener("click",testOAI,true); oaitest.disabled = true; div.appendChild(oaitest); var select = document.createElement("select"); select.setAttribute("id","oai_team_select"); div.appendChild(select); select.addEventListener("change", clearOAI, false); var tms = ["0:Mine"].concat(GM_getValue("gmlist","").split("\t")); if (tms[0].length > 0) { for (var i=0; i 0) { for (var i=0; i 0) { select.remove(0); } document.getElementById(str+"_button").disabled = true; for (var i=0; i")[1].split("")[0]; var id = aiList[i].split("=")[1].split("\"")[0]; var opt = document.createElement("option"); opt.text = str; opt.value = id; select.add(opt,null); } if (select.options.length > 0) document.getElementById("oai_button").disabled = false; } function daiPageLoad() { var teamId = document.getElementById("dai_team_select").value; if (teamId == null) return; var address = "/game/team_ai.pl?team_id="+teamId; address += "&ai_type=team"; getInetPage(address, loadDAI, null); } function loadDAI(address, page) { clearDAI(); var select = document.getElementById("dai_select"); var aiList = page.responseText.split("team_defense_ai.pl?team_id="); for (var i=1; i")[1].split("")[0]; var id = aiList[i].split("=")[1].split("\"")[0]; var opt = document.createElement("option"); opt.text = str; opt.value = id; select.add(opt,null); } if (select.options.length > 0) { document.getElementById("dai_button").disabled = false; for (var i=0; iMatching Input'); text = text.slice(idx); idx = text.indexOf(''); text = text.slice(0,idx+''.length); text = "
Warning: automatic tagging & running clocks not implemented.
"+ "I have no idea why 'Singleback' is now called 'Singleback Left'.
"+text; dai.innerHTML = "
Formation: "+formation.replace("+"," ")+" ("+receivers+")
"+text; } } } http.send(post); } function testOAI() { var oteam = document.getElementsByClassName("secondary_container")[0].childNodes[0].innerHTML.split(" ")[0]; var dteam = document.getElementsByClassName("secondary_container")[1].childNodes[0].innerHTML.split(" ")[0]; var timeytg = document.getElementById("time_ytg"); var t = timeytg.innerHTML.split(" ")[0]; var dn = timeytg.innerHTML.split(" ")[1].slice(0,1); var ds = timeytg.innerHTML.split(" ")[3]; var loc = timeytg.innerHTML.split(" on ")[1]; var score = new Array(); score[oteam] = 0; score[dteam] = 0; try { var play = plays[0]; for (var i=0; iMatching Input'); text = text.slice(idx); idx = text.indexOf('
"+text; dai.innerHTML = text; } } } http.send(post); } function getPlayer(pos) { var output = new Array(); var images = document.getElementById("offense_container").getElementsByTagName("img"); for (var i=0; i "+maxx+" : "+((maxx - minx)>xdiff)); if ((maxx-minx) > xdiff) return true; return false; } function getFormation() { var offense = ["QB","HB","FB","TE","LOT","ROT","LG","RG","C","WR1","WR2","WR3","WR4","WR5","K","P"]; var players = new Array(); for (var i=0; i shotgunDist) { console.log("sgdist="+(diff(players["QB"][0].y, players["C"][0].y))); formation = "Shotgun"; } else if ((diff(players["QB"][0].y, players["HB"][0].y) > shotgunDist) && (players["FB"].length == 0)) { if (players["TE"].length == 1) { var cnt = 0; for (var r=0; r<3; r++) { if (players["WR"+(r+1)][0].x < players["QB"][0].x) cnt++; else cnt--; } if (Math.abs(cnt) == 3) formation = "Singleback+Trips"; else formation = "Singleback+Left"; } else { formation = "Singleback+Big"; } } else if (diff(players["HB"][0].y, players["FB"][0].y) < 3) { formation = "Splitbacks+Pro"; } else if (diff(players["HB"][0].x, players["FB"][0].x) < 3) { if (players["TE"].length == 2) { formation = "I+Big"; } else { formation = "I"; } } else if ((diff(players["QB"][0].y, players["HB"][0].y) > 8) && (diff(players["WR1"][0].x, players["HB"][0].x) > diff(players["WR1"][0].x, players["FB"][0].x))) { formation = "I+Weak"; } else if ((diff(players["QB"][0].y, players["HB"][0].y) > 8) && (diff(players["WR1"][0].x, players["HB"][0].x) < diff(players["WR1"][0].x, players["FB"][0].x))) { formation = "I+Strong"; } } catch (e) { console.log("AI Testing: "+e); } console.log("Formation = "+formation); return formation; } function diff(x, y) { var a = parseFloat(x); var b = parseFloat(y); return Math.max(a,b) - Math.min(a,b); }