The3vilM0nk3y

superMiner.js

Apr 19th, 2022
802
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.  
  4.     //
  5.     //1- server, 2- maxMoney 3- Growth 4- Security Level 5- Hacking Level
  6.     // 1 acending -1 for decending
  7.     //  ex: [[4,-1],[2,1]]
  8.     let targets = getBestValues([[4,-1],[2,1]], ns);
  9.     //remove n00dles from the list?
  10.     let popNoodles = true;
  11.     //Only run on servers with at least this amount of RAM
  12.     let minRam = 4096;
  13.  
  14.     let usableServers = [];
  15.     let servers = ns.getPurchasedServers();
  16.     for (let s of servers){
  17.         if (ns.getServerMaxRam(s) >= minRam){
  18.             ns.tprint("Adding " + s + " to usable list");
  19.             usableServers.push(s);
  20.             if(!ns.fileExists("/newserver/OP.js", s)){
  21.                 await ns.scp(["/newserver/OP.js", "/newserver/weaken.js", "/newserver/hack.js", "/newserver/grow.js", "/newserver/myFormulas.js"], s);
  22.             }
  23.         }
  24.     }
  25.     for (var i=0; i < targets.length; i++){
  26.         if (targets[i][0] == "n00dles"){
  27.             if (popNoodles){
  28.                 targets.splice(i,1);
  29.             }
  30.         }
  31.     }
  32.     targets.pop();
  33.     await ns.sleep(5000);
  34.     for (var i = 0; i < usableServers.length; i++) {
  35.         //check if target list still has a valid target available
  36.         if (i < targets.length - 1){
  37.             ns.tprint("Executing Miner on " + usableServers[i] + " targeting " + targets[i]);
  38.             ns.tprint(ns.exec("/newserver/OP.js", usableServers[i], 1, targets[i][0]));
  39.         } else break;
  40.     }
  41. }
  42. function getBestValues(sortArray, ns){
  43.     let servers = ["home"];
  44.     let sInfo = [];
  45.     let serversToScan = ns.scan("home");
  46.     while (serversToScan.length > 0) {
  47.         let server = serversToScan.shift();
  48.         if (!servers.includes(server) && server !== "home") {
  49.             servers.push(server);
  50.             serversToScan = serversToScan.concat(ns.scan(server));
  51.             if (ns.getServerGrowth(server) > 1){
  52.                 sInfo.push([
  53.                     server,
  54.                     ns.getServerMaxMoney(server)/2,
  55.                     ns.getServerGrowth(server),
  56.                     ns.getServerMinSecurityLevel(server),
  57.                     ns.getServerRequiredHackingLevel(server)
  58.                 ]);
  59.             }
  60.         }
  61.     }
  62.     for (let sort of sortArray){
  63.         let sortIndex = sort[0];
  64.         let sortOrder = sort[1];
  65.         sInfo = sInfo.sort((a,b) => (b[sortIndex] - a[sortIndex]) * sortOrder);
  66.     }
  67.     //sInfo = sInfo.sort((a,b) => b[4] - a[4]);
  68.     //sort by growth
  69.     //sInfo = sInfo.sort((a,b) => a[2] - b[2]);
  70.     return sInfo
  71. }
Advertisement
Add Comment
Please, Sign In to add comment