Bitburner: Automatización para Nodos Hacknet

Automatización completa para nodos Hacknet que busca la actualización más rentable y la elige.

Cómo funciona

El algoritmo está buscando la proporción más rentable.

Proporción = Crecimiento de la producción dividido por Costo de actualización
Crecimiento de la producción = Producción después de la actualización dividido por Producción actual

te recomiendo para pasar un tiempo de iteración de bucle más grande (p.ej. 100 000) o deje el valor predeterminado para permitir que los nodos de hacknet recauden más dinero para que puedan comparar más actualizaciones en lugar de actualizar constantemente la más barata.

Uso

Paso a paso

  1. abre la terminal
  2. Escribe “nano hacknet-bot.ns” para crear un archivo
  3. Borre el archivo y pegue el código debajo de allí
  4. Guarda el archivo
  5. Vuelve a la terminal
  6. Escribe “ejecutar hacknet-bot.ns” para ejecutar un script

Puede definir un tiempo de frecuencia de bucle pasando un argumento de script adicional
p.ej. “ejecutar hacknet-bot.ns 10000”

Frecuencia de bucle predeterminada. es 60 000 ms = 1 minuto.

También puede copiar el código de https://www.paste.org/121034.

Código

/** @parámetro {NS} ns **/
export const main = async ns => {
	// helpers
	const getMoney = () => ns.getPlayer().dinero;
	const obtenerProduccion = (nivel, RAM, núcleos) => (nivel * 1.5) * Math.pow(1.035, RAM - 1) * ((núcleos + 5) / 6);
 
	// intervalo de bucle pasado como parámetro de script, default interval is 60 000ms
	const interval = ns.args[0] || 60000;
 
	// main loop
	while (cierto) {
		// loop through all hacknet nodes
		for (índice var = 0; índice < aguardar ns.hacknet.numNodes(); índice++) { // tu dinero actual const money = getMoney(); // su multiplicador de producción de los aumentos instalados const prodMultiplier = await ns.getHacknetMultipliers().producción; // obtener las estadísticas del nodo actual const nodeStats = await ns.hacknet.getNodeStats(índice); const curRam = nodeStats.ram; const curLevel = nodeStats.level; const curCores = nodeStats.cores; const curProd = nodeStats.producción; // obtener costos de actualizaciones const ramUpgradeCost = await ns.hacknet.getRamUpgradeCost(índice); const levelUpgradeCost = esperar ns.hacknet.getLevelUpgradeCost(índice); const coreUpgradeCost = esperar ns.hacknet.getCoreUpgradeCost(índice); // verifique la rentabilidad de las actualizaciones y si tiene suficiente dinero // RATIO DE ACTUALIZACIÓN = crecimiento de la producción después de la actualización / producción actual const prodGrowthAfterLevelUpgrade = (getProduction(curLevel + 1, curram, curCores) * prodmultiplicador) - curProd; const levelUpgradeRatio = dinero >= espera levelUpgradeCost 
				? prodGrowthAfterLevelUpgrade / await levelUpgradeCost
				: 0;
 
			const prodGrowthAfterRamUpgrade = (getProduction(curLevel, correr * 2, curCores) * prodmultiplicador) - curProd;
			const ramUpgradeRatio = dinero >= esperar ramUpgradeCost
				? prodGrowthAfterRamUpgrade / await ramUpgradeCost
				: 0;
 
			const prodGrowthAfterCoresUpgrade = (getProduction(curLevel, curram, curCores + 1) * prodmultiplicador) - curProd;
			const coresUpgradeRatio = dinero >= esperar coreUpgradeCost 
				? prodGrowthAfterCoresUpgrade / await coreUpgradeCost
				: 0;
 
			// check if you have enough money for any upgrade
			const ratios = [levelUpgradeRatio, relación de actualización ram, relación de actualización de núcleos];
			si (proporciones.cada(proporción => relación === 0)) {
				Seguir;
			}
 
			// find the most profitability upgrade
			const mostProfitUpgrade = Math.max(... proporciones);
			const mostProfitUpgradeIndex = ratios.findIndex(proporción => ratio === mejora de mayor beneficio);
 
			// execute the most profitability upgrade
			switch (mostProfitUpgradeIndex) {
				caso 0:
					aguardar ns.hacknet.upgradeLevel(índice, 1);
					rotura;	
				caso 1:
					aguardar ns.hacknet.upgradeRam(índice, 1);
					rotura;	
				caso 2:
					aguardar ns.hacknet.upgradeCore(índice, 1);
					rotura;
				defecto:
					Seguir;
			}
		}
 
		// check if you can buy new node machine
		if (obtener dinero() > aguardar ns.hacknet.getPurchaseNodeCost()) {
			aguardar ns.hacknet.purchaseNode();
		}
		
		// sleep to prevent crash because of infinite loop
		await ns.sleep(intervalo);
	}
}

Por syw1

Más guías:

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo no será publicada.


*