Files
bitburner-scripts/buyServer.js
T
2025-02-22 03:37:47 -07:00

61 lines
1.6 KiB
JavaScript

import { formatMoney } from "formatMoney.js";
var servers;
var money;
/** @param {NS} ns */
function buyServer(ns, ram) {
ns.purchaseServer("server-" + servers.length, ram);
}
/** @param {NS} ns */
function buyServerWithMaxRAM(ns) {
var ram = calculateServerWithMaxRAM(ns);
buyServer(ns, ram);
}
/** @param {NS} ns */
function calculateServerCost(ns, ram) {
ram = Math.pow(2, ram);
var cost = ns.getPurchasedServerCost(ram);
if(cost > money) {
ns.tprint("Cannot afford a server with " + ram + " GB of RAM!");
return false;
} else return cost;
}
/** @param {NS} ns */
function calculateServerWithMaxRAM(ns) {
var ram = 1;
var cost = 0;
for(var i = 20; i >= 0; i--) {
ram = Math.pow(2, i);
if(cost = calculateServerCost(ns, i)) {
if(cost <= money) {
break;
}
}
}
return ram;
}
/** @param {NS} ns */
export async function main(ns) {
servers = ns.getPurchasedServers();
money = ns.getServerMoneyAvailable("home");
if(ns.args.length == 0) {
buyServerWithMaxRAM(ns);
} else if(ns.args[0] == "--max" || ns.args[0] == "-m") {
var ram = calculateServerWithMaxRAM(ns);
ns.tprint("cost: " + formatMoney(ns.getPurchasedServerCost(ram)) + " | ram: " + ram + " GB");
} else if(ns.args.length == 2 && (ns.args[0] == "--ram" || ns.args[0] == "-r")) {
if(ns.args[1] == "max") {
buyServerWithMaxRAM(ns);
} else if(calculateServerCost(ns, ns.args[1])) {
buyServer(ns, ns.args[1]);
}
}
}