diff options
Diffstat (limited to 'bitburnerFiles1026/servers.js')
-rw-r--r-- | bitburnerFiles1026/servers.js | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/bitburnerFiles1026/servers.js b/bitburnerFiles1026/servers.js new file mode 100644 index 0000000..af82de7 --- /dev/null +++ b/bitburnerFiles1026/servers.js @@ -0,0 +1,134 @@ + +// enter ram size, number of servers, upgrade yes or no. + + +/** @param {NS} ns */ +export async function main(ns) { + const HOME = "home"; + let size = ns.args[0]; // int; home many GB of ram to buy standard: 2048 + let number = ns.args[1]; // int; how many pservs to obtain standard: "max" + const upgrade = ns.args[2]; // bool; does it upgrade existing pservs standard: true + const debug = ns.args[3]; // bool; does it log what happens standard: false + const LIMIT = 64000; // sets the max on how much ram a pserv can have (64 TB) + + if (size == "--help") { + ns.tprint("\n 1st arg is the Ram size of the servers; does not do anything if upgrade is true; Mandatory.\n 2nd arg is the number of servers; does not do anything if upgrade is true; default to 24.\n 3rd arg is whether to continously upgrade servers; default to false.\n 4th arg is whether to enable debug logs; default is false."); + ns.exit(); + } + if (debug != true) { + ns.disableLog("getServerMaxRam"); + ns.disableLog("sleep"); + ns.disableLog("getServerMoneyAvailable"); + } + + if (size === undefined) { + ns.print("Arguments for this script are RAM size of the servers, number of servers, and true or false for if existing servers should be upgraded."); + ns.exit(); + } else if (Math.log2(size) % 1 != 0) { + ns.print("The RAM size must be a power of two."); + ns.exit(); + } else if (number === undefined) { + number = 1; + } if (number > 25 || number == "max") { + number = 25; + ns.print("The Maximum number of servers is 25. Reverting to 25 servers"); + } + + if (upgrade) { + const homeram = ns.getServerMaxRam(HOME); + let fullservs = 0; + while (fullservs < 24) { + // start a for loop that goes through each server name + for (let i = 0; i < number; i++) { + // set the server name + let serv; + if (i < 10) { + serv = "pserv-0" + i; + } else { + serv = "pserv-" + i; + } + // check if the server already exists, if it does, upgrade it up to 1/2 of home + if (ns.serverExists(serv)) { + let servram = ns.getServerMaxRam(serv); + // upgrading until server ram is 1/2 home ram + if (servram < LIMIT) { + // wait to upgrade the server until we have enough money + if (ns.getPurchasedServerUpgradeCost(serv, servram * 2) > ns.getServerMoneyAvailable(HOME)) { + ns.print("Not enough money yet to upgrade ", serv); + ns.print("Need ", ns.getPurchasedServerUpgradeCost(serv, servram * 2), " to upgrade ", serv); + while (ns.getPurchasedServerUpgradeCost(serv, servram * 2) > ns.getServerMoneyAvailable(HOME)) { + await ns.sleep(60000); + } + } + ns.print("Upgrading ", serv, " from ", servram, " to ", servram * 2); + ns.upgradePurchasedServer(serv, servram * 2); + } + } else { + // wait to buy the server until we have enough money + while (ns.getPurchasedServerCost(size) > ns.getServerMoneyAvailable(HOME)) { + ns.print("Not enough money yet for new server."); + await ns.sleep(60000); + } + // buy the server (root.js will take care of hacking) + ns.purchaseServer(serv, size); + } + } + for (let i = 0; i < number; i++) { + // set the server name + let serv = "pserv-" + i; + // check if the server already exists, if it does, see if it is upgraded + if (ns.serverExists(serv)) { + let servram = ns.getServerMaxRam(serv); + // counting how many servers are fully upgraded + if (servram >= LIMIT) { + fullservs++; + } else { + fullservs = 0; + break; + } + } + } + await ns.sleep(100); + } + ns.print("All servers fully upgraded"); + } else { + // start a for loop that goes through each server name + for (let i = 0; i < number; i++) { + // set the server name + let serv; + if (i < 10) { + serv = "pserv-0" + i; + } else { + serv = "pserv-" + i; + } + // check if the server already exists, if it does, skip it + for (let j = 0; j < 24 && ns.serverExists(serv); j++) { + if ((i + j) < 10) { + serv = "pserv-0" + (i + j); + } else { + serv = "pserv-" + (i + j); + } + if ((i + j) >= 24) { + ns.print("Maximum amount of purchased servers acquired."); + ns.exit(); + } + } + // wait to buy the server until we have enough money + while (ns.getPurchasedServerCost(size) > ns.getServerMoneyAvailable(HOME)) { + ns.print("Not enough money yet for new server."); + await ns.sleep(60000); + } + // buy the server (root.js will take care of hacking) + ns.purchaseServer(serv, size); + } + } + + if (debug == true) { + ns.print("Debug time!"); + await ns.sleep(60000); + } +} + + +// enter ram size, number of servers, upgrade yes or no. +// auto copy and exec hack.js at maximum threads
\ No newline at end of file |