Sync for Serverlist

This commit is contained in:
Philipp
2024-10-13 11:05:27 +02:00
parent c975dfbe51
commit 7d0a0dc2b8
2 changed files with 68 additions and 3 deletions

View File

@@ -83,14 +83,14 @@ export function findBestTarget(ns, maxSec, maxPorts, currentHackLevel, manualTar
if (!ns.fileExists("serverList.txt", "home")) scanServerList(); if (!ns.fileExists("serverList.txt", "home")) scanServerList();
let serverList = JSON.parse(ns.read("serverList.txt")); let serverList = JSON.parse(ns.read("serverList.txt"));
let bestEntry = ""; let bestEntry = "";
if (manualTargetOverride.length > 0) { if (manualTargetOverride && manualTargetOverride.length > 0) {
bestEntry = manualTargetOverride; bestEntry = manualTargetOverride;
} else { } else {
bestEntry = null; bestEntry = null;
let nMaxMoneyPerChance = 0; let nMaxMoneyPerChance = 0;
let nBestMoneyPerChance = 0; let nBestMoneyPerChance = 0;
for (const [name, entry] of Object.entries(serverList)) { for (const [name, entry] of Object.entries(serverList)) {
if (entry.minSec <= maxSec && entry.minPorts <= maxPorts && entry.minHackLvl < currentHackLevel) { if (entry.minSec <= maxSec && entry.minPorts <= maxPorts && entry.minHackLvl <= currentHackLevel) {
nMaxMoneyPerChance = (entry.maxMoney * ns.hackAnalyzeChance(name)) / entry.minSec; nMaxMoneyPerChance = (entry.maxMoney * ns.hackAnalyzeChance(name)) / entry.minSec;
if (nMaxMoneyPerChance > nBestMoneyPerChance) { if (nMaxMoneyPerChance > nBestMoneyPerChance) {
nBestMoneyPerChance = nMaxMoneyPerChance; nBestMoneyPerChance = nMaxMoneyPerChance;
@@ -172,7 +172,7 @@ export async function purchaseAndUpgradeServers(ns) {
let targetRamInitial = 16; let targetRamInitial = 16;
if (ns.getPurchasedServerCost(targetRamInitial) < currentMoney) { if (ns.getPurchasedServerCost(targetRamInitial) < currentMoney) {
let sFrontZero = "0"; let sFrontZero = "0";
if (pServcount >= 9) { if (pServcount > 9) {
sFrontZero = ""; sFrontZero = "";
} }
let hostname = ns.purchaseServer("pserv-" + sFrontZero + pServcount, targetRamInitial); let hostname = ns.purchaseServer("pserv-" + sFrontZero + pServcount, targetRamInitial);
@@ -241,3 +241,48 @@ export function getGrowThreads(ns, sTarget, nHackThreads, nCores) {
let nGrowthThreads = ns.growthAnalyze(sTarget, 1 + nHackAmountPercent, nCores); let nGrowthThreads = ns.growthAnalyze(sTarget, 1 + nHackAmountPercent, nCores);
return nGrowthThreads; return nGrowthThreads;
} }
/** @param {NS} ns */
export async function ExecuteAndWait(ns, sScript, ...args) {
if (!ns.isRunning(sScript, ...args)) { ns.exec(sScript, ...args); }
while (ns.isRunning(sScript, ...args)) { await ns.sleep(100); }
}
/** @param {NS} ns */
export async function RunAndWait(ns, sScript, ...args) {
if (!ns.isRunning(sScript, ...args)) { ns.run(sScript, ...args); }
while (ns.isRunning(sScript, ...args)) { await ns.sleep(100); }
}
/** @param {NS} ns */
export function listWorkServers(ns) {
ns.disableLog("ALL");
const sFileName = "serverList.txt";
if (!ns.fileExists(sFileName, "home")) { ns.print(`ERROR ${sFileName} does not exist.`); return false; };
let serverList = JSON.parse(ns.read(sFileName));
let nTotalWorkerRAM = 0;
let nTotalFreeRAM = 0;
const nServerColumnWidth = 20;
const nValueColumnWidth = 8;
const nCoresWidth = 5;
ns.printRaw("┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓");
ns.printRaw("┃ Server ┃ Free / Max RAM ┃ Cores ┃");
ns.printRaw("┣━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━┫");
for (const [name, entry] of Object.entries(serverList)) {
if (entry.rootAccess && entry.maxRam >= 1) {
let sServerName = entry.serverName.padEnd(nServerColumnWidth, ' ');
let nFreeRAM = entry.maxRam - ns.getServerUsedRam(entry.serverName);
let sFreeRAM = nFreeRAM.toLocaleString().padStart(nValueColumnWidth, ' ');
let sMaxRam = entry.maxRam.toLocaleString().padStart(nValueColumnWidth, ' ');
let sCores = entry.serverCores.toLocaleString().padStart(nCoresWidth, ' ');
ns.printRaw(`${sServerName}${sFreeRAM} / ${sMaxRam}${sCores}`);
nTotalWorkerRAM += entry.maxRam;
nTotalFreeRAM += nFreeRAM;
}
}
ns.printRaw("┗━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━┛");
ns.printRaw(`Total Free: ${nTotalFreeRAM.toLocaleString()} / ${nTotalWorkerRAM.toLocaleString()} GB`);
}

20
Ramses/home/WorkerList.js Normal file
View File

@@ -0,0 +1,20 @@
import { listWorkServers } from "/Library.js";
/** @param {NS} ns */
export async function main(ns) {
ns.disableLog("ALL");
ns.tail();
ns.resizeTail(522,625);
let nStatus = 0;
let aStatus = ["─", "╲", "│", ""];
let bWhile = true;
while (bWhile !== false) {
ns.clearLog();
bWhile = listWorkServers(ns);
//ns.printRaw(aStatus[nStatus])
ns.setTitle(`WorkerList ${aStatus[nStatus]}`);
nStatus++;
if (nStatus > 3) nStatus = 0;
await ns.sleep(1050);
}
}