您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Cargo Calc
当前为
// ==UserScript== // @name INARA Cargo Ext // @namespace http://tampermonkey.net/ // @version 0.1 // @description Cargo Calc // @author DrFreez // @match http://inara.cz/cmdr-cargo/* // @match http://inara.cz/cmdr-cargo // @match https://inara.cz/cmdr-cargo/* // @match https://inara.cz/cmdr-cargo // ==/UserScript== (function() { 'use strict'; var $conteiner = $('.inventorymaterialcont'); var $input = $('<input class="spinner retries inara-cargo-ext" type="number" step="1" />'); var materialType = {}; var lastType; $('> div', $conteiner).each(function(){ var $el = $(this); if($el.hasClass('inventorytitle')){ lastType = $el.text(); } else if ($el.hasClass('inventorymaterial')) { materialType[$('a', $el).text()] = lastType; } }); $('.flexmiddle').prepend('<h2 class="header">crafting materials</h2><div class="mainblock tableblocksub"><table class="subtable tablesorter" id="inara-cargo-ext"><thead><tr><th class="lineright">Material</th><th class="lineright">Type</th><th class="lineright">Need</th><th>Have</th></tr></thead><tbody></tbody></table></div>'); var $blueprintList = $('.flexrightwide .mainblock'); var $table = $('#inara-cargo-ext'); var $tbody = $('tbody', $table); var checkHaveNeed = function() { $('tr', $tbody).each(function(){ var $tr = $(this); if (parseInt($('td:eq(3) input', $tr).val()) >= parseInt($('td:eq(2)', $tr).text())) { $('td:eq(0) a', $tr).addClass('positive'); } else { $('td:eq(0) a', $tr).removeClass('positive'); } }); }; var calculateNeed = function () { var materials = {}; $blueprintList.each(function(){ var $block = $(this); var $input = $('input', $block); var blueprintsTries = parseInt($input.val()); $('> span', $block).each(function(){ var $el = $(this); var materialName; if ($el.data('name') === undefined) { materialName = 'Material ' + $('a', $el).text(); $el.data('name', materialName); } else { materialName = $el.data('name'); } var materialNeed = parseInt(($('> span', $el).text().replace(/x$/i, ''))); if (materials[materialName] === undefined) { materials[materialName] = 0; } materials[materialName] += blueprintsTries * materialNeed; }); }); $.each(materials, function(materialName, need){ $('tr[data-name="' + materialName + '"] td:eq(2)', $tbody).empty().append(need); }); }; var saveValues = function() { var data = {}; $('input.inara-cargo-ext').each(function(){ var $input = $(this); data[$input.attr('name')] = $input.val(); }); localStorage.setItem('inara-cargo-ext', JSON.stringify(data)); }; var loadValues = { data: JSON.parse(localStorage.getItem('inara-cargo-ext')), get: function(name, defaultValue) { if (loadValues.data !== null && loadValues.data[name] !== undefined) { return loadValues.data[name]; } return defaultValue; } }; $blueprintList.each(function(){ var $block = $(this); var blueprintName = 'Blueprint ' + $block.prev('h3').text(); $('.textright', $block).empty().append($input.clone().attr('name', blueprintName).val(loadValues.get(blueprintName, 1))).css('height', 20); $('> span', $block).each(function(){ var $el = $(this); var $elClone = $el.clone(); var materialName = 'Material ' + $('a', $elClone).text(); var $tr = $('tr[data-name="' + materialName + '"]', $table); if ($tr.length === 0) { $tr = $('<tr data-name="' + materialName + '"><td class="lineright"></td><td class="lineright"></td><td class="lineright"></td><td class="lineright"></td></tr>'); $('> span', $elClone).remove(); $elClone.contents().filter(function() { return this.nodeType == 3; }).remove(); $('td:eq(0)', $tr).css({height: 20}).append($el.prev().clone()); $('td:eq(0)', $tr).append($elClone); $('td:eq(1)', $tr).append(materialType[$('a', $elClone).text()]); $('td:eq(3)', $tr).css({width: 70}).append($input.clone().attr('name', materialName).val(loadValues.get(materialName, 0))); $tbody.append($tr); } }); }); $('input.inara-cargo-ext').parent().hover(function() { $(this).find(".spinner").spinner({min: 0}); }, function() { $(this).find(".spinner").spinner("destroy"); }); $('body').on('click', '.ui-spinner-button', function(){ $('input.inara-cargo-ext', $(this).parent()).change(); }); $('body').on('change', 'input.inara-cargo-ext', function(){ saveValues(); calculateNeed(); checkHaveNeed(); }); calculateNeed(); checkHaveNeed(); })();