diff --git a/Mizzajl/home/Library.js b/Mizzajl/home/Library.js index a76e0a3..c906e63 100644 --- a/Mizzajl/home/Library.js +++ b/Mizzajl/home/Library.js @@ -88,7 +88,7 @@ export function findBestTarget(ns, maxSec, maxPorts, currentHackLevel, manualTar bestEntry = null; let nMaxMoneyPerChance = 0; let nBestMoneyPerChance = 0; - serverList.forEach((entry)=> { + serverList.forEach((entry) => { if (entry.minSec <= maxSec && entry.minPorts <= maxPorts && entry.minHackLvl <= currentHackLevel) { nMaxMoneyPerChance = (entry.maxMoney * ns.hackAnalyzeChance(entry.serverName)) / entry.minSec; if (nMaxMoneyPerChance > nBestMoneyPerChance) { @@ -96,7 +96,7 @@ export function findBestTarget(ns, maxSec, maxPorts, currentHackLevel, manualTar bestEntry = entry.serverName; } } - }) + }) } ns.write("bestTarget.txt", JSON.stringify(serverList.find((entry) => entry.serverName === bestEntry)), "w"); } @@ -203,20 +203,21 @@ export async function purchaseAndUpgradeServers(ns) { purchasedServers = listPurchasedServers(ns); for (let currentServer of purchasedServers) { currentMoney = ns.getServerMoneyAvailable("home"); - if (ns.getServerMaxRam(currentServer) < targetRam){ + if (ns.getServerMaxRam(currentServer) < targetRam) { if (ns.getPurchasedServerUpgradeCost(currentServer, targetRam) < currentMoney) { - if (ns.upgradePurchasedServer(currentServer, targetRam)) { - ns.print(currentServer + " upgraded to " + targetRam + " GB RAM"); - serverList = JSON.parse(ns.read("serverList.txt")); - let newServerList = serverList.map((entry) => { if (entry.serverName === currentServer){ entry.maxRam = targetRam} return entry}); - ns.write("serverList.txt", JSON.stringify(newServerList), "w"); - ns.tprint(cCyan + "Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB" + cReset); - ns.toast("Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB", "info", 10000); + if (ns.upgradePurchasedServer(currentServer, targetRam)) { + ns.print(currentServer + " upgraded to " + targetRam + " GB RAM"); + serverList = JSON.parse(ns.read("serverList.txt")); + let newServerList = serverList.map((entry) => { if (entry.serverName === currentServer) { entry.maxRam = targetRam } return entry }); + ns.write("serverList.txt", JSON.stringify(newServerList), "w"); + ns.tprint(cCyan + "Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB" + cReset); + ns.toast("Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB", "info", 10000); + } + } else { + await ns.sleep(5000); + continue } - } else { - await ns.sleep(5000); - continue - }}; + }; } ++i; } @@ -291,6 +292,10 @@ export function listWorkServers(ns) { } export function sortJsonArrayByKey(array, primaryKey, secondaryKey) { + if (typeof (array) === "string") { + array = JSON.parse(array); + } + //ns.tprint(typeof(array)); return array.sort((a, b) => { const xPrimary = a[primaryKey]; const yPrimary = b[primaryKey]; diff --git a/Mizzajl/home/lowram/Lowgrow.js b/Mizzajl/home/lowram/Lowgrow.js index a9fd20b..71195da 100644 --- a/Mizzajl/home/lowram/Lowgrow.js +++ b/Mizzajl/home/lowram/Lowgrow.js @@ -8,6 +8,7 @@ export async function main(ns) { const sPrepScript = "lowram/Lowprep.js"; const sRunScript = "lowram/Lowrun.js"; const sLowGrowScript = "lowram/Lowgrow.js"; + const sDistScript = "testdistribute.js"; const sGrowScript = "RMgrow.js"; diff --git a/Mizzajl/home/lowram/Lowhgw.js b/Mizzajl/home/lowram/Lowhgw.js index 4fcb16d..4a34883 100644 --- a/Mizzajl/home/lowram/Lowhgw.js +++ b/Mizzajl/home/lowram/Lowhgw.js @@ -8,6 +8,7 @@ export async function main(ns) { const sGrowScript = "RMgrow.js"; const sWeakenScript = "RMweaken.js"; const sServerListFile = "serverList.txt"; + const sDistScript = "testdistribute.js"; const nHackScriptRAM = 1.75; const nGrowScriptRAM = 1.7; diff --git a/Mizzajl/home/lowram/Lowprep.js b/Mizzajl/home/lowram/Lowprep.js index 25da78c..0634832 100644 --- a/Mizzajl/home/lowram/Lowprep.js +++ b/Mizzajl/home/lowram/Lowprep.js @@ -12,6 +12,7 @@ export async function main(ns) { const sPrepScript = "lowram/Lowprep.js"; const sRunScript = "lowram/Lowrun.js"; const sGrowScript = "lowram/Lowgrow.js"; + const sDistScript = "testdistribute.js"; //declare variables const sWeakenScript = "RMweaken.js"; @@ -39,8 +40,11 @@ export async function main(ns) { ns.print(nThreads + " of " + sWeakenScript + " requires " + (ns.getScriptRam(sWeakenScript, "home") * nThreads) + " GB of RAM"); ns.print("weakening will take " + (nDelay / 1000 / 60) + " minutes"); + ns.run(sDistScript, 1, sWeakenScript, nThreads, sTarget, false, 0); + await ns.sleep(nDelay+10); + /* if ((ns.getServerMaxRam(oHome.hostname) - ns.getServerUsedRam(oHome.hostname)) >= (ns.getScriptRam(sWeakenScript, "home") * nThreads)) { - nWeakenPID = ns.run(sWeakenScript, nThreads, sTarget); + nWeakenPID = ns.exec(sWeakenScript, nThreads, sTarget); //ns.print("Waiting for PID = " + nWeakenPID); await ns.nextPortWrite(nWeakenPID); nSecurity = ns.getServerSecurityLevel(sTarget); @@ -48,12 +52,14 @@ export async function main(ns) { } else { nThreads = Math.floor(((ns.getServerMaxRam("home") - ns.getServerUsedRam("home")) / ns.getScriptRam(sWeakenScript))); - nWeakenPID = ns.run(sWeakenScript, nThreads, sTarget); + nWeakenPID = ns.exec(sWeakenScript, nThreads, sTarget); //ns.print("Waiting for PID = " + nWeakenPID); await ns.nextPortWrite(nWeakenPID); nSecurity = ns.getServerSecurityLevel(sTarget); //ns.print("Breach in progress, security level is now at: " + nSecurity); } + + */ } //back to Lowrun ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget); diff --git a/Mizzajl/home/lowram/Lowrun.js b/Mizzajl/home/lowram/Lowrun.js index 65ffbf9..50518a8 100644 --- a/Mizzajl/home/lowram/Lowrun.js +++ b/Mizzajl/home/lowram/Lowrun.js @@ -8,6 +8,7 @@ export async function main(ns) { const sPrepScript = "lowram/Lowprep.js"; const sRunScript = "lowram/Lowrun.js"; const sGrowScript = "lowram/Lowgrow.js"; + const sDistScript = "testdistribute.js"; const nTargetMoney = ns.getServerMoneyAvailable(sTarget); const nTargetMaxMoney = ns.getServerMaxMoney(sTarget); @@ -20,10 +21,10 @@ export async function main(ns) { if (nTargetSecurity > nTargetMinSecurity + 1) { ns.spawn(sPrepScript, { threads: 1, spawnDelay: 0 }, sTarget); } - else if (nTargetMoney < nTargetMaxMoney) { + /*else if (nTargetMoney < nTargetMaxMoney) { //ns.print("need to prep MONEY, running " + sGrowScript); ns.spawn(sGrowScript, { threads: 1, spawnDelay: 0 }, sTarget); - } + }*/ else { ns.spawn(sBatchScript, { threads: 1, spawnDelay: 0 }, sTarget); } diff --git a/Mizzajl/home/testdistribute.js b/Mizzajl/home/testdistribute.js index f7686ba..a9b6dd2 100644 --- a/Mizzajl/home/testdistribute.js +++ b/Mizzajl/home/testdistribute.js @@ -1,8 +1,11 @@ +import { sortJsonArrayByKey } from "Library.js"; + /** @param {NS} ns */ export async function main(ns) { ns.tail(); + ns.disableLog("ALL"); const sScript = ns.args[0]; // script - const nThreads = ns.args[1]; // threads + let nThreads = ns.args[1]; // threads const sTarget = ns.args[2]; // target server const bRepeat = ns.args[3]; // should this script loop const nMsecDelay = ns.args[4]; // MsecDelay @@ -15,15 +18,15 @@ export async function main(ns) { const sWorkerList = "WorkerList.txt"; if (!ns.fileExists(sListName, "home")) { ns.print(`ERROR ${sListName} does not exist.`); return false; }; - let sServerList = JSON.parse(ns.read(sListName)); + let sServerList = ns.read(sListName); let aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse(); - + //ns.tprint(aSortedList); ns.print(sScript); ns.print(nThreads); ns.print(sTarget); const nScriptSize = ns.getScriptRam(sScript, "home"); - const nTotalSize = nScriptSize * nThreads; + let nTotalSize = nScriptSize * nThreads; ns.print("nScriptSize = " + nScriptSize); ns.print("nTotalSize = " + nTotalSize); @@ -47,12 +50,23 @@ export async function main(ns) { // run remaining hacks on smallest to biggest core servers aSortedList.forEach((entry) => { - if (entry.rootAccess && ns.getServerMaxRam() >= ns.getScriptRam(sScript, "home")) { - let sHost = entry.serverName; + let sHost = entry.serverName; + ns.print("sHost = " + sHost) + ns.scp(sScript, sHost); + let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); + if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) { ns.exec(sScript, sHost, nThreads, sTarget, bRepeat, nMsecDelay); - + 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.print("room for : " + nThreadsDist + " scripts"); + ns.exec(sScript, sHost, nThreadsDist, sTarget, bRepeat, nMsecDelay); + nThreads -= nThreadsDist; + nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); + } + }); /* for (i = 0; ; i++) {