여기에서 유용한 것을 찾고있는 사람들을 위해. 게임에서 맹목적으로 복사/붙여 넣지 않기를 바랍니다. 그러나 코드 구조화를위한 몇 가지 새로운 아이디어를 찾을 수 있기를 바랍니다..
또한 개선을위한 여러 방을 볼 수 있습니다:
- 새로운 노드를 감시하고 당신을 위해 그들을 nuke 할 감독자 프로세스를 작성하십시오., 따라서`run nuke-all-supervisor.js`와 같은 것을 실행해야합니다..
- 개선을위한 또 다른 공간은 백도어를 설치하는 것입니다. 그래도 게임에서 약간의 발전이 필요합니다., 필요한 API를 잠금 해제하려면.
용법
Nuke-All.js를 실행하십시오
해킹 수준을 충족 해야하는 모든 서버를 핵무기. 외모만큼 간단합니다. 더 이상주의가 필요하지 않습니다. 브랜딩 이미지에는 증강 설치 후 첫 단계가 포함됩니다..
메모리 소비
아래에서 볼 수 있듯이, memory consumption for this script is below 8G, which means you can use it at early game. I only now have recognized that the getPurchasedServers function takes half of RAM and it doesn’t really require it, so you can improve memory consumption for your needs.
[home ~/]> mem nuke-all.js This script requires 4.75GB of RAM to run for 1 실(에스) 2.25GB | getPurchasedServers (fn) 1.60GB | baseCost (misc) 200.00MB | 주사 (fn) 100.00MB | getServerRequiredHackingLevel (fn) 100.00MB | getServerNumPortsRequired (fn) 100.00MB | fileExists (fn) 50.00MB | hasRootAccess (fn) 50.00MB | getHackingLevel (fn) 50.00MB | nuke (fn) 50.00MB | brutessh (fn) 50.00MB | ftpcrack (fn) 50.00MB | relaysmtp (fn) 50.00MB | httpworm (fn) 50.00MB | sqlinject (fn)
Scripts
nuke-all.js – Executable script uses library functions to clarify and simplify behavior.
수입 { acquireRootAccess, buildNetwork, networkToServerList } from 'utils' /** @param {NS} ns **/ 비동기 함수 메인 내보내기(ns) { const network = buildNetwork(ns) const networkList = networkToServerList(network) const notNuked = networkList.filter((server) => !ns.hasRootAccess(server)) ~을 위한 (const host of notNuked) { acquireRootAccess(ns, host) } ns.toast(`${ns.getScriptName()} done`) }
utils.js – 유틸리티/라이브러리 기능 세트
/** * 지정된 서버에서 포트를 엽니 다. * * @param {NS} ns * @보고 {정렬.<(server: 끈): 무효의>} */ 내보내기 기능 getAvailableMethods(ns) { const 방법 = [] ~을 위한 (Const [방법, 파일] ~의 [ [Ns.Brutessh, 'brutessh.exe'], [ns.ftpcrack, 'ftpcrack.exe'], [ns.relaysmtp, 'Relaysmtp.exe'], [ns.httpworm, 'httpworm.exe'], [ns.sqlinject, 'sqlinject.exe'] ]) { 만약에 (ns.FileExists(파일)) { 방법 .push(방법) } } 반환 방법 } /** * 대상 서버에 대한 루트 액세스를 획득하십시오. * * @param {NS} ns * @param {끈} 루트에 액세스 할 대상 서버 이름. * @보고 {부울} 성공했는지 여부는 시도하지 않았습니다. */ 내보내기 기능 획득(ns, 목표) { 만약에 (!ns.hasRootAccess(목표)) { 만약에 (ns.gethackinglevel() < ns.getServerRequiredHackinglevel(목표)) { ns.print(`오류: 해킹 수준이 충분하지 않습니다 ${목표}`) 거짓을 반환하십시오 } const methods = getavailablemethods(ns); 만약에 (방법. 길이 < ns.getServernumportsRequired(목표)) { ns.print(`오류: 충분한 파괴 방법 ${목표}`) 거짓을 반환하십시오 } ~을 위한 (const 방법의 방법) { 방법(목표) } ns.wull(목표) } 진실을 반환하십시오 } /** * 네트워크의 간단한 지시 그래프 표현, 그것은 구성됩니다 * 이름과 자식 노드 목록입니다. * * @typedef {{이름: 끈, 어린이들: 네트워크 노드[]}} 네트워크 노드 */ /** * DFS를 사용하여 지시 된 그래프 형태로 네트워크 표현을 반환합니다.. * 가장 일반적인 경우는 당신이 할 수있는 네트워크 노드에 신경 쓰지 않는다는 것입니다. * 지금 핵심이 아닙니다. 그렇기 때문에이 함수는 노드 만 반환합니다 * 해킹 수준을 충족 시켰습니다. * * @param {NS} ns * @param {끈} 우리와 협력하는 네트워크 노드/서버의 이름 이름. * @param {끈[]} 이미 처리 한 노드 목록. * @보고 {네트워크 노드} 지시 된 그래프 */ 내보내기 기능 빌드 네트워크(ns, 이름 = '홈', 중고 = []) { 중고(이름) const node = { 이름: 이름, 어린이들: [] } const serverList = ns.getPurchassedServers() ~을 위한 (Ns.Scan의 Const Child(node.name)) { 만약에 (ns.getServerRequiredHackinglevel(어린이) <= ns.gethackinglevel() && !중고(어린이) && !ServerList.includes(어린이) ) { node.children.push(buildNetwork(ns, 어린이, 사용된)) } } 반환 노드 } /** * 그래프 형태로 네트워크와 함께 작동하는 것은 엄격하게 필요하지 않습니다.. * 때때로 우리는 어떤 노드가 있는지 알아야합니다.. 이것이 무엇입니다 * 이 기능은: 지시 사항에서 데이터 구조 형식을 변환합니다 * 네트워크 노드의 일반 목록에 그래프. * * @param {네트워크 노드} 마디 * @보고 {끈[]} 네트워크의 모든 서버 목록. */ 내보내기 기능 NetworkToserverList(마디) { const list = [node.name] 만약에 (Node.children.length) { ~을 위한 (Node의 Const Child .Children) { list.push(...networkToServerList(어린이)) } } 반환 목록 }
이것이 오늘 우리가 공유하는 모든 것입니다. 비트버너 가이드. 이 가이드는 원래 작성자가 작성하고 작성했습니다. Koutoftimer. 이 가이드를 업데이트하지 못한 경우, 다음을 수행하여 최신 업데이트를 찾을 수 있습니다. 링크.