Compare commits

...

3 Commits

Author SHA1 Message Date
70e62e8d25 Merge branch 'main' of https://gitea.goetje-ing.de/ArchitectsOfTheBitburner/The_Bitburner_Scripts 2024-10-15 21:51:56 +02:00
fd29b0d35d 2 2024-10-15 21:51:28 +02:00
3bf0443571 Distributed HGW 2024-10-15 21:51:05 +02:00
11 changed files with 203 additions and 43 deletions

View File

@@ -1,5 +1,6 @@
/** @param {NS} ns */ /** @param {NS} ns */
export async function main(ns) { export async function main(ns) {
ns.tail();
let aCitites = ["Sector-12", "Aevum", "Volhaven", "Chongqing", "New Tokyo", "Ishima"]; let aCitites = ["Sector-12", "Aevum", "Volhaven", "Chongqing", "New Tokyo", "Ishima"];
let sCorpName = "RM Enterprises"; let sCorpName = "RM Enterprises";
let sDivisionName = "Agri-Ram"; let sDivisionName = "Agri-Ram";
@@ -15,12 +16,15 @@ export async function main(ns) {
let oOfficeData = {}; let oOfficeData = {};
let oWarehouseData = {}; let oWarehouseData = {};
let bUnlockStatus = false; let bUnlockStatus = false;
let nTargetSize = 0;
nListenPID = ns.run("/corp/HasCorp.js"); nListenPID = ns.run("/corp/HasCorp.js");
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
let bCorpExists = ns.readPort(nListenPID); let bCorpExists = ns.readPort(nListenPID);
if (!bCorpExists) { if (!bCorpExists) {
nListenPID = ns.run("/corp/CreateCorp.js", 1, sCorpName); nListenPID = ns.run("/corp/CreateCorp.js", 1, sCorpName);
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
} }
if (!ns.readPort(nListenPID)) { ns.tprint("Error! Couldn't start Corporation!"); return }; if (!ns.readPort(nListenPID)) { ns.tprint("Error! Couldn't start Corporation!"); return };
ns.tprint(oCorpStatus); ns.tprint(oCorpStatus);
@@ -29,12 +33,14 @@ export async function main(ns) {
ns.tprint(nStep); ns.tprint(nStep);
nListenPID = ns.run("/corp/GetCorpData.js"); nListenPID = ns.run("/corp/GetCorpData.js");
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
oCorpData = ns.readPort(nListenPID); oCorpData = ns.readPort(nListenPID);
switch (nStep) { switch (nStep) {
case 0: case 0:
if (!oCorpData.divisions.length > 0) { if (!oCorpData.divisions.length > 0) {
nListenPID = ns.run("/corp/CorpStart.js", 1, sDivisionName, "Agriculture"); nListenPID = ns.run("/corp/CorpStart.js", 1, sDivisionName, "Agriculture");
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
}; };
oCorpStatus.nStep = 10; oCorpStatus.nStep = 10;
break; break;
@@ -42,10 +48,12 @@ export async function main(ns) {
for (let sCity of aCitites) { for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetDivisionsData.js", 1, sDivisionName); nListenPID = ns.run("/corp/GetDivisionsData.js", 1, sDivisionName);
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
oDivisionData = ns.readPort(nListenPID); oDivisionData = ns.readPort(nListenPID);
if (sCity !== "Sector-12" && !oDivisionData.cities.includes(sCity)) { if (sCity !== "Sector-12" && !oDivisionData.cities.includes(sCity)) {
nListenPID = ns.run("/corp/CorpExpandCity.js", 1, sDivisionName, sCity); nListenPID = ns.run("/corp/CorpExpandCity.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
} }
} }
oCorpStatus.nStep = 20; oCorpStatus.nStep = 20;
@@ -53,29 +61,36 @@ export async function main(ns) {
case 20: case 20:
nListenPID = ns.run("/corp/HasUnlock.js", 1, "Smart Supply"); nListenPID = ns.run("/corp/HasUnlock.js", 1, "Smart Supply");
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
bUnlockStatus = ns.readPort(nListenPID); bUnlockStatus = ns.readPort(nListenPID);
if (!bUnlockStatus) { if (!bUnlockStatus) {
await ns.nextPortWrite(ns.run("/corp/BuyUnlock.js", 1, "Smart Supply")); await ns.nextPortWrite(ns.run("/corp/BuyUnlock.js", 1, "Smart Supply"));
await ns.sleep(1)
} }
for (let sCity of aCitites) { for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetWarehouseData.js", 1, sDivisionName, sCity); nListenPID = ns.run("/corp/GetWarehouseData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
oWarehouseData = ns.readPort(nListenPID); oWarehouseData = ns.readPort(nListenPID);
if (!oWarehouseData) { if (!oWarehouseData) {
await ns.nextPortWrite(ns.run("/corp/PurchaseWarehouses.js", 1, sDivisionName, sCity)); await ns.nextPortWrite(ns.run("/corp/PurchaseWarehouses.js", 1, sDivisionName, sCity));
await ns.sleep(1)
} }
await ns.nextPortWrite(ns.run("/corp/SetSmartSupply.js", 1, sDivisionName, sCity)); await ns.nextPortWrite(ns.run("/corp/SetSmartSupply.js", 1, sDivisionName, sCity));
await ns.sleep(1)
}; };
oCorpStatus.nStep = 30; oCorpStatus.nStep = 30;
break; break;
case 30: case 30:
let nTargetSize = 4; nTargetSize = 4;
for (let sCity of aCitites) { for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity); nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
oOfficeData = ns.readPort(nListenPID); oOfficeData = ns.readPort(nListenPID);
await ns.nextPortWrite(ns.run("/corp/UpgradeOffice.js", 1, sDivisionName, sCity, nTargetSize, oOfficeData.size)) await ns.nextPortWrite(ns.run("/corp/UpgradeOffice.js", 1, sDivisionName, sCity, nTargetSize, oOfficeData.size))
await ns.sleep(1)
} }
oCorpStatus.nStep = 40; oCorpStatus.nStep = 40;
break; break;
@@ -83,9 +98,11 @@ export async function main(ns) {
for (let sCity of aCitites) { for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity); nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
oOfficeData = ns.readPort(nListenPID); oOfficeData = ns.readPort(nListenPID);
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData)); nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData), JSON.stringify({nWorkerNumbers: [1, 1, 1, 1, 0, 0]}));
await ns.nextPortWrite(nListenPID); await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
} }
oCorpStatus.nStep = 50; oCorpStatus.nStep = 50;
break; break;
@@ -103,11 +120,31 @@ export async function main(ns) {
ns.tprint(sCity, entry) ns.tprint(sCity, entry)
}) })
} }
oCorpStatus.nStep = 200; oCorpStatus.nStep = 60;
break; break;
case 60: case 60:
nTargetSize = 12;
for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
oOfficeData = ns.readPort(nListenPID);
await ns.nextPortWrite(ns.run("/corp/UpgradeOffice.js", 1, sDivisionName, sCity, nTargetSize, oOfficeData.size))
await ns.sleep(1)
}
oCorpStatus.nStep = 70;
break; break;
case 70: case 70:
for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
oOfficeData = ns.readPort(nListenPID);
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData), JSON.stringify({nWorkerNumbers: [2, 2, 2, 2, 2, 2]}));
await ns.nextPortWrite(nListenPID);
await ns.sleep(1)
}
oCorpStatus.nStep = 200;
break; break;
case 80: case 80:
break; break;

View File

@@ -335,8 +335,8 @@ export function sortJsonArrayByKey(array, primaryKey, secondaryKey) {
/** @param {NS} ns */ /** @param {NS} ns */
export async function distributeScript(ns, sScript, nThreads, ...args) { export async function distributeScript(ns, sScript, nThreads, [...args]) {
ns.tail(); //ns.tail();
ns.disableLog("ALL"); ns.disableLog("ALL");
const sListName = "serverList.txt"; const sListName = "serverList.txt";
@@ -357,15 +357,17 @@ export async function distributeScript(ns, sScript, nThreads, ...args) {
aSortedList.forEach((entry) => { aSortedList.forEach((entry) => {
let sHost = entry.serverName; let sHost = entry.serverName;
ns.print("sHost = " + sHost) ns.print("sHost = " + sHost)
ns.scp(sScript, sHost);
let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) { if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) {
ns.scp(sScript, sHost);
ns.exec(sScript, sHost, nThreads, ...args); ns.exec(sScript, sHost, nThreads, ...args);
nThreads = 0; nThreads = 0;
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
} }
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) { else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) {
let nThreadsDist = Math.floor(nFreeRAM / nScriptSize); let nThreadsDist = Math.floor(nFreeRAM / nScriptSize);
ns.scp(sScript, sHost);
ns.print("room for : " + nThreadsDist + " scripts"); ns.print("room for : " + nThreadsDist + " scripts");
ns.exec(sScript, sHost, nThreadsDist, ...args); ns.exec(sScript, sHost, nThreadsDist, ...args);
nThreads -= nThreadsDist; nThreads -= nThreadsDist;

View File

@@ -7,7 +7,7 @@ export async function main(ns) {
let maxPorts = Object.keys(cracks).length; let maxPorts = Object.keys(cracks).length;
scanServerList(ns); scanServerList(ns);
let manualTargetOverride = ""; let manualTargetOverride = "";
if (ns.getHackingLevel() < 200) { if (ns.getHackingLevel() < 10) {
manualTargetOverride = "n00dles"; manualTargetOverride = "n00dles";
}; };
findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride); findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride);

View File

@@ -4,7 +4,7 @@ import { listWorkServers } from "/Library.js";
export async function main(ns) { export async function main(ns) {
ns.disableLog("ALL"); ns.disableLog("ALL");
ns.tail(); ns.tail();
ns.resizeTail(560,625); ns.resizeTail(561,825);
let nStatus = 0; let nStatus = 0;
let aStatus = ["─", "╲", "│", ""]; let aStatus = ["─", "╲", "│", ""];
let bWhile = true; let bWhile = true;
@@ -15,6 +15,6 @@ export async function main(ns) {
ns.setTitle(`WorkerList ${aStatus[nStatus]}`); ns.setTitle(`WorkerList ${aStatus[nStatus]}`);
nStatus++; nStatus++;
if (nStatus > 3) nStatus = 0; if (nStatus > 3) nStatus = 0;
await ns.sleep(1050); await ns.sleep(1000);
} }
} }

4
Mizzajl/home/karma.js Normal file
View File

@@ -0,0 +1,4 @@
/** @param {NS} ns */
export async function main(ns) {
ns.tprint("Karma = " + Math.round(ns.heart.break()).toLocaleString());
}

View File

@@ -37,6 +37,17 @@ export async function main(ns) {
//ns.print("nFreeRam = " + nFreeRam); //ns.print("nFreeRam = " + nFreeRam);
//ns.print("needed ram = " + Math.ceil(nFreeRam / ns.getScriptRam(sGrowScript, "home"))); //ns.print("needed ram = " + Math.ceil(nFreeRam / ns.getScriptRam(sGrowScript, "home")));
//ns.print("needed ram? = " + ns.getScriptRam(sGrowScript, "home")); //ns.print("needed ram? = " + ns.getScriptRam(sGrowScript, "home"));
if (nGrowThreadsNeeded >= 1) {
const nDelay = ns.getGrowTime(sTarget);
ns.run(sDistScript, 1, sGrowScript, Math.ceil(nGrowThreadsNeeded), sTarget, false, 0);
nMoney = ns.getServerMoneyAvailable(sTarget);
ns.print("nMoney = " + nMoney);
await ns.sleep(nDelay+100);
}
/*
if (nFreeRam >= (ns.getScriptRam(sGrowScript, "home") * nGrowThreadsNeeded)) { if (nFreeRam >= (ns.getScriptRam(sGrowScript, "home") * nGrowThreadsNeeded)) {
@@ -53,8 +64,9 @@ export async function main(ns) {
nMoney = ns.getServerMoneyAvailable(sTarget); nMoney = ns.getServerMoneyAvailable(sTarget);
} }
*/
await ns.sleep(1);
//back to Lowrun //back to Lowrun
ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget); ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget);

View File

@@ -13,19 +13,14 @@ export async function main(ns) {
const nHackScriptRAM = 1.75; const nHackScriptRAM = 1.75;
const nGrowScriptRAM = 1.7; const nGrowScriptRAM = 1.7;
const nWeakenScriptRAM = 1.75; const nWeakenScriptRAM = 1.75;
const nThisScriptRAM = 4.70; const nThisScriptRAM = 4.65;
await ns.sleep(1); await ns.sleep(1);
while (true) { while (true) {
let nMaxRAM = ns.getServerMaxRam("home");
let oServerlist = JSON.parse(ns.read(sServerListFile)); let oServerlist = JSON.parse(ns.read(sServerListFile));
let nMaxRAM = oServerlist.find((entry) => entry.serverName === "home").maxRam;
//let nMaxRAM = oServerlist[1].nMaxRAM; ns.print("nMaxRAM = " + nMaxRAM);
ns.tprint("nMaxRAM = " + nMaxRAM);
//let nMaxRAM = [name, entry] of Object.entries(oServerlist);
//let nMaxRAM = oServerlist["home"].maxRam;
//ns.print("nMaxRAM = " + nMaxRAM);
let nWeakenTime = ns.getWeakenTime(sTarget); let nWeakenTime = ns.getWeakenTime(sTarget);
let nGrowTime = nWeakenTime * 0.8; let nGrowTime = nWeakenTime * 0.8;
@@ -74,8 +69,6 @@ export async function main(ns) {
//ns.print("nTotalGrowRAM = " + nTotalGrowRAM); //ns.print("nTotalGrowRAM = " + nTotalGrowRAM);
//ns.print("nTotalWeakenRAM = " + nTotalWeakenRAM); //ns.print("nTotalWeakenRAM = " + nTotalWeakenRAM);
nCheckRAM = nThisScriptRAM + (nTempHackThreads * nHackScriptRAM) + (nTempGrowThreadsINT * nGrowScriptRAM) + (nTempWeakenThreadsINT * nWeakenScriptRAM); nCheckRAM = nThisScriptRAM + (nTempHackThreads * nHackScriptRAM) + (nTempGrowThreadsINT * nGrowScriptRAM) + (nTempWeakenThreadsINT * nWeakenScriptRAM);
//ns.print("nCheckRAM = " + nCheckRAM); //ns.print("nCheckRAM = " + nCheckRAM);
@@ -94,6 +87,9 @@ export async function main(ns) {
} }
//ns.print("nMaxRAM = " + nMaxRAM + " nUsedRAM = " + nUsedRAM); //ns.print("nMaxRAM = " + nMaxRAM + " nUsedRAM = " + nUsedRAM);
ns.print("hgw batch will take " + ((nWeakenTime + 1) / 1000 / 60) + " minutes");
let nCompleteTime = new Date(Date.now() + nWeakenTime+1);
ns.print("complete at " + nCompleteTime.toLocaleTimeString("en-US"));
let nHackPID = ns.run(sHackScript, nHackThreads, sTarget, false, nHackDelay - 100); let nHackPID = ns.run(sHackScript, nHackThreads, sTarget, false, nHackDelay - 100);
let nGrowPID = ns.run(sGrowScript, nGrowThreadsINT, sTarget, false, nGrowDelay - 50); let nGrowPID = ns.run(sGrowScript, nGrowThreadsINT, sTarget, false, nGrowDelay - 50);

View File

@@ -14,12 +14,14 @@ export async function main(ns) {
const sGrowScript = "lowram/Lowgrow.js"; const sGrowScript = "lowram/Lowgrow.js";
const sDistScript = "testdistribute.js"; const sDistScript = "testdistribute.js";
await ns.sleep(100);
//declare variables //declare variables
const sWeakenScript = "RMweaken.js"; const sWeakenScript = "RMweaken.js";
const nCores = oHome.cpuCores; const nCores = oHome.cpuCores;
let nSecurity = ns.getServerSecurityLevel(sTarget); let nSecurity = ns.getServerSecurityLevel(sTarget);
const nMinSecurity = ns.getServerMinSecurityLevel(sTarget); const nMinSecurity = ns.getServerMinSecurityLevel(sTarget);
const nWeakenSTR = ns.weakenAnalyze(1, nCores); const nWeakenSTR = ns.weakenAnalyze(1, 1);
let nThreads = Math.ceil((nSecurity - nMinSecurity) / nWeakenSTR); let nThreads = Math.ceil((nSecurity - nMinSecurity) / nWeakenSTR);
//ns.print("nThreads = " + nThreads); //ns.print("nThreads = " + nThreads);
@@ -41,7 +43,7 @@ export async function main(ns) {
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); ns.run(sDistScript, 1, sWeakenScript, nThreads, sTarget, false, 0);
await ns.sleep(nDelay+10); await ns.sleep(nDelay);
/* /*
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.exec(sWeakenScript, nThreads, sTarget); nWeakenPID = ns.exec(sWeakenScript, nThreads, sTarget);
@@ -62,5 +64,6 @@ export async function main(ns) {
*/ */
} }
//back to Lowrun //back to Lowrun
await ns.sleep(1);
ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget); ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget);
} }

View File

@@ -4,13 +4,13 @@ export async function main(ns) {
const sTarget = ns.args[0]; // target server const sTarget = ns.args[0]; // target server
// Lowram settings // Lowram settings
const sBatchScript = "lowram/Lowhgw.js"; const sBatchScript = "lowram/lowhgw2.js";
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 sDistScript = "testdistribute.js";
await ns.sleep(1); await ns.sleep(100);
const nTargetMoney = ns.getServerMoneyAvailable(sTarget); const nTargetMoney = ns.getServerMoneyAvailable(sTarget);
const nTargetMaxMoney = ns.getServerMaxMoney(sTarget); const nTargetMaxMoney = ns.getServerMaxMoney(sTarget);

View File

@@ -0,0 +1,99 @@
import { distributeScript, getGrowThreads, getSetting, sortJsonArrayByKey } from "../Library";
/** @param {NS} ns */
export async function main(ns) {
ns.tail();
ns.disableLog("scp");
const sTarget = ns.args[0]; // target server
const sHackScript = "RMhack.js";
const sGrowScript = "RMgrow.js";
const sWeakenScript = "RMweaken.js";
const sServerListFile = "serverList.txt";
const sDistScript = "testdistribute.js";
const sRunScript = "lowram/Lowrun.js";
const aFiles = [sHackScript, sGrowScript, sWeakenScript, sServerListFile];
const nHackScriptRAM = 1.75;
const nGrowScriptRAM = 1.7;
const nWeakenScriptRAM = 1.75;
//target server info
const nMinSecurity = ns.getServerMinSecurityLevel(sTarget);
const nMaxMoney = ns.getServerMaxMoney(sTarget);
const nHomeReserve = getSetting(ns, "homeRAMReserve");
let bLoop = true;
while (bLoop) {
let nWeakenTime = ns.getWeakenTime(sTarget);
let oServerlist = JSON.parse(ns.read(sServerListFile));
let sortedList = sortJsonArrayByKey(oServerlist, "serverCores", "maxRam").reverse();
let nMaxThreads = 0;
sortedList.forEach((entry) => {
if (entry.rootAccess && entry.maxRam >= 1) {
ns.scp(aFiles, "home", entry.serverName);
nMaxThreads += entry.maxRam / 1.75;
}
})
let nMaxThreadsINT = Math.floor(nMaxThreads);
ns.print("nMaxThreadsINT = " + nMaxThreadsINT);
let nCurrentSecurity = ns.getServerSecurityLevel(sTarget);
let nCurrentMoney = ns.getServerMoneyAvailable(sTarget);
let nGrowBonus = 0;
if (nCurrentMoney <= nMaxMoney * 0.8) {
nGrowBonus = 100;
}
let nTempHackThreads = 1;
let nTempGrowThreads = nGrowBonus + getGrowThreads(ns, sTarget, nTempHackThreads, 1);
let nTempWeakenThreads = 1 + (nTempHackThreads / 25) + (nTempGrowThreads / 12.5);
//let nBatchSize = nTempHackThreads + nTempGrowThreadsINT + nTempWeakenThreadsINT;
let nBatchWeight = nTempHackThreads + nTempGrowThreads + nTempWeakenThreads;
ns.print("nBatchWeight = " + nBatchWeight);
let nHackWeight = (nTempHackThreads / nBatchWeight);
let nHGrowWeight = (nTempGrowThreads / nBatchWeight);
let nWeakenWeight = (nTempWeakenThreads / nBatchWeight);
ns.print("nHackWeight = " + nHackWeight);
ns.print("nHGrowWeight = " + nHGrowWeight);
ns.print("nWeakenWeight = " + nWeakenWeight);
let nTempHackThreadsINT = Math.ceil(nMaxThreadsINT * nHackWeight);
let nTempGrowThreadsINT = Math.ceil(nMaxThreadsINT * nHGrowWeight);
let nTempWeakenThreadsINT = Math.ceil(nMaxThreadsINT * nWeakenWeight);
ns.print("nTempHackThreadsINT = " + nTempHackThreadsINT);
ns.print("nTempGrowThreadsINT = " + nTempGrowThreadsINT);
ns.print("nTempWeakenThreadsINT = " + nTempWeakenThreadsINT);
ns.print("nWeakenTime = " + nWeakenTime / 1000);
let nHackThreads = Math.max(1, Math.ceil(nTempHackThreadsINT / (nWeakenTime / 5000)));
let nGrowThreads = Math.max(1, Math.ceil(nTempGrowThreadsINT / (nWeakenTime / 5000)));
let nWeakenThreads = Math.max(1, Math.ceil(nTempWeakenThreadsINT / (nWeakenTime / 5000)));
let nGrowTime = nWeakenTime * 0.8;
let nHackTime = nWeakenTime / 4;
let nGrowDelay = nWeakenTime - nGrowTime;
let nHackDelay = nWeakenTime - nHackTime;
let nPID1 = ns.run(sDistScript, 1, sHackScript, nHackThreads, sTarget, false, nHackDelay - 100);
let nPID2 = ns.run(sDistScript, 1, sGrowScript, nGrowThreads, sTarget, false, nGrowDelay - 50);
let nPID3 = ns.run(sDistScript, 1, sWeakenScript, nWeakenThreads, sTarget, false, 0);
if (nPID1 === 0 || nPID2 === 0 || nPID3 === 0) { bLoop = false; }
ns.print("Cash: " + (Math.floor(nCurrentMoney * 1000) / 1000) + " / " + nMaxMoney);
ns.print("Security: " + (Math.floor(nCurrentSecurity * 1000) / 1000) + " / " + nMinSecurity);
await ns.sleep(5000);
}
await ns.sleep(10000);
ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget);
}

View File

@@ -2,7 +2,7 @@ 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"); ns.disableLog("ALL");
const sScript = ns.args[0]; // script const sScript = ns.args[0]; // script
let nThreads = ns.args[1]; // threads let nThreads = ns.args[1]; // threads
@@ -19,7 +19,13 @@ export async function main(ns) {
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 = ns.read(sListName); let sServerList = ns.read(sListName);
let aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse(); let aSortedList;
if (sScript === sWeakenScript || sScript === sGrowScript) {
aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse();
} else {
aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam");
}
//ns.tprint(aSortedList); //ns.tprint(aSortedList);
ns.print(sScript); ns.print(sScript);
ns.print(nThreads); ns.print(nThreads);
@@ -52,15 +58,16 @@ export async function main(ns) {
aSortedList.forEach((entry) => { aSortedList.forEach((entry) => {
let sHost = entry.serverName; let sHost = entry.serverName;
ns.print("sHost = " + sHost) ns.print("sHost = " + sHost)
ns.scp(sScript, sHost);
let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) { if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) {
ns.scp(sScript, sHost);
ns.exec(sScript, sHost, nThreads, sTarget, bRepeat, nMsecDelay); ns.exec(sScript, sHost, nThreads, sTarget, bRepeat, nMsecDelay);
nThreads = 0; nThreads = 0;
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName); nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
} }
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize){ else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) {
let nThreadsDist = Math.floor(nFreeRAM / nScriptSize); let nThreadsDist = Math.floor(nFreeRAM / nScriptSize);
ns.scp(sScript, sHost);
ns.print("room for : " + nThreadsDist + " scripts"); ns.print("room for : " + nThreadsDist + " scripts");
ns.exec(sScript, sHost, nThreadsDist, sTarget, bRepeat, nMsecDelay); ns.exec(sScript, sHost, nThreadsDist, sTarget, bRepeat, nMsecDelay);
nThreads -= nThreadsDist; nThreads -= nThreadsDist;