Advertisement
Guest User

hacknetbuy.ns

a guest
Dec 28th, 2021
425
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. /** @param {NS} ns **/
  2. export async function main(ns) {
  3. //args (upgradeLV,tickstoprint)
  4. var LVUps = 0;
  5. var RAMUps = 0;
  6. var CoreUps = 0;
  7. var Nodebuys = 0;
  8. var price = 0;
  9. var spent = 0;
  10. var updatetick = 0;
  11. var tickstoprint = ns.args[1] > 0 ? ns.args[1] : 200;
  12. var i = 0;
  13. var coresMaxed = false; //carry over maxed flags for "maxedNodes"
  14. var ramMaxed = false;
  15. var lvsMaxed = false;
  16. var nodesMaxed = false;
  17. var maxedNodes = 0;
  18. var maxedout = false; //exit condition: all nodes, all upgrades.
  19. while (!maxedout) {
  20. if (maxedNodes < ns.hacknet.numNodes()) {
  21. maxedNodes = 0;
  22. for (i = ns.hacknet.numNodes() - 1; i >= 0; i--) {
  23. var n = ns.hacknet.getNodeStats(i);
  24. price = ns.hacknet.getCoreUpgradeCost(i, 1);
  25. coresMaxed = n.cores == 16;
  26. if (!coresMaxed && price < ns.getPlayer().money) {
  27. ns.hacknet.upgradeCore(i, 1);
  28. CoreUps++;
  29. spent += price;
  30. }
  31. price = ns.hacknet.getRamUpgradeCost(i, 1);
  32. ramMaxed = n.ram == 64;
  33. if (!ramMaxed && price < ns.getPlayer().money) {
  34. ns.hacknet.upgradeRam(i, 1);
  35. RAMUps++;
  36. spent += price;
  37. }
  38. if (n.level + ns.args[0] > 200) var lv = (n.level + ns.args[0]) % 200;
  39. else if (ns.args[0] > 0) var lv = ns.args[0] - (n.level % ns.args[0]);
  40. else var lv = 1;
  41. price = ns.hacknet.getLevelUpgradeCost(i, lv);
  42. lvsMaxed = n.level == 200;
  43. if (!lvsMaxed && price < ns.getPlayer().money) {
  44. ns.hacknet.upgradeLevel(i, lv);
  45. LVUps += lv;
  46. spent += price;
  47. }
  48. maxedNodes += (coresMaxed && ramMaxed && lvsMaxed);
  49. }
  50. }
  51. price = ns.hacknet.getPurchaseNodeCost();
  52. nodesMaxed = ns.hacknet.numNodes() >= ns.hacknet.maxNumNodes();
  53. if (!nodesMaxed && price < ns.getPlayer().money) {
  54. ns.hacknet.purchaseNode();
  55. Nodebuys++;
  56. spent += price;
  57. }
  58. maxedout = (maxedNodes == ns.hacknet.maxNumNodes()) && nodesMaxed;
  59. //TODO: wrap notifier in func, make Atexit().
  60.  
  61. updatetick = (updatetick + 1) % tickstoprint;
  62. if (updatetick == 0 && (LVUps + RAMUps + CoreUps + Nodebuys) > 0) {
  63. var msg = "Bought ";
  64. if (LVUps) msg += LVUps + " levels, ";
  65. if (RAMUps) msg += RAMUps + " ram upgrades, ";
  66. if (CoreUps) msg += CoreUps + " Cores, ";
  67. if (Nodebuys) msg += Nodebuys + " nodes ";
  68. if (spent > 0) msg += "for $" + + spent.toFixed(2);
  69. ns.toast(msg, "info");
  70. }
  71. await ns.asleep(maxedNodes < ns.hacknet.numNodes() ? 200 : 2000); //slow it down if we didn't do the for loop
  72. }
  73. ns.toast("Hacknet Maxed out!");
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement