diff --git a/Mizzajl/home/Library.js b/Mizzajl/home/Library.js index 3c675b5..01ec0e5 100644 --- a/Mizzajl/home/Library.js +++ b/Mizzajl/home/Library.js @@ -335,8 +335,8 @@ export function sortJsonArrayByKey(array, primaryKey, secondaryKey) { /** @param {NS} ns */ -export async function distributeScript(ns, sScript, nThreads, ...args) { - ns.tail(); +export async function distributeScript(ns, sScript, nThreads, [...args]) { + //ns.tail(); ns.disableLog("ALL"); const sListName = "serverList.txt"; @@ -357,15 +357,17 @@ export async function distributeScript(ns, sScript, nThreads, ...args) { aSortedList.forEach((entry) => { 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.scp(sScript, sHost); ns.exec(sScript, sHost, nThreads, ...args); 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); ns.print("room for : " + nThreadsDist + " scripts"); ns.exec(sScript, sHost, nThreadsDist, ...args); nThreads -= nThreadsDist; diff --git a/Mizzajl/home/Serverlist.js b/Mizzajl/home/Serverlist.js index 29237fd..012484a 100644 --- a/Mizzajl/home/Serverlist.js +++ b/Mizzajl/home/Serverlist.js @@ -7,7 +7,7 @@ export async function main(ns) { let maxPorts = Object.keys(cracks).length; scanServerList(ns); let manualTargetOverride = ""; - if (ns.getHackingLevel() < 200) { + if (ns.getHackingLevel() < 10) { manualTargetOverride = "n00dles"; }; findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride); diff --git a/Mizzajl/home/WorkerList.js b/Mizzajl/home/WorkerList.js index 074b4f3..bdabba1 100644 --- a/Mizzajl/home/WorkerList.js +++ b/Mizzajl/home/WorkerList.js @@ -4,7 +4,7 @@ import { listWorkServers } from "/Library.js"; export async function main(ns) { ns.disableLog("ALL"); ns.tail(); - ns.resizeTail(560,625); + ns.resizeTail(561,825); let nStatus = 0; let aStatus = ["─", "╲", "│", "╱"]; let bWhile = true; @@ -15,6 +15,6 @@ export async function main(ns) { ns.setTitle(`WorkerList ${aStatus[nStatus]}`); nStatus++; if (nStatus > 3) nStatus = 0; - await ns.sleep(1050); + await ns.sleep(1000); } } \ No newline at end of file diff --git a/Mizzajl/home/karma.js b/Mizzajl/home/karma.js new file mode 100644 index 0000000..7e54aa2 --- /dev/null +++ b/Mizzajl/home/karma.js @@ -0,0 +1,4 @@ +/** @param {NS} ns */ +export async function main(ns) { + ns.tprint("Karma = " + Math.round(ns.heart.break()).toLocaleString()); +} \ No newline at end of file diff --git a/Mizzajl/home/lowram/Lowgrow.js b/Mizzajl/home/lowram/Lowgrow.js index 71195da..1d077da 100644 --- a/Mizzajl/home/lowram/Lowgrow.js +++ b/Mizzajl/home/lowram/Lowgrow.js @@ -37,24 +37,36 @@ export async function main(ns) { //ns.print("nFreeRam = " + nFreeRam); //ns.print("needed ram = " + Math.ceil(nFreeRam / ns.getScriptRam(sGrowScript, "home"))); //ns.print("needed ram? = " + ns.getScriptRam(sGrowScript, "home")); - if (nFreeRam >= (ns.getScriptRam(sGrowScript, "home") * nGrowThreadsNeeded)) { + if (nGrowThreadsNeeded >= 1) { - let nGrowPID = ns.run(sGrowScript, Math.ceil(nGrowThreadsNeeded), sTarget); - await ns.nextPortWrite(nGrowPID); - await ns.sleep(1000); + const nDelay = ns.getGrowTime(sTarget); + + ns.run(sDistScript, 1, sGrowScript, Math.ceil(nGrowThreadsNeeded), sTarget, false, 0); nMoney = ns.getServerMoneyAvailable(sTarget); + ns.print("nMoney = " + nMoney); + await ns.sleep(nDelay+100); } - else { - ns.print("Too smol"); - let nGrowPID = ns.run(sGrowScript, Math.ceil((nFreeRam - nThisScriptRAM) / ns.getScriptRam(sGrowScript, "home")), sTarget); - await ns.nextPortWrite(nGrowPID); - await ns.sleep(1000); - nMoney = ns.getServerMoneyAvailable(sTarget); - - } - + /* + if (nFreeRam >= (ns.getScriptRam(sGrowScript, "home") * nGrowThreadsNeeded)) { + + + let nGrowPID = ns.run(sGrowScript, Math.ceil(nGrowThreadsNeeded), sTarget); + await ns.nextPortWrite(nGrowPID); + await ns.sleep(1000); + nMoney = ns.getServerMoneyAvailable(sTarget); + } + else { + ns.print("Too smol"); + let nGrowPID = ns.run(sGrowScript, Math.ceil((nFreeRam - nThisScriptRAM) / ns.getScriptRam(sGrowScript, "home")), sTarget); + await ns.nextPortWrite(nGrowPID); + await ns.sleep(1000); + nMoney = ns.getServerMoneyAvailable(sTarget); + + } + */ + await ns.sleep(1); //back to Lowrun ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget); diff --git a/Mizzajl/home/lowram/Lowhgw.js b/Mizzajl/home/lowram/Lowhgw.js index cffc42d..a46132b 100644 --- a/Mizzajl/home/lowram/Lowhgw.js +++ b/Mizzajl/home/lowram/Lowhgw.js @@ -13,19 +13,14 @@ export async function main(ns) { const nHackScriptRAM = 1.75; const nGrowScriptRAM = 1.7; const nWeakenScriptRAM = 1.75; - const nThisScriptRAM = 4.70; + const nThisScriptRAM = 4.65; await ns.sleep(1); while (true) { - let nMaxRAM = ns.getServerMaxRam("home"); let oServerlist = JSON.parse(ns.read(sServerListFile)); - - //let nMaxRAM = oServerlist[1].nMaxRAM; - ns.tprint("nMaxRAM = " + nMaxRAM); - //let nMaxRAM = [name, entry] of Object.entries(oServerlist); - //let nMaxRAM = oServerlist["home"].maxRam; - //ns.print("nMaxRAM = " + nMaxRAM); + let nMaxRAM = oServerlist.find((entry) => entry.serverName === "home").maxRam; + ns.print("nMaxRAM = " + nMaxRAM); let nWeakenTime = ns.getWeakenTime(sTarget); let nGrowTime = nWeakenTime * 0.8; @@ -74,8 +69,6 @@ export async function main(ns) { //ns.print("nTotalGrowRAM = " + nTotalGrowRAM); //ns.print("nTotalWeakenRAM = " + nTotalWeakenRAM); - - nCheckRAM = nThisScriptRAM + (nTempHackThreads * nHackScriptRAM) + (nTempGrowThreadsINT * nGrowScriptRAM) + (nTempWeakenThreadsINT * nWeakenScriptRAM); //ns.print("nCheckRAM = " + nCheckRAM); @@ -94,6 +87,9 @@ export async function main(ns) { } //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); diff --git a/Mizzajl/home/lowram/Lowprep.js b/Mizzajl/home/lowram/Lowprep.js index 0634832..c4efc87 100644 --- a/Mizzajl/home/lowram/Lowprep.js +++ b/Mizzajl/home/lowram/Lowprep.js @@ -14,12 +14,14 @@ export async function main(ns) { const sGrowScript = "lowram/Lowgrow.js"; const sDistScript = "testdistribute.js"; + await ns.sleep(100); + //declare variables const sWeakenScript = "RMweaken.js"; const nCores = oHome.cpuCores; let nSecurity = ns.getServerSecurityLevel(sTarget); const nMinSecurity = ns.getServerMinSecurityLevel(sTarget); - const nWeakenSTR = ns.weakenAnalyze(1, nCores); + const nWeakenSTR = ns.weakenAnalyze(1, 1); let nThreads = Math.ceil((nSecurity - nMinSecurity) / nWeakenSTR); //ns.print("nThreads = " + nThreads); @@ -41,7 +43,7 @@ export async function main(ns) { ns.print("weakening will take " + (nDelay / 1000 / 60) + " minutes"); ns.run(sDistScript, 1, sWeakenScript, nThreads, sTarget, false, 0); - await ns.sleep(nDelay+10); + await ns.sleep(nDelay); /* if ((ns.getServerMaxRam(oHome.hostname) - ns.getServerUsedRam(oHome.hostname)) >= (ns.getScriptRam(sWeakenScript, "home") * nThreads)) { nWeakenPID = ns.exec(sWeakenScript, nThreads, sTarget); @@ -62,5 +64,6 @@ export async function main(ns) { */ } //back to Lowrun + await ns.sleep(1); ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget); } \ No newline at end of file diff --git a/Mizzajl/home/lowram/Lowrun.js b/Mizzajl/home/lowram/Lowrun.js index c7bd08e..c22db63 100644 --- a/Mizzajl/home/lowram/Lowrun.js +++ b/Mizzajl/home/lowram/Lowrun.js @@ -4,13 +4,13 @@ export async function main(ns) { const sTarget = ns.args[0]; // target server // Lowram settings - const sBatchScript = "lowram/Lowhgw.js"; + const sBatchScript = "lowram/lowhgw2.js"; const sPrepScript = "lowram/Lowprep.js"; const sRunScript = "lowram/Lowrun.js"; const sGrowScript = "lowram/Lowgrow.js"; const sDistScript = "testdistribute.js"; - await ns.sleep(1); + await ns.sleep(100); const nTargetMoney = ns.getServerMoneyAvailable(sTarget); const nTargetMaxMoney = ns.getServerMaxMoney(sTarget); diff --git a/Mizzajl/home/lowram/lowhgw2.js b/Mizzajl/home/lowram/lowhgw2.js new file mode 100644 index 0000000..52055c2 --- /dev/null +++ b/Mizzajl/home/lowram/lowhgw2.js @@ -0,0 +1,99 @@ +import { distributeScript, getGrowThreads, getSetting, sortJsonArrayByKey } from "../Library"; + +/** @param {NS} ns */ +export async function main(ns) { + ns.tail(); + ns.disableLog("scp"); + 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 sRunScript = "lowram/Lowrun.js"; + const aFiles = [sHackScript, sGrowScript, sWeakenScript, sServerListFile]; + + const nHackScriptRAM = 1.75; + const nGrowScriptRAM = 1.7; + const nWeakenScriptRAM = 1.75; + + //target server info + const nMinSecurity = ns.getServerMinSecurityLevel(sTarget); + const nMaxMoney = ns.getServerMaxMoney(sTarget); + + const nHomeReserve = getSetting(ns, "homeRAMReserve"); + + let bLoop = true; + while (bLoop) { + + let nWeakenTime = ns.getWeakenTime(sTarget); + + let oServerlist = JSON.parse(ns.read(sServerListFile)); + let sortedList = sortJsonArrayByKey(oServerlist, "serverCores", "maxRam").reverse(); + + let nMaxThreads = 0; + sortedList.forEach((entry) => { + if (entry.rootAccess && entry.maxRam >= 1) { + ns.scp(aFiles, "home", entry.serverName); + nMaxThreads += entry.maxRam / 1.75; + } + }) + let nMaxThreadsINT = Math.floor(nMaxThreads); + ns.print("nMaxThreadsINT = " + nMaxThreadsINT); + + + let nCurrentSecurity = ns.getServerSecurityLevel(sTarget); + let nCurrentMoney = ns.getServerMoneyAvailable(sTarget); + let nGrowBonus = 0; + if (nCurrentMoney <= nMaxMoney * 0.8) { + nGrowBonus = 100; + } + let nTempHackThreads = 1; + let nTempGrowThreads = nGrowBonus + getGrowThreads(ns, sTarget, nTempHackThreads, 1); + let nTempWeakenThreads = 1 + (nTempHackThreads / 25) + (nTempGrowThreads / 12.5); + + //let nBatchSize = nTempHackThreads + nTempGrowThreadsINT + nTempWeakenThreadsINT; + let nBatchWeight = nTempHackThreads + nTempGrowThreads + nTempWeakenThreads; + ns.print("nBatchWeight = " + nBatchWeight); + + let nHackWeight = (nTempHackThreads / nBatchWeight); + let nHGrowWeight = (nTempGrowThreads / nBatchWeight); + let nWeakenWeight = (nTempWeakenThreads / nBatchWeight); + + ns.print("nHackWeight = " + nHackWeight); + ns.print("nHGrowWeight = " + nHGrowWeight); + ns.print("nWeakenWeight = " + nWeakenWeight); + + let nTempHackThreadsINT = Math.ceil(nMaxThreadsINT * nHackWeight); + let nTempGrowThreadsINT = Math.ceil(nMaxThreadsINT * nHGrowWeight); + let nTempWeakenThreadsINT = Math.ceil(nMaxThreadsINT * nWeakenWeight); + + ns.print("nTempHackThreadsINT = " + nTempHackThreadsINT); + ns.print("nTempGrowThreadsINT = " + nTempGrowThreadsINT); + ns.print("nTempWeakenThreadsINT = " + nTempWeakenThreadsINT); + + ns.print("nWeakenTime = " + nWeakenTime / 1000); + + let nHackThreads = Math.max(1, Math.ceil(nTempHackThreadsINT / (nWeakenTime / 5000))); + let nGrowThreads = Math.max(1, Math.ceil(nTempGrowThreadsINT / (nWeakenTime / 5000))); + let nWeakenThreads = Math.max(1, Math.ceil(nTempWeakenThreadsINT / (nWeakenTime / 5000))); + + let nGrowTime = nWeakenTime * 0.8; + let nHackTime = nWeakenTime / 4; + + let nGrowDelay = nWeakenTime - nGrowTime; + let nHackDelay = nWeakenTime - nHackTime; + + let nPID1 = ns.run(sDistScript, 1, sHackScript, nHackThreads, sTarget, false, nHackDelay - 100); + let nPID2 = ns.run(sDistScript, 1, sGrowScript, nGrowThreads, sTarget, false, nGrowDelay - 50); + let nPID3 = ns.run(sDistScript, 1, sWeakenScript, nWeakenThreads, sTarget, false, 0); + if (nPID1 === 0 || nPID2 === 0 || nPID3 === 0) { bLoop = false; } + + ns.print("Cash: " + (Math.floor(nCurrentMoney * 1000) / 1000) + " / " + nMaxMoney); + ns.print("Security: " + (Math.floor(nCurrentSecurity * 1000) / 1000) + " / " + nMinSecurity); + + await ns.sleep(5000); + } + await ns.sleep(10000); + ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget); +} \ No newline at end of file diff --git a/Mizzajl/home/testdistribute.js b/Mizzajl/home/testdistribute.js index a9b6dd2..30c1c8a 100644 --- a/Mizzajl/home/testdistribute.js +++ b/Mizzajl/home/testdistribute.js @@ -2,7 +2,7 @@ import { sortJsonArrayByKey } from "Library.js"; /** @param {NS} ns */ export async function main(ns) { - ns.tail(); + //ns.tail(); ns.disableLog("ALL"); const sScript = ns.args[0]; // script let nThreads = ns.args[1]; // threads @@ -19,7 +19,13 @@ export async function main(ns) { 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.tprint(aSortedList); ns.print(sScript); ns.print(nThreads); @@ -52,15 +58,16 @@ export async function main(ns) { aSortedList.forEach((entry) => { 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.scp(sScript, sHost); 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){ + else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) { let nThreadsDist = Math.floor(nFreeRAM / nScriptSize); + ns.scp(sScript, sHost); ns.print("room for : " + nThreadsDist + " scripts"); ns.exec(sScript, sHost, nThreadsDist, sTarget, bRepeat, nMsecDelay); nThreads -= nThreadsDist;