import { getGrowThreads } from "myLibrary.js"; /** @param {NS} ns */ export async function main(ns) { //ns.tail(); const sOverrideTarget = ns.args[0]; // run on this target instead of best let serverList = JSON.parse(ns.read("serverList.txt")); let bestTarget = JSON.parse(ns.read("bestTarget.txt")); let sTarget; if (sOverrideTarget !== undefined) { sTarget = sOverrideTarget; } else { sTarget = bestTarget.serverName; } let sScript = "batch.js"; const sShareScript = "factionboost.js"; const sWeakenScript = "RMweaken.js"; const sGrowScript = "RMgrow.js"; const sHackScript = "RMhack.js"; const nWeakenThreads = 1; //5 const nHackThreads = 1; //1 const nGrowThreads = getGrowThreads(ns, sTarget, nHackThreads); //ns.tprint("nGrowThreads = " + nGrowThreads); const nWeakenScriptRAM = 1.75 * nWeakenThreads; const nHackScriptRAM = 1.75 * nHackThreads; const nGrowScriptRAM = 1.7 * nGrowThreads; //ns.tprint("nGrowScriptRAM = " + nGrowScriptRAM); const nFrequency = 50; let nScriptsRAM; let nMaxRam; let nScripts; for (const [name, entry] of Object.entries(serverList)) { //let rootAccess = ns.hasRootAccess(currentServer); //ns.tprint(entry.serverName + " sTarget = " + sTarget); nMaxRam = ns.getServerMaxRam(entry.serverName); //ns.tprint(entry.serverName + " nMaxRam = " + nMaxRam); //nScriptsRAM = ns.getScriptRam(sScript, "home") + Math.max(nWeakenScriptRAM, nGrowScriptRAM, nHackScriptRAM); //ns.tprint("nScriptsRAM = " + nScriptsRAM); if (entry.maxRam >= 64 && serverList[name].rootAccess === true) { if (sOverrideTarget !== undefined) { sTarget = sOverrideTarget; } else { sTarget = bestTarget.serverName; } //ns.tprint("sTarget = " + sTarget); //ns.tprint("entry.serverName = " + entry.serverName); ns.scriptKill(sScript, entry.serverName); ns.scriptKill(sShareScript, entry.serverName); ns.scp("myLibrary.js", entry.serverName, "home"); ns.scp(sScript, entry.serverName, "home"); ns.scp(sWeakenScript, entry.serverName, "home"); ns.scp(sGrowScript, entry.serverName, "home"); ns.scp(sHackScript, entry.serverName, "home"); ns.exec(sScript, entry.serverName, 1, sTarget, nFrequency, true, false); await ns.sleep(1); } else if (entry.maxRam < 64 && entry.maxRam > 0 && serverList[name].rootAccess === true) { ns.scriptKill(sScript, entry.serverName); ns.scriptKill(sShareScript, entry.serverName); ns.scriptKill(sWeakenScript, entry.serverName); ns.scriptKill(sGrowScript, entry.serverName); ns.scriptKill(sHackScript, entry.serverName); ns.scp(sShareScript, entry.serverName); let nShare = Math.floor(((ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName)) / ns.getScriptRam(sShareScript))); ns.tprint(entry.serverName + " nShare = " + nShare * ns.getScriptRam(sShareScript)); ns.exec(sShareScript, entry.serverName, nShare); } } //ns.exec("serverlister.js", "home", 1); }