70 lines
2.1 KiB
JavaScript
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
} |