Files
2023-09-09 02:05:43 +02:00

49 lines
2.0 KiB
JavaScript

/** @param {import(".").NS } ns */
export async function main(ns) {
ns.disableLog('ALL');
const nodeCostThreshold = ns.args.length > 0 ? ns.args[0] : 0.2;
const upgradeCostThreshold = ns.args.length > 1 ? ns.args[1] : 0.1;
const upgradeCount = ns.args.length > 2 ? ns.args[2] : 1;
const nodeCap = 24;
const levelCap = 200;
const ramCap = 64;
const coreCap = 16;
// ns.tprint(`Bot started {nodeCostThreshold: ${nodeCostThreshold}, upgradeCostThreshold: ${upgradeCostThreshold}, upgradeCount: ${upgradeCount}}`);
while (true) {
let currentMoney = ns.getServerMoneyAvailable("home");
let nodePurchaseCost = ns.hacknet.getPurchaseNodeCost();
let nodeCount = ns.hacknet.numNodes();
if (nodeCount < nodeCap && nodePurchaseCost / Math.abs(currentMoney) < nodeCostThreshold) {
ns.hacknet.purchaseNode();
currentMoney = ns.getServerMoneyAvailable("home");
nodeCount = ns.hacknet.numNodes();
}
for (let index = 0; index < nodeCount; ++index) {
let nodeStats = ns.hacknet.getNodeStats(index);
if (nodeStats.level < levelCap && ns.hacknet.getLevelUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
ns.hacknet.upgradeLevel(index, upgradeCount);
currentMoney = ns.getServerMoneyAvailable("home");
}
if (nodeStats.ram < ramCap && ns.hacknet.getRamUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
ns.hacknet.upgradeRam(index, upgradeCount);
currentMoney = ns.getServerMoneyAvailable("home");
}
if (nodeStats.cores < coreCap && ns.hacknet.getCoreUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
ns.hacknet.upgradeCore(index, upgradeCount);
currentMoney = ns.getServerMoneyAvailable("home");
}
}
await ns.sleep(1000);
}
}