diff --git a/Mizzajl/home/Library.js b/Mizzajl/home/Library.js index d5acb6d..4817691 100644 --- a/Mizzajl/home/Library.js +++ b/Mizzajl/home/Library.js @@ -260,6 +260,12 @@ export async function RunAndWait(ns, sScript, ...args) { while (ns.isRunning(sScript, ...args)) { await ns.sleep(100); } } +/** @param {NS} ns */ +export async function DistributeRunAndWait(ns, sScript, ...args) { + if (!ns.isRunning(sScript, ...args)) { drun(ns, sScript, ...args); } + while (ns.isRunning(sScript, ...args)) { await ns.sleep(100); } +} + /** @param {NS} ns */ export function listWorkServers(ns) { ns.disableLog("ALL"); @@ -338,18 +344,36 @@ export function sortJsonArrayByKey(array, primaryKey, secondaryKey) { /** @param {NS} ns */ -export async function distributeScript(ns, sScript, nThreads, [...args]) { +export async function drun(ns, ...args ){ //ns.tail(); - ns.disableLog("ALL"); + ns.disableLog("scp"); + ns.print(args); + let aArgs = args; + const sScript = aArgs.shift(); + let nThreads = aArgs.shift(); + if (nThreads === undefined) { nThreads = 1 }; + + ns.print(aArgs); + + const aScriptFiles = ns.ls("home", ".js"); + const aTXTFiles = ns.ls("home", ".txt"); + + const sWeakenScript = "RMweaken.js"; + const sGrowScript = "RMgrow.js"; const sListName = "serverList.txt"; if (!ns.fileExists(sListName, "home")) { ns.print(`ERROR ${sListName} does not exist.`); return false; }; let sServerList = ns.read(sListName); - let aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse(); + let aSortedList; + if (sScript === sWeakenScript || sScript === sGrowScript) { + aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse(); + } else { + aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam"); + } + ns.print(sScript); ns.print(nThreads); - ns.print(...args); const nScriptSize = ns.getScriptRam(sScript, "home"); let nTotalSize = nScriptSize * nThreads; @@ -360,19 +384,40 @@ export async function distributeScript(ns, sScript, nThreads, [...args]) { aSortedList.forEach((entry) => { let sHost = entry.serverName; ns.print("sHost = " + sHost) - let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); - if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) { - ns.scp(sScript, sHost); - ns.exec(sScript, sHost, nThreads, ...args); + if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize && entry.serverName !== "home") { + ns.scp(aScriptFiles, sHost), "home"; + ns.scp(aTXTFiles, sHost), "home"; + ns.exec(sScript, sHost, nThreads, ...aArgs); + nThreads = 0; + nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); + } + else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize && entry.serverName !== "home") { + let nThreadsDist = Math.floor(nFreeRAM / nScriptSize); + ns.scp(aScriptFiles, sHost), "home"; + ns.scp(aTXTFiles, sHost), "home"; + ns.print("room for : " + nThreadsDist + " scripts"); + ns.exec(sScript, sHost, nThreadsDist, ...aArgs); + nThreads -= nThreadsDist; + nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); + } + else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) { + if (entry.serverName !== "home") { + ns.scp(aScriptFiles, sHost), "home"; + ns.scp(aTXTFiles, sHost), "home"; + } + ns.exec(sScript, sHost, nThreads, ...aArgs); nThreads = 0; nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); } else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) { let nThreadsDist = Math.floor(nFreeRAM / nScriptSize); - ns.scp(sScript, sHost); + if (entry.serverName !== "home") { + ns.scp(aScriptFiles, sHost), "home"; + ns.scp(aTXTFiles, sHost), "home"; + } ns.print("room for : " + nThreadsDist + " scripts"); - ns.exec(sScript, sHost, nThreadsDist, ...args); + ns.exec(sScript, sHost, nThreadsDist, ...aArgs); nThreads -= nThreadsDist; nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); } diff --git a/Mizzajl/home/RunDist.js b/Mizzajl/home/RunDist.js index 6e484d4..3efe681 100644 --- a/Mizzajl/home/RunDist.js +++ b/Mizzajl/home/RunDist.js @@ -1,82 +1,6 @@ -import { sortJsonArrayByKey } from "Library.js"; +import { drun } from "./Library"; /** @param {NS} ns */ export async function main(ns) { - //ns.tail(); - ns.disableLog("scp"); - let aArgs = ns.args; - const sScript = aArgs.shift(); - let nThreads = aArgs.shift(); - if (nThreads === undefined) { nThreads = 1 }; - - ns.print(aArgs); - - const aScriptFiles = ns.ls("home", ".js"); - const aTXTFiles = ns.ls("home", ".txt"); - //ns.tprint(aScriptFiles); - //ns.tprint(aTXTFiles); - - const sWeakenScript = "RMweaken.js"; - const sGrowScript = "RMgrow.js"; - const sListName = "serverList.txt"; - - if (!ns.fileExists(sListName, "home")) { ns.print(`ERROR ${sListName} does not exist.`); return false; }; - let sServerList = ns.read(sListName); - let aSortedList; - if (sScript === sWeakenScript || sScript === sGrowScript) { - aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse(); - } else { - aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam"); - } - - ns.print(sScript); - ns.print(nThreads); - - const nScriptSize = ns.getScriptRam(sScript, "home"); - let nTotalSize = nScriptSize * nThreads; - - ns.print("nScriptSize = " + nScriptSize); - ns.print("nTotalSize = " + nTotalSize); - - aSortedList.forEach((entry) => { - let sHost = entry.serverName; - ns.print("sHost = " + sHost) - let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); - if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize && entry.serverName !== "home") { - ns.scp(aScriptFiles, sHost), "home"; - ns.scp(aTXTFiles, sHost), "home"; - ns.exec(sScript, sHost, nThreads, ...aArgs); - nThreads = 0; - nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); - } - else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize && entry.serverName !== "home") { - let nThreadsDist = Math.floor(nFreeRAM / nScriptSize); - ns.scp(aScriptFiles, sHost), "home"; - ns.scp(aTXTFiles, sHost), "home"; - ns.print("room for : " + nThreadsDist + " scripts"); - ns.exec(sScript, sHost, nThreadsDist, ...aArgs); - nThreads -= nThreadsDist; - nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); - } - else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) { - if (entry.serverName !== "home"){ - ns.scp(aScriptFiles, sHost), "home"; - ns.scp(aTXTFiles, sHost), "home"; - } - ns.exec(sScript, sHost, nThreads, ...aArgs); - nThreads = 0; - nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); - } - else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) { - let nThreadsDist = Math.floor(nFreeRAM / nScriptSize); - if (entry.serverName !== "home"){ - ns.scp(aScriptFiles, sHost), "home"; - ns.scp(aTXTFiles, sHost), "home"; - } - ns.print("room for : " + nThreadsDist + " scripts"); - ns.exec(sScript, sHost, nThreadsDist, ...aArgs); - nThreads -= nThreadsDist; - nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); - } - }); + await drun(ns, ...ns.args); } \ No newline at end of file diff --git a/Mizzajl/home/Start.js b/Mizzajl/home/Start.js index 0b5c1dc..ba981e1 100644 --- a/Mizzajl/home/Start.js +++ b/Mizzajl/home/Start.js @@ -1,4 +1,4 @@ -import { RunAndWait } from "./Library"; +import { DistributeRunAndWait, drun, RunAndWait } from "./Library"; /** @param {NS} ns */ export async function main(ns) { @@ -14,23 +14,18 @@ export async function main(ns) { const sServerListFile = "serverList.txt"; const sBestServerFile = "bestTarget.txt"; const sWorkerList = "WorkerList.js"; + const sCorpControl = "CorpControl.js"; await RunAndWait(ns, sServerListScript); -/* - const oServerList = JSON.parse(ns.read(sServerListFile)); - const oHome = oServerList["home"]; - const nHomeMaxRAM = oHome.maxRam; - ns.print("nHomeMaxRAM = " + nHomeMaxRAM); -*/ + if (!ns.isRunning(sWorkerList)) { ns.run(sWorkerList); } + if (!ns.isRunning(sGangScript)) { drun(ns, sGangScript); } + //if (!ns.isRunning(sCorpControl)) { ns.run(sCorpControl); } + if (!ns.isRunning(sPServScript)) { drun(ns, sPServScript); } + await DistributeRunAndWait(ns, sBackdoorScript); + await DistributeRunAndWait(ns, sUpdateTarget); + let oServerlist = JSON.parse(ns.read(sServerListFile)); let nHomeMaxRAM = oServerlist.find((entry) => entry.serverName === "home").maxRam; ns.print("nHomeMaxRAM = " + nHomeMaxRAM); - - if (!ns.isRunning(sGangScript)) { ns.run(sGangScript); } - if (!ns.isRunning(sPServScript)) { ns.run(sPServScript); } - await RunAndWait(ns, sBackdoorScript); - await RunAndWait(ns, sUpdateTarget); - //await RunAndWait(ns, sBatchController); - if (nHomeMaxRAM >= 256) { if (!ns.isRunning(sMonitorScript)) { ns.run(sMonitorScript); } } } \ No newline at end of file diff --git a/Mizzajl/home/lowram/lowhgw2.js b/Mizzajl/home/lowram/lowhgw2.js index 8f9f276..471771c 100644 --- a/Mizzajl/home/lowram/lowhgw2.js +++ b/Mizzajl/home/lowram/lowhgw2.js @@ -1,4 +1,4 @@ -import { distributeScript, getGrowThreads, getSetting, sortJsonArrayByKey } from "../Library"; +import { getGrowThreads, getSetting, sortJsonArrayByKey } from "../Library"; /** @param {NS} ns */ export async function main(ns) {