您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Put "Mission Commands" in the fleet notes.
当前为
- // ==UserScript==
- // @name Mission Queue
- // @namespace http://bitbucket/odahviing
- // @description Put "Mission Commands" in the fleet notes.
- // @include http://*.war-facts.com/fleet.php*
- // @grant GM_xmlhttpRequest
- // @version 2.0
- // ==/UserScript==
- // Version 1.0, 1.1, 1.2 - Carabas Amazing Script
- // Version 2.0 - Cohenman - Basic support in the new user interface, many bugs still
- /*
- To create a mission, start with the MISSION tags in the fleet notes.
- <MISSION step=1>
- </MISSION>
- They must both be on seperate lines. The mission tags are there to
- a) let you have other notes
- b) give a place for the script to save the current "step".
- The step=# is the current "step" of the mission queue.
- There are two ways to manually set the step. The first, obviously,
- is to edit the <MISSION> tag and press the "Take note!" button.
- The second, is to enter step:# into the current mission text box and press the button.
- There are two mission types. They are "mission" and "trade".
- Basic syntax:
- mission:[[restart]transfer|explore|colonize|jump];[planet|system|global|local]:[planetid|systemid|globalcoords|localcoords]
- trade:[buy|sell|buyall|sellall|refuel];outpost:outpostid;ship:shipid[;resource:amount[;resource:amount]etc]
- trade:buyall, trade:sellall and trade:refuel do not require the resource:amount.
- outpost and ship are always require for resource trades, however only outpost is
- required for the refuel command. The resource:all syntax is also supported.
- ex: trade:sell;outpost:123;ship:122456;oil:all;iron:50000;gold:all
- Please pay extra attention to the syntax. Each command is made up of several
- field:value pairs. Each part of the pair is seperated by a colon. Each pair is
- seperated by a semi-colon.
- Here are some examples:
- Basic trade mission:
- <MISSION step=1>
- mission:transfer;planet:12234
- trade:buyall;outpost:123;ship:293458
- mission:transfer;planet:12322
- trade:sellall;outpost:123;ship:293458
- mission:restart
- </MISSION>
- Colonize mission passing through a wormhole, refueling at a warpnet, and colonizing a planet:
- <MISSION step=1>
- mission:transfer;planet:12345
- mission:transfer;planet:12346
- mission:transfer;planet:12347
- mission:jump;local:85,-20,6
- mission:transfer;global:12234,-32468,560
- trade:refuel;outpost:123
- mission:colonize;planet:12348
- </MISSION>
- */
- /* Greasemonkey 20080112 workaround */
- function wrap(f) {
- return function () {
- setTimeout.apply(window, [f, 0].concat([].slice.call(arguments)));
- };
- }
- /* End of workaround */
- function main() {
- if (document.evaluate("//b[text()='In Transit']", document, null, XPathResult.BOOLEAN_TYPE, null).booleanValue) {
- return;
- }
- var notes = document.getElementById('fleetNoteContent');
- //var note_submit = notes.parentNode.getElementsByTagName('input')[2];
- var t;
- var b;
- var s;
- var p;
- var form2;
- var mnum;
- var gets = 0;
- var restypes = new Array('iron', 'copper', 'silver', 'titanium', 'gold', 'uranium', 'platinum', 'diamonds', 'oil', 'water', 'food');
- var fleetid = window.location.href.match(/fleet=(\d+)/);
- if (fleetid) {
- fleetid = fleetid[1];
- } else {
- return;
- }
- var mission_notes = notes.value.match(/<MISSION step=(\d+)>\n([\s\S]+?)\n<\/MISSION>/);
- if (mission_notes) {
- t = document.createElement('input');
- b = document.createElement('input');
- s = document.createElement('input');
- t.setAttribute('class', 'text');
- t.setAttribute('type', 'text');
- t.setAttribute('id', 'missionbox');
- t.setAttribute('size', '50');
- b.setAttribute('class', 'warn');
- b.setAttribute('type', 'button');
- b.setAttribute('id', 'missiondo');
- b.setAttribute('onclick', 'missionDo(document.getElementById("missionbox").value)');
- s.setAttribute('class', 'text');
- s.setAttribute('type', 'text');
- s.setAttribute('id', 'statusbox');
- s.setAttribute('size', '60');
- s.disabled = true;
- var fleetFrame = document.getElementById('fleetNote');
- form2 = fleetFrame.getElementsByClassName('highlight fullwidth padding5')[0];
- p = document.createElement('p');
- p.appendChild(t);
- p.appendChild(b);
- p.appendChild(document.createElement('br'));
- p.appendChild(s);
- form2.appendChild(p);
- updateMission();
- }
- function updateMission() {
- var missions = mission_notes[2].split("\n");
- mnum = mnum != undefined ? mnum : mission_notes[1] - 1;
- mnum = (missions[mnum] && missions[mnum].indexOf('restart') == 8) ? 0 : mnum;
- var current_mission = missions[mnum] ? missions[mnum] : 'done';
- if (current_mission.indexOf('done') == 0) {
- b.value = "Restart";
- } else if (current_mission.indexOf('mission') == 0) {
- b.value = "Launch";
- } else if (current_mission.indexOf('trade') == 0) {
- b.value = "Trade";
- }
- t.value = current_mission;
- }
- function missionDo(mission) {
- // Do Mission stuff
- var url = 'http://' + window.location.hostname + '/';
- var type;
- var subtype;
- var marray = mission.split(';');
- for (var i = 0, len = marray.length; i < len; i++) {
- var m = marray[i].split(':');
- // Step
- if (m[0] == 'step') {
- mnum = m[1] - 1;
- saveMission(mnum);
- updateMission();
- return;
- }
- // Done
- if (m[0] == 'done') {
- mnum = 0;
- updateMission();
- return;
- }
- // Mission
- if (type == 'mission') {
- switch (m[0]) {
- case 'planet':
- url += '&tworld2=' + m[1];
- break;
- case 'system':
- url += '&tsystem=' + m[1];
- break;
- case 'colony':
- url += '&tcolony2=' + m[1];
- break;
- case 'global':
- url += '&tpos=global&rawcoords=' + encodeURIComponent(m[1]);
- break;
- case 'local':
- url += '&tpos=local&rawcoords=' + encodeURIComponent(m[1]);
- break;
- default:
- break;
- }
- }
- if (m[0] == 'mission') {
- url += 'fleet_navigation.php?fleet=' + fleetid;
- switch (m[1]) {
- case 'transfer':
- case 'explore':
- case 'transport':
- case 'colonize':
- case 'jump':
- break;
- default:
- m[1] = 'transfer';
- }
- url += '&verify=1&mtype=' + m[1];
- type = 'mission';
- }
- // Trade
- if (m[0] == 'trade') {
- var outpost;
- var colony;
- var ship;
- switch (m[1]) {
- case 'refuel':
- type = 'refuel';
- case 'buy':
- case 'buyall':
- case 'sell':
- case 'sellall':
- break;
- default:
- s.value = "Syntax Error!";
- return;
- }
- subtype = m[1];
- }
- if ((outpost && ship) || colony) {
- type = 'trade';
- }
- if (type != 'trade') {
- switch (m[0]) {
- case 'outpost':
- outpost = m[1];
- url += 'outposttrade.php?fleet=' + fleetid + '&outpost=' + m[1];
- outpost = 1;
- if (type == 'refuel') {
- execMission('trade', url + '&refuel=1');
- return;
- }
- break;
- case 'ship':
- ship = m[1];
- /*url += '&shipselect='+m[1]; ship=1;*/
- break;
- case 'colony':
- colony = m[1];
- break;
- }
- }
- if (((outpost && ship) || colony) && subtype && subtype != 'load' && subtype != 'unload') {
- if (outpost) {
- url += 'outposttrade.php?fleet=' + fleetid + '&outpost=' + outpost + '&shipselect=' + ship;
- } else if (colony) {
- url += 'cargo_fleet.php?posted=1&fleet=' + fleetid + '&colony=' + colony;
- }
- if (mission.indexOf('all') != -1 || mission.indexOf('%') != -1) {
- getResources(subtype, url, mission);
- return;
- }
- switch (subtype) {
- case 'refuel':
- break;
- case 'sell':
- subtype = 'unload';
- break;
- case 'buy':
- subtype = 'load';
- break;
- //case 'sellall': getResources('sell',url,mission);return;
- //case 'buyall': getResources('buy',url,mission);return;
- default:
- s.value = 'Syntax Error!';
- return;
- }
- }
- if (type == 'trade') {
- if (subtype == 'load' || subtype == 'unload') {
- switch (m[0]) {
- case 'iron':
- case 'copper':
- case 'silver':
- case 'titanium':
- case 'gold':
- case 'uranium':
- case 'platinum':
- case 'diamonds':
- case 'oil':
- case 'water':
- case 'food':
- break;
- default:
- s.value = 'Syntax Error!';
- return;
- }
- // Grab trade URL in the background.
- if (outpost) {
- execMission(type, url + '&cargo_type=' + m[0] + '&lu' + m[0] + '=' + subtype + '&' + m[0] + '=' + m[1]);
- } else if (colony) {
- url += '&lu' + m[0] + '=' + subtype + '&' + m[0] + '=' + m[1];
- }
- }
- }
- }
- // Mission Stuff
- // Go to mission URL
- execMission(type, url);
- }
- exportFunction(missionDo, unsafeWindow, {defineAs: "missionDo"});
- window.saveMission = wrap(function (mnum) {
- mnum++;
- s.value += 'Saving Mission... ';
- var new_notes = notes.value.replace(/step=\d+/, 'step=' + mnum);
- var url = 'http://' + window.location.hostname + '/notemanager.php';
- var pars = 'type=fleet&id=' + fleetid + '¬e=' + encodeURIComponent(new_notes);
- GM_xmlhttpRequest({
- method : 'POST',
- url : url,
- headers : {
- 'User-agent' : 'Mozilla/4.0 (compatible) Greasemonkey',
- 'Accept' : 'application/atom+xml,application/xml,text/xml,text/html',
- 'Content-Type' : 'application/x-www-form-urlencoded'
- },
- data : pars,
- onload : function () {
- s.value += 'Done.';
- notes.value = new_notes
- }
- });
- });
- window.execMission = wrap(function (type, url) {
- if (type == 'mission') {
- mnum++;
- saveMission(mnum);
- /*updateMission();*/
- s.value = 'Launching...';
- window.location = url;
- } else if (type == 'trade') {
- pars = url.split('?')[1];
- url = url.split('?')[0];
- gets++;
- s.value = 'Background Processes: ' + gets;
- GM_xmlhttpRequest({
- method : 'POST',
- url : url,
- data : pars,
- headers : {
- 'User-agent' : 'Mozilla/4.0 (compatible) Greasemonkey',
- 'Accept' : 'application/atom+xml,application/xml,text/xml,text/html',
- 'Content-Type' : 'application/x-www-form-urlencoded'
- },
- onload : function (responseDetails) {
- gets--;
- s.value = 'Background Processes: ' + gets;
- if (gets == 0) {
- mnum++;
- s.value = '';
- updateMission();
- saveMission(mnum);
- }
- }
- });
- }
- });
- window.getResources = wrap(function (buysell, url, mission) {
- s.value = 'Obtaining Data...';
- mission = mission.replace('buyall', 'buy').replace('sellall', 'sell');
- var resources = new Array();
- var marray = mission.split(';');
- var new_mission = new Array();
- for (var i = 0, len = marray.length; i < len; i++) {
- var res = marray[i].split(':');
- if (restypes.indexOf(res[0]) != -1) {
- if (res[1].indexOf('%') != -1) {
- res[1] = res[1].replace('%', '') / 100;
- }
- resources[res[0]] = res[1];
- } else {
- new_mission.push(res[0] + ':' + res[1]);
- }
- }
- mission = new_mission.join(';');
- if (buysell == 'buyall' || buysell == 'sellall') {
- for (i in restypes) {
- resources[i] = 'all';
- }
- }
- GM_xmlhttpRequest({
- method : 'GET',
- url : url,
- headers : {
- 'User-agent' : 'Mozilla/4.0 (compatible) Greasemonkey',
- 'Accept' : 'application/atom+xml,application/xml,text/xml,text/html',
- 'Content-Type' : 'application/x-www-form-urlencoded'
- },
- onload : function (responseDetails) {
- var text = responseDetails.responseText;
- //GM_log(text);
- var station = text.match(/document\.getElementById\('lo\w+'\)\.checked = true; document\.getElementById\('\w+'\)\.value = \d+/g);
- var cargo = text.match(/document\.getElementById\('ul\w+'\)\.checked = true; document\.getElementById\('\w+'\)\.value = \d+/g);
- var res = (buysell.indexOf('buy') != -1) ? station : cargo;
- if (res) {
- //var resources = new Array();
- for (var i = 0, len = res.length; i < len; i++) {
- var thisres = res[i].match(/document\.getElementById\('(\w+)'\)\.value = (\d+)/);
- if (buysell == 'buyall' || buysell == 'sellall' || resources[thisres[1]] == 'all') {
- resources[thisres[1]] = thisres[2];
- }
- if (resources[thisres[1]] < 1 && resources[thisres[1]] > 0) {
- resources[thisres[1]] = Math.round(resources[thisres[1]] * thisres[2]);
- }
- }
- res = new Array();
- for (i in resources) {
- if (resources[i] > 0) {
- res.push(i + ':' + resources[i]);
- }
- }
- if (res == '') {
- s.value = 'The station seems to be empty! ';
- mnum++;
- updateMission();
- saveMission(mnum);
- return;
- }
- mission += ';' + res.join(';');
- // Finally recall missionDo()
- window.missionDo(mission);
- } else {
- s.value = 'Your cargo holds are empty! ';
- mnum++;
- updateMission();
- saveMission(mnum);
- return
- }
- }
- });
- });
- }
- main();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址