Files
The_Bitburner_Scripts/Mizzajl/home/EveryServerRun.js
2024-10-13 23:22:09 +02:00

93 lines
3.2 KiB
JavaScript

import { getGrowThreads, getSetting } from "Library.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 sLibraryScript = "Library.js"
const sSettingsFile = "settings.txt"
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;
const nFrequency = getSetting(ns, "batchFrequency");
let nScriptsRAM;
let nMaxRam;
let nScripts;
serverList.forEach(async (entry) => {
//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 && entry.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.scp(sLibraryScript, entry.serverName, "home");
ns.scp(sSettingsFile, 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 && entry.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);
}