Einfacher Bot, der mithilfe von Mathematik das profitabelste Upgrade auswählt.
Wie es funktioniert
Der Bot führt die folgenden Schritte aus.
- Überprüft das Kosten- und Produktionswachstum aller möglichen Upgrades
- Berechnet das rentable Verhältnis jedes Upgrades
- Sortiert Elemente nach absteigendem Verhältnis
- Wählt das erste Element
- Überprüft, ob Sie jetzt ein Upgrade kaufen können, wenn nicht, wartet es, um Geld zu sammeln
- Überprüft, ob Sie in weniger als 30 Sekunden einen neuen Knoten kaufen können (Sie können diese Zeit anpassen), wenn ja, wird er gekauft
- Wiederholen…
Profitables Verhältnis = Produktionswachstum / Upgrade-Kosten
Produktionswachstum = Produktion nach Upgrade / aktuelle Produktion
Diese Anleitung basiert auf meiner vorherigen „Automatisierung für Hacknet-Knoten“.
So wird es genutzt
Führen Sie die folgenden Schritte aus.
- Führen Sie das Terminal aus
- Geben Sie „nano hacknet-bot.js“ ein.
- Kopieren Sie den folgenden Code und fügen Sie ihn in diese Datei ein
- Speichern Sie die Datei (Strg + s)
- Zurück zum Endgerät
- Geben Sie „hacknet-bot.js ausführen“ ein.
/** @param {NS} ns **/ asynchrone Funktion exportieren main(ns) { // Helfer const getMoney = () => ns.getPlayer().money; const getProd = (level, ram, cores) => (level * 1.5) * Math.pow(1.035, ram - 1) * ((cores + 5) / 6); // Ihr Produktionsmultiplikator const PROD_MULTIPLIER = ns.getHacknetMultipliers().production; // maximale Wartezeit für das Sammeln von Geld für neue Knoten (Standard 30s) const WAITING_TIME = ns.args[0] || 30; while (true) {const ratios = []; lass hacknetProduction = 0; // alle Knoten durchlaufen for (let index = 0; index < ns.hacknet.numNodes(); index++) { // aktuelle Knotenstatistiken abrufen const { level, ram, cores, production } = ns.hacknet.getNodeStats(index ); hacknetProduction += Produktion; // Kosten für Upgrades abrufen const levelUpgradeCost = ns.hacknet.getLevelUpgradeCost(index); const ramUpgradeCost = ns.hacknet.getRamUpgradeCost(index); const coreUpgradeCost = ns.hacknet.getCoreUpgradeCost(index); // Prod. erhalten. Wachstums-/Kostenverhältnisse const levelUpgradeRatio = ((getProd(level + 1, ram, cores) * PROD_MULTIPLIER) - production) / levelUpgradeCost; const ramUpgradeRatio = ((getProd(level, ram * 2, cores) * PROD_MULTIPLIER) - production) / ramUpgradeCost; const coreUpgradeRatio = ((getProd(level, ram, cores + 1) * PROD_MULTIPLIER) - production) / coreUpgradeCost; // mögliche Upgrades des aktuellen Knotens const currentNodeUpgrades = [ {ratio: levelUpgradeRatio, cost: levelUpgradeCost, nodeIndex: index, upgrade: "level"}, {ratio: ramUpgradeRatio, cost: ramUpgradeCost, nodeIndex: index, upgrade: "ram"} , {Verhältnis: coreUpgradeRatio, Kosten: coreUpgradeCost, nodeIndex: index, upgrade: "core"} ]; // aktuelle Node-Upgrades auf alle Upgrades verschieben ratios.push(...currentNodeUpgrades); } // Holen Sie sich das profitabelste Upgrade const { cost, nodeIndex, upgrade } = ratios.sort((a, b) => b.ratio - a.ratio)[0]; // warte bis du das Geld für das Upgrade hast while (getMoney() < cost) { await ns.sleep(1); } // upgrade switch ausführen (upgrade) { case "level": await ns.hacknet.upgradeLevel (nodeIndex); brechen; case "ram": await ns.hacknet.upgradeRam(nodeIndex); brechen; case "core": await ns.hacknet.upgradeCore(nodeIndex); brechen; Standard: fortfahren; } // prüfen, ob Sie einen neuen Knoten kaufen können const PurchaseNodeCost = ns.hacknet.getPurchaseNodeCost(); const missingMoneyForNewNode = PurchaseNodeCost - getMoney(); if (missingMoneyForNewNode > 0 && missingMoneyForNewNode < hacknetProduction * WAITING_TIME) { // Wenn Sie weniger als WAITING_TIME (in Sekunden) auf den Kaufknoten warten müssen, wartet das Programm darauf, Geld zu sammeln, während (getMoney() < PurchaseNodeCost) { await ns.sleep(1 ); } ns.hacknet.purchaseNode(); } // 1 ms schlafen, um einen Absturz wegen Endlosschleife zu verhindern await ns.sleep (1); } }
Sie können die Wartezeit für den Kaufknoten (standardmäßig 30 Sekunden) anpassen, indem Sie ein zusätzliches Skriptargument übergeben. Zum Beispiel:
Führen Sie hacknet-bot.js 120 aus
Das ist alles, was wir heute dafür teilen Bitbrenner führen. Dieses Handbuch wurde ursprünglich erstellt und geschrieben von SYW1. Falls wir dieses Handbuch nicht aktualisieren, finden Sie das neueste Update, indem Sie diesen folgen Link.