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 nHackScriptRAM = 1.75; const nGrowScriptRAM = 1.7; const nWeakenScriptRAM = 1.75; const nThisScriptRAM = 4.65; while (true) { //let nMaxRAM = ns.getServerMaxRam("home"); let oServerlist = JSON.parse(ns.read(sServerListFile)); //let nMaxRAM = [name, entry] of Object.entries(oServerlist); let nMaxRAM = oServerlist["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 = 0; let nHackThreads; let nGrowThreads; let nGrowThreadsINT; let nWeakenThreads; let nWeakenThreadsINT; for (let i = 0; nUsedRAM < nMaxRAM - nThisScriptRAM; i++) { nHackThreads = i; nGrowThreads = Math.max(2, getGrowThreads(ns, sTarget, nHackThreads)); nGrowThreadsINT = Math.ceil(nGrowThreads); //25 hacks or 12.5 grows nWeakenThreads = Math.max(2, (nHackThreads / 25) + (nGrowThreads / 12.5)); nWeakenThreadsINT = Math.ceil(nWeakenThreads); nUsedRAM = nThisScriptRAM + (nHackThreads * nHackScriptRAM) + (nGrowThreadsINT * nGrowScriptRAM) + (nWeakenThreadsINT * nWeakenScriptRAM); //ns.print("nMaxRAM = " + nMaxRAM + " nUsedRAM = " + nUsedRAM); } ns.print("nMaxRAM = " + nMaxRAM + " nUsedRAM = " + nUsedRAM); 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); } }