Bitburner: Automatización para Nodos Hacknet

Automatización completa para nodos de 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 ciclo más grande (por ejemplo, 100 000) o dejar el valor predeterminado para permitir que los nodos de hacknet recolecten 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. Escriba "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. Escriba "ejecutar hacknet-bot.ns" para ejecutar un script

Puede definir un tiempo de frecuencia de bucle pasando un argumento de script adicional
por ejemplo, "ejecutar hacknet-bot.ns 10000"

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

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

Código

/** @param {NS} ns **/
export const main = async ns => {
	// helpers
	const getMoney = () => ns.getPlayer().money;
	const getProduction = (level, ram, cores) => (level * 1.5) * Math.pow(1.035, ram - 1) * ((cores + 5) / 6);
 
	// loop interval passed as a script parameter, default interval is 60 000ms
	const interval = ns.args[0] || 60000;
 
	// main loop
	while (true) {
		// loop through all hacknet nodes
		for (var index = 0; index < await ns.hacknet.numNodes(); index++) { // your current money const money = getMoney(); // your production multiplier from installed augmentations const prodMultiplier = await ns.getHacknetMultipliers().production; // get current node stats const nodeStats = await ns.hacknet.getNodeStats(index); const curRam = nodeStats.ram; const curLevel = nodeStats.level; const curCores = nodeStats.cores; const curProd = nodeStats.production; // get costs of upgrades const ramUpgradeCost = await ns.hacknet.getRamUpgradeCost(index); const levelUpgradeCost = await ns.hacknet.getLevelUpgradeCost(index); const coreUpgradeCost = await ns.hacknet.getCoreUpgradeCost(index); // check upgrades profitability and if you have enough money // UPGRADE RATIO = production growth after upgrade / current production const prodGrowthAfterLevelUpgrade = (getProduction(curLevel + 1, curRam, curCores) * prodMultiplier) - curProd; const levelUpgradeRatio = money >= await levelUpgradeCost 
				? prodGrowthAfterLevelUpgrade / await levelUpgradeCost
				: 0;
 
			const prodGrowthAfterRamUpgrade = (getProduction(curLevel, curRam * 2, curCores) * prodMultiplier) - curProd;
			const ramUpgradeRatio = money >= await ramUpgradeCost
				? prodGrowthAfterRamUpgrade / await ramUpgradeCost
				: 0;
 
			const prodGrowthAfterCoresUpgrade = (getProduction(curLevel, curRam, curCores + 1) * prodMultiplier) - curProd;
			const coresUpgradeRatio = money >= await coreUpgradeCost 
				? prodGrowthAfterCoresUpgrade / await coreUpgradeCost
				: 0;
 
			// check if you have enough money for any upgrade
			const ratios = [levelUpgradeRatio, ramUpgradeRatio, coresUpgradeRatio];
			if (ratios.every(ratio => ratio === 0)) {
				continue;
			}
 
			// find the most profitability upgrade
			const mostProfitUpgrade = Math.max(...ratios);
			const mostProfitUpgradeIndex = ratios.findIndex(ratio => ratio === mostProfitUpgrade);
 
			// execute the most profitability upgrade
			switch (mostProfitUpgradeIndex) {
				case 0:
					await ns.hacknet.upgradeLevel(index, 1);
					break;	
				case 1:
					await ns.hacknet.upgradeRam(index, 1);
					break;	
				case 2:
					await ns.hacknet.upgradeCore(index, 1);
					break;
				default:
					continue;
			}
		}
 
		// check if you can buy new node machine
		if (getMoney() > await ns.hacknet.getPurchaseNodeCost()) {
			await ns.hacknet.purchaseNode();
		}
		
		// sleep to prevent crash because of infinite loop
		await ns.sleep(interval);
	}
}

By syw1

Más guías:

1 comentario en “Bitburner: Automatización para Nodos Hacknet”

Deja un comentario

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish