The3vilM0nk3y

OP.js

Apr 18th, 2022 (edited)
1,085
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /** @param {NS} ns **/
  2. import * as myForms from "/newserver/myFormulas.js"
  3. export async function main(ns) {
  4.  
  5.    var server = ns.args[0];   //Host to hack
  6.    var server2 = ns.getHostname(); //Server to run scripts on
  7.    var i = 0;
  8.    var c = 0;
  9.    var player = ns.getPlayer();
  10.    var fserver = ns.getServer(server);
  11.    var contstantRam = ns.getScriptRam("/newserver/OP.ns"); //grabbing script RAM values
  12.    var hackscriptRam = ns.getScriptRam("/newserver/hack.js");
  13.    var growscriptRam = ns.getScriptRam("/newserver/grow.js");
  14.    var weakenscriptRam = ns.getScriptRam("/newserver/weaken.js");
  15.    var maxRam = (ns.getServerMaxRam(server2) - contstantRam); //getting total RAM I can use that doesnt include the OP script
  16.    var weakenThreads = (2000 - ((ns.getServerMinSecurityLevel(server)) / 0.05));
  17.    var maxGrowThreads = ((maxRam / growscriptRam) - (weakenscriptRam * 2000));
  18.    var cs = ns.getServerSecurityLevel(server);
  19.    var ms = ns.getServerMinSecurityLevel(server);
  20.    var mm = ns.getServerMaxMoney(server);
  21.    var ma = ns.getServerMoneyAvailable(server);
  22.  
  23.    if (maxGrowThreads <= 0) {
  24.       ns.tprint("You do not have enough memory to run this program.");
  25.       return;
  26.    }
  27.  
  28.    //Priming the server.  Max money and Min security must be acheived for this to work
  29.    if ((ma < mm) == true) {
  30.       ns.exec('/newserver/weaken.js', server2, 2000, server, 0);
  31.       ns.exec('/newserver/grow.js', server2, maxGrowThreads, server, 0);
  32.       var WeakenTime = (myForms.weakenTime(fserver, player));
  33.       await ns.sleep(WeakenTime + 1000);
  34.       mm = ns.getServerMaxMoney(server);
  35.       ma = ns.getServerMoneyAvailable(server);
  36.       player = ns.getPlayer();
  37.       fserver = ns.getServer(server);
  38.       cs = ns.getServerSecurityLevel(server);
  39.       ms = ns.getServerMinSecurityLevel(server);
  40.  
  41.    }
  42.  
  43.  
  44.    //If Max Money is true, making sure security level is at its minimum
  45.    if ((cs > ms) == true) {
  46.  
  47.       ns.exec('/newserver/weaken.js', server2, 2000, server, 0);
  48.       WeakenTime = (myForms.weakenTime(fserver, player));
  49.       await ns.sleep(WeakenTime + 1000);
  50.       cs = ns.getServerSecurityLevel(server);
  51.       ms = ns.getServerMinSecurityLevel(server);
  52.  
  53.    }
  54.  
  55.    //Refreshing server stats now that the security level is at the minmum, and maybe our player stats have changed as priming can take a while
  56.    player = ns.getPlayer();
  57.    fserver = ns.getServer(server);
  58.  
  59.    var HPercent = (myForms.hackPercent(fserver, player) * 100);
  60.    var GPercent = (myForms.growPercent(fserver, 1, player, 1));
  61.    WeakenTime = (myForms.weakenTime(fserver, player));
  62.    var GrowTime = (myForms.growTime(fserver, player));
  63.    var HackTime = (myForms.hackTime(fserver, player));
  64.  
  65.    var growThreads = Math.round(((5 / (GPercent - 1)))); //Getting the amount of threads I need to grow 200%.  I only need 100% but I'm being conservative here
  66.    var hackThreads = Math.round((50 / HPercent));  //Getting the amount of threads I need to hack 50% of the funds
  67.    weakenThreads = Math.round((weakenThreads - (growThreads * 0.004))); //Getting required threads to fully weaken the server
  68.  
  69.    var totalRamForRun = (hackscriptRam * hackThreads) + (growscriptRam * growThreads) + (weakenscriptRam * weakenThreads) //Calculating how much RAM is used for a single run
  70.    var sleepTime = (WeakenTime / (maxRam / totalRamForRun)) //finding how many runs this server can handle and setting the time between run execution
  71.  
  72.    //if (sleepTime<500) // Testing forcing a min sleep time of 500 ms
  73.    //{sleepTime = 500;
  74.    //}
  75.  
  76.    var shiftCount = maxRam / totalRamForRun;
  77.    var offset = sleepTime / 2
  78.    var gOffset = offset / 4
  79.    var hOffset = offset / 2
  80.  
  81.  
  82.    while (true) {
  83.       var wsleep = 0; //At one point I made the weaken call sleep so I've kept it around
  84.       var gsleep = ((WeakenTime - GrowTime - gOffset)); //Getting the time to have the Growth execution sleep, then shaving some off to beat the weaken execution
  85.       var hsleep = ((WeakenTime - HackTime - hOffset)); //Getting time for hack, shaving off more to make sure it beats both weaken and growth
  86.       var UsedRam = ns.getServerUsedRam(server2);
  87.  
  88.  
  89.       if ((totalRamForRun >= (maxRam - UsedRam)) == false) //making sure I have enough RAM to do a full run
  90.       {
  91.          ns.exec('/newserver/weaken.js', server2, weakenThreads, server, wsleep, i);
  92.          ns.exec('/newserver/grow.js', server2, growThreads, server, gsleep, i);
  93.          ns.exec('/newserver/hack.js', server2, hackThreads, server, hsleep, i);
  94.  
  95.          if (c < shiftCount) {
  96.             await ns.sleep(sleepTime)
  97.             c++
  98.          }
  99.          else {
  100.             await ns.sleep(sleepTime + offset);
  101.             c = 0;
  102.          }
  103.  
  104.  
  105.          i++
  106.       }
  107.       else {
  108.          await ns.sleep(1000)
  109.       }
  110.    }
  111.    await ns.sleep(120000)
  112. }
Add Comment
Please, Sign In to add comment