The3vilM0nk3y

ServerManager

Apr 17th, 2022
1,259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /** @param {NS} ns */
  2. export async function main(ns) {
  3.     var ram = ns.args[0];
  4.     var canBuy = true;
  5.     var maxSize = ns.getPurchasedServerMaxRam();
  6.     ns.tprint("Next Server Cost - " + + ns.getPurchasedServerCost(ram));
  7.     while (canBuy) {
  8.         let servers = ns.getPurchasedServers();
  9.         let cost = ns.getPurchasedServerCost(ram)
  10.         // Check if we have enough money to purchase a server
  11.         if (ns.getServerMoneyAvailable("home") > cost) {
  12.             //check if we are at max
  13.             if (servers.length == ns.getPurchasedServerLimit()) {
  14.                 //find the smallest memory server we have
  15.                 //ns.tprint(JSON.stringify(servers));
  16.                 ns.tprint("At max servers, attempting to sell smallest server.");
  17.                 let smallest = [servers[0], ns.getServerMaxRam(servers[0])];
  18.                 for (let server of servers) {
  19.                     //ns.tprint("Checking server - " + server);
  20.                     let r = ns.getServerMaxRam(server);
  21.                     if (r < smallest[1]) {
  22.                         smallest = [server, r];
  23.                     }
  24.                 }
  25.                 //check if smallest server has been maxed
  26.                 if (smallest[1] == maxSize) {
  27.                     //Notify and end script. We are done here.
  28.                     ns.tprint("We have reached max servers at max size!!!!!");
  29.                     canBuy = false;
  30.                 } else {
  31.                     //end all running scripts on the server
  32.                     ns.killall(smallest[0]);
  33.                     //delete it
  34.                     if (ns.deleteServer(smallest[0])) {
  35.                         ns.tprint(smallest[0] + " removed to make room for new server.");
  36.                     } else {
  37.                         ns.tprint("Could not delete server - " + smallest[0]);
  38.                     }
  39.                 }
  40.             }
  41.             if (ns.getPurchasedServers().length < ns.getPurchasedServerLimit()) {
  42.                 var hostname = ns.purchaseServer("MyServer-" + ram, ram);
  43.                 ram = ram * 2;
  44.                 if (ram > maxSize) ram = maxSize;
  45.                 ns.tprint(hostname + " purchased for - " + cost + ". Next server costs - " + ns.getPurchasedServerCost(ram));
  46.             }
  47.  
  48.         }
  49.         await ns.sleep(5000);
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment