Eenvoudige bot die wiskunde gebruikt om de meest winstgevende upgrade te kiezen.
Hoe het werkt
De bot voert de volgende stappen uit.
- Controleert de kosten en productiegroei van alle mogelijke upgrades
- Berekent de winstgevende verhouding van elke upgrade
- Sorteert elementen op verhouding aflopend
- Kiest het eerste element
- Controleert of u nu een upgrade kunt kopen, zo niet, dan wacht het om geld te verzamelen
- Controleert of u een nieuwe node in minder dan 30 seconden kunt kopen (u kunt deze keer aanpassen), als dat zo is, wordt deze gekocht
- Herhalen…
Winstgevende verhouding = Productiegroei / upgradekosten
Productiegroei = Productie na upgrade / huidige productie
Deze handleiding is gebaseerd op mijn vorige "Automatisering voor Hacknet-knooppunten".
Hoe te gebruiken
Voer de volgende stappen uit.
- Voer de terminal uit
- Typ 'nano hacknet-bot.js'
- Kopieer en plak de onderstaande code in dit bestand
- Sla het bestand op (ctrl + s)
- Terug naar de terminal
- Typ 'run hacknet-bot.js'
/** @param {NS} ns **/ export async functie main(ns) { // helpers const getMoney = () => ns.getPlayer().money; const getProd = (niveau, ram, kernen) => (niveau * 1.5) * Math.pow(1.035, ram - 1) * ((kernen + 5) / 6); // uw productievermenigvuldiger const PROD_MULTIPLIER = ns.getHacknetMultipliers().productie; // maximale wachttijd voor het verzamelen van geld voor nieuwe node (standaard 30s) const WAITING_TIME = ns.args[0] || 30; terwijl (waar) { const ratio's = []; laat hacknetProduction = 0; // loop door alle knooppunten voor (let index = 0; index < ns.hacknet.numNodes (); index ++) {// haal huidige knooppuntstatistieken const {level, ram, cores, production} = ns.hacknet.getNodeStats (index ); hacknetProductie += productie; // upgrades kosten const levelUpgradeCost = ns.hacknet.getLevelUpgradeCost(index); const ramUpgradeCost = ns.hacknet.getRamUpgradeCost(index); const coreUpgradeCost = ns.hacknet.getCoreUpgradeCost(index); // krijg een prod. groei / kostenverhoudingen const levelUpgradeRatio = ((getProd(level + 1, ram, cores) * PROD_MULTIPLIER) - productie) / levelUpgradeCost; const ramUpgradeRatio = ((getProd(level, ram * 2, cores) * PROD_MULTIPLIER) - productie) / ramUpgradeCost; const coreUpgradeRatio = ((getProd(level, ram, cores + 1) * PROD_MULTIPLIER) - productie) / coreUpgradeCost; // mogelijke upgrades van huidig knooppunt const currentNodeUpgrades = [ {ratio: levelUpgradeRatio, kosten: levelUpgradeCost, nodeIndex: index, upgrade: "level"}, {ratio: ramUpgradeRatio, kosten: ramUpgradeCost, nodeIndex: index, upgrade: "ram"} , {ratio: coreUpgradeRatio, kosten: coreUpgradeCost, nodeIndex: index, upgrade: "core"}]; // push huidige node-upgrades naar alle upgrades ratios.push(...currentNodeUpgrades); } // haal de meest winstgevende upgrade const { cost, nodeIndex, upgrade } = ratios.sort((a, b) => b.ratio - a.ratio)[0]; // wacht tot je het geld hebt voor de upgrade while (getMoney() < cost) { wait ns.sleep(1); } // voer upgrade-switch uit (upgrade) { case "level": wacht op ns.hacknet.upgradeLevel (nodeIndex); pauze; case "ram": wacht op ns.hacknet.upgradeRam(nodeIndex); pauze; case "core": wacht op ns.hacknet.upgradeCore(nodeIndex); pauze; standaard: doorgaan; } // controleer of u een nieuw knooppunt kunt kopen const purchaseNodeCost = ns.hacknet.getPurchaseNodeCost(); const missingMoneyForNewNode = purchaseNodeCost - getMoney(); if (missingMoneyForNewNode> 0 && missingMoneyForNewNode <hacknetProduction * WAITING_TIME) { // als u minder dan WAITING_TIME (in seconden) op het aankoopknooppunt moet wachten (in seconden) wacht het programma om geld te innen terwijl (getMoney() < purchaseNodeCost) {wacht op ns.sleep(1 ); } ns.hacknet.purchaseNode(); } // slaap 1ms om crash te voorkomen vanwege oneindige lus, wacht op ns.sleep(1); } }
U kunt de wachttijd voor het aankoopknooppunt aanpassen (standaard 30s) door een extra scriptargument door te geven. Bijvoorbeeld:
voer hacknet-bot.js 120 uit
Dat is alles wat we hiervoor vandaag delen Bitbrander gids. Deze handleiding is oorspronkelijk gemaakt en geschreven door syw1. Als we deze handleiding niet kunnen bijwerken, kunt u de laatste update vinden door deze te volgen link.