Sync for Serverlist
This commit is contained in:
@@ -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
20
Ramses/home/WorkerList.js
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user