Here is a simple script, that can be started at any moment of the game. It will buy servers, find all accessible servers, open ports, nuke, find target servers, ハック, 育つ, and weak servers. And will do it again and again.
/** @param {NS} ns **/ //additional function, needed to merge arrays. Array.prototype.unique = function() { var a = this.concat(); ために(var i=0; 私ns.getPurchasedServerCost(ram)) { var number = myservers.length + 1; var hostname = ns.purchaseServer("pserv-" + 番号, ram); ns.scpを待ちます(ファイル, "家", hostname); ns.killall(hostname); } //Check ports power var portpower = [0, 0, 0, 0, 0]; var portcounter = 0; もし (ns.file存在します("BruteSSH.exe")) { portpower[0] = 1 ; portcounter++ }; もし (ns.file存在します("FTPCrack.exe")) { portpower[1] = 1 ; portcounter++ }; もし (ns.file存在します("relaySMTP.exe")) { portpower[2] = 1 ; portcounter++ }; もし (ns.file存在します("HTTPWorm.exe")) { portpower[3] = 1 ; portcounter++ }; もし (ns.file存在します("SQLInject.exe")) { portpower[4] = 1 ; portcounter++ }; //Nuke servers if (serversnuked.indexOf(要素) >= 0) {ns.print("Already nuked " + 要素)} そうでなければ (ns.hasRootAccess(要素)) { serversnuked.push(要素); ns.scpを待ちます(ファイル, "家", 要素); } そうでなければ (ns.getServerNumPorts必須(要素) > portcounter) { ns.print("No port power for " + 要素) } そうでなければ (ns.getHackingLevel() < ns.getServerRequiredHackingLevel(element)) { ns.print("No skill for" + element) } else { if (portpower[0]) { ns.brutessh(element) }; if (portpower[1]) { ns.ftpcrack(element) }; if (portpower[2]) { ns.relaysmtp(element) }; if (portpower[3]) { ns.httpworm(element) }; if (portpower[4]) { ns.sqlinject(element) }; ns.nuke(element); ns.print("Nuked " + element); //ns.installBackdoor(element); //Will work in mid game //To push files await ns.scp(files, "home", element); await ns.killall(element); serversnuked.push(element); ns.print("all files on " + element); } //To find a target, You can comment this part and just use targetserver if(serversnuked.indexOf(element) >= 0){ var money = ns.getServerMaxMoney(要素); var security = ns.getServerMinSecurityLevel(要素); var koef = money / 安全 * 0.000001 ; var namekoef = [koef, 要素]; もし(koefs.some(el => el >= koef)) { koefs.push(koef); } それ以外 { targetserver = element; koefs.push(koef); ns.print(targetserver); } } //Launch action on all servers nuked. //Check what should be done, 弱い, grow or hack, if hack, then use ony 80% of threads and anothers for grow. //You can change % 実験する, try to do hack often but for small portions. ために(var rs of serversnuked){ var action; もし((ns.getServerMaxRam(rs) - ns.getServer UsedRam(rs)) >= 2) { もし (ns.getServerSecurityLevel(targetserver) > ns.getServerMinSecurityLevel(targetserver) + 5) { action = "弱める" } そうでなければ (ns.getServerMoneyAvailable(targetserver) < ns.getServerMaxMoney(targetserver) * 0.85) { action = "grow" } else { action = "hack" } ns.print("We have " + action + " for " + targetserver); if(action == "hack"){ var threads = Math.floor((ns.getServerMaxRam(rs) - ns.getServerUsedRam(rs)) / 1.75); if(ns.isRunning("hack.ns", rs, targetserver)) { ns.exec("grow.ns", rs, threads, targetserver); ns.print("Grow on " + rs + " for " + targetserver); } if(threads >= 3) { threads = threads * 0.8; ns.exec("hack.ns", rs, threads, targetserver); ns.print("Hack on " + rs + " ために " + targetserver); } それ以外{ ns.exec("hack.ns", rs, threads, targetserver); ns.print("Hack on " + rs + " ために " + targetserver); } } それ以外{ var threads = Math.floor((ns.getServerMaxRam(rs) - ns.getServer UsedRam(rs)) / ns.getScriptRam( アクション + ".ns")); ns.exec(アクション + ".ns", rs, threads, targetserver); ns.print(アクション + " の上 " + rs + " ために " + targetserver); } } それ以外{} } } } }
これが今日私たちがこの目的で共有するすべてです ビットバーナー ガイド. このガイドは元々、次の者によって作成および執筆されました。 Nyarlathotep. このガイドを更新できなかった場合, これに従って最新のアップデートを見つけることができます リンク.