Bitburner: Automatisierung für Hacknet-Knoten

Volle Automatisierung für Hacknet-Knoten, die das profitabelste Upgrade suchen und sich dafür entscheiden.

Wie es funktioniert

Der Algorithmus sucht nach dem profitabelsten Verhältnis.

Verhältnis = Produktionswachstum geteilt durch Upgrade-Kosten
Produktionswachstum = Produktion nach Upgrade geteilt durch Aktuelle Produktion

Ich empfehle dir um eine längere Schleifen-Iterationszeit zu überschreiten (z.B. 100 000) oder belassen Sie die Standardeinstellung, damit Hacknet-Knoten mehr Geld sammeln können, damit sie mehr Upgrades vergleichen können, anstatt ständig das billigste zu aktualisieren.

Verwendungszweck

Schritt für Schritt

  1. Öffne das Terminal
  2. Typ “nano hacknet-bot.ns” eine Datei erstellen
  3. Löschen Sie die Datei und fügen Sie den Code unten dort ein
  4. Speicher die Datei
  5. Geh zurück zum Terminal
  6. Typ “hacknet-bot.ns ausführen” ein Skript ausführen

Sie können eine Schleifenhäufigkeitszeit definieren, indem Sie ein zusätzliches Skriptargument übergeben
z.B. “hacknet-bot.ns 10000 ausführen”

Standardschleifenfrequenz. beträgt 60 000 ms = 1 min.

Sie können den Code auch kopieren von https://www.paste.org/121034.

Code

/** @param {NS} ns **/
export const main = async ns => {
	// helpers
	const getMoney = () => ns.getPlayer().Geld;
	const getProduction = (Niveau, RAM, Kerne) => (Stufe * 1,5) * Math.pow(1.035, RAM - 1) * ((Kerne + 5) / 6);
 
	// Schleifenintervall als Skriptparameter übergeben, default interval is 60 000ms
	const interval = ns.args[0] || 60000;
 
	// main loop
	while (Stimmt) {
		// loop through all hacknet nodes
		for (var-Index = 0; Index < warten auf ns.hacknet.numNodes(); index++) { // Ihr aktuelles Geld const money = getMoney(); // Ihr Produktionsmultiplikator aus installierten Erweiterungen const prodMultiplier = await ns.getHacknetMultipliers().Produktion; // aktuelle Knotenstatistik abrufen const nodeStats = wait ns.hacknet.getNodeStats(Index); const curRam = nodeStats.ram; const curLevel = nodeStats.level; const curCores = nodeStats.cores; const curProd = nodeStats.production; // Kosten für Upgrades abrufen const ramUpgradeCost = wait ns.hacknet.getRamUpgradeCost(Index); const levelUpgradeCost = wait ns.hacknet.getLevelUpgradeCost(Index); const coreUpgradeCost = wait ns.hacknet.getCoreUpgradeCost(Index); // Überprüfen Sie die Rentabilität der Upgrades und ob Sie genug Geld haben // UPGRADE RATIO = Produktionswachstum nach dem Upgrade / aktuelle Produktion const prodGrowthAfterLevelUpgrade = (getProduction(curLevel + 1, curRam, curCores) * prodMultiplikator) - curProd; const levelUpgradeRatio = Geld >= warten levelUpgradeCost 
				? prodGrowthAfterLevelUpgrade / wait levelUpgradeCost
				: 0;
 
			const prodGrowthAfterRamUpgrade = (getProduction(curLevel, laufen * 2, curCores) * prodMultiplikator) - curProd;
			const ramUpgradeRatio = Geld >= ramUpgradeCost erwarten
				? prodGrowthAfterRamUpgrade / wait ramUpgradeCost
				: 0;
 
			const prodGrowthAfterCoresUpgrade = (getProduction(curLevel, curRam, curCores + 1) * prodMultiplikator) - curProd;
			const coresUpgradeRatio = Geld >= warten auf coreUpgradeCost 
				? prodGrowthAfterCoresUpgrade / wait coreUpgradeCost
				: 0;
 
			// check if you have enough money for any upgrade
			const ratios = [levelUpgradeRatio, ramUpgradeRatio, KerneUpgradeRatio];
			wenn (Verhältnisse.jeder(Verhältnis => Verhältnis === 0)) {
				fortsetzen;
			}
 
			// find the most profitability upgrade
			const mostProfitUpgrade = Math.max(...Verhältnisse);
			const mostProfitUpgradeIndex = ratios.findIndex(Verhältnis => Verhältnis === MostProfitUpgrade);
 
			// execute the most profitability upgrade
			switch (MostProfitUpgradeIndex) {
				Fall 0:
					warten auf ns.hacknet.upgradeLevel(Index, 1);
					brechen;	
				Fall 1:
					warten auf ns.hacknet.upgradeRam(Index, 1);
					brechen;	
				Fall 2:
					warten auf ns.hacknet.upgradeCore(Index, 1);
					brechen;
				Ursprünglich:
					fortsetzen;
			}
		}
 
		// check if you can buy new node machine
		if (Geld bekommen() > warten auf ns.hacknet.getPurchaseNodeCost()) {
			warten auf ns.hacknet.purchaseNode();
		}
		
		// sleep to prevent crash because of infinite loop
		await ns.sleep(Intervall);
	}
}

Von syw1

Weitere Anleitungen:

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*