您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
For making SP a little bit better
// ==UserScript== // @name Better Soccer Project // @namespace sp // @description For making SP a little bit better // @include *soccerproject.com/* // @version 1.8 // @grant none // ==/UserScript== // add jquery //add jquery function includeJs(jsFilePath) { var js = document.createElement("script"); js.type = "text/javascript"; js.src = jsFilePath; document.body.appendChild(js); } includeJs("//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"); var t=setTimeout(function(){ //Rebind console to c var c = false; if(typeof console === "object" && typeof console.error === "function"){ c = console, c = function (msg){"use strict"; console.info(msg);}; } var SP = {}; //urls const setNavigation = () => { $('head').append('<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">') $('body').append( '<div aria-expanded="false" class="menuBtn" id="hamburgerToggle" role="button"><div class="menuBtnContainer"><div></div><div></div><div></div></div></div>' ) $('#navigation li:last').remove() $('#navigation li:first').after( $( '<li><a href="./spnewl_team_fixtures.php" class="more">Fixtures</a></li><li><a href="./spnewl_team_results.php" class="more">Results</a></li><li><a' + ' href="./spnewl_speler_overview.php" class="more">Players</a></li><li><a href="./spnewl_friendly_pool.php" class="more">Friendlies</a></li><li><a' + ' href="./spnewl_transfer_overview.php" class="more">Transfer Overview</a><li><a' + ' href="./spnewl_friendlycup_invitations.php?step=6" class="more">FC</a></li>' ) ) } /************************************* * FUNCTIONS * **************************************/ function removeAllPlayers () { $('#formation_field select').each(function(){ //loop through selectable players. var me = $(this), options = me.find('option'); me.find('option:selected').removeAttr('selected'); //remove all selected items options.first().attr('selected','selected'); updatePlayer(options.first().parent().get(0)); }); } function updatefitestplayers () { removeAllPlayers (); var allPlayers = [], i=0; $('[id^=trPlayer]').each(function(){ //loop through all of the players var player = $(this).find('td'); var fitness = player.eq(3).text().replace( /^\D+/g, ''); var fitness = fitness.substring(0, fitness.length - 1); //get out their fitness and then remove the trailing % var playerID = player.eq(0).find('a').attr("onclick").replace( /^\D+/g, ''); var playerID = playerID.slice(0,8); var playerID = parseInt(playerID, 10); // get out the players ID allPlayers.push([playerID,fitness]); //update array of players }); allPlayers.sort(function(a,b){ //sort players by highest fitness return a[1] - b[1]; }).reverse(); allPlayers = allPlayers.slice(0,16); //remove the most unfit players console.info(allPlayers); $('#formation_field select').each(function(){ //loop through selectable players. var me = $(this), options = me.find('option'); me.find('option:selected').removeAttr('selected'); //remove all selected items options.each(function(){ //loop through and add selected if it matches if($(this).val()==allPlayers[i][0]){ var meText = $(this).text(), number = meText.substring(0,2), name = meText.substring(4); $(this).attr('selected','selected'); updatePlayer(this.parentNode.parentElement); }; }); i++; }); } function updateLowestMoralPlayers () { //removeAllPlayers (); var allPlayers = [], i=0; $('[id^=trPlayer]').each(function(){ //loop through all of the players var player = $(this).find('td'); var moral = player.eq(2).text().replace( /^\D+/g, ''); //get moral from players var moral = moral.substring(0, moral.length - 1); //get out their fitness and then remove the trailing % var playerID = player.eq(0).find('a').attr("onclick").replace( /^\D+/g, ''); var playerID = playerID.slice(0,8); var playerID = parseInt(playerID, 10); // get out the players ID allPlayers.push([playerID,moral]); //update array of players }); allPlayers.sort(function(a,b){ //sort players by highest fitness return a[1] - b[1]; }); allPlayers = allPlayers.slice(0,16); $('#formation_field select').each(function(){ //loop through selectable players. var me = $(this), options = me.find('option'); me.find('option:selected').removeAttr('selected'); //remove all selected items options.each(function(){ //loop through and add selected if it matches if(typeof allPlayers[i] !== "undefined" && $(this).val()==allPlayers[i][0]){ var meText = $(this).text(), number = meText.substring(0,2), name = meText.substring(4); $(this).attr('selected','selected'); updatePlayer(this.parentNode.parentElement); }; }); i++; }); } /************************************* * Players * **************************************/ function workOutStam(type){ if(type==='startNonFullyStam'){ selectArray.forEach(function(key) { var select = selects[key], stam = selects[key][1], currentlySelected = selects[key][selects[key].selectedIndex]; if(typeof stam !== "undefined" && stam.className!=="maxed"){ currentlySelected.removeAttribute('selected'); stam.setAttribute('selected', 'selected'); } }); } if(type==='startStamFullMaxedOtherSkills'){ var i=1; selectArray.forEach(function(key) { i++; var select = selects[key], stam = selects[key][1], skill1 = selects[key][1], skill2 = selects[key][2], skill3 = selects[key][3], skill4 = selects[key][4], skill5 = selects[key][5], skill6 = selects[key][6], skill7 = selects[key][7], skill8 = selects[key][8], skill9 = selects[key][9], nothing = selects[key][0], currentlySelected = selects[key][selects[key].selectedIndex], maxedNumber = $(select).find('.maxed').length; if(typeof stam !== "undefined" && maxedNumber===8){ currentlySelected.removeAttribute('selected'); stam.setAttribute('selected', 'selected'); }else if(typeof stam !== "undefined" && maxedNumber===9){ currentlySelected.removeAttribute('selected'); stam.removeAttribute('selected'); nothing.setAttribute("selected", "selected"); select.removeAttribute('style'); $('<span>fully trained</span>').insertAfter(select); } }); } } /************************************* * Pages * **************************************/ if(document.location.pathname==="/spnewl_speler_training.php"){ var selects = document.getElementsByTagName('select'), selectArray = Object.keys(selects).slice(0,selects.length); selectArray.forEach(function(key) { var myself = selects[key][selects[key].selectedIndex]; if(typeof myself !== "undefined" && myself.className==="maxed"){ selects[key].setAttribute("style","background: red; color: #FFF"); } }); $('#trainform .pbutton').append('<a class="button startStam" href="#">Start ALL Non Fully Trained Stamina</a><a class="button startStamFullMaxedOtherSkills" href="#">Start Stam on players with maxed everything else</a>'); $('.startStam').click(function(){ workOutStam('startNonFullyStam'); return false; }); $('.startStamFullMaxedOtherSkills').click(function(){ workOutStam('startStamFullMaxedOtherSkills'); return false; }); } if(document.location.pathname==="/spnewl_game_selectie.php"){ if($('.info').text() === 'The selection was saved.'){ //window.location.href = '/spnewl_team_fixtures.php' window.close(); } $('.pbutton a:first').after('<a class="button fittness" href="#">Pick Fittest Team</a><a class="button lowmoral" href="#">Pick lowest moral</a>'); $('.pbutton a:last').after('<a class="button removeplayers" href="#">Remove All Players</a>'); $('.fittness').click(function(){ updatefitestplayers('remove'); return false; }); $('.removeplayers').click(function(){ removeAllPlayers(); return false; }); $('.lowmoral').click(function(){ updateLowestMoralPlayers(); document.forms['selform'].submit(); return false; }); } if(document.location.pathname==="/spnewl_friendly_pool.php" && location.search.includes('step=2')){ document.forms['inviteform'].submit(); } if(document.querySelectorAll('.button')[1].innerHTML === "Selection"){ window.open(document.querySelectorAll('.button')[1]); document.querySelectorAll('.button')[0].click(); } const startSP = () => { setNavigation() } startSP() console.info('loaded'); },150);