Inspiriert von dieser grundlegenden Autofarm, Automatisieren Sie alle Server mit verbesserten Leistungen.
Beachten
Notiz: Benötigen mindestens 8,1 g auf Ihrem ‚heim‘ Server.
Erstellen a ‚Runner.js‘ Datei auf Ihrem Heimserver, Fügen Sie den folgenden Inhalt ein und führen Sie ihn aus.
Nano Runner.js
Standardmäßig, Dieses Skript tötet nicht alle anderen Dienste, die auf jedem Server ausgeführt werden. Sie können es durchführen, indem Sie laufen
Run Runner.js -Kill
Dieses Skript verwendet alle Ihre persönlich besessenen Server. Je mehr du hast, Je mehr es effizient ist.
Skript
/** @param {NS} ns **/ Asynchrone Funktion main exportieren(ns) { ns.disableLog('ALLE'); ns.enablelog('drucken'); var options = ns.flags([ ['töten', FALSCH], ['hacken', FALSCH], ['wachsen', FALSCH], ['schwächen', FALSCH], ["Wartezeit", 10], ['helfen', FALSCH] ]); Wenn (Optionen['helfen']) { ns.tail(); ns.print(`Auto-Script, Optionen: * --töten: Kraft töten jeden anderen Prozess auf jedem Server * --hacken Sie einige script.js: Ersetzen Sie das Hack-Skript durch einige script.js. * --wachsen script.js: Ersetzen Sie das Wachstumskript durch einige script.js. * --schwächen Sie einige script.js: Ersetzen Sie das schwächende Skript durch einige script.js. * --Wartezeit 10: Wartezeit zwischen zwei Servern in MS, muss höher sein als 1 * --helfen: show this message `); zurückkehren; } // Creating scripts var hack = options['hacken'] || '/temp/hack.js' ', wachsen = Optionen['wachsen'] || '/temp/grow.js' ', schwächer = Optionen['schwächen'] || '/temp/weaken.js' '; Wenn (!Optionen['hacken']) { Warten Sie auf ns.write(hacken, ` /** @param {NS} ns **/ Asynchrone Funktion main exportieren(ns) { Warten Sie ns.hack(Ns.Args[0]); } `, 'W'); } Wenn (!Optionen['wachsen']) { Warten Sie auf ns.write(wachsen, ` /** @param {NS} ns **/ Asynchrone Funktion main exportieren(ns) { Warten Sie Ns.wach(Ns.Args[0]); } `, 'W'); } Wenn (!Optionen['schwächen']) { Warten Sie auf ns.write(schwächen, ` /** @param {NS} ns **/ Asynchrone Funktion main exportieren(ns) { Warten Sie Ns.Weken(Ns.Args[0]); } `, 'W'); } // Divs variables declarations var serverList = ns.scan('heim'), serverCount = [serverlist.length, 0], Software = [0, 0, 0, 0, 0, 0], Softwarescount = 0, Scanlevel = 2, Index = 0, nichtproxylist = [], Proxylist = ['heim'], Hackables = [], Wachstumsstoffe = [], Schwächel = [], verknüpft, Ziel, Proxytarget, Tiefe = 0, überprüft = 0, Hacktyp; // Checking softwares if (Ns.fileExists('Brutessh.exe')) { Software[0] = 1; Softwarescount ++; }; Wenn (Ns.fileExists('Ftpcrack.exe')) { Software[1] = 1; Softwarescount ++; }; Wenn (Ns.fileExists('relaysmtp.exe')) { Software[2] = 1; Softwarescount ++; }; Wenn (Ns.fileExists('Httpworm.exe')) { Software[3] = 1; Softwarescount ++; }; Wenn (Ns.fileExists('Sqlinject.exe')) { Software[4] = 1; Softwarescount ++; }; Wenn (Ns.fileExists('DeepScanv1.exe')) { Scanlevel += 2; }; Wenn (Ns.fileExists('DeepScanv2.exe')) { Scanlevel += 5; }; ns.print('/ ---/ suche \ --- \ n--- Standard - n > ' + serverlist.join('N > ') + 'N>- Scanlimit: L ' + [Scanlevel + 1] + ' -<'); während (Index <= ServerCount[Tiefe] - 1 && Tiefe < Scanlevel) { verknüpft = ns.scan(serverList[überprüft]); überprüft ++; für (lass index = 0; Index <= verknüpft.length - 1; Index ++) { Ziel = verknüpft[Index]; Wenn (Ziel != 'Zuhause' ' && !serverlist.includes(Ziel)) { serverlist.push(Ziel); ns.print('L' + [Tiefe + 2] + ' > ' + Ziel); ServerCount[Tiefe + 1]++; } } Wenn (Index == ServerCount[Tiefe] - 1) { Index = 0; Tiefe ++; serverCount.push(0); } anders { Index ++; }; } ns.print('/ -------/ prüfe \ ------- \'); für (lass index = 0; Index <= serverlist.length - 1; Index ++) { Target = ServerList[Index]; Wenn (Ns.GetPurchasedservers().inklusive(Ziel)) { warte auf ns.scp([hacken, wachsen, schwächen], 'heim', Ziel); Wenn (Optionen['töten']) { ns.killall(Ziel); } Proxylist.push(Ziel); ns.print(' >>> Stellvertreter ' + Ziel); } sonst wenn (Ns.GetServernumPortsRequeured(Ziel) > Softwarescount) { ns.print(' >X< Software ' + Ziel); } sonst wenn (Ns.GetServerMaxram(Ziel) < 2) { ns.print(' >X< Kein Widder ' + Ziel); } sonst wenn (ns.gethackinglevel() < Ns.GetServerRequiredHackinglevel(Ziel)) { ns.print(' >X< FÄHIGKEIT ' + Ziel); } anders { Wenn (Software[0]) { ns.brutessh(Ziel); }; Wenn (Software[1]) { Ns.ftpcrack(Ziel); }; Wenn (Software[2]) { Ns.RelaysMtp(Ziel); }; Wenn (Software[3]) { Ns.httpworm(Ziel); }; Wenn (Software[4]) { Ns.SQLINJECT(Ziel); }; Ns.wull(Ziel); warte auf ns.scp([hacken, wachsen, schwächen], 'heim', Ziel); Wenn (Optionen['töten']) { ns.killall(Ziel); } Wenn (ns.getServerMoneyAvailable(Ziel) == 0) { ns.print(' >X< Kein Geld ' + Ziel); Proxylist.push(Ziel); ns.print(' >>> Stellvertreter ' + Ziel); } anders { nichtproxylist.push(Ziel); ns.print(' >>> GÜLTIG ' + Ziel); } } } Wenn (nichtproxylist.length > 0) { ns.print('/ ------------/ hacking \ ------------ \'); während (WAHR) { Hackables = []; Wachstumsstoffe = []; Schwächel = []; für (Ziel des Notproxylisten) { // Priorität für Ziele: schwächen, dann wachsen, then hack if (Ns.GetServerseSecurityLevel(Ziel) > Ns.GetServerMineSecurityLevel(Ziel) + 5) { hacktype = schwächer; schwächbare Eigenschaften.push(Ziel); } sonst wenn (ns.getServerMoneyAvailable(Ziel) < Ns.GetServermaxMoney(Ziel) * 0.80) { hacktype = wachsen; wächstbare.push(Ziel); } anders { hacktype = hack; hackables.push(Ziel); } Wenn ((Ns.GetServerMaxram(Ziel) - Ns.GetServerusedram(Ziel)) > Ns.GetScriptram(Hacktyp)) { ns.exec(Hacktyp, Ziel, Math.Floor((Ns.GetServerMaxram(Ziel) - Ns.GetServerusedram(Ziel)) / Ns.GetScriptram(Hacktyp)), Ziel); ns.print('|||||||||| ' + Hacktyp + ' -> ' + Ziel + ' ||||||||||'); } } für (Ziel des Proxylisten) { // Priorität für Stellvertreter: hacken, dann wachsen, then weaken if (hackables.length > 0) { proxytarget = hackables[Math.Floor(Math.Random() * hackables.length)]; hacktype = hack; } sonst wenn (Wachstumslänge.Length > 0) { Proxytarget = Growables[Math.Floor(Math.Random() * Wachstumslänge.Length)]; hacktype = wachsen; } sonst wenn (schwächbare Eigenschaften.Length > 0) { proxytarget = schwächbare Eigenschaften[Math.Floor(Math.Random() * schwächbare Eigenschaften.Length)]; hacktype = schwächer; } Wenn ((Ns.GetServerMaxram(Ziel) - Ns.GetServerusedram(Ziel)) > Ns.GetScriptram(Hacktyp)) { ns.exec(Hacktyp, Ziel, Math.Floor((Ns.GetServerMaxram(Ziel) - Ns.GetServerusedram(Ziel)) / Ns.GetScriptram(Hacktyp)), Proxytarget); ns.print('|||||||||| Proxy -> ' + Ziel + ' -> ' + Hacktyp + ' -> ' + Proxytarget + ' ||||||||||'); } } // Await n ms between each servers to avoid issue with the infinite loop await ns.sleep(Optionen["Wartezeit"]); } } anders { ns.print('Fehler, Kein Server verfügbar. '); } }
Erweiterte Verwendung
Sie können alle Optionen im Spiel mit sehen
Run Runner.js -HELP
Sie dürfen Ihren eigenen Hack verwenden, wachsen, Drehbuch schwächen. Sie können auch die Wartezeit zwischen jedem Server anpassen. Warnung. Verwenden Sie immer mehr als 1 ms oder Sie werden Ihr Spiel einfrieren.
Das ist alles, was wir heute dafür teilen Bitburner Führung. Dieser Leitfaden wurde ursprünglich erstellt und geschrieben von Nekotorep. Für den Fall, dass wir diesen Leitfaden nicht aktualisieren können, Sie können das neueste Update finden, indem Sie diesem folgen Verknüpfung.
Zum Veröffentlichung 2.0.1, Die letzten beiden Argumente der SCP -Funktion müssen umgedreht werden. Es wird keine Fehler werfen, Sie werden jedoch feststellen, dass es nur den Heimcomputer benutzt, um den Zyklus für das Wachstum/Schwächen/Hack auszuführen.