Compare commits
2 Commits
c9f9f5279a
...
aa8191c960
| Author | SHA1 | Date | |
|---|---|---|---|
| aa8191c960 | |||
| 151c773446 |
@@ -88,7 +88,7 @@ export function findBestTarget(ns, maxSec, maxPorts, currentHackLevel, manualTar
|
|||||||
bestEntry = null;
|
bestEntry = null;
|
||||||
let nMaxMoneyPerChance = 0;
|
let nMaxMoneyPerChance = 0;
|
||||||
let nBestMoneyPerChance = 0;
|
let nBestMoneyPerChance = 0;
|
||||||
serverList.forEach((entry)=> {
|
serverList.forEach((entry) => {
|
||||||
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(entry.serverName)) / entry.minSec;
|
nMaxMoneyPerChance = (entry.maxMoney * ns.hackAnalyzeChance(entry.serverName)) / entry.minSec;
|
||||||
if (nMaxMoneyPerChance > nBestMoneyPerChance) {
|
if (nMaxMoneyPerChance > nBestMoneyPerChance) {
|
||||||
@@ -203,12 +203,12 @@ export async function purchaseAndUpgradeServers(ns) {
|
|||||||
purchasedServers = listPurchasedServers(ns);
|
purchasedServers = listPurchasedServers(ns);
|
||||||
for (let currentServer of purchasedServers) {
|
for (let currentServer of purchasedServers) {
|
||||||
currentMoney = ns.getServerMoneyAvailable("home");
|
currentMoney = ns.getServerMoneyAvailable("home");
|
||||||
if (ns.getServerMaxRam(currentServer) < targetRam){
|
if (ns.getServerMaxRam(currentServer) < targetRam) {
|
||||||
if (ns.getPurchasedServerUpgradeCost(currentServer, targetRam) < currentMoney) {
|
if (ns.getPurchasedServerUpgradeCost(currentServer, targetRam) < currentMoney) {
|
||||||
if (ns.upgradePurchasedServer(currentServer, targetRam)) {
|
if (ns.upgradePurchasedServer(currentServer, targetRam)) {
|
||||||
ns.print(currentServer + " upgraded to " + targetRam + " GB RAM");
|
ns.print(currentServer + " upgraded to " + targetRam + " GB RAM");
|
||||||
serverList = JSON.parse(ns.read("serverList.txt"));
|
serverList = JSON.parse(ns.read("serverList.txt"));
|
||||||
let newServerList = serverList.map((entry) => { if (entry.serverName === currentServer){ entry.maxRam = targetRam} return entry});
|
let newServerList = serverList.map((entry) => { if (entry.serverName === currentServer) { entry.maxRam = targetRam } return entry });
|
||||||
ns.write("serverList.txt", JSON.stringify(newServerList), "w");
|
ns.write("serverList.txt", JSON.stringify(newServerList), "w");
|
||||||
ns.tprint(cCyan + "Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB" + cReset);
|
ns.tprint(cCyan + "Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB" + cReset);
|
||||||
ns.toast("Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB", "info", 10000);
|
ns.toast("Server: " + currentServer + " upgraded to: " + targetRam.toLocaleString() + " GB", "info", 10000);
|
||||||
@@ -216,7 +216,8 @@ export async function purchaseAndUpgradeServers(ns) {
|
|||||||
} else {
|
} else {
|
||||||
await ns.sleep(5000);
|
await ns.sleep(5000);
|
||||||
continue
|
continue
|
||||||
}};
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
@@ -291,6 +292,10 @@ export function listWorkServers(ns) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function sortJsonArrayByKey(array, primaryKey, secondaryKey) {
|
export function sortJsonArrayByKey(array, primaryKey, secondaryKey) {
|
||||||
|
if (typeof (array) === "string") {
|
||||||
|
array = JSON.parse(array);
|
||||||
|
}
|
||||||
|
//ns.tprint(typeof(array));
|
||||||
return array.sort((a, b) => {
|
return array.sort((a, b) => {
|
||||||
const xPrimary = a[primaryKey];
|
const xPrimary = a[primaryKey];
|
||||||
const yPrimary = b[primaryKey];
|
const yPrimary = b[primaryKey];
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export async function main(ns) {
|
|||||||
const sPrepScript = "lowram/Lowprep.js";
|
const sPrepScript = "lowram/Lowprep.js";
|
||||||
const sRunScript = "lowram/Lowrun.js";
|
const sRunScript = "lowram/Lowrun.js";
|
||||||
const sLowGrowScript = "lowram/Lowgrow.js";
|
const sLowGrowScript = "lowram/Lowgrow.js";
|
||||||
|
const sDistScript = "testdistribute.js";
|
||||||
|
|
||||||
const sGrowScript = "RMgrow.js";
|
const sGrowScript = "RMgrow.js";
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export async function main(ns) {
|
|||||||
const sGrowScript = "RMgrow.js";
|
const sGrowScript = "RMgrow.js";
|
||||||
const sWeakenScript = "RMweaken.js";
|
const sWeakenScript = "RMweaken.js";
|
||||||
const sServerListFile = "serverList.txt";
|
const sServerListFile = "serverList.txt";
|
||||||
|
const sDistScript = "testdistribute.js";
|
||||||
|
|
||||||
const nHackScriptRAM = 1.75;
|
const nHackScriptRAM = 1.75;
|
||||||
const nGrowScriptRAM = 1.7;
|
const nGrowScriptRAM = 1.7;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export async function main(ns) {
|
|||||||
const sPrepScript = "lowram/Lowprep.js";
|
const sPrepScript = "lowram/Lowprep.js";
|
||||||
const sRunScript = "lowram/Lowrun.js";
|
const sRunScript = "lowram/Lowrun.js";
|
||||||
const sGrowScript = "lowram/Lowgrow.js";
|
const sGrowScript = "lowram/Lowgrow.js";
|
||||||
|
const sDistScript = "testdistribute.js";
|
||||||
|
|
||||||
//declare variables
|
//declare variables
|
||||||
const sWeakenScript = "RMweaken.js";
|
const sWeakenScript = "RMweaken.js";
|
||||||
@@ -39,8 +40,11 @@ export async function main(ns) {
|
|||||||
ns.print(nThreads + " of " + sWeakenScript + " requires " + (ns.getScriptRam(sWeakenScript, "home") * nThreads) + " GB of RAM");
|
ns.print(nThreads + " of " + sWeakenScript + " requires " + (ns.getScriptRam(sWeakenScript, "home") * nThreads) + " GB of RAM");
|
||||||
ns.print("weakening will take " + (nDelay / 1000 / 60) + " minutes");
|
ns.print("weakening will take " + (nDelay / 1000 / 60) + " minutes");
|
||||||
|
|
||||||
|
ns.run(sDistScript, 1, sWeakenScript, nThreads, sTarget, false, 0);
|
||||||
|
await ns.sleep(nDelay+10);
|
||||||
|
/*
|
||||||
if ((ns.getServerMaxRam(oHome.hostname) - ns.getServerUsedRam(oHome.hostname)) >= (ns.getScriptRam(sWeakenScript, "home") * nThreads)) {
|
if ((ns.getServerMaxRam(oHome.hostname) - ns.getServerUsedRam(oHome.hostname)) >= (ns.getScriptRam(sWeakenScript, "home") * nThreads)) {
|
||||||
nWeakenPID = ns.run(sWeakenScript, nThreads, sTarget);
|
nWeakenPID = ns.exec(sWeakenScript, nThreads, sTarget);
|
||||||
//ns.print("Waiting for PID = " + nWeakenPID);
|
//ns.print("Waiting for PID = " + nWeakenPID);
|
||||||
await ns.nextPortWrite(nWeakenPID);
|
await ns.nextPortWrite(nWeakenPID);
|
||||||
nSecurity = ns.getServerSecurityLevel(sTarget);
|
nSecurity = ns.getServerSecurityLevel(sTarget);
|
||||||
@@ -48,12 +52,14 @@ export async function main(ns) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
nThreads = Math.floor(((ns.getServerMaxRam("home") - ns.getServerUsedRam("home")) / ns.getScriptRam(sWeakenScript)));
|
nThreads = Math.floor(((ns.getServerMaxRam("home") - ns.getServerUsedRam("home")) / ns.getScriptRam(sWeakenScript)));
|
||||||
nWeakenPID = ns.run(sWeakenScript, nThreads, sTarget);
|
nWeakenPID = ns.exec(sWeakenScript, nThreads, sTarget);
|
||||||
//ns.print("Waiting for PID = " + nWeakenPID);
|
//ns.print("Waiting for PID = " + nWeakenPID);
|
||||||
await ns.nextPortWrite(nWeakenPID);
|
await ns.nextPortWrite(nWeakenPID);
|
||||||
nSecurity = ns.getServerSecurityLevel(sTarget);
|
nSecurity = ns.getServerSecurityLevel(sTarget);
|
||||||
//ns.print("Breach in progress, security level is now at: " + nSecurity);
|
//ns.print("Breach in progress, security level is now at: " + nSecurity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
//back to Lowrun
|
//back to Lowrun
|
||||||
ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export async function main(ns) {
|
|||||||
const sPrepScript = "lowram/Lowprep.js";
|
const sPrepScript = "lowram/Lowprep.js";
|
||||||
const sRunScript = "lowram/Lowrun.js";
|
const sRunScript = "lowram/Lowrun.js";
|
||||||
const sGrowScript = "lowram/Lowgrow.js";
|
const sGrowScript = "lowram/Lowgrow.js";
|
||||||
|
const sDistScript = "testdistribute.js";
|
||||||
|
|
||||||
const nTargetMoney = ns.getServerMoneyAvailable(sTarget);
|
const nTargetMoney = ns.getServerMoneyAvailable(sTarget);
|
||||||
const nTargetMaxMoney = ns.getServerMaxMoney(sTarget);
|
const nTargetMaxMoney = ns.getServerMaxMoney(sTarget);
|
||||||
@@ -20,10 +21,10 @@ export async function main(ns) {
|
|||||||
if (nTargetSecurity > nTargetMinSecurity + 1) {
|
if (nTargetSecurity > nTargetMinSecurity + 1) {
|
||||||
ns.spawn(sPrepScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
ns.spawn(sPrepScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
||||||
}
|
}
|
||||||
else if (nTargetMoney < nTargetMaxMoney) {
|
/*else if (nTargetMoney < nTargetMaxMoney) {
|
||||||
//ns.print("need to prep MONEY, running " + sGrowScript);
|
//ns.print("need to prep MONEY, running " + sGrowScript);
|
||||||
ns.spawn(sGrowScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
ns.spawn(sGrowScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
||||||
}
|
}*/
|
||||||
else {
|
else {
|
||||||
ns.spawn(sBatchScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
ns.spawn(sBatchScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
|
import { sortJsonArrayByKey } from "Library.js";
|
||||||
|
|
||||||
/** @param {NS} ns */
|
/** @param {NS} ns */
|
||||||
export async function main(ns) {
|
export async function main(ns) {
|
||||||
ns.tail();
|
ns.tail();
|
||||||
|
ns.disableLog("ALL");
|
||||||
const sScript = ns.args[0]; // script
|
const sScript = ns.args[0]; // script
|
||||||
const nThreads = ns.args[1]; // threads
|
let nThreads = ns.args[1]; // threads
|
||||||
const sTarget = ns.args[2]; // target server
|
const sTarget = ns.args[2]; // target server
|
||||||
const bRepeat = ns.args[3]; // should this script loop
|
const bRepeat = ns.args[3]; // should this script loop
|
||||||
const nMsecDelay = ns.args[4]; // MsecDelay
|
const nMsecDelay = ns.args[4]; // MsecDelay
|
||||||
@@ -15,15 +18,15 @@ export async function main(ns) {
|
|||||||
const sWorkerList = "WorkerList.txt";
|
const sWorkerList = "WorkerList.txt";
|
||||||
|
|
||||||
if (!ns.fileExists(sListName, "home")) { ns.print(`ERROR ${sListName} does not exist.`); return false; };
|
if (!ns.fileExists(sListName, "home")) { ns.print(`ERROR ${sListName} does not exist.`); return false; };
|
||||||
let sServerList = JSON.parse(ns.read(sListName));
|
let sServerList = ns.read(sListName);
|
||||||
let aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse();
|
let aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse();
|
||||||
|
//ns.tprint(aSortedList);
|
||||||
ns.print(sScript);
|
ns.print(sScript);
|
||||||
ns.print(nThreads);
|
ns.print(nThreads);
|
||||||
ns.print(sTarget);
|
ns.print(sTarget);
|
||||||
|
|
||||||
const nScriptSize = ns.getScriptRam(sScript, "home");
|
const nScriptSize = ns.getScriptRam(sScript, "home");
|
||||||
const nTotalSize = nScriptSize * nThreads;
|
let nTotalSize = nScriptSize * nThreads;
|
||||||
|
|
||||||
ns.print("nScriptSize = " + nScriptSize);
|
ns.print("nScriptSize = " + nScriptSize);
|
||||||
ns.print("nTotalSize = " + nTotalSize);
|
ns.print("nTotalSize = " + nTotalSize);
|
||||||
@@ -47,12 +50,23 @@ export async function main(ns) {
|
|||||||
// run remaining hacks on smallest to biggest core servers
|
// run remaining hacks on smallest to biggest core servers
|
||||||
|
|
||||||
aSortedList.forEach((entry) => {
|
aSortedList.forEach((entry) => {
|
||||||
if (entry.rootAccess && ns.getServerMaxRam() >= ns.getScriptRam(sScript, "home")) {
|
|
||||||
let sHost = entry.serverName;
|
let sHost = entry.serverName;
|
||||||
|
ns.print("sHost = " + sHost)
|
||||||
|
ns.scp(sScript, sHost);
|
||||||
|
let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||||
|
if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) {
|
||||||
ns.exec(sScript, sHost, nThreads, sTarget, bRepeat, nMsecDelay);
|
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.print("room for : " + nThreadsDist + " scripts");
|
||||||
|
ns.exec(sScript, sHost, nThreadsDist, sTarget, bRepeat, nMsecDelay);
|
||||||
|
nThreads -= nThreadsDist;
|
||||||
|
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
for (i = 0; ; i++) {
|
for (i = 0; ; i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user