The3vilM0nk3y

CalcBest

Apr 20th, 2022
870
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as helpers from "/apis/helpers.js"
  2. /** @param {NS} ns */
  3. export async function main(ns) {
  4.     let hackScript = "/newserver/hack.js";
  5.     let weakenScript = "/newserver/weaken.js";
  6.     let growScript = "/newserver/grow.js";
  7.     let filterList = ["home", "MyServer", "darkweb"];
  8.     let targetMoneyGainPercent = 0.5;
  9.     let unfilteredList = [];
  10.    
  11.     let servers = await helpers.getAllServers(ns, filterList);
  12.     ns.tprint(servers);
  13.  
  14.     //let maxRam = ns.getServerMaxRam(ns.getHostname());
  15.     let maxRam = 8192;
  16.     ns.tprint("Getting ratios and more.")
  17.     for (let target of servers){
  18.        
  19.         //calculate how much money can be made in a hack per batch
  20.         let maxMoney = ns.getServerMaxMoney(target);
  21.         let targetMoneyGain = maxMoney * targetMoneyGainPercent;
  22.         //get ratio of needed hack, weaken, grow, weaken
  23.         let coreCount = ns.getServer(ns.getHostname()).cpuCores;
  24.         let hackThreads = Math.ceil(ns.hackAnalyzeThreads(target, targetMoneyGain));
  25.         let hAnalyze = ns.hackAnalyze(target) * hackThreads;
  26.         let growthThreads = Math.ceil((ns.growthAnalyze(target, 2, coreCount)) * ((maxMoney - (hAnalyze * maxMoney)) / (maxMoney - hAnalyze * maxMoney)));
  27.         let weaken1Threads = Math.ceil(hackThreads / 25);
  28.         let weaken2Threads = Math.ceil(growthThreads / 12.5);
  29.        
  30.         //get total memory used in that ratio
  31.         let scriptMemory = (ns.getScriptRam(hackScript) * hackThreads) +
  32.             (ns.getScriptRam(growScript)* growthThreads) +
  33.             (ns.getScriptRam(weakenScript) * (weaken1Threads + weaken2Threads));
  34.        
  35.         //figure out how many of those we can run with max memory
  36.         let maxBatches = Math.floor(maxRam / scriptMemory);
  37.         //calculate how much time is spent on the batch
  38.         let hackTime = ns.getHackTime(target)
  39.         let growTime = hackTime*3.2
  40.         let weakenTime = hackTime*4
  41.         //create a ratio of money/timeSpent
  42.         let ratio = targetMoneyGain / hackTime * maxBatches;
  43.         let threadsPerBatch = growthThreads + weaken1Threads + weaken2Threads + hackThreads;
  44.         ns.tprint("    " + target + " - " + targetMoneyGain + " / " + hackTime + " * " + maxBatches + " = " + ratio + " Total threads - " + threadsPerBatch);
  45.         //return [server, ratio, [hackCount, weakenCount, growCount, weakenCount ]]
  46.         unfilteredList.push([target,ratio,[hackThreads,weaken1Threads, growthThreads, weaken2Threads, maxBatches]]);
  47.     }
  48.     let sortFilter = [[2,1]];
  49.     let filteredList = helpers.sortArray(unfilteredList, sortFilter);
  50.     ns.tprint(filteredList);
  51.    
  52. }
Advertisement
Add Comment
Please, Sign In to add comment