Created
October 31, 2023 02:27
-
-
Save jpeckham/7778985bc8ec7fc3221e042015e4dd66 to your computer and use it in GitHub Desktop.
BitBurner hack script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** @param {NS} ns */ | |
/**** | |
runs on any server to hack every server. | |
weakens until they are minimum security | |
for a long time all you'll do is weaken but once they're all weakened it will hack/grow | |
****/ | |
export async function main(ns) { | |
while (true) { | |
let hostName = ns.getHostname(); | |
let servers = scan(ns,ns.getHostname(),[hostName]); | |
//servers.push('sigma-cosmetics'); | |
servers = servers | |
.filter((value, index, array) => value.substring(0,4) !== 'home') | |
.filter((value, index, array) => ns.hasRootAccess(value)) | |
.filter((value, index, array) => ns.getServerRequiredHackingLevel(value) <= ns.getHackingLevel()); | |
console.log('server list:'); | |
console.log(servers); | |
if (servers.length === 0) | |
ns.sleep(10000); | |
for (let x = 0; x < servers.length; x++) { | |
while (ns.getServerSecurityLevel(servers[x]) > ns.getServerMinSecurityLevel(servers[x])) { | |
await ns.weaken(servers[x]); | |
} | |
await ns.hack(servers[x]); | |
await ns.grow(servers[x]); | |
} | |
} | |
} | |
function scan(ns, server, knownServers) | |
{ | |
let connectedServers = ns.scan(server); | |
//remove any dupes we already know about | |
let newConnectedServers = connectedServers.filter((value,index,array) => !knownServers.some((v,i,a) => v === value)); | |
//push new as known | |
knownServers.push(...newConnectedServers); | |
for(const newConnectedServer of newConnectedServers) | |
{ | |
let foundServers = scan(ns, newConnectedServer, knownServers); | |
knownServers.push(...foundServers); | |
} | |
//distinct | |
knownServers = [...new Set(knownServers)]; | |
return knownServers; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment