Files
The_Bitburner_Scripts/Mizzajl/home/ManagePserv.js
2024-10-21 03:32:32 +02:00

70 lines
2.1 KiB
JavaScript

/** @param {NS} ns */
export async function main(ns) {
ns.tail();
let aPserv = ns.getPurchasedServers(); //array of purchased servers
let nPserv = aPserv.length; //amount of purchased servers we have
let nMoney = ns.getServerMoneyAvailable("home"); //player money
let nPrevSize = 4; //nPrevSize is 4 so the first server we will buy is 8
//Purchase Servers
//idea is to purchase the first server at 8 gb, next one at 16, next at 32 and so on
for (let i = 0; nPserv < i; i++) {
nMoney = ns.getServerMoneyAvailable("home"); //check money for each iteration
if (nMoney >= ns.getPurchasedServerCost(nPrevSize * 2)) { //can we afford next server?
const sServer = ns.purchaseServer(`pserv-${toString(i).padStart(2, "0")}`, nPrevSize * 2); //purchase server with name pserv- + 0i
ns.print(`Purchased ${sServer} for ${nPrevSize * 2}`); //print tail message that we purchased server
nPrevSize *= 2; //increase nPrevSize for next iteration
nPserv++ //increase number of purchased servers
}
else {
ns.print(`Insufficient funds for pserv-${toString(i).padStart(2, "0")} ${nMoney} / ${ns.getPurchasedServerCost(nPrevSize * 2)}`);
await ns.sleep(5000);
}
}
ns.tprint("for loop purchase complete");
//upgrade servers
//idea is to upgrade the lowest server to match the highest (which should be 2^20 in size)
let nCurrentRAM;
let nLowestRAM = 2 ** 21;
let nHighestRAM = 0;
let sLowestPserv;
let sHighestPserv;
let nTotalPServRAM = 0;
for (let i = 0; i < nPserv; i++) {
nCurrentRAM = ns.getServerMaxRam(aPserv[i]);
nTotalPServRAM += nCurrentRAM;
if (nCurrentRAM < nLowestRAM) {
nLowestRAM = nCurrentRAM
sLowestPserv = aPservers[i];
}
if (nCurrentRAM > nHighestRAM) {
nHighestRAM = nCurrentRAM
sHighestPserv = aPserv[i];
}
}
//sLowestPserv should now be the lowest server
//sHighestPserv should now be the highest server
for (let i = 0; sLowestPserv < sHighestPserv ; i++) {
if (nMoney >= ns.getPurchasedServerUpgradeCost(sLowestPserv, 2^20)){
ns.upgradePurchasedServer(sLowestPserv, 2^20);
}
}
}