116 lines
4.2 KiB
JavaScript
116 lines
4.2 KiB
JavaScript
import { getGrowThreads, getSetting } from "Library.js";
|
|
|
|
/** @param {NS} ns */
|
|
export async function main(ns) {
|
|
ns.tail();
|
|
const sTarget = ns.args[0]; // target server
|
|
const sHackScript = "RMhack.js";
|
|
const sGrowScript = "RMgrow.js";
|
|
const sWeakenScript = "RMweaken.js";
|
|
const sServerListFile = "serverList.txt";
|
|
const sDistScript = "testdistribute.js";
|
|
|
|
const nHackScriptRAM = 1.75;
|
|
const nGrowScriptRAM = 1.7;
|
|
const nWeakenScriptRAM = 1.75;
|
|
const nThisScriptRAM = 4.65;
|
|
|
|
await ns.sleep(1);
|
|
|
|
while (true) {
|
|
let oServerlist = JSON.parse(ns.read(sServerListFile));
|
|
let nMaxRAM = oServerlist.find((entry) => entry.serverName === "home").maxRam;
|
|
ns.print("nMaxRAM = " + nMaxRAM);
|
|
|
|
let nWeakenTime = ns.getWeakenTime(sTarget);
|
|
let nGrowTime = nWeakenTime * 0.8;
|
|
let nHackTime = nWeakenTime / 4;
|
|
|
|
let nGrowDelay = nWeakenTime - nGrowTime;
|
|
let nHackDelay = nWeakenTime - nHackTime;
|
|
|
|
let nUsedRAM = nThisScriptRAM;
|
|
|
|
let nHackThreads;
|
|
let nGrowThreads;
|
|
let nGrowThreadsINT;
|
|
let nWeakenThreads;
|
|
let nWeakenThreadsINT;
|
|
let nCheckRAM;
|
|
let nTotalHackRAM;
|
|
let nTotalGrowRAM;
|
|
let nTotalWeakenRAM;
|
|
let nTempHackThreads;
|
|
let nTempGrowThreads;
|
|
let nTempGrowThreadsINT;
|
|
let nTempWeakenThreads;
|
|
let nTempWeakenThreadsINT;
|
|
|
|
for (let i = 1; nUsedRAM < nMaxRAM; i++) {
|
|
|
|
nTempHackThreads = i;
|
|
//ns.print("nTempHackThreads = " + nTempHackThreads);
|
|
|
|
nTempGrowThreads = Math.max(2, getGrowThreads(ns, sTarget, nTempHackThreads));
|
|
nTempGrowThreadsINT = Math.ceil(nTempGrowThreads);
|
|
//ns.print("nTempGrowThreads = " + nTempGrowThreads);
|
|
//ns.print("nTempGrowThreadsINT = " + nTempGrowThreadsINT);
|
|
|
|
//25 hacks or 12.5 grows
|
|
nTempWeakenThreads = Math.max(2, (nTempHackThreads / 25) + (nTempGrowThreadsINT / 12.5));
|
|
nTempWeakenThreadsINT = Math.ceil(nTempWeakenThreads);
|
|
//ns.print("nTempWeakenThreads = " + nTempWeakenThreads);
|
|
//ns.print("nTempWeakenThreadsINT = " + nTempWeakenThreadsINT);
|
|
|
|
nTotalHackRAM = (nTempHackThreads * nHackScriptRAM);
|
|
nTotalGrowRAM = (nTempGrowThreadsINT * nGrowScriptRAM);
|
|
nTotalWeakenRAM = (nTempWeakenThreadsINT * nWeakenScriptRAM);
|
|
//ns.print("nTotalHackRAM = " + nTotalHackRAM);
|
|
//ns.print("nTotalGrowRAM = " + nTotalGrowRAM);
|
|
//ns.print("nTotalWeakenRAM = " + nTotalWeakenRAM);
|
|
|
|
nCheckRAM = nThisScriptRAM + (nTempHackThreads * nHackScriptRAM) + (nTempGrowThreadsINT * nGrowScriptRAM) + (nTempWeakenThreadsINT * nWeakenScriptRAM);
|
|
//ns.print("nCheckRAM = " + nCheckRAM);
|
|
|
|
if (nCheckRAM < nMaxRAM) {
|
|
nUsedRAM = nCheckRAM;
|
|
nHackThreads = nTempHackThreads;
|
|
nGrowThreads = nTempGrowThreads;
|
|
nGrowThreadsINT = nTempGrowThreadsINT;
|
|
nWeakenThreads = nTempWeakenThreads;
|
|
nWeakenThreadsINT = nTempWeakenThreadsINT;
|
|
}
|
|
else {
|
|
break;
|
|
}
|
|
//ns.print("nMaxRAM = " + nMaxRAM + " nUsedRAM = " + nUsedRAM);
|
|
}
|
|
//ns.print("nMaxRAM = " + nMaxRAM + " nUsedRAM = " + nUsedRAM);
|
|
|
|
ns.print("hgw batch will take " + ((nWeakenTime + 1) / 1000 / 60) + " minutes");
|
|
let nCompleteTime = new Date(Date.now() + nWeakenTime+1);
|
|
ns.print("complete at " + nCompleteTime.toLocaleTimeString("en-US"));
|
|
|
|
let nHackPID = ns.run(sHackScript, nHackThreads, sTarget, false, nHackDelay - 100);
|
|
let nGrowPID = ns.run(sGrowScript, nGrowThreadsINT, sTarget, false, nGrowDelay - 50);
|
|
let nWeakenPID = ns.run(sWeakenScript, nWeakenThreadsINT, sTarget, false, 0);
|
|
//ns.tail(nHackPID, "home", nHackThreads, sTarget, false, nHackDelay - 100);
|
|
//ns.tail(nGrowPID, "home", nGrowThreadsINT, sTarget, false, nGrowDelay - 50);
|
|
//ns.tail(nWeakenPID, "home", nWeakenThreadsINT, sTarget, false, 0);
|
|
|
|
await Promise.all([
|
|
ns.nextPortWrite(nHackPID),
|
|
ns.nextPortWrite(nGrowPID),
|
|
ns.nextPortWrite(nWeakenPID)
|
|
])
|
|
await ns.sleep(1);
|
|
|
|
let nHackFinnish = ns.readPort(nHackPID);
|
|
let nGrowFinnish = ns.readPort(nGrowPID);
|
|
let nWeakenFinnish = ns.readPort(nWeakenPID);
|
|
|
|
ns.print("nHackFinnish = " + nHackFinnish);
|
|
ns.print("nGrowFinnish = " + nGrowFinnish);
|
|
ns.print("nWeakenFinnish = " + nWeakenFinnish);
|
|
}
|
|
} |