Merge branch 'main' of https://gitea.goetje-ing.de/ArchitectsOfTheBitburner/The_Bitburner_Scripts
This commit is contained in:
@@ -16,12 +16,16 @@ export async function main(ns) {
|
|||||||
let oWarehouseData = {};
|
let oWarehouseData = {};
|
||||||
let bUnlockStatus = false;
|
let bUnlockStatus = false;
|
||||||
let nTargetSize = 0;
|
let nTargetSize = 0;
|
||||||
|
let oNewOfficeData = {};
|
||||||
|
let oWorkerNumbers = {};
|
||||||
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);
|
||||||
@@ -30,12 +34,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;
|
||||||
@@ -43,10 +49,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;
|
||||||
@@ -54,18 +62,23 @@ 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;
|
||||||
@@ -75,8 +88,10 @@ 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);
|
||||||
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;
|
||||||
@@ -84,9 +99,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), JSON.stringify({nWorkerNumbers: [1, 1, 1, 1, 0, 0]}));
|
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;
|
||||||
@@ -97,33 +114,43 @@ export async function main(ns) {
|
|||||||
]
|
]
|
||||||
for (let sCity of aCitites) {
|
for (let sCity of aCitites) {
|
||||||
aCurrentGoods.forEach(async (entry) => {
|
aCurrentGoods.forEach(async (entry) => {
|
||||||
|
|
||||||
nListenPID = ns.run("/corp/SetSalePrices.js", 1, sDivisionName, sCity, JSON.stringify(entry));
|
nListenPID = ns.run("/corp/SetSalePrices.js", 1, sDivisionName, sCity, JSON.stringify(entry));
|
||||||
nListenPID = ns.run("/corp/SetMaterialLimit.js", 1, sDivisionName, sCity, JSON.stringify(entry));
|
nListenPID = ns.run("/corp/SetMaterialLimit.js", 1, sDivisionName, sCity, JSON.stringify(entry));
|
||||||
|
|
||||||
ns.tprint(sCity, entry)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
oCorpStatus.nStep = 60;
|
oCorpStatus.nStep = 60;
|
||||||
break;
|
break;
|
||||||
case 60:
|
case 60:
|
||||||
nTargetSize = 12;
|
|
||||||
for (let sCity of aCitites) {
|
for (let sCity of aCitites) {
|
||||||
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
|
nTargetSize = sCity === "Sector-12" ? 12 : 4;
|
||||||
await ns.nextPortWrite(nListenPID);
|
oWorkerNumbers = sCity === "Sector-12" ? { nWorkerNumbers: [2, 2, 2, 2, 2, 2] } : { nWorkerNumbers: [1, 1, 1, 1, 0, 0] }
|
||||||
oOfficeData = ns.readPort(nListenPID);
|
let running = true;
|
||||||
await ns.nextPortWrite(ns.run("/corp/UpgradeOffice.js", 1, sDivisionName, sCity, nTargetSize, oOfficeData.size))
|
while (running) {
|
||||||
|
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);
|
||||||
|
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
|
||||||
|
await ns.nextPortWrite(nListenPID);
|
||||||
|
await ns.sleep(1);
|
||||||
|
oNewOfficeData = ns.readPort(nListenPID);
|
||||||
|
if (oNewOfficeData.size < nTargetSize) {
|
||||||
|
await ns.sleep(10000);
|
||||||
|
ns.tprint("Waiting for money");
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData), JSON.stringify(oWorkerNumbers));
|
||||||
|
await ns.nextPortWrite(nListenPID);
|
||||||
|
await ns.sleep(1);
|
||||||
|
running = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
oCorpStatus.nStep = 70;
|
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);
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
oCorpStatus.nStep = 200;
|
oCorpStatus.nStep = 200;
|
||||||
break;
|
break;
|
||||||
case 80:
|
case 80:
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"nStep":70}
|
{"nStep":200}
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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(522,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,4 @@
|
|||||||
export async function main(ns) {
|
export async function main(ns) {
|
||||||
let [sDivName, sCity] = ns.args;
|
let [sDivName, sCity] = ns.args;
|
||||||
ns.writePort(ns.pid, ns.corporation.getOffice(sDivName, sCity))
|
ns.writePort(ns.pid, ns.corporation.getOffice(sDivName, sCity))
|
||||||
|
|
||||||
ns.tprint(ns.corporation.getOffice(sDivName, sCity))
|
|
||||||
}
|
}
|
||||||
@@ -3,19 +3,19 @@ export async function main(ns) {
|
|||||||
let [sDivName, sCity, oCurrentOffice, oWorkerDistribution] = ns.args;
|
let [sDivName, sCity, oCurrentOffice, oWorkerDistribution] = ns.args;
|
||||||
oCurrentOffice = JSON.parse(oCurrentOffice);
|
oCurrentOffice = JSON.parse(oCurrentOffice);
|
||||||
let aWorkerDistribution = JSON.parse(oWorkerDistribution).nWorkerNumbers;
|
let aWorkerDistribution = JSON.parse(oWorkerDistribution).nWorkerNumbers;
|
||||||
ns.tprint(aWorkerDistribution);
|
|
||||||
let nTotalWorkers = 0;
|
let nTotalWorkers = 0;
|
||||||
const len = aWorkerDistribution.length;
|
const len = aWorkerDistribution.length;
|
||||||
for (let i = 0; i < len; i++) nTotalWorkers += aWorkerDistribution[i];
|
for (let i = 0; i < len; i++) nTotalWorkers += aWorkerDistribution[i];
|
||||||
ns.tprint(typeof(oCurrentOffice.employeeJobs["Research & Development"]))
|
let i = 0;
|
||||||
|
while (oCurrentOffice.numEmployees < oCurrentOffice.size && oCurrentOffice.numEmployees < nTotalWorkers && i < 1) {
|
||||||
while (oCurrentOffice.numEmployees < oCurrentOffice.size && oCurrentOffice.numEmployees < nTotalWorkers) {
|
|
||||||
(oCurrentOffice.employeeJobs.Operations < aWorkerDistribution[0]) ? ns.corporation.hireEmployee(sDivName, sCity, "Operations") : "";
|
(oCurrentOffice.employeeJobs.Operations < aWorkerDistribution[0]) ? ns.corporation.hireEmployee(sDivName, sCity, "Operations") : "";
|
||||||
(oCurrentOffice.employeeJobs.Engineer < aWorkerDistribution[1]) ? ns.corporation.hireEmployee(sDivName, sCity, "Engineer") : "";
|
(oCurrentOffice.employeeJobs.Engineer < aWorkerDistribution[1]) ? ns.corporation.hireEmployee(sDivName, sCity, "Engineer") : "";
|
||||||
(oCurrentOffice.employeeJobs.Business < aWorkerDistribution[2]) ? ns.corporation.hireEmployee(sDivName, sCity, "Business") : "";
|
(oCurrentOffice.employeeJobs.Business < aWorkerDistribution[2]) ? ns.corporation.hireEmployee(sDivName, sCity, "Business") : "";
|
||||||
(oCurrentOffice.employeeJobs.Management < aWorkerDistribution[3]) ? ns.corporation.hireEmployee(sDivName, sCity, "Management") : "";
|
(oCurrentOffice.employeeJobs.Management < aWorkerDistribution[3]) ? ns.corporation.hireEmployee(sDivName, sCity, "Management") : "";
|
||||||
(oCurrentOffice.employeeJobs.Research & Development < aWorkerDistribution[4]) ? ns.corporation.hireEmployee(sDivName, sCity, "Research & Development") : "";
|
(oCurrentOffice.employeeJobs["Research & Development"] < aWorkerDistribution[4]) ? ns.corporation.hireEmployee(sDivName, sCity, "Research & Development") : "";
|
||||||
(oCurrentOffice.employeeJobs.Intern < aWorkerDistribution[5]) ? ns.corporation.hireEmployee(sDivName, sCity, "Intern") : "";
|
(oCurrentOffice.employeeJobs.Intern < aWorkerDistribution[5]) ? ns.corporation.hireEmployee(sDivName, sCity, "Intern") : "";
|
||||||
|
ns.sleep(1)
|
||||||
|
i += 1;
|
||||||
};
|
};
|
||||||
ns.writePort(ns.pid, true);
|
ns.writePort(ns.pid, true);
|
||||||
}
|
}
|
||||||
3
Ramses/home/corp/PriceCalcCheatsheet.txt
Normal file
3
Ramses/home/corp/PriceCalcCheatsheet.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
getMaterial() -> material.marketPrice
|
||||||
|
|
||||||
|
ns.corporation.getMaterialData() -> baseMarkup
|
||||||
@@ -4,4 +4,4 @@ export async function main(ns) {
|
|||||||
oCurrentGoods = JSON.parse(oCurrentGoods);
|
oCurrentGoods = JSON.parse(oCurrentGoods);
|
||||||
ns.corporation.limitMaterialProduction(sDivName, sCity, oCurrentGoods.sMaterialName,50);
|
ns.corporation.limitMaterialProduction(sDivName, sCity, oCurrentGoods.sMaterialName,50);
|
||||||
ns.writePort(ns.pid, true);
|
ns.writePort(ns.pid, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
/** @param {NS} ns */
|
/** @param {NS} ns */
|
||||||
export async function main(ns) {
|
export async function main(ns) {
|
||||||
let [sDivName, sCity] = ns.args;
|
let [sMaterial] = ns.args;
|
||||||
if (ns.corporation.hasWarehouse(sDivName, sCity)) {
|
ns.tprint(ns.corporation.getMaterialData(sMaterial))
|
||||||
ns.writePort(ns.pid, ns.corporation.getWarehouse(sDivName, sCity))
|
|
||||||
} else {
|
|
||||||
ns.writePort(ns.pid, false)
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
@@ -37,24 +37,36 @@ 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 (nFreeRam >= (ns.getScriptRam(sGrowScript, "home") * nGrowThreadsNeeded)) {
|
|
||||||
|
|
||||||
|
if (nGrowThreadsNeeded >= 1) {
|
||||||
|
|
||||||
let nGrowPID = ns.run(sGrowScript, Math.ceil(nGrowThreadsNeeded), sTarget);
|
const nDelay = ns.getGrowTime(sTarget);
|
||||||
await ns.nextPortWrite(nGrowPID);
|
|
||||||
await ns.sleep(1000);
|
ns.run(sDistScript, 1, sGrowScript, Math.ceil(nGrowThreadsNeeded), sTarget, false, 0);
|
||||||
nMoney = ns.getServerMoneyAvailable(sTarget);
|
nMoney = ns.getServerMoneyAvailable(sTarget);
|
||||||
|
ns.print("nMoney = " + nMoney);
|
||||||
|
await ns.sleep(nDelay+100);
|
||||||
}
|
}
|
||||||
else {
|
/*
|
||||||
ns.print("Too smol");
|
if (nFreeRam >= (ns.getScriptRam(sGrowScript, "home") * nGrowThreadsNeeded)) {
|
||||||
let nGrowPID = ns.run(sGrowScript, Math.ceil((nFreeRam - nThisScriptRAM) / ns.getScriptRam(sGrowScript, "home")), sTarget);
|
|
||||||
await ns.nextPortWrite(nGrowPID);
|
|
||||||
await ns.sleep(1000);
|
let nGrowPID = ns.run(sGrowScript, Math.ceil(nGrowThreadsNeeded), sTarget);
|
||||||
nMoney = ns.getServerMoneyAvailable(sTarget);
|
await ns.nextPortWrite(nGrowPID);
|
||||||
|
await ns.sleep(1000);
|
||||||
}
|
nMoney = ns.getServerMoneyAvailable(sTarget);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ns.print("Too smol");
|
||||||
|
let nGrowPID = ns.run(sGrowScript, Math.ceil((nFreeRam - nThisScriptRAM) / ns.getScriptRam(sGrowScript, "home")), sTarget);
|
||||||
|
await ns.nextPortWrite(nGrowPID);
|
||||||
|
await ns.sleep(1000);
|
||||||
|
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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
|
|||||||
99
Ramses/home/lowram/lowhgw2.js
Normal file
99
Ramses/home/lowram/lowhgw2.js
Normal 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);
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{"setting":{
|
{"setting":{
|
||||||
|
"homeRAMReserve":10,
|
||||||
"autoUpgrades":true,
|
"autoUpgrades":true,
|
||||||
"autoPurchaseServers":true,
|
"autoPurchaseServers":true,
|
||||||
"batchHacks":100,
|
"batchHacks":1,
|
||||||
"batchFrequency":50
|
"batchFrequency":50
|
||||||
}}
|
}}
|
||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user