NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Stock Autofill // @namespace PapaAndreas [2169463] // @version 1.0 // @description Autofills the values in the stock order page of a company // @author PapaAndreas [2169463] // @match https://www.torn.com/companies.php // @updateURL https://openuserjs.org/meta/PapaAndreas/Stock_Autofill.meta.js // @license MIT // @run-at document-end // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @connect api.torn.com // ==/UserScript== $(document).ajaxComplete((event, jqXHR, ajaxObj) => { if (jqXHR.responseText) { handle(jqXHR.responseText); } }); function handle(responseText) { if (responseText.trim().startsWith('<div id="stock_message"')) { var API_KEY = GM_getValue("API_KEY", "insert API Key"); if ($("#apikey").length == 0) { $('<input>').attr({ type: 'text', id: 'apikey', value: API_KEY }).appendTo('#stock'); var fillButton = $('<input type="button" class="btn-wrap silver" value="Autofill"/>'); fillButton.appendTo('#stock'); fillButton.click(function () { API_KEY = $("#apikey").first().val(); GM_xmlhttpRequest({ method: "GET", url: "https://api.torn.com/company?selections=detailed&key=" + API_KEY, onload: function (data) { data = JSON.parse(data.response); var storageSpace = data.company_detailed.upgrades.storage_space; var storageSpaceAvailable = storageSpace; if (storageSpace) { //API call was successfull: GM_setValue("API_KEY", API_KEY); } GM_xmlhttpRequest({ method: "GET", url: "https://api.torn.com/company?selections=stock&key=" + API_KEY, onload: function (data) { data = JSON.parse(data.response); var totalSold = 0; $.each(data.company_stock, function (index, value) { totalSold += value.sold_amount; var stock = (value.on_order + value.in_stock); if (stock > 0) storageSpaceAvailable -= stock; }); var totalStocksNeeded = 0; $.each(data.company_stock, function (index, value) { var sellingPercentage = value.sold_amount / totalSold; var stocksNeeded = (sellingPercentage * storageSpace) - (value.on_order + value.in_stock); if (stocksNeeded > 0) { totalStocksNeeded += stocksNeeded; } }); var freeSpaceFactor = storageSpaceAvailable / totalStocksNeeded; $.each(data.company_stock, function (index, value) { var sellingPercentage = value.sold_amount / totalSold; var stocksNeeded = (sellingPercentage * storageSpace) - (value.on_order + value.in_stock); if (stocksNeeded > 0) { stocksNeeded *= freeSpaceFactor; $('div:contains("' + index + '")').last().parent().find("input").val(Math.floor(stocksNeeded)).change(); } }); } }); } }); }); } } }