-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpervers.js
More file actions
28 lines (28 loc) · 1.67 KB
/
Copy pathpervers.js
File metadata and controls
28 lines (28 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { numPad, formatGB, format } from "ze-lib.js";
/** @param {NS} ns */
export async function main(ns) {
ns.disableLog('sleep'); ns.clearLog();
if (ns.args.includes("tail")) ns.ui.openTail(); await ns.sleep(50); ns.ui.resizeTail(420, 550);
while (1) {
while (ns.cloud.getServerLimit() > ns.cloud.getServerNames().length && ns.getPlayer().money > ns.cloud.getServerCost(2)) {
ns.cloud.purchaseServer(`perver-${numPad(ns.cloud.getServerNames().length, 2)}`, 2);
}
for (const perver of ns.cloud.getServerNames()) {
const limit = isNaN(ns.args[0]) || ns.args[0] === true ? true : ns.getServer(perver).maxRam < ns.args[0],
smallerExists = ns.cloud.getServerNames().some(s => ns.getServer(s).maxRam < ns.getServer(perver).maxRam),
canUpgrade = ns.getServer(perver).maxRam < ns.cloud.getRamLimit(),
canAfford = ns.cloud.getServerUpgradeCost(perver, ns.getServer(perver).maxRam * 2) <= ns.getPlayer().money;
if (limit && !smallerExists && canUpgrade && canAfford) ns.cloud.upgradeServer(perver, ns.getServer(perver).maxRam * 2);
}
ns.clearLog();
ns.print(`Max Servers Allowed: ${ns.cloud.getServerLimit()}`);
ns.print(`Servers Owned: ${ns.cloud.getServerNames().length}`);
for (const perver of ns.cloud.getServerNames()) {
const cost = () => ns.cloud.getServerUpgradeCost(perver, ns.getServer(perver).maxRam * 2);
ns.print(`${perver} RAM: ${formatGB(ns.getServer(perver).maxRam * (2 ** 30))} Upgrade Cost: ${format(cost())}`);
}
if (!isNaN(ns.args[0]) && ns.cloud.getServerNames().every(s => ns.getServer(s).maxRam >= ns.args[0])
|| ns.cloud.getServerNames().every(s => ns.getServer(s).maxRam >= ns.cloud.getRamLimit())) ns.exit();
await ns.sleep(10);
}
}