Files
The_Bitburner_Scripts/Mizzajl/home/wip/hgw.js
2024-10-07 18:55:53 +02:00

78 lines
2.7 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 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);
}
}