Advertisement
Kesseleth

server_buyer.ns

Nov 30th, 2018
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. export async function main(ns) {
  2.     //number of gigs for each server to have
  3.     let servers = ns.getPurchasedServers();
  4.     ns.tprint("I'm alive");
  5.     let serverGigs = 0;
  6.     if (servers.length === 0) {
  7.         serverGigs = 4;
  8.     } else {
  9.         sort(ns, servers);
  10.         serverGigs = (ns.getServerRam(servers[servers.length - 1])[0] * 2);
  11.     }
  12.     ns.tprint("RAM: " + serverGigs);
  13.     //money multiplier (55k per gigabyte)
  14.     const moneyPerGig = 55000;
  15.     //excess is how much additional money I want - 110% is my initial amount.
  16.     const excess = 110;
  17.      while (true) {
  18.         if (ns.getServerMoneyAvailable("home") >= serverGigs * moneyPerGig * excess / 100) {
  19.             let purchasedServers = ns.getPurchasedServers();
  20.             if (purchasedServers.length == 25) {
  21.                 //if max number of servers is owned, delete least RAM-heavy one
  22.                 await sort(ns, purchasedServers);
  23.                 //TODO: REMOVE TARGET OF SERVER THAT JUST GOT DELETED FROM TARGETED
  24.                 ns.tprint("Removing server " + purchasedServers[0]);
  25.             ns.deleteServer(purchasedServers[0]);
  26.             } else {
  27.                 ns.tprint("Less than 25 servers, none sold");
  28.  
  29.             }
  30.             ns.purchaseServer(serverGigs + "server", serverGigs);
  31.             //set up the new server to hack the most valuable target. Increase serverGigs
  32.             ns.tprint("Running setup on server named " + serverGigs + "server");
  33.             setup(ns, serverGigs + "server");
  34.             serverGigs *= 2;
  35.  
  36.         }
  37.  
  38.         await ns.sleep(30000);
  39.     }
  40. }
  41.  
  42. async function sort(ns, purchasedServers) {
  43.     for (let i = 0; i < purchasedServers.length; i++) {
  44.         let lowestRAMServer = i;
  45.         for (let j = i; j < purchasedServers.length; j++) {
  46.             if (ns.getServerRam(purchasedServers[j]) > ns.getServerRam(purchasedServers[i])) {
  47.                 lowestRAMServer = j;
  48.             }
  49.         }
  50.        
  51.         let tempHolder = purchasedServers[i];
  52.         purchasedServers[i] = purchasedServers[lowestRAMServer];
  53.         purchasedServers[lowestRAMServer] = tempHolder;
  54.     }
  55. }
  56.  
  57.  
  58.  async function setup(ns, server) {
  59.     ns.tprint(server);
  60.     let runnableScripts = ~~(ns.getServerRam(server)[0] / ns.getScriptRam("basic_hack.ns"));
  61.     //while there are no targets, wait
  62.     let targets = ns.read("targetable.txt");
  63.         while (targets === '') {
  64.             async ns.sleep(5000);
  65.             targets = ns.read("targetable.txt");
  66.         }
  67.     let targetList = targets.split(":");
  68.     ns.tprint(targetList[0]);
  69.     let target = targetList[0];
  70.     ns.tprint(target);
  71.     //copy basic hack to server
  72.     ns.scp("basic_hack.ns", server);
  73.     //run as many copies of basic_hack as possible
  74.     ns.tprint("Runnable scripts:" + runnableScripts);
  75.     ns.tprint("Min security: " + ns.getServerMinSecurityLevel(server));
  76.     ns.tprint("Target: " + target);
  77.     await ns.exec ("basic_hack.ns", server, runnableScripts,
  78.     ns.getServerMinSecurityLevel(server) + 2, target);
  79.     targetList.shift();
  80.     //update targetable with the new list
  81.     ns.write("targeted.txt", server, 'w');
  82.     for (let i = 0; i < targetList.length; i++) {
  83.         ns.write("targetable.txt", targetList[i], 'a');
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement