Advertisement
rembo26

buystuff

Jan 19th, 2022 (edited)
1,124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /** @param {NS} ns **/
  2. import { t } from "t.js"
  3.  
  4. export async function main(ns) {
  5.     ns.disableLog('sleep');
  6.     ns.disableLog('getServerMoneyAvailable');
  7.  
  8.     var costlist = []; // numbered array with name:upgrade name, cost:upgrade cost
  9.     var nn = ns.hacknet.numNodes();
  10.     if (nn == 0) {
  11.         var money = ns.getServerMoneyAvailable("home");
  12.         while (money < ns.hacknet.getPurchaseNodeCost()) {
  13.             await ns.sleep(1000);
  14.             var money = ns.getServerMoneyAvailable("home");
  15.         }
  16.         ns.hacknet.purchaseNode();
  17.         ++nn
  18.     }
  19.     var clevel;
  20.     var dlevel;
  21.     var elevel;
  22.     var ram;
  23.  
  24.     /** upgrades list
  25.      * a = upgrade pservs
  26.      * b = buy additional hacknet
  27.      * c = hacknet 'level' upgrade
  28.      * d = hacknet 'ram' upgrade
  29.      * e = hacknet 'cores' upgrade
  30.      **/
  31.  
  32.     function calca() {
  33.         if (!ns.serverExists('pserv-0')) {
  34.             ram = 32;
  35.             var costa = ns.getPurchasedServerCost(ram);
  36.             var oba = { name: upgradea, cost: costa, test: 'Server Upgrade' };
  37.             costlist.push(oba);
  38.         }
  39.         if (ns.serverExists('pserv-0')) {
  40.             ram = ns.getServerMaxRam('pserv-0');
  41.             if (ns.serverExists('pserv-24')) { var costa = ns.getPurchasedServerCost(ram * 2) }
  42.             if (!ns.serverExists('pserv-24')) { var costa = ns.getPurchasedServerCost(ram) }
  43.             var oba = { name: upgradea, cost: costa, test: 'Server Upgrade' };
  44.             costlist.push(oba);
  45.         }
  46.     }
  47.  
  48.     function calcb() {
  49.         var costb = ns.hacknet.getPurchaseNodeCost();
  50.         var obb = { name: upgradeb, cost: costb, test: 'New Hacknet' };
  51.         costlist.push(obb);
  52.     }
  53.  
  54.     function calcc() {
  55.         var nn = ns.hacknet.numNodes();
  56.         var cclist = [];
  57.         for (var o = 0; o < nn; ++o) {
  58.             var rv = ns.hacknet.getNodeStats(o);
  59.             var rc = { level: rv.level, cost: (ns.hacknet.getLevelUpgradeCost(o, 1)) };
  60.             cclist.push(rc);
  61.         }
  62.         cclist.sort(function (a, b) { return a.cost - b.cost });
  63.         var cs = cclist[0];
  64.         clevel = cs.level;
  65.         var costc = cs.cost;
  66.         var obc = { name: upgradec, cost: costc, test: 'Hacknet Level' };
  67.         costlist.push(obc);
  68.     }
  69.  
  70.     function calcd() {
  71.         var nn = ns.hacknet.numNodes();
  72.         var dclist = [];
  73.         for (var o = 0; o < nn; ++o) {
  74.             var rv = ns.hacknet.getNodeStats(o);
  75.             var rc = { ram: rv.ram, cost: (ns.hacknet.getRamUpgradeCost(o, 1)) };
  76.             dclist.push(rc);
  77.         }
  78.         dclist.sort(function (a, b) { return a.cost - b.cost });
  79.         var ds = dclist[0];
  80.         dlevel = ds.ram;
  81.         var costd = ds.cost;
  82.         var obd = { name: upgraded, cost: costd, test: 'Hacknet Ram' };
  83.         costlist.push(obd);
  84.     }
  85.  
  86.     function calce() {
  87.         var nn = ns.hacknet.numNodes();
  88.         var eclist = [];
  89.         for (var o = 0; o < nn; ++o) {
  90.             var rv = ns.hacknet.getNodeStats(o);
  91.             var rc = { cores: rv.cores, cost: (ns.hacknet.getCoreUpgradeCost(o, 1)) };
  92.             eclist.push(rc);
  93.         }
  94.         eclist.sort(function (a, b) { return a.cost - b.cost });
  95.         var es = eclist[0];
  96.         elevel = es.cores;
  97.         var coste = es.cost;
  98.         var obe = { name: upgradee, cost: coste, test: 'Hacknet Core' };
  99.         costlist.push(obe);
  100.     }
  101.  
  102.     function listsort() {
  103.         costlist.sort(function (a, b) { return a.cost - b.cost });
  104.     }
  105.  
  106.     async function upgradea() {
  107.         var money = ns.getServerMoneyAvailable("home");
  108.         while ((ns.getPurchasedServerCost(ram) * 25) <= money) {
  109.             if (ns.getPurchasedServerCost(ram * 2) <= money) {
  110.                 ram = ram * 2;
  111.             }
  112.             if (ns.getPurchasedServerCost(ram * 2) >= money) { break; }
  113.         }
  114.         var money = ns.getServerMoneyAvailable("home");
  115.         for (var pservi = 0; pservi < 25; ++pservi) {
  116.             var hostname = ("pserv-" + pservi).toString();
  117.             ns.print(hostname);
  118.             var money = ns.getServerMoneyAvailable("home");
  119.             if (ns.serverExists(hostname)) { if (ns.getPurchasedServerMaxRam(hostname) >= ram) { ns.print('skip'); continue; } }
  120.             while (ns.getPurchasedServerCost(ram) >= money) {
  121.                 await ns.sleep(10000);
  122.                 var money = ns.getServerMoneyAvailable("home");
  123.             }
  124.             var threadcount = Math.floor(ram / (ns.getScriptRam("hackq.script", "home")));
  125.             var target = t(ns);
  126.             var p = 0;
  127.             if ((ram > 512) && (target.length >= 25)) {
  128.                 var p = pservi;
  129.             }
  130.             if (ns.serverExists(hostname)) {
  131.                 ns.killall(hostname);
  132.                 ns.deleteServer(hostname);
  133.             }
  134.             ns.purchaseServer(hostname, ram);
  135.             await ns.scp("hackq.script", "home", hostname);
  136.             ns.exec("hackq.script", hostname, threadcount, target[p]);
  137.         }
  138.  
  139.         costlist.shift();
  140.         calca();
  141.         listsort();
  142.     }
  143.  
  144.     async function upgradeb() {
  145.         var nn = ns.hacknet.numNodes();
  146.         var c = 1, d = 1, e = 1;
  147.         var money = ns.getServerMoneyAvailable("home");
  148.         ns.hacknet.purchaseNode();
  149.         while (!(clevel > c) && (dlevel > d) && (elevel > e)) {
  150.             var money = ns.getServerMoneyAvailable("home");
  151.             while ((money <= ns.hacknet.getLevelUpgradeCost(nn, 1)) && (money <= ns.hacknet.getRamUpgradeCost(nn, 1)) && (money <= ns.hacknet.getCoreUpgradeCost(nn, 1))) {
  152.                 await ns.sleep(10000);
  153.                 var money = ns.getServerMoneyAvailable("home");
  154.             }
  155.             if (money >= ns.hacknet.getLevelUpgradeCost(nn, 1)) {
  156.                 ns.hacknet.upgradeLevel(nn, 1);
  157.                 ++c;
  158.             }
  159.             var money = ns.getServerMoneyAvailable("home");
  160.             if (money >= ns.hacknet.getRamUpgradeCost(nn, 1)) {
  161.                 ns.hacknet.upgradeRam(nn, 1);
  162.                 d = d * 2;
  163.             }
  164.             var money = ns.getServerMoneyAvailable("home");
  165.             if (money >= ns.hacknet.getCoreUpgradeCost(nn, 1)) {
  166.                 ns.hacknet.upgradeCore(nn, 1);
  167.                 ++e;
  168.             }
  169.             await ns.sleep(10);
  170.         }
  171.         costlist.shift();
  172.         calcb();
  173.         listsort();
  174.     }
  175.  
  176.     async function upgradec() {
  177.         var nn = ns.hacknet.numNodes();
  178.         for (var z = 0; z < nn; ++z) {
  179.             var rv = ns.hacknet.getNodeStats(z);
  180.             if (rv.level > clevel) { continue; }
  181.             var money = ns.getServerMoneyAvailable("home");
  182.             while (money < ns.hacknet.getLevelUpgradeCost(z, 1)) {
  183.                 await ns.sleep(10000);
  184.                 var money = ns.getServerMoneyAvailable("home");
  185.             }
  186.             ns.hacknet.upgradeLevel(z, 1);
  187.         }
  188.         costlist.shift();
  189.         calcc();
  190.         listsort();
  191.     }
  192.  
  193.     async function upgraded() {
  194.         var nn = ns.hacknet.numNodes();
  195.         for (var z = 0; z < nn; ++z) {
  196.             var rv = ns.hacknet.getNodeStats(z);
  197.             if (rv.ram > dlevel) { continue; }
  198.             var money = ns.getServerMoneyAvailable("home");
  199.             while (money < ns.hacknet.getRamUpgradeCost(z, 1)) {
  200.                 await ns.sleep(10000);
  201.                 var money = ns.getServerMoneyAvailable("home");
  202.             }
  203.             ns.hacknet.upgradeRam(z, 1);
  204.         }
  205.         costlist.shift();
  206.         calcd();
  207.         listsort();
  208.     }
  209.  
  210.     async function upgradee() {
  211.         var nn = ns.hacknet.numNodes();
  212.         for (var z = 0; z < nn; ++z) {
  213.             var rv = ns.hacknet.getNodeStats(z);
  214.             if (rv.cores > elevel) { continue; }
  215.             var money = ns.getServerMoneyAvailable("home");
  216.             while (money < ns.hacknet.getCoreUpgradeCost(z, 1)) {
  217.                 await ns.sleep(10000);
  218.                 var money = ns.getServerMoneyAvailable("home");
  219.             }
  220.             ns.hacknet.upgradeCore(z, 1);
  221.         }
  222.         costlist.shift();
  223.         calce();
  224.         listsort();
  225.     }
  226.  
  227.     calca();
  228.     calcb();
  229.     calcc();
  230.     calcd();
  231.     calce();
  232.     listsort();
  233.  
  234.     while ((nn < ns.hacknet.maxNumNodes()) && (ram < ns.getPurchasedServerMaxRam())) {
  235.         var lob = costlist[0];
  236.         var t1 = costlist[1];
  237.         var t2 = costlist[2];
  238.         var t3 = costlist[3];
  239.         var t4 = costlist[4];
  240.         ns.print('--------------------------------------------------');
  241.         ns.print(lob.test, " ", ns.nFormat(lob.cost, '$ 0.00a'), " | ", t1.test, " ", ns.nFormat(t1.cost, '$ 0.00a'), " | ", t2.test, " ", ns.nFormat(t2.cost, '$ 0.00a'), " | ", t3.test, " ", ns.nFormat(t3.cost, '$ 0.00a'), " | ", t4.test, " ", ns.nFormat(t4.cost, '$ 0.00a'));
  242.         ns.print('--------------------------------------------------');
  243.         await lob.name();
  244.         await ns.sleep(10000);
  245.     }
  246. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement