Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** @param {NS} ns **/
- export async function main(ns) {
- //args (upgradeLV,tickstoprint)
- var LVUps = 0;
- var RAMUps = 0;
- var CoreUps = 0;
- var Nodebuys = 0;
- var price = 0;
- var spent = 0;
- var updatetick = 0;
- var tickstoprint = ns.args[1] > 0 ? ns.args[1] : 200;
- var i = 0;
- var coresMaxed = false; //carry over maxed flags for "maxedNodes"
- var ramMaxed = false;
- var lvsMaxed = false;
- var nodesMaxed = false;
- var maxedNodes = 0;
- var maxedout = false; //exit condition: all nodes, all upgrades.
- while (!maxedout) {
- if (maxedNodes < ns.hacknet.numNodes()) {
- maxedNodes = 0;
- for (i = ns.hacknet.numNodes() - 1; i >= 0; i--) {
- var n = ns.hacknet.getNodeStats(i);
- price = ns.hacknet.getCoreUpgradeCost(i, 1);
- coresMaxed = n.cores == 16;
- if (!coresMaxed && price < ns.getPlayer().money) {
- ns.hacknet.upgradeCore(i, 1);
- CoreUps++;
- spent += price;
- }
- price = ns.hacknet.getRamUpgradeCost(i, 1);
- ramMaxed = n.ram == 64;
- if (!ramMaxed && price < ns.getPlayer().money) {
- ns.hacknet.upgradeRam(i, 1);
- RAMUps++;
- spent += price;
- }
- if (n.level + ns.args[0] > 200) var lv = (n.level + ns.args[0]) % 200;
- else if (ns.args[0] > 0) var lv = ns.args[0] - (n.level % ns.args[0]);
- else var lv = 1;
- price = ns.hacknet.getLevelUpgradeCost(i, lv);
- lvsMaxed = n.level == 200;
- if (!lvsMaxed && price < ns.getPlayer().money) {
- ns.hacknet.upgradeLevel(i, lv);
- LVUps += lv;
- spent += price;
- }
- maxedNodes += (coresMaxed && ramMaxed && lvsMaxed);
- }
- }
- price = ns.hacknet.getPurchaseNodeCost();
- nodesMaxed = ns.hacknet.numNodes() >= ns.hacknet.maxNumNodes();
- if (!nodesMaxed && price < ns.getPlayer().money) {
- ns.hacknet.purchaseNode();
- Nodebuys++;
- spent += price;
- }
- maxedout = (maxedNodes == ns.hacknet.maxNumNodes()) && nodesMaxed;
- //TODO: wrap notifier in func, make Atexit().
- updatetick = (updatetick + 1) % tickstoprint;
- if (updatetick == 0 && (LVUps + RAMUps + CoreUps + Nodebuys) > 0) {
- var msg = "Bought ";
- if (LVUps) msg += LVUps + " levels, ";
- if (RAMUps) msg += RAMUps + " ram upgrades, ";
- if (CoreUps) msg += CoreUps + " Cores, ";
- if (Nodebuys) msg += Nodebuys + " nodes ";
- if (spent > 0) msg += "for $" + + spent.toFixed(2);
- ns.toast(msg, "info");
- }
- await ns.asleep(maxedNodes < ns.hacknet.numNodes() ? 200 : 2000); //slow it down if we didn't do the for loop
- }
- ns.toast("Hacknet Maxed out!");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement