Merge branch 'main' of https://gitea.goetje-ing.de/ArchitectsOfTheBitburner/The_Bitburner_Scripts
This commit is contained in:
@@ -84,7 +84,6 @@ export async function main(ns) {
|
|||||||
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);
|
||||||
oOfficeData = ns.readPort(nListenPID);
|
oOfficeData = ns.readPort(nListenPID);
|
||||||
ns.tprint(oOfficeData);
|
|
||||||
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData));
|
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData));
|
||||||
await ns.nextPortWrite(nListenPID);
|
await ns.nextPortWrite(nListenPID);
|
||||||
}
|
}
|
||||||
@@ -92,19 +91,18 @@ export async function main(ns) {
|
|||||||
break;
|
break;
|
||||||
case 50:
|
case 50:
|
||||||
let aCurrentGoods = [
|
let aCurrentGoods = [
|
||||||
{"sMaterialName":"Food","yAmount":"MAX","yPrice":"MP"},
|
{ "sMaterialName": "Food", "yAmount": "MAX", "yPrice": "MP-5" },
|
||||||
{"sMaterialName":"Plants","yAmount":"MAX","yPrice":"MP"}
|
{ "sMaterialName": "Plants", "yAmount": "MAX", "yPrice": "MP-5" }
|
||||||
]
|
]
|
||||||
aCurrentGoods.forEach(async (entry) =>{
|
|
||||||
for (let sCity of aCitites) {
|
for (let sCity of aCitites) {
|
||||||
forEach
|
aCurrentGoods.forEach(async (entry) => {
|
||||||
nListenPID = ns.run("/corp/SetSalePrices.js", 1, sDivisionName, sCity, oCurrentGoods);
|
|
||||||
await ns.nextPortWrite(nListenPID);
|
nListenPID = ns.run("/corp/SetSalePrices.js", 1, sDivisionName, sCity, JSON.stringify(entry));
|
||||||
oOfficeData = ns.readPort(nListenPID);
|
nListenPID = ns.run("/corp/SetMaterialLimit.js", 1, sDivisionName, sCity, JSON.stringify(entry));
|
||||||
ns.tprint(oOfficeData);
|
|
||||||
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData));
|
ns.tprint(sCity, entry)
|
||||||
await ns.nextPortWrite(nListenPID);
|
})
|
||||||
}})
|
}
|
||||||
oCorpStatus.nStep = 200;
|
oCorpStatus.nStep = 200;
|
||||||
break;
|
break;
|
||||||
case 60:
|
case 60:
|
||||||
|
|||||||
@@ -262,29 +262,69 @@ export function listWorkServers(ns) {
|
|||||||
const sFileName = "serverList.txt";
|
const sFileName = "serverList.txt";
|
||||||
if (!ns.fileExists(sFileName, "home")) { ns.print(`ERROR ${sFileName} does not exist.`); return false; };
|
if (!ns.fileExists(sFileName, "home")) { ns.print(`ERROR ${sFileName} does not exist.`); return false; };
|
||||||
let serverList = JSON.parse(ns.read(sFileName));
|
let serverList = JSON.parse(ns.read(sFileName));
|
||||||
|
let sortedList = sortJsonArrayByKey(serverList, "serverCores", "maxRam").reverse();
|
||||||
|
|
||||||
let nTotalWorkerRAM = 0;
|
let nTotalWorkerRAM = 0;
|
||||||
let nTotalFreeRAM = 0;
|
let nTotalFreeRAM = 0;
|
||||||
|
|
||||||
const nServerColumnWidth = 20;
|
const nServerColumnWidth = 20;
|
||||||
const nValueColumnWidth = 8;
|
const nValueColumnWidth = 10;
|
||||||
const nCoresWidth = 5;
|
const nCoresWidth = 5;
|
||||||
|
|
||||||
ns.printRaw("┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓");
|
ns.printRaw("┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓");
|
||||||
ns.printRaw("┃ Server ┃ Free / Max RAM ┃ Cores ┃");
|
ns.printRaw("┃ Server ┃ Free / Max RAM ┃ Cores ┃");
|
||||||
ns.printRaw("┣━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━┫");
|
ns.printRaw("┣━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━┫");
|
||||||
serverList.forEach((entry) => {
|
sortedList.forEach((entry) => {
|
||||||
if (entry.rootAccess && entry.maxRam >= 1) {
|
if (entry.rootAccess && entry.maxRam >= 1) {
|
||||||
let sServerName = entry.serverName.padEnd(nServerColumnWidth, ' ');
|
let sServerName = entry.serverName.padEnd(nServerColumnWidth, ' ');
|
||||||
let nFreeRAM = entry.maxRam - ns.getServerUsedRam(entry.serverName);
|
let nFreeRAM = entry.maxRam - ns.getServerUsedRam(entry.serverName);
|
||||||
let sFreeRAM = nFreeRAM.toLocaleString().padStart(nValueColumnWidth, ' ');
|
let sFreeRAM = Math.floor(nFreeRAM).toLocaleString("en-US").padStart(nValueColumnWidth, ' ');
|
||||||
let sMaxRam = entry.maxRam.toLocaleString().padStart(nValueColumnWidth, ' ');
|
let sMaxRam = entry.maxRam.toLocaleString("en-US").padStart(nValueColumnWidth, ' ');
|
||||||
let sCores = entry.serverCores.toLocaleString().padStart(nCoresWidth, ' ');
|
let sCores = entry.serverCores.toLocaleString("en-US").padStart(nCoresWidth, ' ');
|
||||||
ns.printRaw(`┃ ${sServerName} ┃ ${sFreeRAM} / ${sMaxRam} ┃ ${sCores} ┃`);
|
ns.printRaw(`┃ ${sServerName} ┃ ${sFreeRAM} / ${sMaxRam} ┃ ${sCores} ┃`);
|
||||||
nTotalWorkerRAM += entry.maxRam;
|
nTotalWorkerRAM += entry.maxRam;
|
||||||
nTotalFreeRAM += nFreeRAM;
|
nTotalFreeRAM += nFreeRAM;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ns.printRaw("┗━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━┛");
|
ns.printRaw("┗━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━┛");
|
||||||
ns.printRaw(`Total Free: ${nTotalFreeRAM.toLocaleString()} / ${nTotalWorkerRAM.toLocaleString()} GB`);
|
ns.printRaw(`Total Free: ${Math.floor(nTotalFreeRAM).toLocaleString("en-US")} / ${nTotalWorkerRAM.toLocaleString("en-US")} GB`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function sortJsonArrayByKey(array, primaryKey, secondaryKey) {
|
||||||
|
return array.sort((a, b) => {
|
||||||
|
const xPrimary = a[primaryKey];
|
||||||
|
const yPrimary = b[primaryKey];
|
||||||
|
|
||||||
|
// Handle null or undefined values for primary key
|
||||||
|
if (xPrimary === null || yPrimary === null || xPrimary === undefined || yPrimary === undefined) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compare primary keys
|
||||||
|
const primaryComparison = compareValues(xPrimary, yPrimary);
|
||||||
|
if (primaryComparison !== 0) {
|
||||||
|
return primaryComparison;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If primary keys are equal, compare secondary keys
|
||||||
|
const xSecondary = a[secondaryKey];
|
||||||
|
const ySecondary = b[secondaryKey];
|
||||||
|
|
||||||
|
// Handle null or undefined values for secondary key
|
||||||
|
if (xSecondary === null || ySecondary === null || xSecondary === undefined || ySecondary === undefined) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return compareValues(xSecondary, ySecondary);
|
||||||
|
});
|
||||||
|
|
||||||
|
function compareValues(x, y) {
|
||||||
|
// Handle numeric and string comparisons differently
|
||||||
|
if (typeof x === 'string' && typeof y === 'string') {
|
||||||
|
return x.localeCompare(y); // For string comparison
|
||||||
|
} else {
|
||||||
|
return x - y; // For numeric comparison
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
7
Ramses/home/corp/SetMaterialLimit.js
Normal file
7
Ramses/home/corp/SetMaterialLimit.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
/** @param {NS} ns */
|
||||||
|
export async function main(ns) {
|
||||||
|
let [sDivName, sCity, oCurrentGoods] = ns.args;
|
||||||
|
oCurrentGoods = JSON.parse(oCurrentGoods);
|
||||||
|
ns.corporation.limitMaterialProduction(sDivName, sCity, oCurrentGoods.sMaterialName,50);
|
||||||
|
ns.writePort(ns.pid, true);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user