44 lines
1.8 KiB
JavaScript
44 lines
1.8 KiB
JavaScript
/** @param {import(".").NS } ns */
|
|
|
|
export async function main(ns) {
|
|
ns.disableLog('ALL');
|
|
|
|
let nodeCostThreshold = ns.args.length > 0 ? ns.args[0] : 0.1;
|
|
let upgradeCostThreshold = ns.args.length > 1 ? ns.args[1] : 0.03;
|
|
let upgradeCount = ns.args.length > 2 ? ns.args[2] : 1;
|
|
ns.tprint(`Bot started {nodeCostThreshold: ${nodeCostThreshold}, upgradeCostThreshold: ${upgradeCostThreshold}, upgradeCount: ${upgradeCount}}`);
|
|
|
|
await ns.sleep(10000);
|
|
|
|
while (true) {
|
|
let currentMoney = ns.getServerMoneyAvailable("home");
|
|
let nodePurchaseCost = ns.hacknet.getPurchaseNodeCost();
|
|
let nodeCount = ns.hacknet.numNodes();
|
|
|
|
if (nodePurchaseCost / Math.abs(currentMoney) < nodeCostThreshold) {
|
|
ns.hacknet.purchaseNode();
|
|
currentMoney = ns.getServerMoneyAvailable("home");
|
|
++nodeCount;
|
|
}
|
|
|
|
for (let index = 0; index < nodeCount; ++index) {
|
|
if (ns.hacknet.getLevelUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
|
ns.hacknet.upgradeLevel(index, upgradeCount);
|
|
currentMoney = ns.getServerMoneyAvailable("home");
|
|
}
|
|
if (ns.hacknet.getRamUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
|
ns.hacknet.upgradeRam(index, upgradeCount);
|
|
currentMoney = ns.getServerMoneyAvailable("home");
|
|
}
|
|
if (ns.hacknet.getCoreUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
|
ns.hacknet.upgradeCore(index, upgradeCount);
|
|
currentMoney = ns.getServerMoneyAvailable("home");
|
|
}
|
|
}
|
|
|
|
let portData = ns.readPort(1);
|
|
if (portData != 'NULL PORT DATA') ns.write('hack-log.js', portData, 'a');
|
|
|
|
await ns.sleep(10);
|
|
}
|
|
} |