Bitburner How to Use Hacknet Bot + Code Script

Bitburner How to Use Hacknet Bot + Code Script 1 - steamsplay.com
Bitburner How to Use Hacknet Bot + Code Script 1 - steamsplay.com

Simple Bot that uses math to choose the most profitable upgrade.
 
 

How It Works

Bot takes the following steps.
 

  1. Checks cost and production growth of all the possible upgrades
  2. Calculates profitable ratio of each upgrade
  3. Sorts elements by ratio descending
  4. Chooses the first element
  5. Checks if you can purchase upgrade now, if not, it waits to collect money
  6. Checks if you can buy new node in less than 30 seconds (you can customize this time), if so, it buys it
  7. Repeat…

 
Profitable ratio = Production growth / upgrade cost
 
Production growth = Production after upgrade – current production
 
 
This guide is based on my previous “Automation for Hacknet Nodes”.
 
 
 

How to Use

Take the following steps.
 

  1. Run the terminal
  2. Type ‘nano hacknet-bot.js’
  3. Copy and paste the code below into this file
  4. Save the file (ctrl + s)
  5. Back to the terminal
  6. Type ‘run hacknet-bot.js’

 
 
Bitburner How to Use Hacknet Bot + Code Script - How to Use - 2BB6D0D
 
 
Code
 
 

/** @param {NS} ns **/
export async function main(ns) {
 // helpers
 const getMoney = () => ns.getPlayer().money;
 const getProd = (level, ram, cores) => (level * 1.5) * Math.pow(1.035, ram - 1) * ((cores + 5) / 6);
 // your production multiplier
 const PROD_MULTIPLIER = ns.getHacknetMultipliers().production;
 // maximum waiting time for collecting money for new node (default 30s)
 const WAITING_TIME = ns.args[0] || 30;

 // check if you have any nodes in your hacknet
 if (!ns.hacknet.numNodes()) {
 while (getMoney() < ns.hacknet.getPurchaseNodeCost()) {
 await ns.sleep(1);
 }
 ns.hacknet.purchaseNode();
 }

 while (true) {
 const ratios = [];
 let hacknetProduction = 0;
 // loop through all nodes
 for (let index = 0; index < ns.hacknet.numNodes(); index++) {
 // get current node stats
 const { level, ram, cores, production } = ns.hacknet.getNodeStats(index);
 hacknetProduction += production;
 // get upgrades cost
 const levelUpgradeCost = ns.hacknet.getLevelUpgradeCost(index);
 const ramUpgradeCost = ns.hacknet.getRamUpgradeCost(index);
 const coreUpgradeCost = ns.hacknet.getCoreUpgradeCost(index);
 // get prod. growth / cost ratios
 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;
 // possible upgrades of current node
 const currentNodeUpgrades = [
 {ratio: levelUpgradeRatio, cost: levelUpgradeCost, nodeIndex: index, upgrade: "level"},
 {ratio: ramUpgradeRatio, cost: ramUpgradeCost, nodeIndex: index, upgrade: "ram"},
 {ratio: coreUpgradeRatio, cost: coreUpgradeCost, nodeIndex: index, upgrade: "core"}
 ];
 // push current node upgrades to all upgrades
 ratios.push(...currentNodeUpgrades);
 }
 // get the most profitable upgrade
 const { cost, nodeIndex, upgrade } = ratios.sort((a, b) => b.ratio - a.ratio)[0];
 if (cost !== Infinity && cost) {
 // wait until you have the money for upgrade
 while (getMoney() < cost) {
 await ns.sleep(1);
 }
 // execute upgrade
 switch (upgrade) {
 case "level":
 await ns.hacknet.upgradeLevel(nodeIndex);
 break;
 case "ram":
 await ns.hacknet.upgradeRam(nodeIndex);
 break;
 case "core":
 await ns.hacknet.upgradeCore(nodeIndex);
 break;
 default:
 continue;
 }
 }
 // check if you can purchase new node
 const purchaseNodeCost = ns.hacknet.getPurchaseNodeCost();
 const missingMoneyForNewNode = purchaseNodeCost - getMoney();
 if (missingMoneyForNewNode < 0) {
 ns.hacknet.purchaseNode();
 } 
 // else check if you can buy new node in less than WAITING_TIME (default 30s)
 else if (missingMoneyForNewNode < hacknetProduction * WAITING_TIME) {
 while (getMoney() < purchaseNodeCost) {
 await ns.sleep(1);
 }
 ns.hacknet.purchaseNode();
 }

 // sleep 1ms to prevent crash because of infinite loop
 await ns.sleep(1);
 }
}

 
 
You can customize the time of waiting for purchase node (by default 30s) by passing an additional script argument. For example:
 
 

run hacknet-bot.js 120

 
 
Bitburner How to Use Hacknet Bot + Code Script - How to Use - 4277BFF
 
 

Written by syw1

 
 
This is all for Bitburner How to Use Hacknet Bot + Code Script hope you enjoy the post. If you believe we forget or we should update the post please let us know via comment, we will try our best to fix how fast is possible! Have a great day!
 


Be the first to comment

Leave a Reply

Your email address will not be published.


*