From 9080306adb9885fbfd660c88a76b531f9bb63394 Mon Sep 17 00:00:00 2001 From: Mizzajl Date: Wed, 16 Oct 2024 18:10:37 +0200 Subject: [PATCH] fixes + throwparty and buytea and rundist --- Mizzajl/home/RunDist.js | 82 ++++++++++++++++++++++++++++++++ Mizzajl/home/corp/BuyTea.js | 9 ++++ Mizzajl/home/corp/GetCorpData.js | 2 +- Mizzajl/home/corp/HireWorkers.js | 2 +- Mizzajl/home/corp/ThrowParty.js | 10 ++++ Mizzajl/home/lowram/lowhgw2.js | 6 ++- Mizzajl/home/testdistribute.js | 8 +++- 7 files changed, 113 insertions(+), 6 deletions(-) create mode 100644 Mizzajl/home/RunDist.js create mode 100644 Mizzajl/home/corp/BuyTea.js create mode 100644 Mizzajl/home/corp/ThrowParty.js diff --git a/Mizzajl/home/RunDist.js b/Mizzajl/home/RunDist.js new file mode 100644 index 0000000..6e484d4 --- /dev/null +++ b/Mizzajl/home/RunDist.js @@ -0,0 +1,82 @@ +import { sortJsonArrayByKey } from "Library.js"; + +/** @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); + } + }); +} \ No newline at end of file diff --git a/Mizzajl/home/corp/BuyTea.js b/Mizzajl/home/corp/BuyTea.js new file mode 100644 index 0000000..845783c --- /dev/null +++ b/Mizzajl/home/corp/BuyTea.js @@ -0,0 +1,9 @@ +/** @param {NS} ns */ +export async function main(ns) { + let [sDivName, sCity] = ns.args; + //ns.tprint("sDivName = " + sDivName); + //ns.tprint("sCity = " + sCity); + let bSuccess = ns.corporation.buyTea(sDivName, sCity) + //ns.tprint("bSuccess = " + bSuccess); + ns.writePort(ns.pid, bSuccess); +} \ No newline at end of file diff --git a/Mizzajl/home/corp/GetCorpData.js b/Mizzajl/home/corp/GetCorpData.js index 5333f72..5ddf127 100644 --- a/Mizzajl/home/corp/GetCorpData.js +++ b/Mizzajl/home/corp/GetCorpData.js @@ -1,4 +1,4 @@ /** @param {NS} ns */ export async function main(ns) { - ns.writePort(ns.pid, ns.corporation.getCorporation()); + ns.writePort(ns.pid,ns.corporation.getCorporation()); } \ No newline at end of file diff --git a/Mizzajl/home/corp/HireWorkers.js b/Mizzajl/home/corp/HireWorkers.js index 5033276..4e90be8 100644 --- a/Mizzajl/home/corp/HireWorkers.js +++ b/Mizzajl/home/corp/HireWorkers.js @@ -14,7 +14,7 @@ export async function main(ns) { (oCurrentOffice.employeeJobs.Management < aWorkerDistribution[3]) ? ns.corporation.hireEmployee(sDivName, sCity, "Management") : ""; (oCurrentOffice.employeeJobs["Research & Development"] < aWorkerDistribution[4]) ? ns.corporation.hireEmployee(sDivName, sCity, "Research & Development") : ""; (oCurrentOffice.employeeJobs.Intern < aWorkerDistribution[5]) ? ns.corporation.hireEmployee(sDivName, sCity, "Intern") : ""; - await ns.sleep(1); + await ns.sleep(1) i += 1; }; ns.writePort(ns.pid, true); diff --git a/Mizzajl/home/corp/ThrowParty.js b/Mizzajl/home/corp/ThrowParty.js new file mode 100644 index 0000000..0a7759d --- /dev/null +++ b/Mizzajl/home/corp/ThrowParty.js @@ -0,0 +1,10 @@ +/** @param {NS} ns */ +export async function main(ns) { + let [sDivName, sCity, nSpend] = ns.args; + //ns.tprint("sDivName = " + sDivName); + //ns.tprint("sCity = " + sCity); + //ns.tprint("nSpend = " + nSpend); + let nMoraleMultiplier = ns.corporation.throwParty(sDivName, sCity, nSpend) + //ns.tprint("nMoraleMultiplier = " + nMoraleMultiplier); + ns.writePort(ns.pid, nMoraleMultiplier); +} \ No newline at end of file diff --git a/Mizzajl/home/lowram/lowhgw2.js b/Mizzajl/home/lowram/lowhgw2.js index 33ba8c8..8f9f276 100644 --- a/Mizzajl/home/lowram/lowhgw2.js +++ b/Mizzajl/home/lowram/lowhgw2.js @@ -34,11 +34,13 @@ export async function main(ns) { let nMaxThreads = 0; sortedList.forEach((entry) => { if (entry.rootAccess && entry.maxRam >= 1) { - ns.scp(aFiles, "home", entry.serverName); + if (entry.serverName !== "home") { + ns.scp(aFiles, entry.serverName, "home"); + } nMaxThreads += entry.maxRam / 1.75; } }) - let nMaxThreadsINT = Math.floor(nMaxThreads-32); + let nMaxThreadsINT = Math.floor(nMaxThreads - 64); ns.print("nMaxThreadsINT = " + nMaxThreadsINT); diff --git a/Mizzajl/home/testdistribute.js b/Mizzajl/home/testdistribute.js index 30c1c8a..e2a68a2 100644 --- a/Mizzajl/home/testdistribute.js +++ b/Mizzajl/home/testdistribute.js @@ -60,14 +60,18 @@ export async function main(ns) { 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); + if (entry.serverName !== "home") { + ns.scp(sScript, sHost, "home"); + } 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.scp(sScript, sHost); + if (entry.serverName !== "home") { + ns.scp(sScript, sHost, "home"); + } ns.print("room for : " + nThreadsDist + " scripts"); ns.exec(sScript, sHost, nThreadsDist, sTarget, bRepeat, nMsecDelay); nThreads -= nThreadsDist;