您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Easy tool to improve delivery job.
// ==UserScript== // @name EasyDelivery // @version 0.8.0.0 // @namespace localhost // @author aMiTo // @description Easy tool to improve delivery job. // @match http://*suna.e-sim.org/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js // @resource myCustomCSS https://dl.dropbox.com/u/78035768/eSim/132316.user.css // @grant GM_getResourceText // @grant GM_getResourceURL // @grant GM_addStyle // ==/UserScript== var main = function () { // CONSTANTS var VERSION = "E.D. 0.8.0.0"; var URLSCRIPT = "http://userscripts.org/scripts/show/132316"; // URLs var URLMain = "suna.e-sim.org/index.html"; var URLMyMU = "suna.e-sim.org/myMilitaryUnit.html"; var URLMUMain = "suna.e-sim.org/militaryUnit.html?id="; var URLMUStorage = "suna.e-sim.org/militaryUnitStorage.html"; var URLMUMoney = "suna.e-sim.org/militaryUnitMoneyAccount.html"; var URLDDonatePlayerProduct = "suna.e-sim.org/donateProducts.html?id="; var URLDonateMUProduct = "suna.e-sim.org/donateProductsToMilitaryUnit.html?id="; var URLBattle = "e-sim.org/battle.html?id="; var URLContract = "e-sim.org/contract.html?id="; var URLMarket = "e-sim.org/productMarket.html"; var URLMarketOffers = "e-sim.org/citizenMarketOffers.html"; var URLMonetaryMarket = "e-sim.org/monetaryMarket.html"; var URLMyShares = "e-sim.org/myShares.html"; var URLStockCompany = "e-sim.org/stockCompany.html?id="; var URLStockProducts = "e-sim.org/stockCompanyProducts.html?id="; var URLTravel = "e-sim.org/travel.html"; var URLEquipment = "e-sim.org/equipment.html"; var URLCompany = "e-sim.org/company.html?id="; var URLCompanyDetails = "e-sim.org/companyWorkResults.html?id="; var URLJobMarket = "e-sim.org/jobMarket.html"; var URLBattleList = "e-sim.org/battles.html"; var URLMUCompanies = "suna.e-sim.org/militaryUnitCompanies.html?id="; var URLCompanyDetails = "e-sim.org/companyWorkResults.html?id="; // VARS var cachedSettings = null; // GM friendly function var currentServer = null; var idPlayer = null; var extendedMU = false; var savedWorkedList = []; // CODE function initialize() { loadConfiguration(); var previousSelection = getValue( "lastSelectionMUStorage" ); setValue( "lastSelectionMUStorage", "" ); // Do different things on diferents urls var localUrl = new String( window.location ); if( localUrl.indexOf( URLMain, 0 ) >= 0 ) { // MU main page } else if( (localUrl.indexOf( URLMyMU, 0 ) >= 0) || (localUrl.indexOf( URLMUMain, 0 ) >= 0) ) { // MU storage } else if( localUrl.indexOf( URLMUStorage, 0 ) >= 0 ) { if( getValue( "configMUStorageDonateImprovements" ) == "true" ) { orderMU( "#donateProductForm", previousSelection ); addUpdateJobsButton( "#donateProductForm" ); } // MU money } else if( localUrl.indexOf( URLMUMoney, 0 ) >= 0 ) { // Donate player to player } else if( localUrl.indexOf( URLDDonatePlayerProduct, 0 ) >= 0 ) { // Donate player to MU } else if( localUrl.indexOf( URLDonateMUProduct, 0 ) >= 0 ) { // Battle weapon selector } else if( localUrl.indexOf( URLBattle, 0 ) >= 0 ) { // Contract creator } else if( localUrl.indexOf( URLContract, 0 ) >= 0 ) { // Market } else if( localUrl.indexOf( URLMarket, 0 ) >= 0 ) { // Market offers } else if( localUrl.indexOf( URLMarketOffers, 0 ) >= 0 ) { // Monetary market improvements } else if( localUrl.indexOf( URLMonetaryMarket, 0 ) >= 0 ) { // My Shares menu } else if( localUrl.indexOf( URLMyShares, 0 ) >= 0 ) { // Shares main menu } else if( localUrl.indexOf( URLStockCompany, 0 ) >= 0 ) { // Shares company product } else if( localUrl.indexOf( URLStockProducts, 0 ) >= 0 ) { // Travel } else if( localUrl.indexOf( URLTravel, 0 ) >= 0 ) { // Equipment } else if( localUrl.indexOf( URLEquipment, 0 ) >= 0 ) { // Company } else if( localUrl.indexOf( URLCompany, 0 ) >= 0 ) { // Company work results } else if( localUrl.indexOf( URLCompanyDetails, 0 ) >= 0 ) { // Job market } else if( localUrl.indexOf( URLJobMarket, 0 ) >= 0 ) { // List of battles } else if( localUrl.indexOf( URLBattleList, 0 ) >= 0 ) { } // Global code if( $( "form[action='login.html']" ).length == 0 ) { addVersion(); //addConfigurationUI(); } } initialize(); // Load configuration from disk or default function loadConfiguration() { if( $( "form[action='login.html']" ).length != 0 ) { return; } // MU storage if( !getValue( "configMUStorageDonateImprovements" ) ) { setValue( "configMUStorageDonateImprovements", "true" ); } } // Disable button function disableButton( btn ) { btn.attr( "disabled", "disabled" ); btn.addClass( "buttonDisable" ); } // Enable button function enableButton( btn ) { btn.removeAttr( "disabled" ); btn.removeClass( "buttonDisable" ); } // Get ID player function getPlayerID() { if( !idPlayer ) { var link = $( "#userImage" ).parent().attr( "href" ); if( link ) { if( link.split( "id=" ).length == 2 ) { idPlayer = link.split( "id=" )[1]; } } } return( idPlayer ); } // Get current server function getCurrentServer() { if( !currentServer ) { var localUrl = new String( window.location ); var ini = localUrl.indexOf( "http://", 0 ); var end = localUrl.indexOf( ".", 0 ); currentServer = localUrl.substr( ini, end-ini+1 ); } return( currentServer ); } // To add . on numbers function pointNumber( n ){ n = n + ""; var i = n.length-3; while( i > 0 ){ n = n.substring( 0, i )+ "." + n.substring( i, n.length ); i=i-3; } return( n ); } // getValue as GM_getValue of GM functions function getValue( name ) { name = getPlayerID() + getCurrentServer() + name; var value = (cachedSettings === null ? localStorage.getItem(name) : cachedSettings[name]); if( !value || (value === undefined) ) { return( null ); } return( value ); } // setValue as GM_setValue of GM functions function setValue( name, value ) { name = getPlayerID() + getCurrentServer() + name; if (cachedSettings === null) { localStorage.setItem( name, value ); } else { cachedSettings[name] = value; chrome.extension.sendRequest( { name: name, value: value } ); } } // Get URL Vars function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function( m, key, value ) { vars[key] = value; }); return vars; } // Add version on all pages function addVersion() { // Version var vers = $( "<li class='version'><a href='"+ URLSCRIPT +"' target='_blank'> " + VERSION + "</a></li>" ); $( ".foundation-left" ).append( vers ); $( ".foundation-left" ).append( "<li class='divider'></li>" ); } // Add configuration function addConfigurationUI() { } // Order MU member function orderMU( idForm, varCheck ) { var divPlayers = $( idForm ).children( "div" ).addClass( "divListPlayers" ); // Save data to order it var list = divPlayers.children(); var tickAll = list[0]; var playerList = []; var names = []; var player; // Ignore beginning BR for( var i=2; i<list.length; i++ ) { player = []; player[0] = list[i++]; player[1] = list[i++]; player[2] = list[i++]; player[3] = list[i++]; // Ignore BR names.push( player[3].textContent.toLowerCase() ); playerList.push( player ); } // Remove all children divPlayers.children().remove(); divPlayers.text( "" ); // Add tickAll button $( tickAll ).bind( "click", function() { $( ".receipments" ).attr( "checked", "checked" ); saveCheckedPlayers(); return false; }); divPlayers.append( tickAll ); // Add untickAll button var untickAll = $( "<input type='submit' id='untickAll' value='Untick all' />" ); untickAll.bind( "click", function() { $( ".receipments" ).removeAttr( "checked" ); setValue( "lastSelectionMUStorage", "" ); return false; }); divPlayers.append( untickAll ); // Add other submit button divPlayers.append( "<input id='donateBtn2' type='submit' value='Donate' />" ); divPlayers.append( "<br/>" ); // Order array by name names.sort(); // Add ordered members var tr, td; var table = $( "<table class='playerTable'></table>" ); divPlayers.append( table ); for( i=0; i<names.length; i++ ) { for( var j=0; j<playerList.length; j++ ) { if( names[i] == playerList[j][3].textContent.toLowerCase() ) { tr = $( "<tr></tr>" ); tr.append( $( "<td class='checkPlayer'></td>" ).append( playerList[j][0] ) ); tr.append( $( "<td class='flagPlayer'></td>" ).append( playerList[j][1] ) ); tr.append( "<td class='noSkill'></td>" ); tr.append( $( "<td class='avatarPlayer'></td>" ).append( playerList[j][2] ) ); tr.append( $( "<td class='namePlayer'></td>" ).append( playerList[j][3] ) ); tr.append( "<td class='companyName'></td>" ); tr.append( "<td class='day6'></td>" ); tr.append( "<td class='day5'></td>" ); tr.append( "<td class='day4'></td>" ); tr.append( "<td class='day3'></td>" ); tr.append( "<td class='day2'></td>" ); tr.append( "<td class='day1'></td>" ); tr.append( "<td class='day0'></td>" ); tr.append( "<td></td>" ); table.append( tr ); tr.children( ".namePlayer" ).children( "a" ).attr( "name", playerList[j][3].textContent ); // Resize player name var name = tr.children( ".namePlayer" ); while( name.height() > (parseInt( name.css( "line-height" ).replace( "px", "" ) ) + 1) ) { var str = name.children( "a" ).text().replace( "...", "" ); name.children( "a" ).text( str.slice( 0, -1 ) + "..." ); } } } } // Check for URL vars if( varCheck ) { setValue( "lastSelectionMUStorage", varCheck ); $( ".playerTable" ).find( ".receipments" ).each( function() { if( varCheck.length > 0 ) { if( varCheck[0] == "1" ) { $(this).attr( "checked", "checked" ); } varCheck = varCheck.substr( 1, varCheck.length-1 ); } }); } // Set Checked players $( ".playerTable" ).find( ".receipments" ).bind( "change", function() { saveCheckedPlayers(); }); } // Set value of checked people on MU storage function saveCheckedPlayers() { var check = ""; $( ".playerTable" ).find( ".receipments" ).each( function() { check += ($(this).attr( "checked" )) ? "1" : "0"; }); setValue( "lastSelectionMUStorage", check ); } // Add update jobs button function addUpdateJobsButton( idForm ) { savedWorkedList = []; // Add button to see more days var extended = $( "<input type='button' id='extendedDays' value='Extended'/>" ); extended.insertAfter( $( "#donateBtn2" ) ); disableButton( extended ); extended.bind( "click", function() { extendedMU = !extendedMU; if( extendedMU ) { $( ".companyName" ).hide(); $( ".day0" ).show(); $( ".day1" ).show(); $( ".day2" ).show(); $( ".day3" ).show(); $( ".day4" ).show(); $( ".day5" ).show(); $( ".day6" ).show(); } else { $( ".companyName" ).show(); $( ".day0" ).show(); $( ".day1" ).show(); $( ".day2" ).hide(); $( ".day3" ).hide(); $( ".day4" ).hide(); $( ".day5" ).hide(); $( ".day6" ).hide(); } }); var extraDiv = $( "<div id='extraDivMUStorage' class='testDivwhite'></div>" ); extraDiv.insertAfter( ".testDivwhite" ); // Add update button var update = $( "<input type='button' id='updateWork' value='Update jobs'/>" ); extraDiv.append( update ); update.bind( "click", function() { $(this).val( "Updating... " ); disableButton( $(this) ); enableButton( extended ); // Clean previous results $( idForm ).find( ".skill" ).children().remove(); $( idForm ).find( ".skill" ).addClass( "noSkill" ); $( idForm ).find( ".skill" ).removeClass( "skill" ); $( ".companyName" ).children().remove(); $( ".day0" ).children().remove(); $( ".day1" ).children().remove(); $( ".day2" ).children().remove(); $( ".day3" ).children().remove(); $( ".day4" ).children().remove(); $( ".day5" ).children().remove(); $( ".day6" ).children().remove(); var idMU = $( ".citizenAction" ).eq(0).children( "a" ).attr( "href" ); var split = idMU.split( "?id=" ); if( split.length > 1 ) { idMU = split[1]; // Find every player what company works // First MU companies $.ajax({ url: getCurrentServer() + URLMUCompanies + idMU, success: function( data ) { // Special case var cp = $( data ).find( "a[href^='company.html']" ); if( cp.length == 0 ) { enableButton( $( "#updateWork" ) ); $( "#updateWork" ).val( "Update jobs" ); } else { $( "#updateWork" ).val( "Updating... "+cp.length ); $( "#updateWork" ).attr( "counter", cp.length ); } for( var i=0; i<cp.length; i++ ) { var split = $( cp[i] ).attr( "href" ).split( "?id=" ); if( split.length > 1 ) { checkCompany( idForm, split[1], i, cp.length-1 ) } } } }); } return( false ); }); var needUpdate = false; var lastUpdateTime = $( "<div id='lastUpdateTime'></div>" ); lastUpdateTime.insertAfter( update ); if( getValue( "muStorageSaveLastTime") ) { lastUpdateTime.text( getValue( "muStorageSaveLastTime") ); var currentDate = (new Date).getDate(); var lastDate = new Date( getValue( "muStorageSaveLastTime" ) ).getDate(); var needUpdate = (lastDate != currentDate); } if( getValue( "muStorageSaveWorkedList") && !needUpdate ) { enableButton( extended ); var workedList = getValue( "muStorageSaveWorkedList").split( "&&" ); for( var i=0; i<workedList.length; i++ ) { var splitList = workedList[i].split( "," ); var pos = $( idForm ).find( "a[name='"+ splitList[0] +"']" ); var tr = pos.parent().parent(); addSkill( tr, splitList[1] ); tr.find( ".companyName" ).append( "<a href='"+ getCurrentServer() + URLCompany + splitList[2] +"'>"+ splitList[3] +"</a>" ); var day; for( j=0; j<7; j++ ) { var t = "-" + j; if( j == 0 ) { t = ""; } if( splitList[4+j] == "true" ) { day = $( "<div class='dayOk' day='"+ j +"'>"+ t +"</div>" ); tr.find( ".day" + j ).append( day ); tr.find( "input" ).attr( "workday" + j, "true" ); } else { day = $( "<div class='dayFail' day='"+ j +"'>"+ t +"</div>" ); tr.find( ".day"+j ).append( day ); tr.find( "input" ).attr( "workday" + j, "false" ); } // Select only who worked day.bind( "click", function() { $( ".receipments" ).removeAttr( "checked" ); $( ".receipments[workday"+ $(this).attr( "day" ) +"='true']" ).attr( "checked", "checked" ); setCounterText(); saveCheckedPlayers(); }); if( !extendedMU && (j > 1) ) { tr.find( ".day" + j ).hide(); } } } } } // Check each company function checkCompany( idForm, idComp, i, n ) { setTimeout( function() { $.ajax({ url: getCurrentServer() + URLCompanyDetails + idComp, success: function( data ) { checkWorkResults( idComp, idForm, data ); if( i == n ) { enableButton( $( "#updateWork" ) ); $( "#updateWork" ).val( "Update jobs" ); $( "#updateWork" ).removeAttr( "counter" ); setValue( "muStorageSaveWorkedList", savedWorkedList.join( "&&" ) ); $( "#lastUpdateTime" ).text( new Date().toUTCString() ); setValue( "muStorageSaveLastTime", new Date().toUTCString() ); } else { var count = parseInt( $( "#updateWork" ).attr( "counter" ) ) - 1; $( "#updateWork" ).val( "Updating... " + count ); $( "#updateWork" ).attr( "counter", count ); } } }); }, 1000*i ); } // Check every company function checkWorkResults( idComp, idForm, data ) { var table = $( data ).find( "#productivityTable" ); var company = $( data ).find( ".testDivblue" ).eq(1).text().replace( "Company ", "" ); var rows = table.find( "tbody tr" ); for( var i=1; i<rows.length; i++ ) { var player = ""; var cols = $( rows[i] ).find( "td" ); if( cols.length > 0 ) { var name = $( cols[0] ).find( "a" ).text(); player = name; var pos = $( idForm ).find( "a[name='"+ name +"']" ); var tr = pos.parent().parent(); tr.find( ".companyName" ).append( "<a href='"+ getCurrentServer() + URLCompany + idComp +"'>"+ company +"</a>" ); if( cols.length == 12 ) { var skillValue = parseInt( $( cols[1] ).text() ); addSkill( tr, skillValue ); player += "," + skillValue + "," + idComp + "," + company; // View last 7 days var day; for( var j=0; j<7; j++ ) { var t = "-" + j; if( j == 0 ) { t = ""; } if( $( cols[11-j] ).find( "img" ).length == 0 ) { day = $( "<div class='dayOk' day='"+ j +"'>"+ t +"</div>" ); tr.find( ".day" + j ).append( day ); tr.find( "input" ).attr( "workday" + j, "true" ); player += "," + "true"; } else { day = $( "<div class='dayFail' day='"+ j +"'>"+ t +"</div>" ); tr.find( ".day"+j ).append( day ); tr.find( "input" ).attr( "workday" + j, "false" ); player += "," + "false"; } // Select only who worked day.bind( "click", function() { $( ".receipments" ).removeAttr( "checked" ); $( ".receipments[workday"+ $(this).attr( "day" ) +"='true']" ).attr( "checked", "checked" ); setCounterText(); saveCheckedPlayers(); }); if( !extendedMU && (j > 1) ) { tr.find( ".day" + j ).hide(); } } } savedWorkedList.push( player ); } } } // Add skill in MU storage list function addSkill( tr, skillVal ) { var posSkill = tr.find( ".noSkill" ); posSkill.removeClass( "noSkill" ); posSkill.addClass( "skill" ); posSkill.append( "<div>"+ skillVal +"</div>" ); posSkill.bind( "click", function() { var v = $(this).text(); $( ".skill" ).each( function() { if( v == $(this).text() ) { $(this).parent().find( "input" ).attr( "checked", "checked" ); } }); setCounterText(); saveCheckedPlayers(); }); } }; function createResourceVar( name ) { var input = document.createElement( "input" ); input.type = "hidden"; input.id = name; input.value = GM_getResourceURL( name ); document.body.appendChild( input ); } // Only execute on same frame (iframes with advertisments) if( window.top == window.self ) { // Inject our CSS GM_addStyle( GM_getResourceText( "myCustomCSS" ) ); // Resources //createResourceVar( "myQualityStar" ); // Inject our main script var script = document.createElement( "script" ); script.type = "text/javascript"; script.textContent = '(' + main.toString() + ')();'; document.body.appendChild( script ); }